clawvault 3.2.1 → 3.4.0

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 (161) hide show
  1. package/README.md +56 -16
  2. package/bin/clawvault.js +0 -2
  3. package/bin/command-registration.test.js +15 -2
  4. package/bin/help-contract.test.js +16 -0
  5. package/bin/register-core-commands.js +88 -0
  6. package/bin/register-core-commands.test.js +80 -0
  7. package/bin/register-maintenance-commands.js +84 -7
  8. package/bin/register-query-commands.js +45 -28
  9. package/bin/register-query-commands.test.js +15 -0
  10. package/bin/test-helpers/cli-command-fixtures.js +1 -0
  11. package/dist/chunk-2PKBIKDH.js +130 -0
  12. package/dist/{chunk-U67V476Y.js → chunk-2ZDO52B4.js} +18 -1
  13. package/dist/{chunk-ZZA73MFY.js → chunk-33DOSHTA.js} +176 -36
  14. package/dist/chunk-35JCYSRR.js +158 -0
  15. package/dist/{chunk-AZYOKJYC.js → chunk-4PY655YM.js} +13 -1
  16. package/dist/{chunk-2JQ3O2YL.js → chunk-5EFSWZO6.js} +3 -3
  17. package/dist/{chunk-Y3TIJEBP.js → chunk-7SWP5FKU.js} +34 -613
  18. package/dist/{chunk-4VQTUVH7.js → chunk-7YZWHM36.js} +52 -26
  19. package/dist/{chunk-URXDAUVH.js → chunk-AXSJIFOJ.js} +174 -1
  20. package/dist/{chunk-4ITRXIVT.js → chunk-BLQXXX7Q.js} +6 -6
  21. package/dist/chunk-CSHO3PJB.js +684 -0
  22. package/dist/chunk-D5U3Q4N5.js +872 -0
  23. package/dist/chunk-DCF4KMFD.js +158 -0
  24. package/dist/{chunk-S5OJEGFG.js → chunk-DOIUYIXV.js} +2 -2
  25. package/dist/{chunk-YXQCA6B7.js → chunk-DVOUSOR3.js} +112 -7
  26. package/dist/{chunk-YDWHS4LJ.js → chunk-ECGJYWNA.js} +205 -33
  27. package/dist/{chunk-QMHPQYUV.js → chunk-EL6UBSX5.js} +7 -6
  28. package/dist/chunk-FZ5I2NF7.js +352 -0
  29. package/dist/{chunk-WJVWINEM.js → chunk-GFCHWMGD.js} +55 -6
  30. package/dist/{chunk-GNJL4YGR.js → chunk-GJO3CFUN.js} +30 -6
  31. package/dist/chunk-H3JZIB5O.js +322 -0
  32. package/dist/chunk-HEHO7SMV.js +51 -0
  33. package/dist/{chunk-UCQAOZHW.js → chunk-HGDDW24U.js} +3 -3
  34. package/dist/chunk-J3YUXVID.js +907 -0
  35. package/dist/{chunk-Y6VJKXGL.js → chunk-KCYWJDDW.js} +1 -1
  36. package/dist/{chunk-P5EPF6MB.js → chunk-MW5C6ZQA.js} +110 -13
  37. package/dist/chunk-NSXYM6EZ.js +255 -0
  38. package/dist/{chunk-YNIPYN4F.js → chunk-OFOCU2V4.js} +6 -5
  39. package/dist/{chunk-42MXU7A6.js → chunk-P62WHA27.js} +58 -47
  40. package/dist/chunk-PTWPPVC7.js +972 -0
  41. package/dist/{chunk-FAKNOB7Y.js → chunk-QFWERBDP.js} +2 -2
  42. package/dist/chunk-QYQAGBTM.js +2097 -0
  43. package/dist/chunk-RL2L6I6K.js +223 -0
  44. package/dist/{chunk-IIOU45CK.js → chunk-S7N7HI5E.js} +2 -2
  45. package/dist/{chunk-ECRZL5XR.js → chunk-T7E764W3.js} +23 -7
  46. package/dist/{chunk-MNPUYCHQ.js → chunk-TWMI3SNN.js} +6 -5
  47. package/dist/{chunk-2RAZ4ZFE.js → chunk-VBILES4B.js} +1 -1
  48. package/dist/{chunk-PI4WMLMG.js → chunk-VXAGOLDP.js} +1 -1
  49. package/dist/{chunk-SS4B7P7V.js → chunk-YIDV4VV2.js} +1 -1
  50. package/dist/chunk-YTRZNA64.js +37 -0
  51. package/dist/chunk-ZKWPCBYT.js +600 -0
  52. package/dist/cli/index.js +28 -21
  53. package/dist/commands/archive.js +3 -3
  54. package/dist/commands/backlog.js +1 -1
  55. package/dist/commands/benchmark.d.ts +12 -0
  56. package/dist/commands/benchmark.js +12 -0
  57. package/dist/commands/blocked.js +1 -1
  58. package/dist/commands/canvas.js +2 -2
  59. package/dist/commands/checkpoint.js +1 -1
  60. package/dist/commands/compat.js +1 -1
  61. package/dist/commands/context.js +8 -7
  62. package/dist/commands/doctor.d.ts +8 -3
  63. package/dist/commands/doctor.js +8 -22
  64. package/dist/commands/embed.js +6 -5
  65. package/dist/commands/entities.d.ts +8 -1
  66. package/dist/commands/entities.js +46 -3
  67. package/dist/commands/graph.js +4 -4
  68. package/dist/commands/inbox.d.ts +23 -0
  69. package/dist/commands/inbox.js +11 -0
  70. package/dist/commands/inject.d.ts +1 -1
  71. package/dist/commands/inject.js +5 -5
  72. package/dist/commands/kanban.js +1 -1
  73. package/dist/commands/link.js +5 -5
  74. package/dist/commands/maintain.d.ts +32 -0
  75. package/dist/commands/maintain.js +13 -0
  76. package/dist/commands/migrate-observations.js +3 -3
  77. package/dist/commands/observe.js +11 -10
  78. package/dist/commands/project.js +2 -2
  79. package/dist/commands/rebuild-embeddings.js +48 -17
  80. package/dist/commands/rebuild.js +9 -8
  81. package/dist/commands/recall.d.ts +14 -0
  82. package/dist/commands/recall.js +15 -0
  83. package/dist/commands/recover.js +1 -1
  84. package/dist/commands/reflect.js +6 -6
  85. package/dist/commands/repair-session.js +1 -1
  86. package/dist/commands/replay.js +10 -9
  87. package/dist/commands/session-recap.js +1 -1
  88. package/dist/commands/setup.js +4 -3
  89. package/dist/commands/shell-init.js +1 -1
  90. package/dist/commands/sleep.d.ts +1 -1
  91. package/dist/commands/sleep.js +20 -18
  92. package/dist/commands/status.js +40 -26
  93. package/dist/commands/sync-bd.js +3 -3
  94. package/dist/commands/tailscale.js +3 -3
  95. package/dist/commands/task.js +1 -1
  96. package/dist/commands/template.js +1 -1
  97. package/dist/commands/wake.d.ts +1 -1
  98. package/dist/commands/wake.js +10 -9
  99. package/dist/index.d.ts +233 -16
  100. package/dist/index.js +325 -111
  101. package/dist/{inject-DYUrDqQO.d.ts → inject-DEb_jpLi.d.ts} +3 -1
  102. package/dist/lib/auto-linker.js +2 -2
  103. package/dist/lib/canvas-layout.js +1 -1
  104. package/dist/lib/config.js +2 -2
  105. package/dist/lib/entity-index.js +1 -1
  106. package/dist/lib/project-utils.js +2 -2
  107. package/dist/lib/session-repair.js +1 -1
  108. package/dist/lib/session-utils.js +1 -1
  109. package/dist/lib/tailscale.js +1 -1
  110. package/dist/lib/task-utils.js +1 -1
  111. package/dist/lib/template-engine.js +1 -1
  112. package/dist/lib/webdav.js +1 -1
  113. package/dist/onnxruntime_binding-5QEF3SUC.node +0 -0
  114. package/dist/onnxruntime_binding-BKPKNEGC.node +0 -0
  115. package/dist/onnxruntime_binding-FMOXGIUT.node +0 -0
  116. package/dist/onnxruntime_binding-OI2KMXC5.node +0 -0
  117. package/dist/onnxruntime_binding-UX44MLAZ.node +0 -0
  118. package/dist/onnxruntime_binding-Y2W7N7WY.node +0 -0
  119. package/dist/openclaw-plugin--gqA2BZw.d.ts +267 -0
  120. package/dist/openclaw-plugin.d.ts +4 -0
  121. package/dist/openclaw-plugin.js +20 -0
  122. package/dist/transformers.node-A2ZRORSQ.js +46775 -0
  123. package/dist/types-CbL-wIKi.d.ts +36 -0
  124. package/dist/{types-BbWJoC1c.d.ts → types-DslKvCaj.d.ts} +51 -1
  125. package/hooks/clawvault/HOOK.md +25 -8
  126. package/hooks/clawvault/handler.js +215 -78
  127. package/hooks/clawvault/handler.test.js +109 -43
  128. package/hooks/clawvault/integrity.js +112 -0
  129. package/hooks/clawvault/integrity.test.js +32 -0
  130. package/hooks/clawvault/openclaw.plugin.json +133 -15
  131. package/openclaw.plugin.json +161 -194
  132. package/package.json +8 -5
  133. package/bin/register-workgraph-commands.js +0 -451
  134. package/dist/chunk-5PJ4STIC.js +0 -465
  135. package/dist/chunk-ERNE2FZ5.js +0 -189
  136. package/dist/chunk-HR4KN6S2.js +0 -152
  137. package/dist/chunk-IJBFGPCS.js +0 -33
  138. package/dist/chunk-K7PNYS45.js +0 -93
  139. package/dist/chunk-NTOPJI7W.js +0 -207
  140. package/dist/chunk-PG56HX5T.js +0 -154
  141. package/dist/chunk-QPDDIHXE.js +0 -501
  142. package/dist/chunk-WIOLLGAD.js +0 -190
  143. package/dist/chunk-WMGIIABP.js +0 -15
  144. package/dist/ledger-B7g7jhqG.d.ts +0 -44
  145. package/dist/plugin/index.d.ts +0 -352
  146. package/dist/plugin/index.js +0 -4264
  147. package/dist/registry-BR4326o0.d.ts +0 -30
  148. package/dist/store-CA-6sKCJ.d.ts +0 -34
  149. package/dist/thread-B9LhXNU0.d.ts +0 -41
  150. package/dist/workgraph/index.d.ts +0 -5
  151. package/dist/workgraph/index.js +0 -23
  152. package/dist/workgraph/ledger.d.ts +0 -2
  153. package/dist/workgraph/ledger.js +0 -25
  154. package/dist/workgraph/registry.d.ts +0 -2
  155. package/dist/workgraph/registry.js +0 -19
  156. package/dist/workgraph/store.d.ts +0 -2
  157. package/dist/workgraph/store.js +0 -25
  158. package/dist/workgraph/thread.d.ts +0 -2
  159. package/dist/workgraph/thread.js +0 -25
  160. package/dist/workgraph/types.d.ts +0 -54
  161. package/dist/workgraph/types.js +0 -7
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "clawvault",
3
3
  "name": "ClawVault",
