@unblocklabs/unblock-memory 0.2.4 → 0.2.5

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/README.md CHANGED
@@ -47,16 +47,21 @@ directories, or globs into named corpora:
47
47
  kind: "files",
48
48
  paths: ["MEMORY.md", "USER.md", "memory/**/*.md"],
49
49
  },
50
- {
51
- name: "projects",
52
- kind: "files",
53
- paths: ["/absolute/shared/**/*.md"],
54
- },
55
50
  {
56
51
  name: "sessions",
57
52
  kind: "sessions",
58
53
  chatTypes: ["channel", "group"],
59
54
  },
55
+ {
56
+ name: "canon",
57
+ kind: "files",
58
+ paths: ["knowledge/canon/**/*.md"],
59
+ },
60
+ {
61
+ name: "reflections",
62
+ kind: "files",
63
+ paths: ["knowledge/reflections/**/*.md"],
64
+ },
60
65
  ],
61
66
  // Optional: omit unless the local analysis worker is installed.
62
67
  analysis: {
@@ -80,7 +85,7 @@ context resident after first use. Set it to `false` to restore QMD's five-minute
80
85
  idle unload behavior.
81
86
 
82
87
  `memory_search` searches every configured corpus by default. Pass
83
- `corpora: ["projects"]` to search selected corpora or `corpora: ["all"]` to
88
+ `corpora: ["canon"]` to search selected corpora or `corpora: ["all"]` to
84
89
  request all of them explicitly. Search results include their corpus name and
85
90
  remain readable by passing the returned `qmd://` path to `memory_get`.
86
91
 
@@ -181,5 +186,50 @@ A failed rebuild leaves the stale result intact, while a successful rebuild
181
186
  atomically replaces it. Analysis is never scheduled automatically. If the worker
182
187
  is absent or fails, `memory_search` and `memory_get` continue to work.
183
188
 
189
+ ## Curating canon and reflections
190
+
191
+ The plugin bundles the `memory-curator` skill for turning useful clusters into
192
+ durable knowledge. It becomes available when the plugin is enabled. If the
193
+ agent has an explicit skill allowlist, include `memory-curator`.
194
+
195
+ Keep curated files outside `memory/**` so each file belongs to only one corpus:
196
+
197
+ ```text
198
+ knowledge/
199
+ ├── canon/
200
+ │ └── gateway-restarts.md
201
+ └── reflections/
202
+ └── 2026-08-26.md
203
+ ```
204
+
205
+ Canon files are stable topic files updated in place. Each one contains only the
206
+ current affirmative rule or understanding, its update time, current rationale,
207
+ and `qmd://` evidence links. Do not include old procedures, changelogs, or a
208
+ `Supersedes` section: semantic chunking may retrieve those passages without the
209
+ surrounding warning that they are obsolete.
210
+
211
+ Reflection files are daily or timestamped and append-oriented. They hold useful
212
+ patterns, hypotheses, contradictions, and uncertainty, but are not
213
+ authoritative. Both corpora participate in later search and clustering, so a
214
+ later run can reconsider prior reasoning. Repeated derived text is not
215
+ independent corroboration; durable canon still needs underlying source evidence.
216
+
217
+ For a manual run, ask the agent:
218
+
219
+ ```text
220
+ Use $memory-curator to review my memory clusters and curate any durable updates.
221
+ ```
222
+
223
+ For recurring curation, use an OpenClaw automation with the same thin message:
224
+
225
+ ```text
226
+ Use $memory-curator to run the scheduled memory curation cycle.
227
+ ```
228
+
229
+ The skill lists current clusters, reclusters only when analysis is missing or
230
+ stale, follows representative sources with `memory_get`, and may correctly
231
+ write nothing. Its own writes are indexed for the next cycle; it does not
232
+ recluster recursively in the same run.
233
+
184
234
  Existing `unblock-qmd` indexes are derived caches and may be left in place;
185
235
  Unblock Memory rebuilds its own index from configured corpora.
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "id": "unblock-memory",
3
3
  "name": "Unblock Memory",
4
- "version": "0.2.4",
4
+ "version": "0.2.5",
5
5
  "description": "Indexes, retrieves, and analyzes configured workspace memory with existing QMD vectors.",
6
6
  "kind": "memory",
7
7
  "activation": { "onStartup": false },
8
+ "skills": ["./skills"],
8
9
  "contracts": { "tools": ["memory_search", "memory_get", "memory_sync_sessions", "memory_sync_status", "memory_recluster", "memory_list_clusters", "memory_fetch_cluster"] },
9
10
  "toolMetadata": {
10
11
  "memory_sync_sessions": { "sideEffecting": true },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unblocklabs/unblock-memory",
3
- "version": "0.2.4",
3
+ "version": "0.2.5",
4
4
  "description": "Workspace-native memory for OpenClaw, powered by QMD",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -18,7 +18,7 @@
18
18
  "access": "public",
19
19
  "provenance": true
20
20
  },
21
- "files": ["dist", "README.md", "openclaw.plugin.json"],
21
+ "files": ["dist", "skills", "README.md", "openclaw.plugin.json"],
22
22
  "scripts": {
23
23
  "build": "tsc -p tsconfig.build.json",
24
24
  "typecheck": "tsc -p tsconfig.json --noEmit",
@@ -0,0 +1,78 @@
1
+ ---
2
+ name: memory-curator
3
+ description: Review Unblock Memory clusters and turn supported current knowledge into canon or exploratory reasoning into reflections.
4
+ ---
5
+
6
+ # Memory Curator
7
+
8
+ Use Unblock Memory's semantic clusters to maintain durable workspace knowledge.
9
+ Clusters show similarity, not truth or consensus. Prefer no write over a weak or
10
+ duplicative artifact.
11
+
12
+ ## Review clusters
13
+
14
+ 1. Call `memory_list_clusters`.
15
+ 2. If analysis is missing or stale, call `memory_recluster`, then list again.
16
+ 3. Fetch useful clusters with `memory_fetch_cluster`. Treat noise as optional
17
+ review material, not automatically important content.
18
+ 4. Follow representative `qmd://` source paths with `memory_get` whenever the
19
+ excerpt lacks context or a conclusion could change durable knowledge.
20
+ 5. Distinguish underlying memory or session evidence from earlier canon and
21
+ reflections. Derived artifacts may help locate, challenge, or revise an
22
+ understanding, but repetition does not make them independent evidence.
23
+ 6. For each reviewed cluster, choose canon, reflection, or no write.
24
+
25
+ ## Write canon
26
+
27
+ Use `knowledge/canon/<stable-topic>.md` for a supported, durable rule or current
28
+ understanding. Update the topic file in place instead of creating dated copies.
29
+
30
+ Every semantic chunk in canon must remain correct if retrieved alone:
31
+
32
+ - State only the current affirmative truth.
33
+ - Remove obsolete instructions rather than preserving them for comparison.
34
+ - Never add `Supersedes`, history, changelog, old-process, or migration sections.
35
+ - Include a human-readable `Updated` timestamp, the current rationale, and
36
+ `qmd://` evidence citations.
37
+ - Preserve uncertainty in the claim itself. If the evidence does not support a
38
+ stable current claim, write a reflection or nothing.
39
+
40
+ A concise shape is sufficient:
41
+
42
+ ```markdown
43
+ # Topic
44
+
45
+ Updated: 2026-08-26 14:30 EDT
46
+
47
+ ## Current understanding
48
+
49
+ Present-tense rule or facts.
50
+
51
+ ## Rationale
52
+
53
+ Why this is the current understanding.
54
+
55
+ ## Evidence
56
+
57
+ - qmd://memory/...
58
+ - qmd://sessions/...
59
+ ```
60
+
61
+ ## Write reflections
62
+
63
+ Use `knowledge/reflections/YYYY-MM-DD.md` for patterns, hypotheses,
64
+ contradictions, open questions, or reasoning worth revisiting. Append a
65
+ timestamped section when the day's file already exists. Label uncertainty
66
+ plainly and include the `qmd://` evidence examined. Reflections are not
67
+ authoritative instructions.
68
+
69
+ ## Finish the cycle
70
+
71
+ - Do not rewrite raw memory or session projections.
72
+ - Avoid restating knowledge already captured accurately.
73
+ - Verify new or updated knowledge with `memory_search`, selecting `canon` or
74
+ `reflections` when useful.
75
+ - Report clusters reviewed, files changed, evidence used, uncertainties, and
76
+ intentional skips.
77
+ - Do not recluster again after this cycle's writes. Let them enter the next
78
+ scheduled cycle so the run cannot recursively react to its own output.