superlocalmemory 4.2.5 → 4.2.6

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 (202) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/.cursor-plugin/marketplace.json +29 -0
  3. package/CHANGELOG.md +112 -0
  4. package/README.md +48 -7
  5. package/antigravity-plugin/_GENERATED.md +1 -1
  6. package/antigravity-plugin/agents/slm-governance-advisor.md +1 -1
  7. package/antigravity-plugin/agents/slm-loop-runner.md +1 -1
  8. package/antigravity-plugin/agents/slm-memory-advisor.md +1 -1
  9. package/antigravity-plugin/agents/slm-optimize-advisor.md +1 -1
  10. package/antigravity-plugin/mcp_config.json +1 -2
  11. package/antigravity-plugin/plugin.json +1 -1
  12. package/antigravity-plugin/skills/slm-bot-memory/SKILL.md +1 -1
  13. package/antigravity-plugin/skills/slm-cache/SKILL.md +1 -1
  14. package/antigravity-plugin/skills/slm-compress/SKILL.md +1 -1
  15. package/antigravity-plugin/skills/slm-getting-started-bot/SKILL.md +1 -1
  16. package/antigravity-plugin/skills/slm-governance/SKILL.md +4 -2
  17. package/antigravity-plugin/skills/slm-graph/SKILL.md +7 -13
  18. package/antigravity-plugin/skills/slm-loop/SKILL.md +1 -1
  19. package/antigravity-plugin/skills/slm-media/SKILL.md +1 -1
  20. package/antigravity-plugin/skills/slm-mesh/SKILL.md +1 -1
  21. package/antigravity-plugin/skills/slm-profile/SKILL.md +21 -18
  22. package/antigravity-plugin/skills/slm-recall/SKILL.md +1 -1
  23. package/antigravity-plugin/skills/slm-remember/SKILL.md +1 -1
  24. package/antigravity-plugin/skills/slm-scope/SKILL.md +1 -1
  25. package/antigravity-plugin/skills/slm-session/SKILL.md +1 -1
  26. package/antigravity-plugin/skills/slm-status/SKILL.md +1 -1
  27. package/codex-plugin/.claude-plugin/plugin.json +1 -1
  28. package/codex-plugin/.codex-plugin/plugin.json +7 -3
  29. package/codex-plugin/AGENTS.md +1 -1
  30. package/codex-plugin/README.md +2 -2
  31. package/codex-plugin/_GENERATED.md +2 -1
  32. package/codex-plugin/agents/slm-governance-advisor.md +1 -1
  33. package/codex-plugin/agents/slm-loop-runner.md +1 -1
  34. package/codex-plugin/agents/slm-memory-advisor.md +1 -1
  35. package/codex-plugin/agents/slm-optimize-advisor.md +1 -1
  36. package/codex-plugin/skills/slm-bot-memory/SKILL.md +1 -1
  37. package/codex-plugin/skills/slm-cache/SKILL.md +1 -1
  38. package/codex-plugin/skills/slm-compress/SKILL.md +1 -1
  39. package/codex-plugin/skills/slm-getting-started-bot/SKILL.md +1 -1
  40. package/codex-plugin/skills/slm-governance/SKILL.md +4 -2
  41. package/codex-plugin/skills/slm-graph/SKILL.md +7 -13
  42. package/codex-plugin/skills/slm-loop/SKILL.md +1 -1
  43. package/codex-plugin/skills/slm-media/SKILL.md +1 -1
  44. package/codex-plugin/skills/slm-mesh/SKILL.md +1 -1
  45. package/codex-plugin/skills/slm-profile/SKILL.md +21 -18
  46. package/codex-plugin/skills/slm-recall/SKILL.md +1 -1
  47. package/codex-plugin/skills/slm-remember/SKILL.md +1 -1
  48. package/codex-plugin/skills/slm-scope/SKILL.md +1 -1
  49. package/codex-plugin/skills/slm-session/SKILL.md +1 -1
  50. package/codex-plugin/skills/slm-status/SKILL.md +1 -1
  51. package/copilot-plugin/.github/agents/slm-governance-advisor.agent.md +2 -2
  52. package/copilot-plugin/.github/agents/slm-loop-runner.agent.md +2 -2
  53. package/copilot-plugin/.github/agents/slm-memory-advisor.agent.md +2 -2
  54. package/copilot-plugin/.github/agents/slm-optimize-advisor.agent.md +2 -2
  55. package/copilot-plugin/.github/copilot-instructions.md +4 -4
  56. package/copilot-plugin/.github/prompts/slm-bot-memory.prompt.md +2 -2
  57. package/copilot-plugin/.github/prompts/slm-cache.prompt.md +2 -2
  58. package/copilot-plugin/.github/prompts/slm-compress.prompt.md +2 -2
  59. package/copilot-plugin/.github/prompts/slm-getting-started-bot.prompt.md +2 -2
  60. package/copilot-plugin/.github/prompts/slm-governance.prompt.md +5 -3
  61. package/copilot-plugin/.github/prompts/slm-graph.prompt.md +8 -14
  62. package/copilot-plugin/.github/prompts/slm-loop.prompt.md +2 -2
  63. package/copilot-plugin/.github/prompts/slm-media.prompt.md +2 -2
  64. package/copilot-plugin/.github/prompts/slm-mesh.prompt.md +2 -2
  65. package/copilot-plugin/.github/prompts/slm-profile.prompt.md +22 -19
  66. package/copilot-plugin/.github/prompts/slm-recall.prompt.md +2 -2
  67. package/copilot-plugin/.github/prompts/slm-remember.prompt.md +2 -2
  68. package/copilot-plugin/.github/prompts/slm-scope.prompt.md +2 -2
  69. package/copilot-plugin/.github/prompts/slm-session.prompt.md +2 -2
  70. package/copilot-plugin/.github/prompts/slm-status.prompt.md +2 -2
  71. package/copilot-plugin/.github/prompts/slm-web-access.prompt.md +1 -1
  72. package/copilot-plugin/README.md +2 -2
  73. package/copilot-plugin/_GENERATED.md +3 -3
  74. package/{plugin → cursor-plugin}/.cursor-plugin/plugin.json +3 -3
  75. package/cursor-plugin/LICENSE +24 -0
  76. package/cursor-plugin/assets/logo.svg +36 -0
  77. package/{plugin → cursor-plugin}/cursor-skills/slm-bot-memory/SKILL.md +1 -1
  78. package/cursor-plugin/cursor-skills/slm-cache/SKILL.md +147 -0
  79. package/cursor-plugin/cursor-skills/slm-compress/SKILL.md +150 -0
  80. package/{plugin → cursor-plugin}/cursor-skills/slm-getting-started-bot/SKILL.md +1 -1
  81. package/cursor-plugin/cursor-skills/slm-governance/SKILL.md +279 -0
  82. package/cursor-plugin/cursor-skills/slm-graph/SKILL.md +321 -0
  83. package/cursor-plugin/cursor-skills/slm-loop/SKILL.md +174 -0
  84. package/cursor-plugin/cursor-skills/slm-media/SKILL.md +340 -0
  85. package/cursor-plugin/cursor-skills/slm-mesh/SKILL.md +389 -0
  86. package/cursor-plugin/cursor-skills/slm-profile/SKILL.md +167 -0
  87. package/{plugin → cursor-plugin}/cursor-skills/slm-recall/SKILL.md +1 -1
  88. package/{plugin → cursor-plugin}/cursor-skills/slm-remember/SKILL.md +1 -1
  89. package/{plugin → cursor-plugin}/cursor-skills/slm-scope/SKILL.md +1 -1
  90. package/{plugin → cursor-plugin}/cursor-skills/slm-session/SKILL.md +1 -1
  91. package/cursor-plugin/cursor-skills/slm-status/SKILL.md +231 -0
  92. package/cursor-plugin/cursor-skills/slm-web-access/SKILL.md +179 -0
  93. package/{plugin → cursor-plugin}/mcp.cursor.json +1 -2
  94. package/hermes-plugin/__init__.py +39 -7
  95. package/hermes-plugin/agents/slm-governance-advisor.md +1 -1
  96. package/hermes-plugin/agents/slm-loop-runner.md +1 -1
  97. package/hermes-plugin/agents/slm-memory-advisor.md +1 -1
  98. package/hermes-plugin/agents/slm-optimize-advisor.md +1 -1
  99. package/hermes-plugin/command-inventory.json +2 -2
  100. package/hermes-plugin/plugin.yaml +2 -2
  101. package/hermes-plugin/skills/slm-bot-memory/SKILL.md +1 -1
  102. package/hermes-plugin/skills/slm-cache/SKILL.md +1 -1
  103. package/hermes-plugin/skills/slm-compress/SKILL.md +1 -1
  104. package/hermes-plugin/skills/slm-getting-started-bot/SKILL.md +1 -1
  105. package/hermes-plugin/skills/slm-governance/SKILL.md +4 -2
  106. package/hermes-plugin/skills/slm-graph/SKILL.md +7 -13
  107. package/hermes-plugin/skills/slm-loop/SKILL.md +1 -1
  108. package/hermes-plugin/skills/slm-media/SKILL.md +1 -1
  109. package/hermes-plugin/skills/slm-mesh/SKILL.md +1 -1
  110. package/hermes-plugin/skills/slm-profile/SKILL.md +21 -18
  111. package/hermes-plugin/skills/slm-recall/SKILL.md +1 -1
  112. package/hermes-plugin/skills/slm-remember/SKILL.md +1 -1
  113. package/hermes-plugin/skills/slm-scope/SKILL.md +1 -1
  114. package/hermes-plugin/skills/slm-session/SKILL.md +1 -1
  115. package/hermes-plugin/skills/slm-status/SKILL.md +1 -1
  116. package/ide/configs/copilot-cli-mcp.json +17 -0
  117. package/ide/configs/grok-cli-mcp.toml +11 -0
  118. package/ide/configs/muse-mcp.json +16 -0
  119. package/ide/configs/openclaw-mcp.json +15 -0
  120. package/muse-plugin/.claude-plugin/plugin.json +20 -0
  121. package/muse-plugin/LICENSE +663 -0
  122. package/muse-plugin/README.md +44 -0
  123. package/muse-plugin/_GENERATED.md +3 -0
  124. package/muse-plugin/agents/slm-governance-advisor.md +84 -0
  125. package/muse-plugin/agents/slm-loop-runner.md +82 -0
  126. package/muse-plugin/agents/slm-memory-advisor.md +54 -0
  127. package/muse-plugin/agents/slm-optimize-advisor.md +44 -0
  128. package/muse-plugin/commands/slm-loop.md +33 -0
  129. package/muse-plugin/hooks/hooks.json +102 -0
  130. package/muse-plugin/requirements-cpu-torch.txt +13 -0
  131. package/muse-plugin/requirements.txt +1 -0
  132. package/muse-plugin/scripts/ensure-venv.bat +122 -0
  133. package/muse-plugin/scripts/ensure-venv.sh +169 -0
  134. package/muse-plugin/scripts/slm-launch +207 -0
  135. package/muse-plugin/scripts/slm-launch.bat +32 -0
  136. package/muse-plugin/scripts/slm-resolve.sh +128 -0
  137. package/muse-plugin/scripts/slm-run +76 -0
  138. package/muse-plugin/scripts/torch-cpu-resolve.sh +86 -0
  139. package/muse-plugin/skills/slm-bot-memory/SKILL.md +180 -0
  140. package/muse-plugin/skills/slm-cache/SKILL.md +146 -0
  141. package/muse-plugin/skills/slm-compress/SKILL.md +149 -0
  142. package/muse-plugin/skills/slm-getting-started-bot/SKILL.md +196 -0
  143. package/muse-plugin/skills/slm-governance/SKILL.md +278 -0
  144. package/muse-plugin/skills/slm-graph/SKILL.md +320 -0
  145. package/muse-plugin/skills/slm-loop/SKILL.md +173 -0
  146. package/muse-plugin/skills/slm-media/SKILL.md +339 -0
  147. package/muse-plugin/skills/slm-mesh/SKILL.md +388 -0
  148. package/muse-plugin/skills/slm-profile/SKILL.md +166 -0
  149. package/muse-plugin/skills/slm-recall/SKILL.md +517 -0
  150. package/muse-plugin/skills/slm-remember/SKILL.md +374 -0
  151. package/muse-plugin/skills/slm-scope/SKILL.md +182 -0
  152. package/muse-plugin/skills/slm-session/SKILL.md +290 -0
  153. package/muse-plugin/skills/slm-status/SKILL.md +230 -0
  154. package/muse-plugin/skills/slm-web-access/SKILL.md +178 -0
  155. package/package.json +6 -2
  156. package/plugin/.claude-plugin/plugin.json +4 -2
  157. package/plugin/LICENSE +663 -0
  158. package/plugin/README.md +44 -0
  159. package/plugin/agents/slm-governance-advisor.md +1 -1
  160. package/plugin/agents/slm-loop-runner.md +1 -1
  161. package/plugin/agents/slm-memory-advisor.md +1 -1
  162. package/plugin/agents/slm-optimize-advisor.md +1 -1
  163. package/plugin/hooks/hooks.json +1 -1
  164. package/plugin/requirements.txt +1 -1
  165. package/plugin/skills/slm-bot-memory/SKILL.md +1 -1
  166. package/plugin/skills/slm-cache/SKILL.md +1 -1
  167. package/plugin/skills/slm-compress/SKILL.md +1 -1
  168. package/plugin/skills/slm-getting-started-bot/SKILL.md +1 -1
  169. package/plugin/skills/slm-governance/SKILL.md +4 -2
  170. package/plugin/skills/slm-graph/SKILL.md +7 -13
  171. package/plugin/skills/slm-loop/SKILL.md +1 -1
  172. package/plugin/skills/slm-media/SKILL.md +1 -1
  173. package/plugin/skills/slm-mesh/SKILL.md +1 -1
  174. package/plugin/skills/slm-profile/SKILL.md +21 -18
  175. package/plugin/skills/slm-recall/SKILL.md +1 -1
  176. package/plugin/skills/slm-remember/SKILL.md +1 -1
  177. package/plugin/skills/slm-scope/SKILL.md +1 -1
  178. package/plugin/skills/slm-session/SKILL.md +1 -1
  179. package/plugin/skills/slm-status/SKILL.md +1 -1
  180. package/plugin-src/agents/slm-governance-advisor.md +1 -1
  181. package/plugin-src/agents/slm-loop-runner.md +1 -1
  182. package/plugin-src/agents/slm-memory-advisor.md +1 -1
  183. package/plugin-src/agents/slm-optimize-advisor.md +1 -1
  184. package/plugin-src/rules/AGENTS.md +1 -1
  185. package/plugin-src/rules/CLAUDE.md.fragment +3 -3
  186. package/plugin-src/skills/slm-bot-memory/SKILL.md +1 -1
  187. package/plugin-src/skills/slm-cache/SKILL.md +1 -1
  188. package/plugin-src/skills/slm-compress/SKILL.md +1 -1
  189. package/plugin-src/skills/slm-getting-started-bot/SKILL.md +1 -1
  190. package/plugin-src/skills/slm-governance/SKILL.md +4 -2
  191. package/plugin-src/skills/slm-graph/SKILL.md +7 -13
  192. package/plugin-src/skills/slm-loop/SKILL.md +1 -1
  193. package/plugin-src/skills/slm-media/SKILL.md +1 -1
  194. package/plugin-src/skills/slm-mesh/SKILL.md +1 -1
  195. package/plugin-src/skills/slm-profile/SKILL.md +21 -18
  196. package/plugin-src/skills/slm-recall/SKILL.md +1 -1
  197. package/plugin-src/skills/slm-remember/SKILL.md +1 -1
  198. package/plugin-src/skills/slm-scope/SKILL.md +1 -1
  199. package/plugin-src/skills/slm-session/SKILL.md +1 -1
  200. package/plugin-src/skills/slm-status/SKILL.md +1 -1
  201. package/plugin/CLAUDE.md +0 -56
  202. /package/{plugin/assets/logo.svg → codex-plugin/assets/icon.svg} +0 -0
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: slm-recall
3
3
  description: Search and retrieve facts, decisions, and past context from SuperLocalMemory. Use when the user asks to recall, find, search, or "what did we decide/say about X". Triggers multi-channel semantic retrieval with reranking; always call before storing anything new.
