superlocalmemory 4.0.10 → 4.1.2

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 (145) hide show
  1. package/.claude-plugin/marketplace.json +12 -2
  2. package/CHANGELOG.md +244 -0
  3. package/README.md +40 -75
  4. package/package.json +6 -3
  5. package/plugin/.claude-plugin/plugin.json +2 -2
  6. package/plugin/CLAUDE.md +3 -3
  7. package/plugin/agents/slm-governance-advisor.md +1 -1
  8. package/plugin/agents/slm-loop-runner.md +4 -4
  9. package/plugin/agents/slm-memory-advisor.md +1 -1
  10. package/plugin/agents/slm-optimize-advisor.md +1 -1
  11. package/plugin/requirements.txt +1 -1
  12. package/plugin/skills/slm-cache/SKILL.md +1 -1
  13. package/plugin/skills/slm-compress/SKILL.md +1 -1
  14. package/plugin/skills/slm-governance/SKILL.md +1 -1
  15. package/plugin/skills/slm-graph/SKILL.md +1 -1
  16. package/plugin/skills/slm-loop/SKILL.md +2 -2
  17. package/plugin/skills/slm-mesh/SKILL.md +1 -1
  18. package/plugin/skills/slm-profile/SKILL.md +5 -5
  19. package/plugin/skills/slm-recall/SKILL.md +102 -15
  20. package/plugin/skills/slm-remember/SKILL.md +35 -3
  21. package/plugin/skills/slm-scope/SKILL.md +1 -1
  22. package/plugin/skills/slm-session/SKILL.md +29 -3
  23. package/plugin/skills/slm-status/SKILL.md +1 -1
  24. package/plugin-src/rules/AGENTS.md +16 -8
  25. package/plugin-src/skills/slm-cache/SKILL.md +1 -1
  26. package/plugin-src/skills/slm-compress/SKILL.md +1 -1
  27. package/plugin-src/skills/slm-governance/SKILL.md +1 -1
  28. package/plugin-src/skills/slm-graph/SKILL.md +1 -1
  29. package/plugin-src/skills/slm-loop/SKILL.md +2 -2
  30. package/plugin-src/skills/slm-mesh/SKILL.md +1 -1
  31. package/plugin-src/skills/slm-profile/SKILL.md +5 -5
  32. package/plugin-src/skills/slm-recall/SKILL.md +102 -15
  33. package/plugin-src/skills/slm-remember/SKILL.md +35 -3
  34. package/plugin-src/skills/slm-scope/SKILL.md +1 -1
  35. package/plugin-src/skills/slm-session/SKILL.md +29 -3
  36. package/plugin-src/skills/slm-status/SKILL.md +1 -1
  37. package/pyproject.toml +1 -1
  38. package/src/superlocalmemory/__init__.py +1 -1
  39. package/src/superlocalmemory/cli/commands.py +357 -18
  40. package/src/superlocalmemory/cli/daemon.py +30 -0
  41. package/src/superlocalmemory/cli/db_migrate.py +71 -1
  42. package/src/superlocalmemory/cli/gdpr_cmd.py +15 -2
  43. package/src/superlocalmemory/cli/main.py +24 -2
  44. package/src/superlocalmemory/code_graph/database.py +44 -0
  45. package/src/superlocalmemory/compliance/gdpr.py +449 -39
  46. package/src/superlocalmemory/core/admission.py +231 -11
  47. package/src/superlocalmemory/core/backend_orchestrator.py +190 -84
  48. package/src/superlocalmemory/core/config.py +90 -11
  49. package/src/superlocalmemory/core/consolidation_engine.py +34 -0
  50. package/src/superlocalmemory/core/engine.py +140 -11
  51. package/src/superlocalmemory/core/graph_analyzer.py +76 -112
  52. package/src/superlocalmemory/core/graph_metrics.py +597 -0
  53. package/src/superlocalmemory/core/graph_pruner.py +121 -0
  54. package/src/superlocalmemory/core/maintenance_scheduler.py +205 -0
  55. package/src/superlocalmemory/core/mode_capability.py +111 -0
  56. package/src/superlocalmemory/core/ollama_validator.py +315 -0
  57. package/src/superlocalmemory/core/projection_drain.py +380 -0
  58. package/src/superlocalmemory/core/recall_pipeline.py +390 -3
  59. package/src/superlocalmemory/core/recall_worker.py +6 -3
  60. package/src/superlocalmemory/core/scale_autopromote.py +196 -0
  61. package/src/superlocalmemory/core/scale_engine.py +16 -2
  62. package/src/superlocalmemory/core/score_contract.py +21 -1
  63. package/src/superlocalmemory/core/session_identity.py +85 -0
  64. package/src/superlocalmemory/core/status_contract.py +108 -0
  65. package/src/superlocalmemory/core/worker_pool.py +4 -4
  66. package/src/superlocalmemory/core/working_memory.py +288 -0
  67. package/src/superlocalmemory/encoding/cognitive_consolidator.py +36 -6
  68. package/src/superlocalmemory/encoding/context_generator.py +1 -1
  69. package/src/superlocalmemory/encoding/entity_resolver.py +38 -0
  70. package/src/superlocalmemory/encoding/fact_extractor.py +18 -14
  71. package/src/superlocalmemory/encoding/prospective_markers.py +262 -0
  72. package/src/superlocalmemory/encoding/type_router.py +12 -12
  73. package/src/superlocalmemory/evolution/mutation_generator.py +30 -4
  74. package/src/superlocalmemory/graph/cozo_adjacency.py +122 -0
  75. package/src/superlocalmemory/graph/cozo_backend.py +103 -138
  76. package/src/superlocalmemory/hooks/portable_kit.py +10 -2
  77. package/src/superlocalmemory/learning/bandit.py +43 -0
  78. package/src/superlocalmemory/learning/consolidation_worker.py +54 -0
  79. package/src/superlocalmemory/learning/database.py +60 -3
  80. package/src/superlocalmemory/learning/entity_compiler.py +21 -58
  81. package/src/superlocalmemory/learning/feedback.py +3 -1
  82. package/src/superlocalmemory/learning/outcomes.py +47 -16
  83. package/src/superlocalmemory/learning/pattern_miner.py +28 -3
  84. package/src/superlocalmemory/learning/pattern_miner_constants.py +43 -0
  85. package/src/superlocalmemory/learning/pcos.py +291 -0
  86. package/src/superlocalmemory/learning/reward_from_outcomes.py +365 -0
  87. package/src/superlocalmemory/learning/reward_proxy.py +100 -10
  88. package/src/superlocalmemory/learning/signal_kinds.py +79 -0
  89. package/src/superlocalmemory/mcp/profiles.py +14 -2
  90. package/src/superlocalmemory/mcp/tools_active.py +2 -1
  91. package/src/superlocalmemory/mcp/tools_core.py +31 -3
  92. package/src/superlocalmemory/mcp/tools_v28.py +20 -1
  93. package/src/superlocalmemory/parameterization/pattern_extractor.py +14 -1
  94. package/src/superlocalmemory/parameterization/soft_prompt_generator.py +98 -0
  95. package/src/superlocalmemory/retrieval/bm25_channel.py +64 -3
  96. package/src/superlocalmemory/retrieval/channel_status.py +117 -0
  97. package/src/superlocalmemory/retrieval/engine.py +106 -11
  98. package/src/superlocalmemory/retrieval/entity_channel.py +210 -256
  99. package/src/superlocalmemory/retrieval/graph_adjacency.py +219 -0
  100. package/src/superlocalmemory/retrieval/scope_policy.py +20 -0
  101. package/src/superlocalmemory/retrieval/semantic_channel.py +47 -5
  102. package/src/superlocalmemory/retrieval/spreading.py +288 -0
  103. package/src/superlocalmemory/server/api.py +24 -5
  104. package/src/superlocalmemory/server/bandit_loops.py +17 -1
  105. package/src/superlocalmemory/server/rbac_enforce.py +26 -6
  106. package/src/superlocalmemory/server/recall_health.py +87 -10
  107. package/src/superlocalmemory/server/recall_serializer.py +9 -0
  108. package/src/superlocalmemory/server/routes/behavioral.py +75 -10
  109. package/src/superlocalmemory/server/routes/compliance.py +98 -18
  110. package/src/superlocalmemory/server/routes/config_api.py +186 -4
  111. package/src/superlocalmemory/server/routes/evolution.py +178 -0
  112. package/src/superlocalmemory/server/routes/ingest.py +8 -0
  113. package/src/superlocalmemory/server/routes/learning_telemetry.py +2 -1
  114. package/src/superlocalmemory/server/routes/memories.py +49 -7
  115. package/src/superlocalmemory/server/routes/timeline.py +4 -0
  116. package/src/superlocalmemory/server/routes/v3_api.py +191 -15
  117. package/src/superlocalmemory/server/ui.py +20 -4
  118. package/src/superlocalmemory/server/unified_daemon.py +241 -7
  119. package/src/superlocalmemory/storage/_migration_internals.py +54 -2
  120. package/src/superlocalmemory/storage/_schema_version.py +24 -3
  121. package/src/superlocalmemory/storage/database.py +477 -59
  122. package/src/superlocalmemory/storage/embedding_codec.py +71 -0
  123. package/src/superlocalmemory/storage/lineage_retention.py +236 -0
  124. package/src/superlocalmemory/storage/logical_edges.py +43 -2
  125. package/src/superlocalmemory/storage/migration_runner.py +119 -0
  126. package/src/superlocalmemory/storage/migrations/M043_quarantine_display_summaries.py +60 -36
  127. package/src/superlocalmemory/storage/migrations/M044_play_carries_its_own_evidence.py +127 -0
  128. package/src/superlocalmemory/storage/migrations/M045_fact_outcome_score.py +158 -0
  129. package/src/superlocalmemory/storage/migrations/M046_prospective_memory_has_its_own_name.py +620 -0
  130. package/src/superlocalmemory/storage/migrations/M047_fisher_vectors_are_stored_like_every_other_vector.py +306 -0
  131. package/src/superlocalmemory/storage/migrations/M048_upcoming_holds_only_what_is_upcoming.py +207 -0
  132. package/src/superlocalmemory/storage/migrations/M049_a_schema_version_marker_is_one_row.py +201 -0
  133. package/src/superlocalmemory/storage/migrations.py +18 -2
  134. package/src/superlocalmemory/storage/models.py +40 -1
  135. package/src/superlocalmemory/storage/projection_outbox.py +346 -0
  136. package/src/superlocalmemory/storage/retention_policy.py +860 -0
  137. package/src/superlocalmemory/storage/schema.py +35 -1
  138. package/src/superlocalmemory/storage/write_coordinator.py +19 -2
  139. package/src/superlocalmemory/trust/scorer.py +43 -1
  140. package/src/superlocalmemory/ui/index.html +9 -18
  141. package/src/superlocalmemory/ui/js/event-delegation.js +12 -1
  142. package/src/superlocalmemory/ui/js/od-health.js +28 -6
  143. package/src/superlocalmemory/ui/js/od-memories.js +19 -0
  144. package/src/superlocalmemory/ui/js/od-settings.js +87 -1
  145. package/src/superlocalmemory/ui/js/recall-lab.js +78 -3
