clawvault 3.0.0 → 3.1.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 (60) hide show
  1. package/README.md +156 -105
  2. package/bin/clawvault.js +0 -2
  3. package/bin/register-core-commands.js +20 -2
  4. package/dist/{chunk-3D6BCTP6.js → chunk-33UGEQRT.js} +70 -145
  5. package/dist/{chunk-ZVVFWOLW.js → chunk-3WRJEKN4.js} +1 -1
  6. package/dist/{chunk-DEFFDRVP.js → chunk-3ZIH425O.js} +3 -70
  7. package/dist/{chunk-K234IDRJ.js → chunk-D2H45LON.js} +1 -0
  8. package/dist/{chunk-YKTA5JOJ.js → chunk-H62BP7RI.js} +3 -3
  9. package/dist/{chunk-WGRQ6HDV.js → chunk-LI4O6NVK.js} +1 -1
  10. package/dist/{chunk-7R7O6STJ.js → chunk-OCGVIN3L.js} +1 -1
  11. package/dist/{chunk-GAJV4IGR.js → chunk-YCUNCH2I.js} +3 -7
  12. package/dist/cli/index.cjs +10 -1459
  13. package/dist/cli/index.js +5 -8
  14. package/dist/commands/compat.cjs +70 -145
  15. package/dist/commands/compat.js +1 -1
  16. package/dist/commands/context.cjs +1 -0
  17. package/dist/commands/context.js +3 -3
  18. package/dist/commands/doctor.cjs +68 -144
  19. package/dist/commands/doctor.js +4 -4
  20. package/dist/commands/embed.js +2 -2
  21. package/dist/commands/setup.cjs +2 -69
  22. package/dist/commands/setup.d.cts +0 -1
  23. package/dist/commands/setup.d.ts +0 -1
  24. package/dist/commands/setup.js +2 -2
  25. package/dist/commands/sleep.cjs +1 -0
  26. package/dist/commands/sleep.js +2 -2
  27. package/dist/commands/status.cjs +1 -0
  28. package/dist/commands/status.js +2 -2
  29. package/dist/commands/wake.cjs +1 -0
  30. package/dist/commands/wake.js +2 -2
  31. package/dist/index.cjs +447 -2600
  32. package/dist/index.d.cts +0 -4
  33. package/dist/index.d.ts +0 -4
  34. package/dist/index.js +8 -69
  35. package/dist/plugin/index.cjs +3 -3
  36. package/dist/plugin/index.js +10 -10
  37. package/package.json +11 -17
  38. package/bin/register-tailscale-commands.js +0 -106
  39. package/dist/chunk-IVRIKYFE.js +0 -520
  40. package/dist/chunk-THRJVD4L.js +0 -373
  41. package/dist/chunk-TIGW564L.js +0 -628
  42. package/dist/commands/tailscale.cjs +0 -1532
  43. package/dist/commands/tailscale.d.cts +0 -52
  44. package/dist/commands/tailscale.d.ts +0 -52
  45. package/dist/commands/tailscale.js +0 -26
  46. package/dist/lib/canvas-layout.cjs +0 -136
  47. package/dist/lib/canvas-layout.d.cts +0 -31
  48. package/dist/lib/canvas-layout.d.ts +0 -31
  49. package/dist/lib/canvas-layout.js +0 -92
  50. package/dist/lib/tailscale.cjs +0 -1183
  51. package/dist/lib/tailscale.d.cts +0 -225
  52. package/dist/lib/tailscale.d.ts +0 -225
  53. package/dist/lib/tailscale.js +0 -50
  54. package/dist/lib/webdav.cjs +0 -568
  55. package/dist/lib/webdav.d.cts +0 -109
  56. package/dist/lib/webdav.d.ts +0 -109
  57. package/dist/lib/webdav.js +0 -35
  58. package/hooks/clawvault/HOOK.md +0 -83
  59. package/hooks/clawvault/handler.js +0 -879
  60. package/hooks/clawvault/handler.test.js +0 -354
package/dist/index.d.cts CHANGED
@@ -20,12 +20,8 @@ export { findNearestVaultPath, getVaultPath, resolveVaultPath } from './lib/conf
20
20
  export { registerCliCommands } from './cli/index.cjs';
