clawvault 3.1.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 (289) 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 +1368 -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-F2JEUD4J.js → chunk-23YDQ3QU.js} +6 -8
  22. package/dist/{chunk-C7OK5WKP.js → chunk-2JQ3O2YL.js} +4 -4
  23. package/dist/{chunk-VR5NE7PZ.js → chunk-2RAZ4ZFE.js} +1 -1
  24. package/dist/chunk-2ZDO52B4.js +52 -0
  25. package/dist/{chunk-ZZA73MFY.js → chunk-33DOSHTA.js} +176 -36
  26. package/dist/chunk-33VSQP4J.js +37 -0
  27. package/dist/chunk-4BQTQMJP.js +93 -0
  28. package/dist/{chunk-GUKMRGM7.js → chunk-4OXMU5S2.js} +1 -1
  29. package/dist/{chunk-62YTUT6J.js → chunk-4PY655YM.js} +15 -3
  30. package/dist/chunk-6FH3IULF.js +352 -0
  31. package/dist/{chunk-3NSBOUT3.js → chunk-77Q5CSPJ.js} +404 -80
  32. package/dist/{chunk-4VQTUVH7.js → chunk-7YZWHM36.js} +52 -26
  33. package/dist/chunk-BSJ6RIT7.js +447 -0
  34. package/dist/chunk-BUEW6IIK.js +364 -0
  35. package/dist/{chunk-LI4O6NVK.js → chunk-CLJTREDS.js} +74 -14
  36. package/dist/chunk-EK6S23ZB.js +469 -0
  37. package/dist/{chunk-LNJA2UGL.js → chunk-ESFLMDRB.js} +9 -86
  38. package/dist/{chunk-H34S76MB.js → chunk-ESVS6K2B.js} +6 -6
  39. package/dist/{chunk-WAZ3NLWL.js → chunk-F55HGNU4.js} +0 -47
  40. package/dist/{chunk-QK3UCXWL.js → chunk-FHFUXL6G.js} +2 -2
  41. package/dist/{chunk-H62BP7RI.js → chunk-GAOWA7GR.js} +212 -46
  42. package/dist/chunk-GGA32J2R.js +784 -0
  43. package/dist/chunk-GNJL4YGR.js +79 -0
  44. package/dist/chunk-IVRIKYFE.js +520 -0
  45. package/dist/chunk-MDIH26GC.js +183 -0
  46. package/dist/{chunk-LYHGEHXG.js → chunk-MFAWT5O5.js} +0 -1
  47. package/dist/chunk-MM6QGW3P.js +207 -0
  48. package/dist/{chunk-P5EPF6MB.js → chunk-MW5C6ZQA.js} +110 -13
  49. package/dist/chunk-NCKFNBHJ.js +257 -0
  50. package/dist/{chunk-QBLMXKF2.js → chunk-OIWVQYQF.js} +1 -1
  51. package/dist/{chunk-42MXU7A6.js → chunk-P62WHA27.js} +58 -47
  52. package/dist/chunk-PBACDKKP.js +66 -0
  53. package/dist/{chunk-VGLOTGAS.js → chunk-QSHD36LH.js} +2 -2
  54. package/dist/{chunk-OZ7RIXTO.js → chunk-QSRRMEYM.js} +2 -2
  55. package/dist/chunk-QVEERJSP.js +152 -0
  56. package/dist/{chunk-N2AXRYLC.js → chunk-QWQ3TIKS.js} +1 -1
  57. package/dist/{chunk-3DHXQHYG.js → chunk-R2MIW5G7.js} +1 -1
  58. package/dist/{chunk-SJSFRIYS.js → chunk-SLXOR3CC.js} +2 -2
  59. package/dist/chunk-SS4B7P7V.js +99 -0
  60. package/dist/{chunk-JY6FYXIT.js → chunk-STCQGCEQ.js} +6 -11
  61. package/dist/chunk-TIGW564L.js +628 -0
  62. package/dist/chunk-U4O6C46S.js +154 -0
  63. package/dist/{chunk-ITPEXLHA.js → chunk-URXDAUVH.js} +24 -5
  64. package/dist/chunk-VSL7KY3M.js +189 -0
  65. package/dist/{chunk-U55BGUAU.js → chunk-W4SPAEE7.js} +6 -6
  66. package/dist/chunk-WMGIIABP.js +15 -0
  67. package/dist/{chunk-33UGEQRT.js → chunk-X3SPPUFG.js} +151 -64
  68. package/dist/chunk-Y6VJKXGL.js +373 -0
  69. package/dist/{chunk-3WRJEKN4.js → chunk-ZN54U2OZ.js} +123 -10
  70. package/dist/cli/index.js +34 -24
  71. package/dist/commands/archive.js +3 -3
  72. package/dist/commands/backlog.js +3 -3
  73. package/dist/commands/blocked.js +3 -3
  74. package/dist/commands/canvas.d.ts +15 -0
  75. package/dist/commands/canvas.js +200 -0
  76. package/dist/commands/checkpoint.js +2 -2
  77. package/dist/commands/compat.js +2 -2
  78. package/dist/commands/context.js +8 -6
  79. package/dist/commands/doctor.d.ts +11 -7
  80. package/dist/commands/doctor.js +18 -16
  81. package/dist/commands/embed.js +5 -6
  82. package/dist/commands/entities.js +2 -2
  83. package/dist/commands/graph.js +4 -4
  84. package/dist/commands/inject.d.ts +1 -1
  85. package/dist/commands/inject.js +5 -6
  86. package/dist/commands/kanban.js +4 -4
  87. package/dist/commands/link.js +5 -5
  88. package/dist/commands/migrate-observations.js +4 -4
  89. package/dist/commands/observe.d.ts +0 -1
  90. package/dist/commands/observe.js +14 -13
  91. package/dist/commands/project.js +5 -5
  92. package/dist/commands/rebuild-embeddings.d.ts +21 -0
  93. package/dist/commands/rebuild-embeddings.js +91 -0
  94. package/dist/commands/rebuild.js +12 -11
  95. package/dist/commands/recover.js +3 -3
  96. package/dist/commands/reflect.js +6 -7
  97. package/dist/commands/repair-session.js +1 -1
  98. package/dist/commands/replay.js +14 -14
  99. package/dist/commands/session-recap.js +1 -1
  100. package/dist/commands/setup.d.ts +2 -89
  101. package/dist/commands/setup.js +3 -21
  102. package/dist/commands/shell-init.js +1 -1
  103. package/dist/commands/sleep.d.ts +1 -1
  104. package/dist/commands/sleep.js +20 -19
  105. package/dist/commands/status.d.ts +2 -0
  106. package/dist/commands/status.js +57 -35
  107. package/dist/commands/sync-bd.d.ts +10 -0
  108. package/dist/commands/sync-bd.js +10 -0
  109. package/dist/commands/tailscale.d.ts +52 -0
  110. package/dist/commands/tailscale.js +26 -0
  111. package/dist/commands/task.js +4 -4
  112. package/dist/commands/template.js +2 -2
  113. package/dist/commands/wake.d.ts +1 -1
  114. package/dist/commands/wake.js +11 -10
  115. package/dist/commands/workgraph.d.ts +124 -0
  116. package/dist/commands/workgraph.js +38 -0
  117. package/dist/index.d.ts +341 -191
  118. package/dist/index.js +446 -116
  119. package/dist/{inject-Bzi5E-By.d.ts → inject-DYUrDqQO.d.ts} +3 -3
  120. package/dist/ledger-B7g7jhqG.d.ts +44 -0
  121. package/dist/lib/auto-linker.js +2 -2
  122. package/dist/lib/canvas-layout.d.ts +115 -0
  123. package/dist/lib/canvas-layout.js +35 -0
  124. package/dist/lib/config.d.ts +27 -3
  125. package/dist/lib/config.js +4 -2
  126. package/dist/lib/entity-index.js +1 -1
  127. package/dist/lib/project-utils.js +4 -4
  128. package/dist/lib/session-repair.js +1 -1
  129. package/dist/lib/session-utils.js +1 -1
  130. package/dist/lib/tailscale.d.ts +225 -0
  131. package/dist/lib/tailscale.js +50 -0
  132. package/dist/lib/task-utils.js +3 -3
  133. package/dist/lib/template-engine.js +1 -1
  134. package/dist/lib/webdav.d.ts +109 -0
  135. package/dist/lib/webdav.js +35 -0
  136. package/dist/onnxruntime_binding-5QEF3SUC.node +0 -0
  137. package/dist/onnxruntime_binding-BKPKNEGC.node +0 -0
  138. package/dist/onnxruntime_binding-FMOXGIUT.node +0 -0
  139. package/dist/onnxruntime_binding-OI2KMXC5.node +0 -0
  140. package/dist/onnxruntime_binding-UX44MLAZ.node +0 -0
  141. package/dist/onnxruntime_binding-Y2W7N7WY.node +0 -0
  142. package/dist/openclaw-plugin.d.ts +8 -0
  143. package/dist/openclaw-plugin.js +14 -0
  144. package/dist/registry-BR4326o0.d.ts +30 -0
  145. package/dist/store-CA-6sKCJ.d.ts +34 -0
  146. package/dist/thread-B9LhXNU0.d.ts +41 -0
  147. package/dist/transformers.node-A2ZRORSQ.js +46775 -0
  148. package/dist/{types-Y2_Um2Ls.d.ts → types-BbWJoC1c.d.ts} +1 -44
  149. package/dist/workgraph/index.d.ts +5 -0
  150. package/dist/workgraph/index.js +23 -0
  151. package/dist/workgraph/ledger.d.ts +2 -0
  152. package/dist/workgraph/ledger.js +25 -0
  153. package/dist/workgraph/registry.d.ts +2 -0
  154. package/dist/workgraph/registry.js +19 -0
  155. package/dist/workgraph/store.d.ts +2 -0
  156. package/dist/workgraph/store.js +25 -0
  157. package/dist/workgraph/thread.d.ts +2 -0
  158. package/dist/workgraph/thread.js +25 -0
  159. package/dist/workgraph/types.d.ts +54 -0
  160. package/dist/workgraph/types.js +7 -0
  161. package/hooks/clawvault/HOOK.md +113 -0
  162. package/hooks/clawvault/handler.js +1561 -0
  163. package/hooks/clawvault/handler.test.js +510 -0
  164. package/hooks/clawvault/openclaw.plugin.json +72 -0
  165. package/openclaw.plugin.json +65 -38
  166. package/package.json +25 -22
  167. package/dist/chunk-3RG5ZIWI.js +0 -10
  168. package/dist/chunk-3ZIH425O.js +0 -871
  169. package/dist/chunk-6U6MK36V.js +0 -205
  170. package/dist/chunk-CMB7UL7C.js +0 -327
  171. package/dist/chunk-D2H45LON.js +0 -1074
  172. package/dist/chunk-E7MFQB6D.js +0 -163
  173. package/dist/chunk-GQSLDZTS.js +0 -560
  174. package/dist/chunk-MFM6K7PU.js +0 -374
  175. package/dist/chunk-MXSSG3QU.js +0 -42
  176. package/dist/chunk-OCGVIN3L.js +0 -88
  177. package/dist/chunk-PAH27GSN.js +0 -108
  178. package/dist/chunk-YCUNCH2I.js +0 -78
  179. package/dist/cli/index.cjs +0 -8584
  180. package/dist/cli/index.d.cts +0 -5
  181. package/dist/commands/archive.cjs +0 -287
  182. package/dist/commands/archive.d.cts +0 -11
  183. package/dist/commands/backlog.cjs +0 -721
  184. package/dist/commands/backlog.d.cts +0 -53
  185. package/dist/commands/blocked.cjs +0 -204
  186. package/dist/commands/blocked.d.cts +0 -26
  187. package/dist/commands/checkpoint.cjs +0 -244
  188. package/dist/commands/checkpoint.d.cts +0 -41
  189. package/dist/commands/compat.cjs +0 -294
  190. package/dist/commands/compat.d.cts +0 -28
  191. package/dist/commands/context.cjs +0 -2990
  192. package/dist/commands/context.d.cts +0 -2
  193. package/dist/commands/doctor.cjs +0 -2986
  194. package/dist/commands/doctor.d.cts +0 -21
  195. package/dist/commands/embed.cjs +0 -232
  196. package/dist/commands/embed.d.cts +0 -17
  197. package/dist/commands/entities.cjs +0 -141
  198. package/dist/commands/entities.d.cts +0 -7
  199. package/dist/commands/graph.cjs +0 -501
  200. package/dist/commands/graph.d.cts +0 -21
  201. package/dist/commands/inject.cjs +0 -1636
  202. package/dist/commands/inject.d.cts +0 -2
  203. package/dist/commands/kanban.cjs +0 -884
  204. package/dist/commands/kanban.d.cts +0 -63
  205. package/dist/commands/link.cjs +0 -965
  206. package/dist/commands/link.d.cts +0 -11
  207. package/dist/commands/migrate-observations.cjs +0 -362
  208. package/dist/commands/migrate-observations.d.cts +0 -19
  209. package/dist/commands/observe.cjs +0 -4099
  210. package/dist/commands/observe.d.cts +0 -23
  211. package/dist/commands/project.cjs +0 -1341
  212. package/dist/commands/project.d.cts +0 -85
  213. package/dist/commands/rebuild.cjs +0 -3136
  214. package/dist/commands/rebuild.d.cts +0 -11
  215. package/dist/commands/recover.cjs +0 -361
  216. package/dist/commands/recover.d.cts +0 -38
  217. package/dist/commands/reflect.cjs +0 -1008
  218. package/dist/commands/reflect.d.cts +0 -11
  219. package/dist/commands/repair-session.cjs +0 -457
  220. package/dist/commands/repair-session.d.cts +0 -38
  221. package/dist/commands/replay.cjs +0 -4103
  222. package/dist/commands/replay.d.cts +0 -16
  223. package/dist/commands/session-recap.cjs +0 -353
  224. package/dist/commands/session-recap.d.cts +0 -27
  225. package/dist/commands/setup.cjs +0 -1278
  226. package/dist/commands/setup.d.cts +0 -99
  227. package/dist/commands/shell-init.cjs +0 -75
  228. package/dist/commands/shell-init.d.cts +0 -7
  229. package/dist/commands/sleep.cjs +0 -6029
  230. package/dist/commands/sleep.d.cts +0 -36
  231. package/dist/commands/status.cjs +0 -2737
  232. package/dist/commands/status.d.cts +0 -52
  233. package/dist/commands/task.cjs +0 -1236
  234. package/dist/commands/task.d.cts +0 -97
  235. package/dist/commands/template.cjs +0 -457
  236. package/dist/commands/template.d.cts +0 -36
  237. package/dist/commands/wake.cjs +0 -2627
  238. package/dist/commands/wake.d.cts +0 -22
  239. package/dist/context-BUGaWpyL.d.cts +0 -46
  240. package/dist/index.cjs +0 -12373
  241. package/dist/index.d.cts +0 -854
  242. package/dist/inject-Bzi5E-By.d.cts +0 -137
  243. package/dist/lib/auto-linker.cjs +0 -176
  244. package/dist/lib/auto-linker.d.cts +0 -26
  245. package/dist/lib/config.cjs +0 -78
  246. package/dist/lib/config.d.cts +0 -11
  247. package/dist/lib/entity-index.cjs +0 -84
  248. package/dist/lib/entity-index.d.cts +0 -26
  249. package/dist/lib/project-utils.cjs +0 -864
  250. package/dist/lib/project-utils.d.cts +0 -97
  251. package/dist/lib/session-repair.cjs +0 -239
  252. package/dist/lib/session-repair.d.cts +0 -110
  253. package/dist/lib/session-utils.cjs +0 -209
  254. package/dist/lib/session-utils.d.cts +0 -63
  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/plugin/index.cjs +0 -1907
  260. package/dist/plugin/index.d.cts +0 -36
  261. package/dist/plugin/index.d.ts +0 -36
  262. package/dist/plugin/index.js +0 -572
  263. package/dist/plugin/inject.cjs +0 -356
  264. package/dist/plugin/inject.d.cts +0 -54
  265. package/dist/plugin/inject.d.ts +0 -54
  266. package/dist/plugin/inject.js +0 -17
  267. package/dist/plugin/observe.cjs +0 -631
  268. package/dist/plugin/observe.d.cts +0 -39
  269. package/dist/plugin/observe.d.ts +0 -39
  270. package/dist/plugin/observe.js +0 -18
  271. package/dist/plugin/templates.cjs +0 -593
  272. package/dist/plugin/templates.d.cts +0 -52
  273. package/dist/plugin/templates.d.ts +0 -52
  274. package/dist/plugin/templates.js +0 -25
  275. package/dist/plugin/types.cjs +0 -18
  276. package/dist/plugin/types.d.cts +0 -209
  277. package/dist/plugin/types.d.ts +0 -209
  278. package/dist/plugin/types.js +0 -0
  279. package/dist/plugin/vault.cjs +0 -927
  280. package/dist/plugin/vault.d.cts +0 -68
  281. package/dist/plugin/vault.d.ts +0 -68
  282. package/dist/plugin/vault.js +0 -22
  283. package/dist/types-Y2_Um2Ls.d.cts +0 -205
  284. package/templates/memory-event.md +0 -67
  285. package/templates/party.md +0 -63
  286. package/templates/primitive-registry.yaml +0 -551
  287. package/templates/run.md +0 -68
  288. package/templates/trigger.md +0 -68
  289. 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,
