clawvault 3.0.0 → 3.2.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 (291) hide show
  1. package/README.md +352 -20
  2. package/bin/clawvault.js +8 -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 -10
  6. package/bin/register-maintenance-commands.js +39 -3
  7. package/bin/register-query-commands.js +58 -29
  8. package/bin/register-task-commands.js +18 -1
  9. package/bin/register-task-commands.test.js +16 -0
  10. package/bin/register-vault-operations-commands.js +29 -1
  11. package/bin/register-workgraph-commands.js +1368 -0
  12. package/dashboard/lib/graph-diff.js +104 -0
  13. package/dashboard/lib/graph-diff.test.js +75 -0
  14. package/dashboard/lib/vault-parser.js +556 -0
  15. package/dashboard/lib/vault-parser.test.js +254 -0
  16. package/dashboard/public/app.js +796 -0
  17. package/dashboard/public/index.html +52 -0
  18. package/dashboard/public/styles.css +221 -0
  19. package/dashboard/server.js +374 -0
  20. package/dist/{chunk-F2JEUD4J.js → chunk-23YDQ3QU.js} +6 -8
  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-2ZDO52B4.js +52 -0
  24. package/dist/{chunk-ZZA73MFY.js → chunk-33DOSHTA.js} +176 -36
  25. package/dist/chunk-33VSQP4J.js +37 -0
  26. package/dist/chunk-4BQTQMJP.js +93 -0
  27. package/dist/{chunk-GUKMRGM7.js → chunk-4OXMU5S2.js} +1 -1
  28. package/dist/{chunk-62YTUT6J.js → chunk-4PY655YM.js} +15 -3
  29. package/dist/chunk-6FH3IULF.js +352 -0
  30. package/dist/{chunk-3NSBOUT3.js → chunk-77Q5CSPJ.js} +404 -80
  31. package/dist/{chunk-4VQTUVH7.js → chunk-7YZWHM36.js} +52 -26
  32. package/dist/chunk-BSJ6RIT7.js +447 -0
  33. package/dist/chunk-BUEW6IIK.js +364 -0
  34. package/dist/{chunk-WGRQ6HDV.js → chunk-CLJTREDS.js} +74 -14
  35. package/dist/chunk-EK6S23ZB.js +469 -0
  36. package/dist/{chunk-LNJA2UGL.js → chunk-ESFLMDRB.js} +9 -86
  37. package/dist/{chunk-H34S76MB.js → chunk-ESVS6K2B.js} +6 -6
  38. package/dist/{chunk-WAZ3NLWL.js → chunk-F55HGNU4.js} +0 -47
  39. package/dist/{chunk-QK3UCXWL.js → chunk-FHFUXL6G.js} +2 -2
  40. package/dist/{chunk-YKTA5JOJ.js → chunk-GAOWA7GR.js} +212 -46
  41. package/dist/chunk-GGA32J2R.js +784 -0
  42. package/dist/chunk-GNJL4YGR.js +79 -0
  43. package/dist/chunk-MDIH26GC.js +183 -0
  44. package/dist/{chunk-LYHGEHXG.js → chunk-MFAWT5O5.js} +0 -1
  45. package/dist/chunk-MM6QGW3P.js +207 -0
  46. package/dist/{chunk-P5EPF6MB.js → chunk-MW5C6ZQA.js} +110 -13
  47. package/dist/chunk-NCKFNBHJ.js +257 -0
  48. package/dist/{chunk-QBLMXKF2.js → chunk-OIWVQYQF.js} +1 -1
  49. package/dist/{chunk-42MXU7A6.js → chunk-P62WHA27.js} +58 -47
  50. package/dist/chunk-PBACDKKP.js +66 -0
  51. package/dist/{chunk-VGLOTGAS.js → chunk-QSHD36LH.js} +2 -2
  52. package/dist/{chunk-OZ7RIXTO.js → chunk-QSRRMEYM.js} +2 -2
  53. package/dist/chunk-QVEERJSP.js +152 -0
  54. package/dist/{chunk-N2AXRYLC.js → chunk-QWQ3TIKS.js} +1 -1
  55. package/dist/{chunk-3DHXQHYG.js → chunk-R2MIW5G7.js} +1 -1
  56. package/dist/{chunk-SJSFRIYS.js → chunk-SLXOR3CC.js} +2 -2
  57. package/dist/chunk-SS4B7P7V.js +99 -0
  58. package/dist/{chunk-JY6FYXIT.js → chunk-STCQGCEQ.js} +6 -11
  59. package/dist/chunk-U4O6C46S.js +154 -0
  60. package/dist/{chunk-ITPEXLHA.js → chunk-URXDAUVH.js} +24 -5
  61. package/dist/chunk-VSL7KY3M.js +189 -0
  62. package/dist/{chunk-U55BGUAU.js → chunk-W4SPAEE7.js} +6 -6
  63. package/dist/chunk-WMGIIABP.js +15 -0
  64. package/dist/{chunk-3D6BCTP6.js → chunk-X3SPPUFG.js} +51 -39
  65. package/dist/{chunk-THRJVD4L.js → chunk-Y6VJKXGL.js} +1 -1
  66. package/dist/{chunk-ZVVFWOLW.js → chunk-ZN54U2OZ.js} +123 -10
  67. package/dist/cli/index.js +32 -25
  68. package/dist/commands/archive.js +3 -3
  69. package/dist/commands/backlog.js +3 -3
  70. package/dist/commands/blocked.js +3 -3
  71. package/dist/commands/canvas.d.ts +15 -0
  72. package/dist/commands/canvas.js +200 -0
  73. package/dist/commands/checkpoint.js +2 -2
  74. package/dist/commands/compat.js +2 -2
  75. package/dist/commands/context.js +8 -6
  76. package/dist/commands/doctor.d.ts +11 -7
  77. package/dist/commands/doctor.js +18 -16
  78. package/dist/commands/embed.js +5 -6
  79. package/dist/commands/entities.js +2 -2
  80. package/dist/commands/graph.js +4 -4
  81. package/dist/commands/inject.d.ts +1 -1
  82. package/dist/commands/inject.js +5 -6
  83. package/dist/commands/kanban.js +4 -4
  84. package/dist/commands/link.js +5 -5
  85. package/dist/commands/migrate-observations.js +4 -4
  86. package/dist/commands/observe.d.ts +0 -1
  87. package/dist/commands/observe.js +14 -13
  88. package/dist/commands/project.js +5 -5
  89. package/dist/commands/rebuild-embeddings.d.ts +21 -0
  90. package/dist/commands/rebuild-embeddings.js +91 -0
  91. package/dist/commands/rebuild.js +12 -11
  92. package/dist/commands/recover.js +3 -3
  93. package/dist/commands/reflect.js +6 -7
  94. package/dist/commands/repair-session.js +1 -1
  95. package/dist/commands/replay.js +14 -14
  96. package/dist/commands/session-recap.js +1 -1
  97. package/dist/commands/setup.d.ts +2 -90
  98. package/dist/commands/setup.js +3 -21
  99. package/dist/commands/shell-init.js +1 -1
  100. package/dist/commands/sleep.d.ts +1 -1
  101. package/dist/commands/sleep.js +20 -19
  102. package/dist/commands/status.d.ts +2 -0
  103. package/dist/commands/status.js +57 -35
  104. package/dist/commands/sync-bd.d.ts +10 -0
  105. package/dist/commands/sync-bd.js +10 -0
  106. package/dist/commands/tailscale.js +3 -3
  107. package/dist/commands/task.js +4 -4
  108. package/dist/commands/template.js +2 -2
  109. package/dist/commands/wake.d.ts +1 -1
  110. package/dist/commands/wake.js +11 -10
  111. package/dist/commands/workgraph.d.ts +124 -0
  112. package/dist/commands/workgraph.js +38 -0
  113. package/dist/index.d.ts +337 -191
  114. package/dist/index.js +387 -118
  115. package/dist/{inject-Bzi5E-By.d.cts → inject-DYUrDqQO.d.ts} +3 -3
  116. package/dist/ledger-B7g7jhqG.d.ts +44 -0
  117. package/dist/lib/auto-linker.js +2 -2
  118. package/dist/lib/canvas-layout.d.ts +100 -16
  119. package/dist/lib/canvas-layout.js +21 -78
  120. package/dist/lib/config.d.ts +27 -3
  121. package/dist/lib/config.js +4 -2
  122. package/dist/lib/entity-index.js +1 -1
  123. package/dist/lib/project-utils.js +4 -4
  124. package/dist/lib/session-repair.js +1 -1
  125. package/dist/lib/session-utils.js +1 -1
  126. package/dist/lib/tailscale.js +1 -1
  127. package/dist/lib/task-utils.js +3 -3
  128. package/dist/lib/template-engine.js +1 -1
  129. package/dist/lib/webdav.js +1 -1
  130. package/dist/onnxruntime_binding-5QEF3SUC.node +0 -0
  131. package/dist/onnxruntime_binding-BKPKNEGC.node +0 -0
  132. package/dist/onnxruntime_binding-FMOXGIUT.node +0 -0
  133. package/dist/onnxruntime_binding-OI2KMXC5.node +0 -0
  134. package/dist/onnxruntime_binding-UX44MLAZ.node +0 -0
  135. package/dist/onnxruntime_binding-Y2W7N7WY.node +0 -0
  136. package/dist/openclaw-plugin.d.ts +8 -0
  137. package/dist/openclaw-plugin.js +14 -0
  138. package/dist/registry-BR4326o0.d.ts +30 -0
  139. package/dist/store-CA-6sKCJ.d.ts +34 -0
  140. package/dist/thread-B9LhXNU0.d.ts +41 -0
  141. package/dist/transformers.node-A2ZRORSQ.js +46775 -0
  142. package/dist/{types-Y2_Um2Ls.d.cts → types-BbWJoC1c.d.ts} +1 -44
  143. package/dist/workgraph/index.d.ts +5 -0
  144. package/dist/workgraph/index.js +23 -0
  145. package/dist/workgraph/ledger.d.ts +2 -0
  146. package/dist/workgraph/ledger.js +25 -0
  147. package/dist/workgraph/registry.d.ts +2 -0
  148. package/dist/workgraph/registry.js +19 -0
  149. package/dist/workgraph/store.d.ts +2 -0
  150. package/dist/workgraph/store.js +25 -0
  151. package/dist/workgraph/thread.d.ts +2 -0
  152. package/dist/workgraph/thread.js +25 -0
  153. package/dist/workgraph/types.d.ts +54 -0
  154. package/dist/workgraph/types.js +7 -0
  155. package/hooks/clawvault/HOOK.md +34 -4
  156. package/hooks/clawvault/handler.js +760 -78
  157. package/hooks/clawvault/handler.test.js +235 -79
  158. package/hooks/clawvault/openclaw.plugin.json +72 -0
  159. package/openclaw.plugin.json +65 -38
  160. package/package.json +15 -18
  161. package/dist/chunk-3RG5ZIWI.js +0 -10
  162. package/dist/chunk-6U6MK36V.js +0 -205
  163. package/dist/chunk-7R7O6STJ.js +0 -88
  164. package/dist/chunk-CMB7UL7C.js +0 -327
  165. package/dist/chunk-DEFFDRVP.js +0 -938
  166. package/dist/chunk-E7MFQB6D.js +0 -163
  167. package/dist/chunk-GAJV4IGR.js +0 -82
  168. package/dist/chunk-GQSLDZTS.js +0 -560
  169. package/dist/chunk-K234IDRJ.js +0 -1073
  170. package/dist/chunk-MFM6K7PU.js +0 -374
  171. package/dist/chunk-MXSSG3QU.js +0 -42
  172. package/dist/chunk-PAH27GSN.js +0 -108
  173. package/dist/cli/index.cjs +0 -10033
  174. package/dist/cli/index.d.cts +0 -5
  175. package/dist/commands/archive.cjs +0 -287
  176. package/dist/commands/archive.d.cts +0 -11
  177. package/dist/commands/backlog.cjs +0 -721
  178. package/dist/commands/backlog.d.cts +0 -53
  179. package/dist/commands/blocked.cjs +0 -204
  180. package/dist/commands/blocked.d.cts +0 -26
  181. package/dist/commands/checkpoint.cjs +0 -244
  182. package/dist/commands/checkpoint.d.cts +0 -41
  183. package/dist/commands/compat.cjs +0 -369
  184. package/dist/commands/compat.d.cts +0 -28
  185. package/dist/commands/context.cjs +0 -2989
  186. package/dist/commands/context.d.cts +0 -2
  187. package/dist/commands/doctor.cjs +0 -3062
  188. package/dist/commands/doctor.d.cts +0 -21
  189. package/dist/commands/embed.cjs +0 -232
  190. package/dist/commands/embed.d.cts +0 -17
  191. package/dist/commands/entities.cjs +0 -141
  192. package/dist/commands/entities.d.cts +0 -7
  193. package/dist/commands/graph.cjs +0 -501
  194. package/dist/commands/graph.d.cts +0 -21
  195. package/dist/commands/inject.cjs +0 -1636
  196. package/dist/commands/inject.d.cts +0 -2
  197. package/dist/commands/kanban.cjs +0 -884
  198. package/dist/commands/kanban.d.cts +0 -63
  199. package/dist/commands/link.cjs +0 -965
  200. package/dist/commands/link.d.cts +0 -11
  201. package/dist/commands/migrate-observations.cjs +0 -362
  202. package/dist/commands/migrate-observations.d.cts +0 -19
  203. package/dist/commands/observe.cjs +0 -4099
  204. package/dist/commands/observe.d.cts +0 -23
  205. package/dist/commands/project.cjs +0 -1341
  206. package/dist/commands/project.d.cts +0 -85
  207. package/dist/commands/rebuild.cjs +0 -3136
  208. package/dist/commands/rebuild.d.cts +0 -11
  209. package/dist/commands/recover.cjs +0 -361
  210. package/dist/commands/recover.d.cts +0 -38
  211. package/dist/commands/reflect.cjs +0 -1008
  212. package/dist/commands/reflect.d.cts +0 -11
  213. package/dist/commands/repair-session.cjs +0 -457
  214. package/dist/commands/repair-session.d.cts +0 -38
  215. package/dist/commands/replay.cjs +0 -4103
  216. package/dist/commands/replay.d.cts +0 -16
  217. package/dist/commands/session-recap.cjs +0 -353
  218. package/dist/commands/session-recap.d.cts +0 -27
  219. package/dist/commands/setup.cjs +0 -1345
  220. package/dist/commands/setup.d.cts +0 -100
  221. package/dist/commands/shell-init.cjs +0 -75
  222. package/dist/commands/shell-init.d.cts +0 -7
  223. package/dist/commands/sleep.cjs +0 -6028
  224. package/dist/commands/sleep.d.cts +0 -36
  225. package/dist/commands/status.cjs +0 -2736
  226. package/dist/commands/status.d.cts +0 -52
  227. package/dist/commands/tailscale.cjs +0 -1532
  228. package/dist/commands/tailscale.d.cts +0 -52
  229. package/dist/commands/task.cjs +0 -1236
  230. package/dist/commands/task.d.cts +0 -97
  231. package/dist/commands/template.cjs +0 -457
  232. package/dist/commands/template.d.cts +0 -36
  233. package/dist/commands/wake.cjs +0 -2626
  234. package/dist/commands/wake.d.cts +0 -22
  235. package/dist/context-BUGaWpyL.d.cts +0 -46
  236. package/dist/index.cjs +0 -14526
  237. package/dist/index.d.cts +0 -858
  238. package/dist/inject-Bzi5E-By.d.ts +0 -137
  239. package/dist/lib/auto-linker.cjs +0 -176
  240. package/dist/lib/auto-linker.d.cts +0 -26
  241. package/dist/lib/canvas-layout.cjs +0 -136
  242. package/dist/lib/canvas-layout.d.cts +0 -31
  243. package/dist/lib/config.cjs +0 -78
  244. package/dist/lib/config.d.cts +0 -11
  245. package/dist/lib/entity-index.cjs +0 -84
  246. package/dist/lib/entity-index.d.cts +0 -26
  247. package/dist/lib/project-utils.cjs +0 -864
  248. package/dist/lib/project-utils.d.cts +0 -97
  249. package/dist/lib/session-repair.cjs +0 -239
  250. package/dist/lib/session-repair.d.cts +0 -110
  251. package/dist/lib/session-utils.cjs +0 -209
  252. package/dist/lib/session-utils.d.cts +0 -63
  253. package/dist/lib/tailscale.cjs +0 -1183
  254. package/dist/lib/tailscale.d.cts +0 -225
  255. package/dist/lib/task-utils.cjs +0 -1137
  256. package/dist/lib/task-utils.d.cts +0 -208
  257. package/dist/lib/template-engine.cjs +0 -47
  258. package/dist/lib/template-engine.d.cts +0 -11
  259. package/dist/lib/webdav.cjs +0 -568
  260. package/dist/lib/webdav.d.cts +0 -109
  261. package/dist/plugin/index.cjs +0 -1907
  262. package/dist/plugin/index.d.cts +0 -36
  263. package/dist/plugin/index.d.ts +0 -36
  264. package/dist/plugin/index.js +0 -572
  265. package/dist/plugin/inject.cjs +0 -356
  266. package/dist/plugin/inject.d.cts +0 -54
  267. package/dist/plugin/inject.d.ts +0 -54
  268. package/dist/plugin/inject.js +0 -17
  269. package/dist/plugin/observe.cjs +0 -631
  270. package/dist/plugin/observe.d.cts +0 -39
  271. package/dist/plugin/observe.d.ts +0 -39
  272. package/dist/plugin/observe.js +0 -18
  273. package/dist/plugin/templates.cjs +0 -593
  274. package/dist/plugin/templates.d.cts +0 -52
  275. package/dist/plugin/templates.d.ts +0 -52
  276. package/dist/plugin/templates.js +0 -25
  277. package/dist/plugin/types.cjs +0 -18
  278. package/dist/plugin/types.d.cts +0 -209
  279. package/dist/plugin/types.d.ts +0 -209
  280. package/dist/plugin/types.js +0 -0
  281. package/dist/plugin/vault.cjs +0 -927
  282. package/dist/plugin/vault.d.cts +0 -68
  283. package/dist/plugin/vault.d.ts +0 -68
  284. package/dist/plugin/vault.js +0 -22
  285. package/dist/types-Y2_Um2Ls.d.ts +0 -205
  286. package/templates/memory-event.md +0 -67
  287. package/templates/party.md +0 -63
  288. package/templates/primitive-registry.yaml +0 -551
  289. package/templates/run.md +0 -68
  290. package/templates/trigger.md +0 -68
  291. package/templates/workspace.md +0 -50