21
21
  import { TaskStatus } from './lib/task-utils.cjs';
22
22
  export { completeTask, listDependentTasks, listSubtasks, updateTask } from './lib/task-utils.cjs';
23
- export { CLAWVAULT_SERVE_PATH, DEFAULT_SERVE_PORT, ServeInstance, TailscalePeer, TailscaleServeConfig, TailscaleStatus, TailscaleSyncOptions, TailscaleSyncResult, VaultFileEntry, VaultManifest, checkPeerClawVault, compareManifests, configureTailscaleServe, discoverClawVaultPeers, fetchRemoteFile, fetchRemoteManifest, findPeer, generateVaultManifest, getOnlinePeers, getTailscaleStatus, getTailscaleVersion, hasTailscale, pushFileToRemote, resolvePeerIP, serveVault, stopTailscaleServe, syncWithPeer } from './lib/tailscale.cjs';
24
- export { TailscaleDiscoverCommandOptions, TailscaleServeCommandOptions, TailscaleStatusCommandOptions, TailscaleSyncCommandOptions, registerTailscaleCommands, registerTailscaleDiscoverCommand, registerTailscaleServeCommand, registerTailscaleStatusCommand, registerTailscaleSyncCommand, tailscaleDiscoverCommand, tailscaleServeCommand, tailscaleStatusCommand, tailscaleSyncCommand } from './commands/tailscale.cjs';
25
23
  export { TemplateVariables, buildTemplateVariables, renderTemplate } from './lib/template-engine.cjs';
26
24
  export { Project, ProjectFrontmatter, ProjectStatus, archiveProject, createProject, getProjectActivity, getProjectTasks, listProjects, readProject, updateProject } from './lib/project-utils.cjs';
27
- import 'child_process';
28
- import 'http';
29
25
 