4
- version: "4.2.5"
4
+ version: "4.2.6"
5
5
  agent: agent
6
6
  tools:
7
7
  - recall
@@ -520,4 +520,4 @@ See `slm-profile`.
520
520
 
521
521
  ---
522
522
 
523
- *SuperLocalMemory v4.2.5 · Qualixar · AGPL-3.0-or-later*
523
+ *SuperLocalMemory v4.2.6 · Qualixar · AGPL-3.0-or-later*
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: slm-remember
3
3
  description: Capture durable facts, decisions, constraints, and gotchas into SuperLocalMemory. Use when the user says "remember that", "save this decision", "note this constraint", or when a session produces a conclusion worth persisting across sessions. Always recall first to avoid duplicates.
4
- version: "4.2.5"
4
+ version: "4.2.6"
5
5
  agent: agent
6
6
  tools:
7
7
  - remember
@@ -377,4 +377,4 @@ sessions on this machine, so use it only when the user asks to move. See
377
377
 
378
378
  ---
379
379
 
380
- *SuperLocalMemory v4.2.5 · Qualixar · AGPL-3.0-or-later*
380
+ *SuperLocalMemory v4.2.6 · Qualixar · AGPL-3.0-or-later*
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: slm-scope
3
3
  description: Controls memory visibility across profiles — personal (private, default), shared (selected profiles), or global (all profiles on this machine). Default is always personal. Only change scope when the user explicitly asks to share a memory across workspaces. Works with both remember (write scope) and recall (read scope flags).
