clawvault 2.6.0 → 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-K3CDT7IH.js → chunk-E7MFQB6D.js} +61 -20
  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-YOSEUUNB.js → chunk-H34S76MB.js} +6 -6
  24. package/dist/{chunk-4TE4JMLA.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-2YDBJS7M.js → chunk-SJSFRIYS.js} +1 -1
  34. package/dist/{chunk-GSD4ALSI.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 +12 -11
  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-HA5M6KJB.js +0 -33
  225. package/dist/chunk-MAKNAHAW.js +0 -375
  226. package/dist/chunk-MDIH26GC.js +0 -183
  227. package/dist/chunk-MGDEINGP.js +0 -99
  228. package/dist/chunk-RVYA52PY.js +0 -363
  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
@@ -0,0 +1,50 @@
1
+ ---
2
+ primitive: workspace
3
+ description: Canonical schema for a shared ClawVault workspace.
4
+ fields:
5
+ type:
6
+ type: string
7
+ required: true
8
+ default: workspace
9
+ description: Primitive discriminator for workspace documents.
10
+ status:
11
+ type: string
12
+ required: true
13
+ default: active
14
+ enum:
15
+ - active
16
+ - paused
17
+ - archived
18
+ description: Workspace lifecycle state.
19
+ created:
20
+ type: datetime
21
+ required: true
22
+ default: "{{datetime}}"
23
+ description: ISO timestamp when the workspace was created.
24
+ updated:
25
+ type: datetime
26
+ required: true
27
+ default: "{{datetime}}"
28
+ description: ISO timestamp when the workspace was last updated.
29
+ owner:
30
+ type: string
31
+ description: Primary workspace owner.
32
+ parties:
33
+ type: string[]
34
+ description: Related party slugs.
35
+ policy_profile:
36
+ type: string
37
+ description: Default policy profile for automation.
38
+ tags:
39
+ type: string[]
40
+ description: Labels used for filtering.
41
+ description:
42
+ type: string
43
+ description: One-line summary of workspace intent.
44
+ ---
45
+
46
+ # {{title}}
47
+
48
+ {{links_line}}
49
+
50
+ {{content}}
@@ -1,104 +0,0 @@
1
- function toNodeSignature(node) {
2
- return JSON.stringify({
3
- title: node.title,
4
- category: node.category,
5
- tags: Array.isArray(node.tags) ? [...node.tags].sort() : [],
6
- path: node.path,
7
- missing: Boolean(node.missing),
8
- degree: Number(node.degree ?? 0)
9
- });
10
- }
11
-
12
- function toEdgeKey(edge) {
13
- const type = edge.type ?? '';
14
- const label = edge.label ?? '';
15
- return `${edge.source}=>${edge.target}:${type}:${label}`;
16
- }
17
-
18
- /**
19
- * Compute an efficient patch between graph snapshots.
20
- * @param {{nodes: Array<object>, edges: Array<object>, stats?: object}} previousGraph
21
- * @param {{nodes: Array<object>, edges: Array<object>, stats?: object}} nextGraph
22
- */
23
- export function diffGraphs(previousGraph, nextGraph) {
24
- const previousNodes = previousGraph?.nodes ?? [];
25
- const nextNodes = nextGraph?.nodes ?? [];
26
- const previousEdges = previousGraph?.edges ?? [];
27
- const nextEdges = nextGraph?.edges ?? [];
28
-
29
- const previousNodeById = new Map(previousNodes.map((node) => [node.id, node]));
30
- const nextNodeById = new Map(nextNodes.map((node) => [node.id, node]));
31
-
32
- const addedNodes = [];
33
- const updatedNodes = [];
34
- const removedNodeIds = [];
35
-
36
- for (const [nodeId, nextNode] of nextNodeById.entries()) {
37
- const previousNode = previousNodeById.get(nodeId);
38
- if (!previousNode) {
39
- addedNodes.push(nextNode);
40
- continue;
41
- }
42
- if (toNodeSignature(previousNode) !== toNodeSignature(nextNode)) {
43
- updatedNodes.push(nextNode);
44
- }
45
- }
46
-
47
- for (const nodeId of previousNodeById.keys()) {
48
- if (!nextNodeById.has(nodeId)) {
49
- removedNodeIds.push(nodeId);
50
- }
51
- }
52
-
53
- const previousEdgeByKey = new Map(previousEdges.map((edge) => [toEdgeKey(edge), edge]));
54
- const nextEdgeByKey = new Map(nextEdges.map((edge) => [toEdgeKey(edge), edge]));
55
- const addedEdges = [];
56
- const removedEdges = [];
57
-
58
- for (const [edgeKey, edge] of nextEdgeByKey.entries()) {
59
- if (!previousEdgeByKey.has(edgeKey)) {
60
- addedEdges.push(edge);
61
- }
62
- }
63
-
64
- for (const [edgeKey, edge] of previousEdgeByKey.entries()) {
65
- if (!nextEdgeByKey.has(edgeKey)) {
66
- removedEdges.push(edge);
67
- }
68
- }
69
-
70
- const touchedNodeIds = new Set();
71
- for (const node of addedNodes) {
72
- touchedNodeIds.add(node.id);
73
- }
74
- for (const node of updatedNodes) {
75
- touchedNodeIds.add(node.id);
76
- }
77
- for (const nodeId of removedNodeIds) {
78
- touchedNodeIds.add(nodeId);
79
- }
80
- for (const edge of addedEdges) {
81
- touchedNodeIds.add(edge.source);
82
- touchedNodeIds.add(edge.target);
83
- }
84
- for (const edge of removedEdges) {
85
- touchedNodeIds.add(edge.source);
86
- touchedNodeIds.add(edge.target);
87
- }
88
-
89
- return {
90
- addedNodes,
91
- updatedNodes,
92
- removedNodeIds,
93
- addedEdges,
94
- removedEdges,
95
- changedNodeIds: Array.from(touchedNodeIds).sort((a, b) => a.localeCompare(b)),
96
- stats: nextGraph?.stats ?? null,
97
- hasChanges:
98
- addedNodes.length > 0 ||
99
- updatedNodes.length > 0 ||
100
- removedNodeIds.length > 0 ||
101
- addedEdges.length > 0 ||
102
- removedEdges.length > 0
103
- };
104
- }
@@ -1,75 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { diffGraphs } from './graph-diff.js';
3
-
4
- describe('diffGraphs', () => {
5
- it('detects node and edge additions, updates, and removals', () => {
6
- const previous = {
7
- nodes: [
8
- { id: 'a', title: 'A', category: 'root', tags: [], path: 'a.md', missing: false, degree: 1 },
9
- { id: 'b', title: 'B', category: 'root', tags: ['x'], path: 'b.md', missing: false, degree: 1 },
10
- { id: 'c', title: 'C', category: 'root', tags: [], path: null, missing: true, degree: 0 }
11
- ],
12
- edges: [{ source: 'a', target: 'b' }],
13
- stats: { nodeCount: 3, edgeCount: 1 }
14
- };
15
-
16
- const next = {
17
- nodes: [
18
- { id: 'a', title: 'A Updated', category: 'root', tags: [], path: 'a.md', missing: false, degree: 1 },
19
- { id: 'b', title: 'B', category: 'root', tags: ['x'], path: 'b.md', missing: false, degree: 2 },
20
- { id: 'd', title: 'D', category: 'projects', tags: [], path: 'd.md', missing: false, degree: 1 }
21
- ],
22
- edges: [
23
- { source: 'a', target: 'b' },
24
- { source: 'b', target: 'd' }
25
- ],
26
- stats: { nodeCount: 3, edgeCount: 2 }
27
- };
28
-
29
- const patch = diffGraphs(previous, next);
30
-
31
- expect(patch.addedNodes).toEqual([next.nodes[2]]);
32
- expect(patch.updatedNodes).toEqual(expect.arrayContaining([next.nodes[0], next.nodes[1]]));
33
- expect(patch.removedNodeIds).toEqual(['c']);
34
- expect(patch.addedEdges).toEqual([{ source: 'b', target: 'd' }]);
35
- expect(patch.removedEdges).toEqual([]);
36
- expect(patch.changedNodeIds).toEqual(['a', 'b', 'c', 'd']);
37
- expect(patch.hasChanges).toBe(true);
38
- });
39
-
40
- it('returns hasChanges=false for equivalent graphs', () => {
41
- const graph = {
42
- nodes: [{ id: 'a', title: 'A', category: 'root', tags: ['t'], path: 'a.md', missing: false, degree: 0 }],
43
- edges: [],
44
- stats: { nodeCount: 1, edgeCount: 0 }
45
- };
46
-
47
- const patch = diffGraphs(graph, structuredClone(graph));
48
-
49
- expect(patch.hasChanges).toBe(false);
50
- expect(patch.addedNodes).toEqual([]);
51
- expect(patch.updatedNodes).toEqual([]);
52
- expect(patch.removedNodeIds).toEqual([]);
53
- expect(patch.addedEdges).toEqual([]);
54
- expect(patch.removedEdges).toEqual([]);
55
- });
56
-
57
- it('treats edge type changes as edge diff', () => {
58
- const previous = {
59
- nodes: [
60
- { id: 'a', title: 'A', category: 'root', tags: [], path: 'a.md', missing: false, degree: 1 },
61
- { id: 'b', title: 'B', category: 'root', tags: [], path: 'b.md', missing: false, degree: 1 }
62
- ],
63
- edges: [{ source: 'a', target: 'b', type: 'wiki_link' }]
64
- };
65
- const next = {
66
- nodes: previous.nodes,
67
- edges: [{ source: 'a', target: 'b', type: 'frontmatter_relation', label: 'related' }]
68
- };
69
-
70
- const patch = diffGraphs(previous, next);
71
- expect(patch.addedEdges).toEqual([{ source: 'a', target: 'b', type: 'frontmatter_relation', label: 'related' }]);
72
- expect(patch.removedEdges).toEqual([{ source: 'a', target: 'b', type: 'wiki_link' }]);
73
- expect(patch.hasChanges).toBe(true);
74
- });
75
- });