superlocalmemory 4.1.22 → 4.1.23

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.
Files changed (172) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/CHANGELOG.md +99 -0
  3. package/README.md +50 -27
  4. package/antigravity-plugin/_GENERATED.md +33 -0
  5. package/antigravity-plugin/agents/slm-governance-advisor.md +78 -0
  6. package/antigravity-plugin/agents/slm-loop-runner.md +82 -0
  7. package/antigravity-plugin/agents/slm-memory-advisor.md +50 -0
  8. package/antigravity-plugin/agents/slm-optimize-advisor.md +44 -0
  9. package/antigravity-plugin/commands/slm-loop.md +33 -0
  10. package/antigravity-plugin/hooks/hooks.json +59 -0
  11. package/antigravity-plugin/hooks.json +42 -0
  12. package/antigravity-plugin/mcp_config.json +14 -0
  13. package/antigravity-plugin/plugin.json +25 -0
  14. package/antigravity-plugin/scripts/antigravity_hook_adapter.py +85 -0
  15. package/antigravity-plugin/skills/slm-bot-memory/SKILL.md +146 -0
  16. package/antigravity-plugin/skills/slm-cache/SKILL.md +147 -0
  17. package/antigravity-plugin/skills/slm-compress/SKILL.md +150 -0
  18. package/antigravity-plugin/skills/slm-getting-started-bot/SKILL.md +146 -0
  19. package/antigravity-plugin/skills/slm-governance/SKILL.md +221 -0
  20. package/antigravity-plugin/skills/slm-graph/SKILL.md +327 -0
  21. package/antigravity-plugin/skills/slm-loop/SKILL.md +153 -0
  22. package/antigravity-plugin/skills/slm-mesh/SKILL.md +287 -0
  23. package/antigravity-plugin/skills/slm-profile/SKILL.md +159 -0
  24. package/antigravity-plugin/skills/slm-recall/SKILL.md +430 -0
  25. package/antigravity-plugin/skills/slm-remember/SKILL.md +370 -0
  26. package/antigravity-plugin/skills/slm-scope/SKILL.md +183 -0
  27. package/antigravity-plugin/skills/slm-session/SKILL.md +291 -0
  28. package/antigravity-plugin/skills/slm-status/SKILL.md +185 -0
  29. package/antigravity-plugin/skills/slm-web-access/SKILL.md +91 -0
  30. package/codex-plugin/.claude-plugin/plugin.json +19 -0
  31. package/codex-plugin/.codex/config.toml +40 -0
  32. package/codex-plugin/.codex-plugin/plugin.json +43 -0
  33. package/codex-plugin/.mcp.json +16 -0
  34. package/codex-plugin/AGENTS.md +161 -0
  35. package/codex-plugin/README.md +205 -0
  36. package/codex-plugin/_GENERATED.md +52 -0
  37. package/codex-plugin/agents/slm-governance-advisor.md +78 -0
  38. package/codex-plugin/agents/slm-loop-runner.md +82 -0
  39. package/codex-plugin/agents/slm-memory-advisor.md +50 -0
  40. package/codex-plugin/agents/slm-optimize-advisor.md +44 -0
  41. package/codex-plugin/commands/slm-loop.md +33 -0
  42. package/codex-plugin/hooks/hooks.json +59 -0
  43. package/codex-plugin/scripts/ensure-venv.bat +108 -0
  44. package/codex-plugin/scripts/ensure-venv.sh +100 -0
  45. package/codex-plugin/scripts/slm-launch +55 -0
  46. package/codex-plugin/scripts/slm-launch.bat +30 -0
  47. package/codex-plugin/skills/slm-bot-memory/SKILL.md +146 -0
  48. package/codex-plugin/skills/slm-cache/SKILL.md +147 -0
  49. package/codex-plugin/skills/slm-compress/SKILL.md +150 -0
  50. package/codex-plugin/skills/slm-getting-started-bot/SKILL.md +146 -0
  51. package/codex-plugin/skills/slm-governance/SKILL.md +221 -0
  52. package/codex-plugin/skills/slm-graph/SKILL.md +327 -0
  53. package/codex-plugin/skills/slm-loop/SKILL.md +153 -0
  54. package/codex-plugin/skills/slm-mesh/SKILL.md +287 -0
  55. package/codex-plugin/skills/slm-profile/SKILL.md +159 -0
  56. package/codex-plugin/skills/slm-recall/SKILL.md +430 -0
  57. package/codex-plugin/skills/slm-remember/SKILL.md +370 -0
  58. package/codex-plugin/skills/slm-scope/SKILL.md +183 -0
  59. package/codex-plugin/skills/slm-session/SKILL.md +291 -0
  60. package/codex-plugin/skills/slm-status/SKILL.md +185 -0
  61. package/codex-plugin/skills/slm-web-access/SKILL.md +91 -0
  62. package/copilot-plugin/.github/agents/slm-governance-advisor.agent.md +80 -0
  63. package/copilot-plugin/.github/agents/slm-loop-runner.agent.md +84 -0
  64. package/copilot-plugin/.github/agents/slm-memory-advisor.agent.md +52 -0
  65. package/copilot-plugin/.github/agents/slm-optimize-advisor.agent.md +46 -0
  66. package/copilot-plugin/.github/copilot-instructions.md +52 -0
  67. package/copilot-plugin/.github/hooks/slm-hooks.json +44 -0
  68. package/copilot-plugin/.github/prompts/slm-bot-memory.prompt.md +147 -0
  69. package/copilot-plugin/.github/prompts/slm-cache.prompt.md +151 -0
  70. package/copilot-plugin/.github/prompts/slm-compress.prompt.md +154 -0
  71. package/copilot-plugin/.github/prompts/slm-getting-started-bot.prompt.md +147 -0
  72. package/copilot-plugin/.github/prompts/slm-governance.prompt.md +224 -0
  73. package/copilot-plugin/.github/prompts/slm-graph.prompt.md +322 -0
  74. package/copilot-plugin/.github/prompts/slm-loop.prompt.md +159 -0
  75. package/copilot-plugin/.github/prompts/slm-mesh.prompt.md +290 -0
  76. package/copilot-plugin/.github/prompts/slm-profile.prompt.md +155 -0
  77. package/copilot-plugin/.github/prompts/slm-recall.prompt.md +434 -0
  78. package/copilot-plugin/.github/prompts/slm-remember.prompt.md +375 -0
  79. package/copilot-plugin/.github/prompts/slm-scope.prompt.md +183 -0
  80. package/copilot-plugin/.github/prompts/slm-session.prompt.md +291 -0
  81. package/copilot-plugin/.github/prompts/slm-status.prompt.md +190 -0
  82. package/copilot-plugin/.github/prompts/slm-web-access.prompt.md +95 -0
  83. package/copilot-plugin/.vscode/mcp.json +11 -0
  84. package/copilot-plugin/README.md +26 -0
  85. package/copilot-plugin/_GENERATED.md +49 -0
  86. package/copilot-plugin/scripts/ensure-venv.bat +122 -0
  87. package/copilot-plugin/scripts/ensure-venv.sh +169 -0
  88. package/copilot-plugin/scripts/slm-launch +207 -0
  89. package/copilot-plugin/scripts/slm-launch.bat +32 -0
  90. package/copilot-plugin/scripts/slm-resolve.sh +128 -0
  91. package/copilot-plugin/scripts/slm-run +76 -0
  92. package/copilot-plugin/scripts/torch-cpu-resolve.sh +86 -0
  93. package/docs/pi-dev-integration.md +0 -2
  94. package/hermes-plugin/README.md +30 -0
  95. package/hermes-plugin/_GENERATED.md +3 -0
  96. package/hermes-plugin/__init__.py +417 -0
  97. package/hermes-plugin/agents/slm-governance-advisor.md +78 -0
  98. package/hermes-plugin/agents/slm-loop-runner.md +82 -0
  99. package/hermes-plugin/agents/slm-memory-advisor.md +50 -0
  100. package/hermes-plugin/agents/slm-optimize-advisor.md +44 -0
  101. package/hermes-plugin/command-inventory.json +7 -0
  102. package/hermes-plugin/plugin.yaml +24 -0
  103. package/hermes-plugin/remote.py +390 -0
  104. package/hermes-plugin/skills/slm-bot-memory/SKILL.md +146 -0
  105. package/hermes-plugin/skills/slm-cache/SKILL.md +147 -0
  106. package/hermes-plugin/skills/slm-compress/SKILL.md +150 -0
  107. package/hermes-plugin/skills/slm-getting-started-bot/SKILL.md +146 -0
  108. package/hermes-plugin/skills/slm-governance/SKILL.md +221 -0
  109. package/hermes-plugin/skills/slm-graph/SKILL.md +327 -0
  110. package/hermes-plugin/skills/slm-loop/SKILL.md +153 -0
  111. package/hermes-plugin/skills/slm-mesh/SKILL.md +287 -0
  112. package/hermes-plugin/skills/slm-profile/SKILL.md +159 -0
  113. package/hermes-plugin/skills/slm-recall/SKILL.md +430 -0
  114. package/hermes-plugin/skills/slm-remember/SKILL.md +370 -0
  115. package/hermes-plugin/skills/slm-scope/SKILL.md +183 -0
  116. package/hermes-plugin/skills/slm-session/SKILL.md +291 -0
  117. package/hermes-plugin/skills/slm-status/SKILL.md +185 -0
  118. package/hermes-plugin/skills/slm-web-access/SKILL.md +91 -0
  119. package/package.json +9 -18
  120. package/plugin/.claude-plugin/plugin.json +1 -1
  121. package/plugin/.cursor-plugin/plugin.json +1 -1
  122. package/plugin/CLAUDE.md +14 -12
  123. package/plugin/agents/slm-governance-advisor.md +14 -16
  124. package/plugin/agents/slm-loop-runner.md +22 -11
  125. package/plugin/agents/slm-memory-advisor.md +14 -14
  126. package/plugin/agents/slm-optimize-advisor.md +5 -5
  127. package/plugin/commands/slm-loop.md +5 -3
  128. package/plugin/cursor-skills/slm-bot-memory/SKILL.md +19 -12
  129. package/plugin/cursor-skills/slm-getting-started-bot/SKILL.md +17 -9
  130. package/plugin/cursor-skills/slm-recall/SKILL.md +151 -54
  131. package/plugin/cursor-skills/slm-remember/SKILL.md +132 -35
  132. package/plugin/cursor-skills/slm-scope/SKILL.md +24 -17
  133. package/plugin/cursor-skills/slm-session/SKILL.md +77 -57
  134. package/plugin/mcp.cursor.json +1 -1
  135. package/plugin/requirements.txt +1 -1
  136. package/plugin/skills/slm-bot-memory/SKILL.md +19 -12
  137. package/plugin/skills/slm-cache/SKILL.md +6 -7
  138. package/plugin/skills/slm-compress/SKILL.md +3 -3
  139. package/plugin/skills/slm-getting-started-bot/SKILL.md +17 -9
  140. package/plugin/skills/slm-governance/SKILL.md +126 -153
  141. package/plugin/skills/slm-graph/SKILL.md +27 -15
  142. package/plugin/skills/slm-loop/SKILL.md +74 -20
  143. package/plugin/skills/slm-mesh/SKILL.md +17 -12
  144. package/plugin/skills/slm-profile/SKILL.md +101 -92
  145. package/plugin/skills/slm-recall/SKILL.md +151 -54
  146. package/plugin/skills/slm-remember/SKILL.md +132 -35
  147. package/plugin/skills/slm-scope/SKILL.md +24 -17
  148. package/plugin/skills/slm-session/SKILL.md +77 -57
  149. package/plugin/skills/slm-status/SKILL.md +54 -35
  150. package/plugin/skills/slm-web-access/SKILL.md +91 -0
  151. package/plugin-src/agents/slm-governance-advisor.md +78 -0
  152. package/plugin-src/agents/slm-loop-runner.md +82 -0
  153. package/plugin-src/agents/slm-memory-advisor.md +14 -14
  154. package/plugin-src/agents/slm-optimize-advisor.md +5 -5
  155. package/plugin-src/commands/slm-loop.md +33 -0
  156. package/plugin-src/rules/AGENTS.md +45 -36
  157. package/plugin-src/rules/CLAUDE.md.fragment +47 -0
  158. package/plugin-src/skills/slm-bot-memory/SKILL.md +19 -12
  159. package/plugin-src/skills/slm-cache/SKILL.md +6 -7
  160. package/plugin-src/skills/slm-compress/SKILL.md +3 -3
  161. package/plugin-src/skills/slm-getting-started-bot/SKILL.md +17 -9
  162. package/plugin-src/skills/slm-governance/SKILL.md +126 -153
  163. package/plugin-src/skills/slm-graph/SKILL.md +27 -15
  164. package/plugin-src/skills/slm-loop/SKILL.md +74 -20
  165. package/plugin-src/skills/slm-mesh/SKILL.md +17 -12
  166. package/plugin-src/skills/slm-profile/SKILL.md +101 -92
  167. package/plugin-src/skills/slm-recall/SKILL.md +151 -54
  168. package/plugin-src/skills/slm-remember/SKILL.md +132 -35
  169. package/plugin-src/skills/slm-scope/SKILL.md +24 -17
  170. package/plugin-src/skills/slm-session/SKILL.md +77 -57
  171. package/plugin-src/skills/slm-status/SKILL.md +54 -35
  172. package/plugin-src/skills/slm-web-access/SKILL.md +91 -0
