@unblocklabs/unblock-memory 0.3.22 → 0.3.24

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "unblock-memory",
3
3
  "name": "Unblock Memory",
4
- "version": "0.3.22",
4
+ "version": "0.3.24",
5
5
  "description": "Indexes, retrieves, and analyzes configured workspace memory with existing QMD vectors.",
6
6
  "kind": "memory",
7
7
  "activation": { "onStartup": true },
@@ -63,10 +63,11 @@
63
63
  "help": "Explicit non-skill corpora approved for external TypeSafe processing and maintenance results visible to every audience using this agent. Sessions means ALL indexed sessions, not only the current conversation."
64
64
  },
65
65
  "typesafe.enabled": {
66
- "label": "TypeSafe Ranking",
67
- "help": "Enabled by default when credentials exist. Sends bounded conversation context and skill descriptions or approved memory excerpts to TypeSafe for enabled whisperers."
66
+ "label": "TypeSafe Judgments",
67
+ "help": "Shared provider gate for opted-in whisperers, people primer/save review, evidence/quality reviews and response audits. Does not enable features or approve corpora by itself. Ordinary search and People Whisperer injection stay local."
68
68
  },
69
69
  "typesafe.apiKey": { "label": "TypeSafe API Key", "sensitive": true },
70
+ "typesafe.timeoutMs": { "label": "TypeSafe Request Timeout", "help": "Per-request timeout, not the whole operation. People primer/dossier review use peoplePrimer.timeoutMs instead; Memory Whisperer also has its own total deadline." },
70
71
  "typesafe.apiKeyFile": {
71
72
  "label": "TypeSafe Key File",
72
73
  "help": "Absolute path to a plaintext API key or a dotenv file containing TYPESAFE_API_KEY. Prefer this over storing a key in config."
@@ -89,16 +90,17 @@
89
90
  },
90
91
  "memoryWhisperer.corpora": {
91
92
  "label": "Approved Hint Corpora",
92
- "help": "Explicit non-skill corpus allowlist. Approve file corpora for all audiences using this agent and for transmission to TypeSafe. Session hits are restricted to the exact current session."
93
+ "help": "Explicit non-skill corpus allowlist for automatic recall and TypeSafe processing. Session recall spans this agent's indexed sessions; the sessions corpus chatTypes setting controls direct-message inclusion."
93
94
  },
94
95
  "people.enabled": {
95
96
  "label": "PeopleSQL",
96
- "help": "Maintain an agent-local people store. Disabled by default."
97
+ "help": "Enable the agent-local people store, Slack identity observation and people tools. Disabled by default; whispering and TypeSafe primer/review are separate opt-ins."
97
98
  },
98
99
  "people.whisperer.enabled": {
99
100
  "label": "People Whisperer",
100
- "help": "Inject an enabled person's bounded dossier blurb after exact identity matching. Requires hook conversation access."
101
+ "help": "Inject an active, injection-enabled person's saved blurb once per Slack thread/person, with durable receipts. Requires people.enabled and host hook permissions; no model call."
101
102
  },
103
+ "people.whisperer.maxChars": { "label": "People Blurb Character Limit", "help": "Also limits newly saved dossier blurbs when injection is off. The separate 70-word ceiling still applies." },
102
104
  "analysis.executable": {
103
105
  "label": "Memory Analysis Worker",
104
106
  "help": "Optional absolute path to the locally installed unblock-memory-analysis executable."
@@ -283,13 +285,13 @@
283
285
  "enabled": { "type": "boolean", "default": false },
284
286
  "corpora": { "type": "array", "items": { "type": "string", "pattern": "\\S" }, "default": [] },
285
287
  "historyMessages": { "type": "integer", "minimum": 0, "maximum": 50, "default": 5 },
286
- "minUsefulness": { "type": "number", "minimum": 0, "maximum": 1, "default": 0.9 },
288
+ "minUsefulness": { "type": "number", "minimum": 0, "maximum": 1, "default": 0.7 },
287
289
  "maxHints": { "type": "integer", "minimum": 1, "maximum": 2, "default": 2 },
288
290
  "cooldownTurns": { "type": "integer", "minimum": 0, "maximum": 1000, "default": 10 },
289
291
  "timeoutMs": { "type": "integer", "minimum": 1, "maximum": 10000, "default": 3000 }
290
292
  },
