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
@@ -1,315 +1,22 @@
1
1
  import {
2
- formatAge
3
- } from "../chunk-7ZRP733D.js";
4
- import {
5
- scanVaultLinks
6
- } from "../chunk-4VQTUVH7.js";
2
+ doctor
3
+ } from "../chunk-LMEMZGUV.js";
4
+ import "../chunk-7ZRP733D.js";
5
+ import "../chunk-4VQTUVH7.js";
7
6
  import "../chunk-J7ZWCI2C.js";
8
- import {
9
- checkOpenClawCompatibility
10
- } from "../chunk-PAYUH64O.js";
11
- import {
12
- ClawVault,
13
- findVault
14
- } from "../chunk-7OHQFMJK.js";
15
- import {
16
- hasQmd
17
- } from "../chunk-6B3JWM7J.js";
7
+ import "../chunk-IZEY5S74.js";
8
+ import "../chunk-HRLWZGMA.js";
9
+ import "../chunk-S2IG7VNM.js";
10
+ import "../chunk-5GZFTAL7.js";
11
+ import "../chunk-AY4PGUVL.js";
12
+ import "../chunk-FHFUXL6G.js";
13
+ import "../chunk-O7XHXF7F.js";
14
+ import "../chunk-ITPEXLHA.js";
18
15
  import "../chunk-2CDEETQN.js";