4
- version: "4.2.5"
4
+ version: "4.2.6"
5
5
  agent: agent
6
6
  tools:
7
7
  - remember
@@ -180,4 +180,4 @@ to review the impact. See `slm-remember` for the full deletion discipline.
180
180
 
181
181
  ---
182
182
 
183
- *SuperLocalMemory v4.2.5 · Qualixar · AGPL-3.0-or-later*
183
+ *SuperLocalMemory v4.2.6 · Qualixar · AGPL-3.0-or-later*
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: slm-session
3
3
  description: Manage SuperLocalMemory session lifecycle — call session_init once at the start of every fresh session to load relevant project context and get a session_id; call close_session when work is meaningfully complete to commit temporal summaries. Correct lifecycle hygiene is what makes SLM's learning loop work.
4
- version: "4.2.5"
4
+ version: "4.2.6"
5
5
  agent: agent
6
6
  tools:
7
7
  - session_init
@@ -288,4 +288,4 @@ answered. To also surface shared or global facts, call `recall` with
288
288
 
289
289
  ---
290
290
 
291
- *SuperLocalMemory v4.2.5 · Qualixar · AGPL-3.0-or-later*
291
+ *SuperLocalMemory v4.2.6 · Qualixar · AGPL-3.0-or-later*
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: slm-status
3
3
  description: Health and optimization stats for SuperLocalMemory — call slm_optimize_stats() for live compression and cache counters (compress_runs, tokens_saved_compress, cache_proxy_hits, cache_proxy_misses, cache_kv_hits, cache_kv_misses); run slm status [--json] for system state (mode, profile, DB size, fact/entity/edge counts) and slm doctor [--json] for preflight including the "Optimize (Surface B)" health line; use together to confirm optimization is actually saving tokens.