4
- "version": "2.6.1",
4
+ "version": "2.7.0",
5
5
  "description": "Structured memory system for AI agents with context death resilience",
6
6
  "kind": "memory",
7
7
  "configSchema": {
@@ -9,12 +9,78 @@
9
9
  "properties": {
10
10
  "vaultPath": {
11
11
  "type": "string",
12
- "description": "Path to the ClawVault vault directory. If not set, auto-discovered from CLAWVAULT_PATH or by walking up from cwd."
12
+ "description": "Path to the ClawVault vault directory. Used as fallback when agentVaults is not set or agent not found."
13
+ },
14
+ "agentVaults": {
15
+ "type": "object",
16
+ "description": "Mapping of agent names to vault paths. Allows each agent to have its own vault. Falls back to vaultPath if agent not found.",
17
+ "additionalProperties": {
18
+ "type": "string",
19
+ "description": "Path to the vault directory for this agent"
20
+ }
21
+ },
22
+ "allowClawvaultExec": {
23
+ "type": "boolean",
24
+ "description": "Security gate for all child_process execution from the plugin. Must be true to run clawvault CLI commands.",
25
+ "default": false
26
+ },
27
+ "clawvaultBinaryPath": {
28
+ "type": "string",
29
+ "description": "Optional absolute path to the clawvault executable. When omitted, the plugin resolves clawvault from PATH."
30
+ },
31
+ "clawvaultBinarySha256": {
32
+ "type": "string",
33
+ "description": "Optional SHA-256 checksum for clawvaultBinaryPath (or resolved clawvault executable) to enforce binary integrity verification."
34
+ },
35
+ "allowEnvAccess": {
36
+ "type": "boolean",
37
+ "description": "Allow reading OPENCLAW_* and CLAWVAULT_PATH environment variables for vault and agent discovery.",
38
+ "default": false
39
+ },
40
+ "enableStartupRecovery": {
41
+ "type": "boolean",
42
+ "description": "Enable recovery checks on gateway startup.",
43
+ "default": false
44
+ },
45
+ "enableSessionContextInjection": {
46
+ "type": "boolean",
47
+ "description": "Enable recap/context injection on session start.",
48
+ "default": false
49
+ },
50
+ "enableAutoCheckpoint": {
51
+ "type": "boolean",
52
+ "description": "Enable automatic checkpointing on /new.",
53
+ "default": false
54
+ },
55
+ "enableObserveOnNew": {
56
+ "type": "boolean",
57
+ "description": "Enable observer flush on /new.",
58
+ "default": false
59
+ },
60
+ "enableHeartbeatObservation": {
61
+ "type": "boolean",
62
+ "description": "Enable observation threshold checks on heartbeat.",
63
+ "default": false
64
+ },
65
+ "enableCompactionObservation": {
66
+ "type": "boolean",
67
+ "description": "Enable forced observer flush on compaction events.",
68
+ "default": false
69
+ },
70
+ "enableWeeklyReflection": {
71
+ "type": "boolean",
72
+ "description": "Enable weekly reflection on Sunday midnight UTC.",
73
+ "default": false
74
+ },
75
+ "enableFactExtraction": {
76
+ "type": "boolean",
77
+ "description": "Enable extraction of structured facts from observed text during hook events.",
78
+ "default": false
13
79
  },
14
80
  "autoCheckpoint": {
15
81
  "type": "boolean",
16
- "description": "Enable automatic checkpointing on session events",
17
- "default": true
82
+ "description": "Deprecated alias for enableAutoCheckpoint.",
83
+ "default": false
18
84
  },
19
85
  "contextProfile": {
20
86
  "type": "string",
@@ -31,13 +97,13 @@
31
97
  },
32
98
  "observeOnHeartbeat": {
33
99
  "type": "boolean",
34
- "description": "Enable observation threshold checks on gateway heartbeat",
35
- "default": true
100
+ "description": "Deprecated alias for enableHeartbeatObservation.",
101
+ "default": false
36
102
  },
37
103
  "weeklyReflection": {
38
104
  "type": "boolean",
39
- "description": "Enable weekly reflection on Sunday midnight UTC",
40
- "default": true
105
+ "description": "Deprecated alias for enableWeeklyReflection.",
106
+ "default": false
41
107
  }
42
108
  },
43
109
  "additionalProperties": false
@@ -46,11 +112,63 @@
46
112
  "vaultPath": {
47
113
  "label": "Vault Path",
48
114
  "placeholder": "~/my-vault",
49
- "description": "Path to your ClawVault memory vault"
115
+ "description": "Path to your ClawVault memory vault (fallback when agentVaults not set)"
50
116
  },
51
- "autoCheckpoint": {
117
+ "agentVaults": {
118
+ "label": "Agent Vaults",
119
+ "description": "Per-agent vault paths (e.g., {\"agent1\": \"/path/to/vault1\", \"agent2\": \"/path/to/vault2\"})"
120
+ },
121
+ "allowClawvaultExec": {
122
+ "label": "Allow CLI Execution",
123
+ "description": "Required opt-in to run child_process calls from the plugin."
124
+ },
125
+ "clawvaultBinaryPath": {
126
+ "label": "ClawVault Binary Path",
127
+ "description": "Absolute path to clawvault executable for stricter execution controls."
128
+ },
129
+ "clawvaultBinarySha256": {
130
+ "label": "ClawVault Binary SHA-256",
131
+ "description": "Optional checksum to verify executable integrity before execution."
132
+ },
133
+ "allowEnvAccess": {
134
+ "label": "Allow Environment Access",
135
+ "description": "Allow OPENCLAW_* and CLAWVAULT_PATH reads for fallback discovery."
136
+ },
137
+ "enableStartupRecovery": {
138
+ "label": "Startup Recovery",
139
+ "description": "Run recovery checks on gateway startup."
140
+ },
141
+ "enableSessionContextInjection": {
142
+ "label": "Session Context Injection",
143
+ "description": "Inject recap and memory context on session start."
144
+ },
145
+ "enableAutoCheckpoint": {
52
146
  "label": "Auto Checkpoint",
53
- "description": "Automatically checkpoint before session resets"
147
+ "description": "Automatically checkpoint before /new."
148
+ },
149
+ "enableObserveOnNew": {
150
+ "label": "Observe On /new",
151
+ "description": "Run observer flush on /new."
152
+ },
153
+ "enableHeartbeatObservation": {
154
+ "label": "Observe On Heartbeat",
155
+ "description": "Check observation thresholds during heartbeat events."
156
+ },
157
+ "enableCompactionObservation": {
158
+ "label": "Observe On Compaction",
159
+ "description": "Force observer flush during compaction events."
160
+ },
161
+ "enableWeeklyReflection": {
162
+ "label": "Weekly Reflection",
163
+ "description": "Run weekly reflection on Sunday midnight UTC."
164
+ },
165
+ "enableFactExtraction": {
166
+ "label": "Fact Extraction",
167
+ "description": "Extract structured facts from hook event payloads."
168
+ },
169
+ "autoCheckpoint": {
170
+ "label": "Auto Checkpoint (Legacy Alias)",
171
+ "description": "Deprecated alias for enableAutoCheckpoint."
54
172
  },
55
173
  "contextProfile": {
56
174
  "label": "Context Profile",
@@ -61,12 +179,12 @@
61
179
  "description": "Number of vault memories to inject"
62
180
  },
63
181
  "observeOnHeartbeat": {
64
- "label": "Observe on Heartbeat",
65
- "description": "Check observation thresholds during heartbeat events"
182
+ "label": "Observe on Heartbeat (Legacy Alias)",
183
+ "description": "Deprecated alias for enableHeartbeatObservation."
66
184
  },
67
185
  "weeklyReflection": {
68
- "label": "Weekly Reflection",
69
- "description": "Run weekly reflection on Sunday midnight UTC"
186
+ "label": "Weekly Reflection (Legacy Alias)",
187
+ "description": "Deprecated alias for enableWeeklyReflection."
70
188
  }
71
189
  }
72
190
  }