19
- import {
20
- loadMemoryGraphIndex
21
- } from "../chunk-ZZA73MFY.js";
22
-
23
- // src/commands/doctor.ts
24
- import * as fs from "fs";
25
- import * as os from "os";
26
- import * as path from "path";
27
- var CLAWVAULT_DIR = ".clawvault";
28
- var CHECKPOINT_FILE = "last-checkpoint.json";
29
- var DAY_MS = 24 * 60 * 60 * 1e3;
30
- var ACTIVE_USE_DAYS = 7;
31
- function daysSince(date, now = Date.now()) {
32
- return Math.max(0, Math.floor((now - date.getTime()) / DAY_MS));
33
- }
34
- function describeAge(date, now = Date.now()) {
35
- return formatAge(now - date.getTime());
36
- }
37
- function loadCheckpointTimestamp(vaultPath) {
38
- const checkpointPath = path.join(vaultPath, CLAWVAULT_DIR, CHECKPOINT_FILE);
39
- if (!fs.existsSync(checkpointPath)) {
40
- return {};
41
- }
42
- try {
43
- const data = JSON.parse(fs.readFileSync(checkpointPath, "utf-8"));
44
- return { timestamp: data.timestamp };
45
- } catch (err) {
46
- return { error: err?.message || "Failed to parse checkpoint" };
47
- }
48
- }
49
- function getShellConfigPaths(shellPath) {
50
- const home = os.homedir();
51
- const shellName = shellPath ? path.basename(shellPath) : "bash";
52
- if (shellName === "zsh") {
53
- return [path.join(home, ".zshrc"), path.join(home, ".zprofile")];
54
- }
55
- if (shellName === "fish") {
56
- return [path.join(home, ".config", "fish", "config.fish")];
57
- }
58
- return [path.join(home, ".bashrc"), path.join(home, ".bash_profile"), path.join(home, ".profile")];
59
- }
60
- function hasClawvaultPathConfig(paths) {
61
- for (const filePath of paths) {
62
- if (!fs.existsSync(filePath)) continue;
63
- try {
64
- const content = fs.readFileSync(filePath, "utf-8");
65
- if (/CLAWVAULT_PATH\s*=/.test(content)) {
66
- return true;
67
- }
68
- } catch {
69
- }
70
- }
71
- return false;
72
- }
73
- async function resolveVault(vaultPath) {
74
- if (vaultPath) {
75
- const vault = new ClawVault(path.resolve(vaultPath));
76
- await vault.load();
77
- return vault;
78
- }
79
- const envPath = process.env.CLAWVAULT_PATH;
80
- if (envPath) {
81
- const vault = new ClawVault(path.resolve(envPath));
82
- await vault.load();
83
- return vault;
84
- }
85
- const found = await findVault();
86
- if (!found) {
87
- throw new Error("No ClawVault found. Run `clawvault init` first.");
88
- }
89
- return found;
90
- }
91
- async function doctor(vaultPath) {
92
- const checks = [];
93
- let warnings = 0;
94
- let errors = 0;
95
- const compatReport = checkOpenClawCompatibility();
96
- if (compatReport.errors > 0) {
97
- checks.push({
98
- label: "OpenClaw compatibility",
99
- status: "error",
100
- detail: `${compatReport.errors} error(s), ${compatReport.warnings} warning(s)`,
101
- hint: "Run `clawvault compat` for full compatibility diagnostics."
102
- });
103
- errors++;
104
- } else if (compatReport.warnings > 0) {
105
- checks.push({
106
- label: "OpenClaw compatibility",
107
- status: "warn",
108
- detail: `${compatReport.warnings} warning(s)`,
109
- hint: "Run `clawvault compat` for full compatibility diagnostics."
110
- });
111
- warnings++;
112
- } else {
113
- checks.push({
114
- label: "OpenClaw compatibility",
115
- status: "ok"
116
- });
117
- }
118
- if (hasQmd()) {
119
- checks.push({ label: "qmd installed", status: "ok" });
120
- } else {
121
- checks.push({
122
- label: "qmd installed",
123
- status: "error",
124
- hint: "Install qmd to enable ClawVault commands."
125
- });
126
- errors++;
127
- }
128
- const shellConfigs = getShellConfigPaths(process.env.SHELL).filter(fs.existsSync);
129
- if (hasClawvaultPathConfig(shellConfigs)) {
130
- checks.push({
131
- label: "CLAWVAULT_PATH in shell config",
132
- status: "ok",
133
- detail: shellConfigs.map((p) => path.basename(p)).join(", ")
134
- });
135
- } else {
136
- checks.push({
137
- label: "CLAWVAULT_PATH in shell config",
138
- status: "warn",
139
- hint: "Run `clawvault shell-init` and add it to your shell rc."
140
- });
141
- warnings++;
142
- }
143
- if (!hasQmd()) {
144
- return { vaultPath, checks, warnings, errors };
145
- }
146
- let vault;
147
- try {
148
- vault = await resolveVault(vaultPath);
149
- checks.push({ label: "vault found", status: "ok", detail: vault.getPath() });
150
- } catch (err) {
151
- checks.push({
152
- label: "vault found",
153
- status: "error",
154
- detail: err?.message || "Unable to locate vault"
155
- });
156
- errors++;
157
- return { vaultPath, checks, warnings, errors };
158
- }
159
- const stats = await vault.stats();
160
- const documents = await vault.list();
161
- const handoffs = await vault.list("handoffs");
162
- const inbox = await vault.list("inbox");
163
- const qmdCollection = vault.getQmdCollection();
164
- if (qmdCollection) {
165
- checks.push({ label: "qmd collection configured", status: "ok", detail: qmdCollection });
166
- } else {
167
- checks.push({
168
- label: "qmd collection configured",
169
- status: "warn",
170
- hint: "Set qmd collection in .clawvault.json"
171
- });
172
- warnings++;
173
- }
174
- const latestDoc = documents.slice().sort((a, b) => b.modified.getTime() - a.modified.getTime())[0];
175
- const latestDocAge = latestDoc ? daysSince(latestDoc.modified) : null;
176
- const graphIndex = loadMemoryGraphIndex(vault.getPath());
177
- if (!graphIndex) {
178
- checks.push({
179
- label: "memory graph index",
180
- status: "warn",
181
- detail: "No graph index found",
182
- hint: "Run `clawvault graph --refresh` to build .clawvault/graph-index.json."
183
- });
184
- warnings++;
185
- } else {
186
- const generatedAt = new Date(graphIndex.generatedAt);
187
- const generatedAge = describeAge(generatedAt);
188
- const latestDocIsNewer = latestDoc ? latestDoc.modified.getTime() > generatedAt.getTime() + 1e3 : false;
189
- if (latestDocIsNewer) {
190
- checks.push({
191
- label: "memory graph index",
192
- status: "warn",
193
- detail: `Stale graph index (generated ${generatedAge} ago)`,
194
- hint: "Run `clawvault graph --refresh` to resync index."
195
- });
196
- warnings++;
197
- } else {
198
- checks.push({
199
- label: "memory graph index",
200
- status: "ok",
201
- detail: `${graphIndex.graph.stats.nodeCount} nodes, ${graphIndex.graph.stats.edgeCount} edges`
202
- });
203
- }
204
- }
205
- let lastHandoffAge = null;
206
- if (handoffs.length === 0) {
207
- checks.push({
208
- label: "recent handoff",
209
- status: "warn",
210
- hint: "Run `clawvault sleep` at the end of sessions."
211
- });
212
- warnings++;
213
- } else {
214
- const latestHandoff = handoffs.slice().sort((a, b) => b.modified.getTime() - a.modified.getTime())[0];
215
- lastHandoffAge = daysSince(latestHandoff.modified);
216
- const ageLabel = describeAge(latestHandoff.modified);
217
- if (lastHandoffAge > 1) {
218
- checks.push({
219
- label: "recent handoff",
220
- status: "warn",
221
- detail: `Last handoff ${ageLabel} ago`,
222
- hint: "Run `clawvault sleep` before long pauses."
223
- });
224
- warnings++;
225
- } else {
226
- checks.push({
227
- label: "recent handoff",
228
- status: "ok",
229
- detail: `Last handoff ${ageLabel} ago`
230
- });
231
- }
232
- }
233
- const checkpointInfo = loadCheckpointTimestamp(vault.getPath());
234
- const activeUse = latestDocAge !== null && latestDocAge <= ACTIVE_USE_DAYS || lastHandoffAge !== null && lastHandoffAge <= ACTIVE_USE_DAYS;
235
- if (checkpointInfo.error) {
236
- checks.push({
237
- label: "checkpoint freshness",
238
- status: "warn",
239
- detail: checkpointInfo.error
240
- });
241
- warnings++;
242
- } else if (!checkpointInfo.timestamp) {
243
- const status = activeUse ? "warn" : "ok";
244
- if (status === "warn") warnings++;
245
- checks.push({
246
- label: "checkpoint freshness",
247
- status,
248
- detail: activeUse ? "No checkpoint found" : "No checkpoint found (vault appears inactive)",
249
- hint: activeUse ? "Run `clawvault checkpoint` during heavy work." : void 0
250
- });
251
- } else {
252
- const checkpointDate = new Date(checkpointInfo.timestamp);
253
- const checkpointAge = daysSince(checkpointDate);
254
- const ageLabel = describeAge(checkpointDate);
255
- if (activeUse && checkpointAge > 1) {
256
- checks.push({
257
- label: "checkpoint freshness",
258
- status: "warn",
259
- detail: `Last checkpoint ${ageLabel} ago`,
260
- hint: "Checkpoint at least once per active day."
261
- });
262
- warnings++;
263
- } else {
264
- checks.push({
265
- label: "checkpoint freshness",
266
- status: "ok",
267
- detail: `Last checkpoint ${ageLabel} ago`
268
- });
269
- }
270
- }
271
- const linkScan = scanVaultLinks(vault.getPath());
272
- if (linkScan.orphans.length > 20) {
273
- checks.push({
274
- label: "orphan links",
275
- status: "warn",
276
- detail: `${linkScan.orphans.length} orphan link(s)`,
277
- hint: "Run `clawvault link --orphans` to review."
278
- });
279
- warnings++;
280
- } else {
281
- checks.push({
282
- label: "orphan links",
283
- status: "ok",
284
- detail: `${linkScan.orphans.length} orphan link(s)`
285
- });
286
- }
287
- if (inbox.length > 5) {
288
- checks.push({
289
- label: "inbox backlog",
290
- status: "warn",
291
- detail: `${inbox.length} inbox item(s) pending`,
292
- hint: "Process inbox items to keep memory tidy."
293
- });
294
- warnings++;
295
- } else {
296
- checks.push({
297
- label: "inbox backlog",
298
- status: "ok",
299
- detail: `${inbox.length} inbox item(s) pending`
300
- });
301
- }
302
- if (stats.documents < 5) {
303
- checks.push({
304
- label: "vault activity",
305
- status: "warn",
306
- detail: `${stats.documents} total documents`,
307
- hint: "Start capturing decisions, lessons, and projects."
308
- });
309
- warnings++;
310
- }
311
- return { vaultPath: vault.getPath(), checks, warnings, errors };
312
- }
16
+ import "../chunk-ZZA73MFY.js";
17
+ import "../chunk-Z2XBWN7A.js";
18
+ import "../chunk-IOALNTAN.js";
19
+ import "../chunk-QVMXF7FY.js";
313
20
  export {
314
21
  doctor
315
22
  };
