superlocalmemory
Advanced tools
+1
-1
| { | ||
| "name": "superlocalmemory", | ||
| "version": "3.6.12", | ||
| "version": "3.6.13", | ||
| "description": "Information-geometric agent memory with mathematical guarantees. 4-channel retrieval, Fisher-Rao similarity, zero-LLM mode, EU AI Act compliant. Works with Claude, Cursor, Windsurf, and 17+ AI tools.", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
+1
-1
| [project] | ||
| name = "superlocalmemory" | ||
| version = "3.6.12" | ||
| version = "3.6.13" | ||
| description = "Information-geometric agent memory with mathematical guarantees" | ||
@@ -5,0 +5,0 @@ readme = "README.md" |
| Metadata-Version: 2.4 | ||
| Name: superlocalmemory | ||
| Version: 3.6.12 | ||
| Version: 3.6.13 | ||
| Summary: Information-geometric agent memory with mathematical guarantees | ||
@@ -5,0 +5,0 @@ Author-email: Varun Pratap Bhardwaj <admin@superlocalmemory.com> |
@@ -82,29 +82,42 @@ # Copyright (c) 2026 Varun Pratap Bhardwaj / Qualixar | ||
| # v3.6.13 (CRITICAL): the `mcp` stdio transport requires stdout to carry | ||
| # ONLY JSON-RPC. The post-upgrade banner + migration notice below must NEVER | ||
| # run on that path, or the first post-upgrade `slm mcp` launch pollutes | ||
| # stdout and the MCP client (Claude Desktop / Cursor) rejects the stream as | ||
| # "not valid JSON". Skip the whole block for `mcp`; the next human `slm` | ||
| # command emits the banner (to stderr) and writes the version marker. | ||
| _is_mcp_stdio = len(sys.argv) >= 2 and sys.argv[1] == "mcp" | ||
| # One-time post-upgrade banner — silent for fresh installs and | ||
| # same-version runs. Guarded against I/O errors internally. | ||
| from superlocalmemory.cli.version_banner import check_and_emit_upgrade_banner | ||
| if check_and_emit_upgrade_banner(_ver): | ||
| # First post-upgrade invocation: apply the data-dir migration if | ||
| # it's safe. When the previous-version daemon is still running | ||
| # we defer — the next daemon start picks it up. | ||
| try: | ||
| import logging as _logging | ||
| from pathlib import Path as _P | ||
| from superlocalmemory.migrations.v3_4_25_to_v3_4_26 import ( | ||
| migrate_if_safe as _migrate_if_safe, | ||
| ) | ||
| _data = _P(_os.environ.get("SLM_DATA_DIR") | ||
| or _P.home() / ".superlocalmemory") | ||
| _res = _migrate_if_safe(_data) | ||
| if _res.get("status") == "deferred": | ||
| if not _is_mcp_stdio: | ||
| from superlocalmemory.cli.version_banner import check_and_emit_upgrade_banner | ||
| if check_and_emit_upgrade_banner(_ver): | ||
| # First post-upgrade invocation: apply the data-dir migration if | ||
| # it's safe. When the previous-version daemon is still running | ||
| # we defer — the next daemon start picks it up. | ||
| try: | ||
| import logging as _logging | ||
| from pathlib import Path as _P | ||
| from superlocalmemory.migrations.v3_4_25_to_v3_4_26 import ( | ||
| migrate_if_safe as _migrate_if_safe, | ||
| ) | ||
| _data = _P(_os.environ.get("SLM_DATA_DIR") | ||
| or _P.home() / ".superlocalmemory") | ||
| _res = _migrate_if_safe(_data) | ||
| if _res.get("status") == "deferred": | ||
| print( | ||
| " note: data migration deferred — the running SLM " | ||
| "daemon will apply it on its next restart.", | ||
| file=sys.stderr, | ||
| ) | ||
| except Exception as _mig_exc: | ||
| import logging as _logging | ||
| _logging.getLogger(__name__).warning( | ||
| "v3.4.26 migrate_if_safe failed: %s — run `slm doctor`", _mig_exc, | ||
| ) | ||
| print( | ||
| " note: data migration deferred — the running SLM " | ||
| "daemon will apply it on its next restart." | ||
| " note: data migration check failed — run `slm doctor` to diagnose.", | ||
| file=sys.stderr, | ||
| ) | ||
| except Exception as _mig_exc: | ||
| import logging as _logging | ||
| _logging.getLogger(__name__).warning( | ||
| "v3.4.26 migrate_if_safe failed: %s — run `slm doctor`", _mig_exc, | ||
| ) | ||
| print(" note: data migration check failed — run `slm doctor` to diagnose.") | ||
@@ -111,0 +124,0 @@ parser = argparse.ArgumentParser( |
@@ -170,4 +170,8 @@ # Copyright (c) 2026 Varun Pratap Bhardwaj / Qualixar | ||
| sys.stdout.write(_banner(prior, current)) | ||
| sys.stdout.flush() | ||
| # v3.6.13 (CRITICAL): write to STDERR, never stdout. On the `slm mcp` | ||
| # stdio transport, ANY stdout byte that isn't JSON-RPC corrupts the | ||
| # stream and the MCP client (e.g. Claude Desktop) rejects every | ||
| # message as "not valid JSON". The banner is a human notice → stderr. | ||
| sys.stderr.write(_banner(prior, current)) | ||
| sys.stderr.flush() | ||
| write_marker_version(current) | ||
@@ -174,0 +178,0 @@ return True |
Sorry, the diff of this file is too big to display
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
Found 5 instances in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
Deprecated
MaintenanceThe maintainer of the package marked it as deprecated. This could indicate that a single version should not be used, or that the package is no longer maintained and any new vulnerabilities will not be fixed.
Found 1 instance in 1 package
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
Found 6 instances in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
7847415
0.02%119491
0.01%0
-100%48
-2.04%