@@ -9,9 +9,19 @@
9
9
  "author": {
10
10
  "name": "Qualixar"
11
11
  },
12
- "description": "Local-first agent memory + reversible context compression and KV cache, as an MCP server. 21-tool code profile with graph intelligence.",
12
+ "description": "Local-first agent memory + reversible context compression and KV cache, as an MCP server. 34-tool code profile with graph intelligence.",
13
+ "homepage": "https://github.com/qualixar/superlocalmemory",
14
+ "keywords": [
15
+ "memory",
16
+ "mcp",
17
+ "agents",
18
+ "local-first",
19
+ "context-compression"
20
+ ],
21
+ "license": "AGPL-3.0-or-later",
13
22
  "name": "superlocalmemory",
14
- "source": "./plugin"
23
+ "source": "./plugin",
24
+ "version": "4.1.2"
15
25
  }
16
26
  ]
17
27
  }
package/CHANGELOG.md CHANGED
@@ -5,6 +5,250 @@ All notable changes to SuperLocalMemory 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
+ ## [4.1.2] — The monitor that was watching nothing
9
+
10
+ ### Fixed
11
+ - **A killed embedding worker was never brought back, and nothing said so.** The
12
+ worker is stopped on an idle timeout roughly every hour, by design, and a
13
+ background monitor exists to revive it. That monitor decided whether anything
14
+ was wrong by looking at a probe search: results with no meaning-score meant a
15
+ broken embedder. But it explicitly did not count *no results at all* — and no
16
+ results is what a dead embedder produces, because the meaning channel returns
17
+ nothing and the probe phrase appears in nobody's memories. So the one symptom
18
+ that should have started a repair was read as proof that none was needed, and
19
+ because a clean verdict is silent, it left no trace. Observed on a machine that
20
+ sat for over an hour, across two restarts, with searching by meaning switched
21
+ off, no explanation in the log, and a manual restart the only cure. The monitor
22
+ now asks the embedder directly, which is a question a search cannot answer.
23
+ - **There was no way to tell a quiet monitor from a dead one.** A check that
24
+ finds nothing wrong writes nothing, which is right — a monitor that narrates
25
+ every success is one whose warnings get skimmed past. But it left "is it even
26
+ running?" unanswerable except by waiting for something to break. The time of
27
+ the last check is now reported, so it can be looked at instead of inferred.
28
+ - **A failing repair would not say what it was failing.** When a completed
29
+ upgrade step stops holding, the report named the step and not the condition —
30
+ and that step checks five separate things. Anyone who hit it had to come back
31
+ and ask which. It now says which.
32
+ - **One drifted row could make the whole store unreachable.** Any failed upgrade
33
+ step made every request return "service unavailable". That is right when a
34
+ table is missing. It is wrong for the checks that guard *data* rather than
35
+ structure — ordinary use can undo those, a single background pass being
36
+ enough — and it left people restarting a daemon to fix something a restart
37
+ could not fix. Structural failures still refuse; a data check that drifted now
38
+ reports itself and keeps serving while it is repaired. Anything that does not
39
+ say which kind it is still refuses, so nothing became more permissive by
40
+ accident.
41
+
42
+ ### Changed
43
+ - **The plugin now installs and lists everywhere it should.** It is the main way
44
+ to get SLM, and it was only half-delivered:
45
+ - **Codex could not see it at all.** Codex reads `.codex-plugin/plugin.json` to
46
+ register a plugin and that file did not exist, so twelve skills, the hooks,
47
+ the launcher and the server config were all installed and none of it appeared
48
+ under Plugins. There was nothing to enable.
49
+ - **Codex was also missing two thirds of the product.** It shipped skills and
50
+ neither the four sub-agents nor the slash command. Both come from the same
51
+ single source as the Claude Code copies now, so they cannot drift.
52
+ - **Antigravity had no plugin at all.** It has one now, with the same skills,
53
+ agents, commands and hooks as every other surface.
54
+ - **VS Code was missing the slash command.**
55
+ - **Every release looked like no release.** The marketplace entry carried no
56
+ version, so a client had nothing to compare and an installed plugin never
57
+ appeared out of date. This reverses a rule of our own making; the version is
58
+ now stated, and one script owns every place that states it.
59
+ - **`slm doctor` now says whether your skills are as new as your install.** The
60
+ skills, agents and commands are delivered by your editor, not by `pip`, so
61
+ upgrading the package leaves them untouched — and nothing had ever mentioned
62
+ that. This release changed 76 files across them. Doctor now reports the plugin
63
+ version beside the package version and names the command that updates it.
64
+
65
+ ## [4.1.1] — A store older than its own indexes
66
+
67
+ ### Fixed
68
+ - **A store from an early version could not be opened at all, and there was no
69
+ way out of it.** Starting up creates the indexes, one of which is on a column
70
+ that arrives with a migration scheduled to run *after* the engine is up. On a
71
+ store old enough to predate that column, the index could not be created, so
72
+ startup failed — and the migration that would have added the column could not
73
+ run, because it runs after a startup that never finished. `slm db migrate` did
74
+ not help either: it reports nothing failed and skips that class of migration by
75
+ design. Any store in that state was stuck on the version it was already on.
76
+ The column is now added before the index that needs it, so those stores open
77
+ and finish upgrading on their own. Measured on a real 637 MB store: it went
78
+ from refusing to start to a complete upgrade in 19 seconds, with all 7,707
79
+ memories, 2,590 records and 848,945 connections unchanged and the integrity
80
+ check clean.
81
+
82
+ ## [4.1.0] — Every door asks the same question
83
+
84
+ ### Fixed
85
+ - **Nothing was recording which memories a recall actually returned, so nothing
86
+ could learn from it.** The step that notes "these memories were shown, for this
87
+ question, in this session" had no caller anywhere — a worker started with the
88
+ service and waited for events that were never sent. On a real store that left
89
+ every one of 162 recorded outcomes with no way to trace back to the recall that
90
+ produced it, every per-memory usefulness score sitting at its untouched
91
+ starting value, and the ranking model unchanged for eleven weeks. Recalls now
92
+ leave that record. It costs 1.6 microseconds and is written outside the reply,
93
+ so recall returns the same answers in the same time — measured across 30 warmed
94
+ queries, the difference was 3.5 ms in favour of the change, which is to say
95
+ none. It records only: whether what is learned may reorder your results remains
96
+ a separate setting that stays off unless you turn it on.
97
+ - **Memories stored since the last graph analysis were ranked as unconnected.**
98
+ Recall weighs a memory partly by where it sits in your knowledge graph. That
99
+ position was only recalculated when a consolidation happened to run or you
100
+ asked for it by hand, so on a real store 1,036 of 4,034 memories had no
101
+ position recorded — including every memory from the previous four days. They
102
+ were still found, then ranked as though nothing linked to them. The
103
+ calculation now runs on a schedule and again shortly after startup, it covers
104
+ every memory including ones with no links yet, and it no longer ranks memories
105
+ the store is not allowed to return, which had been diluting the scores of the
106
+ ones it can.
107
+ - **One small calculation could push a handful of memories above everything
108
+ else.** A separate routine gave every memory in a group the same score and
109
+ wrote it where the ranking reads. On a real store that score was more than ten
110
+ times the highest genuine one, so those memories took the largest ranking
111
+ bonus available for no reason beyond having shared a subject with a few
112
+ others. It has been removed; nothing depended on it.
113
+ - **Turning on per-user access did not apply to agent connections.** Company
114
+ mode is set from the dashboard, and the setting it writes was read by the web
115
+ interface but not by the connection your AI tools use — so with per-user access
116
+ on, two users configured, and one of them restricted to read-only, a write
117
+ arriving over the tool connection was accepted as the machine owner while the
118
+ same write through the dashboard was refused. Both now read the same setting,
119
+ and a tool connection that cannot identify who is calling is refused. Personal,
120
+ single-user use is unchanged and needs no login.
121
+ - **The settings could claim a storage engine that was not there.** A store
122
+ recorded the fast graph and vector engines as active with neither present on
123
+ disk and nothing in progress to explain it, so the dashboard reported one thing
124
+ while retrieval used another, on every restart. The claim is now checked
125
+ against what is actually on disk when the service starts, and dropped if there
126
+ is nothing behind it. Nothing is disabled: an engine that is installed is still
127
+ detected and used.
128
+ - **A note about which schema versions had been applied was stored thousands of
129
+ times over.** Seven versions were recorded as 3,496 rows on one store and
130
+ 234,348 on another, because the six places that write it all assumed a
131
+ uniqueness rule the table did not have. The rule is now there, so those writes
132
+ do what they always intended, and the duplicates are collapsed to one row each
133
+ keeping the original date.
134
+ - **A second workspace could take over a memory belonging to the first.** Where
135
+ two workspaces on one store were handed the same identifier for a memory or a
136
+ fact — an import keyed on an external record id, feeding one source into two
137
+ workspaces, does exactly this — the later write could claim the first
138
+ workspace's entry outright: new owner, new content, and the notes attached to
139
+ it discarded, with nothing raised. Whether it was refused or went through in
140
+ silence depended on unrelated details of the entry, so neither outcome could
141
+ be relied on. A write that would move an entry from one workspace to another
142
+ is now refused, and says which workspace owns it.
143
+
144
+ - **Restricting someone to read-only did not restrict every way in.** Per-user
145
+ access was applied where a memory is written, and not where one is deleted or
146
+ corrected over the network, not on four of the compliance controls, and not on
147
+ bulk import — which established who was calling and then never asked whether
148
+ they were allowed to write. Three ways of reading stored memories back asked
149
+ nothing at all. Every entrance now asks the same question of the same setting.
150
+ - **A workspace that could not answer "what is this person allowed to do?"
151
+ assumed the most permissive answer.** If that lookup failed — a busy store, a
152
+ locked file — the caller was treated as able to write. A lookup that fails is
153
+ not a lookup that said yes; it is now refused outright and says so, and the
154
+ caller can retry.
155
+ - **Deleting a memory left its connections behind.** The connections were
156
+ expected to be removed along with it and nothing removed them, so recall kept
157
+ walking links to memories that no longer existed. Both kinds of connection are
158
+ now removed with the memory. Erasing a person had the same shape: their entry
159
+ was removed from the store and left in the copy that search reads, name and
160
+ all, which is not what an erasure request means.
161
+ - **Housekeeping could remove connections it had no way to announce.** If the
162
+ copy that search reads could not be told what had gone, the removal was
163
+ committed anyway and the two drifted apart silently. It is now undone and
164
+ retried instead. `slm db regraph` rebuilds that copy from the store if they
165
+ have already drifted.
166
+ - **A request to be told what is held about you left out what had been learned
167
+ about how you work.** Erasure removed it; the export did not include it. Both
168
+ now cover the same ground.
169
+ - **Storing a memory waited on a model that was still loading.** A write
170
+ computes the memory's vector on the spot so it can be found by asking a
171
+ question rather than only by quoting its own words, and gives that one second
172
+ before handing the job to the background worker. It started that wait even
173
+ when the model had not loaded, which it could never win — loading takes about
174
+ ten seconds. On a copy of a real store the first twelve writes after a fresh
175
+ start took a median of 1,055 ms and eleven stored no vector; they now take
176
+ 34 ms. Writes against a loaded model are unchanged at about 75 ms. The service
177
+ now loads the model on startup, in the background, so the wait is not simply
178
+ moved onto whoever searches first.
179
+ - **The dashboard reported "Healthy" whenever the service answered at all**, and
180
+ the page never reloaded after an upgrade because the version it looked for was
181
+ never filled in — so an upgraded install kept showing the previous version's
182
+ page until someone cleared their cache by hand. Both fixed; the card now
183
+ reports what the service is actually doing, including how far the search copy
184
+ is behind.
185
+ - **An unrecognised result was recorded as a mildly positive one.** A client
186
+ reporting "ok" instead of one of the three accepted words had that counted as
187
+ partial success and fed to the ranking as though somebody had meant it. It is
188
+ now refused. An answer can also be reported on by name: recall returns an
189
+ identifier and a result quoting it is matched to that exact answer rather than
190
+ guessed at from overlap within a time window.
191
+ - **A hosted model was reported as available before a key was set for it.**
192
+ Switching to Mode C names a provider and leaves the key empty until you supply
193
+ one, and every surface said nothing was wrong while each model-backed feature
194
+ was about to fall back to assembling from your notes. It now says which step
195
+ is missing.
196
+ - **Repeated failures in a background task looked the same as one hiccup.** A
197
+ step failing every cycle for days reported exactly what a single transient
198
+ failure reported. It now says how long it has been failing.
199
+ - **Upgrading a large store could appear to hang.** Collapsing duplicated
200
+ schema-version records compared every record against every other of the same
201
+ version; on a store with 234,348 of them that had not finished after 25
202
+ minutes. It now takes 324 ms, and the whole upgrade of that store takes 40
203
+ seconds with every memory, fact and connection preserved.
204
+ - **A refusal from the service was reported as a crash.** Commands that were
205
+ correctly denied printed a stack trace instead of the reason, and one denial
206
+ told users to run a command that does not exist.
207
+ - **`slm connect claude-code` told you to run a command that does not exist.**
208
+ It pointed at `slm plugin install`; there is no `slm plugin` subcommand, so
209
+ the only instruction it gave ended in an error with nothing else offered. It
210
+ now names the two Claude Code commands that actually install the plugin, and
211
+ the setup wizard that runs both for you. Reported by @barrygfox (#123).
212
+ - **The bridge install in the IDE guide named a package that is not on npm.**
213
+ `@modelcontextprotocol/client-cli` has never existed, so the documented
214
+ install could not produce the `mcp-remote` binary that the config we write
215
+ points at. All three places now name `mcp-remote`, which does provide it.
216
+ Reported by @tonydzi (#122).
217
+ - **Two settings did not survive a restart.** The consistency threshold and the
218
+ per-channel retrieval weights were never written to the config file and never
219
+ read back, so tuning either one — by hand or by switching mode — lasted until
220
+ the next restart and then reverted to the default with nothing said. Both are
221
+ now saved and restored, a pair stays a pair through the file, and a section
222
+ someone has hand-edited into nonsense falls back to defaults instead of
223
+ stopping `slm` from running. Reported by @barrygfox (#124).
224
+ - **A migration failure said which, never why.** A migration recorded complete
225
+ is re-checked by its own verification on every start; when that check stops
226
+ passing, the log still reads complete while the health endpoint reports a
227
+ failure, and nothing said the two were answering different questions. The
228
+ health output now carries the reason for each failure, and `slm db migrate
229
+ --status` marks any migration whose recorded state and actual end-state
230
+ disagree instead of only reprinting the log. Reported by @unfall103-debug
231
+ (#125).
232
+ ### Changed
233
+ - **Every table that only grows now has a stated limit, or states why it has
234
+ none.** Three of them had a cleanup routine, each written and wired
235
+ separately; the fourth was found by reading a disk-usage report and the fifth
236
+ by reading the fourth. All 45 are now declared in one place with the reasoning
237
+ attached, one pass enforces them, and a table added without a decision is
238
+ something the tests can see. On a real store the first pass removed 7,342 rows
239
+ in 0.4 s, and 123,918 on a larger one — the biggest single group being 83,623
240
+ records describing memories that had already been deleted.
241
+ Nothing that holds your memories, your corrections, an erasure record, or the
242
+ feedback that improves ranking is touched; each of those says so explicitly.
243
+ Two tables are recorded as growing faster than the store with no rule decided
244
+ yet, rather than being quietly given one.
245
+ - **Recall assembles your knowledge graph from the graph store.** On a store with
246
+ 208,000 connections that assembly took 2.5 seconds and now takes 0.4. It runs
247
+ whenever the graph changes, so it was on the path of a recall. The answers are
248
+ the same — every probe query returns the same memories with the same scores
249
+ from either source. Recalls that also span shared or global memories continue
250
+ to read SQLite, which is the only store that holds them.
251
+
8
252
  ## [4.0.10] — Your memories, not the summarizer's
9
253
 
10
254
  ### Fixed
package/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
  </picture>
6
6
  </p>
7
7
 
8
- <h1 align="center">SuperLocalMemory V4.0.10</h1>
8
+ <h1 align="center">SuperLocalMemory V4.1.2</h1>
9
9
 
10
10
  <h2 align="center">Rent the LLM. Own the memory.</h2>
11
11
 
@@ -27,12 +27,12 @@ guarantee here is stated as a falsifiable invariant, tested under an adversarial
27
27
  negative control, and shipped with the harness that regenerates the evidence:
28
28
  <code>python benchmark/run_all.py --trials 200 --output-dir results/</code>. What each experiment
29
29
  does <em>not</em> exercise is stated too.</p>
30
- <p align="center"><code>v4.0.10</code> — one control plane: <strong>SLM-Mesh</strong> peer coordination · multi-scope memory (personal / shared / global) · profiles · Cache · Compress · 7-layer retrieval · code graph · Entity Explorer · skill evolution · Modes A/B/C · GDPR retention &amp; audit chain · bounded loops — across CLI, MCP, dashboard, the <strong>Claude plugin</strong>, the <strong>Codex add-on</strong>, and documented IDE integrations.<br/>
30
+ <p align="center"><code>v4.1.2</code> — one control plane: <strong>SLM-Mesh</strong> peer coordination · multi-scope memory (personal / shared / global) · profiles · Cache · Compress · 7-layer retrieval · code graph · Entity Explorer · skill evolution · Modes A/B/C · GDPR retention &amp; audit chain · bounded loops — across CLI, MCP, dashboard, the <strong>Claude plugin</strong>, the <strong>Codex add-on</strong>, and documented IDE integrations.<br/>
31
31
  Proxy: <code>slm wrap claude</code> &nbsp;·&nbsp; MCP: add <code>slm_compress</code> to your config &nbsp;·&nbsp; Skill: zero-config</p>
32
32
  <p align="center"><strong>Four public arXiv preprints</strong> · V4: <a href="https://arxiv.org/abs/2608.08253">arXiv:2608.08253</a> · companion archive: <a href="https://zenodo.org/records/21853302">Zenodo 21853302</a> (<a href="https://doi.org/10.5281/zenodo.21853302">DOI 10.5281/zenodo.21853302</a>) · prior preprints: <a href="https://arxiv.org/abs/2603.02240">2603.02240</a> · <a href="https://arxiv.org/abs/2603.14588">2603.14588</a> · <a href="https://arxiv.org/abs/2604.04514">2604.04514</a>.</p>
33
33
 
34
34
  <p align="center">
35
- <a href="CHANGELOG.md"><img src="https://img.shields.io/badge/v4.0.10-Current_Release-2ea44f?style=for-the-badge&logo=checkmarx&logoColor=white" alt="v4.0.10 — Current Release"/></a>
35
+ <a href="CHANGELOG.md"><img src="https://img.shields.io/badge/v4.1.2-Current_Release-2ea44f?style=for-the-badge&logo=checkmarx&logoColor=white" alt="v4.1.2 — Current Release"/></a>
36
36
  <a href="https://arxiv.org/abs/2608.08253"><img src="https://img.shields.io/badge/arXiv-2608.08253-b31b1b?style=for-the-badge&logo=arxiv&logoColor=white" alt="SuperLocalMemory 4.0 paper on arXiv:2608.08253"/></a>
37
37
  <a href="https://zenodo.org/records/21853302"><img src="https://img.shields.io/badge/Zenodo-10.5281%2Fzenodo.21853302-1682D4?style=for-the-badge&logo=zenodo&logoColor=white" alt="V4 paper on Zenodo: 10.5281/zenodo.21853302"/></a>
38
38
  <a href="https://arxiv.org/abs/2603.14588"><img src="https://img.shields.io/badge/arXiv-2603.14588-b31b1b?style=for-the-badge&logo=arxiv&logoColor=white" alt="arXiv Paper"/></a>
@@ -45,7 +45,7 @@ Proxy: <code>slm wrap claude</code> &nbsp;·&nbsp; MCP: add <code>slm_compress</
45
45
  <a href="https://superlocalmemory.com"><img src="https://img.shields.io/badge/Web-superlocalmemory.com-ff6b35?style=for-the-badge" alt="Website"/></a>
46
46
  <a href="#dual-interface-mcp--cli"><img src="https://img.shields.io/badge/MCP-Native-blue?style=for-the-badge" alt="MCP Native"/></a>
47
47
  <a href="#dual-interface-mcp--cli"><img src="https://img.shields.io/badge/CLI-Agent--Native-green?style=for-the-badge" alt="CLI Agent-Native"/></a>
48
- <a href="#multilingual-embedding-support"><img src="https://img.shields.io/badge/Multilingual-30%2B_Languages-ff69b4?style=for-the-badge" alt="Multilingual 30+ Languages"/></a>
48
+ <a href="#multilingual-embedding-support"><img src="https://img.shields.io/badge/Multilingual-via_your_embedding_model-ff69b4?style=for-the-badge" alt="Multilingual via your embedding model"/></a>
49
49
  </p>
50
50
 
51
51
  ---
@@ -62,11 +62,7 @@ SuperLocalMemory V4 combines conventional dense and lexical retrieval with graph
62
62
 
63
63
  **Memory with a sense of time.** SLM does not only store *what* an agent learned — it records *when*. Every fact carries ingestion timing and provenance; recall runs a dedicated temporal candidate channel alongside semantic, lexical, and associative retrieval; scenes and entity timelines reconstruct sequence; and the lifecycle lets neglected memory decay and self-archive instead of growing without bound. Time is a first-class ranking and lifecycle signal rather than a timestamp column an agent never reads — which is what lets a long-lived agent reason about how its context changed, not only what it currently holds.
64
64
 
65
- **What V4.0.7 ships.** Three things that existed but could not be used. `slm summary` gives you a readable layer over your own memories — `day` for what you recorded today, `project` for a directory, `session` for one session — each stating how much of the underlying data it could actually see, with `--json` listing the exact memories it came from. Memories that mention a function, method or file are now linked to that code, with a short description of what they point at and a marker once the code has changed; expanding a memory in the dashboard shows it. Both need no language model, so they work in the fully local mode. The code↔memory bridge behind the second one had never run at all: the setup flag was written and never read, the build discarded it, its settings had no loader, and the method it was written against was an unimplemented placeholder. Linking runs during background maintenance, never when a memory is saved. See [reviewed corrections](docs/reviewed-corrections.md) for the correction lifecycle and [MCP tools](docs/mcp-tools.md) for host-facing commands.
66
-
67
- **Fixed in V4.0.7.** Version numbers disagreed across the project — the pip requirement pins, npm lockfile, editor plugin manifest, citation metadata and lockfile all still named the previous release, so installing from `requirements.txt` fetched the wrong version; one script now sets all fifteen. Stale-memory checks reported "nothing is stale" when code linking was simply switched off, and pointed at a setting that did not exist. `slm gdpr` was missing from `slm help`. Consolidation, handed something that was neither a database handle nor a path, created a file named after the object instead of refusing it.
68
-
69
- **Carried forward from V4.0.5 and V4.0.6.** A correction is a review-gated lifecycle, not an in-place edit: SLM creates an immutable successor, keeps it out of current recall until an authenticated reviewer applies it, and preserves the predecessor for time-aware history. Every candidate path — cached context, pins, bridge and scene expansion — uses hard current-truth admission and abstains if that truth cannot be read. `slm brain`, MCP, HTTP and the Living Brain share one observation-only BrainTruth snapshot; feedback, external Bounded Loops evidence and receipt claims are shown honestly but never silently alter recall, ranking or model routing. The Living Brain leads with how many questions your memory has answered rather than a raw event count, and says so plainly where nothing has been measured yet. The knowledge graph opens reliably, with a default of 50 nodes and its details panel reachable on narrow screens. The optional adaptive ranker stays off unless an operator sets `SLM_RANKING` (`v1`, `v2`, or `v2-ensemble`) — that gate prevents feedback and observation data from changing ranking without an explicit decision, and does not disable the normal retrieval channels.
65
+ **What changed in this release.** See the [CHANGELOG](CHANGELOG.md) every release is written up there, in plain language, newest first.
70
66
 
71
67
  - **[SLM-Mesh](#slm-mesh-cross-session--cross-machine-coordination)** — authenticated cross-session and cross-machine peer coordination (messages, locks, shared state, inbox/outbox, optional discovery). Coordination only — not automatic replicated memory.
72
68
  - **Multi-scope memory & profiles** — workspaces (profiles) plus `personal` / `shared` / `global` scopes; cross-profile recall is default-deny.
@@ -300,7 +296,7 @@ retrieved at runtime rather than copied into those files.
300
296
  **Score Contract v2:** `relevance_score` is query-relative relevance;
301
297
  `ranking_score` is internal ranking utility; `memory_confidence` belongs to the
302
298
  stored assertion; and `trust_score` is an evidence-policy signal. Legacy
303
- `score` and `confidence` remain aliases for one compatibility release. V3.8.0 is
299
+ `score` and `confidence` remain aliases for one compatibility release. It is
304
300
  explicitly uncalibrated: `calibration_status` is `uncalibrated` and
305
301
  `answer_confidence` is `null`. See
306
302
  [the retrieval score contract](docs/retrieval-score-contract.md).
@@ -310,13 +306,13 @@ can run without a cloud LLM:
310
306
 
311
307
  1. **Fisher-informed scoring** — dense candidate generation uses cosine similarity; Fisher-derived terms can modify later scoring when their state is available.
312
308
  2. **Sheaf Cohomology for Consistency** — algebraic topology detects contradictions via coboundary norms on the knowledge graph.
313
- 3. **Riemannian Langevin Lifecycle** — memory positions evolve on the Poincare ball; neglected memories self-archive, no hardcoded thresholds.
309
+ 3. **Riemannian Langevin Lifecycle** — memory positions evolve continuously on the Poincare ball, and where a memory sits decides its lifecycle stage. There is no retention timer counting down against a memory: what moves it outward is being left alone, and what pulls it back is being used. The stage boundaries themselves are fixed radii.
314
310
 
315
311
  Auto-capture hooks are installed explicitly with `slm hooks install` (Claude
316
312
  Code) or `slm hooks install --agent codex` (Codex). Hook latency and capture
317
- quality must be evaluated for the target client and workload; V3.8.0 publishes no universal p99 claim.
313
+ quality must be evaluated for the target client and workload; SLM publishes no universal p99 claim.
318
314
 
319
- **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)**.
315
+ **Multi-scope memory (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)**.
320
316
 
321
317
  <a id="multilingual-embedding-support"></a>
322
318
 
@@ -386,7 +382,7 @@ Full docs: [docs/multi-machine.md](docs/multi-machine.md) · [docs/distributed-d
386
382
  | **Python CLI + SDK** (primary) | Activate a Python virtual environment, then `python -m pip install superlocalmemory` | Python 3.11+; the `slm` CLI and importable SDK stay inside that environment |
387
383
  | **Repository clone — macOS/Linux** | `./scripts/install.sh install` | Research/contributor path; delegates to an existing uv or pipx installation |
388
384
  | **Repository clone — Windows** | `.\scripts\install.ps1 -Action Install` | Research/contributor path; delegates to an existing uv or pipx installation |
389
- | **Claude Code Plugin** | `/plugin marketplace add qualixar/superlocalmemory` then `/plugin install superlocalmemory@qualixar` | Self-bootstraps venv, isolated SLM_DATA_DIR, additive — 16-tool core. Ships the skills/agents/hooks/commands |
385
+ | **Claude Code Plugin** | `/plugin marketplace add qualixar/superlocalmemory` then `/plugin install superlocalmemory@qualixar` | Self-bootstraps venv, isolated SLM_DATA_DIR, additive — 34-tool code profile. Ships the skills/agents/hooks/commands |
390
386
  | **Portable / IDE connect** | `slm connect <ide> [--here]` | Wire any IDE without reinstalling; `slm connect claude-code` → plugin pointer |
391
387
 
392
388
  After any install path: `slm setup` → `slm doctor` → `slm warmup` (optional, pre-downloads ~500MB embedding model).
@@ -422,7 +418,7 @@ and the Claude Code plugin update path.
422
418
 
423
419
  SLM supports two MCP transports:
424
420
 
425
- **HTTP (recommended, v3.6.7+):**
421
+ **HTTP (recommended):**
426
422
  ```json
427
423
  { "mcpServers": { "superlocalmemory": { "type": "http", "url": "http://127.0.0.1:8765/mcp/" } } }
428
424
  ```
@@ -461,77 +457,46 @@ Per-IDE configs available for Claude Code, Cursor, Windsurf, VS Code Copilot, Co
461
457
 
462
458
  ---
463
459
 
464
- ## Claude Code Plugin
460
+ ## Editor plugins
465
461
 
466
- Install directly in Claude Code no system-level npm/pip needed. This is how you
467
- get the **skills, agents, hooks, commands, and rules** (the MCP server is
468
- bootstrapped automatically). It is a two-step flow — add the marketplace once,
469
- then install:
462
+ The plugin is how most people should install SLM. It brings the MCP server, the
463
+ skills, the sub-agents, the slash commands and the hooks in one step, and keeps
464
+ them at the same version as the package.
470
465
 
471
- ```bash
472
- # 1. Add the Qualixar marketplace (one-time — the repo IS the marketplace)
473
- /plugin marketplace add qualixar/superlocalmemory
474
-
475
- # 2. Install the plugin
476
- /plugin install superlocalmemory@qualixar
477
- ```
466
+ **Four surfaces, one source.** Everything below is generated from `plugin-src/`,
467
+ so no surface can quietly fall behind another:
478
468
 
479
- - Self-bootstraps a Python venv, installs all deps in an isolated `SLM_DATA_DIR`
480
- - Registers the 16-tool core MCP surface (`core16` profile by default; `core14` remains a compatibility alias)
481
- - Ships the SLM skills / agents / hooks / commands / rules
482
- - Additive does not replace an existing SLM install
483
- - `slm connect claude-code` detects an existing plugin install and links them
469
+ | Editor | Install | Skills | Agents | Commands | Hooks |
470
+ |---|---|---:|---:|---:|---:|
471
+ | **Claude Code** | `claude plugin marketplace add qualixar/superlocalmemory` then `claude plugin install superlocalmemory@qualixar` | 12 | 4 | 1 | yes |
472
+ | **Codex** | copy `codex-plugin/` into your Codex plugins directory | 12 | 4 | 1 | yes |
473
+ | **VS Code / Copilot** | copy `copilot-plugin/.github/` into your repository | 12 | 4 | as prompts | yes |
474
+ | **Antigravity** | copy `antigravity-plugin/` into your plugins directory | 12 | 4 | 1 | yes |
484
475
 
485
- > **Plugin vs Python/npm:** `python -m pip install superlocalmemory` inside an
486
- > activated virtual environment, or `npm i -g superlocalmemory`,
487
- > give you the `slm` CLI + the MCP server (the *tools*). The **skills/agents/hooks/
488
- > commands** come only through the plugin above. Use the plugin for Claude Code; use
489
- > pip/npm for the CLI or other IDEs.
476
+ ### What you get
490
477
 
491
- To update later: `/plugin marketplace update qualixar` then `/plugin install superlocalmemory@qualixar`.
478
+ - **Skills** `slm-remember`, `slm-recall`, `slm-session`, `slm-graph`,
479
+ `slm-mesh`, `slm-scope`, `slm-profile`, `slm-governance`, `slm-cache`,
480
+ `slm-compress`, `slm-status`, `slm-loop`.
481
+ - **Sub-agents** — a memory advisor, a governance advisor, a context-optimization
482
+ advisor, and a loop runner, each scoped to the tools it actually needs.
483
+ - **Commands** — `/slm-loop`, to run a task as a gate-verified bounded loop.
484
+ - **Hooks** — session start and end, so context loads and commits without being
485
+ asked.
492
486
 
493
- ## Codex add-on
494
-
495
- For Codex, install the SLM-owned skills, two focused subagents, and four
496
- lifecycle hooks explicitly:
497
-
498
- ```bash
499
- slm codex install
500
- ```
487
+ ### Keeping it current
501
488
 
502
- This adds only SLM-owned files under `~/.agents/skills`, `~/.codex/agents`, and
503
- `~/.codex/hooks.json`; it does not replace another agent's hooks or rewrite
504
- `~/.codex/config.toml`. Codex requires review and trust for new command hooks:
505
- open `/hooks` after installation. MCP wiring remains a separate explicit step:
489
+ `pipx upgrade superlocalmemory` upgrades the **package**. It does not
490
+ upgrade the plugin those are separate channels, and the plugin is delivered by
491
+ your editor. `slm doctor` reports both versions side by side and names the
492
+ command that updates the one that is behind.
506
493
 
507
494
  ```bash
508
- slm connect codex
495
+ claude plugin marketplace update qualixar
496
+ claude plugin update superlocalmemory@qualixar
509
497
  ```
510
498
 
511
- `slm connect codex` semantically merges the `superlocalmemory` MCP server into
512
- `~/.codex/config.toml`, preserving unrelated configuration keys and writing
513
- atomically. TOML serializers can normalize whitespace and comments, so it is
514
- not a byte-preserving operation; use it only when you want the MCP server
515
- configured. Check the result with `slm codex status`; undo SLM-owned add-ons
516
- with `slm codex remove`.
517
-
518
- ## GitHub Copilot integration
519
-
520
- The shipped installer configures the SuperLocalMemory MCP server and additive
521
- agent instructions for VS Code with GitHub Copilot:
522
-
523
- ```bash
524
- slm connect vscode-copilot --here
525
- ```
526
-
527
- Run it from the project root. It semantically merges the SLM server into
528
- `.vscode/mcp.json` and adds SLM-owned guidance inside
529
- `.github/copilot-instructions.md`, preserving unrelated servers and existing
530
- instructions. The generated `copilot-plugin/` source bundle is maintained for
531
- parity checks, but v3.8.1 does not claim that `slm connect` installs its prompt,
532
- agent, or hook files.
533
-
534
- ---
499
+ For the other three, replace the directory from the tag you are on.
535
500
 
536
501
  ## Privacy controls and operating modes
537
502
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "superlocalmemory",
3
- "version": "4.0.10",
3
+ "version": "4.1.2",
4
4
  "description": "Local-first agent memory with MCP and an agent-native CLI. Documented clients include Claude Code, Cursor, and Windsurf.",
5
5
  "keywords": [
6
6
  "ai-memory",
@@ -50,10 +50,13 @@
50
50
  "check:plugin": "node scripts/build-plugin.mjs --check",
51
51
  "build:copilot-plugin": "node scripts/build-copilot-plugin.mjs",
52
52
  "check:copilot-plugin": "node scripts/build-copilot-plugin.mjs --check",
53
- "prepack": "node scripts/build-plugin.mjs && node scripts/build-copilot-plugin.mjs && node scripts/prepack.js",
53
+ "build:codex-plugin": "node scripts/build-codex-plugin.mjs",
54
+ "check:codex-plugin": "node scripts/build-codex-plugin.mjs --check",
55
+ "prepack": "node scripts/build-plugin.mjs && node scripts/build-copilot-plugin.mjs && node scripts/build-codex-plugin.mjs && node scripts/build-antigravity-plugin.mjs && node scripts/prepack.js",
54
56
  "postinstall": "node scripts/postinstall.js",
55
57
  "preuninstall": "node scripts/preuninstall.js",
56
- "test": "node scripts/run-ui-tests.mjs"
58
+ "test": "node scripts/run-ui-tests.mjs",
59
+ "build:antigravity-plugin": "node scripts/build-antigravity-plugin.mjs"
57
60
  },
58
61
  "engines": {
59
62
  "node": ">=18.0.0",
@@ -3,7 +3,7 @@
3
3
  "name": "Qualixar",
4
4
  "url": "https://github.com/qualixar/superlocalmemory"
5
5
  },
6
- "description": "Local-first agent memory + reversible context compression and KV cache, as an MCP server. 21-tool code profile with graph intelligence.",
6
+ "description": "Local-first agent memory + reversible context compression and KV cache, as an MCP server. 34-tool code profile with graph intelligence.",
7
7
  "displayName": "SuperLocalMemory",
8
8
  "keywords": [
9
9
  "memory",
@@ -15,5 +15,5 @@
15
15
  "mcpServers": "./.mcp.json",
16
16
  "name": "superlocalmemory",
17
17
  "repository": "https://github.com/qualixar/superlocalmemory",
18
- "version": "4.0.10"
18
+ "version": "4.1.2"
19
19
  }
package/plugin/CLAUDE.md CHANGED
@@ -1,4 +1,4 @@
1
- <!-- BEGIN SuperLocalMemory v4.0.10 -->
1
+ <!-- BEGIN SuperLocalMemory v4.1.2 -->
2
2
 
3
3
  ## SuperLocalMemory (SLM) — Agent Rules
4
4
 
@@ -39,6 +39,6 @@ slm-recall · slm-remember · slm-session · slm-status · slm-cache · slm-comp
39
39
  ### Subagents
40
40
  slm-memory-advisor (memory decisions, session hygiene, scope/profile guidance) · slm-optimize-advisor (context compression + KV cache) · slm-governance-advisor (scope/roles/compliance/GDPR)
41
41
 
42
- <!-- END SuperLocalMemory v4.0.10 -->
42
+ <!-- END SuperLocalMemory v4.1.2 -->
43
43
 
44
- SuperLocalMemory v4.0.10 · Qualixar · AGPL-3.0-or-later
44
+ SuperLocalMemory v4.1.2 · Qualixar · AGPL-3.0-or-later
@@ -77,4 +77,4 @@ slm-scope · slm-governance · slm-profile · slm-remember · slm-recall
77
77
  # What NOT to do
78
78
  Never session_init twice; never forget without dry-run preview; never store secrets; never bypass role checks; never claim an erasure succeeded without verifying via recall.
79
79
 
80
- SuperLocalMemory v4.0.10 · Qualixar · AGPL-3.0-or-later
80
+ SuperLocalMemory v4.1.2 · Qualixar · AGPL-3.0-or-later
@@ -8,7 +8,7 @@ description: >
8
8
  completion with an auditable, resumable ledger persisted in SLM. Reports the
9
9
  exact terminal status (DONE/HALT/PAUSE/KILLED/ERROR) and never dresses a
10
10
  non-DONE outcome up as success.
11
- tools: Bash, slm_recall, slm_remember, Read
11
+ tools: Bash, recall, remember, Read
12
12
  model: inherit
13
13
  ---
14
14
 
@@ -57,8 +57,8 @@ bounds, or report the exact non-DONE status.
57
57
 
58
58
  # Memory hygiene
59
59
 
60
- - At the start, `slm_recall` prior runs of the same loop to resume context.
61
- - On a substantial outcome, `slm_remember` a one-paragraph summary (what the
60
+ - At the start, `recall` prior runs of the same loop to resume context.
61
+ - On a substantial outcome, `remember` a one-paragraph summary (what the
62
62
  gate was, the final status, the run_id) so the next session can find it.
63
63
 
64
64
  # Anti-rationalization
@@ -68,4 +68,4 @@ assessment. The gate is the authority.
68
68
 
69
69
  ---
70
70
 
71
- SuperLocalMemory v4.0.10 · Qualixar · AGPL-3.0-or-later
71
+ SuperLocalMemory v4.1.2 · Qualixar · AGPL-3.0-or-later
@@ -46,4 +46,4 @@ slm-recall · slm-remember · slm-session · slm-scope · slm-profile · slm-gov
46
46
  # What NOT to do
47
47
  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; never bypass scope or governance restrictions.
48
48
 
49
- SuperLocalMemory v4.0.10 · Qualixar · AGPL-3.0-or-later
49
+ SuperLocalMemory v4.1.2 · Qualixar · AGPL-3.0-or-later
@@ -41,4 +41,4 @@ slm-compress · slm-cache · slm-status · slm-profile
41
41
  # What NOT to do
42
42
  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 %; never carry ccr_ids across profile switches.
43
43
 
44
- SuperLocalMemory v4.0.10 · Qualixar · AGPL-3.0-or-later
44
+ SuperLocalMemory v4.1.2 · Qualixar · AGPL-3.0-or-later
@@ -1 +1 @@
1
- superlocalmemory==4.0.10
1
+ superlocalmemory==4.1.2
@@ -145,4 +145,4 @@ These subcommands control daemon-level cache settings. They do not read or write
145
145
 
146
146
  ---
147
147
 
148
- SuperLocalMemory v4.0.10 · Qualixar · AGPL-3.0-or-later
148
+ SuperLocalMemory v4.1.2 · Qualixar · AGPL-3.0-or-later
@@ -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.0.10 · Qualixar · AGPL-3.0-or-later
150
+ SuperLocalMemory v4.1.2 · Qualixar · AGPL-3.0-or-later
@@ -245,4 +245,4 @@ Before running any destructive operation (`forget`, `compact_memories`):
245
245
 
246
246
  ---
247
247
 
248
- *SuperLocalMemory v4.0.10 · Qualixar · AGPL-3.0-or-later*
248
+ *SuperLocalMemory v4.1.2 · Qualixar · AGPL-3.0-or-later*
@@ -312,4 +312,4 @@ profile. See `slm-profile` for the full profile switching workflow.
312
312
 
313
313
  ---
314
314
 
315
- SuperLocalMemory v4.0.10 · Qualixar · AGPL-3.0-or-later
315
+ SuperLocalMemory v4.1.2 · Qualixar · AGPL-3.0-or-later