@@ -31,7 +31,7 @@ slm_cache_set(
31
31
  | `stored` | bool | `True` when the value was written to the cache |
32
32
  | `note` | str \| None | Error detail or `None` on success |
33
33
 
34
- Keys are SHA-256-hashed internally per agent so they do not collide across agents. The raw key string you supply is the only handle you need.
34
+ Keys are SHA-256-hashed internally per agent so they do not collide across agents. The raw key string you supply is the only handle you need. The namespace is the calling agent (`SLM_AGENT_ID`, or the `/mcp/<agent>` path), not the memory profile, so switching profiles does not give you a fresh cache. A caller on another computer gets its own namespace, keyed by its access key, and can never see a local agent's entries.
35
35
 
36
36
  ## Tool: slm_cache_get
37
37
 
@@ -50,7 +50,7 @@ slm_cache_get(
50
50
  | `value` | str \| None | The stored value on a hit; `None` on miss |
51
51
  | `note` | str \| None | Error detail or `None` |
52
52
 
53
- A miss returns `{"ok": true, "hit": false, "value": null, "note": null}`. `ok: false` means something went wrong internally but the miss behaviour is the same — treat both as a cache miss and proceed with the real fetch.
53
+ `value` is the string you stored. A miss returns `{"ok": true, "hit": false, "value": null, "note": null}`. `ok: false` means something went wrong internally but the miss behaviour is the same — treat both as a cache miss and proceed with the real fetch.
54
54
 
55
55
  ## Standard Pattern: Cache-Aside
56
56
 
@@ -123,7 +123,7 @@ Set `ttl_seconds` to match how long the data remains valid. After expiry `slm_ca
123
123
 
124
124
  ## Secondary CLI (fallback when MCP is unavailable)
125
125
 
126
- The `slm cache` subcommand exists but has known pre-existing parse-test failures. Prefer the MCP tools above. If you must use CLI:
126
+ Prefer the MCP tools above. If you must use the command line:
127
127
 
128
128
  ```bash
129
129
  slm cache status [--json] [--tenant default]
@@ -133,16 +133,15 @@ slm cache ttl --set <seconds> [--semantic <seconds>] [--json] [--tenant default]
133
133
  slm cache semantic on|off [--json] [--tenant default]
134
134
  ```
135
135
 
136
- These subcommands control daemon-level cache settings. They do not read or write individual cache entries — use the MCP tools for that.
136
+ These subcommands control daemon-level cache settings and bulk removal. They do not read or write individual entries — use the MCP tools for that. Entries written by `slm_cache_set` carry the tag `mcp-kv`, so `slm cache invalidate --tag mcp-kv` removes them, and `slm cache clear` deletes every entry for the tenant.
137
137
 
138
138
  ---
139
139
 
140
140
  ## Related skills
141
141
 
142
142
  - `slm-compress` — for large content reduction; cache and compress work together
143
- - `slm-status` — view `cache_kv_hits`/`cache_kv_misses` counters from `slm_optimize_stats`
144
- - `slm-profile` — cache entries are namespaced per profile; switching profiles gives a fresh cache namespace
143
+ - `slm-status` — view `cache_kv_hits`/`cache_kv_misses` counters (daemon-persisted totals) from `slm_optimize_stats`
145
144
 
146
145
  ---
147
146
 
148
- SuperLocalMemory v4.1.22 · Qualixar · AGPL-3.0-or-later
147
+ SuperLocalMemory v4.1.23 · Qualixar · AGPL-3.0-or-later
@@ -61,7 +61,7 @@ slm_retrieve(ccr_id: str) -> dict
61
61
 
62
62
  ### CCR security rule
63
63
 
64
- `ccr_id` values are **unguessable session tokens**. Treat them like short-lived credentials:
64
+ `ccr_id` values are **unguessable session tokens**, and the stored original can be read back only by the same agent (or, for a remote caller, the same access key) that compressed it. Treat them like short-lived credentials:
65
65
  - Never log them.
66
66
  - Never share them across agents.
67
67
  - Never pass them as tool arguments to any tool other than `slm_retrieve`.
@@ -121,7 +121,7 @@ if ccr_id:
121
121
 
122
122
  ## Secondary CLI (fallback when MCP is unavailable)
123
123
 
124
- The `slm compress` subcommand exists but has known pre-existing parse-test failures. Prefer the MCP tools above. If you must use CLI:
124
+ Prefer the MCP tools above. If you must use the command line:
125
125
 
126
126
  ```bash
127
127
  slm compress status [--json]
@@ -147,4 +147,4 @@ Content over 1 MB (1 000 000 bytes UTF-8) is processed but `reversible` is force
147
147
 
148
148
  ---
149
149
 
150
- SuperLocalMemory v4.1.22 · Qualixar · AGPL-3.0-or-later
150
+ SuperLocalMemory v4.1.23 · Qualixar · AGPL-3.0-or-later
@@ -55,10 +55,17 @@ tiers it will not use. The 18 tools:
55
55
  `list_corrections`, `get_memory_summary`, `switch_profile`.
56
56
 
57
57
  If you are looking at another skill that mentions a tool NOT in this list
58
- (`build_code_graph`, `mesh_send`, anything governance/compliance-shaped), that
59
- skill describes a different, larger profile (`code`, `full`, `power`) — it is
60
- accurate for Claude Code or Codex installs, not for this one, unless someone
61
- has deliberately reconfigured `SLM_MCP_PROFILE`.
58
+ (`build_code_graph`, `mesh_send`, `report_outcome`, `delete_memory`,
59
+ `set_memory_kind`, anything governance/compliance-shaped), that skill describes
60
+ a different, larger profile (`code`, `full`, `power`) — it is accurate for Claude
61
+ Code or Codex installs, not for this one, unless someone has deliberately
62
+ reconfigured `SLM_MCP_PROFILE`. Skip those steps rather than reporting an error.
63
+
64
+ Two things the core set does cover that other skills explain: `remember` takes
65
+ `kind` and `replaces` (a newer version of a memory should be saved with
66
+ `replaces=<fact_id>`; see `slm-remember`), and `list_corrections` /
67
+ `review_correction` handle the review of an `update_memory` edit. A bot with
68
+ no one to review should prefer `replaces` over `update_memory`.
62
69
 
63
70
  ---
64
71
 
@@ -91,10 +98,11 @@ has deliberately reconfigured `SLM_MCP_PROFILE`.
91
98
  The first `remember`/`recall` on a fresh `SLM_DATA_DIR` has to: resolve
92
99
  `uvx`'s pinned `superlocalmemory` package, start the daemon, and warm an
93
100
  embedding model (and, unless this is the lite profile, a reranker model) —
94
- tens of seconds, not milliseconds. A `recall` that comes back marked
95
- `"incomplete"` or with a channel reporting not-ready in that window is not a
96
- bug; it means the embedding worker had not finished loading yet. Retry once
97
- rather than assuming something is broken.
101
+ tens of seconds, not milliseconds. A `recall` whose `channel_status` shows
102
+ `warming` (or `no_embedding`) for some channels in that window is not a bug; it
103
+ means the embedding model had not finished loading yet, and the answer is
104
+ incomplete rather than empty. Retry once rather than assuming something is
105
+ broken.
98
106
 
99
107
  ---
100
108
 
@@ -135,4 +143,4 @@ quality on a shared box.
135
143
 
136
144
  ---
137
145
 
138
- *SuperLocalMemory v4.1.22 · Qualixar · AGPL-3.0-or-later*
146
+ *SuperLocalMemory v4.1.23 · Qualixar · AGPL-3.0-or-later*
@@ -1,236 +1,208 @@
1
1
  ---
2
2
  name: slm-governance
3
- description: Enterprise compliance and governed workspace behavior for SuperLocalMemory. Covers role-based access (admin/member/viewer), retention policies, audit trail, GDPR data export/erase, and how agents must behave when operating under workspace governance. Requires power MCP profile for audit/retention tools. Agents must never bypass governance controls.
3
+ description: Governed-workspace behavior for SuperLocalMemory. Covers roles (admin/member/viewer) and company mode, retention and lifecycle settings, the audit trail, GDPR export and erasure, and how agents must behave when operating under workspace governance. The audit and retention tools need the power MCP profile. Agents must never bypass governance controls.
4
4
  when_to_use: |
5
5
  - "What can I do in this workspace?" (role check)
6
- - "Set a 90-day retention policy on this memory"
6
+ - "Move cold memories to archive after 60 days"
7
7
  - "Show the audit trail for recent memory operations"
8
8
  - "Export my data for GDPR compliance"
9
- - "Delete all memories for user X (right to erasure)"
10
- - "Configure require-login for this workspace"
9
+ - "Delete all memories about user X (right to erasure)"
10
+ - "Turn on require-login for this workspace"
11
11
  - Enterprise deployment with multi-team shared SLM
12
12
  - Compliance, audit, or data governance task
13
- allowed-tools: audit_trail, set_retention_policy, get_retention_stats, get_lifecycle_status, recall, search, remember, Bash
13
+ allowed-tools: audit_trail, set_retention_policy, get_retention_stats, get_lifecycle_status, compact_memories, consistency_check, recall, search, remember, Bash
14
14
  ---
15
15
 
16
- # slm-governance — Enterprise Compliance and Governed Workspace Behavior
16
+ # slm-governance — Governed Workspace Behavior
17
17
 
18
- SuperLocalMemory supports enterprise deployments with role-based access control,
19
- retention policies, audit logging, and GDPR compliance tooling. This skill
20
- documents how agents must behave when operating in a governed workspace and how
21
- to use the governance MCP tools (available in the `power` profile).
18
+ SuperLocalMemory can run with named users and roles per workspace (company
19
+ mode), keeps a compliance audit trail, applies a retention lifecycle, and ships
20
+ GDPR export and erasure commands. This skill documents how an agent must behave
21
+ in a governed workspace and what the governance tools really do. The MCP audit
22
+ and retention tools are in the `power` tool set (see `slm-profile`).
22
23
 
23
24
  ---
24
25
 
25
26
  ## Role model
26
27
 
27
- Governed workspaces have three roles:
28
+ By default SLM is single-user: whoever runs it is the owner and nothing asks for
29
+ a login. Company mode adds named users, each with one role per workspace
30
+ (profile). A role in one workspace grants nothing in another.
28
31
 
29
- | Role | Read | Write personal | Write shared/global | Admin operations |
30
- |------|------|---------------|---------------------|-----------------|
31
- | `viewer` | Yes | No | No | No |
32
- | `member` | Yes | Yes | Yes (within access list) | No |
33
- | `admin` | Yes | Yes | Yes (unrestricted) | Yes |
32
+ | Role | Read | Write | Share (`shared`/`global` writes) | Delete | Manage users and settings |
33
+ |------|------|-------|-------|--------|-----------------|
34
+ | `viewer` | Yes | No | No | No | No |
35
+ | `member` | Yes | Yes | Yes | No | No |
36
+ | `admin` | Yes | Yes | Yes | Yes | Yes |
34
37
 
35
38
  **Agent behavior by role:**
36
39
 
37
- - **Viewer**: Only call `recall`, `search`, `fetch`, `list_recent`. Never call
38
- `remember`, `update_memory`, `forget`, or any write tool. If a write is
39
- attempted, fail gracefully: "This workspace is read-only in viewer mode."
40
- - **Member**: May write personal facts and shared facts with permitted profiles.
41
- May NOT write `scope="global"` facts without explicit admin authorization.
42
- May NOT call `set_retention_policy`, `audit_trail`, or `compact_memories`.
43
- - **Admin**: Full access including governance tools in the `power` profile.
40
+ - **Viewer**: Only call `recall`, `search`, `fetch`, `list_recent` and other
41
+ reads. Never call `remember`, `update_memory`, `delete_memory` or any write
42
+ tool. If a write is refused, say so: "This workspace is read-only for my role."
43
+ - **Member**: May write memories, including `scope="shared"` and `scope="global"`
44
+ when the user explicitly asks for them. May not delete memories or change
45
+ users, roles or settings.
46
+ - **Admin**: Everything above plus deletion and user administration.
44
47
 
45
- An agent operating in a governed workspace must check its role before any write
46
- operation. Role information is visible in workspace configuration or via
47
- `slm status --json` (the `role` field, if present).
48
+ No MCP tool or `slm` command reports your role (only a signed-in dashboard session can ask the daemon, at `GET /api/rbac/whoami`). Do not guess it: attempt
49
+ what the user asked and treat a permission refusal as final. Setting up users,
50
+ roles and "Require login" is done in the dashboard under **Settings → Access**;
51
+ there is no `slm user` or `slm role` command. The machine operator keeps user
52
+ administration in every mode so a mistake cannot lock everyone out.
48
53
 
49
54
  ---
50
55
 
51
- ## Retention policies
56
+ ## require-login
52
57
 
53
- Retention policies control how long facts are stored before they become eligible
54
- for decay. Available in the `power` MCP profile.
58
+ When login is required, every operation on memories needs a signed-in user,
59
+ including the connection your assistant uses. SLM handles this at the daemon
60
+ level; agents do not pass credentials in tool calls. If a tool call returns an
61
+ authentication or permission error, you must:
55
62
 
56
- ### Set a retention policy
63
+ 1. Stop the current operation immediately.
64
+ 2. Report the requirement to the user.
65
+ 3. Never cache, retry, or work around the block.
57
66
 
58
- ```
59
- set_retention_policy(
60
- profile_id: str = "", # "" = active profile
61
- days: int = 90, # facts older than this become decay-eligible
62
- zone: str = "default", # retention zone name
63
- )
64
- ```
67
+ In this mode, `include_global=True` and `include_shared=True` on `recall` are
68
+ quietly turned off while the recall policy forbids cross-profile reads (the
69
+ default), so an opt-in recall can come back with only personal facts. Do not try
70
+ to work around it. See `slm-scope`.
65
71
 
66
- Retention zones let you apply different policies to different fact categories:
72
+ ---
67
73
 
68
- ```
69
- # Standard facts: 90-day retention
70
- set_retention_policy(profile_id="", days=90, zone="default")
74
+ ## Retention and lifecycle
71
75
 
72
- # Security findings: 365-day retention (compliance requirement)
73
- set_retention_policy(profile_id="", days=365, zone="security")
74
- ```
76
+ Every memory moves through lifecycle states as it goes unused: active, warm, cold,
77
+ archived. Two tools set and inspect that, and a third runs the forgetting cycle.
78
+ They need the `power` tool set.
79
+
80
+ ### Set the thresholds
75
81
 
76
- Tag your facts with the zone name to route them to the right policy:
77
82
  ```
78
- remember(content="Critical auth bypass in v2.1", tags="security,cve,finding", ...)
83
+ set_retention_policy(
84
+ cold_after_days: int = 30, # days of inactivity before a memory goes cold
85
+ archive_after_days: int = 90, # days before it is archived
86
+ )
79
87
  ```
80
88
 
81
- ### Check retention statistics
89
+ It sets two thresholds and returns them. There is no `profile_id` argument and
90
+ there are no named retention zones or per-tag policies; tagging a memory does not
91
+ route it to a different policy.
92
+
93
+ ### Look at the state
82
94
 
83
95
  ```
84
- get_retention_stats()
96
+ get_retention_stats(profile_id="")
97
+ get_lifecycle_status(limit=50, profile_id="")
85
98
  ```
86
99
 
87
- Returns zone distribution, average fact age, and decay-eligible counts. Use this
88
- to verify policies are working as expected.
100
+ `get_retention_stats` reports, from the retention table, the count and average
101
+ retention score per Ebbinghaus zone (`active`, `warm`, `cold`, `archive`,
102
+ `forgotten`) and the totals. `get_lifecycle_status` counts the active, warm, cold
103
+ and archived state of up to `limit` memories and returns up to ten short
104
+ samples of each. Neither says when the next cycle runs.
89
105
 
90
- ### Check lifecycle status
106
+ ### Apply it
91
107
 
92
108
  ```
93
- get_lifecycle_status()
109
+ forget(dry_run=True) # preview the decay cycle for the active profile
110
+ compact_memories(dry_run=True) # preview lifecycle-state transitions
94
111
  ```
95
112
 
96
- Reports the state of the retention and decay subsystem — whether decay cycles are
97
- running, when the next cycle runs, and any backlog.
113
+ The MCP `forget` tool is not a delete: it recomputes retention scores and moves
114
+ memories between zones. `compact_memories` moves memories whose lifecycle state
115
+ has become due (for example cold to archived); it does not merge duplicates. Both
116
+ default to a dry run. Run the preview first, show it to the user, and only then
117
+ pass `dry_run=False`. Do not run either without the user's say-so.
98
118
 
99
119
  ---
100
120
 
101
121
  ## Audit trail
102
122
 
103
- `audit_trail` is available in the `power` profile. It returns a structured log of
104
- recent memory operations (writes, reads, profile switches, policy changes).
105
-
106
123
  ```
107
- audit_trail(
108
- limit: int = 50, # number of entries to return
109
- operation: str = "", # filter by operation type (e.g. "remember", "forget")
110
- profile_id: str = "", # filter by profile; "" = active profile
111
- )
124
+ audit_trail(limit: int = 50)
112
125
  ```
113
126
 
114
- Use this for:
115
- - Compliance reviews ("what data was written in the last 30 days?")
116
- - Investigating unexpected memory changes
117
- - Generating audit reports for data controllers
127
+ Returns the newest `limit` rows of the compliance audit for the active profile,
128
+ as `{"success", "entries", "count"}`. Each entry has `audit_id`, `profile_id`,
129
+ `action`, `target_type`, `target_id`, `details` and `timestamp`. There are no
130
+ filter arguments. Entries are compliance actions (store, retrieve, delete, export
131
+ and the like).
118
132
 
119
- The audit trail covers MCP and CLI operations. It does not record the content of
120
- facts by default — only operation type, timestamp, agent ID, and fact ID.
133
+ Use it for compliance reviews, for investigating an unexpected change, and for
134
+ audit reports to a data controller.
121
135
 
122
136
  ---
123
137
 
124
- ## GDPR compliance
125
-
126
- ### Data export
127
-
128
- SLM does not have a dedicated MCP export tool. For GDPR data subject access
129
- requests, use the CLI:
138
+ ## GDPR
130
139
 
131
140
  ```bash
132
- # Export all memories in a profile to JSON
133
- slm status --json # confirm active profile
134
- slm list --limit 9999 --json > export.json
141
+ slm gdpr status [--profile P] [--json] # posture: receipts, audit counts, known gaps; read-only
142
+ slm gdpr export --profile P [--output FILE] [--json] # Art. 15/20 access and portability
143
+ slm gdpr erase --profile P --dry-run [--json] # preview an erasure
144
+ slm gdpr erase --profile P --yes [--json] # Art. 17 erasure, IRREVERSIBLE
145
+ slm gdpr verify --receipt-id ID [--profile P] # check an erasure receipt (exit 0 ok, 1 tampered, 2 not found)
135
146
  ```
136
147
 
137
- For a complete export including entity graph data, run:
138
- ```bash
139
- slm status --json
140
- ```
141
-
142
- Contact your workspace admin to arrange a full database-level export if the CLI
143
- output is insufficient for compliance purposes.
144
-
145
- ### Right to erasure
148
+ `slm gdpr erase` erases a **profile**. It refuses to run without both `--profile`
149
+ and `--yes`, and without them it only previews. It is the only irreversible
150
+ operation here, so confirm the subject, the profile and the authority to erase
151
+ with the user before running it. `slm gdpr status` lists the known gaps (for
152
+ example backups and the code graph) rather than claiming completeness.
146
153
 
147
- To erase all memories for a subject or project:
154
+ To remove individual memories rather than a whole profile, use the deletion
155
+ commands from `slm-remember`:
148
156
 
149
157
  ```bash
150
- # Step 1: preview what will be deleted (ALWAYS do this first)
151
- slm forget "<subject or project name>" --dry-run --json
152
-
153
- # Step 2: review the preview, then execute
158
+ slm forget "<subject or project name>" --dry-run --json # ALWAYS first
154
159
  slm forget "<subject or project name>" --yes --json
155
- ```
156
-
157
- For targeted deletion by fact ID:
158
- ```bash
159
160
  slm delete <fact_id> --yes --json
160
161
  ```
161
162
 
162
- For data reconstruction prevention: after erasure, confirm the fact is gone by
163
- running `slm recall "<content>"`. A successful erasure returns no results. Never
164
- attempt to re-derive erased content from other stored facts.
165
-
166
- ---
167
-
168
- ## require-login
169
-
170
- When `require_login` is enabled in workspace configuration, agents must
171
- authenticate before any memory operation. SLM handles authentication at the
172
- daemon level — agents do not need to pass credentials in tool calls. If an
173
- agent receives an authentication error from any MCP tool, it must:
174
-
175
- 1. Stop the current operation immediately.
176
- 2. Report the authentication requirement to the user.
177
- 3. Never cache, retry, or work around the authentication block.
163
+ Memories that belong to a reviewed correction cannot be deleted this way; the
164
+ refusal names the case. After an erasure, confirm with `slm recall "<content>"`
165
+ that nothing comes back, and never try to re-derive erased content from other
166
+ stored facts.
178
167
 
179
168
  ---
180
169
 
181
170
  ## Scope enforcement in governed workspaces
182
171
 
183
- In a governed workspace, scope restrictions are enforced server-side:
184
- - **Viewers** cannot write any fact regardless of `scope` parameter.
185
- - **Members** cannot write `scope="global"` unless their access list includes
186
- the global scope — attempts return a permission error.
187
- - **Admins** can write any scope.
188
-
189
- Agents must not attempt to work around scope restrictions by splitting a global
190
- fact into multiple shared facts to accumulate equivalent visibility.
191
-
192
- ---
193
-
194
- ## Compact memories (admin-only)
195
-
196
- `compact_memories` deduplicates and consolidates stored memories. This is an
197
- admin operation — it can change fact IDs and remove content.
198
-
199
- ```
200
- compact_memories(
201
- profile_id: str = "", # "" = active profile
202
- dry_run: bool = True, # ALWAYS true first — inspect before running
203
- )
204
- ```
205
-
206
- Always run with `dry_run=True` first and review the impact report. Never run
207
- compaction without admin authorization.
172
+ - **Viewers** cannot write anything, whatever the `scope` argument.
173
+ - **Members and admins** can write `shared` and `global` facts; writing either
174
+ scope needs the share permission, which both roles hold.
175
+ - Agents must not split a `global` fact into several `shared` facts, or otherwise
176
+ accumulate visibility the user did not ask for.
208
177
 
209
178
  ---
210
179
 
211
- ## Consistency check (admin-only)
180
+ ## Integrity checks
212
181
 
213
182
  ```
214
- consistency_check(profile_id: str = "")
183
+ consistency_check(limit: int = 100)
215
184
  ```
216
185
 
217
- Verifies data integrity of the memory store — checks for orphaned entities,
218
- broken references, and index-database mismatches. Use after migrations or
219
- unexpected shutdowns. Returns a structured report.
186
+ Runs a sheaf-consistency check over up to `limit` memories and returns pairs of
187
+ facts that contradict each other, with a severity (`fact_a`, `fact_b`,
188
+ `severity`, `content_a`), plus `facts_checked`, `facts_errored` and
189
+ `total_contradictions`. If the checker is disabled it says so in `note`. For the
190
+ health of the store itself (orphan rows, erased words left behind, unfinished
191
+ deletes) use `slm db integrity` and `slm db repair`; see `slm-status`.
220
192
 
221
193
  ---
222
194
 
223
195
  ## Agent checklist for governed workspaces
224
196
 
225
197
  Before each write operation:
226
- - [ ] Confirm my role allows writes (viewer → skip; member/admin → proceed)
227
- - [ ] Confirm scope is appropriate for my role (member → no global)
228
- - [ ] Set correct tags including zone name if retention policy applies
229
- - [ ] Pass `session_id` for full audit attribution
230
-
231
- Before running any destructive operation (`forget`, `compact_memories`):
232
- - [ ] Admin authorization confirmed
233
- - [ ] Ran with `dry_run=True` and reviewed output
198
+ - [ ] The user asked for it, and a refusal from the workspace is respected
199
+ - [ ] Scope is `personal` unless the user explicitly asked to share
200
+ - [ ] Pass `session_id` so the write is attributed
201
+
202
+ Before running any destructive or state-changing operation (`forget`,
203
+ `compact_memories`, `slm forget --yes`, `slm gdpr erase --yes`):
204
+ - [ ] The user authorized it in this conversation
205
+ - [ ] Ran the dry run or preview and showed it to the user
234
206
  - [ ] GDPR: confirmed the subject or controller authorized the erasure
235
207
 
236
208
  ---
@@ -238,11 +210,12 @@ Before running any destructive operation (`forget`, `compact_memories`):
238
210
  ## Related skills
239
211
 
240
212
  - `slm-scope` — scope model details (personal/shared/global)
241
- - `slm-profile` — workspace isolation and profile switching
242
- - `slm-remember` — fact storage reference (includes scope parameters)
213
+ - `slm-profile` — memory profiles and tool sets
214
+ - `slm-remember` — fact storage, corrections and deletion
243
215
  - `slm-recall` — retrieval reference (includes scope read flags)
244
- - `slm-mesh` — mesh tools (full/power profiles)
216
+ - `slm-mesh` — mesh tools
217
+ - To use this memory from a web assistant or another computer, see the slm-web-access skill.
245
218
 
246
219
  ---
247
220
 
248
- *SuperLocalMemory v4.1.22 · Qualixar · AGPL-3.0-or-later*
221
+ *SuperLocalMemory v4.1.23 · Qualixar · AGPL-3.0-or-later*
@@ -20,7 +20,7 @@ allowed-tools: build_code_graph, query_graph, get_blast_radius, semantic_search_
20
20
 
21
21
  # slm-graph — Code Intelligence Skill
22
22
 
23
- Index any repo as a code knowledge graph and answer structural questions about it: callers, callees, impact radius, semantic search, and review context. Requires the `code` MCP profile (set `SLM_MCP_PROFILE=code` in your plugin `.mcp.json`).
23
+ Index any repo as a code knowledge graph and answer structural questions about it: callers, callees, impact radius, semantic search, and review context. These tools are only registered in the `code` MCP tool set (or with `SLM_MCP_ALL_TOOLS=1`); see "Tool set requirement" below.
24
24
 
25
25
  **Prerequisite rule:** every tool except `build_code_graph` self-guards — if the graph is not built it returns `{"success": false, "error": "Code graph not built. Run build_code_graph first."}`. Always index first.
26
26
 
@@ -40,7 +40,7 @@ build_code_graph(
40
40
 
41
41
  Parses all supported source files, extracts functions/classes/imports, builds the call graph, detects execution flows, and identifies code communities. Replaces any previous index for the same repo.
42
42
 
43
- - `repo_path` — absolute path to the repository root. Must exist.
43
+ - `repo_path` — absolute path to the repository root. Must exist and sit under your home directory; a path outside it is refused with `Invalid repo_path`.
44
44
  - `languages` — comma-separated language filter, e.g. `"python,typescript"`. Empty string = index all supported languages.
45
45
  - `exclude_patterns` — comma-separated glob patterns to exclude, e.g. `"**/node_modules/**,**/.venv/**"`. Empty = no exclusions.
46
46
 
@@ -204,14 +204,14 @@ detect_changes(
204
204
 
205
205
  Runs `git diff` against `base`, maps the changed hunks to graph nodes, and returns a risk-scored list of changed functions, test gaps, and review priorities. Requires the repo to be a git repository.
206
206
 
207
- - `base` — git ref to diff against. Default `"HEAD~1"` (one commit back). Any valid git ref works: `"main"`, `"v3.6.13"`, a commit SHA, etc.
207
+ - `base` — git ref to diff against. Default `"HEAD~1"` (one commit back). Any valid git ref works: `"main"`, `"v1.4.0"`, a commit SHA, etc.
208
208
 
209
209
  ```
210
210
  # What changed in the last commit?
211
211
  detect_changes()
212
212
 
213
213
  # What changed since the release branch?
214
- detect_changes(base="release/v3.6.13")
214
+ detect_changes(base="release/1.4")
215
215
 
216
216
  # What changed relative to main?
217
217
  detect_changes(base="main")
@@ -277,16 +277,22 @@ All tools return `{"success": false, "error": "<message>"}` on failure — they
277
277
  | `Repository path does not exist: <path>` | Bad `repo_path` in build | Pass an absolute path that exists |
278
278
  | `Git not available or not a git repository: ...` | `detect_changes` needs git | Only works in git repos with git installed |
279
279
  | `Invalid pattern '...'` | Wrong `pattern` in `query_graph` | Use one of the 8 valid pattern strings |
280
- | `No node found matching '<target>'` | Target not in index | Rebuild or check the qualified name via `semantic_search_code` |
280
+ | `No node found matching '<target>'` | Target not in index. Returned as `success: true` with an empty `results` and this `message`, not as an error | Rebuild or check the qualified name via `semantic_search_code` |
281
+ | `Invalid repo_path: ...` | `repo_path` is outside your home directory | Index a repository under your home directory |
281
282
 
282
283
  If `build_code_graph` returns `files_parsed: 0`, no supported source files were found — check `repo_path` and `exclude_patterns`.
283
284
 
284
285
  ---
285
286
 
286
- ## Profile Requirement
287
+ ## Tool set requirement
287
288
 
288
- This skill uses graph tools that are only active under the `code` MCP profile
289
- (or `full` / `power`). Your plugin `.mcp.json` must include:
289
+ The six tools above are registered only when the MCP server runs the `code` tool
290
+ set, or with `SLM_MCP_ALL_TOOLS=1` / `SLM_MCP_PROFILE=whole`, or when
291
+ `SLM_MCP_TOOLS` names them. They are **not** in `core`, `full`, `power` or the
292
+ no-profile default that the Claude Code and Codex plugins use, so with those
293
+ settings the tools simply do not exist and a call fails as an unknown tool. The
294
+ tool set is read when the server starts: set it in the host's MCP config and
295
+ restart the host.
290
296
 
291
297
  ```json
292
298
  "env": {
@@ -295,21 +301,27 @@ This skill uses graph tools that are only active under the `code` MCP profile
295
301
  }
296
302
  ```
297
303
 
298
- Without this, the six graph tools are not registered and will appear as unknown
299
- tools. Run `slm status` to confirm the active profile.
304
+ `switch_profile` does not change the tool set; it changes the active memory
305
+ profile. See `slm-profile`. The `code` set leaves out the mesh and several
306
+ administration tools, so ask the user before changing their tool set.
300
307
 
301
- **Switching profiles at runtime (v3.8.0+):** Use `switch_profile("code")` via
302
- MCP to activate the code profile in a session that started with a different
303
- profile. See `slm-profile` for the full profile switching workflow.
308
+ With `SLM_MCP_ALL_TOOLS=1` more graph tools appear: `update_code_graph` (refresh
309
+ for `changed_files` without a full rebuild), `list_graph_stats`,
310
+ `get_architecture_overview`, `list_communities`, `get_community`, `list_flows`,
311
+ `get_flow`, `get_affected_flows`, `find_large_functions`, `enrich_blast_radius`,
312
+ `refactor_preview`, and the code-to-memory tools `link_memory_to_code`,
313
+ `code_memory_search`, `code_entity_history` and `code_stale_check`. The memory
314
+ links need `"bridge_enabled": true` in `code_graph_config.json` and a rebuild.
315
+ All are host-only: a remote caller cannot use them.
304
316
 
305
317
  ---
306
318
 
307
319
  ## Related skills
308
320
 
309
- - `slm-profile` — workspace isolation and profile switching (required for code tools)
321
+ - `slm-profile` — memory profiles and the tool sets that decide which tools exist
310
322
  - `slm-recall` — retrieve architectural decisions before graph queries
311
323
  - `slm-status` — confirm the active profile and graph index health
312
324
 
313
325
  ---
314
326
 
315
- SuperLocalMemory v4.1.22 · Qualixar · AGPL-3.0-or-later
327
+ SuperLocalMemory v4.1.23 · Qualixar · AGPL-3.0-or-later