4
- version: "4.2.5"
4
+ version: "4.2.6"
5
5
  agent: agent
6
6
  tools:
7
7
  - slm_optimize_stats
@@ -233,4 +233,4 @@ the memory-engine upgrade is pending.
233
233
 
234
234
  ---
235
235
 
236
- SuperLocalMemory v4.2.5 · Qualixar · AGPL-3.0-or-later
236
+ SuperLocalMemory v4.2.6 · Qualixar · AGPL-3.0-or-later
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: slm-web-access
3
3
  description: Set up and troubleshoot SuperLocalMemory Web access, the optional link that lets web apps (ChatGPT, Claude on the web, Muse, Composio, other remote MCP clients) use the memory on this computer. Covers turning it on from the dashboard, adding and removing apps, read/save/session permissions, the second yes for bot messages and pictures (the Web access switches in Connected apps), one-time upload links for pictures and PDFs, what leaves the computer, renewal, the connection states, the errors a web app can see, and the copy-paste instructions for web agents.
4
- version: "4.2.5"
4
+ version: "4.2.6"
5
5
  agent: agent
6
6
  tools:
7
7
  - get_status
@@ -1,4 +1,4 @@
1
- # SuperLocalMemory — GitHub Copilot plugin (v4.2.5)
1
+ # SuperLocalMemory — GitHub Copilot plugin (v4.2.6)
2
2
 
