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.
- package/.claude-plugin/marketplace.json +12 -2
- package/CHANGELOG.md +244 -0
- package/README.md +40 -75
- package/package.json +6 -3
- package/plugin/.claude-plugin/plugin.json +2 -2
- package/plugin/CLAUDE.md +3 -3
- package/plugin/agents/slm-governance-advisor.md +1 -1
- package/plugin/agents/slm-loop-runner.md +4 -4
- package/plugin/agents/slm-memory-advisor.md +1 -1
- package/plugin/agents/slm-optimize-advisor.md +1 -1
- package/plugin/requirements.txt +1 -1
- package/plugin/skills/slm-cache/SKILL.md +1 -1
- package/plugin/skills/slm-compress/SKILL.md +1 -1
- package/plugin/skills/slm-governance/SKILL.md +1 -1
- package/plugin/skills/slm-graph/SKILL.md +1 -1
- package/plugin/skills/slm-loop/SKILL.md +2 -2
- package/plugin/skills/slm-mesh/SKILL.md +1 -1
- package/plugin/skills/slm-profile/SKILL.md +5 -5
- package/plugin/skills/slm-recall/SKILL.md +102 -15
- package/plugin/skills/slm-remember/SKILL.md +35 -3
- package/plugin/skills/slm-scope/SKILL.md +1 -1
- package/plugin/skills/slm-session/SKILL.md +29 -3
- package/plugin/skills/slm-status/SKILL.md +1 -1
- package/plugin-src/rules/AGENTS.md +16 -8
- package/plugin-src/skills/slm-cache/SKILL.md +1 -1
- package/plugin-src/skills/slm-compress/SKILL.md +1 -1
- package/plugin-src/skills/slm-governance/SKILL.md +1 -1
- package/plugin-src/skills/slm-graph/SKILL.md +1 -1
- package/plugin-src/skills/slm-loop/SKILL.md +2 -2
- package/plugin-src/skills/slm-mesh/SKILL.md +1 -1
- package/plugin-src/skills/slm-profile/SKILL.md +5 -5
- package/plugin-src/skills/slm-recall/SKILL.md +102 -15
- package/plugin-src/skills/slm-remember/SKILL.md +35 -3
- package/plugin-src/skills/slm-scope/SKILL.md +1 -1
- package/plugin-src/skills/slm-session/SKILL.md +29 -3
- package/plugin-src/skills/slm-status/SKILL.md +1 -1
- package/pyproject.toml +1 -1
- package/src/superlocalmemory/__init__.py +1 -1
- package/src/superlocalmemory/cli/commands.py +357 -18
- package/src/superlocalmemory/cli/daemon.py +30 -0
- package/src/superlocalmemory/cli/db_migrate.py +71 -1
- package/src/superlocalmemory/cli/gdpr_cmd.py +15 -2
- package/src/superlocalmemory/cli/main.py +24 -2
- package/src/superlocalmemory/code_graph/database.py +44 -0
- package/src/superlocalmemory/compliance/gdpr.py +449 -39
- package/src/superlocalmemory/core/admission.py +231 -11
- package/src/superlocalmemory/core/backend_orchestrator.py +190 -84
- package/src/superlocalmemory/core/config.py +90 -11
- package/src/superlocalmemory/core/consolidation_engine.py +34 -0
- package/src/superlocalmemory/core/engine.py +140 -11
- package/src/superlocalmemory/core/graph_analyzer.py +76 -112
- package/src/superlocalmemory/core/graph_metrics.py +597 -0
- package/src/superlocalmemory/core/graph_pruner.py +121 -0
- package/src/superlocalmemory/core/maintenance_scheduler.py +205 -0
- package/src/superlocalmemory/core/mode_capability.py +111 -0
- package/src/superlocalmemory/core/ollama_validator.py +315 -0
- package/src/superlocalmemory/core/projection_drain.py +380 -0
- package/src/superlocalmemory/core/recall_pipeline.py +390 -3
- package/src/superlocalmemory/core/recall_worker.py +6 -3
- package/src/superlocalmemory/core/scale_autopromote.py +196 -0
- package/src/superlocalmemory/core/scale_engine.py +16 -2
- package/src/superlocalmemory/core/score_contract.py +21 -1
- package/src/superlocalmemory/core/session_identity.py +85 -0
- package/src/superlocalmemory/core/status_contract.py +108 -0
- package/src/superlocalmemory/core/worker_pool.py +4 -4
- package/src/superlocalmemory/core/working_memory.py +288 -0
- package/src/superlocalmemory/encoding/cognitive_consolidator.py +36 -6
- package/src/superlocalmemory/encoding/context_generator.py +1 -1
- package/src/superlocalmemory/encoding/entity_resolver.py +38 -0
- package/src/superlocalmemory/encoding/fact_extractor.py +18 -14
- package/src/superlocalmemory/encoding/prospective_markers.py +262 -0
- package/src/superlocalmemory/encoding/type_router.py +12 -12
- package/src/superlocalmemory/evolution/mutation_generator.py +30 -4
- package/src/superlocalmemory/graph/cozo_adjacency.py +122 -0
- package/src/superlocalmemory/graph/cozo_backend.py +103 -138
- package/src/superlocalmemory/hooks/portable_kit.py +10 -2
- package/src/superlocalmemory/learning/bandit.py +43 -0
- package/src/superlocalmemory/learning/consolidation_worker.py +54 -0
- package/src/superlocalmemory/learning/database.py +60 -3
- package/src/superlocalmemory/learning/entity_compiler.py +21 -58
- package/src/superlocalmemory/learning/feedback.py +3 -1
- package/src/superlocalmemory/learning/outcomes.py +47 -16
- package/src/superlocalmemory/learning/pattern_miner.py +28 -3
- package/src/superlocalmemory/learning/pattern_miner_constants.py +43 -0
- package/src/superlocalmemory/learning/pcos.py +291 -0
- package/src/superlocalmemory/learning/reward_from_outcomes.py +365 -0
- package/src/superlocalmemory/learning/reward_proxy.py +100 -10
- package/src/superlocalmemory/learning/signal_kinds.py +79 -0
- package/src/superlocalmemory/mcp/profiles.py +14 -2
- package/src/superlocalmemory/mcp/tools_active.py +2 -1
- package/src/superlocalmemory/mcp/tools_core.py +31 -3
- package/src/superlocalmemory/mcp/tools_v28.py +20 -1
- package/src/superlocalmemory/parameterization/pattern_extractor.py +14 -1
- package/src/superlocalmemory/parameterization/soft_prompt_generator.py +98 -0
- package/src/superlocalmemory/retrieval/bm25_channel.py +64 -3
- package/src/superlocalmemory/retrieval/channel_status.py +117 -0
- package/src/superlocalmemory/retrieval/engine.py +106 -11
- package/src/superlocalmemory/retrieval/entity_channel.py +210 -256
- package/src/superlocalmemory/retrieval/graph_adjacency.py +219 -0
- package/src/superlocalmemory/retrieval/scope_policy.py +20 -0
- package/src/superlocalmemory/retrieval/semantic_channel.py +47 -5
- package/src/superlocalmemory/retrieval/spreading.py +288 -0
- package/src/superlocalmemory/server/api.py +24 -5
- package/src/superlocalmemory/server/bandit_loops.py +17 -1
- package/src/superlocalmemory/server/rbac_enforce.py +26 -6
- package/src/superlocalmemory/server/recall_health.py +87 -10
- package/src/superlocalmemory/server/recall_serializer.py +9 -0
- package/src/superlocalmemory/server/routes/behavioral.py +75 -10
- package/src/superlocalmemory/server/routes/compliance.py +98 -18
- package/src/superlocalmemory/server/routes/config_api.py +186 -4
- package/src/superlocalmemory/server/routes/evolution.py +178 -0
- package/src/superlocalmemory/server/routes/ingest.py +8 -0
- package/src/superlocalmemory/server/routes/learning_telemetry.py +2 -1
- package/src/superlocalmemory/server/routes/memories.py +49 -7
- package/src/superlocalmemory/server/routes/timeline.py +4 -0
- package/src/superlocalmemory/server/routes/v3_api.py +191 -15
- package/src/superlocalmemory/server/ui.py +20 -4
- package/src/superlocalmemory/server/unified_daemon.py +241 -7
- package/src/superlocalmemory/storage/_migration_internals.py +54 -2
- package/src/superlocalmemory/storage/_schema_version.py +24 -3
- package/src/superlocalmemory/storage/database.py +477 -59
- package/src/superlocalmemory/storage/embedding_codec.py +71 -0
- package/src/superlocalmemory/storage/lineage_retention.py +236 -0
- package/src/superlocalmemory/storage/logical_edges.py +43 -2
- package/src/superlocalmemory/storage/migration_runner.py +119 -0
- package/src/superlocalmemory/storage/migrations/M043_quarantine_display_summaries.py +60 -36
- package/src/superlocalmemory/storage/migrations/M044_play_carries_its_own_evidence.py +127 -0
- package/src/superlocalmemory/storage/migrations/M045_fact_outcome_score.py +158 -0
- package/src/superlocalmemory/storage/migrations/M046_prospective_memory_has_its_own_name.py +620 -0
- package/src/superlocalmemory/storage/migrations/M047_fisher_vectors_are_stored_like_every_other_vector.py +306 -0
- package/src/superlocalmemory/storage/migrations/M048_upcoming_holds_only_what_is_upcoming.py +207 -0
- package/src/superlocalmemory/storage/migrations/M049_a_schema_version_marker_is_one_row.py +201 -0
- package/src/superlocalmemory/storage/migrations.py +18 -2
- package/src/superlocalmemory/storage/models.py +40 -1
- package/src/superlocalmemory/storage/projection_outbox.py +346 -0
- package/src/superlocalmemory/storage/retention_policy.py +860 -0
- package/src/superlocalmemory/storage/schema.py +35 -1
- package/src/superlocalmemory/storage/write_coordinator.py +19 -2
- package/src/superlocalmemory/trust/scorer.py +43 -1
- package/src/superlocalmemory/ui/index.html +9 -18
- package/src/superlocalmemory/ui/js/event-delegation.js +12 -1
- package/src/superlocalmemory/ui/js/od-health.js +28 -6
- package/src/superlocalmemory/ui/js/od-memories.js +19 -0
- package/src/superlocalmemory/ui/js/od-settings.js +87 -1
- 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.
|
|
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.
|
|
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.
|
|
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 & 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> · MCP: add <code>slm_compress</code> to your config · 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.
|
|
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> · 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-
|
|
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
|
|
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.
|
|
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
|
|
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;
|
|
313
|
+
quality must be evaluated for the target client and workload; SLM publishes no universal p99 claim.
|
|
318
314
|
|
|
319
|
-
**Multi-scope memory (
|
|
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 —
|
|
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
|
|
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
|
-
##
|
|
460
|
+
## Editor plugins
|
|
465
461
|
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
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
|
-
|
|
472
|
-
|
|
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
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
-
|
|
483
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
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
|
-
|
|
495
|
+
claude plugin marketplace update qualixar
|
|
496
|
+
claude plugin update superlocalmemory@qualixar
|
|
509
497
|
```
|
|
510
498
|
|
|
511
|
-
|
|
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.
|
|
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
|
-
"
|
|
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.
|
|
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.
|
|
18
|
+
"version": "4.1.2"
|
|
19
19
|
}
|
package/plugin/CLAUDE.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!-- BEGIN SuperLocalMemory v4.
|
|
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.
|
|
42
|
+
<!-- END SuperLocalMemory v4.1.2 -->
|
|
43
43
|
|
|
44
|
-
SuperLocalMemory v4.
|
|
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.
|
|
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,
|
|
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, `
|
|
61
|
-
- On a substantial outcome, `
|
|
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.
|
|
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.
|
|
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.
|
|
44
|
+
SuperLocalMemory v4.1.2 · Qualixar · AGPL-3.0-or-later
|
package/plugin/requirements.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
superlocalmemory==4.
|
|
1
|
+
superlocalmemory==4.1.2
|