feat: major architectural refactor

- Refactor memory system (episodic/STM/LTM with components)
- Implement complete subtitle domain (scanner, matcher, placer)
- Add YAML workflow infrastructure
- Externalize knowledge base (patterns, release groups)
- Add comprehensive testing suite
- Create manual testing CLIs
This commit is contained in:
2026-05-11 21:33:37 +02:00
parent 62b5d0b998
commit 249c5de76a
103 changed files with 8559 additions and 1346 deletions
+9 -9
View File
@@ -271,7 +271,7 @@ class TestFilesystemEdgeCases:
"""Should list hidden files."""
hidden_file = real_folder["downloads"] / ".hidden"
hidden_file.touch()
memory.ltm.set_config("download_folder", str(real_folder["downloads"]))
memory.ltm.download_folder = str(real_folder["downloads"])
result = fs_tools.list_folder("download")
@@ -285,7 +285,7 @@ class TestFilesystemEdgeCases:
except OSError:
pytest.skip("Cannot create symlinks")
memory.ltm.set_config("download_folder", str(real_folder["downloads"]))
memory.ltm.download_folder = str(real_folder["downloads"])
result = fs_tools.list_folder("download")
@@ -301,7 +301,7 @@ class TestFilesystemEdgeCases:
try:
os.chmod(no_read, 0o000)
memory.ltm.set_config("download_folder", str(real_folder["downloads"]))
memory.ltm.download_folder = str(real_folder["downloads"])
result = fs_tools.list_folder("download")
@@ -312,7 +312,7 @@ class TestFilesystemEdgeCases:
def test_list_folder_case_sensitivity(self, memory, real_folder):
"""Should handle case sensitivity correctly."""
memory.ltm.set_config("download_folder", str(real_folder["downloads"]))
memory.ltm.download_folder = str(real_folder["downloads"])
# Try with different cases
result_lower = fs_tools.list_folder("download")
@@ -324,7 +324,7 @@ class TestFilesystemEdgeCases:
"""Should handle spaces in path."""
space_dir = real_folder["downloads"] / "folder with spaces"
space_dir.mkdir()
memory.ltm.set_config("download_folder", str(real_folder["downloads"]))
memory.ltm.download_folder = str(real_folder["downloads"])
result = fs_tools.list_folder("download", "folder with spaces")
@@ -332,7 +332,7 @@ class TestFilesystemEdgeCases:
def test_path_traversal_with_encoded_chars(self, memory, real_folder):
"""Should block URL-encoded traversal attempts."""
memory.ltm.set_config("download_folder", str(real_folder["downloads"]))
memory.ltm.download_folder = str(real_folder["downloads"])
# Various encoding attempts
attempts = [
@@ -352,7 +352,7 @@ class TestFilesystemEdgeCases:
def test_path_with_null_byte(self, memory, real_folder):
"""Should block null byte injection."""
memory.ltm.set_config("download_folder", str(real_folder["downloads"]))
memory.ltm.download_folder = str(real_folder["downloads"])
result = fs_tools.list_folder("download", "file\x00.txt")
@@ -366,7 +366,7 @@ class TestFilesystemEdgeCases:
deep_path = deep_path / f"level{i}"
deep_path.mkdir(parents=True)
memory.ltm.set_config("download_folder", str(real_folder["downloads"]))
memory.ltm.download_folder = str(real_folder["downloads"])
# Navigate to deep path
relative_path = "/".join([f"level{i}" for i in range(20)])
@@ -380,7 +380,7 @@ class TestFilesystemEdgeCases:
for i in range(1000):
(real_folder["downloads"] / f"file_{i:04d}.txt").touch()
memory.ltm.set_config("download_folder", str(real_folder["downloads"]))
memory.ltm.download_folder = str(real_folder["downloads"])
result = fs_tools.list_folder("download")