@@ -0,0 +1,17 @@
1
+ import { Command } from 'commander';
2
+
3
+ interface EmbedCommandOptions {
4
+ vaultPath?: string;
5
+ quiet?: boolean;
6
+ }
7
+ interface EmbedCommandResult {
8
+ vaultPath: string;
9
+ qmdCollection: string;
10
+ qmdRoot: string;
11
+ startedAt: string;
12
+ finishedAt: string;
13
+ }
14
+ declare function embedCommand(options?: EmbedCommandOptions): Promise<EmbedCommandResult>;
15
+ declare function registerEmbedCommand(program: Command): void;
16
+
17
+ export { type EmbedCommandOptions, type EmbedCommandResult, embedCommand, registerEmbedCommand };
@@ -0,0 +1,10 @@
1
+ import {
2
+ embedCommand,
3
+ registerEmbedCommand
4
+ } from "../chunk-3FP5BJ42.js";
5
+ import "../chunk-O7XHXF7F.js";
6
+ import "../chunk-MXSSG3QU.js";
7
+ export {
8
+ embedCommand,
9
+ registerEmbedCommand
10
+ };
@@ -2,9 +2,9 @@ import {
2
2
  migrateObservations,
3
3
  migrateObservationsCommand,
4
4
  registerMigrateObservationsCommand
5
- } from "../chunk-FW465EEA.js";
6
- import "../chunk-MXSSG3QU.js";
5
+ } from "../chunk-VXEOHTSL.js";
7
6
  import "../chunk-FHFUXL6G.js";
