clawvault 2.5.1 → 2.5.3

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 (88) hide show
  1. package/README.md +159 -199
  2. package/bin/clawvault.js +111 -111
  3. package/bin/command-registration.test.js +166 -165
  4. package/bin/command-runtime.js +93 -77
  5. package/bin/command-runtime.test.js +154 -102
  6. package/bin/help-contract.test.js +39 -28
  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 -248
  13. package/bin/register-project-commands.js +209 -209
  14. package/bin/register-project-commands.test.js +206 -201
  15. package/bin/register-query-commands.js +317 -312
  16. package/bin/register-query-commands.test.js +65 -0
  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 +72 -72
  25. package/bin/register-vault-operations-commands.js +300 -300
  26. package/bin/test-helpers/cli-command-fixtures.js +119 -119
  27. package/dashboard/lib/graph-diff.js +104 -104
  28. package/dashboard/lib/graph-diff.test.js +75 -75
  29. package/dashboard/lib/vault-parser.js +556 -556
  30. package/dashboard/lib/vault-parser.test.js +254 -254
  31. package/dashboard/public/app.js +796 -796
  32. package/dashboard/public/index.html +52 -52
  33. package/dashboard/public/styles.css +221 -221
  34. package/dashboard/server.js +374 -374
  35. package/dist/{chunk-G3OQJ2NQ.js → chunk-2YDBJS7M.js} +1 -1
  36. package/dist/chunk-3FP5BJ42.js +88 -0
  37. package/dist/{chunk-C3PF7WBA.js → chunk-4IV3R2F5.js} +2 -2
  38. package/dist/{chunk-7OHQFMJK.js → chunk-AY4PGUVL.js} +5 -4
  39. package/dist/chunk-FG6RJMCN.js +33 -0
  40. package/dist/{chunk-WIICLBNF.js → chunk-GFJ3LIIB.js} +1 -1
  41. package/dist/chunk-IZEY5S74.js +541 -0
  42. package/dist/chunk-LMEMZGUV.js +332 -0
  43. package/dist/{chunk-6RQPD7X6.js → chunk-M25QVSJM.js} +4 -3
  44. package/dist/{chunk-6B3JWM7J.js → chunk-O7XHXF7F.js} +34 -7
  45. package/dist/chunk-OSMS7QIG.js +406 -0
  46. package/dist/{chunk-PAYUH64O.js → chunk-QVMXF7FY.js} +11 -1
  47. package/dist/{chunk-TMZMN7OS.js → chunk-S2IG7VNM.js} +24 -12
  48. package/dist/{chunk-LMCC5OC7.js → chunk-TPDH3JPP.js} +1 -1
  49. package/dist/cli/index.d.ts +5 -0
  50. package/dist/cli/index.js +31 -0
  51. package/dist/commands/canvas.js +3 -3
  52. package/dist/commands/compat.js +1 -1
  53. package/dist/commands/context.js +4 -4
  54. package/dist/commands/doctor.js +16 -309
  55. package/dist/commands/embed.d.ts +17 -0
  56. package/dist/commands/embed.js +10 -0
  57. package/dist/commands/migrate-observations.js +2 -2
  58. package/dist/commands/observe.d.ts +1 -0
  59. package/dist/commands/observe.js +7 -6
  60. package/dist/commands/rebuild.js +5 -5
  61. package/dist/commands/reflect.js +3 -3
  62. package/dist/commands/replay.js +7 -7
  63. package/dist/commands/setup.d.ts +1 -0
  64. package/dist/commands/setup.js +2 -2
  65. package/dist/commands/sleep.d.ts +2 -1
  66. package/dist/commands/sleep.js +15 -15
  67. package/dist/commands/status.d.ts +9 -1
  68. package/dist/commands/status.js +33 -8
  69. package/dist/commands/wake.d.ts +1 -1
  70. package/dist/commands/wake.js +6 -6
  71. package/dist/index.d.ts +82 -5
  72. package/dist/index.js +127 -105
  73. package/dist/{types-jjuYN2Xn.d.ts → types-C74wgGL1.d.ts} +2 -0
  74. package/hooks/clawvault/HOOK.md +83 -74
  75. package/hooks/clawvault/handler.js +816 -812
  76. package/hooks/clawvault/handler.test.js +263 -263
  77. package/package.json +94 -125
  78. package/templates/checkpoint.md +19 -19
  79. package/templates/daily-note.md +19 -19
  80. package/templates/daily.md +19 -19
  81. package/templates/decision.md +17 -17
  82. package/templates/handoff.md +19 -19
  83. package/templates/lesson.md +16 -16
  84. package/templates/person.md +19 -19
  85. package/templates/project.md +23 -23
  86. package/dist/chunk-2RK2AG32.js +0 -743
  87. package/dist/{chunk-FW465EEA.js → chunk-VXEOHTSL.js} +3 -3
  88. package/dist/{chunk-KCCHROBR.js → chunk-YOSEUUNB.js} +4 -4
