clawvault 3.1.0 → 3.2.1

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 (273) hide show
  1. package/README.md +422 -141
  2. package/bin/clawvault.js +10 -2
  3. package/bin/command-registration.test.js +3 -1
  4. package/bin/command-runtime.js +9 -1
  5. package/bin/register-core-commands.js +23 -28
  6. package/bin/register-maintenance-commands.js +39 -3
  7. package/bin/register-query-commands.js +58 -29
  8. package/bin/register-tailscale-commands.js +106 -0
  9. package/bin/register-task-commands.js +18 -1
  10. package/bin/register-task-commands.test.js +16 -0
  11. package/bin/register-vault-operations-commands.js +29 -1
  12. package/bin/register-workgraph-commands.js +451 -0
  13. package/dashboard/lib/graph-diff.js +104 -0
  14. package/dashboard/lib/graph-diff.test.js +75 -0
  15. package/dashboard/lib/vault-parser.js +556 -0
  16. package/dashboard/lib/vault-parser.test.js +254 -0
  17. package/dashboard/public/app.js +796 -0
  18. package/dashboard/public/index.html +52 -0
  19. package/dashboard/public/styles.css +221 -0
  20. package/dashboard/server.js +374 -0
  21. package/dist/{chunk-C7OK5WKP.js → chunk-2JQ3O2YL.js} +4 -4
  22. package/dist/{chunk-VR5NE7PZ.js → chunk-2RAZ4ZFE.js} +1 -1
  23. package/dist/{chunk-F2JEUD4J.js → chunk-4ITRXIVT.js} +5 -7
  24. package/dist/{chunk-GUKMRGM7.js → chunk-4OXMU5S2.js} +1 -1
  25. package/dist/chunk-5PJ4STIC.js +465 -0
  26. package/dist/{chunk-62YTUT6J.js → chunk-AZYOKJYC.js} +2 -2
  27. package/dist/chunk-BSJ6RIT7.js +447 -0
  28. package/dist/chunk-ECRZL5XR.js +50 -0
  29. package/dist/chunk-ERNE2FZ5.js +189 -0
  30. package/dist/{chunk-WAZ3NLWL.js → chunk-F55HGNU4.js} +0 -47
  31. package/dist/{chunk-VGLOTGAS.js → chunk-FAKNOB7Y.js} +2 -2
  32. package/dist/{chunk-QK3UCXWL.js → chunk-FHFUXL6G.js} +2 -2
  33. package/dist/chunk-GNJL4YGR.js +79 -0
  34. package/dist/chunk-HR4KN6S2.js +152 -0
  35. package/dist/{chunk-OZ7RIXTO.js → chunk-IIOU45CK.js} +1 -1
  36. package/dist/chunk-IJBFGPCS.js +33 -0
  37. package/dist/chunk-IVRIKYFE.js +520 -0
  38. package/dist/chunk-K7PNYS45.js +93 -0
  39. package/dist/chunk-MDIH26GC.js +183 -0
  40. package/dist/{chunk-LYHGEHXG.js → chunk-MFAWT5O5.js} +0 -1
  41. package/dist/{chunk-H34S76MB.js → chunk-MNPUYCHQ.js} +6 -6
  42. package/dist/chunk-NTOPJI7W.js +207 -0
  43. package/dist/{chunk-QBLMXKF2.js → chunk-OIWVQYQF.js} +1 -1
  44. package/dist/chunk-PG56HX5T.js +154 -0
  45. package/dist/{chunk-LNJA2UGL.js → chunk-PI4WMLMG.js} +7 -84
  46. package/dist/chunk-QMHPQYUV.js +363 -0
  47. package/dist/{chunk-H62BP7RI.js → chunk-QPDDIHXE.js} +209 -43
  48. package/dist/{chunk-N2AXRYLC.js → chunk-QWQ3TIKS.js} +1 -1
  49. package/dist/{chunk-3DHXQHYG.js → chunk-R2MIW5G7.js} +1 -1
  50. package/dist/{chunk-SJSFRIYS.js → chunk-S5OJEGFG.js} +2 -2
  51. package/dist/chunk-SS4B7P7V.js +99 -0
  52. package/dist/chunk-TIGW564L.js +628 -0
  53. package/dist/chunk-U67V476Y.js +35 -0
  54. package/dist/{chunk-JY6FYXIT.js → chunk-UCQAOZHW.js} +6 -11
  55. package/dist/{chunk-ITPEXLHA.js → chunk-URXDAUVH.js} +24 -5
  56. package/dist/chunk-WIOLLGAD.js +190 -0
  57. package/dist/{chunk-3WRJEKN4.js → chunk-WJVWINEM.js} +72 -8
  58. package/dist/chunk-WMGIIABP.js +15 -0
  59. package/dist/{chunk-33UGEQRT.js → chunk-X3SPPUFG.js} +151 -64
  60. package/dist/{chunk-3NSBOUT3.js → chunk-Y3TIJEBP.js} +314 -79
  61. package/dist/chunk-Y6VJKXGL.js +373 -0
  62. package/dist/{chunk-LI4O6NVK.js → chunk-YDWHS4LJ.js} +49 -9
  63. package/dist/{chunk-U55BGUAU.js → chunk-YNIPYN4F.js} +5 -5
  64. package/dist/chunk-YXQCA6B7.js +226 -0
  65. package/dist/cli/index.js +26 -22
  66. package/dist/commands/archive.js +3 -3
  67. package/dist/commands/backlog.js +3 -3
  68. package/dist/commands/blocked.js +3 -3
  69. package/dist/commands/canvas.d.ts +15 -0
  70. package/dist/commands/canvas.js +200 -0
  71. package/dist/commands/checkpoint.js +2 -2
  72. package/dist/commands/compat.js +2 -2
  73. package/dist/commands/context.js +7 -5
  74. package/dist/commands/doctor.d.ts +11 -7
  75. package/dist/commands/doctor.js +16 -14
  76. package/dist/commands/embed.js +5 -6
  77. package/dist/commands/entities.js +2 -2
  78. package/dist/commands/graph.js +3 -3
  79. package/dist/commands/inject.d.ts +1 -1
  80. package/dist/commands/inject.js +4 -5
  81. package/dist/commands/kanban.js +4 -4
  82. package/dist/commands/link.js +2 -2
  83. package/dist/commands/migrate-observations.js +4 -4
  84. package/dist/commands/observe.d.ts +0 -1
  85. package/dist/commands/observe.js +13 -12
  86. package/dist/commands/project.js +5 -5
  87. package/dist/commands/rebuild-embeddings.d.ts +21 -0
  88. package/dist/commands/rebuild-embeddings.js +91 -0
  89. package/dist/commands/rebuild.js +12 -11
  90. package/dist/commands/recover.js +3 -3
  91. package/dist/commands/reflect.js +6 -7
  92. package/dist/commands/repair-session.js +1 -1
  93. package/dist/commands/replay.js +14 -14
  94. package/dist/commands/session-recap.js +1 -1
  95. package/dist/commands/setup.d.ts +2 -89
  96. package/dist/commands/setup.js +3 -21
  97. package/dist/commands/shell-init.js +1 -1
  98. package/dist/commands/sleep.d.ts +1 -1
  99. package/dist/commands/sleep.js +18 -17
  100. package/dist/commands/status.d.ts +2 -0
  101. package/dist/commands/status.js +40 -30
  102. package/dist/commands/sync-bd.d.ts +10 -0
  103. package/dist/commands/sync-bd.js +10 -0
  104. package/dist/commands/tailscale.d.ts +52 -0
  105. package/dist/commands/tailscale.js +26 -0
  106. package/dist/commands/task.js +4 -4
  107. package/dist/commands/template.js +2 -2
  108. package/dist/commands/wake.d.ts +1 -1
  109. package/dist/commands/wake.js +11 -10
  110. package/dist/index.d.ts +334 -191
  111. package/dist/index.js +432 -108
  112. package/dist/{inject-Bzi5E-By.d.ts → inject-DYUrDqQO.d.ts} +3 -3
  113. package/dist/ledger-B7g7jhqG.d.ts +44 -0
  114. package/dist/lib/auto-linker.js +1 -1
  115. package/dist/lib/canvas-layout.d.ts +115 -0
  116. package/dist/lib/canvas-layout.js +35 -0
  117. package/dist/lib/config.d.ts +27 -3
  118. package/dist/lib/config.js +4 -2
  119. package/dist/lib/entity-index.js +1 -1
  120. package/dist/lib/project-utils.js +4 -4
  121. package/dist/lib/session-repair.js +1 -1
  122. package/dist/lib/session-utils.js +1 -1
  123. package/dist/lib/tailscale.d.ts +225 -0
  124. package/dist/lib/tailscale.js +50 -0
  125. package/dist/lib/task-utils.js +3 -3
  126. package/dist/lib/template-engine.js +1 -1
  127. package/dist/lib/webdav.d.ts +109 -0
  128. package/dist/lib/webdav.js +35 -0
  129. package/dist/plugin/index.d.ts +344 -28
  130. package/dist/plugin/index.js +3919 -227
  131. package/dist/registry-BR4326o0.d.ts +30 -0
  132. package/dist/store-CA-6sKCJ.d.ts +34 -0
  133. package/dist/thread-B9LhXNU0.d.ts +41 -0
  134. package/dist/{types-Y2_Um2Ls.d.ts → types-BbWJoC1c.d.ts} +1 -44
  135. package/dist/workgraph/index.d.ts +5 -0
  136. package/dist/workgraph/index.js +23 -0
  137. package/dist/workgraph/ledger.d.ts +2 -0
  138. package/dist/workgraph/ledger.js +25 -0
  139. package/dist/workgraph/registry.d.ts +2 -0
  140. package/dist/workgraph/registry.js +19 -0
  141. package/dist/workgraph/store.d.ts +2 -0
  142. package/dist/workgraph/store.js +25 -0
  143. package/dist/workgraph/thread.d.ts +2 -0
  144. package/dist/workgraph/thread.js +25 -0
  145. package/dist/workgraph/types.d.ts +54 -0
  146. package/dist/workgraph/types.js +7 -0
  147. package/hooks/clawvault/HOOK.md +113 -0
  148. package/hooks/clawvault/handler.js +1559 -0
  149. package/hooks/clawvault/handler.test.js +510 -0
  150. package/hooks/clawvault/openclaw.plugin.json +72 -0
  151. package/openclaw.plugin.json +235 -30
  152. package/package.json +20 -20
  153. package/dist/chunk-3RG5ZIWI.js +0 -10
  154. package/dist/chunk-3ZIH425O.js +0 -871
  155. package/dist/chunk-6U6MK36V.js +0 -205
  156. package/dist/chunk-CMB7UL7C.js +0 -327
  157. package/dist/chunk-D2H45LON.js +0 -1074
  158. package/dist/chunk-E7MFQB6D.js +0 -163
  159. package/dist/chunk-GQSLDZTS.js +0 -560
  160. package/dist/chunk-MFM6K7PU.js +0 -374
  161. package/dist/chunk-MXSSG3QU.js +0 -42
  162. package/dist/chunk-OCGVIN3L.js +0 -88
  163. package/dist/chunk-PAH27GSN.js +0 -108
  164. package/dist/chunk-YCUNCH2I.js +0 -78
  165. package/dist/cli/index.cjs +0 -8584
  166. package/dist/cli/index.d.cts +0 -5
  167. package/dist/commands/archive.cjs +0 -287
  168. package/dist/commands/archive.d.cts +0 -11
  169. package/dist/commands/backlog.cjs +0 -721
  170. package/dist/commands/backlog.d.cts +0 -53
  171. package/dist/commands/blocked.cjs +0 -204
  172. package/dist/commands/blocked.d.cts +0 -26
  173. package/dist/commands/checkpoint.cjs +0 -244
  174. package/dist/commands/checkpoint.d.cts +0 -41
  175. package/dist/commands/compat.cjs +0 -294
  176. package/dist/commands/compat.d.cts +0 -28
  177. package/dist/commands/context.cjs +0 -2990
  178. package/dist/commands/context.d.cts +0 -2
  179. package/dist/commands/doctor.cjs +0 -2986
  180. package/dist/commands/doctor.d.cts +0 -21
  181. package/dist/commands/embed.cjs +0 -232
  182. package/dist/commands/embed.d.cts +0 -17
  183. package/dist/commands/entities.cjs +0 -141
  184. package/dist/commands/entities.d.cts +0 -7
  185. package/dist/commands/graph.cjs +0 -501
  186. package/dist/commands/graph.d.cts +0 -21
  187. package/dist/commands/inject.cjs +0 -1636
  188. package/dist/commands/inject.d.cts +0 -2
  189. package/dist/commands/kanban.cjs +0 -884
  190. package/dist/commands/kanban.d.cts +0 -63
  191. package/dist/commands/link.cjs +0 -965
  192. package/dist/commands/link.d.cts +0 -11
  193. package/dist/commands/migrate-observations.cjs +0 -362
  194. package/dist/commands/migrate-observations.d.cts +0 -19
  195. package/dist/commands/observe.cjs +0 -4099
  196. package/dist/commands/observe.d.cts +0 -23
  197. package/dist/commands/project.cjs +0 -1341
  198. package/dist/commands/project.d.cts +0 -85
  199. package/dist/commands/rebuild.cjs +0 -3136
  200. package/dist/commands/rebuild.d.cts +0 -11
  201. package/dist/commands/recover.cjs +0 -361
  202. package/dist/commands/recover.d.cts +0 -38
  203. package/dist/commands/reflect.cjs +0 -1008
  204. package/dist/commands/reflect.d.cts +0 -11
  205. package/dist/commands/repair-session.cjs +0 -457
  206. package/dist/commands/repair-session.d.cts +0 -38
  207. package/dist/commands/replay.cjs +0 -4103
  208. package/dist/commands/replay.d.cts +0 -16
  209. package/dist/commands/session-recap.cjs +0 -353
  210. package/dist/commands/session-recap.d.cts +0 -27
  211. package/dist/commands/setup.cjs +0 -1278
  212. package/dist/commands/setup.d.cts +0 -99
  213. package/dist/commands/shell-init.cjs +0 -75
  214. package/dist/commands/shell-init.d.cts +0 -7
  215. package/dist/commands/sleep.cjs +0 -6029
  216. package/dist/commands/sleep.d.cts +0 -36
  217. package/dist/commands/status.cjs +0 -2737
  218. package/dist/commands/status.d.cts +0 -52
  219. package/dist/commands/task.cjs +0 -1236
  220. package/dist/commands/task.d.cts +0 -97
  221. package/dist/commands/template.cjs +0 -457
  222. package/dist/commands/template.d.cts +0 -36
  223. package/dist/commands/wake.cjs +0 -2627
  224. package/dist/commands/wake.d.cts +0 -22
  225. package/dist/context-BUGaWpyL.d.cts +0 -46
  226. package/dist/index.cjs +0 -12373
  227. package/dist/index.d.cts +0 -854
  228. package/dist/inject-Bzi5E-By.d.cts +0 -137
  229. package/dist/lib/auto-linker.cjs +0 -176
  230. package/dist/lib/auto-linker.d.cts +0 -26
  231. package/dist/lib/config.cjs +0 -78
  232. package/dist/lib/config.d.cts +0 -11
  233. package/dist/lib/entity-index.cjs +0 -84
  234. package/dist/lib/entity-index.d.cts +0 -26
  235. package/dist/lib/project-utils.cjs +0 -864
  236. package/dist/lib/project-utils.d.cts +0 -97
  237. package/dist/lib/session-repair.cjs +0 -239
  238. package/dist/lib/session-repair.d.cts +0 -110
  239. package/dist/lib/session-utils.cjs +0 -209
  240. package/dist/lib/session-utils.d.cts +0 -63
  241. package/dist/lib/task-utils.cjs +0 -1137
  242. package/dist/lib/task-utils.d.cts +0 -208
  243. package/dist/lib/template-engine.cjs +0 -47
  244. package/dist/lib/template-engine.d.cts +0 -11
  245. package/dist/plugin/index.cjs +0 -1907
  246. package/dist/plugin/index.d.cts +0 -36
  247. package/dist/plugin/inject.cjs +0 -356
  248. package/dist/plugin/inject.d.cts +0 -54
  249. package/dist/plugin/inject.d.ts +0 -54
  250. package/dist/plugin/inject.js +0 -17
  251. package/dist/plugin/observe.cjs +0 -631
  252. package/dist/plugin/observe.d.cts +0 -39
  253. package/dist/plugin/observe.d.ts +0 -39
  254. package/dist/plugin/observe.js +0 -18
  255. package/dist/plugin/templates.cjs +0 -593
  256. package/dist/plugin/templates.d.cts +0 -52
  257. package/dist/plugin/templates.d.ts +0 -52
  258. package/dist/plugin/templates.js +0 -25
  259. package/dist/plugin/types.cjs +0 -18
  260. package/dist/plugin/types.d.cts +0 -209
  261. package/dist/plugin/types.d.ts +0 -209
  262. package/dist/plugin/types.js +0 -0
  263. package/dist/plugin/vault.cjs +0 -927
  264. package/dist/plugin/vault.d.cts +0 -68
  265. package/dist/plugin/vault.d.ts +0 -68
  266. package/dist/plugin/vault.js +0 -22
  267. package/dist/types-Y2_Um2Ls.d.cts +0 -205
  268. package/templates/memory-event.md +0 -67
  269. package/templates/party.md +0 -63
  270. package/templates/primitive-registry.yaml +0 -551
  271. package/templates/run.md +0 -68
  272. package/templates/trigger.md +0 -68
  273. package/templates/workspace.md +0 -50