7
+ import "../chunk-MXSSG3QU.js";
8
8
  import "../chunk-Z2XBWN7A.js";
9
9
  export {
10
10
  migrateObservations,
@@ -14,6 +14,7 @@ interface ObserveCommandOptions {
14
14
  minNew?: number;
15
15
  sessionsDir?: string;
16
16
  dryRun?: boolean;
17
+ cron?: boolean;
17
18
  }
18
19
  declare function observeCommand(options: ObserveCommandOptions): Promise<void>;
19
20
  declare function registerObserveCommand(program: Command): void;
@@ -1,17 +1,18 @@
1
1
  import {
2
2
  observeCommand,
3
3
  registerObserveCommand
4
- } from "../chunk-2RK2AG32.js";
4
+ } from "../chunk-OSMS7QIG.js";
5
5
  import "../chunk-P5EPF6MB.js";
6
- import "../chunk-TMZMN7OS.js";
7
- import "../chunk-5GZFTAL7.js";
6
+ import "../chunk-IZEY5S74.js";
8
7
  import "../chunk-HRLWZGMA.js";
8
+ import "../chunk-S2IG7VNM.js";
9
+ import "../chunk-5GZFTAL7.js";
10
+ import "../chunk-FHFUXL6G.js";
9
11
  import "../chunk-ITPEXLHA.js";
10
- import "../chunk-MXSSG3QU.js";
11
- import "../chunk-IOALNTAN.js";
12
12
  import "../chunk-2CDEETQN.js";