3
3
  Empowers GitHub Copilot (VS Code, Visual Studio, JetBrains, Eclipse, CLI) with SuperLocalMemory as its long-term brain — at parity with the Claude and Codex plugins.
4
4
 
@@ -23,4 +23,4 @@ Then copy the add-ons from this folder's `.github/` into your project's `.github
23
23
 
24
24
  MCP works on every Copilot IDE at GA. Prompts, agents, and hooks are additive and degrade gracefully where an IDE does not yet support them (hooks are VS Code Preview as of 2026). SLM lifecycle also has an instruction-level fallback in `copilot-instructions.md`, so memory works even without hooks.
25
25
 
26
- SuperLocalMemory v4.2.5 · Qualixar · AGPL-3.0-or-later
26
+ SuperLocalMemory v4.2.6 · Qualixar · AGPL-3.0-or-later
@@ -1,12 +1,12 @@
1
1
  # copilot-plugin/ — GENERATED, do not edit by hand
2
2
 
3
- Built by `scripts/build-copilot-plugin.mjs` from the single source in `plugin-src/` (+ `ide/configs/vscode-copilot-mcp.json`, `plugin/CLAUDE.md`). Version stamped from `plugin-src/manifest.json`.
3
+ Built by `scripts/build-copilot-plugin.mjs` from the single source in `plugin-src/` (+ `ide/configs/vscode-copilot-mcp.json`, `plugin-src/rules/CLAUDE.md.fragment`). Version stamped from `plugin-src/manifest.json`.
4
4
 
5
- Version: **4.2.5**
5
+ Version: **4.2.6**
6
6
 
7
7
  | Output | Source |
8
8
  |---|---|
9
- | `.github/copilot-instructions.md` | `plugin/CLAUDE.md` (SLM-marker-wrapped) |
9
+ | `.github/copilot-instructions.md` | `plugin-src/rules/CLAUDE.md.fragment` (SLM-marker-wrapped) |
10
10
  | `.github/prompts/slm-*.prompt.md` | `plugin-src/skills/*/SKILL.md` |
11
11
  | `.github/agents/*.agent.md` | `plugin-src/agents/*.md` (+ `target: vscode`) |
12
12
  | `.github/hooks/slm-hooks.json` | Copilot schema (this script) |
@@ -3,7 +3,7 @@
3
3
  "name": "Qualixar"
4
4
  },
5
5
  "description": "Local-first long-term memory for your agents and bots: remember, recall and session context stored on your own computer, with reversible compression and a cache for large tool outputs.",
6
- "homepage": "https://github.com/qualixar/superlocalmemory",
6
+ "homepage": "https://superlocalmemory.com",
7
7
  "hooks": {
8
8
  "hooks": {}
9
9
  },
@@ -14,11 +14,11 @@
14
14
  "mcp",
15
15
  "agents"
16
16
  ],
17
- "license": "AGPL-3.0-or-later",
17
+ "license": "MIT",
18
18
  "logo": "assets/logo.svg",
19
19
  "mcpServers": "./mcp.cursor.json",
20
20
  "name": "superlocalmemory",
21
21
  "repository": "https://github.com/qualixar/superlocalmemory",
22
22
  "skills": "./cursor-skills/",
23
- "version": "4.2.5"
23
+ "version": "4.2.6"
24
24
  }
@@ -0,0 +1,24 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Varun Pratap Bhardwaj / Qualixar
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
23
+ This license covers this plugin bundle only. The SuperLocalMemory engine it
24
+ starts (installed separately) is licensed under AGPL-3.0-or-later.
@@ -0,0 +1,36 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" role="img" aria-labelledby="title desc">
2
+ <title id="title">SuperLocalMemory mark</title>
3
+ <desc id="desc">A local memory core represented by connected evidence nodes in a cyan and violet ring.</desc>
4
+ <defs>
5
+ <linearGradient id="slm-ring" x1="18" y1="18" x2="110" y2="110" gradientUnits="userSpaceOnUse">
6
+ <stop stop-color="#22d3ee"/>
7
+ <stop offset=".52" stop-color="#60a5fa"/>
8
+ <stop offset="1" stop-color="#a78bfa"/>
9
+ </linearGradient>
10
+ <linearGradient id="slm-core" x1="39" y1="37" x2="91" y2="91" gradientUnits="userSpaceOnUse">
11
+ <stop stop-color="#d9fbff"/>
12
+ <stop offset="1" stop-color="#c4b5fd"/>
13
+ </linearGradient>
14
+ </defs>
15
+ <circle cx="64" cy="64" r="58" fill="#07111f" stroke="url(#slm-ring)" stroke-width="4"/>
16
+ <path d="M33 51c4-15 16-25 31-25 20 0 35 16 35 36 0 17-12 31-28 35" fill="none" stroke="url(#slm-ring)" stroke-linecap="round" stroke-width="4"/>
17
+ <path d="M35 78c6 15 22 24 38 20 9-2 16-8 20-16" fill="none" stroke="url(#slm-ring)" stroke-linecap="round" stroke-width="4" opacity=".82"/>
18
+ <g fill="none" stroke="url(#slm-ring)" stroke-linecap="round" stroke-linejoin="round" stroke-width="3.5">
19
+ <path d="M43 55 58 45l14 10 13-8"/>
20
+ <path d="M43 55v18l15 9 14-9 13 8"/>
21
+ <path d="M58 45v37"/>
22
+ <path d="M72 55v18"/>
23
+ </g>
24
+ <g fill="url(#slm-core)" stroke="#07111f" stroke-width="2">
25
+ <circle cx="43" cy="55" r="6"/>
26
+ <circle cx="58" cy="45" r="6"/>
27
+ <circle cx="72" cy="55" r="6"/>
28
+ <circle cx="85" cy="47" r="6"/>
29
+ <circle cx="43" cy="73" r="6"/>
30
+ <circle cx="58" cy="82" r="6"/>
31
+ <circle cx="72" cy="73" r="6"/>
32
+ <circle cx="85" cy="81" r="6"/>
33
+ </g>
34
+ <circle cx="64" cy="64" r="8" fill="url(#slm-ring)"/>
35
+ <circle cx="64" cy="64" r="3" fill="#f8fafc"/>
36
+ </svg>
@@ -178,4 +178,4 @@ store every local bot on that computer can reach.
178
178
 
179
179
  ---
180
180
 
181
- *SuperLocalMemory v4.2.5 · Qualixar · AGPL-3.0-or-later*
181
+ *SuperLocalMemory v4.2.6 · Qualixar · AGPL-3.0-or-later*
@@ -0,0 +1,147 @@
1
+ ---
2
+ name: slm-cache
3
+ description: KV cache for repeated reads — call slm_cache_get(key) first; on a miss do the expensive operation then slm_cache_set(key, value, ttl_seconds) to store it; on a hit use the returned value directly; always fail-open (hit:false on any error, never raises); saves tokens when the same file, query result, or tool output is read more than once in a session.
4
+ when_to_use: "cache file, avoid re-reading, repeated read, cache result, cache tool output, save re-read, reuse across session, cache check, cache hit, cache miss"
5
+ allowed-tools: slm_cache_set, slm_cache_get, Bash
6
+ ---
7
+
8
+ # slm-cache — KV Cache for Repeated Reads (Surface B)
9
+
10
+ ## Purpose
11
+
12
+ When the same file, query result, or expensive tool output is needed more than once in a session, fetching it again wastes tokens and time. `slm_cache_set` stores a result under a stable key; `slm_cache_get` retrieves it on subsequent calls. The cache is agent-scoped (automatically namespaced by tenant/agent ID), TTL-bounded, and fail-open.
13
+
14
+ This is an agent-routed cache — it caches results the agent explicitly routes through SLM. It cannot cache Claude conversation turns.
15
+
16
+ ## Tool: slm_cache_set
17
+
18
+ ```
19
+ slm_cache_set(
20
+ key: str, # required — cache key (max 512 chars)
21
+ value: str, # required — value to store (max 1 MB)
22
+ ttl_seconds: int = 86400, # time-to-live in seconds (default 24 h)
23
+ ) -> dict
24
+ ```
25
+
26
+ ### Return dict
27
+
28
+ | Key | Type | Meaning |
29
+ |-----|------|---------|
30
+ | `ok` | bool | `True` on success; `False` on validation error or internal error |
31
+ | `stored` | bool | `True` when the value was written to the cache |
32
+ | `note` | str \| None | Error detail or `None` on success |
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. 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
+
36
+ ## Tool: slm_cache_get
37
+
38
+ ```
39
+ slm_cache_get(
40
+ key: str, # required — same key used in slm_cache_set
41
+ ) -> dict
42
+ ```
43
+
44
+ ### Return dict
45
+
46
+ | Key | Type | Meaning |
47
+ |-----|------|---------|
48
+ | `ok` | bool | `True` on clean execution (including miss); `False` on internal error |
49
+ | `hit` | bool | `True` when the key exists and has not expired |
50
+ | `value` | str \| None | The stored value on a hit; `None` on miss |
51
+ | `note` | str \| None | Error detail or `None` |
52
+
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
+
55
+ ## Standard Pattern: Cache-Aside
56
+
57
+ Always check the cache first, then fill on miss:
58
+
59
+ ```python
60
+ # 1. Check cache
61
+ cached = await slm_cache_get(key="file:/absolute/path/to/config.json")
62
+
63
+ if cached["hit"]:
64
+ content = cached["value"]
65
+ else:
66
+ # 2. Expensive operation (file read, search, API call)
67
+ content = read_file("/absolute/path/to/config.json")
68
+
69
+ # 3. Store for the rest of the session
70
+ await slm_cache_set(
71
+ key="file:/absolute/path/to/config.json",
72
+ value=content,
73
+ ttl_seconds=3600, # 1 h — adjust to data volatility
74
+ )
75
+
76
+ # 4. Use content
77
+ ```
78
+
79
+ ## Key Naming Convention
80
+
81
+ Use a stable, human-readable prefix so keys are recognisable in stats and won't collide accidentally:
82
+
83
+ | Content type | Suggested prefix | Example |
84
+ |---|---|---|
85
+ | File read | `file:` | `file:/repo/src/config.py` |
86
+ | Search result | `search:` | `search:recall:session_init_context` |
87
+ | Tool output | `tool:` | `tool:build_code_graph:/repo` |
88
+ | External fetch | `url:` | `url:https://api.example.com/v1/data` |
89
+
90
+ Key length cap: 512 characters. Keys longer than that are rejected (`ok: false`).
91
+
92
+ ## When Caching Pays Off
93
+
94
+ **Cache when:**
95
+ - You will read the same file more than once in a session.
96
+ - A search or recall result is reused across multiple reasoning steps.
97
+ - An expensive MCP tool call (graph build, semantic search) produces output that is stable for the session duration.
98
+
99
+ **Do NOT cache:**
100
+ - Volatile data (live API responses that change minute-to-minute, current timestamps, streaming output).
101
+ - Secrets, credentials, tokens, or `ccr_id` values (CCR already handles its own storage).
102
+ - Data that must be fresh for correctness — a stale cache is worse than a cache miss.
103
+ - Intermediate scratchpad text you will discard.
104
+
105
+ ## Fail-Open Guarantee
106
+
107
+ Neither tool raises an exception. On any internal error:
108
+
109
+ - `slm_cache_get` returns `{"ok": false, "hit": false, "value": null, ...}` — treat as a miss and proceed with the real fetch.
110
+ - `slm_cache_set` returns `{"ok": false, "stored": false, ...}` — log the note if useful, but continue; the value is still available in memory this step.
111
+
112
+ Never block a task on a cache failure.
113
+
114
+ ## TTL Guidance
115
+
116
+ | Data type | Suggested TTL |
117
+ |---|---|
118
+ | Static config / generated file | 86400 s (24 h — the default) |
119
+ | Session-specific tool output | 3600 s (1 h) |
120
+ | Rapidly changing API data | Do not cache, or 60–300 s |
121
+
122
+ Set `ttl_seconds` to match how long the data remains valid. After expiry `slm_cache_get` returns a miss automatically.
123
+
124
+ ## Secondary CLI (fallback when MCP is unavailable)
125
+
126
+ Prefer the MCP tools above. If you must use the command line:
127
+
128
+ ```bash
129
+ slm cache status [--json] [--tenant default]
130
+ slm cache clear [--json] [--tenant default]
131
+ slm cache invalidate --tag <tag> [--json] [--tenant default]
132
+ slm cache ttl --set <seconds> [--semantic <seconds>] [--json] [--tenant default]
133
+ slm cache semantic on|off [--json] [--tenant default]
134
+ ```
135
+
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
+
138
+ ---
139
+
140
+ ## Related skills
141
+
142
+ - `slm-compress` — for large content reduction; cache and compress work together
143
+ - `slm-status` — view `cache_kv_hits`/`cache_kv_misses` counters (daemon-persisted totals) from `slm_optimize_stats`
144
+
145
+ ---
146
+
147
+ SuperLocalMemory v4.2.6 · Qualixar · AGPL-3.0-or-later
@@ -0,0 +1,150 @@
1
+ ---
2
+ name: slm-compress
3
+ description: Compress large text, tool output, or transcripts to reduce context-window usage while keeping the full 1M window intact — call slm_compress(content, mode, reversible, ttl_seconds) to shrink content; if the result is lossy a ccr_id is returned so you can call slm_retrieve(ccr_id) later to recover the exact original; always fail-open (ok:false → continue with the original).
4
+ when_to_use: "compress context, shrink output, save tokens, context window full, long transcript, compress tool result, reduce tokens, large output, compress text"
5
+ allowed-tools: slm_compress, slm_retrieve, Bash
6
+ ---
7
+
8
+ # slm-compress — Reversible Context Compression (Surface B)
9
+
10
+ ## Purpose
11
+
12
+ When a tool output, transcript, or accumulated context grows large enough to crowd out working space, `slm_compress` reduces it in-place. The compressed form is used for the remainder of the session; the exact original is recoverable on demand via `slm_retrieve`. This works without a proxy and without touching `ANTHROPIC_BASE_URL`, so the full 1M context window is never sacrificed.
13
+
14
+ ## Primary MCP Tool: slm_compress
15
+
16
+ ```
17
+ slm_compress(
18
+ content: str, # required — text to compress (max 1 MB)
19
+ mode: str = "auto", # "normalize" | "auto" | "aggressive"
20
+ reversible: bool = True, # store original in CCR for later retrieval
21
+ ttl_seconds: int = 86400, # CCR lifetime in seconds (default 24 h)
22
+ ) -> dict
23
+ ```
24
+
25
+ ### Return dict (all keys always present)
26
+
27
+ | Key | Type | Meaning |
28
+ |-----|------|---------|
29
+ | `ok` | bool | `True` on success; `False` on internal error or empty input |
30
+ | `compressed` | str | Compressed text (or original on failure) |
31
+ | `strategy` | str | Which strategy was applied (e.g. `"normalize"`, `"none"`) |
32
+ | `tokens_before` | int | Word-count estimate of the input |
33
+ | `tokens_after` | int | Word-count estimate of the output |
34
+ | `ratio` | float | `tokens_after / tokens_before` (lower = more compact) |
35
+ | `lossy` | bool | Whether information was removed |
36
+ | `ccr_id` | str \| None | UUID4 session token; present only when `lossy=True` and `reversible=True` |
37
+ | `note` | str \| None | Human-readable note (e.g. warnings, recovery hint) |
38
+
39
+ ### Mode semantics (verified from source)
40
+
41
+ - **`"normalize"`** — lossless whitespace collapse; no daemon dependency; `lossy: false`, `ccr_id: null`.
42
+ - **`"auto"`** — delegates to `CompressRouter`; may be lossy depending on daemon config; default.
43
+ - **`"aggressive"`** — requests aggressive compression from the daemon; daemon must have `compress_mode=aggressive` set in config; note field will warn if daemon config does not match.
44
+
45
+ ## Recovery Tool: slm_retrieve
46
+
47
+ When `slm_compress` returns `lossy: true`, the original is stored under the `ccr_id`. Use `slm_retrieve` to get it back:
48
+
49
+ ```
50
+ slm_retrieve(ccr_id: str) -> dict
51
+ ```
52
+
53
+ | Key | Type | Meaning |
54
+ |-----|------|---------|
55
+ | `ok` | bool | `True` when content was found |
56
+ | `content` | str \| None | Original text, decoded from UTF-8 (or Latin-1 fallback) |
57
+ | `size_bytes` | int | Byte length of the stored original |
58
+ | `error` | str \| None | Error message on failure; `None` on success |
59
+
60
+ `ccr_id` must be a valid UUID4. Non-UUID4 strings return `ok: false` immediately.
61
+
62
+ ### CCR security rule
63
+
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
+ - Never log them.
66
+ - Never share them across agents.
67
+ - Never pass them as tool arguments to any tool other than `slm_retrieve`.
68
+ - Never compress a `ccr_id` string itself.
69
+ - They expire after `ttl_seconds` (default 24 h); `slm_retrieve` returns `ok: false` after expiry.
70
+
71
+ ## Decision: When to Compress
72
+
73
+ **Compress when:**
74
+ - A single tool output or transcript exceeds approximately 2 000 characters.
75
+ - You are accumulating repeated context (e.g. full file reads across multiple steps).
76
+ - Context is nearing the point where recall quality or response quality degrades.
77
+
78
+ **Do NOT compress:**
79
+ - Code you are about to read, edit, or diff — you need every character.
80
+ - JSON you will parse programmatically — compression may alter structure.
81
+ - Secrets, credentials, or `ccr_id` strings.
82
+ - Anything under ~500 characters — overhead exceeds benefit.
83
+ - The compressed form of content already compressed this session.
84
+
85
+ ## Fail-Open Guarantee
86
+
87
+ `slm_compress` never raises an exception. On any internal error it returns:
88
+
89
+ ```json
90
+ { "ok": false, "compressed": "<original input>", "ratio": 1.0, ... }
91
+ ```
92
+
93
+ **When `ok` is `false`, continue with the original content.** Never block a task waiting for compression to succeed.
94
+
95
+ ## Worked Example
96
+
97
+ ```python
98
+ # Step 1: compress a large tool output
99
+ result = await slm_compress(
100
+ content=long_log_text,
101
+ mode="auto",
102
+ reversible=True,
103
+ ttl_seconds=3600,
104
+ )
105
+
106
+ if result["ok"]:
107
+ working_text = result["compressed"]
108
+ ccr_id = result["ccr_id"] # None if lossless
109
+ else:
110
+ working_text = long_log_text # fail-open
111
+ ccr_id = None
112
+
113
+ # ... work with working_text ...
114
+
115
+ # Step 2: restore original when needed (e.g. before final summary)
116
+ if ccr_id:
117
+ restore = await slm_retrieve(ccr_id=ccr_id)
118
+ if restore["ok"]:
119
+ original_text = restore["content"]
120
+ ```
121
+
122
+ ## Secondary CLI (fallback when MCP is unavailable)
123
+
124
+ Prefer the MCP tools above. If you must use the command line:
125
+
126
+ ```bash
127
+ slm compress status [--json]
128
+ slm compress mode safe|aggressive [--json]
129
+ slm compress code on|off [--json]
130
+ slm compress prose on|off [--json]
131
+ slm compress ccr on|off [--json]
132
+ slm compress align on|off [--json]
133
+ ```
134
+
135
+ These subcommands control daemon-level compression settings — they do not compress content inline. For inline compression, use `slm_compress` via MCP.
136
+
137
+ ## Size Cap
138
+
139
+ Content over 1 MB (1 000 000 bytes UTF-8) is processed but `reversible` is forced to `False` and `ccr_id` will be `None`. The `note` field will state `"content over 1MB: ccr skipped"`.
140
+
141
+ ---
142
+
143
+ ## Related skills
144
+
145
+ - `slm-cache` — for repeated reads; use cache-aside before compressing a frequently re-read result
146
+ - `slm-status` — check `tokens_saved_compress` and `compress_runs` from `slm_optimize_stats`
147
+
148
+ ---
149
+
150
+ SuperLocalMemory v4.2.6 · Qualixar · AGPL-3.0-or-later
@@ -194,4 +194,4 @@ quality on a shared box.
194
194
 
195
195
  ---
196
196
 
197
- *SuperLocalMemory v4.2.5 · Qualixar · AGPL-3.0-or-later*
197
+ *SuperLocalMemory v4.2.6 · Qualixar · AGPL-3.0-or-later*