@@ -0,0 +1,30 @@
1
+ import { FieldDefinition, PrimitiveTypeDefinition, Registry } from './workgraph/types.js';
2
+
3
+ /**
4
+ * Dynamic primitive type registry.
5
+ *
6
+ * Agents can define new primitive types at runtime. The registry is stored
7
+ * as `.clawvault/registry.json` in the vault. Built-in types are seeded on
8
+ * first access and cannot be deleted (but CAN be extended with new fields).
9
+ */
10
+
11
+ declare function registryPath(vaultPath: string): string;
12
+ declare function loadRegistry(vaultPath: string): Registry;
13
+ declare function saveRegistry(vaultPath: string, registry: Registry): void;
14
+ declare function defineType(vaultPath: string, name: string, description: string, fields: Record<string, FieldDefinition>, actor: string, directory?: string): PrimitiveTypeDefinition;
15
+ declare function getType(vaultPath: string, name: string): PrimitiveTypeDefinition | undefined;
16
+ declare function listTypes(vaultPath: string): PrimitiveTypeDefinition[];
17
+ declare function extendType(vaultPath: string, name: string, newFields: Record<string, FieldDefinition>, actor: string): PrimitiveTypeDefinition;
18
+
19
+ declare const registry_defineType: typeof defineType;
20
+ declare const registry_extendType: typeof extendType;
21
+ declare const registry_getType: typeof getType;
22
+ declare const registry_listTypes: typeof listTypes;
23
+ declare const registry_loadRegistry: typeof loadRegistry;
24
+ declare const registry_registryPath: typeof registryPath;
25
+ declare const registry_saveRegistry: typeof saveRegistry;
26
+ declare namespace registry {
27
+ export { registry_defineType as defineType, registry_extendType as extendType, registry_getType as getType, registry_listTypes as listTypes, registry_loadRegistry as loadRegistry, registry_registryPath as registryPath, registry_saveRegistry as saveRegistry };
28
+ }
29
+
30
+ export { loadRegistry as a, registryPath as b, defineType as d, extendType as e, getType as g, listTypes as l, registry as r, saveRegistry as s };
@@ -0,0 +1,34 @@
1
+ import { PrimitiveInstance } from './workgraph/types.js';
2
+
3
+ /**
4
+ * Workgraph store — CRUD for primitive instances.
5
+ *
6
+ * Primitives are markdown files with YAML frontmatter. The store reads/writes
7
+ * them and logs every mutation to the ledger. Schemas are soft: unknown fields
8
+ * are preserved, missing optional fields get defaults.
9
+ */
10
+
11
+ declare function create(vaultPath: string, typeName: string, fields: Record<string, unknown>, body: string, actor: string): PrimitiveInstance;
12
+ declare function read(vaultPath: string, relPath: string): PrimitiveInstance | null;
13
+ declare function list(vaultPath: string, typeName: string): PrimitiveInstance[];
14
+ declare function update(vaultPath: string, relPath: string, fieldUpdates: Record<string, unknown>, bodyUpdate: string | undefined, actor: string): PrimitiveInstance;
15
+ declare function remove(vaultPath: string, relPath: string, actor: string): void;
16
+ declare function findByField(vaultPath: string, typeName: string, field: string, value: unknown): PrimitiveInstance[];
17
+ declare function openThreads(vaultPath: string): PrimitiveInstance[];
18
+ declare function activeThreads(vaultPath: string): PrimitiveInstance[];
19
+ declare function blockedThreads(vaultPath: string): PrimitiveInstance[];
20
+
21
+ declare const store_activeThreads: typeof activeThreads;
22
+ declare const store_blockedThreads: typeof blockedThreads;
23
+ declare const store_create: typeof create;
24
+ declare const store_findByField: typeof findByField;
25
+ declare const store_list: typeof list;
26
+ declare const store_openThreads: typeof openThreads;
27
+ declare const store_read: typeof read;
28
+ declare const store_remove: typeof remove;
29
+ declare const store_update: typeof update;
30
+ declare namespace store {
31
+ export { store_activeThreads as activeThreads, store_blockedThreads as blockedThreads, store_create as create, store_findByField as findByField, store_list as list, store_openThreads as openThreads, store_read as read, store_remove as remove, store_update as update };
32
+ }
33
+
34
+ export { activeThreads as a, blockedThreads as b, create as c, remove as d, findByField as f, list as l, openThreads as o, read as r, store as s, update as u };
@@ -0,0 +1,41 @@
1
+ import { PrimitiveInstance } from './workgraph/types.js';
2
+
3
+ /**
4
+ * Thread lifecycle operations.
5
+ *
6
+ * Threads are the core coordination primitive. This module handles the
7
+ * claim/release/block/done lifecycle with ledger-backed exclusivity.
8
+ */
9
+
10
+ declare function createThread(vaultPath: string, title: string, goal: string, actor: string, opts?: {
11
+ priority?: string;
12
+ deps?: string[];
13
+ parent?: string;
14
+ context_refs?: string[];
15
+ tags?: string[];
16
+ }): PrimitiveInstance;
17
+ declare function claim(vaultPath: string, threadPath: string, actor: string): PrimitiveInstance;
18
+ declare function release(vaultPath: string, threadPath: string, actor: string, reason?: string): PrimitiveInstance;
19
+ declare function block(vaultPath: string, threadPath: string, actor: string, blockedBy: string, reason?: string): PrimitiveInstance;
20
+ declare function unblock(vaultPath: string, threadPath: string, actor: string): PrimitiveInstance;
21
+ declare function done(vaultPath: string, threadPath: string, actor: string, output?: string): PrimitiveInstance;
22
+ declare function cancel(vaultPath: string, threadPath: string, actor: string, reason?: string): PrimitiveInstance;
23
+ declare function decompose(vaultPath: string, parentPath: string, subthreads: Array<{
24
+ title: string;
25
+ goal: string;
26
+ deps?: string[];
27
+ }>, actor: string): PrimitiveInstance[];
28
+
29
+ declare const thread_block: typeof block;
30
+ declare const thread_cancel: typeof cancel;
31
+ declare const thread_claim: typeof claim;
32
+ declare const thread_createThread: typeof createThread;
33
+ declare const thread_decompose: typeof decompose;
34
+ declare const thread_done: typeof done;
35
+ declare const thread_release: typeof release;
36
+ declare const thread_unblock: typeof unblock;
37
+ declare namespace thread {
38
+ export { thread_block as block, thread_cancel as cancel, thread_claim as claim, thread_createThread as createThread, thread_decompose as decompose, thread_done as done, thread_release as release, thread_unblock as unblock };
39
+ }
40
+
41
+ export { claim as a, block as b, cancel as c, createThread as d, decompose as e, done as f, release as r, thread as t, unblock as u };
@@ -70,49 +70,6 @@ interface SearchOptions {
70
70
  fullContent?: boolean;
71
71
  /** Boost recent documents in ranking */
72
72
  temporalBoost?: boolean;
73
- /**
74
- * v2.7 — Enable chunk-level BM25 pre-filtering before semantic search.
75
- * Chunks documents into ~600-char sentence windows and ranks chunks by
76
- * keyword overlap so that relevant content deep in long documents isn't
77
- * silently dropped by fixed-N embedding limits.
78
- */
79
- chunkPrefilter?: boolean;
80
- /**
81
- * v2.7 — Exhaustive threshold-based retrieval for aggregation queries.
82
- * Instead of a fixed top_k, keeps pulling results until the normalised
83
- * relevance score drops below this threshold (0-1). Set to e.g. 0.01
84
- * for aggregation / "list all" queries. Overrides `limit` when set.
85
- */
86
- relevanceThreshold?: number;
87
- /**
88
- * v2.7 — Maximum results when using relevanceThreshold.
89
- * Prevents runaway result sets. Default 40.
90
- */
91
- thresholdMaxResults?: number;
92
- }
93
- /**
94
- * v2.7 — A date reference extracted from document content at ingest time.
95
- */
96
- interface ExtractedDate {
97
- /** ISO date string (YYYY-MM-DD) or "duration:<value>" */
98
- date: string;
99
- /** Surrounding context snippet (~150 chars) */
100
- context: string;
101
- /** Document id the date was extracted from */
102
- documentId: string;
103
- }
104
- /**
105
- * v2.7 — An extracted user preference from conversation content.
106
- */
107
- interface ExtractedPreference {
108
- /** The preference category (tool, hobby, brand, etc.) */
109
- category: string;
110
- /** The preference value */
111
- value: string;
112
- /** Document id it was extracted from */
113
- documentId: string;
114
- /** Surrounding context snippet */
115
- context: string;
116
73
  }
