clawvault 2.5.4 → 2.6.1

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 (89) hide show
  1. package/README.md +159 -159
  2. package/bin/clawvault.js +111 -111
  3. package/bin/command-registration.test.js +166 -166
  4. package/bin/command-runtime.js +93 -93
  5. package/bin/command-runtime.test.js +154 -154
  6. package/bin/help-contract.test.js +39 -39
  7. package/bin/register-config-commands.js +153 -153
  8. package/bin/register-config-route-commands.test.js +121 -121
  9. package/bin/register-core-commands.js +237 -237
  10. package/bin/register-kanban-commands.js +56 -56
  11. package/bin/register-kanban-commands.test.js +83 -83
  12. package/bin/register-maintenance-commands.js +282 -282
  13. package/bin/register-project-commands.js +209 -209
  14. package/bin/register-project-commands.test.js +206 -206
  15. package/bin/register-query-commands.js +317 -317
  16. package/bin/register-query-commands.test.js +65 -65
  17. package/bin/register-resilience-commands.js +182 -182
  18. package/bin/register-resilience-commands.test.js +81 -81
  19. package/bin/register-route-commands.js +114 -114
  20. package/bin/register-session-lifecycle-commands.js +206 -206
  21. package/bin/register-tailscale-commands.js +106 -106
  22. package/bin/register-task-commands.js +348 -348
  23. package/bin/register-task-commands.test.js +69 -69
  24. package/bin/register-template-commands.js +75 -72
  25. package/bin/register-template-commands.test.js +87 -0
  26. package/bin/register-vault-operations-commands.js +300 -300
  27. package/bin/test-helpers/cli-command-fixtures.js +119 -119
  28. package/dashboard/lib/graph-diff.js +104 -104
  29. package/dashboard/lib/graph-diff.test.js +75 -75
  30. package/dashboard/lib/vault-parser.js +556 -556
  31. package/dashboard/lib/vault-parser.test.js +254 -254
  32. package/dashboard/public/app.js +796 -796
  33. package/dashboard/public/index.html +52 -52
  34. package/dashboard/public/styles.css +221 -221
  35. package/dashboard/server.js +374 -374
  36. package/dist/{chunk-2YDBJS7M.js → chunk-3BTHWPMB.js} +1 -1
  37. package/dist/{chunk-J5EMBUPK.js → chunk-4OXMU5S2.js} +1 -1
  38. package/dist/{chunk-GSD4ALSI.js → chunk-4VRIMU4O.js} +1 -1
  39. package/dist/{chunk-5GZFTAL7.js → chunk-AZYOKJYC.js} +128 -42
  40. package/dist/{chunk-K3CDT7IH.js → chunk-HIHOUSXS.js} +2 -2
  41. package/dist/{chunk-IZEY5S74.js → chunk-IEVLHNLU.js} +1 -1
  42. package/dist/{chunk-OSMS7QIG.js → chunk-ME37YNW3.js} +2 -2
  43. package/dist/chunk-MFAWT5O5.js +301 -0
  44. package/dist/{chunk-TPDH3JPP.js → chunk-PBEE567J.js} +1 -1
  45. package/dist/{chunk-S2IG7VNM.js → chunk-Q2J5YTUF.js} +2 -2
  46. package/dist/{chunk-IOALNTAN.js → chunk-QWQ3TIKS.js} +103 -29
  47. package/dist/{chunk-YCVDVI5B.js → chunk-R2MIW5G7.js} +1 -1
  48. package/dist/{chunk-4IV3R2F5.js → chunk-R6SXNSFD.js} +2 -2
  49. package/dist/{chunk-YOSEUUNB.js → chunk-T76H47ZS.js} +1 -1
  50. package/dist/{chunk-JDLOL2PL.js → chunk-TLGBDTYT.js} +3 -3
  51. package/dist/{chunk-W2HNZC22.js → chunk-UEOUADMO.js} +1 -1
  52. package/dist/cli/index.js +12 -10
  53. package/dist/commands/backlog.js +3 -1
  54. package/dist/commands/blocked.js +3 -1
  55. package/dist/commands/canvas.js +3 -1
  56. package/dist/commands/doctor.js +7 -5
  57. package/dist/commands/inject.js +2 -2
  58. package/dist/commands/kanban.js +4 -2
  59. package/dist/commands/observe.js +7 -5
  60. package/dist/commands/project.js +5 -3
  61. package/dist/commands/rebuild.js +6 -4
  62. package/dist/commands/reflect.js +3 -3
  63. package/dist/commands/replay.js +8 -6
  64. package/dist/commands/setup.js +1 -1
  65. package/dist/commands/sleep.js +7 -5
  66. package/dist/commands/status.js +6 -4
  67. package/dist/commands/task.js +4 -2
  68. package/dist/commands/template.d.ts +10 -1
  69. package/dist/commands/template.js +47 -55
  70. package/dist/commands/wake.js +2 -2
  71. package/dist/index.js +20 -19
  72. package/dist/lib/project-utils.js +4 -2
  73. package/dist/lib/task-utils.d.ts +14 -13
  74. package/dist/lib/task-utils.js +3 -1
  75. package/dist/lib/template-engine.d.ts +1 -0
  76. package/hooks/clawvault/HOOK.md +83 -83
  77. package/hooks/clawvault/handler.js +816 -816
  78. package/hooks/clawvault/handler.test.js +263 -263
  79. package/package.json +94 -94
  80. package/templates/checkpoint.md +34 -19
  81. package/templates/daily-note.md +34 -19
  82. package/templates/daily.md +34 -19
  83. package/templates/decision.md +39 -17
  84. package/templates/handoff.md +34 -19
  85. package/templates/lesson.md +31 -16
  86. package/templates/person.md +37 -19
  87. package/templates/project.md +84 -23
  88. package/templates/task.md +81 -0
  89. /package/dist/{chunk-AXKYDCNN.js → chunk-RVYA52PY.js} +0 -0
@@ -1,106 +1,106 @@
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
- }
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
+ }