superlocalmemory 3.6.14 → 3.6.16
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/CHANGELOG.md +28 -0
- package/README.md +23 -6
- package/package.json +1 -1
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/CLAUDE.md +5 -4
- package/plugin/agents/slm-memory-advisor.md +5 -4
- package/plugin/agents/slm-optimize-advisor.md +1 -1
- package/plugin/requirements.txt +1 -1
- package/plugin/skills/slm-cache/SKILL.md +1 -1
- package/plugin/skills/slm-compress/SKILL.md +1 -1
- package/plugin/skills/slm-graph/SKILL.md +1 -1
- package/plugin/skills/slm-recall/SKILL.md +10 -2
- package/plugin/skills/slm-remember/SKILL.md +14 -2
- package/plugin/skills/slm-session/SKILL.md +1 -1
- package/plugin/skills/slm-status/SKILL.md +1 -1
- package/plugin-src/agents/slm-memory-advisor.md +5 -4
- package/plugin-src/agents/slm-optimize-advisor.md +1 -1
- package/plugin-src/commands/slm-optimize.md +1 -1
- package/plugin-src/commands/slm-recall.md +1 -1
- package/plugin-src/commands/slm-remember.md +2 -2
- package/plugin-src/commands/slm-status.md +1 -1
- package/plugin-src/manifest.json +1 -1
- package/plugin-src/requirements.txt +1 -1
- package/plugin-src/rules/AGENTS.md +5 -4
- package/plugin-src/rules/CLAUDE.md.fragment +5 -4
- package/plugin-src/skills/slm-cache/SKILL.md +1 -1
- package/plugin-src/skills/slm-compress/SKILL.md +1 -1
- package/plugin-src/skills/slm-graph/SKILL.md +1 -1
- package/plugin-src/skills/slm-recall/SKILL.md +10 -2
- package/plugin-src/skills/slm-remember/SKILL.md +14 -2
- package/plugin-src/skills/slm-session/SKILL.md +1 -1
- package/plugin-src/skills/slm-status/SKILL.md +1 -1
- package/pyproject.toml +1 -1
- package/scripts/build-plugin.js +1 -1
- package/src/superlocalmemory/__init__.py +1 -1
- package/src/superlocalmemory/cli/commands.py +91 -2
- package/src/superlocalmemory/cli/main.py +45 -0
- package/src/superlocalmemory/cli/setup_wizard.py +27 -0
- package/src/superlocalmemory/core/backend_orchestrator.py +12 -8
- package/src/superlocalmemory/core/config.py +115 -0
- package/src/superlocalmemory/core/engine.py +74 -3
- package/src/superlocalmemory/core/fact_consolidator.py +20 -3
- package/src/superlocalmemory/core/platform_utils.py +8 -0
- package/src/superlocalmemory/core/recall_pipeline.py +7 -0
- package/src/superlocalmemory/core/recall_worker.py +7 -0
- package/src/superlocalmemory/core/store_pipeline.py +23 -1
- package/src/superlocalmemory/core/worker_pool.py +14 -2
- package/src/superlocalmemory/hooks/session_registry.py +8 -4
- package/src/superlocalmemory/mcp/_daemon_proxy.py +12 -2
- package/src/superlocalmemory/mcp/_pool_adapter.py +15 -6
- package/src/superlocalmemory/mcp/tools_core.py +25 -0
- package/src/superlocalmemory/mcp/tools_v3.py +6 -1
- package/src/superlocalmemory/mcp/tools_v33.py +8 -4
- package/src/superlocalmemory/retrieval/bm25_channel.py +12 -2
- package/src/superlocalmemory/retrieval/engine.py +36 -3
- package/src/superlocalmemory/retrieval/entity_channel.py +5 -5
- package/src/superlocalmemory/retrieval/hopfield_channel.py +10 -2
- package/src/superlocalmemory/retrieval/semantic_channel.py +10 -2
- package/src/superlocalmemory/server/unified_daemon.py +132 -10
- package/src/superlocalmemory/storage/database.py +215 -43
- package/src/superlocalmemory/storage/migration_runner.py +17 -1
- package/src/superlocalmemory/storage/migrations/M016_add_scope_support.py +120 -0
- package/src/superlocalmemory/storage/models.py +10 -0
- package/src/superlocalmemory/storage/schema.py +15 -10
- package/src/superlocalmemory.egg-info/PKG-INFO +24 -7
- package/src/superlocalmemory.egg-info/SOURCES.txt +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,34 @@ All notable changes to SuperLocalMemory V3 will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [3.6.14] - 2026-06-18 — Audit-hardened: memory bounds, cross-tenant cache isolation, atomic credentials
|
|
9
|
+
|
|
10
|
+
Shipped through two adversarial audit passes (Qualixar Iron Pattern Stages 8–9), validated against a green 5933-test suite under the real 3.12 runtime. Default single-machine behavior is unchanged.
|
|
11
|
+
|
|
12
|
+
### Security
|
|
13
|
+
|
|
14
|
+
- **Cross-tenant cache isolation.** The optimize proxy cache now derives a per-credential tenant from the raw inbound API key (before header redaction); two users sending the same prompt with different keys never share a cache entry, and requests with no credential are never cached. Previously every proxy response was keyed under a single shared `default` tenant — on a LAN-shared proxy that could serve user A's completion to user B.
|
|
15
|
+
- **Hardened the isolation against internal hook errors.** A tenant-aware cache hook is never silently downgraded to the shared namespace when it raises an internal error — the safe path is a cache miss, decided by signature inspection rather than catching an ambiguous `TypeError`.
|
|
16
|
+
- **Vertex cache keys isolate by project + region.**
|
|
17
|
+
|
|
18
|
+
### Fixed — memory (bounded-memory lifeline)
|
|
19
|
+
|
|
20
|
+
- **Bounded the optimize caches.** Per-tenant LRU caps on the semantic vector index and the boundary-MLE cache, plus a cap on the *number* of tenants held in memory (centroid + index shards). Eviction is lossless — the DB remains the source of truth and evicted tenants rebuild on next access. Prevents unbounded RAM growth on long-lived shared-proxy daemons.
|
|
21
|
+
- **Restored the SAFE-CACHE adversarial defense**, which a 3-tuple unpack bug had been silently disabling on every warm-start with vectors present.
|
|
22
|
+
|
|
23
|
+
### Fixed — reliability
|
|
24
|
+
|
|
25
|
+
- **Atomic, 0600 credential writes** (`cloud_backup`): no world-readable window, no torn-write corruption of the credential store, and a fixed `UnboundLocalError` that broke the credential fallback entirely on keyring-less hosts (headless Linux / minimal Docker).
|
|
26
|
+
- **ObserveBuffer** surfaces flush failures and reports an honest `evaluated/captured/failed` count instead of treating skipped items as successes.
|
|
27
|
+
- **Cloud embedding** reuses a pooled HTTP client instead of opening a fresh TLS connection per call.
|
|
28
|
+
- **`check_status`** distinguishes a corrupt `settings.json` (`installed=None`) from "not installed".
|
|
29
|
+
|
|
30
|
+
### Fixed — packaging / platform
|
|
31
|
+
|
|
32
|
+
- **Cross-platform plugin launcher** (POSIX + Windows) and a Windows venv bootstrap, so the plugin's MCP server resolves the correct `slm` binary on Windows (`Scripts/slm.exe`) as well as POSIX.
|
|
33
|
+
- **Declared `tomli-w`** so the codex IDE integration can write its `.codex/config.toml`; previously `connect_ide('codex')` failed silently because the TOML writer was never a declared dependency.
|
|
34
|
+
- Version reconciled to **3.6.14** across `package.json`, `pyproject.toml`, and `__init__.py`; a consistency test guards against future skew.
|
|
35
|
+
|
|
8
36
|
## [3.6.13] - 2026-06-14 — Hotfix: MCP server failed to start after upgrade
|
|
9
37
|
|
|
10
38
|
### Fixed
|
package/README.md
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
<img src="https://superlocalmemory.com/assets/logo-mark.png" alt="SuperLocalMemory" width="200"/>
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
|
-
<h1 align="center">SuperLocalMemory V3.6.
|
|
5
|
+
<h1 align="center">SuperLocalMemory V3.6.16</h1>
|
|
6
6
|
<p align="center"><strong>Cache. Compress. Remember. Three surfaces — proxy, MCP tools, or skill. Every setup covered.</strong><br/>
|
|
7
7
|
<em>To the best of our knowledge, the only zero-cloud agent memory that beats Mem0's zero-LLM score on LoCoMo. Mode A: 74.8% vs Mem0 64.2% — no GPU, no API key, on CPU.</em></p>
|
|
8
|
-
<p align="center"><code>v3.6.
|
|
8
|
+
<p align="center"><code>v3.6.16</code> — <strong>Plugin-native. Profile-aware. Distributed-ready.</strong><br/>
|
|
9
9
|
Proxy: <code>slm wrap claude</code> · MCP: add <code>slm_compress</code> to your config · Skill: zero-config</p>
|
|
10
10
|
<p align="center"><strong>3 published research papers</strong> (arXiv preprints + Zenodo-archived) · <a href="https://arxiv.org/abs/2603.02240">arXiv:2603.02240</a> · <a href="https://arxiv.org/abs/2603.14588">arXiv:2603.14588</a> · <a href="https://arxiv.org/abs/2604.04514">arXiv:2604.04514</a></p>
|
|
11
11
|
|
|
@@ -100,6 +100,8 @@ Three mathematical contributions replace cloud LLM dependency:
|
|
|
100
100
|
|
|
101
101
|
Auto-capture hooks (`slm hooks install`) fire only on real signals — topic pivot, web call, file edit — never on a timer. Fail-open, <10ms p99 hot path.
|
|
102
102
|
|
|
103
|
+
**Multi-scope memory (v3.6.15, opt-in):** keep memories `personal` (default), `shared` with named profiles, or `global` across the machine. Off by default — recall only ever returns your own facts until you turn sharing on, per call or in config. See **[docs/shared-memory.md](docs/shared-memory.md)**.
|
|
104
|
+
|
|
103
105
|
<a id="multilingual-embedding-support"></a>
|
|
104
106
|
|
|
105
107
|
**Multilingual:** plug in any OpenAI-compatible embedding endpoint — Ollama, vLLM, LiteLLM, `bge-m3`, `multilingual-e5`, `Qwen3-Embedding`. The math layer is language-agnostic; 30+ languages work at full retrieval quality. No cloud dependency, no code changes.
|
|
@@ -160,7 +162,7 @@ Full docs: [docs/multi-machine.md](docs/multi-machine.md) · [docs/distributed-d
|
|
|
160
162
|
|:-----|:--------|:-----|
|
|
161
163
|
| **npm** (recommended) | `npm install -g superlocalmemory` | Node 14+, installs Python deps automatically |
|
|
162
164
|
| **pip** | `pip install superlocalmemory` | Python 3.11+, direct install |
|
|
163
|
-
| **Claude Code Plugin** (WP-06) | `/plugin install superlocalmemory@qualixar` | Self-bootstraps venv, isolated SLM_DATA_DIR, additive — 14-tool core |
|
|
165
|
+
| **Claude Code Plugin** (WP-06) | `/plugin marketplace add qualixar/superlocalmemory` then `/plugin install superlocalmemory@qualixar` | Self-bootstraps venv, isolated SLM_DATA_DIR, additive — 14-tool core. Ships the skills/agents/hooks/commands |
|
|
164
166
|
| **Portable / IDE connect** (WP-08) | `slm connect <ide> [--here]` | Wire any IDE without reinstalling; `slm connect claude-code` → plugin pointer |
|
|
165
167
|
|
|
166
168
|
After any install path: `slm setup` → `slm doctor` → `slm warmup` (optional, pre-downloads ~500MB embedding model).
|
|
@@ -216,18 +218,31 @@ Per-IDE configs available for Claude Code, Cursor, Windsurf, VS Code Copilot, Co
|
|
|
216
218
|
|
|
217
219
|
## Claude Code Plugin
|
|
218
220
|
|
|
219
|
-
Install directly in Claude Code
|
|
221
|
+
Install directly in Claude Code — no system-level npm/pip needed. This is how you
|
|
222
|
+
get the **skills, agents, hooks, commands, and rules** (the MCP server is
|
|
223
|
+
bootstrapped automatically). It is a two-step flow — add the marketplace once,
|
|
224
|
+
then install:
|
|
220
225
|
|
|
221
226
|
```bash
|
|
227
|
+
# 1. Add the Qualixar marketplace (one-time — the repo IS the marketplace)
|
|
228
|
+
/plugin marketplace add qualixar/superlocalmemory
|
|
229
|
+
|
|
230
|
+
# 2. Install the plugin
|
|
222
231
|
/plugin install superlocalmemory@qualixar
|
|
223
232
|
```
|
|
224
233
|
|
|
225
234
|
- Self-bootstraps a Python venv, installs all deps in an isolated `SLM_DATA_DIR`
|
|
226
|
-
- Registers 14-tool core MCP surface (`core14` profile by default)
|
|
235
|
+
- Registers the 14-tool core MCP surface (`core14` profile by default)
|
|
236
|
+
- Ships the SLM skills / agents / hooks / commands / rules
|
|
227
237
|
- Additive — does not replace an existing SLM install
|
|
228
238
|
- `slm connect claude-code` detects an existing plugin install and links them
|
|
229
239
|
|
|
230
|
-
|
|
240
|
+
> **Plugin vs `pip`/`npm`:** `pip install superlocalmemory` / `npm i -g superlocalmemory`
|
|
241
|
+
> give you the `slm` CLI + the MCP server (the *tools*). The **skills/agents/hooks/
|
|
242
|
+
> commands** come only through the plugin above. Use the plugin for Claude Code; use
|
|
243
|
+
> pip/npm for the CLI or other IDEs.
|
|
244
|
+
|
|
245
|
+
To update later: `/plugin marketplace update qualixar` then `/plugin install superlocalmemory@qualixar`.
|
|
231
246
|
|
|
232
247
|
---
|
|
233
248
|
|
|
@@ -292,6 +307,8 @@ slm dashboard # Opens at http://localhost:8765
|
|
|
292
307
|
|
|
293
308
|
| Version | Codename | Key Features |
|
|
294
309
|
|---|---|---|
|
|
310
|
+
| **v3.6.16** | Docs | Corrected Claude Code plugin install — adds the required `/plugin marketplace add` step; clarifies plugin vs pip/npm delivery |
|
|
311
|
+
| **v3.6.15** | Multi-scope | **Opt-in [shared memory](docs/shared-memory.md)** (personal/shared/global, off by default), default-deny scope at every read path, recall scope-race fix, contributor PRs #42/#43/#44, fixes #46–#49 |
|
|
295
312
|
| **v3.6.14** | Plugin-native | Claude Code Plugin (WP-06), MCP profiles (WP-01), IDE connect (WP-08), asset consolidation, UI polish (WP-12) |
|
|
296
313
|
| **v3.6.x** | Optimize Everywhere / Distributed-ready | Three surfaces (proxy/MCP/skill), `SLM_REMOTE=1` LAN mode, remote dashboard, custom LLM endpoints |
|
|
297
314
|
| **v3.5.0** | Scale-Ready | CozoDB/LanceDB, 6-channel recall <1s, Core Memory Block, context injection v2, score normalization |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "superlocalmemory",
|
|
3
|
-
"version": "3.6.
|
|
3
|
+
"version": "3.6.16",
|
|
4
4
|
"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
5
|
"keywords": [
|
|
6
6
|
"ai-memory",
|
package/plugin/CLAUDE.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!-- BEGIN SuperLocalMemory v3.6.
|
|
1
|
+
<!-- BEGIN SuperLocalMemory v3.6.16 -->
|
|
2
2
|
|
|
3
3
|
## SuperLocalMemory (SLM) — Agent Rules
|
|
4
4
|
|
|
@@ -12,6 +12,7 @@ Call `session_init(project_path, query)` ONCE per fresh session before any recal
|
|
|
12
12
|
- Recall-before-remember: `recall(query, 5)` first; use `update_memory` if near-match found.
|
|
13
13
|
- Always supply tags + project + importance (7–10 for blockers/security/architecture).
|
|
14
14
|
- Never dump a whole file; never claim "saved" without success:true.
|
|
15
|
+
- Scope is opt-in (v3.6.15): writes are `personal`/private by default. Only use `scope="shared"/"global"` (or recall's `include_global`/`include_shared`) when the user explicitly asks to share across local profiles.
|
|
15
16
|
|
|
16
17
|
### Recall
|
|
17
18
|
- `recall` for conceptual/semantic queries; `search` for exact keywords.
|
|
@@ -27,7 +28,7 @@ Call `session_init(project_path, query)` ONCE per fresh session before any recal
|
|
|
27
28
|
`close_session(session_id)` when work is meaningfully complete.
|
|
28
29
|
|
|
29
30
|
### CLI fallback (MCP down)
|
|
30
|
-
`slm recall "<q>" --limit N` · `slm search "<q>"` · `slm remember "<c>" --tags t
|
|
31
|
+
`slm recall "<q>" --limit N` · `slm search "<q>"` · `slm remember "<c>" --tags t` · `slm list --limit N` · `slm forget` (preview first) · `slm status` · `slm optimize status`
|
|
31
32
|
|
|
32
33
|
### Skills
|
|
33
34
|
slm-recall · slm-remember · slm-session · slm-status · slm-cache · slm-compress · slm-graph
|
|
@@ -38,6 +39,6 @@ slm-recall · slm-remember · slm-session · slm-status · slm-cache · slm-comp
|
|
|
38
39
|
### Subagents
|
|
39
40
|
slm-memory-advisor (memory decisions, session hygiene) · slm-optimize-advisor (context compression + KV cache)
|
|
40
41
|
|
|
41
|
-
<!-- END SuperLocalMemory v3.6.
|
|
42
|
+
<!-- END SuperLocalMemory v3.6.16 -->
|
|
42
43
|
|
|
43
|
-
SuperLocalMemory v3.6.
|
|
44
|
+
SuperLocalMemory v3.6.16 · Qualixar · AGPL-3.0-or-later
|
|
@@ -17,9 +17,9 @@ When the main agent: starts a session and hasn't loaded project context; is abou
|
|
|
17
17
|
|
|
18
18
|
# Tools you may use (real SLM MCP tools, core profile)
|
|
19
19
|
- `session_init(project_path, query, max_results, max_age_days)` — ONCE at session start; returns recent decisions + relevant memories.
|
|
20
|
-
- `recall(query, limit, session_id, fast)` — multi-channel semantic retrieval (default limit 10).
|
|
20
|
+
- `recall(query, limit, session_id, fast, include_global, include_shared)` — multi-channel semantic retrieval (default limit 10). Leave `include_global`/`include_shared` unset — recall is private-by-default (v3.6.15).
|
|
21
21
|
- `search(query, limit, profile_id)` — exact keyword / FTS5 BM25.
|
|
22
|
-
- `remember(content, tags, project, importance, session_id)` — store atomic fact; importance 1-10.
|
|
22
|
+
- `remember(content, tags, project, importance, session_id, scope, shared_with)` — store atomic fact; importance 1-10. Leave `scope` unset (defaults to `personal`/private).
|
|
23
23
|
- `update_memory(fact_id, content)` — correct by exact id.
|
|
24
24
|
- `forget(profile_id, dry_run)` — decay cycle; ALWAYS dry_run=True first, report, never apply blind.
|
|
25
25
|
- `list_recent(limit)` — newest first.
|
|
@@ -33,11 +33,12 @@ When the main agent: starts a session and hasn't loaded project context; is abou
|
|
|
33
33
|
5. recall vs search — recall for conceptual; search for literal keyword.
|
|
34
34
|
6. EMPTY/LOW results → broaden, try search, or list_recent; never fabricate.
|
|
35
35
|
7. SESSION END — close_session(session_id) when work meaningfully complete.
|
|
36
|
+
8. SCOPE IS OPT-IN (v3.6.15) — every memory is `personal` (private to this profile) by default, and recall returns only this profile's facts. Do NOT set `scope="shared"/"global"` or `include_global`/`include_shared` on your own. Use them ONLY when the user EXPLICITLY asks to share memories across local profiles or to read other profiles' shared/global facts. Default behaviour is identical to single-profile SLM.
|
|
36
37
|
|
|
37
38
|
# CLI fallback (MCP unavailable)
|
|
38
|
-
recall→`slm recall "<q>" --limit N` · search→`slm search "<q>"` · remember→`slm remember "<c>" --tags a,b
|
|
39
|
+
recall→`slm recall "<q>" --limit N` (add `--include-global`/`--include-shared` only on explicit user request) · search→`slm search "<q>"` · remember→`slm remember "<c>" --tags a,b` (project/importance are MCP-only, NOT CLI flags; `--scope shared --shared-with a,b` only when the user asks to share) · list→`slm list --limit N` · forget→`slm forget` (preview first) · status→`slm status`. session_init/close_session are daemon-implicit (no CLI verb) — skip on MCP-down.
|
|
39
40
|
|
|
40
41
|
# What NOT to do
|
|
41
42
|
Never session_init twice; never forget dry_run=False without reporting preview; never dump a whole file into remember; never invent a memory; never claim "saved" without success:true / clean CLI exit.
|
|
42
43
|
|
|
43
|
-
SuperLocalMemory v3.6.
|
|
44
|
+
SuperLocalMemory v3.6.16 · Qualixar · AGPL-3.0-or-later
|
|
@@ -35,4 +35,4 @@ stats→`slm optimize status`/`savings` · compress→`slm compress` · cache→
|
|
|
35
35
|
# What NOT to do
|
|
36
36
|
Never compress code-for-edit/JSON-to-parse/<500 chars; never store secrets/ccr_ids; never let optimize failure block/alter the task; never claim a specific savings %.
|
|
37
37
|
|
|
38
|
-
SuperLocalMemory v3.6.
|
|
38
|
+
SuperLocalMemory v3.6.16 · Qualixar · AGPL-3.0-or-later
|
package/plugin/requirements.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
superlocalmemory==3.6.
|
|
1
|
+
superlocalmemory==3.6.16
|
|
@@ -164,6 +164,9 @@ No benchmark numbers are cited here; performance is workload-dependent.
|
|
|
164
164
|
# Multi-channel semantic recall
|
|
165
165
|
slm recall "<query>" [--limit N] [--fast] [--json]
|
|
166
166
|
|
|
167
|
+
# Opt into shared/global facts for one query (v3.6.15 — off by default)
|
|
168
|
+
slm recall "<query>" --include-global --include-shared
|
|
169
|
+
|
|
167
170
|
# Keyword/FTS5 search (alias: slm search)
|
|
168
171
|
slm search "<query>" [--limit N] [--json]
|
|
169
172
|
|
|
@@ -175,11 +178,16 @@ slm list [--limit N] [--json]
|
|
|
175
178
|
```
|
|
176
179
|
|
|
177
180
|
Flags verified in source (main.py):
|
|
178
|
-
- `slm recall`: `--limit`, `--fast`, `--json`
|
|
181
|
+
- `slm recall`: `--limit`, `--fast`, `--json`, `--include-global` / `--no-global`, `--include-shared` / `--no-shared`
|
|
179
182
|
- `slm search`: `--limit`, `--json`
|
|
180
183
|
- `slm trace`: `--limit`, `--json`
|
|
181
184
|
- `slm list`: `--limit` / `-n`, `--json`
|
|
182
185
|
|
|
186
|
+
> **Multi-scope (v3.6.15, opt-in):** recall is shared-OFF by default — it returns only
|
|
187
|
+
> this profile's facts. Pass `--include-global` / `--include-shared` (or the MCP
|
|
188
|
+
> `include_global` / `include_shared` args) to opt in for a query, or set the defaults in
|
|
189
|
+
> your `mode_a/b/c.json` config. See [docs/shared-memory.md](../../../docs/shared-memory.md).
|
|
190
|
+
|
|
183
191
|
**Flags that do NOT exist** (fabricated in old skills — never write these):
|
|
184
192
|
`--min-score`, `--format`, `--project`, `--tags` on recall or search.
|
|
185
193
|
|
|
@@ -193,4 +201,4 @@ trusts that what you surface came from the store.
|
|
|
193
201
|
|
|
194
202
|
---
|
|
195
203
|
|
|
196
|
-
*SuperLocalMemory v3.6.
|
|
204
|
+
*SuperLocalMemory v3.6.16 · Qualixar · AGPL-3.0-or-later*
|
|
@@ -103,9 +103,16 @@ remember(
|
|
|
103
103
|
project: str = "", # project scope, e.g. "superlocalmemory"
|
|
104
104
|
importance: int = 5,# 1–10; see scale below
|
|
105
105
|
session_id: str = "",# from session_init; attributes the write to this session
|
|
106
|
+
scope: str = None, # v3.6.15 multi-scope: "personal" (default) | "shared" | "global"
|
|
107
|
+
shared_with: str = "",# comma-separated profile_ids for scope="shared"
|
|
106
108
|
)
|
|
107
109
|
```
|
|
108
110
|
|
|
111
|
+
> **Multi-scope (v3.6.15, opt-in):** leave `scope` unset for `personal` (private to
|
|
112
|
+
> this profile — the default, identical to 3.6.14). `"global"` is visible to every
|
|
113
|
+
> profile on the machine; `"shared"` is visible to the profiles in `shared_with`.
|
|
114
|
+
> See [docs/shared-memory.md](../../../docs/shared-memory.md).
|
|
115
|
+
|
|
109
116
|
**importance scale:**
|
|
110
117
|
- 1–3: Low — passing notes, ideas, soft preferences
|
|
111
118
|
- 4–6: Normal — patterns, conventions, standard decisions (default: 5)
|
|
@@ -159,8 +166,13 @@ Always run `--dry-run` first and review the preview before passing `--yes`.
|
|
|
159
166
|
# Store a fact
|
|
160
167
|
slm remember "<content>" [--tags a,b,c] [--json]
|
|
161
168
|
|
|
162
|
-
#
|
|
169
|
+
# Store a shared/global fact (v3.6.15, opt-in)
|
|
170
|
+
slm remember "<content>" --scope global
|
|
171
|
+
slm remember "<content>" --scope shared --shared-with alice,bob
|
|
172
|
+
|
|
173
|
+
# Flags verified in source (main.py): --tags, --json, --sync, --scope, --shared-with
|
|
163
174
|
# --sync: wait for full enrichment before returning (default is async)
|
|
175
|
+
# --scope: personal (default) | shared | global ; --shared-with: profile ids for shared
|
|
164
176
|
```
|
|
165
177
|
|
|
166
178
|
**Flags that do NOT exist** on `slm remember`:
|
|
@@ -179,4 +191,4 @@ slm remember "<content>" [--tags a,b,c] [--json]
|
|
|
179
191
|
|
|
180
192
|
---
|
|
181
193
|
|
|
182
|
-
*SuperLocalMemory v3.6.
|
|
194
|
+
*SuperLocalMemory v3.6.16 · Qualixar · AGPL-3.0-or-later*
|
|
@@ -17,9 +17,9 @@ When the main agent: starts a session and hasn't loaded project context; is abou
|
|
|
17
17
|
|
|
18
18
|
# Tools you may use (real SLM MCP tools, core profile)
|
|
19
19
|
- `session_init(project_path, query, max_results, max_age_days)` — ONCE at session start; returns recent decisions + relevant memories.
|
|
20
|
-
- `recall(query, limit, session_id, fast)` — multi-channel semantic retrieval (default limit 10).
|
|
20
|
+
- `recall(query, limit, session_id, fast, include_global, include_shared)` — multi-channel semantic retrieval (default limit 10). Leave `include_global`/`include_shared` unset — recall is private-by-default (v3.6.15).
|
|
21
21
|
- `search(query, limit, profile_id)` — exact keyword / FTS5 BM25.
|
|
22
|
-
- `remember(content, tags, project, importance, session_id)` — store atomic fact; importance 1-10.
|
|
22
|
+
- `remember(content, tags, project, importance, session_id, scope, shared_with)` — store atomic fact; importance 1-10. Leave `scope` unset (defaults to `personal`/private).
|
|
23
23
|
- `update_memory(fact_id, content)` — correct by exact id.
|
|
24
24
|
- `forget(profile_id, dry_run)` — decay cycle; ALWAYS dry_run=True first, report, never apply blind.
|
|
25
25
|
- `list_recent(limit)` — newest first.
|
|
@@ -33,11 +33,12 @@ When the main agent: starts a session and hasn't loaded project context; is abou
|
|
|
33
33
|
5. recall vs search — recall for conceptual; search for literal keyword.
|
|
34
34
|
6. EMPTY/LOW results → broaden, try search, or list_recent; never fabricate.
|
|
35
35
|
7. SESSION END — close_session(session_id) when work meaningfully complete.
|
|
36
|
+
8. SCOPE IS OPT-IN (v3.6.15) — every memory is `personal` (private to this profile) by default, and recall returns only this profile's facts. Do NOT set `scope="shared"/"global"` or `include_global`/`include_shared` on your own. Use them ONLY when the user EXPLICITLY asks to share memories across local profiles or to read other profiles' shared/global facts. Default behaviour is identical to single-profile SLM.
|
|
36
37
|
|
|
37
38
|
# CLI fallback (MCP unavailable)
|
|
38
|
-
recall→`slm recall "<q>" --limit N` · search→`slm search "<q>"` · remember→`slm remember "<c>" --tags a,b
|
|
39
|
+
recall→`slm recall "<q>" --limit N` (add `--include-global`/`--include-shared` only on explicit user request) · search→`slm search "<q>"` · remember→`slm remember "<c>" --tags a,b` (project/importance are MCP-only, NOT CLI flags; `--scope shared --shared-with a,b` only when the user asks to share) · list→`slm list --limit N` · forget→`slm forget` (preview first) · status→`slm status`. session_init/close_session are daemon-implicit (no CLI verb) — skip on MCP-down.
|
|
39
40
|
|
|
40
41
|
# What NOT to do
|
|
41
42
|
Never session_init twice; never forget dry_run=False without reporting preview; never dump a whole file into remember; never invent a memory; never claim "saved" without success:true / clean CLI exit.
|
|
42
43
|
|
|
43
|
-
SuperLocalMemory v3.6.
|
|
44
|
+
SuperLocalMemory v3.6.16 · Qualixar · AGPL-3.0-or-later
|
|
@@ -35,4 +35,4 @@ stats→`slm optimize status`/`savings` · compress→`slm compress` · cache→
|
|
|
35
35
|
# What NOT to do
|
|
36
36
|
Never compress code-for-edit/JSON-to-parse/<500 chars; never store secrets/ccr_ids; never let optimize failure block/alter the task; never claim a specific savings %.
|
|
37
37
|
|
|
38
|
-
SuperLocalMemory v3.6.
|
|
38
|
+
SuperLocalMemory v3.6.16 · Qualixar · AGPL-3.0-or-later
|
|
@@ -11,6 +11,6 @@ Save to SuperLocalMemory: $ARGUMENTS
|
|
|
11
11
|
3. Determine importance: use 8 for blockers/security/architecture decisions; use 7 for conventions and constraints; use 5 for general facts.
|
|
12
12
|
4. Call `remember(content="$ARGUMENTS", tags=<extracted tags>, importance=<n>)`.
|
|
13
13
|
5. Confirm only on success:true. If success is not true, report the error — never claim "saved."
|
|
14
|
-
6. MCP unavailable → CLI fallback: `slm remember "$ARGUMENTS" --tags <tags
|
|
14
|
+
6. MCP unavailable → CLI fallback: `slm remember "$ARGUMENTS" --tags <tags>` (note: `--importance` is MCP-only, not a CLI flag).
|
|
15
15
|
|
|
16
|
-
SuperLocalMemory v3.6.
|
|
16
|
+
SuperLocalMemory v3.6.16 · Qualixar · AGPL-3.0-or-later
|
|
@@ -12,4 +12,4 @@ Show SuperLocalMemory status and optimization counters.
|
|
|
12
12
|
|
|
13
13
|
Note: MCP get_status is intentionally NOT used here — it is outside the core profile and would error. Use `slm status` (CLI) + `slm_optimize_stats` (MCP) only.
|
|
14
14
|
|
|
15
|
-
SuperLocalMemory v3.6.
|
|
15
|
+
SuperLocalMemory v3.6.16 · Qualixar · AGPL-3.0-or-later
|
package/plugin-src/manifest.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
superlocalmemory==3.6.
|
|
1
|
+
superlocalmemory==3.6.16
|
|
@@ -18,6 +18,7 @@ Call `session_init(project_path, query, max_results, max_age_days)` **once** at
|
|
|
18
18
|
- **Recall before remember** — call `recall(query, 5)` first. If a near-identical memory exists, use `update_memory(fact_id, content)` to correct it; never duplicate.
|
|
19
19
|
- **Tags + project + importance** — always supply meaningful tags and the project name. Use importance 7–10 for blockers, security findings, and architecture decisions; 5 for general facts.
|
|
20
20
|
- **Never dump a whole file** — extract only the durable decision or constraint; store the path reference if needed.
|
|
21
|
+
- **Scope is opt-in (v3.6.15)** — memories are `personal` (private to this profile) by default. Only pass `scope="shared"/"global"` (or recall's `include_global`/`include_shared`) when the user EXPLICITLY asks to share across local profiles. Never opt in on your own; the default is identical to single-profile SLM.
|
|
21
22
|
|
|
22
23
|
---
|
|
23
24
|
|
|
@@ -56,7 +57,7 @@ When the SLM MCP server is unavailable, use these CLI equivalents:
|
|
|
56
57
|
|------------------------|-----------------------------------------------------------|
|
|
57
58
|
| `recall` | `slm recall "<query>" --limit N` |
|
|
58
59
|
| `search` | `slm search "<query>"` |
|
|
59
|
-
| `remember` | `slm remember "<content>" --tags a,b
|
|
60
|
+
| `remember` | `slm remember "<content>" --tags a,b` (project/importance are MCP-only) |
|
|
60
61
|
| `list_recent` | `slm list --limit N` |
|
|
61
62
|
| `forget` | `slm forget` (always preview first) |
|
|
62
63
|
| `slm_optimize_stats` | `slm optimize status` / `slm optimize savings` |
|
|
@@ -72,8 +73,8 @@ When the SLM MCP server is unavailable, use these CLI equivalents:
|
|
|
72
73
|
|
|
73
74
|
| Tool | Signature (key params) | Notes |
|
|
74
75
|
|--------------------|--------------------------------------------------------------------------------|------------------------------------|
|
|
75
|
-
| `remember` | `content, tags="", project="", importance=5, session_id="",
|
|
76
|
-
| `recall` | `query, limit=10, agent_id, session_id="", fast=False`
|
|
76
|
+
| `remember` | `content, tags="", project="", importance=5, session_id="", scope="personal", shared_with=""` | Store atomic fact. `scope` opt-in (personal default) |
|
|
77
|
+
| `recall` | `query, limit=10, agent_id, session_id="", fast=False, include_global, include_shared` | Multi-channel retrieval. Scope flags off by default |
|
|
77
78
|
| `search` | `query, limit=10, profile_id=""` | FTS5 BM25 keyword search |
|
|
78
79
|
| `fetch` | `url, ...` | Fetch remote content |
|
|
79
80
|
| `list_recent` | `limit=20, profile_id=""` | Newest memories first |
|
|
@@ -87,4 +88,4 @@ When the SLM MCP server is unavailable, use these CLI equivalents:
|
|
|
87
88
|
| `slm_cache_get` | `key` | KV cache get; returns hit, value |
|
|
88
89
|
| `slm_optimize_stats` | `()` | Returns compress_runs, tokens_saved_compress, cache_kv_hits |
|
|
89
90
|
|
|
90
|
-
SuperLocalMemory v3.6.
|
|
91
|
+
SuperLocalMemory v3.6.16 · Qualixar · AGPL-3.0-or-later
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!-- BEGIN SuperLocalMemory v3.6.
|
|
1
|
+
<!-- BEGIN SuperLocalMemory v3.6.16 -->
|
|
2
2
|
|
|
3
3
|
## SuperLocalMemory (SLM) — Agent Rules
|
|
4
4
|
|
|
@@ -12,6 +12,7 @@ Call `session_init(project_path, query)` ONCE per fresh session before any recal
|
|
|
12
12
|
- Recall-before-remember: `recall(query, 5)` first; use `update_memory` if near-match found.
|
|
13
13
|
- Always supply tags + project + importance (7–10 for blockers/security/architecture).
|
|
14
14
|
- Never dump a whole file; never claim "saved" without success:true.
|
|
15
|
+
- Scope is opt-in (v3.6.15): writes are `personal`/private by default. Only use `scope="shared"/"global"` (or recall's `include_global`/`include_shared`) when the user explicitly asks to share across local profiles.
|
|
15
16
|
|
|
16
17
|
### Recall
|
|
17
18
|
- `recall` for conceptual/semantic queries; `search` for exact keywords.
|
|
@@ -27,7 +28,7 @@ Call `session_init(project_path, query)` ONCE per fresh session before any recal
|
|
|
27
28
|
`close_session(session_id)` when work is meaningfully complete.
|
|
28
29
|
|
|
29
30
|
### CLI fallback (MCP down)
|
|
30
|
-
`slm recall "<q>" --limit N` · `slm search "<q>"` · `slm remember "<c>" --tags t
|
|
31
|
+
`slm recall "<q>" --limit N` · `slm search "<q>"` · `slm remember "<c>" --tags t` · `slm list --limit N` · `slm forget` (preview first) · `slm status` · `slm optimize status`
|
|
31
32
|
|
|
32
33
|
### Skills
|
|
33
34
|
slm-recall · slm-remember · slm-session · slm-status · slm-cache · slm-compress · slm-graph
|
|
@@ -38,6 +39,6 @@ slm-recall · slm-remember · slm-session · slm-status · slm-cache · slm-comp
|
|
|
38
39
|
### Subagents
|
|
39
40
|
slm-memory-advisor (memory decisions, session hygiene) · slm-optimize-advisor (context compression + KV cache)
|
|
40
41
|
|
|
41
|
-
<!-- END SuperLocalMemory v3.6.
|
|
42
|
+
<!-- END SuperLocalMemory v3.6.16 -->
|
|
42
43
|
|
|
43
|
-
SuperLocalMemory v3.6.
|
|
44
|
+
SuperLocalMemory v3.6.16 · Qualixar · AGPL-3.0-or-later
|
|
@@ -164,6 +164,9 @@ No benchmark numbers are cited here; performance is workload-dependent.
|
|
|
164
164
|
# Multi-channel semantic recall
|
|
165
165
|
slm recall "<query>" [--limit N] [--fast] [--json]
|
|
166
166
|
|
|
167
|
+
# Opt into shared/global facts for one query (v3.6.15 — off by default)
|
|
168
|
+
slm recall "<query>" --include-global --include-shared
|
|
169
|
+
|
|
167
170
|
# Keyword/FTS5 search (alias: slm search)
|
|
168
171
|
slm search "<query>" [--limit N] [--json]
|
|
169
172
|
|
|
@@ -175,11 +178,16 @@ slm list [--limit N] [--json]
|
|
|
175
178
|
```
|
|
176
179
|
|
|
177
180
|
Flags verified in source (main.py):
|
|
178
|
-
- `slm recall`: `--limit`, `--fast`, `--json`
|
|
181
|
+
- `slm recall`: `--limit`, `--fast`, `--json`, `--include-global` / `--no-global`, `--include-shared` / `--no-shared`
|
|
179
182
|
- `slm search`: `--limit`, `--json`
|
|
180
183
|
- `slm trace`: `--limit`, `--json`
|
|
181
184
|
- `slm list`: `--limit` / `-n`, `--json`
|
|
182
185
|
|
|
186
|
+
> **Multi-scope (v3.6.15, opt-in):** recall is shared-OFF by default — it returns only
|
|
187
|
+
> this profile's facts. Pass `--include-global` / `--include-shared` (or the MCP
|
|
188
|
+
> `include_global` / `include_shared` args) to opt in for a query, or set the defaults in
|
|
189
|
+
> your `mode_a/b/c.json` config. See [docs/shared-memory.md](../../../docs/shared-memory.md).
|
|
190
|
+
|
|
183
191
|
**Flags that do NOT exist** (fabricated in old skills — never write these):
|
|
184
192
|
`--min-score`, `--format`, `--project`, `--tags` on recall or search.
|
|
185
193
|
|
|
@@ -193,4 +201,4 @@ trusts that what you surface came from the store.
|
|
|
193
201
|
|
|
194
202
|
---
|
|
195
203
|
|
|
196
|
-
*SuperLocalMemory v3.6.
|
|
204
|
+
*SuperLocalMemory v3.6.16 · Qualixar · AGPL-3.0-or-later*
|
|
@@ -103,9 +103,16 @@ remember(
|
|
|
103
103
|
project: str = "", # project scope, e.g. "superlocalmemory"
|
|
104
104
|
importance: int = 5,# 1–10; see scale below
|
|
105
105
|
session_id: str = "",# from session_init; attributes the write to this session
|
|
106
|
+
scope: str = None, # v3.6.15 multi-scope: "personal" (default) | "shared" | "global"
|
|
107
|
+
shared_with: str = "",# comma-separated profile_ids for scope="shared"
|
|
106
108
|
)
|
|
107
109
|
```
|
|
108
110
|
|
|
111
|
+
> **Multi-scope (v3.6.15, opt-in):** leave `scope` unset for `personal` (private to
|
|
112
|
+
> this profile — the default, identical to 3.6.14). `"global"` is visible to every
|
|
113
|
+
> profile on the machine; `"shared"` is visible to the profiles in `shared_with`.
|
|
114
|
+
> See [docs/shared-memory.md](../../../docs/shared-memory.md).
|
|
115
|
+
|
|
109
116
|
**importance scale:**
|
|
110
117
|
- 1–3: Low — passing notes, ideas, soft preferences
|
|
111
118
|
- 4–6: Normal — patterns, conventions, standard decisions (default: 5)
|
|
@@ -159,8 +166,13 @@ Always run `--dry-run` first and review the preview before passing `--yes`.
|
|
|
159
166
|
# Store a fact
|
|
160
167
|
slm remember "<content>" [--tags a,b,c] [--json]
|
|
161
168
|
|
|
162
|
-
#
|
|
169
|
+
# Store a shared/global fact (v3.6.15, opt-in)
|
|
170
|
+
slm remember "<content>" --scope global
|
|
171
|
+
slm remember "<content>" --scope shared --shared-with alice,bob
|
|
172
|
+
|
|
173
|
+
# Flags verified in source (main.py): --tags, --json, --sync, --scope, --shared-with
|
|
163
174
|
# --sync: wait for full enrichment before returning (default is async)
|
|
175
|
+
# --scope: personal (default) | shared | global ; --shared-with: profile ids for shared
|
|
164
176
|
```
|
|
165
177
|
|
|
166
178
|
**Flags that do NOT exist** on `slm remember`:
|
|
@@ -179,4 +191,4 @@ slm remember "<content>" [--tags a,b,c] [--json]
|
|
|
179
191
|
|
|
180
192
|
---
|
|
181
193
|
|
|
182
|
-
*SuperLocalMemory v3.6.
|
|
194
|
+
*SuperLocalMemory v3.6.16 · Qualixar · AGPL-3.0-or-later*
|
package/pyproject.toml
CHANGED
package/scripts/build-plugin.js
CHANGED
|
@@ -30,7 +30,7 @@ import process from 'node:process';
|
|
|
30
30
|
// ---------------------------------------------------------------------------
|
|
31
31
|
// Constants
|
|
32
32
|
// ---------------------------------------------------------------------------
|
|
33
|
-
const VERSION = '3.6.
|
|
33
|
+
const VERSION = '3.6.16';
|
|
34
34
|
const MANIFEST_REL = 'plugin-src/manifest.json';
|
|
35
35
|
const GENERATED_BANNER = `# _GENERATED — DO NOT HAND-EDIT
|
|
36
36
|
|
|
@@ -32,7 +32,7 @@ if "OMP_NUM_THREADS" not in os.environ:
|
|
|
32
32
|
os.environ["OMP_NUM_THREADS"] = "2"
|
|
33
33
|
# ---------------------------------------------------------------------------
|
|
34
34
|
|
|
35
|
-
__version__ = "3.6.
|
|
35
|
+
__version__ = "3.6.16"
|
|
36
36
|
|
|
37
37
|
_REQUIRED_VERSIONS = {
|
|
38
38
|
"sentence_transformers": "5.3.0",
|