clawvault 2.6.0 → 3.0.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.
- package/bin/command-registration.test.js +1 -3
- package/bin/register-core-commands.js +10 -23
- package/bin/register-maintenance-commands.js +3 -20
- package/bin/register-query-commands.js +23 -0
- package/bin/register-task-commands.js +1 -18
- package/bin/register-task-commands.test.js +0 -16
- package/bin/register-vault-operations-commands.js +1 -29
- package/dist/{chunk-QVMXF7FY.js → chunk-3D6BCTP6.js} +39 -1
- package/dist/{chunk-R2MIW5G7.js → chunk-3DHXQHYG.js} +1 -1
- package/dist/{chunk-Q2J5YTUF.js → chunk-3NSBOUT3.js} +73 -36
- package/dist/chunk-3RG5ZIWI.js +10 -0
- package/dist/{chunk-AZYOKJYC.js → chunk-62YTUT6J.js} +2 -2
- package/dist/chunk-6U6MK36V.js +205 -0
- package/dist/{chunk-4QYGFWRM.js → chunk-7R7O6STJ.js} +4 -4
- package/dist/{chunk-VXEOHTSL.js → chunk-C7OK5WKP.js} +4 -4
- package/dist/chunk-CMB7UL7C.js +327 -0
- package/dist/chunk-DEFFDRVP.js +938 -0
- package/dist/{chunk-K3CDT7IH.js → chunk-E7MFQB6D.js} +61 -20
- package/dist/{chunk-ME37YNW3.js → chunk-F2JEUD4J.js} +6 -4
- package/dist/chunk-GAJV4IGR.js +82 -0
- package/dist/chunk-GQSLDZTS.js +560 -0
- package/dist/{chunk-4OXMU5S2.js → chunk-GUKMRGM7.js} +1 -1
- package/dist/{chunk-YOSEUUNB.js → chunk-H34S76MB.js} +6 -6
- package/dist/{chunk-4TE4JMLA.js → chunk-JY6FYXIT.js} +10 -5
- package/dist/chunk-K234IDRJ.js +1073 -0
- package/dist/{chunk-IEVLHNLU.js → chunk-LNJA2UGL.js} +86 -9
- package/dist/{chunk-MFAWT5O5.js → chunk-LYHGEHXG.js} +1 -0
- package/dist/chunk-MFM6K7PU.js +374 -0
- package/dist/{chunk-QWQ3TIKS.js → chunk-N2AXRYLC.js} +1 -1
- package/dist/chunk-PAH27GSN.js +108 -0
- package/dist/{chunk-OIWVQYQF.js → chunk-QBLMXKF2.js} +1 -1
- package/dist/{chunk-FHFUXL6G.js → chunk-QK3UCXWL.js} +2 -2
- package/dist/{chunk-2YDBJS7M.js → chunk-SJSFRIYS.js} +1 -1
- package/dist/{chunk-GSD4ALSI.js → chunk-U55BGUAU.js} +2 -2
- package/dist/{chunk-PBEE567J.js → chunk-VGLOTGAS.js} +1 -1
- package/dist/{chunk-F55HGNU4.js → chunk-WAZ3NLWL.js} +47 -0
- package/dist/{chunk-KL4NAOMO.js → chunk-WGRQ6HDV.js} +1 -1
- package/dist/{chunk-UEOUADMO.js → chunk-YKTA5JOJ.js} +13 -10
- package/dist/{chunk-XAVB4GB4.js → chunk-ZVVFWOLW.js} +4 -4
- package/dist/cli/index.cjs +10033 -0
- package/dist/cli/index.d.cts +5 -0
- package/dist/cli/index.js +20 -18
- package/dist/commands/archive.cjs +287 -0
- package/dist/commands/archive.d.cts +11 -0
- package/dist/commands/archive.js +1 -0
- package/dist/commands/backlog.cjs +721 -0
- package/dist/commands/backlog.d.cts +53 -0
- package/dist/commands/backlog.js +3 -2
- package/dist/commands/blocked.cjs +204 -0
- package/dist/commands/blocked.d.cts +26 -0
- package/dist/commands/blocked.js +3 -2
- package/dist/commands/checkpoint.cjs +244 -0
- package/dist/commands/checkpoint.d.cts +41 -0
- package/dist/commands/checkpoint.js +2 -1
- package/dist/commands/compat.cjs +369 -0
- package/dist/commands/compat.d.cts +28 -0
- package/dist/commands/compat.js +2 -1
- package/dist/commands/context.cjs +2989 -0
- package/dist/commands/context.d.cts +2 -0
- package/dist/commands/context.js +5 -4
- package/dist/commands/doctor.cjs +3062 -0
- package/dist/commands/doctor.d.cts +21 -0
- package/dist/commands/doctor.d.ts +6 -1
- package/dist/commands/doctor.js +13 -11
- package/dist/commands/embed.cjs +232 -0
- package/dist/commands/embed.d.cts +17 -0
- package/dist/commands/embed.js +5 -2
- package/dist/commands/entities.cjs +141 -0
- package/dist/commands/entities.d.cts +7 -0
- package/dist/commands/entities.js +1 -0
- package/dist/commands/graph.cjs +501 -0
- package/dist/commands/graph.d.cts +21 -0
- package/dist/commands/graph.js +1 -0
- package/dist/commands/inject.cjs +1636 -0
- package/dist/commands/inject.d.cts +2 -0
- package/dist/commands/inject.d.ts +1 -1
- package/dist/commands/inject.js +4 -2
- package/dist/commands/kanban.cjs +884 -0
- package/dist/commands/kanban.d.cts +63 -0
- package/dist/commands/kanban.js +4 -3
- package/dist/commands/link.cjs +965 -0
- package/dist/commands/link.d.cts +11 -0
- package/dist/commands/link.js +1 -0
- package/dist/commands/migrate-observations.cjs +362 -0
- package/dist/commands/migrate-observations.d.cts +19 -0
- package/dist/commands/migrate-observations.js +3 -2
- package/dist/commands/observe.cjs +4099 -0
- package/dist/commands/observe.d.cts +23 -0
- package/dist/commands/observe.d.ts +1 -0
- package/dist/commands/observe.js +11 -9
- package/dist/commands/project.cjs +1341 -0
- package/dist/commands/project.d.cts +85 -0
- package/dist/commands/project.js +5 -4
- package/dist/commands/rebuild.cjs +3136 -0
- package/dist/commands/rebuild.d.cts +11 -0
- package/dist/commands/rebuild.js +10 -8
- package/dist/commands/recover.cjs +361 -0
- package/dist/commands/recover.d.cts +38 -0
- package/dist/commands/recover.js +3 -2
- package/dist/commands/reflect.cjs +1008 -0
- package/dist/commands/reflect.d.cts +11 -0
- package/dist/commands/reflect.js +6 -4
- package/dist/commands/repair-session.cjs +457 -0
- package/dist/commands/repair-session.d.cts +38 -0
- package/dist/commands/repair-session.js +1 -0
- package/dist/commands/replay.cjs +4103 -0
- package/dist/commands/replay.d.cts +16 -0
- package/dist/commands/replay.js +12 -10
- package/dist/commands/session-recap.cjs +353 -0
- package/dist/commands/session-recap.d.cts +27 -0
- package/dist/commands/session-recap.js +1 -0
- package/dist/commands/setup.cjs +1345 -0
- package/dist/commands/setup.d.cts +100 -0
- package/dist/commands/setup.d.ts +90 -2
- package/dist/commands/setup.js +21 -2
- package/dist/commands/shell-init.cjs +75 -0
- package/dist/commands/shell-init.d.cts +7 -0
- package/dist/commands/shell-init.js +2 -0
- package/dist/commands/sleep.cjs +6028 -0
- package/dist/commands/sleep.d.cts +36 -0
- package/dist/commands/sleep.d.ts +1 -1
- package/dist/commands/sleep.js +17 -15
- package/dist/commands/status.cjs +2736 -0
- package/dist/commands/status.d.cts +52 -0
- package/dist/commands/status.js +12 -10
- package/dist/commands/tailscale.cjs +1532 -0
- package/dist/commands/tailscale.d.cts +52 -0
- package/dist/commands/tailscale.js +1 -0
- package/dist/commands/task.cjs +1236 -0
- package/dist/commands/task.d.cts +97 -0
- package/dist/commands/task.js +4 -3
- package/dist/commands/template.cjs +457 -0
- package/dist/commands/template.d.cts +36 -0
- package/dist/commands/template.js +2 -1
- package/dist/commands/wake.cjs +2626 -0
- package/dist/commands/wake.d.cts +22 -0
- package/dist/commands/wake.d.ts +1 -1
- package/dist/commands/wake.js +12 -11
- package/dist/context-BUGaWpyL.d.cts +46 -0
- package/dist/index.cjs +14526 -0
- package/dist/index.d.cts +858 -0
- package/dist/index.d.ts +192 -7
- package/dist/index.js +101 -75
- package/dist/{inject-x65KXWPk.d.ts → inject-Bzi5E-By.d.cts} +1 -1
- package/dist/inject-Bzi5E-By.d.ts +137 -0
- package/dist/lib/auto-linker.cjs +176 -0
- package/dist/lib/auto-linker.d.cts +26 -0
- package/dist/lib/auto-linker.js +1 -0
- package/dist/lib/canvas-layout.cjs +136 -0
- package/dist/lib/canvas-layout.d.cts +31 -0
- package/dist/lib/canvas-layout.d.ts +16 -100
- package/dist/lib/canvas-layout.js +78 -20
- package/dist/lib/config.cjs +78 -0
- package/dist/lib/config.d.cts +11 -0
- package/dist/lib/config.js +1 -0
- package/dist/lib/entity-index.cjs +84 -0
- package/dist/lib/entity-index.d.cts +26 -0
- package/dist/lib/entity-index.js +1 -0
- package/dist/lib/project-utils.cjs +864 -0
- package/dist/lib/project-utils.d.cts +97 -0
- package/dist/lib/project-utils.js +4 -3
- package/dist/lib/session-repair.cjs +239 -0
- package/dist/lib/session-repair.d.cts +110 -0
- package/dist/lib/session-repair.js +1 -0
- package/dist/lib/session-utils.cjs +209 -0
- package/dist/lib/session-utils.d.cts +63 -0
- package/dist/lib/session-utils.js +1 -0
- package/dist/lib/tailscale.cjs +1183 -0
- package/dist/lib/tailscale.d.cts +225 -0
- package/dist/lib/tailscale.js +1 -0
- package/dist/lib/task-utils.cjs +1137 -0
- package/dist/lib/task-utils.d.cts +208 -0
- package/dist/lib/task-utils.js +3 -2
- package/dist/lib/template-engine.cjs +47 -0
- package/dist/lib/template-engine.d.cts +11 -0
- package/dist/lib/template-engine.js +1 -0
- package/dist/lib/webdav.cjs +568 -0
- package/dist/lib/webdav.d.cts +109 -0
- package/dist/lib/webdav.js +1 -0
- package/dist/plugin/index.cjs +1907 -0
- package/dist/plugin/index.d.cts +36 -0
- package/dist/plugin/index.d.ts +36 -0
- package/dist/plugin/index.js +572 -0
- package/dist/plugin/inject.cjs +356 -0
- package/dist/plugin/inject.d.cts +54 -0
- package/dist/plugin/inject.d.ts +54 -0
- package/dist/plugin/inject.js +17 -0
- package/dist/plugin/observe.cjs +631 -0
- package/dist/plugin/observe.d.cts +39 -0
- package/dist/plugin/observe.d.ts +39 -0
- package/dist/plugin/observe.js +18 -0
- package/dist/plugin/templates.cjs +593 -0
- package/dist/plugin/templates.d.cts +52 -0
- package/dist/plugin/templates.d.ts +52 -0
- package/dist/plugin/templates.js +25 -0
- package/dist/plugin/types.cjs +18 -0
- package/dist/plugin/types.d.cts +209 -0
- package/dist/plugin/types.d.ts +209 -0
- package/dist/plugin/types.js +0 -0
- package/dist/plugin/vault.cjs +927 -0
- package/dist/plugin/vault.d.cts +68 -0
- package/dist/plugin/vault.d.ts +68 -0
- package/dist/plugin/vault.js +22 -0
- package/dist/{types-C74wgGL1.d.ts → types-Y2_Um2Ls.d.cts} +44 -1
- package/dist/types-Y2_Um2Ls.d.ts +205 -0
- package/hooks/clawvault/handler.js +70 -7
- package/hooks/clawvault/handler.test.js +91 -0
- package/openclaw.plugin.json +56 -0
- package/package.json +17 -7
- package/templates/memory-event.md +67 -0
- package/templates/party.md +63 -0
- package/templates/primitive-registry.yaml +551 -0
- package/templates/run.md +68 -0
- package/templates/trigger.md +68 -0
- package/templates/workspace.md +50 -0
- package/dashboard/lib/graph-diff.js +0 -104
- package/dashboard/lib/graph-diff.test.js +0 -75
- package/dashboard/lib/vault-parser.js +0 -556
- package/dashboard/lib/vault-parser.test.js +0 -254
- package/dashboard/public/app.js +0 -796
- package/dashboard/public/index.html +0 -52
- package/dashboard/public/styles.css +0 -221
- package/dashboard/server.js +0 -374
- package/dist/chunk-HA5M6KJB.js +0 -33
- package/dist/chunk-MAKNAHAW.js +0 -375
- package/dist/chunk-MDIH26GC.js +0 -183
- package/dist/chunk-MGDEINGP.js +0 -99
- package/dist/chunk-RVYA52PY.js +0 -363
- package/dist/commands/canvas.d.ts +0 -15
- package/dist/commands/canvas.js +0 -199
- package/dist/commands/sync-bd.d.ts +0 -10
- package/dist/commands/sync-bd.js +0 -9
|
@@ -1,14 +1,36 @@
|
|
|
1
|
+
import {
|
|
2
|
+
resolveClaudeOAuthToken
|
|
3
|
+
} from "./chunk-PAH27GSN.js";
|
|
4
|
+
|
|
1
5
|
// src/lib/llm-provider.ts
|
|
2
6
|
var DEFAULT_MODELS = {
|
|
3
|
-
anthropic: "claude-
|
|
7
|
+
anthropic: "claude-haiku-4-5",
|
|
4
8
|
openai: "gpt-4o-mini",
|
|
5
9
|
gemini: "gemini-2.0-flash"
|
|
6
10
|
};
|
|
7
|
-
function
|
|
11
|
+
async function resolveAnthropicAuth(fetchImpl) {
|
|
12
|
+
const oauthEnvToken = process.env.ANTHROPIC_OAUTH_TOKEN?.trim();
|
|
13
|
+
if (oauthEnvToken) {
|
|
14
|
+
return { token: oauthEnvToken, isOAuth: true };
|
|
15
|
+
}
|
|
16
|
+
const apiKey = process.env.ANTHROPIC_API_KEY?.trim();
|
|
17
|
+
if (apiKey) {
|
|
18
|
+
return { token: apiKey, isOAuth: false };
|
|
19
|
+
}
|
|
20
|
+
if (process.env.CLAWVAULT_CLAUDE_AUTH) {
|
|
21
|
+
const oauthToken = await resolveClaudeOAuthToken({ fetchImpl });
|
|
22
|
+
if (oauthToken) {
|
|
23
|
+
return { token: oauthToken, isOAuth: true };
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
async function resolveLlmProvider(fetchImpl) {
|
|
8
29
|
if (process.env.CLAWVAULT_NO_LLM) {
|
|
9
30
|
return null;
|
|
10
31
|
}
|
|
11
|
-
|
|
32
|
+
const anthropicAuth = await resolveAnthropicAuth(fetchImpl);
|
|
33
|
+
if (anthropicAuth) {
|
|
12
34
|
return "anthropic";
|
|
13
35
|
}
|
|
14
36
|
if (process.env.OPENAI_API_KEY) {
|
|
@@ -20,7 +42,7 @@ function resolveLlmProvider() {
|
|
|
20
42
|
return null;
|
|
21
43
|
}
|
|
22
44
|
async function requestLlmCompletion(options) {
|
|
23
|
-
const provider = options.provider ?? resolveLlmProvider();
|
|
45
|
+
const provider = options.provider ?? await resolveLlmProvider(options.fetchImpl);
|
|
24
46
|
if (!provider) {
|
|
25
47
|
return "";
|
|
26
48
|
}
|
|
@@ -33,24 +55,43 @@ async function requestLlmCompletion(options) {
|
|
|
33
55
|
return callOpenAI(options, provider);
|
|
34
56
|
}
|
|
35
57
|
async function callAnthropic(options, provider) {
|
|
36
|
-
const
|
|
37
|
-
|
|
58
|
+
const fetchImpl = options.fetchImpl ?? fetch;
|
|
59
|
+
const auth = await resolveAnthropicAuth(fetchImpl);
|
|
60
|
+
if (!auth) {
|
|
38
61
|
return "";
|
|
39
62
|
}
|
|
40
|
-
const
|
|
63
|
+
const headers = auth.isOAuth ? {
|
|
64
|
+
"content-type": "application/json",
|
|
65
|
+
"authorization": `Bearer ${auth.token}`,
|
|
66
|
+
"anthropic-version": "2023-06-01",
|
|
67
|
+
"anthropic-beta": "claude-code-20250219,oauth-2025-04-20",
|
|
68
|
+
"x-app": "cli",
|
|
69
|
+
"user-agent": "claude-cli/1.0.0 (external, cli)"
|
|
70
|
+
} : {
|
|
71
|
+
"content-type": "application/json",
|
|
72
|
+
"x-api-key": auth.token,
|
|
73
|
+
"anthropic-version": "2023-06-01"
|
|
74
|
+
};
|
|
75
|
+
const systemMessages = [];
|
|
76
|
+
if (auth.isOAuth) {
|
|
77
|
+
systemMessages.push({ type: "text", text: "You are Claude Code, Anthropic's official CLI for Claude." });
|
|
78
|
+
}
|
|
79
|
+
if (options.systemPrompt?.trim()) {
|
|
80
|
+
systemMessages.push({ type: "text", text: options.systemPrompt.trim() });
|
|
81
|
+
}
|
|
82
|
+
const body = {
|
|
83
|
+
model: options.model ?? DEFAULT_MODELS[provider],
|
|
84
|
+
temperature: options.temperature ?? 0.1,
|
|
85
|
+
max_tokens: options.maxTokens ?? 1200,
|
|
86
|
+
messages: [{ role: "user", content: options.prompt }]
|
|
87
|
+
};
|
|
88
|
+
if (systemMessages.length > 0) {
|
|
89
|
+
body.system = systemMessages;
|
|
90
|
+
}
|
|
41
91
|
const response = await fetchImpl("https://api.anthropic.com/v1/messages", {
|
|
42
92
|
method: "POST",
|
|
43
|
-
headers
|
|
44
|
-
|
|
45
|
-
"x-api-key": apiKey,
|
|
46
|
-
"anthropic-version": "2023-06-01"
|
|
47
|
-
},
|
|
48
|
-
body: JSON.stringify({
|
|
49
|
-
model: options.model ?? DEFAULT_MODELS[provider],
|
|
50
|
-
temperature: options.temperature ?? 0.1,
|
|
51
|
-
max_tokens: options.maxTokens ?? 1200,
|
|
52
|
-
messages: [{ role: "user", content: options.prompt }]
|
|
53
|
-
})
|
|
93
|
+
headers,
|
|
94
|
+
body: JSON.stringify(body)
|
|
54
95
|
});
|
|
55
96
|
if (!response.ok) {
|
|
56
97
|
throw new Error(`Anthropic request failed (${response.status})`);
|
|
@@ -96,10 +137,10 @@ async function callGemini(options, provider) {
|
|
|
96
137
|
const fetchImpl = options.fetchImpl ?? fetch;
|
|
97
138
|
const model = options.model ?? DEFAULT_MODELS[provider];
|
|
98
139
|
const response = await fetchImpl(
|
|
99
|
-
`https://generativelanguage.googleapis.com/v1beta/models/${model}:generateContent
|
|
140
|
+
`https://generativelanguage.googleapis.com/v1beta/models/${model}:generateContent`,
|
|
100
141
|
{
|
|
101
142
|
method: "POST",
|
|
102
|
-
headers: { "content-type": "application/json" },
|
|
143
|
+
headers: { "content-type": "application/json", "x-goog-api-key": apiKey },
|
|
103
144
|
body: JSON.stringify({
|
|
104
145
|
contents: [{ parts: [{ text: options.prompt }] }],
|
|
105
146
|
generationConfig: {
|
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
} from "./chunk-P5EPF6MB.js";
|
|
4
4
|
import {
|
|
5
5
|
observeActiveSessions
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-LNJA2UGL.js";
|
|
7
7
|
import {
|
|
8
8
|
Observer
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-3NSBOUT3.js";
|
|
10
10
|
import {
|
|
11
11
|
resolveVaultPath
|
|
12
12
|
} from "./chunk-MXSSG3QU.js";
|
|
@@ -291,7 +291,8 @@ async function observeCommand(options) {
|
|
|
291
291
|
threshold: options.threshold,
|
|
292
292
|
reflectThreshold: options.reflectThreshold,
|
|
293
293
|
model: options.model,
|
|
294
|
-
extractTasks: options.extractTasks
|
|
294
|
+
extractTasks: options.extractTasks,
|
|
295
|
+
maxSessions: options.maxSessions
|
|
295
296
|
});
|
|
296
297
|
const failedSessionCount = result.failedSessionCount ?? 0;
|
|
297
298
|
if (options.cron) {
|
|
@@ -379,7 +380,7 @@ async function observeCommand(options) {
|
|
|
379
380
|
await watchSessions(observer, watchPath);
|
|
380
381
|
}
|
|
381
382
|
function registerObserveCommand(program) {
|
|
382
|
-
program.command("observe").description("Observe session files and build observational memory").option("--watch <path>", "Watch session file or directory").option("--active", "Observe active OpenClaw sessions incrementally").option("--cron", "Run one-shot active observation for cron hooks").option("--agent <id>", "OpenClaw agent ID (default: OPENCLAW_AGENT_ID or clawdious)").option("--min-new <bytes>", "Override minimum new-content threshold in bytes").option("--sessions-dir <path>", "Override OpenClaw sessions directory").option("--dry-run", "Show active observation candidates without compressing").option("--threshold <n>", "Compression token threshold", "30000").option("--reflect-threshold <n>", "Reflection token threshold", "40000").option("--model <model>", "LLM model override").option("--extract-tasks", "Extract task-like observations into backlog", true).option("--no-extract-tasks", "Disable task extraction from observations").option("--compress <file>", "One-shot compression for a conversation file").option("--daemon", "Run in detached background mode").option("-v, --vault <path>", "Vault path").action(async (rawOptions) => {
|
|
383
|
+
program.command("observe").description("Observe session files and build observational memory").option("--watch <path>", "Watch session file or directory").option("--active", "Observe active OpenClaw sessions incrementally").option("--cron", "Run one-shot active observation for cron hooks").option("--agent <id>", "OpenClaw agent ID (default: OPENCLAW_AGENT_ID or clawdious)").option("--min-new <bytes>", "Override minimum new-content threshold in bytes").option("--sessions-dir <path>", "Override OpenClaw sessions directory").option("--dry-run", "Show active observation candidates without compressing").option("--max-sessions <n>", "Limit number of sessions to observe (recommended: 10)").option("--threshold <n>", "Compression token threshold", "30000").option("--reflect-threshold <n>", "Reflection token threshold", "40000").option("--model <model>", "LLM model override").option("--extract-tasks", "Extract task-like observations into backlog", true).option("--no-extract-tasks", "Disable task extraction from observations").option("--compress <file>", "One-shot compression for a conversation file").option("--daemon", "Run in detached background mode").option("-v, --vault <path>", "Vault path").action(async (rawOptions) => {
|
|
383
384
|
await observeCommand({
|
|
384
385
|
watch: rawOptions.watch,
|
|
385
386
|
active: rawOptions.active,
|
|
@@ -388,6 +389,7 @@ function registerObserveCommand(program) {
|
|
|
388
389
|
minNew: rawOptions.minNew ? parsePositiveInteger(rawOptions.minNew, "min-new") : void 0,
|
|
389
390
|
sessionsDir: rawOptions.sessionsDir,
|
|
390
391
|
dryRun: rawOptions.dryRun,
|
|
392
|
+
maxSessions: rawOptions.maxSessions ? parsePositiveInteger(rawOptions.maxSessions, "max-sessions") : void 0,
|
|
391
393
|
threshold: parsePositiveInteger(rawOptions.threshold, "threshold"),
|
|
392
394
|
reflectThreshold: parsePositiveInteger(rawOptions.reflectThreshold, "reflect-threshold"),
|
|
393
395
|
model: rawOptions.model,
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import {
|
|
2
|
+
registerTailscaleCommands
|
|
3
|
+
} from "./chunk-THRJVD4L.js";
|
|
4
|
+
import {
|
|
5
|
+
registerObserveCommand
|
|
6
|
+
} from "./chunk-F2JEUD4J.js";
|
|
7
|
+
import {
|
|
8
|
+
registerReflectCommand
|
|
9
|
+
} from "./chunk-SJSFRIYS.js";
|
|
10
|
+
import {
|
|
11
|
+
registerEmbedCommand
|
|
12
|
+
} from "./chunk-7R7O6STJ.js";
|
|
13
|
+
import {
|
|
14
|
+
registerInjectCommand
|
|
15
|
+
} from "./chunk-U55BGUAU.js";
|
|
16
|
+
import {
|
|
17
|
+
resolveVaultPath
|
|
18
|
+
} from "./chunk-MXSSG3QU.js";
|
|
19
|
+
import {
|
|
20
|
+
registerContextCommand
|
|
21
|
+
} from "./chunk-ZVVFWOLW.js";
|
|
22
|
+
import {
|
|
23
|
+
reweave
|
|
24
|
+
} from "./chunk-K234IDRJ.js";
|
|
25
|
+
|
|
26
|
+
// src/commands/reweave.ts
|
|
27
|
+
async function reweaveCommand(options) {
|
|
28
|
+
const vaultPath = resolveVaultPath({ explicitPath: options.vaultPath });
|
|
29
|
+
const result = reweave({
|
|
30
|
+
vaultPath,
|
|
31
|
+
since: options.since,
|
|
32
|
+
dryRun: options.dryRun,
|
|
33
|
+
similarityThreshold: options.threshold
|
|
34
|
+
});
|
|
35
|
+
console.log(`Reweave: scanned ${result.filesScanned} files, checked ${result.observationsChecked} observations`);
|
|
36
|
+
if (result.supersessions.length === 0) {
|
|
37
|
+
console.log("No knowledge updates detected.");
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
console.log(`
|
|
41
|
+
Found ${result.supersessions.length} supersession(s):`);
|
|
42
|
+
for (const s of result.supersessions) {
|
|
43
|
+
console.log(`
|
|
44
|
+
OLD [${s.oldObservation.date}] ${s.oldObservation.content.slice(0, 80)}`);
|
|
45
|
+
console.log(` NEW [${s.newObservation.date}] ${s.newObservation.content.slice(0, 80)}`);
|
|
46
|
+
console.log(` Reason: ${s.reason}`);
|
|
47
|
+
}
|
|
48
|
+
if (result.dryRun) {
|
|
49
|
+
console.log("\n(dry run \u2014 no files modified)");
|
|
50
|
+
} else {
|
|
51
|
+
console.log(`
|
|
52
|
+
${result.supersessions.length} observation(s) marked as superseded.`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function registerReweaveCommand(program) {
|
|
56
|
+
program.command("reweave").description("Backward memory consolidation \u2014 detect and mark superseded observations").option("--since <date>", "Only check observations since this date (YYYY-MM-DD)").option("--dry-run", "Show what would be superseded without writing").option("--threshold <n>", "Entity similarity threshold (0-1, default 0.3)", "0.3").option("-v, --vault <path>", "Vault path").action(async (rawOptions) => {
|
|
57
|
+
await reweaveCommand({
|
|
58
|
+
vaultPath: rawOptions.vault,
|
|
59
|
+
since: rawOptions.since,
|
|
60
|
+
dryRun: rawOptions.dryRun,
|
|
61
|
+
threshold: parseFloat(rawOptions.threshold)
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// src/cli/index.ts
|
|
67
|
+
function registerCliCommands(program) {
|
|
68
|
+
registerContextCommand(program);
|
|
69
|
+
registerInjectCommand(program);
|
|
70
|
+
registerObserveCommand(program);
|
|
71
|
+
registerReflectCommand(program);
|
|
72
|
+
registerEmbedCommand(program);
|
|
73
|
+
registerReweaveCommand(program);
|
|
74
|
+
registerTailscaleCommands(program);
|
|
75
|
+
return program;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export {
|
|
79
|
+
reweaveCommand,
|
|
80
|
+
registerReweaveCommand,
|
|
81
|
+
registerCliCommands
|
|
82
|
+
};
|