117
74
  interface StoreOptions {
118
75
  /** Category to store in */
@@ -202,4 +159,4 @@ interface SessionRecap {
202
159
  }
203
160
  declare const DEFAULT_CONFIG: Partial<VaultConfig>;
204
161
 
205
- export { type Category as C, type Document as D, type ExtractedDate as E, type HandoffDocument as H, type MemoryType as M, type StoreOptions as S, TYPE_TO_CATEGORY as T, type VaultConfig as V, type SearchOptions as a, type SearchResult as b, type SyncOptions as c, type SyncResult as d, type SessionRecap as e, type ExtractedPreference as f, DEFAULT_CATEGORIES as g, DEFAULT_CONFIG as h, MEMORY_TYPES as i, type VaultMeta as j };
162
+ export { type Category as C, type Document as D, type HandoffDocument as H, type MemoryType as M, type SessionRecap as S, TYPE_TO_CATEGORY as T, type VaultConfig as V, type StoreOptions as a, type SearchOptions as b, type SearchResult as c, type SyncOptions as d, type SyncResult as e, DEFAULT_CATEGORIES as f, DEFAULT_CONFIG as g, MEMORY_TYPES as h, type VaultMeta as i };
@@ -0,0 +1,5 @@
1
+ export { FieldDefinition, LedgerEntry, LedgerOp, PrimitiveInstance, PrimitiveTypeDefinition, Registry, THREAD_STATUS_TRANSITIONS, ThreadStatus } from './types.js';
2
+ export { r as registry } from '../registry-BR4326o0.js';
3
+ export { l as ledger } from '../ledger-B7g7jhqG.js';
4
+ export { s as store } from '../store-CA-6sKCJ.js';
5
+ export { t as thread } from '../thread-B9LhXNU0.js';
@@ -0,0 +1,23 @@
1
+ import {
2
+ thread_exports
3
+ } from "../chunk-ERNE2FZ5.js";
4
+ import {
5
+ store_exports
6
+ } from "../chunk-HR4KN6S2.js";
7
+ import {
8
+ ledger_exports
9
+ } from "../chunk-K7PNYS45.js";
10
+ import {
11
+ registry_exports
12
+ } from "../chunk-NTOPJI7W.js";
13
+ import {
14
+ THREAD_STATUS_TRANSITIONS
15
+ } from "../chunk-WMGIIABP.js";
16
+ import "../chunk-U67V476Y.js";
17
+ export {
18
+ THREAD_STATUS_TRANSITIONS,
19
+ ledger_exports as ledger,
20
+ registry_exports as registry,
21
+ store_exports as store,
22
+ thread_exports as thread
23
+ };
@@ -0,0 +1,2 @@
1
+ import './types.js';
2
+ export { a as activityOf, b as allClaims, c as append, d as currentOwner, h as historyOf, i as isClaimed, e as ledgerPath, r as readAll, f as readSince, g as recent } from '../ledger-B7g7jhqG.js';
@@ -0,0 +1,25 @@
1
+ import {
2
+ activityOf,
3
+ allClaims,
4
+ append,
5
+ currentOwner,
6
+ historyOf,
7
+ isClaimed,
8
+ ledgerPath,
9
+ readAll,
10
+ readSince,
11
+ recent
12
+ } from "../chunk-K7PNYS45.js";
13
+ import "../chunk-U67V476Y.js";
14
+ export {
15
+ activityOf,
16
+ allClaims,
17
+ append,
18
+ currentOwner,
19
+ historyOf,
20
+ isClaimed,
21
+ ledgerPath,
22
+ readAll,
23
+ readSince,
24
+ recent
25
+ };
@@ -0,0 +1,2 @@
1
+ import './types.js';
2
+ export { d as defineType, e as extendType, g as getType, l as listTypes, a as loadRegistry, b as registryPath, s as saveRegistry } from '../registry-BR4326o0.js';
@@ -0,0 +1,19 @@
1
+ import {
2
+ defineType,
3
+ extendType,
4
+ getType,
5
+ listTypes,
6
+ loadRegistry,
7
+ registryPath,
8
+ saveRegistry
9
+ } from "../chunk-NTOPJI7W.js";
10
+ import "../chunk-U67V476Y.js";
11
+ export {
12
+ defineType,
13
+ extendType,
14
+ getType,
15
+ listTypes,
16
+ loadRegistry,
17
+ registryPath,
18
+ saveRegistry
19
+ };
@@ -0,0 +1,2 @@
1
+ import './types.js';
2
+ export { a as activeThreads, b as blockedThreads, c as create, f as findByField, l as list, o as openThreads, r as read, d as remove, u as update } from '../store-CA-6sKCJ.js';
@@ -0,0 +1,25 @@
1
+ import {
2
+ activeThreads,
3
+ blockedThreads,
4
+ create,
5
+ findByField,
6
+ list,
7
+ openThreads,
8
+ read,
9
+ remove,
10
+ update
11
+ } from "../chunk-HR4KN6S2.js";
12
+ import "../chunk-K7PNYS45.js";
13
+ import "../chunk-NTOPJI7W.js";
14
+ import "../chunk-U67V476Y.js";
15
+ export {
16
+ activeThreads,
17
+ blockedThreads,
18
+ create,
19
+ findByField,
20
+ list,
21
+ openThreads,
22
+ read,
23
+ remove,
24
+ update
25
+ };
@@ -0,0 +1,2 @@
1
+ import './types.js';
2
+ export { b as block, c as cancel, a as claim, d as createThread, e as decompose, f as done, r as release, u as unblock } from '../thread-B9LhXNU0.js';
@@ -0,0 +1,25 @@
1
+ import {
2
+ block,
3
+ cancel,
4
+ claim,
5
+ createThread,
6
+ decompose,
7
+ done,
8
+ release,
9
+ unblock
10
+ } from "../chunk-ERNE2FZ5.js";
11
+ import "../chunk-HR4KN6S2.js";
12
+ import "../chunk-K7PNYS45.js";
13
+ import "../chunk-NTOPJI7W.js";
14
+ import "../chunk-WMGIIABP.js";
15
+ import "../chunk-U67V476Y.js";
16
+ export {
17
+ block,
18
+ cancel,
19
+ claim,
20
+ createThread,
21
+ decompose,
22
+ done,
23
+ release,
24
+ unblock
25
+ };
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Workgraph type definitions.
3
+ *
4
+ * Three layers:
5
+ * 1. Registry — what primitive types exist (agent-extensible)
6
+ * 2. Ledger — what happened (append-only, source of truth for claims/state)
7
+ * 3. Store — the actual markdown files (the primitives themselves)
8
+ */
9
+ interface FieldDefinition {
10
+ type: 'string' | 'number' | 'boolean' | 'list' | 'date' | 'ref' | 'any';
11
+ required?: boolean;
12
+ default?: unknown;
13
+ description?: string;
14
+ }
15
+ interface PrimitiveTypeDefinition {
16
+ name: string;
17
+ description: string;
18
+ fields: Record<string, FieldDefinition>;
19
+ /** Directory under vault root where instances live (default: `<name>s/`). */
20
+ directory: string;
21
+ /** Whether this type was defined by an agent at runtime vs built-in. */
22
+ builtIn: boolean;
23
+ /** ISO timestamp of when this type was registered. */
24
+ createdAt: string;
25
+ /** Who registered it (agent name or "system"). */
26
+ createdBy: string;
27
+ }
28
+ interface Registry {
29
+ version: number;
30
+ types: Record<string, PrimitiveTypeDefinition>;
31
+ }
32
+ type LedgerOp = 'create' | 'update' | 'delete' | 'claim' | 'release' | 'block' | 'unblock' | 'done' | 'cancel' | 'define' | 'decompose';
33
+ interface LedgerEntry {
34
+ ts: string;
35
+ actor: string;
36
+ op: LedgerOp;
37
+ target: string;
38
+ type?: string;
39
+ data?: Record<string, unknown>;
40
+ }
41
+ type ThreadStatus = 'open' | 'active' | 'blocked' | 'done' | 'cancelled';
42
+ declare const THREAD_STATUS_TRANSITIONS: Record<ThreadStatus, ThreadStatus[]>;
43
+ interface PrimitiveInstance {
44
+ /** File path relative to vault root. */
45
+ path: string;
46
+ /** Primitive type name. */
47
+ type: string;
48
+ /** Frontmatter fields. */
49
+ fields: Record<string, unknown>;
50
+ /** Markdown body content. */
51
+ body: string;
52
+ }
53
+
54
+ export { type FieldDefinition, type LedgerEntry, type LedgerOp, type PrimitiveInstance, type PrimitiveTypeDefinition, type Registry, THREAD_STATUS_TRANSITIONS, type ThreadStatus };
@@ -0,0 +1,7 @@
1
+ import {
2
+ THREAD_STATUS_TRANSITIONS
3
+ } from "../chunk-WMGIIABP.js";
4
+ import "../chunk-U67V476Y.js";
5
+ export {
6
+ THREAD_STATUS_TRANSITIONS
7
+ };
@@ -0,0 +1,113 @@
1
+ ---
2
+ name: clawvault
3
+ description: "Context resilience - recovery detection, auto-checkpoint, and session context injection"
4
+ metadata:
5
+ openclaw:
6
+ emoji: "🐘"
7
+ events: ["gateway:startup", "gateway:heartbeat", "command:new", "session:start", "compaction:memoryFlush", "cron.weekly"]
8
+ requires:
9
+ bins: ["clawvault"]
10
+ ---
11
+
12
+ # ClawVault Hook
13
+
14
+ Integrates ClawVault's context death resilience into OpenClaw:
15
+
16
+ - **On gateway startup**: Checks for context death, alerts agent
17
+ - **On heartbeat**: Runs cheap threshold checks and observes active sessions when needed
18
+ - **On /new command**: Auto-checkpoints before session reset
19
+ - **On context compaction**: Forces incremental observation flush before context is lost
20
+ - **On session start**: Injects relevant vault context for the initial prompt
21
+ - **On weekly cron**: Runs `clawvault reflect` every Sunday midnight (UTC)
22
+
23
+ ## Installation
24
+
25
+ ```bash
26
+ npm install -g clawvault
27
+ openclaw hooks install clawvault
28
+ openclaw hooks enable clawvault
29
+
30
+ # Verify
31
+ openclaw hooks list --verbose
32
+ openclaw hooks info clawvault
33
+ openclaw hooks check
34
+ ```
35
+
36
+ After enabling, restart your OpenClaw gateway process so hook registration reloads.
37
+
38
+ ## Requirements
39
+
40
+ - ClawVault CLI installed globally
41
+ - Vault initialized (`clawvault setup` or `CLAWVAULT_PATH` set)
42
+
43
+ ## What It Does
44
+
45
+ ### Gateway Startup
46
+
47
+ 1. Runs `clawvault recover --clear`
48
+ 2. If context death detected, injects warning into first agent turn
49
+ 3. Clears dirty death flag for clean session start
50
+
51
+ ### Command: /new
52
+
53
+ 1. Creates automatic checkpoint with session info
54
+ 2. Captures state even if agent forgot to handoff
55
+ 3. Ensures continuity across session resets
56
+
57
+ ### Session Start
58
+
59
+ 1. Extracts the initial user prompt (`context.initialPrompt` or first user message)
60
+ 2. Runs `clawvault context "<prompt>" --format json --profile auto -v <vaultPath>`
61
+ - Delegates profile selection to the shared context intent policy (`incident`, `planning`, `handoff`, or `default`)
62
+ 3. Injects up to 4 relevant context bullets into session messages
63
+
64
+ Injection format:
65
+
66
+ ```text
67
+ [ClawVault] Relevant context for this task:
68
+ - <title> (<age>): <snippet>
69
+ - <title> (<age>): <snippet>
70
+ ```
71
+
72
+ ### Event Compatibility
73
+
74
+ The hook accepts canonical OpenClaw events (`gateway:startup`, `gateway:heartbeat`, `command:new`, `session:start`, `compaction:memoryFlush`, `cron.weekly`) and tolerates alias payload shapes (`event`, `eventName`, `name`, `hook`, `trigger`) to remain robust across runtime wrappers.
75
+
76
+ ## Configuration
77
+
78
+ ### Plugin Configuration (Recommended)
79
+
80
+ Configure the plugin via OpenClaw's config system:
81
+
82
+ ```bash
83
+ # Set vault path
84
+ openclaw config set plugins.clawvault.config.vaultPath ~/my-vault
85
+
86
+ # View current config
87
+ openclaw config get plugins.clawvault.config
88
+ ```
89
+
90
+ Available configuration options:
91
+
92
+ | Key | Type | Default | Description |
93
+ |-----|------|---------|-------------|
94
+ | `vaultPath` | string | (auto-detected) | Path to the ClawVault vault directory |
95
+ | `autoCheckpoint` | boolean | `true` | Enable automatic checkpointing on session events |
96
+ | `contextProfile` | string | `"auto"` | Default context profile (`default`, `planning`, `incident`, `handoff`, `auto`) |
97
+ | `maxContextResults` | integer | `4` | Maximum context results to inject on session start |
98
+ | `observeOnHeartbeat` | boolean | `true` | Enable observation threshold checks on heartbeat |
99
+ | `weeklyReflection` | boolean | `true` | Enable weekly reflection on Sunday midnight UTC |
100
+
101
+ ### Vault Path Resolution
102
+
103
+ The hook resolves the vault path in this order:
104
+
105
+ 1. Plugin config (`plugins.clawvault.config.vaultPath` set via `openclaw config`)
106
+ 2. `OPENCLAW_PLUGIN_CLAWVAULT_VAULTPATH` environment variable
107
+ 3. `CLAWVAULT_PATH` environment variable
108
+ 4. Walking up from cwd to find `.clawvault.json`
109
+ 5. Checking `memory/` subdirectory (OpenClaw convention)
110
+
111
+ ### Troubleshooting
112
+
113
+ If `openclaw hooks enable clawvault` fails with hook-not-found, run `openclaw hooks install clawvault` first and verify discovery with `openclaw hooks list --verbose`.