package/README.md CHANGED
@@ -1,199 +1,159 @@
1
- # ClawVault 🐘
2
-
3
- **An elephant never forgets.**
4
-
5
- Structured memory system for AI agents. Typed storage, knowledge graph, task management, and Obsidian-native dashboards — all local, all markdown.
6
-
7
- [![npm](https://img.shields.io/npm/v/clawvault)](https://www.npmjs.com/package/clawvault) [![tests](https://img.shields.io/badge/tests-361%20passing-brightgreen)]()
8
-
9
- 🌐 [clawvault.dev](https://clawvault.dev) · 📚 [docs.clawvault.dev](https://docs.clawvault.dev) · 🛠️ [ClawHub Skill](https://clawhub.com/skills/clawvault)
10
-
11
- > Works with [OpenClaw](https://openclaw.ai) agents or standalone. No cloud. No API keys. Just files.
12
-
13
- ## Install
14
-
15
- ```bash
16
- npm install -g clawvault
17
- ```
18
-
19
- ## Quick Start
20
-
21
- ```bash
22
- # Create a vault
23
- clawvault init ~/memory --name my-brain
24
-
25
- # Store memories by type
26
- clawvault remember decision "Use PostgreSQL" --content "Chose for JSONB support"
27
- clawvault remember lesson "Always checkpoint" --content "Context death is real"
28
- clawvault capture "Quick thought to process later"
29
-
30
- # Search
31
- clawvault search "postgresql" # Keyword (BM25)
32
- clawvault vsearch "what database?" # Semantic (local embeddings)
33
-
34
- # Session lifecycle
35
- clawvault wake # Start session, load context
36
- clawvault sleep "built auth system" \ # End session with handoff
37
- --next "deploy to staging"
38
-
39
- # Task management
40
- clawvault task add "Ship v2" --owner agent --project acme --priority high
41
- clawvault task list
42
- clawvault blocked
43
- clawvault backlog add "Explore caching" --project acme
44
-
45
- # Visual dashboards (Obsidian JSON Canvas)
46
- clawvault canvas --template brain # System architecture overview
47
- clawvault canvas --template project-board # Task board by owner
48
- ```
49
-
50
- ## Features
51
-
52
- ### 📁 Typed Memory Storage
53
- Every memory has a category: `decisions/`, `lessons/`, `people/`, `projects/`, `commitments/`. No more dumping everything into one file. "Show me all decisions" actually works.
54
-
55
- ### 🧠 Knowledge Graph
56
- Wiki-links (`[[connections]]`) build a typed graph index. Query with graph-aware context that blends semantic search with relationship traversal.
57
-
58
- ```bash
59
- clawvault graph # Graph summary
60
- clawvault context "database migration" \ # Graph-aware context
61
- --profile planning --budget 2000
62
- ```
63
-
64
- ### ✅ Task Management
65
- Tasks and backlog stored as markdown with frontmatter. Agents and humans share the same system.
66
-
67
- ```bash
68
- clawvault task add "Fix auth" --owner bot --priority critical
69
- clawvault task update fix-auth --status blocked --blocked-by "api-key"
70
- clawvault blocked # Triage blocked work
71
- clawvault backlog promote explore-caching # Backlog → active task
72
- ```
73
-
74
- ### 🎨 Obsidian Dashboards
75
- Generate visual dashboards as [JSON Canvas](https://jsoncanvas.org) files:
76
-
77
- | Template | Description |
78
- |----------|-------------|
79
- | `brain` | 4-quadrant architecture: vault structure, direction, agent workspace, knowledge graph |
80
- | `project-board` | Owner-centric kanban with status columns, priority icons, agent/human cards |
81
- | `default` | Two-column dashboard with activity metrics and task triage |
82
- | `sprint` | Weekly focus with sprint metrics and open loops |
83
-
84
- ```bash
85
- clawvault canvas --template brain
86
- clawvault canvas --template project-board --owner my-agent
87
- ```
88
-
89
- ### 🔭 Observational Memory
90
- Auto-compress conversations into prioritized observations. Critical items route to vault categories automatically.
91
-
92
- ```bash
93
- clawvault observe --compress session.md # One-shot compression
94
- clawvault observe --active # Incremental from transcripts
95
- ```
96
-
97
- ### 🛡️ Context Death Recovery
98
- Checkpoint/recover system keeps agents alive across crashes and session resets.
99
-
100
- ```bash
101
- clawvault checkpoint --working-on "migration" --focus "step 3"
102
- clawvault recover # After crash/reset
103
- ```
104
-
105
- ### 🌐 Tailscale Networking
106
- Multi-vault collaboration over Tailscale with trust levels and cross-vault search.
107
-
108
- ```bash
109
- clawvault serve # Start API server
110
- clawvault peers # Manage vault peers
111
- clawvault net-search "query" # Search across vaults
112
- ```
113
-
114
- ## Setup & Customization
115
-
116
- ```bash
117
- # Full setup with neural graph theme + Obsidian Bases views
118
- clawvault setup --theme neural --canvas brain
119
-
120
- # Minimal agent vault
121
- clawvault init ./memory --minimal
122
-
123
- # Custom categories
124
- clawvault init ./memory --categories "notes,research,code"
125
-
126
- # Skip visual config
127
- clawvault setup --no-graph-colors --no-bases
128
- ```
129
-
130
- ### Graph Themes
131
-
132
- | Theme | Description |
133
- |-------|-------------|
134
- | `neural` | Dark background, colored nodes by category, green network links, golden glow |
135
- | `minimal` | Subtle category colors, no background changes |
136
- | `none` | Skip graph theming |
137
-
138
- ## Vault Structure
139
-
140
- ```
141
- memory/
142
- ├── .clawvault.json # Vault config
143
- ├── .clawvault/
144
- │ └── graph-index.json # Knowledge graph
145
- ├── tasks/ # Active tasks (markdown + frontmatter)
146
- ├── backlog/ # Ideas and future work
147
- ├── decisions/ # Choices with reasoning
148
- ├── lessons/ # Things learned
149
- ├── people/ # One file per person
150
- ├── projects/ # Active work
151
- ├── commitments/ # Promises and deadlines
152
- ├── inbox/ # Quick captures
153
- ├── handoffs/ # Session continuity
154
- ├── ledger/
155
- │ ├── raw/ # Raw session transcripts
156
- │ ├── observations/ # Compressed observations
157
- │ └── reflections/ # Weekly reflections
158
- ├── all-tasks.base # Obsidian Bases view
159
- ├── by-owner.base # Tasks by owner
160
- └── dashboard.canvas # Generated dashboard
161
- ```
162
-
163
- ## For OpenClaw Agents
164
-
165
- ```bash
166
- # Install as a skill
167
- clawhub install clawvault
168
-
169
- # Or add to your agent's tools
170
- npm install -g clawvault
171
- ```
172
-
173
- Add to your `AGENTS.md`:
174
-
175
- ```markdown
176
- ## Memory
177
- - `clawvault wake` on session start
178
- - `clawvault sleep "summary" --next "next steps"` on session end
179
- - `clawvault checkpoint` every 10-15 min during heavy work
180
- - `clawvault remember <type> "title" --content "..."` for important items
181
- - `clawvault search "query"` before asking questions
182
- ```
183
-
184
- ## Requirements
185
-
186
- - **Node.js 18+**
187
- - **[qmd](https://github.com/Versatly/qmd)** — Local semantic search (optional but recommended)
188
-
189
- ## Docs
190
-
191
- Full documentation at **[docs.clawvault.dev](https://docs.clawvault.dev)**
192
-
193
- ## License
194
-
195
- MIT
196
-
197
- ---
198
-
199
- *Built by [Versatly](https://versatly.com) — autonomous AI employees for businesses.* 🐘
1
+ # ClawVault 🐘
2
+
3
+ Structured memory system for AI agents and operators: typed markdown memory, graph-aware context, task/project primitives, Obsidian views, and OpenClaw hook integration.
4
+
5
+ [![npm](https://img.shields.io/npm/v/clawvault)](https://www.npmjs.com/package/clawvault)
6
+
7
+ > Local-first. Markdown-first. Built to survive long-running autonomous work.
8
+
9
+ ## Requirements
10
+
11
+ - Node.js 18+
12
+ - `qmd` installed and available on `PATH`
13
+
14
+ ClawVault currently relies on `qmd` for core vault/query flows. Install it before first use.
15
+
16
+ ## Install
17
+
18
+ ```bash
19
+ npm install -g clawvault
20
+ ```
21
+
22
+ ## 5-Minute Setup
23
+
24
+ ```bash
25
+ # 1) Create or initialize a vault
26
+ clawvault init ~/memory --name my-brain
27
+
28
+ # 2) Optional vault bootstrap for Obsidian
29
+ clawvault setup --theme neural --canvas
30
+
31
+ # 3) Verify OpenClaw compatibility in this environment
32
+ clawvault compat
33
+ ```
34
+
35
+ ## OpenClaw Setup (Canonical)
36
+
37
+ If you want hook-based lifecycle integration, use this sequence:
38
+
39
+ ```bash
40
+ # Install CLI
41
+ npm install -g clawvault
42
+
43
+ # Install and enable hook pack
44
+ openclaw hooks install clawvault
45
+ openclaw hooks enable clawvault
46
+
47
+ # Verify
48
+ openclaw hooks list --verbose
49
+ openclaw hooks info clawvault
50
+ openclaw hooks check
51
+ clawvault compat
52
+ ```
53
+
54
+ Important:
55
+
56
+ - `clawhub install clawvault` installs skill guidance, but does not replace hook-pack installation.
57
+ - After enabling hooks, restart the OpenClaw gateway process so hook registration reloads.
58
+
59
+ ## Minimal AGENTS.md Additions
60
+
61
+ Append these to your existing memory workflow. Do not replace your full prompt setup:
62
+
63
+ ```markdown
64
+ ## ClawVault
65
+ - Run `clawvault wake` at session start.
66
+ - Run `clawvault checkpoint` during heavy work.
67
+ - Run `clawvault sleep "summary" --next "next steps"` before ending.
68
+ - Use `clawvault context "<task>"` or `clawvault inject "<message>"` before complex decisions.
69
+ ```
70
+
71
+ ## Real CLI Surface (Current)
72
+
73
+ Core:
74
+
75
+ - `init`, `setup`, `store`, `capture`
76
+ - `remember`, `list`, `get`, `stats`, `reindex`, `sync`
77
+
78
+ Context + memory:
79
+
80
+ - `search`, `vsearch`, `context`, `inject`
81
+ - `observe`, `reflect`, `session-recap`
82
+ - `graph`, `entities`, `link`, `embed`
83
+
84
+ Resilience:
85
+
86
+ - `wake`, `sleep`, `handoff`, `recap`
87
+ - `checkpoint`, `recover`, `status`, `clean-exit`, `repair-session`
88
+ - `compat`, `doctor`
89
+
90
+ Execution primitives:
91
+
92
+ - `task ...`, `backlog ...`, `blocked`, `project ...`, `kanban ...`
93
+ - `canvas` (generates default `dashboard.canvas`)
94
+
95
+ Networking:
96
+
97
+ - `tailscale-status`, `tailscale-sync`, `tailscale-serve`, `tailscale-discover`
98
+
99
+ ## Quick Usage
100
+
101
+ ```bash
102
+ # Store and retrieve memory
103
+ clawvault remember decision "Use PostgreSQL" --content "Chosen for JSONB and reliability"
104
+ clawvault search "postgresql"
105
+ clawvault vsearch "what did we decide about storage"
106
+
107
+ # Session lifecycle
108
+ clawvault wake
109
+ clawvault checkpoint --working-on "auth rollout" --focus "token refresh edge cases"
110
+ clawvault sleep "finished auth rollout plan" --next "implement migration"
111
+
112
+ # Work management
113
+ clawvault task add "Ship v2 onboarding" --owner agent --project core --priority high
114
+ clawvault blocked
115
+ clawvault project list --status active
116
+ clawvault kanban sync
117
+
118
+ # Obsidian projection
119
+ clawvault canvas
120
+ ```
121
+
122
+ ## Obsidian Integration
123
+
124
+ - Setup can generate:
125
+ - graph theme/snippet config (`--theme neural|minimal|none`)
126
+ - Bases views (`all-tasks.base`, `blocked.base`, `by-project.base`, `by-owner.base`, `backlog.base`)
127
+ - default canvas (`dashboard.canvas`) via `--canvas` or `clawvault canvas`
128
+ - Kanban round-trip:
129
+ - export: `clawvault kanban sync`
130
+ - import lane changes back to task metadata: `clawvault kanban import`
131
+
132
+ ## Tailscale + WebDAV
133
+
134
+ ClawVault can serve vault content for sync over Tailscale and exposes WebDAV under `/webdav` for mobile-oriented workflows.
135
+
136
+ ```bash
137
+ clawvault tailscale-status
138
+ clawvault tailscale-serve --vault ~/memory
139
+ clawvault tailscale-discover
140
+ ```
141
+
142
+ ## Troubleshooting
143
+
144
+ - Hook not found after enable:
145
+ - run `openclaw hooks install clawvault` first
146
+ - then `openclaw hooks enable clawvault`
147
+ - restart gateway
148
+ - verify with `openclaw hooks list --verbose`
149
+ - `qmd` errors:
150
+ - ensure `qmd --version` works from same shell
151
+ - rerun `clawvault setup` after qmd install
152
+ - OpenClaw integration drift:
153
+ - run `clawvault compat`
154
+ - Session transcript corruption:
155
+ - run `clawvault repair-session --dry-run` then `clawvault repair-session`
156
+
157
+ ## License
158
+
159
+ MIT
package/bin/clawvault.js CHANGED
@@ -1,112 +1,112 @@
1
- #!/usr/bin/env node
2
-
3
- /**
4
- * ClawVault CLI 🐘
5
- * An elephant never forgets.
6
- */
7
-
8
- import { Command } from 'commander';
9
- import chalk from 'chalk';
10
- import * as fs from 'fs';
11
- import * as path from 'path';
12
- import { registerMaintenanceCommands } from './register-maintenance-commands.js';
13
- import { registerCoreCommands } from './register-core-commands.js';
14
- import { registerQueryCommands } from './register-query-commands.js';
15
- import { registerResilienceCommands } from './register-resilience-commands.js';
16
- import { registerSessionLifecycleCommands } from './register-session-lifecycle-commands.js';
17
- import { registerTemplateCommands } from './register-template-commands.js';
18
- import { registerVaultOperationsCommands } from './register-vault-operations-commands.js';
19
- import { registerConfigCommands } from './register-config-commands.js';
20
- import { registerRouteCommands } from './register-route-commands.js';
21
- import { registerKanbanCommands } from './register-kanban-commands.js';
22
- import { registerProjectCommands } from './register-project-commands.js';
23
-
24
- import { registerTaskCommands } from './register-task-commands.js';
25
-
26
- import { registerTailscaleCommands } from './register-tailscale-commands.js';
27
- import {
28
- getVault,
29
- resolveVaultPath,
30
- runQmd,
31
- printQmdMissing,
32
- QmdUnavailableError
33
- } from './command-runtime.js';
34
- import {
35
- createVault
36
- } from '../dist/index.js';
37
-
38
- const program = new Command();
39
-
40
- const CLI_VERSION = (() => {
41
- try {
42
- const pkgUrl = new URL('../package.json', import.meta.url);
43
- const pkg = JSON.parse(fs.readFileSync(pkgUrl, 'utf-8'));
44
- return pkg.version || '0.0.0';
45
- } catch {
46
- return '0.0.0';
47
- }
48
- })();
49
-
50
- program
51
- .name('clawvault')
52
- .description('🐘 An elephant never forgets. Structured memory for AI agents.')
53
- .version(CLI_VERSION);
54
-
55
- registerCoreCommands(program, {
56
- chalk,
57
- path,
58
- fs,
59
- createVault,
60
- getVault,
61
- runQmd
62
- });
63
-
64
- registerQueryCommands(program, {
65
- chalk,
66
- getVault,
67
- resolveVaultPath,
68
- QmdUnavailableError,
69
- printQmdMissing
70
- });
71
-
72
- registerSessionLifecycleCommands(program, {
73
- chalk,
74
- resolveVaultPath,
75
- QmdUnavailableError,
76
- printQmdMissing,
77
- getVault,
78
- runQmd
79
- });
80
-
81
- registerTemplateCommands(program, { chalk });
82
- registerMaintenanceCommands(program, { chalk });
83
- registerResilienceCommands(program, { chalk, resolveVaultPath });
84
- registerVaultOperationsCommands(program, {
85
- chalk,
86
- fs,
87
- getVault,
88
- runQmd,
89
- resolveVaultPath,
90
- path
91
- });
92
-
93
-
94
- registerTaskCommands(program, {
95
- chalk,
96
- resolveVaultPath
97
- });
98
- registerKanbanCommands(program, {
99
- chalk,
100
- resolveVaultPath
101
- });
102
- registerProjectCommands(program, {
103
- chalk,
104
- resolveVaultPath
105
- });
106
-
107
- registerTailscaleCommands(program, { chalk });
108
- registerConfigCommands(program, { chalk, resolveVaultPath });
109
- registerRouteCommands(program, { chalk, resolveVaultPath });
110
-
111
- // Parse and run
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * ClawVault CLI 🐘
5
+ * An elephant never forgets.
6
+ */
7
+
8
+ import { Command } from 'commander';
9
+ import chalk from 'chalk';
10
+ import * as fs from 'fs';
11
+ import * as path from 'path';
12
+ import { registerMaintenanceCommands } from './register-maintenance-commands.js';
13
+ import { registerCoreCommands } from './register-core-commands.js';
14
+ import { registerQueryCommands } from './register-query-commands.js';
15
+ import { registerResilienceCommands } from './register-resilience-commands.js';
16
+ import { registerSessionLifecycleCommands } from './register-session-lifecycle-commands.js';
17
+ import { registerTemplateCommands } from './register-template-commands.js';
18
+ import { registerVaultOperationsCommands } from './register-vault-operations-commands.js';
19
+ import { registerConfigCommands } from './register-config-commands.js';
20
+ import { registerRouteCommands } from './register-route-commands.js';
21
+ import { registerKanbanCommands } from './register-kanban-commands.js';
22
+ import { registerProjectCommands } from './register-project-commands.js';
23
+
24
+ import { registerTaskCommands } from './register-task-commands.js';
25
+
26
+ import { registerTailscaleCommands } from './register-tailscale-commands.js';
27
+ import {
28
+ getVault,
29
+ resolveVaultPath,
30
+ runQmd,
31
+ printQmdMissing,
32
+ QmdUnavailableError
33
+ } from './command-runtime.js';
34
+ import {
35
+ createVault
36
+ } from '../dist/index.js';
37
+
38
+ const program = new Command();
39
+
40
+ const CLI_VERSION = (() => {
41
+ try {
42
+ const pkgUrl = new URL('../package.json', import.meta.url);
43
+ const pkg = JSON.parse(fs.readFileSync(pkgUrl, 'utf-8'));
44
+ return pkg.version || '0.0.0';
45
+ } catch {
46
+ return '0.0.0';
47
+ }
48
+ })();
49
+
50
+ program
51
+ .name('clawvault')
52
+ .description('🐘 An elephant never forgets. Structured memory for AI agents.')
53
+ .version(CLI_VERSION);
54
+
55
+ registerCoreCommands(program, {
56
+ chalk,
57
+ path,
58
+ fs,
59
+ createVault,
60
+ getVault,
61
+ runQmd
62
+ });
63
+
64
+ registerQueryCommands(program, {
65
+ chalk,
66
+ getVault,
67
+ resolveVaultPath,
68
+ QmdUnavailableError,
69
+ printQmdMissing
70
+ });
71
+
72
+ registerSessionLifecycleCommands(program, {
73
+ chalk,
74
+ resolveVaultPath,
75
+ QmdUnavailableError,
76
+ printQmdMissing,
77
+ getVault,
78
+ runQmd
79
+ });
80
+
81
+ registerTemplateCommands(program, { chalk });
82
+ registerMaintenanceCommands(program, { chalk });
83
+ registerResilienceCommands(program, { chalk, resolveVaultPath });
84
+ registerVaultOperationsCommands(program, {
85
+ chalk,
86
+ fs,
87
+ getVault,
88
+ runQmd,
89
+ resolveVaultPath,
90
+ path
91
+ });
92
+
93
+
94
+ registerTaskCommands(program, {
95
+ chalk,
96
+ resolveVaultPath
97
+ });
98
+ registerKanbanCommands(program, {
99
+ chalk,
100
+ resolveVaultPath
101
+ });
102
+ registerProjectCommands(program, {
103
+ chalk,
104
+ resolveVaultPath
105
+ });
106
+
107
+ registerTailscaleCommands(program, { chalk });
108
+ registerConfigCommands(program, { chalk, resolveVaultPath });
109
+ registerRouteCommands(program, { chalk, resolveVaultPath });
110
+
111
+ // Parse and run
112
112
  program.parse();