30
26
  /**
31
27
  * ClawVault - The elephant's memory
package/dist/index.d.ts CHANGED
@@ -20,12 +20,8 @@ export { findNearestVaultPath, getVaultPath, resolveVaultPath } from './lib/conf
20
20
  export { registerCliCommands } from './cli/index.js';
21
21
  import { TaskStatus } from './lib/task-utils.js';
22
22
  export { completeTask, listDependentTasks, listSubtasks, updateTask } from './lib/task-utils.js';
23
- export { CLAWVAULT_SERVE_PATH, DEFAULT_SERVE_PORT, ServeInstance, TailscalePeer, TailscaleServeConfig, TailscaleStatus, TailscaleSyncOptions, TailscaleSyncResult, VaultFileEntry, VaultManifest, checkPeerClawVault, compareManifests, configureTailscaleServe, discoverClawVaultPeers, fetchRemoteFile, fetchRemoteManifest, findPeer, generateVaultManifest, getOnlinePeers, getTailscaleStatus, getTailscaleVersion, hasTailscale, pushFileToRemote, resolvePeerIP, serveVault, stopTailscaleServe, syncWithPeer } from './lib/tailscale.js';
24
- export { TailscaleDiscoverCommandOptions, TailscaleServeCommandOptions, TailscaleStatusCommandOptions, TailscaleSyncCommandOptions, registerTailscaleCommands, registerTailscaleDiscoverCommand, registerTailscaleServeCommand, registerTailscaleStatusCommand, registerTailscaleSyncCommand, tailscaleDiscoverCommand, tailscaleServeCommand, tailscaleStatusCommand, tailscaleSyncCommand } from './commands/tailscale.js';
25
23
  export { TemplateVariables, buildTemplateVariables, renderTemplate } from './lib/template-engine.js';
26
24
  export { Project, ProjectFrontmatter, ProjectStatus, archiveProject, createProject, getProjectActivity, getProjectTasks, listProjects, readProject, updateProject } from './lib/project-utils.js';
27
- import 'child_process';
28
- import 'http';
29
25
 
30
26
  /**
31
27
  * ClawVault - The elephant's memory
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  setupCommand
3
- } from "./chunk-DEFFDRVP.js";
3
+ } from "./chunk-3ZIH425O.js";
4
4
  import {
5
5
  rebuildCommand,
6
6
  registerRebuildCommand
@@ -16,7 +16,7 @@ import {
16
16
  } from "./chunk-ZKGY7WTT.js";
17
17
  import {
18
18
  doctor
19
- } from "./chunk-YKTA5JOJ.js";
19
+ } from "./chunk-H62BP7RI.js";
20
20
  import "./chunk-7ZRP733D.js";
21
21
  import {
22
22
  graphCommand,
@@ -43,40 +43,7 @@ import {
43
43
  registerCliCommands,
44
44
  registerReweaveCommand,
45
45
  reweaveCommand
46
- } from "./chunk-GAJV4IGR.js";
47
- import {
48
- registerTailscaleCommands,
49
- registerTailscaleDiscoverCommand,
50
- registerTailscaleServeCommand,
51
- registerTailscaleStatusCommand,
52
- registerTailscaleSyncCommand,
53
- tailscaleDiscoverCommand,
54
- tailscaleServeCommand,
55
- tailscaleStatusCommand,
56
- tailscaleSyncCommand
57
- } from "./chunk-THRJVD4L.js";
58
- import {
59
- CLAWVAULT_SERVE_PATH,
60
- DEFAULT_SERVE_PORT,
61
- checkPeerClawVault,
62
- compareManifests,
63
- configureTailscaleServe,
64
- discoverClawVaultPeers,
65
- fetchRemoteFile,
66
- fetchRemoteManifest,
67
- findPeer,
68
- generateVaultManifest,
69
- getOnlinePeers,
70
- getTailscaleStatus,
71
- getTailscaleVersion,
72
- hasTailscale,
73
- pushFileToRemote,
74
- resolvePeerIP,
75
- serveVault,
76
- stopTailscaleServe,
77
- syncWithPeer
78
- } from "./chunk-TIGW564L.js";
79
- import "./chunk-IVRIKYFE.js";
46
+ } from "./chunk-YCUNCH2I.js";
80
47
  import {
81
48
  SessionWatcher,
82
49
  observeCommand,
@@ -116,7 +83,7 @@ import "./chunk-HRLWZGMA.js";
116
83
  import {
117
84
  embedCommand,
118
85
  registerEmbedCommand
119
- } from "./chunk-7R7O6STJ.js";
86
+ } from "./chunk-OCGVIN3L.js";
120
87
  import {
121
88
  buildInjectionResult,
122
89
  deterministicInjectMatches,
@@ -177,7 +144,7 @@ import {
177
144
  checkOpenClawCompatibility,
178
145
  compatCommand,
179
146
  compatibilityExitCode
180
- } from "./chunk-3D6BCTP6.js";
147
+ } from "./chunk-33UGEQRT.js";
181
148
  import {
182
149
  buildContext,
183
150
  contextCommand,
@@ -186,12 +153,12 @@ import {
186
153
  normalizeContextProfileInput,
187
154
  registerContextCommand,
188
155
  resolveContextProfile
189
- } from "./chunk-ZVVFWOLW.js";
156
+ } from "./chunk-3WRJEKN4.js";
190
157
  import {
191
158
  ClawVault,
192
159
  createVault,
193
160
  findVault
194
- } from "./chunk-WGRQ6HDV.js";
161
+ } from "./chunk-LI4O6NVK.js";
195
162
  import {
196
163
  QMD_INSTALL_COMMAND,
197
164
  QMD_INSTALL_URL,
@@ -215,7 +182,7 @@ import {
215
182
  reweave,
216
183
  sentenceChunk,
217
184
  stripSupersededObservations
218
- } from "./chunk-K234IDRJ.js";
185
+ } from "./chunk-D2H45LON.js";
219
186
  import {
220
187
  DEFAULT_CATEGORIES,
221
188
  DEFAULT_CONFIG,
@@ -248,12 +215,10 @@ function registerCommanderCommands(program) {
248
215
  return registerCliCommands(program);
249
216
  }
250
217
  export {
251
- CLAWVAULT_SERVE_PATH,
252
218
  ClawVault,
253
219
  Compressor,
254
220
  DEFAULT_CATEGORIES,
255
221
  DEFAULT_CONFIG,
256
- DEFAULT_SERVE_PORT,
257
222
  MEMORY_GRAPH_SCHEMA_VERSION,
258
223
  MEMORY_TYPES,
259
224
  Observer,
@@ -280,19 +245,15 @@ export {
280
245
  buildTemplateVariables,
281
246
  buildTransitionEvent,
282
247
  checkOpenClawCompatibility,
283
- checkPeerClawVault,
284
248
  classifyQuestion,
285
- compareManifests,
286
249
  compatCommand,
287
250
  compatibilityExitCode,
288
251
  completeTask,
289
- configureTailscaleServe,
290
252
  contextCommand,
291
253
  countBlockedTransitions,
292
254
  createProject,
293
255
  createVault,
294
256
  deterministicInjectMatches,
295
- discoverClawVaultPeers,
296
257
  doctor,
297
258
  embedCommand,
298
259
  entitySimilarity,
@@ -302,34 +263,26 @@ export {
302
263
  extractPreferences,
303
264
  extractTags,
304
265
  extractWikiLinks,
305
- fetchRemoteFile,
306
- fetchRemoteManifest,
307
266
  filterSuperseded,
308
267
  findNearestVaultPath,
309
- findPeer,
310
268
  findVault,
311
269
  formatContextMarkdown,
312
270
  formatKanbanCard,
313
271
  formatSessionRecapMarkdown,
314
272
  formatTransitionsTable,
315
273
  generateKanbanMarkdown,
316
- generateVaultManifest,
317
274
  getConfig,
318
275
  getConfigValue,
319
276
  getMemoryGraph,
320
277
  getObserverStaleness,
321
- getOnlinePeers,
322
278
  getProjectActivity,
323
279
  getProjectTasks,
324
280
  getScaledObservationThresholdBytes,
325
281
  getSupersessionInfo,
326
- getTailscaleStatus,
327
- getTailscaleVersion,
328
282
  getVaultPath,
329
283
  graphCommand,
330
284
  graphSummary,
331
285
  hasQmd,
332
- hasTailscale,
333
286
  importKanbanBoard,
334
287
  indexInjectableItems,
335
288
  inferContextProfile,
@@ -353,7 +306,6 @@ export {
353
306
  parseKanbanMarkdown,
354
307
  parseSessionFile,
355
308
  parseSessionSourceLabel,
356
- pushFileToRemote,
357
309
  qmdEmbed,
358
310
  qmdUpdate,
359
311
  queryTransitions,
@@ -373,11 +325,6 @@ export {
373
325
  registerReflectCommand,
374
326
  registerReplayCommand,
375
327
  registerReweaveCommand,
376
- registerTailscaleCommands,
377
- registerTailscaleDiscoverCommand,
378
- registerTailscaleServeCommand,
379
- registerTailscaleStatusCommand,
380
- registerTailscaleSyncCommand,
381
328
  removeRouteRule,
382
329
  renderTemplate,
383
330
  replayCommand,
@@ -385,25 +332,17 @@ export {
385
332
  resetConfig,
386
333
  resolveContextProfile,
387
334
  resolveLlmProvider,
388
- resolvePeerIP,
389
335
  resolveVaultPath,
390
336
  reweave,
391
337
  reweaveCommand,
392
338
  runPromptInjection,
393
339
  runReflection,
394
340
  sentenceChunk,
395
- serveVault,
396
341
  sessionRecapCommand,
397
342
  setConfigValue,
398
343
  setupCommand,
399
- stopTailscaleServe,
400
344
  stripSupersededObservations,
401
345
  syncKanbanBoard,
402
- syncWithPeer,
403
- tailscaleDiscoverCommand,
404
- tailscaleServeCommand,
405
- tailscaleStatusCommand,
406
- tailscaleSyncCommand,
407
346
  testRouteRule,
408
347
  updateProject,
409
348
  updateTask
@@ -1460,7 +1460,7 @@ var clawvaultPlugin = {
1460
1460
  id: "clawvault",
1461
1461
  name: "ClawVault Memory",
1462
1462
  description: "Template-driven observational memory with hybrid search. Memories are captured automatically from conversations and classified against template schemas.",
1463
- version: "2.2.0",
1463
+ version: "3.1.0",
1464
1464
  kind: "memory",
1465
1465
  register(api) {
1466
1466
  const vaultPath = resolveVaultPath(api.pluginConfig);
@@ -1552,7 +1552,7 @@ var clawvaultPlugin = {
1552
1552
  vectors: vectorCount,
1553
1553
  autoRecall,
1554
1554
  autoCapture,
1555
- version: "2.2.0",
1555
+ version: "3.1.0",
1556
1556
  templateSchemas: templateRegistry?.schemas.size ?? 0
1557
1557
  }, null, 2) }]
1558
1558
  };
@@ -1807,7 +1807,7 @@ Call again with confirm=true to delete the top match.` }],
1807
1807
  const config = getVaultConfig(vaultPath);
1808
1808
  console.log(JSON.stringify({
1809
1809
  vault: vaultPath,
1810
- version: "2.2.0",
1810
+ version: "3.1.0",
1811
1811
  templateSchemas: templateRegistry?.schemas.size ?? 0,
1812
1812
  ...config
1813
1813
  }, null, 2));
@@ -1,10 +1,3 @@
1
- import {
2
- appendToLedger,
3
- batchWriteObservations,
4
- ensureVaultStructure,
5
- writeObservation,
6
- writeVaultFile
7
- } from "../chunk-MFM6K7PU.js";
8
1
  import {
9
2
  buildFullContext,
10
3
  buildPreferenceContext,
@@ -20,6 +13,13 @@ import {
20
13
  isObservable,
21
14
  processMessageForObservations
22
15
  } from "../chunk-6U6MK36V.js";
16
+ import {
17
+ appendToLedger,
18
+ batchWriteObservations,
19
+ ensureVaultStructure,
20
+ writeObservation,
21
+ writeVaultFile
22
+ } from "../chunk-MFM6K7PU.js";
23
23
  import {
24
24
  classifyText,
25
25
  getAllSchemas,
@@ -125,7 +125,7 @@ var clawvaultPlugin = {
125
125
  id: "clawvault",
126
126
  name: "ClawVault Memory",
127
127
  description: "Template-driven observational memory with hybrid search. Memories are captured automatically from conversations and classified against template schemas.",
128
- version: "2.2.0",
128
+ version: "3.1.0",
129
129
  kind: "memory",
130
130
  register(api) {
131
131
  const vaultPath = resolveVaultPath(api.pluginConfig);
@@ -217,7 +217,7 @@ var clawvaultPlugin = {
217
217
  vectors: vectorCount,
218
218
  autoRecall,
219
219
  autoCapture,
220
- version: "2.2.0",
220
+ version: "3.1.0",
221
221
  templateSchemas: templateRegistry?.schemas.size ?? 0
222
222
  }, null, 2) }]
223
223
  };
@@ -472,7 +472,7 @@ Call again with confirm=true to delete the top match.` }],
472
472
  const config = getVaultConfig(vaultPath);
473
473
  console.log(JSON.stringify({
474
474
  vault: vaultPath,
475
- version: "2.2.0",
475
+ version: "3.1.0",
476
476
  templateSchemas: templateRegistry?.schemas.size ?? 0,
477
477
  ...config
478
478
  }, null, 2));
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "clawvault",
3
- "version": "3.0.0",
4
- "description": "Structured memory system for AI agents \u2014 typed storage, knowledge graph, context profiles, canvas dashboards, neural graph themes, and Obsidian-native task views. An elephant never forgets. \ud83d\udc18",
3
+ "version": "3.1.0",
4
+ "description": "Structured memory for AI agents. Typed markdown primitives, hybrid search, auto-capture, and Obsidian-native views. OpenClaw plugin + standalone CLI.",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",
7
7
  "module": "dist/index.js",
@@ -25,17 +25,15 @@
25
25
  "dist",
26
26
  "bin",
27
27
  "templates",
28
- "hooks",
29
28
  "openclaw.plugin.json"
30
29
  ],
31
30
  "openclaw": {
32
- "hooks": [
33
- "./hooks/clawvault"
34
- ],
35
- "plugin": "./openclaw.plugin.json"
31
+ "extensions": [
32
+ "./dist/plugin/index.js"
33
+ ]
36
34
  },
37
35
  "scripts": {
38
- "build": "tsup src/commands/archive.ts src/commands/backlog.ts src/commands/blocked.ts src/commands/checkpoint.ts src/commands/compat.ts src/commands/context.ts src/commands/doctor.ts src/commands/embed.ts src/commands/entities.ts src/commands/graph.ts src/commands/inject.ts src/commands/kanban.ts src/commands/link.ts src/commands/migrate-observations.ts src/commands/observe.ts src/commands/project.ts src/commands/rebuild.ts src/commands/recover.ts src/commands/reflect.ts src/commands/repair-session.ts src/commands/replay.ts src/commands/session-recap.ts src/commands/setup.ts src/commands/shell-init.ts src/commands/sleep.ts src/commands/status.ts src/commands/tailscale.ts src/commands/task.ts src/commands/template.ts src/commands/wake.ts src/cli/index.ts src/index.ts src/lib/auto-linker.ts src/lib/canvas-layout.ts src/lib/config.ts src/lib/entity-index.ts src/lib/project-utils.ts src/lib/session-repair.ts src/lib/session-utils.ts src/lib/tailscale.ts src/lib/task-utils.ts src/lib/template-engine.ts src/lib/webdav.ts src/plugin/index.ts src/plugin/types.ts src/plugin/vault.ts src/plugin/observe.ts src/plugin/inject.ts src/plugin/templates.ts --format esm,cjs --dts --clean",
36
+ "build": "tsup src/commands/archive.ts src/commands/backlog.ts src/commands/blocked.ts src/commands/checkpoint.ts src/commands/compat.ts src/commands/context.ts src/commands/doctor.ts src/commands/embed.ts src/commands/entities.ts src/commands/graph.ts src/commands/inject.ts src/commands/kanban.ts src/commands/link.ts src/commands/migrate-observations.ts src/commands/observe.ts src/commands/project.ts src/commands/rebuild.ts src/commands/recover.ts src/commands/reflect.ts src/commands/repair-session.ts src/commands/replay.ts src/commands/session-recap.ts src/commands/setup.ts src/commands/shell-init.ts src/commands/sleep.ts src/commands/status.ts src/commands/task.ts src/commands/template.ts src/commands/wake.ts src/cli/index.ts src/index.ts src/lib/auto-linker.ts src/lib/config.ts src/lib/entity-index.ts src/lib/project-utils.ts src/lib/session-repair.ts src/lib/session-utils.ts src/lib/task-utils.ts src/lib/template-engine.ts src/plugin/index.ts src/plugin/types.ts src/plugin/vault.ts src/plugin/observe.ts src/plugin/inject.ts src/plugin/templates.ts --format esm,cjs --dts --clean",
39
37
  "dev": "tsup src/index.ts src/commands/*.ts src/lib/*.ts --format esm --dts --watch",
40
38
  "lint": "eslint src",
41
39
  "typecheck": "tsc --noEmit",
@@ -49,13 +47,13 @@
49
47
  "knowledge-graph",
50
48
  "obsidian",
51
49
  "markdown",
52
- "task-management",
53
- "context-death",
54
50
  "openclaw",
51
+ "openclaw-plugin",
55
52
  "llm",
56
53
  "agent-memory",
57
- "canvas-dashboard",
58
- "semantic-search"
54
+ "semantic-search",
55
+ "hybrid-search",
56
+ "bm25"
59
57
  ],
60
58
  "author": "Versatly",
61
59
  "license": "MIT",
@@ -75,12 +73,9 @@
75
73
  "chalk": "^5.3.0",
76
74
  "chokidar": "^5.0.0",
77
75
  "commander": "^12.0.0",
78
- "express": "^5.2.1",
79
- "force-graph": "^1.51.1",
80
76
  "glob": "^10.3.10",
81
77
  "gray-matter": "^4.0.3",
82
- "natural": "^6.10.4",
83
- "ws": "^8.19.0"
78
+ "natural": "^6.10.4"
84
79
  },
85
80
  "peerDependencies": {
86
81
  "qmd": "*"
@@ -93,7 +88,6 @@
93
88
  "devDependencies": {
94
89
  "@types/node": "^20.11.0",
95
90
  "ajv": "^8.17.1",
96
- "puppeteer": "^24.37.2",
97
91
  "tsup": "^8.0.1",
98
92
  "typescript": "^5.3.3",
99
93
  "vitest": "^1.2.0"
@@ -1,106 +0,0 @@
1
- /**
2
- * Tailscale networking command registrations.
3
- * Provides vault synchronization over Tailscale networks.
4
- */
5
-
6
- export function registerTailscaleCommands(program, { chalk }) {
7
- // === TAILSCALE-STATUS ===
8
- program
9
- .command('tailscale-status')
10
- .alias('ts-status')
11
- .description('Show Tailscale connection status and peers')
12
- .option('--json', 'Output as JSON')
13
- .option('--peers', 'Show all peers including offline')
14
- .action(async (options) => {
15
- try {
16
- const { tailscaleStatusCommand } = await import('../dist/commands/tailscale.js');
17
- await tailscaleStatusCommand({
18
- json: options.json,
19
- peers: options.peers
20
- });
21
- } catch (err) {
22
- console.error(chalk.red(`Error: ${err.message}`));
23
- process.exit(1);
24
- }
25
- });
26
-
27
- // === TAILSCALE-SYNC ===
28
- program
29
- .command('tailscale-sync')
30
- .alias('ts-sync')
31
- .description('Sync vault with a peer on the Tailscale network')
32
- .requiredOption('--peer <hostname>', 'Peer hostname or IP to sync with')
33
- .option('-v, --vault <path>', 'Vault path')
34
- .option('--port <number>', 'Port on the peer (default: 8384)', parseInt)
35
- .option('--direction <dir>', 'Sync direction: push, pull, or bidirectional (default: bidirectional)', 'bidirectional')
36
- .option('--dry-run', 'Show what would be synced without making changes')
37
- .option('--delete-orphans', 'Delete files that exist locally but not on peer (pull only)')
38
- .option('--categories <list>', 'Comma-separated list of categories to sync')
39
- .option('--https', 'Use HTTPS for connection')
40
- .option('--json', 'Output as JSON')
41
- .action(async (options) => {
42
- try {
43
- const { tailscaleSyncCommand } = await import('../dist/commands/tailscale.js');
44
- await tailscaleSyncCommand({
45
- peer: options.peer,
46
- vaultPath: options.vault,
47
- port: options.port,
48
- direction: options.direction,
49
- dryRun: options.dryRun,
50
- deleteOrphans: options.deleteOrphans,
51
- categories: options.categories?.split(',').map(c => c.trim()),
52
- https: options.https,
53
- json: options.json
54
- });
55
- } catch (err) {
56
- console.error(chalk.red(`Error: ${err.message}`));
57
- process.exit(1);
58
- }
59
- });
60
-
61
- // === TAILSCALE-SERVE ===
62
- program
63
- .command('tailscale-serve')
64
- .alias('ts-serve')
65
- .description('Serve vault for sync over Tailscale')
66
- .option('-v, --vault <path>', 'Vault path')
67
- .option('--port <number>', 'Port to serve on (default: 8384)', parseInt)
68
- .option('--funnel', 'Expose via Tailscale Funnel (public internet)')
69
- .option('--background', 'Run in background')
70
- .option('--stop', 'Stop serving')
71
- .action(async (options) => {
72
- try {
73
- const { tailscaleServeCommand } = await import('../dist/commands/tailscale.js');
74
- await tailscaleServeCommand({
75
- vaultPath: options.vault,
76
- port: options.port,
77
- funnel: options.funnel,
78
- background: options.background,
79
- stop: options.stop
80
- });
81
- } catch (err) {
82
- console.error(chalk.red(`Error: ${err.message}`));
83
- process.exit(1);
84
- }
85
- });
86
-
87
- // === TAILSCALE-DISCOVER ===
88
- program
89
- .command('tailscale-discover')
90
- .alias('ts-discover')
91
- .description('Discover ClawVault peers on the Tailscale network')
92
- .option('--port <number>', 'Port to check (default: 8384)', parseInt)
93
- .option('--json', 'Output as JSON')
94
- .action(async (options) => {
95
- try {
96
- const { tailscaleDiscoverCommand } = await import('../dist/commands/tailscale.js');
97
- await tailscaleDiscoverCommand({
98
- port: options.port,
99
- json: options.json
100
- });
101
- } catch (err) {
102
- console.error(chalk.red(`Error: ${err.message}`));
103
- process.exit(1);
104
- }
105
- });
106
- }