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.
- package/README.md +159 -199
- package/bin/clawvault.js +111 -111
- package/bin/command-registration.test.js +166 -165
- package/bin/command-runtime.js +93 -77
- package/bin/command-runtime.test.js +154 -102
- package/bin/help-contract.test.js +39 -28
- package/bin/register-config-commands.js +153 -153
- package/bin/register-config-route-commands.test.js +121 -121
- package/bin/register-core-commands.js +237 -237
- package/bin/register-kanban-commands.js +56 -56
- package/bin/register-kanban-commands.test.js +83 -83
- package/bin/register-maintenance-commands.js +282 -248
- package/bin/register-project-commands.js +209 -209
- package/bin/register-project-commands.test.js +206 -201
- package/bin/register-query-commands.js +317 -312
- package/bin/register-query-commands.test.js +65 -0
- package/bin/register-resilience-commands.js +182 -182
- package/bin/register-resilience-commands.test.js +81 -81
- package/bin/register-route-commands.js +114 -114
- package/bin/register-session-lifecycle-commands.js +206 -206
- package/bin/register-tailscale-commands.js +106 -106
- package/bin/register-task-commands.js +348 -348
- package/bin/register-task-commands.test.js +69 -69
- package/bin/register-template-commands.js +72 -72
- package/bin/register-vault-operations-commands.js +300 -300
- package/bin/test-helpers/cli-command-fixtures.js +119 -119
- package/dashboard/lib/graph-diff.js +104 -104
- package/dashboard/lib/graph-diff.test.js +75 -75
- package/dashboard/lib/vault-parser.js +556 -556
- package/dashboard/lib/vault-parser.test.js +254 -254
- package/dashboard/public/app.js +796 -796
- package/dashboard/public/index.html +52 -52
- package/dashboard/public/styles.css +221 -221
- package/dashboard/server.js +374 -374
- package/dist/{chunk-G3OQJ2NQ.js → chunk-2YDBJS7M.js} +1 -1
- package/dist/chunk-3FP5BJ42.js +88 -0
- package/dist/{chunk-C3PF7WBA.js → chunk-4IV3R2F5.js} +2 -2
- package/dist/{chunk-7OHQFMJK.js → chunk-AY4PGUVL.js} +5 -4
- package/dist/chunk-FG6RJMCN.js +33 -0
- package/dist/{chunk-WIICLBNF.js → chunk-GFJ3LIIB.js} +1 -1
- package/dist/chunk-IZEY5S74.js +541 -0
- package/dist/chunk-LMEMZGUV.js +332 -0
- package/dist/{chunk-6RQPD7X6.js → chunk-M25QVSJM.js} +4 -3
- package/dist/{chunk-6B3JWM7J.js → chunk-O7XHXF7F.js} +34 -7
- package/dist/chunk-OSMS7QIG.js +406 -0
- package/dist/{chunk-PAYUH64O.js → chunk-QVMXF7FY.js} +11 -1
- package/dist/{chunk-TMZMN7OS.js → chunk-S2IG7VNM.js} +24 -12
- package/dist/{chunk-LMCC5OC7.js → chunk-TPDH3JPP.js} +1 -1
- package/dist/cli/index.d.ts +5 -0
- package/dist/cli/index.js +31 -0
- package/dist/commands/canvas.js +3 -3
- package/dist/commands/compat.js +1 -1
- package/dist/commands/context.js +4 -4
- package/dist/commands/doctor.js +16 -309
- package/dist/commands/embed.d.ts +17 -0
- package/dist/commands/embed.js +10 -0
- package/dist/commands/migrate-observations.js +2 -2
- package/dist/commands/observe.d.ts +1 -0
- package/dist/commands/observe.js +7 -6
- package/dist/commands/rebuild.js +5 -5
- package/dist/commands/reflect.js +3 -3
- package/dist/commands/replay.js +7 -7
- package/dist/commands/setup.d.ts +1 -0
- package/dist/commands/setup.js +2 -2
- package/dist/commands/sleep.d.ts +2 -1
- package/dist/commands/sleep.js +15 -15
- package/dist/commands/status.d.ts +9 -1
- package/dist/commands/status.js +33 -8
- package/dist/commands/wake.d.ts +1 -1
- package/dist/commands/wake.js +6 -6
- package/dist/index.d.ts +82 -5
- package/dist/index.js +127 -105
- package/dist/{types-jjuYN2Xn.d.ts → types-C74wgGL1.d.ts} +2 -0
- package/hooks/clawvault/HOOK.md +83 -74
- package/hooks/clawvault/handler.js +816 -812
- package/hooks/clawvault/handler.test.js +263 -263
- package/package.json +94 -125
- package/templates/checkpoint.md +19 -19
- package/templates/daily-note.md +19 -19
- package/templates/daily.md +19 -19
- package/templates/decision.md +17 -17
- package/templates/handoff.md +19 -19
- package/templates/lesson.md +16 -16
- package/templates/person.md +19 -19
- package/templates/project.md +23 -23
- package/dist/chunk-2RK2AG32.js +0 -743
- package/dist/{chunk-FW465EEA.js → chunk-VXEOHTSL.js} +3 -3
- package/dist/{chunk-KCCHROBR.js → chunk-YOSEUUNB.js} +4 -4
package/README.md
CHANGED
|
@@ -1,199 +1,159 @@
|
|
|
1
|
-
# ClawVault
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
#
|
|
26
|
-
clawvault
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
clawvault
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
clawvault task
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
clawvault
|
|
110
|
-
clawvault
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
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
|
+
[](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();
|