13
- import "../chunk-FHFUXL6G.js";
13
+ import "../chunk-MXSSG3QU.js";
14
14
  import "../chunk-Z2XBWN7A.js";
15
+ import "../chunk-IOALNTAN.js";
15
16
  export {
16
17
  observeCommand,
17
18
  registerObserveCommand
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  rebuildCommand,
3
3
  registerRebuildCommand
4
- } from "../chunk-LMCC5OC7.js";
5
- import "../chunk-TMZMN7OS.js";
4
+ } from "../chunk-TPDH3JPP.js";
5
+ import "../chunk-S2IG7VNM.js";
6
6
  import "../chunk-5GZFTAL7.js";
7
+ import "../chunk-FHFUXL6G.js";
7
8
  import "../chunk-ITPEXLHA.js";
8
- import "../chunk-MXSSG3QU.js";
9
- import "../chunk-IOALNTAN.js";
10
9
  import "../chunk-2CDEETQN.js";
11
- import "../chunk-FHFUXL6G.js";
10
+ import "../chunk-MXSSG3QU.js";
12
11
  import "../chunk-Z2XBWN7A.js";
12
+ import "../chunk-IOALNTAN.js";
13
13
  export {
14
14
  rebuildCommand,
15
15
  registerRebuildCommand
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  reflectCommand,
3
3
  registerReflectCommand
4
- } from "../chunk-G3OQJ2NQ.js";
5
- import "../chunk-KCCHROBR.js";
4
+ } from "../chunk-2YDBJS7M.js";
5
+ import "../chunk-YOSEUUNB.js";
6
+ import "../chunk-FHFUXL6G.js";
6
7
  import "../chunk-K3CDT7IH.js";
7
8
  import "../chunk-MQUJNOHK.js";
8
9
  import "../chunk-MXSSG3QU.js";
9
- import "../chunk-FHFUXL6G.js";
10
10
  import "../chunk-Z2XBWN7A.js";
11
11
  export {
12
12
  reflectCommand,
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  registerReplayCommand,
3
3
  replayCommand
4
- } from "../chunk-C3PF7WBA.js";
5
- import "../chunk-KCCHROBR.js";
6
- import "../chunk-K3CDT7IH.js";
7
- import "../chunk-TMZMN7OS.js";
4
+ } from "../chunk-4IV3R2F5.js";
5
+ import "../chunk-YOSEUUNB.js";
6
+ import "../chunk-S2IG7VNM.js";
8
7
  import "../chunk-5GZFTAL7.js";
8
+ import "../chunk-FHFUXL6G.js";
9
+ import "../chunk-K3CDT7IH.js";
9
10
  import "../chunk-ITPEXLHA.js";
11
+ import "../chunk-2CDEETQN.js";
10
12
  import "../chunk-MQUJNOHK.js";
11
13
  import "../chunk-MXSSG3QU.js";
12
- import "../chunk-IOALNTAN.js";
13
- import "../chunk-2CDEETQN.js";
14
- import "../chunk-FHFUXL6G.js";
15
14
  import "../chunk-Z2XBWN7A.js";
15
+ import "../chunk-IOALNTAN.js";
16
16
  export {
17
17
  registerReplayCommand,
18
18
  replayCommand
@@ -5,6 +5,7 @@ interface SetupOptions {
5
5
  theme?: 'neural' | 'minimal' | 'none';
6
6
  force?: boolean;
7
7
  vault?: string;
8
+ qmdIndexName?: string;
8
9
  }
9
10
  declare function setupCommand(options?: SetupOptions): Promise<void>;
10
11
 
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  setupCommand
3
- } from "../chunk-6RQPD7X6.js";
4
- import "../chunk-6B3JWM7J.js";
3
+ } from "../chunk-M25QVSJM.js";
4
+ import "../chunk-O7XHXF7F.js";
5
5
  import "../chunk-2CDEETQN.js";