@@ -0,0 +1,115 @@
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
+ }
30
+ declare const CANVAS_COLORS: {
31
+ readonly RED: "1";
32
+ readonly ORANGE: "2";
33
+ readonly YELLOW: "3";
34
+ readonly GREEN: "4";
35
+ readonly CYAN: "5";
36
+ readonly PURPLE: "6";
37
+ };
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;
43
+ readonly GROUP_PADDING: 20;
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;
51
+ };
52
+ /**
53
+ * Generate a 16-character lowercase hex ID
54
+ */
55
+ declare function generateId(): string;
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[];
77
+ totalHeight: number;
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
+ */
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[];
114
+
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 };
@@ -0,0 +1,35 @@
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";
19
+ export {
20
+ CANVAS_COLORS,
21
+ LAYOUT,
22
+ calculateColumnHeight,
23
+ createEdge,
24
+ createFileNode,
25
+ createGroupNode,
26
+ createGroupWithNodes,
27
+ createTextNode,
28
+ flattenGroups,
29
+ formatCanvasText,
30
+ generateId,
31
+ getPriorityColor,
32
+ positionGroupsVertically,
33
+ stackNodesVertically,
34
+ truncateText
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,
@@ -0,0 +1,225 @@
1
+ import { ChildProcess } from 'child_process';
2
+ import * as http from 'http';
3
+
4
+ /**
5
+ * Tailscale Integration for ClawVault
6
+ *
7
+ * Provides native Tailscale networking capabilities for vault synchronization
8
+ * across devices on a Tailscale network (tailnet).
9
+ *
10
+ * Features:
11
+ * - Tailscale status detection and peer discovery
12
+ * - MagicDNS hostname resolution
13
+ * - Secure peer-to-peer vault sync
14
+ * - Tailscale Funnel/Serve integration for vault sharing
15
+ */
16
+
17
+ interface TailscaleStatus {
18
+ /** Whether Tailscale is installed */
19
+ installed: boolean;
20
+ /** Whether Tailscale daemon is running */
21
+ running: boolean;
22
+ /** Whether connected to tailnet */
23
+ connected: boolean;
24
+ /** Current device's Tailscale IP */
25
+ selfIP?: string;
26
+ /** Current device's MagicDNS hostname */
27
+ selfHostname?: string;
28
+ /** Current device's full domain name */
29
+ selfDNSName?: string;
30
+ /** Tailnet name */
31
+ tailnetName?: string;
32
+ /** Backend state (Running, Stopped, etc.) */
33
+ backendState?: string;
34
+ /** List of peers on the tailnet */
35
+ peers: TailscalePeer[];
36
+ /** Error message if any */
37
+ error?: string;
38
+ }
39
+ interface TailscalePeer {
40
+ /** Peer's hostname */
41
+ hostname: string;
42
+ /** Peer's MagicDNS name */
43
+ dnsName: string;
44
+ /** Peer's Tailscale IP addresses */
45
+ tailscaleIPs: string[];
46
+ /** Whether peer is currently online */
47
+ online: boolean;
48
+ /** Operating system */
49
+ os?: string;
50
+ /** Whether this peer is the exit node */
51
+ exitNode?: boolean;
52
+ /** Whether this peer is a tagged device */
53
+ tags?: string[];
54
+ /** Last seen timestamp */
55
+ lastSeen?: string;
56
+ /** Whether peer is running ClawVault serve */
57
+ clawvaultServing?: boolean;
58
+ /** ClawVault serve port if detected */
59
+ clawvaultPort?: number;
60
+ }
61
+ interface TailscaleServeConfig {
62
+ /** Port to serve on (default: 8384) */
63
+ port?: number;
64
+ /** Whether to use HTTPS (via Tailscale) */
65
+ https?: boolean;
66
+ /** Whether to expose via Tailscale Funnel (public internet) */
67
+ funnel?: boolean;
68
+ /** Path prefix for the serve endpoint */
69
+ pathPrefix?: string;
70
+ /** Optional WebDAV Basic Auth credentials */
71
+ webdavAuth?: {
72
+ username: string;
73
+ password: string;
74
+ };
75
+ }
76
+ interface TailscaleSyncOptions {
77
+ /** Target peer hostname or IP */
78
+ peer: string;
79
+ /** Port on the peer (default: 8384) */
80
+ port?: number;
81
+ /** Direction: push, pull, or bidirectional */
82
+ direction?: 'push' | 'pull' | 'bidirectional';
83
+ /** Dry run - don't actually sync */
84
+ dryRun?: boolean;
85
+ /** Delete files on target that don't exist on source */
86
+ deleteOrphans?: boolean;
87
+ /** Categories to sync (default: all) */
88
+ categories?: string[];
89
+ /** Use HTTPS for connection */
90
+ https?: boolean;
91
+ }
92
+ interface TailscaleSyncResult {
93
+ /** Files pushed to peer */
94
+ pushed: string[];
95
+ /** Files pulled from peer */
96
+ pulled: string[];
97
+ /** Files deleted */
98
+ deleted: string[];
99
+ /** Files unchanged */
100
+ unchanged: string[];
101
+ /** Errors encountered */
102
+ errors: string[];
103
+ /** Sync statistics */
104
+ stats: {
105
+ bytesTransferred: number;
106
+ filesProcessed: number;
107
+ duration: number;
108
+ };
109
+ }
110
+ interface VaultManifest {
111
+ /** Vault name */
112
+ name: string;
113
+ /** Vault version */
114
+ version: string;
115
+ /** Last updated timestamp */
116
+ lastUpdated: string;
117
+ /** File manifest with checksums */
118
+ files: VaultFileEntry[];
119
+ }
120
+ interface VaultFileEntry {
121
+ /** Relative path */
122
+ path: string;
123
+ /** File size in bytes */
124
+ size: number;
125
+ /** Last modified timestamp */
126
+ modified: string;
127
+ /** SHA-256 checksum */
128
+ checksum: string;
129
+ /** Category */
130
+ category: string;
131
+ }
132
+ declare const DEFAULT_SERVE_PORT = 8384;
133
+ declare const CLAWVAULT_SERVE_PATH = "/.clawvault";
134
+ declare const MANIFEST_ENDPOINT = "/.clawvault/manifest";
135
+ declare const SYNC_ENDPOINT = "/.clawvault/sync";
136
+ declare const FILE_ENDPOINT = "/.clawvault/files";
137
+ /**
138
+ * Check if Tailscale CLI is installed
139
+ */
140
+ declare function hasTailscale(): boolean;
141
+ /**
142
+ * Get Tailscale version
143
+ */
144
+ declare function getTailscaleVersion(): string | null;
145
+ /**
146
+ * Get comprehensive Tailscale status
147
+ */
148
+ declare function getTailscaleStatus(): TailscaleStatus;
149
+ /**
150
+ * Find a peer by hostname (partial match supported)
151
+ */
152
+ declare function findPeer(hostname: string): TailscalePeer | null;
153
+ /**
154
+ * Get online peers only
155
+ */
156
+ declare function getOnlinePeers(): TailscalePeer[];
157
+ /**
158
+ * Resolve a peer hostname to its Tailscale IP
159
+ */
160
+ declare function resolvePeerIP(hostname: string): string | null;
161
+ /**
162
+ * Generate vault manifest for synchronization
163
+ */
164
+ declare function generateVaultManifest(vaultPath: string): VaultManifest;
165
+ /**
166
+ * Compare two manifests and return differences
167
+ */
168
+ declare function compareManifests(local: VaultManifest, remote: VaultManifest): {
169
+ toPush: VaultFileEntry[];
170
+ toPull: VaultFileEntry[];
171
+ conflicts: Array<{
172
+ path: string;
173
+ local: VaultFileEntry;
174
+ remote: VaultFileEntry;
175
+ }>;
176
+ unchanged: string[];
177
+ };
178
+ interface ServeInstance {
179
+ server: http.Server;
180
+ port: number;
181
+ stop: () => Promise<void>;
182
+ }
183
+ /**
184
+ * Start serving a vault over HTTP for Tailscale sync
185
+ * Includes WebDAV support at /webdav/ for Obsidian mobile sync
186
+ */
187
+ declare function serveVault(vaultPath: string, options?: TailscaleServeConfig): ServeInstance;
188
+ /**
189
+ * Fetch remote vault manifest
190
+ */
191
+ declare function fetchRemoteManifest(host: string, port?: number, useHttps?: boolean): Promise<VaultManifest>;
192
+ /**
193
+ * Fetch a file from remote vault
194
+ */
195
+ declare function fetchRemoteFile(host: string, filePath: string, port?: number, useHttps?: boolean): Promise<string>;
196
+ /**
197
+ * Push a file to remote vault
198
+ */
199
+ declare function pushFileToRemote(host: string, filePath: string, content: string, port?: number, useHttps?: boolean): Promise<void>;
200
+ /**
201
+ * Sync vault with a remote peer
202
+ */
203
+ declare function syncWithPeer(vaultPath: string, options: TailscaleSyncOptions): Promise<TailscaleSyncResult>;
204
+ /**
205
+ * Configure Tailscale serve for the vault
206
+ * This uses `tailscale serve` to expose the vault server via Tailscale's HTTPS
207
+ */
208
+ declare function configureTailscaleServe(localPort: number, options?: {
209
+ funnel?: boolean;
210
+ background?: boolean;
211
+ }): ChildProcess | null;
212
+ /**
213
+ * Stop Tailscale serve
214
+ */
215
+ declare function stopTailscaleServe(): boolean;
216
+ /**
217
+ * Check if a peer is serving ClawVault
218
+ */
219
+ declare function checkPeerClawVault(host: string, port?: number): Promise<boolean>;
220
+ /**
221
+ * Discover ClawVault peers on the tailnet
222
+ */
223
+ declare function discoverClawVaultPeers(port?: number): Promise<TailscalePeer[]>;
224
+
225
+ export { CLAWVAULT_SERVE_PATH, DEFAULT_SERVE_PORT, FILE_ENDPOINT, MANIFEST_ENDPOINT, SYNC_ENDPOINT, type ServeInstance, type TailscalePeer, type TailscaleServeConfig, type TailscaleStatus, type TailscaleSyncOptions, type TailscaleSyncResult, type VaultFileEntry, type VaultManifest, checkPeerClawVault, compareManifests, configureTailscaleServe, discoverClawVaultPeers, fetchRemoteFile, fetchRemoteManifest, findPeer, generateVaultManifest, getOnlinePeers, getTailscaleStatus, getTailscaleVersion, hasTailscale, pushFileToRemote, resolvePeerIP, serveVault, stopTailscaleServe, syncWithPeer };
@@ -0,0 +1,50 @@
1
+ import {
2
+ CLAWVAULT_SERVE_PATH,
3
+ DEFAULT_SERVE_PORT,
4
+ FILE_ENDPOINT,
5
+ MANIFEST_ENDPOINT,
6
+ SYNC_ENDPOINT,
7
+ checkPeerClawVault,
8
+ compareManifests,
9
+ configureTailscaleServe,
10
+ discoverClawVaultPeers,
11
+ fetchRemoteFile,
12
+ fetchRemoteManifest,
13
+ findPeer,
14
+ generateVaultManifest,
15
+ getOnlinePeers,
16
+ getTailscaleStatus,
17
+ getTailscaleVersion,
18
+ hasTailscale,
19
+ pushFileToRemote,
20
+ resolvePeerIP,
21
+ serveVault,
22
+ stopTailscaleServe,
23
+ syncWithPeer
24
+ } from "../chunk-TIGW564L.js";
25
+ import "../chunk-IVRIKYFE.js";
26
+ import "../chunk-2ZDO52B4.js";
27
+ export {
28
+ CLAWVAULT_SERVE_PATH,
29
+ DEFAULT_SERVE_PORT,
30
+ FILE_ENDPOINT,
31
+ MANIFEST_ENDPOINT,
32
+ SYNC_ENDPOINT,
33
+ checkPeerClawVault,
34
+ compareManifests,
35
+ configureTailscaleServe,
36
+ discoverClawVaultPeers,
37
+ fetchRemoteFile,
38
+ fetchRemoteManifest,
39
+ findPeer,
40
+ generateVaultManifest,
41
+ getOnlinePeers,
42
+ getTailscaleStatus,
43
+ getTailscaleVersion,
44
+ hasTailscale,
45
+ pushFileToRemote,
46
+ resolvePeerIP,
47
+ serveVault,
48
+ stopTailscaleServe,
49
+ syncWithPeer
50
+ };
@@ -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