clawvault 2.6.1 → 3.0.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 (232) hide show
  1. package/bin/command-registration.test.js +1 -3
  2. package/bin/register-core-commands.js +10 -23
  3. package/bin/register-maintenance-commands.js +3 -20
  4. package/bin/register-query-commands.js +23 -0
  5. package/bin/register-task-commands.js +1 -18
  6. package/bin/register-task-commands.test.js +0 -16
  7. package/bin/register-vault-operations-commands.js +1 -29
  8. package/dist/{chunk-QVMXF7FY.js → chunk-3D6BCTP6.js} +39 -1
  9. package/dist/{chunk-R2MIW5G7.js → chunk-3DHXQHYG.js} +1 -1
  10. package/dist/{chunk-Q2J5YTUF.js → chunk-3NSBOUT3.js} +73 -36
  11. package/dist/chunk-3RG5ZIWI.js +10 -0
  12. package/dist/{chunk-AZYOKJYC.js → chunk-62YTUT6J.js} +2 -2
  13. package/dist/chunk-6U6MK36V.js +205 -0
  14. package/dist/{chunk-4QYGFWRM.js → chunk-7R7O6STJ.js} +4 -4
  15. package/dist/{chunk-VXEOHTSL.js → chunk-C7OK5WKP.js} +4 -4
  16. package/dist/chunk-CMB7UL7C.js +327 -0
  17. package/dist/chunk-DEFFDRVP.js +938 -0
  18. package/dist/{chunk-HIHOUSXS.js → chunk-E7MFQB6D.js} +59 -18
  19. package/dist/{chunk-ME37YNW3.js → chunk-F2JEUD4J.js} +6 -4
  20. package/dist/chunk-GAJV4IGR.js +82 -0
  21. package/dist/chunk-GQSLDZTS.js +560 -0
  22. package/dist/{chunk-4OXMU5S2.js → chunk-GUKMRGM7.js} +1 -1
  23. package/dist/{chunk-T76H47ZS.js → chunk-H34S76MB.js} +6 -6
  24. package/dist/{chunk-R6SXNSFD.js → chunk-JY6FYXIT.js} +10 -5
  25. package/dist/chunk-K234IDRJ.js +1073 -0
  26. package/dist/{chunk-IEVLHNLU.js → chunk-LNJA2UGL.js} +86 -9
  27. package/dist/{chunk-MFAWT5O5.js → chunk-LYHGEHXG.js} +1 -0
  28. package/dist/chunk-MFM6K7PU.js +374 -0
  29. package/dist/{chunk-QWQ3TIKS.js → chunk-N2AXRYLC.js} +1 -1
  30. package/dist/chunk-PAH27GSN.js +108 -0
  31. package/dist/{chunk-OIWVQYQF.js → chunk-QBLMXKF2.js} +1 -1
  32. package/dist/{chunk-FHFUXL6G.js → chunk-QK3UCXWL.js} +2 -2
  33. package/dist/{chunk-3BTHWPMB.js → chunk-SJSFRIYS.js} +1 -1
  34. package/dist/{chunk-4VRIMU4O.js → chunk-U55BGUAU.js} +2 -2
  35. package/dist/{chunk-PBEE567J.js → chunk-VGLOTGAS.js} +1 -1
  36. package/dist/{chunk-F55HGNU4.js → chunk-WAZ3NLWL.js} +47 -0
  37. package/dist/{chunk-KL4NAOMO.js → chunk-WGRQ6HDV.js} +1 -1
  38. package/dist/{chunk-UEOUADMO.js → chunk-YKTA5JOJ.js} +13 -10
  39. package/dist/{chunk-XAVB4GB4.js → chunk-ZVVFWOLW.js} +4 -4
  40. package/dist/cli/index.cjs +10033 -0
  41. package/dist/cli/index.d.cts +5 -0
  42. package/dist/cli/index.js +20 -18
  43. package/dist/commands/archive.cjs +287 -0
  44. package/dist/commands/archive.d.cts +11 -0
  45. package/dist/commands/archive.js +1 -0
  46. package/dist/commands/backlog.cjs +721 -0
  47. package/dist/commands/backlog.d.cts +53 -0
  48. package/dist/commands/backlog.js +3 -2
  49. package/dist/commands/blocked.cjs +204 -0
  50. package/dist/commands/blocked.d.cts +26 -0
  51. package/dist/commands/blocked.js +3 -2
  52. package/dist/commands/checkpoint.cjs +244 -0
  53. package/dist/commands/checkpoint.d.cts +41 -0
  54. package/dist/commands/checkpoint.js +2 -1
  55. package/dist/commands/compat.cjs +369 -0
  56. package/dist/commands/compat.d.cts +28 -0
  57. package/dist/commands/compat.js +2 -1
  58. package/dist/commands/context.cjs +2989 -0
  59. package/dist/commands/context.d.cts +2 -0
  60. package/dist/commands/context.js +5 -4
  61. package/dist/commands/doctor.cjs +3062 -0
  62. package/dist/commands/doctor.d.cts +21 -0
  63. package/dist/commands/doctor.d.ts +6 -1
  64. package/dist/commands/doctor.js +13 -11
  65. package/dist/commands/embed.cjs +232 -0
  66. package/dist/commands/embed.d.cts +17 -0
  67. package/dist/commands/embed.js +5 -2
  68. package/dist/commands/entities.cjs +141 -0
  69. package/dist/commands/entities.d.cts +7 -0
  70. package/dist/commands/entities.js +1 -0
  71. package/dist/commands/graph.cjs +501 -0
  72. package/dist/commands/graph.d.cts +21 -0
  73. package/dist/commands/graph.js +1 -0
  74. package/dist/commands/inject.cjs +1636 -0
  75. package/dist/commands/inject.d.cts +2 -0
  76. package/dist/commands/inject.d.ts +1 -1
  77. package/dist/commands/inject.js +4 -2
  78. package/dist/commands/kanban.cjs +884 -0
  79. package/dist/commands/kanban.d.cts +63 -0
  80. package/dist/commands/kanban.js +4 -3
  81. package/dist/commands/link.cjs +965 -0
  82. package/dist/commands/link.d.cts +11 -0
  83. package/dist/commands/link.js +1 -0
  84. package/dist/commands/migrate-observations.cjs +362 -0
  85. package/dist/commands/migrate-observations.d.cts +19 -0
  86. package/dist/commands/migrate-observations.js +3 -2
  87. package/dist/commands/observe.cjs +4099 -0
  88. package/dist/commands/observe.d.cts +23 -0
  89. package/dist/commands/observe.d.ts +1 -0
  90. package/dist/commands/observe.js +11 -9
  91. package/dist/commands/project.cjs +1341 -0
  92. package/dist/commands/project.d.cts +85 -0
  93. package/dist/commands/project.js +5 -4
  94. package/dist/commands/rebuild.cjs +3136 -0
  95. package/dist/commands/rebuild.d.cts +11 -0
  96. package/dist/commands/rebuild.js +10 -8
  97. package/dist/commands/recover.cjs +361 -0
  98. package/dist/commands/recover.d.cts +38 -0
  99. package/dist/commands/recover.js +3 -2
  100. package/dist/commands/reflect.cjs +1008 -0
  101. package/dist/commands/reflect.d.cts +11 -0
  102. package/dist/commands/reflect.js +6 -4
  103. package/dist/commands/repair-session.cjs +457 -0
  104. package/dist/commands/repair-session.d.cts +38 -0
  105. package/dist/commands/repair-session.js +1 -0
  106. package/dist/commands/replay.cjs +4103 -0
  107. package/dist/commands/replay.d.cts +16 -0
  108. package/dist/commands/replay.js +12 -10
  109. package/dist/commands/session-recap.cjs +353 -0
  110. package/dist/commands/session-recap.d.cts +27 -0
  111. package/dist/commands/session-recap.js +1 -0
  112. package/dist/commands/setup.cjs +1345 -0
  113. package/dist/commands/setup.d.cts +100 -0
  114. package/dist/commands/setup.d.ts +90 -2
  115. package/dist/commands/setup.js +21 -2
  116. package/dist/commands/shell-init.cjs +75 -0
  117. package/dist/commands/shell-init.d.cts +7 -0
  118. package/dist/commands/shell-init.js +2 -0
  119. package/dist/commands/sleep.cjs +6028 -0
  120. package/dist/commands/sleep.d.cts +36 -0
  121. package/dist/commands/sleep.d.ts +1 -1
  122. package/dist/commands/sleep.js +17 -15
  123. package/dist/commands/status.cjs +2736 -0
  124. package/dist/commands/status.d.cts +52 -0
  125. package/dist/commands/status.js +12 -10
  126. package/dist/commands/tailscale.cjs +1532 -0
  127. package/dist/commands/tailscale.d.cts +52 -0
  128. package/dist/commands/tailscale.js +1 -0
  129. package/dist/commands/task.cjs +1236 -0
  130. package/dist/commands/task.d.cts +97 -0
  131. package/dist/commands/task.js +4 -3
  132. package/dist/commands/template.cjs +457 -0
  133. package/dist/commands/template.d.cts +36 -0
  134. package/dist/commands/template.js +2 -1
  135. package/dist/commands/wake.cjs +2626 -0
  136. package/dist/commands/wake.d.cts +22 -0
  137. package/dist/commands/wake.d.ts +1 -1
  138. package/dist/commands/wake.js +10 -9
  139. package/dist/context-BUGaWpyL.d.cts +46 -0
  140. package/dist/index.cjs +14526 -0
  141. package/dist/index.d.cts +858 -0
  142. package/dist/index.d.ts +192 -7
  143. package/dist/index.js +101 -75
  144. package/dist/{inject-x65KXWPk.d.ts → inject-Bzi5E-By.d.cts} +1 -1
  145. package/dist/inject-Bzi5E-By.d.ts +137 -0
  146. package/dist/lib/auto-linker.cjs +176 -0
  147. package/dist/lib/auto-linker.d.cts +26 -0
  148. package/dist/lib/auto-linker.js +1 -0
  149. package/dist/lib/canvas-layout.cjs +136 -0
  150. package/dist/lib/canvas-layout.d.cts +31 -0
  151. package/dist/lib/canvas-layout.d.ts +16 -100
  152. package/dist/lib/canvas-layout.js +78 -20
  153. package/dist/lib/config.cjs +78 -0
  154. package/dist/lib/config.d.cts +11 -0
  155. package/dist/lib/config.js +1 -0
  156. package/dist/lib/entity-index.cjs +84 -0
  157. package/dist/lib/entity-index.d.cts +26 -0
  158. package/dist/lib/entity-index.js +1 -0
  159. package/dist/lib/project-utils.cjs +864 -0
  160. package/dist/lib/project-utils.d.cts +97 -0
  161. package/dist/lib/project-utils.js +4 -3
  162. package/dist/lib/session-repair.cjs +239 -0
  163. package/dist/lib/session-repair.d.cts +110 -0
  164. package/dist/lib/session-repair.js +1 -0
  165. package/dist/lib/session-utils.cjs +209 -0
  166. package/dist/lib/session-utils.d.cts +63 -0
  167. package/dist/lib/session-utils.js +1 -0
  168. package/dist/lib/tailscale.cjs +1183 -0
  169. package/dist/lib/tailscale.d.cts +225 -0
  170. package/dist/lib/tailscale.js +1 -0
  171. package/dist/lib/task-utils.cjs +1137 -0
  172. package/dist/lib/task-utils.d.cts +208 -0
  173. package/dist/lib/task-utils.js +3 -2
  174. package/dist/lib/template-engine.cjs +47 -0
  175. package/dist/lib/template-engine.d.cts +11 -0
  176. package/dist/lib/template-engine.js +1 -0
  177. package/dist/lib/webdav.cjs +568 -0
  178. package/dist/lib/webdav.d.cts +109 -0
  179. package/dist/lib/webdav.js +1 -0
  180. package/dist/plugin/index.cjs +1907 -0
  181. package/dist/plugin/index.d.cts +36 -0
  182. package/dist/plugin/index.d.ts +36 -0
  183. package/dist/plugin/index.js +572 -0
  184. package/dist/plugin/inject.cjs +356 -0
  185. package/dist/plugin/inject.d.cts +54 -0
  186. package/dist/plugin/inject.d.ts +54 -0
  187. package/dist/plugin/inject.js +17 -0
  188. package/dist/plugin/observe.cjs +631 -0
  189. package/dist/plugin/observe.d.cts +39 -0
  190. package/dist/plugin/observe.d.ts +39 -0
  191. package/dist/plugin/observe.js +18 -0
  192. package/dist/plugin/templates.cjs +593 -0
  193. package/dist/plugin/templates.d.cts +52 -0
  194. package/dist/plugin/templates.d.ts +52 -0
  195. package/dist/plugin/templates.js +25 -0
  196. package/dist/plugin/types.cjs +18 -0
  197. package/dist/plugin/types.d.cts +209 -0
  198. package/dist/plugin/types.d.ts +209 -0
  199. package/dist/plugin/types.js +0 -0
  200. package/dist/plugin/vault.cjs +927 -0
  201. package/dist/plugin/vault.d.cts +68 -0
  202. package/dist/plugin/vault.d.ts +68 -0
  203. package/dist/plugin/vault.js +22 -0
  204. package/dist/{types-C74wgGL1.d.ts → types-Y2_Um2Ls.d.cts} +44 -1
  205. package/dist/types-Y2_Um2Ls.d.ts +205 -0
  206. package/hooks/clawvault/handler.js +70 -7
  207. package/hooks/clawvault/handler.test.js +91 -0
  208. package/openclaw.plugin.json +56 -0
  209. package/package.json +17 -7
  210. package/templates/memory-event.md +67 -0
  211. package/templates/party.md +63 -0
  212. package/templates/primitive-registry.yaml +551 -0
  213. package/templates/run.md +68 -0
  214. package/templates/trigger.md +68 -0
  215. package/templates/workspace.md +50 -0
  216. package/dashboard/lib/graph-diff.js +0 -104
  217. package/dashboard/lib/graph-diff.test.js +0 -75
  218. package/dashboard/lib/vault-parser.js +0 -556
  219. package/dashboard/lib/vault-parser.test.js +0 -254
  220. package/dashboard/public/app.js +0 -796
  221. package/dashboard/public/index.html +0 -52
  222. package/dashboard/public/styles.css +0 -221
  223. package/dashboard/server.js +0 -374
  224. package/dist/chunk-MAKNAHAW.js +0 -375
  225. package/dist/chunk-MDIH26GC.js +0 -183
  226. package/dist/chunk-MGDEINGP.js +0 -99
  227. package/dist/chunk-RVYA52PY.js +0 -363
  228. package/dist/chunk-TLGBDTYT.js +0 -33
  229. package/dist/commands/canvas.d.ts +0 -15
  230. package/dist/commands/canvas.js +0 -199
  231. package/dist/commands/sync-bd.d.ts +0 -10
  232. package/dist/commands/sync-bd.js +0 -9
