superlocalmemory 2.8.2 → 2.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -5
- package/api_server.py +5 -0
- package/bin/slm.bat +3 -3
- package/docs/SECURITY-QUICK-REFERENCE.md +214 -0
- package/install.ps1 +11 -11
- package/mcp_server.py +3 -3
- package/package.json +2 -2
- package/requirements-core.txt +16 -18
- package/requirements-learning.txt +8 -8
- package/requirements.txt +9 -7
- package/scripts/prepack.js +33 -0
- package/scripts/verify-v27.ps1 +301 -0
- package/src/agent_registry.py +32 -28
- package/src/auto_backup.py +12 -6
- package/src/cache_manager.py +2 -2
- package/src/compression/__init__.py +25 -0
- package/src/compression/cli.py +150 -0
- package/src/compression/cold_storage.py +217 -0
- package/src/compression/config.py +72 -0
- package/src/compression/orchestrator.py +133 -0
- package/src/compression/tier2_compressor.py +228 -0
- package/src/compression/tier3_compressor.py +153 -0
- package/src/compression/tier_classifier.py +148 -0
- package/src/db_connection_manager.py +5 -5
- package/src/event_bus.py +24 -22
- package/src/hnsw_index.py +3 -3
- package/src/learning/__init__.py +5 -4
- package/src/learning/adaptive_ranker.py +14 -265
- package/src/learning/bootstrap/__init__.py +69 -0
- package/src/learning/bootstrap/constants.py +93 -0
- package/src/learning/bootstrap/db_queries.py +316 -0
- package/src/learning/bootstrap/sampling.py +82 -0
- package/src/learning/bootstrap/text_utils.py +71 -0
- package/src/learning/cross_project_aggregator.py +58 -57
- package/src/learning/db/__init__.py +40 -0
- package/src/learning/db/constants.py +44 -0
- package/src/learning/db/schema.py +279 -0
- package/src/learning/learning_db.py +15 -234
- package/src/learning/ranking/__init__.py +33 -0
- package/src/learning/ranking/constants.py +84 -0
- package/src/learning/ranking/helpers.py +278 -0
- package/src/learning/source_quality_scorer.py +66 -65
- package/src/learning/synthetic_bootstrap.py +28 -310
- package/src/memory/__init__.py +36 -0
- package/src/memory/cli.py +205 -0
- package/src/memory/constants.py +39 -0
- package/src/memory/helpers.py +28 -0
- package/src/memory/schema.py +166 -0
- package/src/memory-profiles.py +94 -86
- package/src/memory-reset.py +187 -185
- package/src/memory_compression.py +2 -2
- package/src/memory_store_v2.py +34 -354
- package/src/migrate_v1_to_v2.py +11 -10
- package/src/patterns/analyzers.py +104 -100
- package/src/patterns/learner.py +17 -13
- package/src/patterns/scoring.py +25 -21
- package/src/patterns/store.py +40 -38
- package/src/patterns/terminology.py +53 -51
- package/src/provenance_tracker.py +2 -2
- package/src/qualixar_attribution.py +1 -1
- package/src/search/engine.py +16 -14
- package/src/search/index_loader.py +13 -11
- package/src/setup_validator.py +160 -158
- package/src/subscription_manager.py +20 -18
- package/src/tree/builder.py +66 -64
- package/src/tree/nodes.py +103 -97
- package/src/tree/queries.py +142 -137
- package/src/tree/schema.py +46 -42
- package/src/webhook_dispatcher.py +3 -3
- package/ui_server.py +7 -4
|
@@ -73,7 +73,7 @@ class WebhookDispatcher:
|
|
|
73
73
|
return cls._instances[name]
|
|
74
74
|
|
|
75
75
|
@classmethod
|
|
76
|
-
def reset_instance(cls, name: Optional[str] = None):
|
|
76
|
+
def reset_instance(cls, name: Optional[str] = None) -> None:
|
|
77
77
|
"""Remove singleton(s). Used for testing."""
|
|
78
78
|
with cls._instances_lock:
|
|
79
79
|
if name is None:
|
|
@@ -104,7 +104,7 @@ class WebhookDispatcher:
|
|
|
104
104
|
self._worker.start()
|
|
105
105
|
logger.info("WebhookDispatcher started")
|
|
106
106
|
|
|
107
|
-
def dispatch(self, event: dict, webhook_url: str):
|
|
107
|
+
def dispatch(self, event: dict, webhook_url: str) -> None:
|
|
108
108
|
"""
|
|
109
109
|
Enqueue a webhook delivery.
|
|
110
110
|
|
|
@@ -217,7 +217,7 @@ class WebhookDispatcher:
|
|
|
217
217
|
with self._stats_lock:
|
|
218
218
|
return dict(self._stats)
|
|
219
219
|
|
|
220
|
-
def close(self):
|
|
220
|
+
def close(self) -> None:
|
|
221
221
|
"""Shut down the dispatcher. Drains remaining items."""
|
|
222
222
|
if self._closed:
|
|
223
223
|
return
|
package/ui_server.py
CHANGED
|
@@ -33,6 +33,8 @@ except ImportError:
|
|
|
33
33
|
"Install with: pip install 'fastapi[all]' uvicorn websockets"
|
|
34
34
|
)
|
|
35
35
|
|
|
36
|
+
from security_middleware import SecurityHeadersMiddleware
|
|
37
|
+
|
|
36
38
|
# Add src/ and routes/ to path
|
|
37
39
|
sys.path.insert(0, str(Path(__file__).parent / "src"))
|
|
38
40
|
sys.path.insert(0, str(Path(__file__).parent))
|
|
@@ -51,7 +53,9 @@ app = FastAPI(
|
|
|
51
53
|
redoc_url="/api/redoc"
|
|
52
54
|
)
|
|
53
55
|
|
|
54
|
-
# Middleware
|
|
56
|
+
# Middleware (order matters: security headers should be outermost)
|
|
57
|
+
app.add_middleware(SecurityHeadersMiddleware)
|
|
58
|
+
app.add_middleware(GZipMiddleware, minimum_size=1000)
|
|
55
59
|
app.add_middleware(
|
|
56
60
|
CORSMiddleware,
|
|
57
61
|
allow_origins=[
|
|
@@ -61,10 +65,9 @@ app.add_middleware(
|
|
|
61
65
|
"http://127.0.0.1:8417",
|
|
62
66
|
],
|
|
63
67
|
allow_credentials=True,
|
|
64
|
-
allow_methods=["
|
|
65
|
-
allow_headers=["
|
|
68
|
+
allow_methods=["GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS"],
|
|
69
|
+
allow_headers=["Content-Type", "Authorization", "X-SLM-API-Key"],
|
|
66
70
|
)
|
|
67
|
-
app.add_middleware(GZipMiddleware, minimum_size=1000)
|
|
68
71
|
|
|
69
72
|
# Rate limiting (v2.6)
|
|
70
73
|
try:
|