6
6
  export {
7
7
  setupCommand
@@ -1,4 +1,4 @@
1
- import { H as HandoffDocument, D as Document } from '../types-jjuYN2Xn.js';
1
+ import { H as HandoffDocument, D as Document } from '../types-C74wgGL1.js';
2
2
 
3
3
  type PromptFn = (question: string) => Promise<string>;
4
4
  interface SleepOptions {
@@ -14,6 +14,7 @@ interface SleepOptions {
14
14
  git?: boolean;
15
15
  sessionTranscript?: string;
16
16
  reflect?: boolean;
17
+ qmdIndexName?: string;
17
18
  prompt?: PromptFn;
18
19
  cwd?: string;
19
20
  }
@@ -1,30 +1,30 @@
1
- import {
2
- runReflection
3
- } from "../chunk-KCCHROBR.js";
4
- import "../chunk-K3CDT7IH.js";
5
1
  import {
6
2
  parseSessionFile
7
3
  } from "../chunk-P5EPF6MB.js";
4
+ import {
5
+ runReflection
6
+ } from "../chunk-YOSEUUNB.js";
8
7
  import {
9
8
  Observer
10
- } from "../chunk-TMZMN7OS.js";
9
+ } from "../chunk-S2IG7VNM.js";
11
10
  import "../chunk-5GZFTAL7.js";
12
- import "../chunk-ITPEXLHA.js";
13
- import "../chunk-MQUJNOHK.js";
14
- import "../chunk-IOALNTAN.js";
15
- import {
16
- clearDirtyFlag
17
- } from "../chunk-F55HGNU4.js";
18
11
  import {
19
12
  ClawVault
20
- } from "../chunk-7OHQFMJK.js";
13
+ } from "../chunk-AY4PGUVL.js";
14
+ import "../chunk-FHFUXL6G.js";
21
15
  import {
22
16
  qmdUpdate
23
- } from "../chunk-6B3JWM7J.js";
17
+ } from "../chunk-O7XHXF7F.js";
18
+ import "../chunk-K3CDT7IH.js";
19
+ import "../chunk-ITPEXLHA.js";
24
20
  import "../chunk-2CDEETQN.js";
25
- import "../chunk-FHFUXL6G.js";
21
+ import "../chunk-MQUJNOHK.js";
26
22
  import "../chunk-ZZA73MFY.js";
27
23
  import "../chunk-Z2XBWN7A.js";
24
+ import "../chunk-IOALNTAN.js";
25
+ import {
26
+ clearDirtyFlag
27
+ } from "../chunk-F55HGNU4.js";
28
28
 
29
29
  // src/commands/sleep.ts
30
30
  import * as fs from "fs";
@@ -176,7 +176,7 @@ async function sleep(options) {
176
176
  };
177
177
  await clearDirtyFlag(vault.getPath());
178
178
  if (options.index) {
179
- qmdUpdate(vault.getQmdCollection());
179
+ qmdUpdate(vault.getQmdCollection(), options.qmdIndexName);
180
180
  }
181
181
  const git = await maybeCommitDirtyRepo({
182
182
  enabled: options.git !== false,
@@ -23,6 +23,11 @@ interface VaultStatus {
23
23
  nodeCount?: number;
24
24
  edgeCount?: number;
25
25
  };
26
+ observer: {
27
+ staleCount: number;
28
+ oldestMs: number;
29
+ newestMs: number;
30
+ };
26
31
  git?: {
27
32
  repoRoot: string;
28
33
  clean: boolean;
@@ -35,10 +40,13 @@ interface VaultStatus {
35
40
  documents: number;
36
41
  categories: Record<string, number>;
37
42
  }
38
- declare function getStatus(vaultPath: string): Promise<VaultStatus>;
43
+ declare function getStatus(vaultPath: string, options?: {
44
+ qmdIndexName?: string;
45
+ }): Promise<VaultStatus>;
39
46
  declare function formatStatus(status: VaultStatus): string;
40
47
  declare function statusCommand(vaultPath: string, options?: {
41
48
  json?: boolean;
49
+ qmdIndexName?: string;
42
50
  }): Promise<void>;
43
51
 
44
52
  export { type VaultStatus, formatStatus, getStatus, statusCommand };