@@ -1,254 +0,0 @@
1
- import * as fs from 'node:fs';
2
- import * as os from 'node:os';
3
- import * as path from 'node:path';
4
- import { describe, expect, it } from 'vitest';
5
- import { buildVaultGraph } from './vault-parser.js';
6
-
7
- function makeTempVault() {
8
- return fs.mkdtempSync(path.join(os.tmpdir(), 'clawvault-dashboard-'));
9
- }
10
-
11
- function writeVaultFile(root, relativePath, content) {
12
- const fullPath = path.join(root, relativePath);
13
- fs.mkdirSync(path.dirname(fullPath), { recursive: true });
14
- fs.writeFileSync(fullPath, content, 'utf8');
15
- }
16
-
17
- describe('buildVaultGraph', () => {
18
- it('builds nodes and edges from markdown wiki-links', async () => {
19
- const vaultPath = makeTempVault();
20
- try {
21
- writeVaultFile(
22
- vaultPath,
23
- 'decisions/use-clawvault.md',
24
- `---
25
- title: Use ClawVault
26
- tags: [architecture, memory]
27
- ---
28
- Linked to [[projects/clawvault|ClawVault Project]] and [[missing-note]].
29
- `
30
- );
31
- writeVaultFile(vaultPath, 'projects/clawvault.md', '# ClawVault');
32
-
33
- const graph = await buildVaultGraph(vaultPath);
34
- const decisionNode = graph.nodes.find((node) => node.id === 'decisions/use-clawvault');
35
- const unresolvedNode = graph.nodes.find((node) => node.id === 'missing-note');
36
-
37
- expect(decisionNode).toMatchObject({
38
- title: 'Use ClawVault',
39
- category: 'decisions',
40
- tags: ['architecture', 'memory'],
41
- type: 'decision'
42
- });
43
- expect(graph.edges).toEqual(expect.arrayContaining([
44
- expect.objectContaining({
45
- source: 'decisions/use-clawvault',
46
- target: 'projects/clawvault',
47
- type: 'wiki_link'
48
- }),
49
- expect.objectContaining({
50
- source: 'decisions/use-clawvault',
51
- target: 'missing-note',
52
- type: 'wiki_link'
53
- }),
54
- expect.objectContaining({
55
- source: 'decisions/use-clawvault',
56
- target: 'tag:architecture',
57
- type: 'tag'
58
- })
59
- ]));
60
- expect(unresolvedNode).toMatchObject({
61
- missing: true,
62
- category: 'unresolved'
63
- });
64
- expect(graph.stats.edgeTypeCounts.wiki_link).toBeGreaterThanOrEqual(2);
65
- expect(graph.stats.edgeTypeCounts.tag).toBeGreaterThanOrEqual(1);
66
- } finally {
67
- fs.rmSync(vaultPath, { recursive: true, force: true });
68
- }
69
- });
70
-
71
- it('resolves basename links when there is a unique match', async () => {
72
- const vaultPath = makeTempVault();
73
- try {
74
- writeVaultFile(vaultPath, 'research/notes.md', 'See [[clawvault]].');
75
- writeVaultFile(vaultPath, 'projects/clawvault.md', '# ClawVault');
76
-
77
- const graph = await buildVaultGraph(vaultPath);
78
-
79
- expect(graph.edges).toEqual(expect.arrayContaining([
80
- expect.objectContaining({
81
- source: 'research/notes',
82
- target: 'projects/clawvault',
83
- type: 'wiki_link'
84
- })
85
- ]));
86
- } finally {
87
- fs.rmSync(vaultPath, { recursive: true, force: true });
88
- }
89
- });
90
-
91
- it('emits frontmatter relation edges with labels', async () => {
92
- const vaultPath = makeTempVault();
93
- try {
94
- writeVaultFile(
95
- vaultPath,
96
- 'decisions/db.md',
97
- `---
98
- related:
99
- - projects/clawvault
100
- owner: people/alice
101
- ---
102
- Decision details`
103
- );
104
- writeVaultFile(vaultPath, 'projects/clawvault.md', '# ClawVault');
105
- writeVaultFile(vaultPath, 'people/alice.md', '# Alice');
106
-
107
- const graph = await buildVaultGraph(vaultPath);
108
- expect(graph.edges).toEqual(expect.arrayContaining([
109
- expect.objectContaining({
110
- source: 'decisions/db',
111
- target: 'projects/clawvault',
112
- type: 'frontmatter_relation',
113
- label: 'related'
114
- }),
115
- expect.objectContaining({
116
- source: 'decisions/db',
117
- target: 'people/alice',
118
- type: 'frontmatter_relation',
119
- label: 'owner'
120
- })
121
- ]));
122
- } finally {
123
- fs.rmSync(vaultPath, { recursive: true, force: true });
124
- }
125
- });
126
-
127
- it('loads graph data from memory graph index when present', async () => {
128
- const vaultPath = makeTempVault();
129
- try {
130
- writeVaultFile(vaultPath, 'decisions/use-clawvault.md', '# Placeholder');
131
- writeVaultFile(vaultPath, 'projects/clawvault.md', '# Placeholder project');
132
- const decisionMtime = fs.statSync(path.join(vaultPath, 'decisions/use-clawvault.md')).mtimeMs;
133
- const projectMtime = fs.statSync(path.join(vaultPath, 'projects/clawvault.md')).mtimeMs;
134
- const indexPath = path.join(vaultPath, '.clawvault', 'graph-index.json');
135
- fs.mkdirSync(path.dirname(indexPath), { recursive: true });
136
- fs.writeFileSync(
137
- indexPath,
138
- JSON.stringify({
139
- schemaVersion: 1,
140
- files: {
141
- 'decisions/use-clawvault.md': {
142
- relativePath: 'decisions/use-clawvault.md',
143
- mtimeMs: decisionMtime
144
- },
145
- 'projects/clawvault.md': {
146
- relativePath: 'projects/clawvault.md',
147
- mtimeMs: projectMtime
148
- }
149
- },
150
- graph: {
151
- nodes: [
152
- {
153
- id: 'note:decisions/use-clawvault',
154
- title: 'Use ClawVault',
155
- type: 'decision',
156
- category: 'decisions',
157
- tags: ['architecture'],
158
- path: 'decisions/use-clawvault.md',
159
- missing: false,
160
- degree: 1
161
- },
162
- {
163
- id: 'note:projects/clawvault',
164
- title: 'ClawVault Project',
165
- type: 'project',
166
- category: 'projects',
167
- tags: [],
168
- path: 'projects/clawvault.md',
169
- missing: false,
170
- degree: 1
171
- }
172
- ],
173
- edges: [
174
- {
175
- source: 'note:decisions/use-clawvault',
176
- target: 'note:projects/clawvault',
177
- type: 'frontmatter_relation',
178
- label: 'related'
179
- }
180
- ],
181
- stats: { generatedAt: '2026-02-13T00:00:00.000Z' }
182
- }
183
- }),
184
- 'utf8'
185
- );
186
-
187
- const graph = await buildVaultGraph(vaultPath);
188
- expect(graph.nodes.find((node) => node.id === 'decisions/use-clawvault')).toBeTruthy();
189
- expect(graph.edges).toEqual([
190
- {
191
- source: 'decisions/use-clawvault',
192
- target: 'projects/clawvault',
193
- type: 'frontmatter_relation',
194
- label: 'related'
195
- }
196
- ]);
197
- expect(graph.stats.fileCount).toBe(2);
198
- } finally {
199
- fs.rmSync(vaultPath, { recursive: true, force: true });
200
- }
201
- });
202
-
203
- it('falls back to markdown parsing when memory graph index is stale', async () => {
204
- const vaultPath = makeTempVault();
205
- try {
206
- writeVaultFile(vaultPath, 'projects/clawvault.md', '# ClawVault');
207
- writeVaultFile(vaultPath, 'decisions/use-clawvault.md', 'See [[projects/clawvault]].');
208
-
209
- const indexPath = path.join(vaultPath, '.clawvault', 'graph-index.json');
210
- fs.mkdirSync(path.dirname(indexPath), { recursive: true });
211
- fs.writeFileSync(
212
- indexPath,
213
- JSON.stringify({
214
- schemaVersion: 1,
215
- generatedAt: '2026-02-13T00:00:00.000Z',
216
- files: {
217
- 'decisions/use-clawvault.md': { relativePath: 'decisions/use-clawvault.md', mtimeMs: 1 },
218
- 'projects/clawvault.md': { relativePath: 'projects/clawvault.md', mtimeMs: 1 }
219
- },
220
- graph: {
221
- nodes: [
222
- {
223
- id: 'note:decisions/use-clawvault',
224
- title: 'Old node',
225
- type: 'decision',
226
- category: 'decisions',
227
- tags: [],
228
- path: 'decisions/use-clawvault.md',
229
- missing: false,
230
- degree: 0
231
- }
232
- ],
233
- edges: [],
234
- stats: { generatedAt: '2026-02-13T00:00:00.000Z' }
235
- }
236
- }),
237
- 'utf8'
238
- );
239
-
240
- const graph = await buildVaultGraph(vaultPath);
241
- const node = graph.nodes.find((candidate) => candidate.id === 'decisions/use-clawvault');
242
- expect(node?.title).not.toBe('Old node');
243
- expect(graph.edges).toEqual(expect.arrayContaining([
244
- expect.objectContaining({
245
- source: 'decisions/use-clawvault',
246
- target: 'projects/clawvault',
247
- type: 'wiki_link'
248
- })
249
- ]));
250
- } finally {
251
- fs.rmSync(vaultPath, { recursive: true, force: true });
252
- }
253
- });
254
- });