@@ -57,7 +57,7 @@ declare function getMemoryGraph(vaultPath: string, options?: {
57
57
  refresh?: boolean;
58
58
  }): Promise<MemoryGraph>;
59
59
 
60
- type LlmProvider = 'anthropic' | 'openai' | 'gemini';
60
+ type LlmProvider = 'anthropic' | 'openai' | 'gemini' | 'xai' | 'openclaw';
61
61
  interface LlmCompletionOptions {
62
62
  prompt: string;
63
63
  provider?: LlmProvider | null;
@@ -67,7 +67,7 @@ interface LlmCompletionOptions {
67
67
  maxTokens?: number;
68
68
  fetchImpl?: typeof fetch;
69
69
  }
70
- declare function resolveLlmProvider(fetchImpl?: typeof fetch): Promise<LlmProvider | null>;
70
+ declare function resolveLlmProvider(): LlmProvider | null;
71
71
  declare function requestLlmCompletion(options: LlmCompletionOptions): Promise<string>;
72
72
 
73
73
  declare const INJECTABLE_CATEGORIES: readonly ["rules", "decisions", "preferences"];
@@ -134,4 +134,4 @@ declare function buildInjectionResult(message: string, options: InjectCommandOpt
134
134
  declare function injectCommand(message: string, options: InjectCommandOptions): Promise<void>;
135
135
  declare function registerInjectCommand(program: Command): void;
136
136
 
137
- export { runPromptInjection as A, type InjectCommandOptions as I, type LlmCompletionOptions as L, MEMORY_GRAPH_SCHEMA_VERSION as M, type InjectFormat as a, type InjectMatch as b, type InjectMatchReason as c, type InjectMatchSource as d, type InjectResult as e, type InjectRuntimeOptions as f, type InjectSourceCategory as g, type InjectableItem as h, type LlmProvider as i, type MemoryGraph as j, type MemoryGraphEdge as k, type MemoryGraphEdgeType as l, type MemoryGraphIndex as m, type MemoryGraphNode as n, type MemoryGraphNodeType as o, type MemoryGraphStats as p, buildInjectionResult as q, buildOrUpdateMemoryGraphIndex as r, deterministicInjectMatches as s, getMemoryGraph as t, indexInjectableItems as u, injectCommand as v, loadMemoryGraphIndex as w, registerInjectCommand as x, requestLlmCompletion as y, resolveLlmProvider as z };
137
+ export { runPromptInjection as A, type InjectCommandOptions as I, type LlmProvider as L, MEMORY_GRAPH_SCHEMA_VERSION as M, type InjectFormat as a, type InjectMatch as b, type InjectMatchReason as c, type InjectMatchSource as d, type InjectResult as e, type InjectRuntimeOptions as f, type InjectSourceCategory as g, type InjectableItem as h, type LlmCompletionOptions as i, type MemoryGraph as j, type MemoryGraphEdge as k, type MemoryGraphEdgeType as l, type MemoryGraphIndex as m, type MemoryGraphNode as n, type MemoryGraphNodeType as o, type MemoryGraphStats as p, buildInjectionResult as q, buildOrUpdateMemoryGraphIndex as r, deterministicInjectMatches as s, getMemoryGraph as t, indexInjectableItems as u, injectCommand as v, loadMemoryGraphIndex as w, registerInjectCommand as x, requestLlmCompletion as y, resolveLlmProvider as z };
@@ -0,0 +1,44 @@
1
+ import { LedgerEntry, LedgerOp } from './workgraph/types.js';
2
+
3
+ /**
4
+ * Append-only event ledger.
5
+ *
6
+ * Every mutation to the workgraph is logged here. This is the source of truth
7
+ * for coordination: who claimed what, when, and what's available.
8
+ *
9
+ * Format: one JSON object per line (.jsonl) in `.clawvault/ledger.jsonl`.
10
+ * Agents read the ledger to know the state of the world.
11
+ */
12
+
13
+ declare function ledgerPath(vaultPath: string): string;
14
+ declare function append(vaultPath: string, actor: string, op: LedgerOp, target: string, type?: string, data?: Record<string, unknown>): LedgerEntry;
15
+ declare function readAll(vaultPath: string): LedgerEntry[];
16
+ declare function readSince(vaultPath: string, since: string): LedgerEntry[];
17
+ /** Get the current owner of a target (last claim without a subsequent release/done). */
18
+ declare function currentOwner(vaultPath: string, target: string): string | null;
19
+ /** Check if a target is currently claimed by any agent. */
20
+ declare function isClaimed(vaultPath: string, target: string): boolean;
21
+ /** Get all entries for a specific target. */
22
+ declare function historyOf(vaultPath: string, target: string): LedgerEntry[];
23
+ /** Get all entries by a specific actor. */
24
+ declare function activityOf(vaultPath: string, actor: string): LedgerEntry[];
25
+ /** Get all currently claimed targets and their owners. */
26
+ declare function allClaims(vaultPath: string): Map<string, string>;
27
+ /** Get recent ledger entries (last N). */
28
+ declare function recent(vaultPath: string, count?: number): LedgerEntry[];
29
+
30
+ declare const ledger_activityOf: typeof activityOf;
31
+ declare const ledger_allClaims: typeof allClaims;
32
+ declare const ledger_append: typeof append;
33
+ declare const ledger_currentOwner: typeof currentOwner;
34
+ declare const ledger_historyOf: typeof historyOf;
35
+ declare const ledger_isClaimed: typeof isClaimed;
36
+ declare const ledger_ledgerPath: typeof ledgerPath;
37
+ declare const ledger_readAll: typeof readAll;
38
+ declare const ledger_readSince: typeof readSince;
39
+ declare const ledger_recent: typeof recent;
40
+ declare namespace ledger {
41
+ export { ledger_activityOf as activityOf, ledger_allClaims as allClaims, ledger_append as append, ledger_currentOwner as currentOwner, ledger_historyOf as historyOf, ledger_isClaimed as isClaimed, ledger_ledgerPath as ledgerPath, ledger_readAll as readAll, ledger_readSince as readSince, ledger_recent as recent };
42
+ }
43
+
44
+ export { activityOf as a, allClaims as b, append as c, currentOwner as d, ledgerPath as e, readSince as f, recent as g, historyOf as h, isClaimed as i, ledger as l, readAll as r };
@@ -2,9 +2,9 @@ import {
2
2
  autoLink,
3
3
  dryRunLink,
4
4
  findUnlinkedMentions
5
- } from "../chunk-42MXU7A6.js";
5
+ } from "../chunk-P62WHA27.js";
6
6
  import "../chunk-J7ZWCI2C.js";
7
- import "../chunk-3RG5ZIWI.js";
7
+ import "../chunk-2ZDO52B4.js";
8
8
  export {
9
9
  autoLink,
10
10
  dryRunLink,
@@ -1,3 +1,32 @@
1
+ /**
2
+ * Canvas layout utilities for ClawVault
3
+ * Handles JSON Canvas generation with proper positioning and grouping
4
+ */
5
+ interface CanvasNode {
6
+ id: string;
7
+ type: 'text' | 'file' | 'group';
8
+ x: number;
9
+ y: number;
10
+ width: number;
11
+ height: number;
12
+ text?: string;
13
+ file?: string;
14
+ label?: string;
15
+ color?: string;
16
+ }
17
+ interface CanvasEdge {
18
+ id: string;
19
+ fromNode: string;
20
+ fromSide: 'top' | 'right' | 'bottom' | 'left';
21
+ toNode: string;
22
+ toSide: 'top' | 'right' | 'bottom' | 'left';
23
+ label?: string;
24
+ color?: string;
25
+ }
26
+ interface Canvas {
27
+ nodes: CanvasNode[];
28
+ edges: CanvasEdge[];
29
+ }
1
30
  declare const CANVAS_COLORS: {
2
31
  readonly RED: "1";
3
32
  readonly ORANGE: "2";
@@ -7,25 +36,80 @@ declare const CANVAS_COLORS: {
7
36
  readonly PURPLE: "6";
8
37
  };
9
38
  declare const LAYOUT: {
39
+ readonly LEFT_COLUMN_X: 0;
40
+ readonly LEFT_COLUMN_WIDTH: 500;
41
+ readonly RIGHT_COLUMN_X: 550;
42
+ readonly RIGHT_COLUMN_WIDTH: 450;
10
43
  readonly GROUP_PADDING: 20;
11
- readonly NODE_SPACING: 10;
12
- readonly HEADER_HEIGHT: 40;
44
+ readonly NODE_SPACING: 15;
45
+ readonly GROUP_SPACING: 50;
46
+ readonly DEFAULT_NODE_WIDTH: 280;
47
+ readonly DEFAULT_NODE_HEIGHT: 80;
48
+ readonly FILE_NODE_HEIGHT: 60;
49
+ readonly SMALL_NODE_HEIGHT: 50;
50
+ readonly GROUP_HEADER_HEIGHT: 40;
13
51
  };
52
+ /**
53
+ * Generate a 16-character lowercase hex ID
54
+ */
14
55
  declare function generateId(): string;
15
- declare function createTextNode(x: number, y: number, width: number, height: number, text: string, color?: string): any;
16
- declare function createFileNode(x: number, y: number, width: number, height: number, file: string, color?: string): any;
17
- declare function createGroupNode(x: number, y: number, width: number, height: number, label: string, color?: string): any;
18
- declare function createEdge(fromNode: string, fromSide: string, toNode: string, toSide: string, label?: string, color?: string): any;
19
- declare function stackNodesVertically(nodes: any[], startX: number, startY: number, spacing: number): {
20
- nodes: any[];
56
+ /**
57
+ * Create a text node
58
+ */
59
+ declare function createTextNode(x: number, y: number, width: number, height: number, text: string, color?: string): CanvasNode;
60
+ /**
61
+ * Create a file node
62
+ */
63
+ declare function createFileNode(x: number, y: number, width: number, height: number, file: string, color?: string): CanvasNode;
64
+ /**
65
+ * Create a group node
66
+ */
67
+ declare function createGroupNode(x: number, y: number, width: number, height: number, label: string, color?: string): CanvasNode;
68
+ /**
69
+ * Create an edge between nodes
70
+ */
71
+ declare function createEdge(fromNode: string, fromSide: 'top' | 'right' | 'bottom' | 'left', toNode: string, toSide: 'top' | 'right' | 'bottom' | 'left', label?: string, color?: string): CanvasEdge;
72
+ /**
73
+ * Layout helper for vertical stacking of nodes within a group
74
+ */
75
+ interface StackedLayout {
76
+ nodes: CanvasNode[];
21
77
  totalHeight: number;
22
- };
23
- declare function createGroupWithNodes(x: number, y: number, width: number, label: string, childNodes: any[], color?: string): {
24
- group: any;
25
- nodes: any[];
26
- };
27
- declare function getPriorityColor(priority: string | undefined): string | undefined;
28
- declare function truncateText(text: string, maxLength: number): string;
78
+ }
79
+ declare function stackNodesVertically(nodes: CanvasNode[], startX: number, startY: number, spacing?: number): StackedLayout;
80
+ /**
81
+ * Create a group with contained nodes
82
+ * Returns the group node and positioned child nodes
83
+ */
84
+ interface GroupWithNodes {
85
+ group: CanvasNode;
86
+ nodes: CanvasNode[];
87
+ }
88
+ declare function createGroupWithNodes(groupX: number, groupY: number, groupWidth: number, label: string, childNodes: CanvasNode[], color?: string): GroupWithNodes;
89
+ /**
90
+ * Get priority color for a task
91
+ */
92
+ declare function getPriorityColor(priority?: string): string | undefined;
93
+ /**
94
+ * Truncate text to fit within a certain width (approximate)
95
+ */
96
+ declare function truncateText(text: string, maxChars: number): string;
97
+ /**
98
+ * Format markdown text for canvas node
99
+ * Replaces newlines with \n for JSON Canvas spec
100
+ */
29
101
  declare function formatCanvasText(lines: string[]): string;
102
+ /**
103
+ * Calculate the total height needed for a column of groups
104
+ */
105
+ declare function calculateColumnHeight(groups: GroupWithNodes[]): number;
106
+ /**
107
+ * Position groups vertically in a column
108
+ */
109
+ declare function positionGroupsVertically(groups: GroupWithNodes[], startY?: number): GroupWithNodes[];
110
+ /**
111
+ * Flatten groups and nodes into a single array
112
+ */
113
+ declare function flattenGroups(groups: GroupWithNodes[]): CanvasNode[];
30
114
 
31
- export { CANVAS_COLORS, LAYOUT, createEdge, createFileNode, createGroupNode, createGroupWithNodes, createTextNode, formatCanvasText, generateId, getPriorityColor, stackNodesVertically, truncateText };
115
+ export { CANVAS_COLORS, type Canvas, type CanvasEdge, type CanvasNode, type GroupWithNodes, LAYOUT, type StackedLayout, calculateColumnHeight, createEdge, createFileNode, createGroupNode, createGroupWithNodes, createTextNode, flattenGroups, formatCanvasText, generateId, getPriorityColor, positionGroupsVertically, stackNodesVertically, truncateText };
@@ -1,92 +1,35 @@
1
- import "../chunk-3RG5ZIWI.js";
2
-
3
- // src/lib/canvas-layout.ts
4
- import * as crypto from "crypto";
5
- var CANVAS_COLORS = {
6
- RED: "1",
7
- ORANGE: "2",
8
- YELLOW: "3",
9
- GREEN: "4",
10
- CYAN: "5",
11
- PURPLE: "6"
12
- };
13
- var LAYOUT = {
14
- GROUP_PADDING: 20,
15
- NODE_SPACING: 10,
16
- HEADER_HEIGHT: 40
17
- };
18
- function generateId() {
19
- return crypto.randomBytes(8).toString("hex");
20
- }
21
- function createTextNode(x, y, width, height, text, color) {
22
- const node = { id: generateId(), type: "text", x, y, width, height, text };
23
- if (color !== void 0) node.color = color;
24
- return node;
25
- }
26
- function createFileNode(x, y, width, height, file, color) {
27
- const node = { id: generateId(), type: "file", x, y, width, height, file };
28
- if (color !== void 0) node.color = color;
29
- return node;
30
- }
31
- function createGroupNode(x, y, width, height, label, color) {
32
- const node = { id: generateId(), type: "group", x, y, width, height, label };
33
- if (color !== void 0) node.color = color;
34
- return node;
35
- }
36
- function createEdge(fromNode, fromSide, toNode, toSide, label, color) {
37
- const edge = { id: generateId(), fromNode, fromSide, toNode, toSide };
38
- if (label !== void 0) edge.label = label;
39
- if (color !== void 0) edge.color = color;
40
- return edge;
41
- }
42
- function stackNodesVertically(nodes, startX, startY, spacing) {
43
- let currentY = startY;
44
- const positioned = nodes.map((node) => {
45
- const n = { ...node, x: startX, y: currentY };
46
- currentY += node.height + spacing;
47
- return n;
48
- });
49
- return { nodes: positioned, totalHeight: currentY - startY - spacing };
50
- }
51
- function createGroupWithNodes(x, y, width, label, childNodes, color) {
52
- const padding = LAYOUT.GROUP_PADDING;
53
- const headerHeight = LAYOUT.HEADER_HEIGHT;
54
- const spacing = LAYOUT.NODE_SPACING;
55
- const { nodes, totalHeight } = stackNodesVertically(childNodes, x + padding, y + headerHeight, spacing);
56
- const groupHeight = headerHeight + totalHeight + padding;
57
- const group = createGroupNode(x, y, width, Math.max(groupHeight, 100), label, color);
58
- return { group, nodes };
59
- }
60
- function getPriorityColor(priority) {
61
- switch (priority) {
62
- case "critical":
63
- return CANVAS_COLORS.RED;
64
- case "high":
65
- return CANVAS_COLORS.ORANGE;
66
- case "medium":
67
- return CANVAS_COLORS.YELLOW;
68
- default:
69
- return void 0;
70
- }
71
- }
72
- function truncateText(text, maxLength) {
73
- if (text.length <= maxLength) return text;
74
- return text.slice(0, maxLength - 3) + "...";
75
- }
76
- function formatCanvasText(lines) {
77
- return lines.join("\n");
78
- }
1
+ import {
2
+ CANVAS_COLORS,
3
+ LAYOUT,
4
+ calculateColumnHeight,
5
+ createEdge,
6
+ createFileNode,
7
+ createGroupNode,
8
+ createGroupWithNodes,
9
+ createTextNode,
10
+ flattenGroups,
11
+ formatCanvasText,
12
+ generateId,
13
+ getPriorityColor,
14
+ positionGroupsVertically,
15
+ stackNodesVertically,
16
+ truncateText
17
+ } from "../chunk-MDIH26GC.js";
18
+ import "../chunk-2ZDO52B4.js";
79
19
  export {
80
20
  CANVAS_COLORS,
81
21
  LAYOUT,
22
+ calculateColumnHeight,
82
23
  createEdge,
83
24
  createFileNode,
84
25
  createGroupNode,
85
26
  createGroupWithNodes,
86
27
  createTextNode,
28
+ flattenGroups,
87
29
  formatCanvasText,
88
30
  generateId,
89
31
  getPriorityColor,
32
+ positionGroupsVertically,
90
33
  stackNodesVertically,
91
34
  truncateText
92
35
  };
@@ -1,11 +1,35 @@
1
+ interface AgentVaultsConfig {
2
+ [agentName: string]: string;
3
+ }
4
+ interface PluginConfig {
5
+ vaultPath?: string;
6
+ agentVaults?: AgentVaultsConfig;
7
+ }
1
8
  /**
2
9
  * Get the vault path from CLAWVAULT_PATH env var or throw
3
10
  */
4
11
  declare function getVaultPath(): string;
5
12
  declare function findNearestVaultPath(startPath?: string): string | null;
6
- declare function resolveVaultPath(options?: {
13
+ /**
14
+ * Resolve vault path for a specific agent from agentVaults config
15
+ */
16
+ declare function resolveAgentVaultPath(agentVaults: AgentVaultsConfig | undefined, agentId: string | undefined): string | null;
17
+ interface ResolveVaultPathOptions {
7
18
  explicitPath?: string;
8
19
  cwd?: string;
9
- }): string;
20
+ agentId?: string;
21
+ pluginConfig?: PluginConfig;
22
+ }
23
+ /**
24
+ * Resolve vault path with support for per-agent vault paths.
25
+ *
26
+ * Resolution order:
27
+ * 1. Explicit path (--vault flag)
28
+ * 2. Per-agent vault from agentVaults config (if agentId provided)
29
+ * 3. Plugin config vaultPath (fallback for all agents)
30
+ * 4. CLAWVAULT_PATH environment variable
31
+ * 5. Walk up from cwd to find nearest vault
32
+ */
33
+ declare function resolveVaultPath(options?: ResolveVaultPathOptions): string;
10
34
 
11
- export { findNearestVaultPath, getVaultPath, resolveVaultPath };
35
+ export { type AgentVaultsConfig, type PluginConfig, type ResolveVaultPathOptions, findNearestVaultPath, getVaultPath, resolveAgentVaultPath, resolveVaultPath };
@@ -1,11 +1,13 @@
1
1
  import {
2
2
  findNearestVaultPath,
3
3
  getVaultPath,
4
+ resolveAgentVaultPath,
4
5
  resolveVaultPath
5
- } from "../chunk-MXSSG3QU.js";
6
- import "../chunk-3RG5ZIWI.js";
6
+ } from "../chunk-GNJL4YGR.js";
7
+ import "../chunk-2ZDO52B4.js";
7
8
  export {
8
9
  findNearestVaultPath,
9
10
  getVaultPath,
11
+ resolveAgentVaultPath,
10
12
  resolveVaultPath
11
13
  };
@@ -2,7 +2,7 @@ import {
2
2
  buildEntityIndex,
3
3
  getSortedAliases
4
4
  } from "../chunk-J7ZWCI2C.js";
5
- import "../chunk-3RG5ZIWI.js";
5
+ import "../chunk-2ZDO52B4.js";
6
6
  export {
7
7
  buildEntityIndex,
8
8
  getSortedAliases
@@ -6,11 +6,11 @@ import {
6
6
  listProjects,
7
7
  readProject,
8
8
  updateProject
9
- } from "../chunk-62YTUT6J.js";
10
- import "../chunk-N2AXRYLC.js";
11
- import "../chunk-LYHGEHXG.js";
9
+ } from "../chunk-4PY655YM.js";
10
+ import "../chunk-QWQ3TIKS.js";
11
+ import "../chunk-MFAWT5O5.js";
12
12
  import "../chunk-7766SIJP.js";
13
- import "../chunk-3RG5ZIWI.js";
13
+ import "../chunk-2ZDO52B4.js";
14
14
  export {
15
15
  archiveProject,
16
16
  createProject,
@@ -6,7 +6,7 @@ import {
6
6
  parseTranscript,
7
7
  repairSession
8
8
  } from "../chunk-L53L5FCL.js";
9
- import "../chunk-3RG5ZIWI.js";
9
+ import "../chunk-2ZDO52B4.js";
10
10
  export {
11
11
  analyzeSession,
12
12
  computeParentRelinks,
@@ -11,7 +11,7 @@ import {
11
11
  listSessions,
12
12
  loadSessionsStore
13
13
  } from "../chunk-HRLWZGMA.js";
14
- import "../chunk-3RG5ZIWI.js";
14
+ import "../chunk-2ZDO52B4.js";
15
15
  export {
16
16
  backupSession,
17
17
  findMainSession,
@@ -23,7 +23,7 @@ import {
23
23
  syncWithPeer
24
24
  } from "../chunk-TIGW564L.js";
25
25
  import "../chunk-IVRIKYFE.js";
26
- import "../chunk-3RG5ZIWI.js";
26
+ import "../chunk-2ZDO52B4.js";
27
27
  export {
28
28
  CLAWVAULT_SERVE_PATH,
29
29
  DEFAULT_SERVE_PORT,
@@ -23,10 +23,10 @@ import {
23
23
  slugify,
24
24
  updateBacklogItem,
25
25
  updateTask
26
- } from "../chunk-N2AXRYLC.js";
27
- import "../chunk-LYHGEHXG.js";
26
+ } from "../chunk-QWQ3TIKS.js";
27
+ import "../chunk-MFAWT5O5.js";
28
28
  import "../chunk-7766SIJP.js";
29
- import "../chunk-3RG5ZIWI.js";
29
+ import "../chunk-2ZDO52B4.js";
30
30
  export {
31
31
  completeTask,
32
32
  createBacklogItem,
@@ -2,7 +2,7 @@ import {
2
2
  buildTemplateVariables,
3
3
  renderTemplate
4
4
  } from "../chunk-7766SIJP.js";
5
- import "../chunk-3RG5ZIWI.js";
5
+ import "../chunk-2ZDO52B4.js";
6
6
  export {
7
7
  buildTemplateVariables,
8
8
  renderTemplate
@@ -15,7 +15,7 @@ import {
15
15
  isPathSafe,
16
16
  resolveWebDAVPath
17
17
  } from "../chunk-IVRIKYFE.js";
18
- import "../chunk-3RG5ZIWI.js";
18
+ import "../chunk-2ZDO52B4.js";
19
19
  export {
20
20
  WEBDAV_PREFIX,
21
21
  checkAuth,
@@ -0,0 +1,8 @@
1
+ declare const clawvaultPlugin: {
2
+ id: string;
3
+ name: string;
4
+ description: string;
5
+ register(): void;
6
+ };
7
+
8
+ export { clawvaultPlugin as default };
@@ -0,0 +1,14 @@
1
+ import "./chunk-2ZDO52B4.js";
2
+
3
+ // src/openclaw-plugin.ts
4
+ var clawvaultPlugin = {
5
+ id: "clawvault",
6
+ name: "ClawVault",
7
+ description: "Structured memory system for AI agents with context death resilience",
8
+ register() {
9
+ }
10
+ };
11
+ var openclaw_plugin_default = clawvaultPlugin;
12
+ export {
13
+ openclaw_plugin_default as default
14
+ };
@@ -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 };