291
293
  "default": {
292
- "enabled": false, "corpora": [], "historyMessages": 5, "minUsefulness": 0.9,
294
+ "enabled": false, "corpora": [], "historyMessages": 5, "minUsefulness": 0.7,
293
295
  "maxHints": 2, "cooldownTurns": 10, "timeoutMs": 3000
294
296
  }
295
297
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unblocklabs/unblock-memory",
3
- "version": "0.3.22",
3
+ "version": "0.3.24",
4
4
  "description": "Workspace-native memory for OpenClaw, powered by QMD",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -22,13 +22,18 @@
22
22
  "dist",
23
23
  "skills",
24
24
  "README.md",
25
+ "docs/configuration.md",
26
+ "docs/retrieval.md",
27
+ "docs/peoplesql.md",
28
+ "docs/response-audit.md",
25
29
  "openclaw.plugin.json"
26
30
  ],
27
31
  "scripts": {
28
32
  "build": "tsc -p tsconfig.build.json",
29
33
  "typecheck": "tsc -p tsconfig.json --noEmit",
30
34
  "knip": "knip --reporter compact",
31
- "test": "node --import tsx --test --test-concurrency=1 tests/**/*.test.ts",
35
+ "test": "node --import tsx --test --test-concurrency=1 tests/**/*.test.ts tests/**/*.test.mjs",
36
+ "eval:retrieval": "node --import tsx eval/retrieval/lab.ts",
32
37
  "plugin:inspect": "plugin-inspector check --config plugin-inspector.config.json --no-openclaw",
33
38
  "plugin:inspect:runtime": "plugin-inspector check --config plugin-inspector.config.json --no-openclaw --runtime --mock-sdk --allow-execute",
34
39
  "release:check": "node scripts/check-release-version.mjs",
@@ -10,6 +10,11 @@ understanding of its world. A cluster shows similarity, not a complete timeline,
10
10
  truth, or consensus. Do not write from a cluster alone, and prefer no write over
11
11
  weak, duplicative, or easily looked-up knowledge.
12
12
 
13
+ For tool limits, session freshness and source-read continuation, see the packaged
14
+ [retrieval reference](../../docs/retrieval.md). Configuration and provider approval
15
+ are documented [separately](../../docs/configuration.md); this skill does not grant them.
16
+ When loaded through a `plugin-skills` symlink, resolve these links from the skill's real installed path.
17
+
13
18
  ## Clusters and the knowledge corpus
14
19
 
15
20
  Clustering and knowledge are separate. `memory_recluster` analyzes every
@@ -115,5 +115,15 @@ when a misleading legacy profile cannot be responsibly replaced, or `set_injecti
115
115
  to pause it without deleting it. Do not erase raw memory or dossier history.
116
116
  Inspect history through `dossier_changes` and `dossier_change` views.
117
117
 
118
+ `soft_delete_person` marks a person unavailable and disables injection without
119
+ erasing the dossier/history. `restore_person` leaves injection off: inspect first,
120
+ then explicitly re-enable if appropriate. Slack deactivation also disables the
121
+ whole linked person; directory sync does not restore unavailable people.
122
+ `injectionEligible` is only a record preview. Global hooks and durable once-per-thread
123
+ receipts still apply; dossier edits/restarts do not refresh an already-served thread.
124
+ See the [people operator reference](../../docs/peoplesql.md) for state operations
125
+ and the [retrieval guide](../../docs/retrieval.md) for search/sync limits.
126
+ When loaded through a `plugin-skills` symlink, resolve these links from the skill's real installed path.
127
+
118
128
  Report the resulting snippets, source limitations, changes and intentionally
119
129
  unknown answers. More words or more claims are not success metrics.