@@ -1,53 +1,96 @@
1
1
  {
2
2
  "id": "clawvault",
3
3
  "name": "ClawVault",
4
- "version": "4.0.0",
5
- "description": "Structured memory system for AI agents with hybrid retrieval, cross-encoder reranking, adaptive capture, and multi-scope support",
4
+ "version": "2.7.0",
6
5
  "kind": "memory",
6
+ "description": "Structured memory system for AI agents with context death resilience",
7
7
  "configSchema": {
8
8
  "type": "object",
9
9
  "properties": {
10
10
  "vaultPath": {
11
11
  "type": "string",
12
- "description": "Path to the ClawVault vault directory. If not set, auto-discovered from CLAWVAULT_PATH or by walking up from cwd."
12
+ "description": "Path to the ClawVault vault directory. Used as fallback when agentVaults is not set or agent not found."
13
13
  },
14
14
  "agentVaults": {
15
15
  "type": "object",
16
- "description": "Mapping of agent names to vault paths. Falls back to vaultPath if agent not found.",
16
+ "description": "Mapping of agent names to vault paths. Allows each agent to have its own vault. Falls back to vaultPath if agent not found.",
17
17
  "additionalProperties": {
18
- "type": "string"
18
+ "type": "string",
19
+ "description": "Path to the vault directory for this agent"
19
20
  }
20
21
  },
21
- "collection": {
22
+ "allowClawvaultExec": {
23
+ "type": "boolean",
24
+ "description": "Security gate for all child_process execution from the plugin. Must be true to run clawvault CLI commands.",
25
+ "default": false
26
+ },
27
+ "clawvaultBinaryPath": {
28
+ "type": "string",
29
+ "description": "Optional absolute path to the clawvault executable. When omitted, the plugin resolves clawvault from PATH."
30
+ },
31
+ "clawvaultBinarySha256": {
22
32
  "type": "string",
23
- "description": "qmd collection name",
24
- "default": "clawvault"
33
+ "description": "Optional SHA-256 checksum for clawvaultBinaryPath (or resolved clawvault executable) to enforce binary integrity verification."
25
34
  },
26
- "autoRecall": {
35
+ "allowEnvAccess": {
27
36
  "type": "boolean",
28
- "description": "Enable automatic memory recall on session start",
29
- "default": true
37
+ "description": "Allow reading OPENCLAW_* and CLAWVAULT_PATH environment variables for vault and agent discovery.",
38
+ "default": false
30
39
  },
31
- "autoCapture": {
40
+ "enableStartupRecovery": {
32
41
  "type": "boolean",
33
- "description": "Enable automatic observation capture from conversations",
34
- "default": true
42
+ "description": "Enable recovery checks on gateway startup.",
43
+ "default": false
35
44
  },
36
- "recallLimit": {
37
- "type": "integer",
38
- "minimum": 1,
39
- "maximum": 20,
40
- "description": "Maximum number of memories to recall per query",
41
- "default": 5
45
+ "enableSessionContextInjection": {
46
+ "type": "boolean",
47
+ "description": "Enable recap/context injection on session start.",
48
+ "default": false
42
49
  },
43
- "templatesDir": {
44
- "type": "string",
45
- "description": "Custom path to template schema directory"
50
+ "enableAutoCheckpoint": {
51
+ "type": "boolean",
52
+ "description": "Enable automatic checkpointing on /new.",
53
+ "default": false
54
+ },
55
+ "enableObserveOnNew": {
56
+ "type": "boolean",
57
+ "description": "Enable observer flush on /new.",
58
+ "default": false
59
+ },
60
+ "enableHeartbeatObservation": {
61
+ "type": "boolean",
62
+ "description": "Enable observation threshold checks on heartbeat.",
63
+ "default": false
64
+ },
65
+ "enableCompactionObservation": {
66
+ "type": "boolean",
67
+ "description": "Enable forced observer flush on compaction events.",
68
+ "default": false
69
+ },
70
+ "enableWeeklyReflection": {
71
+ "type": "boolean",
72
+ "description": "Enable weekly reflection on Sunday midnight UTC.",
73
+ "default": false
74
+ },
75
+ "enableFactExtraction": {
76
+ "type": "boolean",
77
+ "description": "Enable extraction of structured facts from observed text during hook events.",
78
+ "default": false
46
79
  },
47
80
  "autoCheckpoint": {
48
81
  "type": "boolean",
49
- "description": "Enable automatic checkpointing on session events",
50
- "default": true
82
+ "description": "Deprecated alias for enableAutoCheckpoint.",
83
+ "default": false
84
+ },
85
+ "observeOnHeartbeat": {
86
+ "type": "boolean",
87
+ "description": "Deprecated alias for enableHeartbeatObservation.",
88
+ "default": false
89
+ },
90
+ "weeklyReflection": {
91
+ "type": "boolean",
92
+ "description": "Deprecated alias for enableWeeklyReflection.",
93
+ "default": false
51
94
  },
52
95
  "contextProfile": {
53
96
  "type": "string",
@@ -62,159 +105,27 @@
62
105
  "description": "Maximum number of context results to inject on session start",
63
106
  "default": 4
64
107
  },
65
- "observeOnHeartbeat": {
108
+ "enableBeforePromptRecall": {
66
109
  "type": "boolean",
67
- "description": "Enable observation threshold checks on gateway heartbeat",
110
+ "description": "Enable before_prompt_build memory recall directives and vault context injection.",
68
111
  "default": true
69
112
  },
70
- "weeklyReflection": {
113
+ "enableMessageSendingFilter": {
71
114
  "type": "boolean",
72
- "description": "Enable weekly reflection on Sunday midnight UTC",
115
+ "description": "Enable outbound message filtering via message_sending hook.",
73
116
  "default": true
74
117
  },
75
- "defaultScope": {
76
- "type": "string",
77
- "description": "Default memory scope. Use 'global' for shared, or 'agent:<id>', 'project:<name>', 'user:<id>' for scoped.",
78
- "default": "global"
79
- },
80
- "retrieval": {
81
- "type": "object",
82
- "description": "Hybrid retrieval pipeline configuration",
83
- "properties": {
84
- "bm25Weight": {
85
- "type": "number",
86
- "minimum": 0,
87
- "maximum": 1,
88
- "description": "BM25 weight in RRF fusion",
89
- "default": 0.5
90
- },
91
- "semanticWeight": {
92
- "type": "number",
93
- "minimum": 0,
94
- "maximum": 1,
95
- "description": "Semantic search weight in RRF fusion",
96
- "default": 0.5
97
- },
98
- "rrfK": {
99
- "type": "integer",
100
- "minimum": 1,
101
- "description": "RRF k parameter (higher = more weight to lower-ranked items)",
102
- "default": 60
103
- },
104
- "topK": {
105
- "type": "integer",
106
- "minimum": 1,
107
- "maximum": 100,
108
- "description": "Maximum results to return",
109
- "default": 10
110
- },
111
- "minScore": {
112
- "type": "number",
113
- "minimum": 0,
114
- "maximum": 1,
115
- "description": "Minimum score threshold for results",
116
- "default": 0.01
117
- },
118
- "recencyHalfLifeDays": {
119
- "type": "number",
120
- "minimum": 0,
121
- "description": "Recency boost half-life in days (0 = disabled)",
122
- "default": 14
123
- },
124
- "recencyWeight": {
125
- "type": "number",
126
- "minimum": 0,
127
- "maximum": 1,
128
- "description": "Recency boost weight (additive)",
129
- "default": 0.10
130
- },
131
- "decayHalfLifeDays": {
132
- "type": "number",
133
- "minimum": 0,
134
- "description": "Time decay half-life in days (0 = disabled)",
135
- "default": 60
136
- },
137
- "lengthNormAnchor": {
138
- "type": "integer",
139
- "minimum": 0,
140
- "description": "Length normalization anchor in characters (0 = disabled)",
141
- "default": 500
142
- },
143
- "mmrLambda": {
144
- "type": "number",
145
- "minimum": 0,
146
- "maximum": 1,
147
- "description": "MMR diversity lambda (1.0 = no diversity, lower = more diverse)",
148
- "default": 0.7
149
- },
150
- "rerankProvider": {
151
- "type": "string",
152
- "enum": ["jina", "voyage", "siliconflow", "pinecone"],
153
- "description": "Cross-encoder reranker API provider (optional)"
154
- },
155
- "rerankApiKey": {
156
- "type": "string",
157
- "description": "API key for the reranker service"
158
- },
159
- "rerankModel": {
160
- "type": "string",
161
- "description": "Reranker model name (auto-selected per provider if omitted)"
162
- },
163
- "rerankEndpoint": {
164
- "type": "string",
165
- "description": "Custom reranker endpoint URL"
166
- },
167
- "rerankWeight": {
168
- "type": "number",
169
- "minimum": 0,
170
- "maximum": 1,
171
- "description": "Weight of reranker score vs fused score (0.6 = 60% reranker)",
172
- "default": 0.6
173
- }
174
- },
175
- "additionalProperties": false
176
- },
177
- "noise": {
178
- "type": "object",
179
- "description": "Noise filtering configuration for write and read paths",
180
- "properties": {
181
- "enabled": {
182
- "type": "boolean",
183
- "description": "Enable noise filtering",
184
- "default": true
185
- },
186
- "minLength": {
187
- "type": "integer",
188
- "minimum": 0,
189
- "description": "Minimum text length to accept",
190
- "default": 15
191
- },
192
- "maxLength": {
193
- "type": "integer",
194
- "minimum": 100,
195
- "description": "Maximum text length to accept",
196
- "default": 5000
197
- }
198
- },
199
- "additionalProperties": false
118
+ "enforceCommunicationProtocol": {
119
+ "type": "boolean",
120
+ "description": "Append communication protocol rules to system context and enforce rewrites.",
121
+ "default": true
200
122
  },
201
- "adaptive": {
202
- "type": "object",
203
- "description": "Adaptive retrieval configuration — skip retrieval for low-value queries",
204
- "properties": {
205
- "enabled": {
206
- "type": "boolean",
207
- "description": "Enable adaptive retrieval skipping",
208
- "default": true
209
- },
210
- "skipPatterns": {
211
- "type": "array",
212
- "items": { "type": "string" },
213
- "description": "Additional regex patterns that should skip retrieval",
214
- "default": []
215
- }
216
- },
217
- "additionalProperties": false
123
+ "minQuestionRecallScore": {
124
+ "type": "number",
125
+ "minimum": 0,
126
+ "maximum": 1,
127
+ "description": "Minimum memory_search score used when checking outbound questions for existing answers.",
128
+ "default": 0.35
218
129
  }
219
130
  },
220
131
  "additionalProperties": false
@@ -223,39 +134,95 @@
223
134
  "vaultPath": {
224
135
  "label": "Vault Path",
225
136
  "placeholder": "~/my-vault",
226
- "description": "Path to your ClawVault memory vault"
137
+ "description": "Path to your ClawVault memory vault (fallback when agentVaults not set)"
227
138
  },
228
139
  "agentVaults": {
229
140
  "label": "Agent Vaults",
230
- "description": "Per-agent vault paths"
141
+ "description": "Per-agent vault paths (e.g., {\"agent1\": \"/path/to/vault1\", \"agent2\": \"/path/to/vault2\"})"
142
+ },
143
+ "allowClawvaultExec": {
144
+ "label": "Allow CLI Execution",
145
+ "description": "Required opt-in to run child_process calls from the plugin."
146
+ },
147
+ "clawvaultBinaryPath": {
148
+ "label": "ClawVault Binary Path",
149
+ "description": "Absolute path to clawvault executable for stricter execution controls."
150
+ },
151
+ "clawvaultBinarySha256": {
152
+ "label": "ClawVault Binary SHA-256",
153
+ "description": "Optional checksum to verify executable integrity before execution."
154
+ },
155
+ "allowEnvAccess": {
156
+ "label": "Allow Environment Access",
157
+ "description": "Allow OPENCLAW_* and CLAWVAULT_PATH reads for fallback discovery."
158
+ },
159
+ "enableStartupRecovery": {
160
+ "label": "Startup Recovery",
161
+ "description": "Run recovery checks on gateway startup."
162
+ },
163
+ "enableSessionContextInjection": {
164
+ "label": "Session Context Injection",
165
+ "description": "Inject recap and memory context on session start."
166
+ },
167
+ "enableAutoCheckpoint": {
168
+ "label": "Auto Checkpoint",
169
+ "description": "Automatically checkpoint before /new."
170
+ },
171
+ "enableObserveOnNew": {
172
+ "label": "Observe On /new",
173
+ "description": "Run observer flush on /new."
174
+ },
175
+ "enableHeartbeatObservation": {
176
+ "label": "Observe On Heartbeat",
177
+ "description": "Check observation thresholds during heartbeat events."
178
+ },
179
+ "enableCompactionObservation": {
180
+ "label": "Observe On Compaction",
181
+ "description": "Force observer flush during compaction events."
182
+ },
183
+ "enableWeeklyReflection": {
184
+ "label": "Weekly Reflection",
185
+ "description": "Run weekly reflection on Sunday midnight UTC."
186
+ },
187
+ "enableFactExtraction": {
188
+ "label": "Fact Extraction",
189
+ "description": "Extract structured facts from hook event payloads."
190
+ },
191
+ "autoCheckpoint": {
192
+ "label": "Auto Checkpoint (Legacy Alias)",
193
+ "description": "Deprecated alias for enableAutoCheckpoint."
194
+ },
195
+ "contextProfile": {
196
+ "label": "Context Profile",
197
+ "description": "Profile used for context injection at session start"
231
198
  },
232
- "autoRecall": {
233
- "label": "Auto Recall",
234
- "description": "Automatically recall relevant memories on session start"
199
+ "maxContextResults": {
200
+ "label": "Max Context Results",
201
+ "description": "Number of vault memories to inject"
235
202
  },
236
- "autoCapture": {
237
- "label": "Auto Capture",
238
- "description": "Automatically capture observations from conversations"
203
+ "enableBeforePromptRecall": {
204
+ "label": "Enable Before Prompt Recall",
205
+ "description": "Use before_prompt_build to force memory recall and inject vault context."
239
206
  },
240
- "recallLimit": {
241
- "label": "Recall Limit",
242
- "description": "Max memories to recall per query"
207
+ "enableMessageSendingFilter": {
208
+ "label": "Enable Message Sending Filter",
209
+ "description": "Use message_sending to rewrite or block protocol violations."
243
210
  },
244
- "defaultScope": {
245
- "label": "Default Scope",
246
- "description": "Default memory scope (global, agent:<id>, project:<name>, user:<id>)"
211
+ "enforceCommunicationProtocol": {
212
+ "label": "Enforce Communication Protocol",
213
+ "description": "Append protocol rules to system context and enforce banned-pattern rewrites."
247
214
  },
248
- "retrieval": {
249
- "label": "Retrieval Pipeline",
250
- "description": "Configure hybrid search, reranking, recency, and diversity settings"
215
+ "minQuestionRecallScore": {
216
+ "label": "Min Question Recall Score",
217
+ "description": "Score threshold when deciding if outbound questions are already answered by memory."
251
218
  },
252
- "noise": {
253
- "label": "Noise Filter",
254
- "description": "Filter low-quality content from capture and retrieval"
219
+ "observeOnHeartbeat": {
220
+ "label": "Observe on Heartbeat (Legacy Alias)",
221
+ "description": "Deprecated alias for enableHeartbeatObservation."
255
222
  },
256
- "adaptive": {
257
- "label": "Adaptive Retrieval",
258
- "description": "Skip memory retrieval for greetings, commands, and acknowledgments"
223
+ "weeklyReflection": {
224
+ "label": "Weekly Reflection (Legacy Alias)",
225
+ "description": "Deprecated alias for enableWeeklyReflection."
259
226
  }
260
227
  }
261
228
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clawvault",
3
- "version": "3.2.1",
3
+ "version": "3.4.0",
4
4
  "description": "Structured memory system for AI agents — typed storage, knowledge graph, context profiles, canvas dashboards, neural graph themes, and Obsidian-native task views. An elephant never forgets. 🐘",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",
@@ -26,17 +26,20 @@
26
26
  ],
27
27
  "openclaw": {
28
28
  "plugin": "./openclaw.plugin.json",
29
+ "extensions": [
30
+ "./dist/openclaw-plugin.js"
31
+ ],
29
32
  "hooks": [
30
33
  "./hooks/clawvault"
31
34
  ]
32
35
  },
33
36
  "scripts": {
34
- "build": "tsup src/commands/archive.ts src/commands/backlog.ts src/commands/blocked.ts src/commands/canvas.ts src/commands/checkpoint.ts src/commands/compat.ts src/commands/context.ts src/commands/doctor.ts src/commands/embed.ts src/commands/entities.ts src/commands/graph.ts src/commands/inject.ts src/commands/kanban.ts src/commands/link.ts src/commands/migrate-observations.ts src/commands/observe.ts src/commands/project.ts src/commands/rebuild.ts src/commands/rebuild-embeddings.ts src/commands/recover.ts src/commands/reflect.ts src/commands/repair-session.ts src/commands/replay.ts src/commands/session-recap.ts src/commands/setup.ts src/commands/shell-init.ts src/commands/sleep.ts src/commands/status.ts src/commands/sync-bd.ts src/commands/tailscale.ts src/commands/task.ts src/commands/template.ts src/commands/wake.ts src/cli/index.ts src/index.ts src/lib/auto-linker.ts src/lib/canvas-layout.ts src/lib/config.ts src/lib/entity-index.ts src/lib/project-utils.ts src/lib/session-repair.ts src/lib/session-utils.ts src/lib/tailscale.ts src/lib/task-utils.ts src/lib/template-engine.ts src/lib/webdav.ts src/workgraph/index.ts src/workgraph/types.ts src/workgraph/registry.ts src/workgraph/ledger.ts src/workgraph/store.ts src/workgraph/thread.ts src/plugin/index.ts --format esm --dts --clean",
37
+ "build": "tsup src/commands/archive.ts src/commands/backlog.ts src/commands/benchmark.ts src/commands/blocked.ts src/commands/canvas.ts src/commands/checkpoint.ts src/commands/compat.ts src/commands/context.ts src/commands/doctor.ts src/commands/embed.ts src/commands/entities.ts src/commands/graph.ts src/commands/inbox.ts src/commands/inject.ts src/commands/kanban.ts src/commands/link.ts src/commands/maintain.ts src/commands/migrate-observations.ts src/commands/observe.ts src/commands/project.ts src/commands/recall.ts src/commands/rebuild.ts src/commands/rebuild-embeddings.ts src/commands/recover.ts src/commands/reflect.ts src/commands/repair-session.ts src/commands/replay.ts src/commands/session-recap.ts src/commands/setup.ts src/commands/shell-init.ts src/commands/sleep.ts src/commands/status.ts src/commands/sync-bd.ts src/commands/tailscale.ts src/commands/task.ts src/commands/template.ts src/commands/wake.ts src/cli/index.ts src/index.ts src/openclaw-plugin.ts src/lib/auto-linker.ts src/lib/canvas-layout.ts src/lib/config.ts src/lib/entity-index.ts src/lib/project-utils.ts src/lib/session-repair.ts src/lib/session-utils.ts src/lib/tailscale.ts src/lib/task-utils.ts src/lib/template-engine.ts src/lib/webdav.ts --format esm --dts --clean",
35
38
  "dev": "tsup src/index.ts src/commands/*.ts src/lib/*.ts --format esm --dts --watch",
36
39
  "lint": "eslint src",
37
40
  "typecheck": "tsc --noEmit",
38
- "test": "vitest run",
39
- "ci": "npm run typecheck && npm test && npm run build",
41
+ "test": "npm run build && vitest run",
42
+ "ci": "npm run typecheck && npm test",
40
43
  "prepublishOnly": "npm run build"
41
44
  },
42
45
  "keywords": [
@@ -67,7 +70,6 @@
67
70
  "node": ">=18"
68
71
  },
69
72
  "dependencies": {
70
- "@huggingface/transformers": "^3.8.1",
71
73
  "chalk": "^5.3.0",
72
74
  "chokidar": "^5.0.0",
73
75
  "commander": "^12.0.0",
@@ -88,6 +90,7 @@
88
90
  }
89
91
  },
90
92
  "devDependencies": {
93
+ "@huggingface/transformers": "^3.8.1",
91
94
  "@types/node": "^20.11.0",
92
95
  "ajv": "^8.17.1",
93
96
  "puppeteer": "^24.37.2",