@cavelang/cli 0.27.14 → 0.29.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/Authors.md +5 -0
- package/License.md +6 -0
- package/README.md +122 -24
- package/dist/internal/act/action.d.ts +69 -0
- package/dist/internal/act/action.d.ts.map +1 -0
- package/dist/internal/act/action.js +201 -0
- package/dist/internal/act/action.js.map +1 -0
- package/dist/internal/act/declare.d.ts +102 -0
- package/dist/internal/act/declare.d.ts.map +1 -0
- package/dist/internal/act/declare.js +270 -0
- package/dist/internal/act/declare.js.map +1 -0
- package/dist/internal/act/engine.d.ts +103 -0
- package/dist/internal/act/engine.d.ts.map +1 -0
- package/dist/internal/act/engine.js +298 -0
- package/dist/internal/act/engine.js.map +1 -0
- package/dist/internal/act/index.d.ts +27 -0
- package/dist/internal/act/index.d.ts.map +1 -0
- package/dist/internal/act/index.js +25 -0
- package/dist/internal/act/index.js.map +1 -0
- package/dist/internal/automate/automation.d.ts +78 -0
- package/dist/internal/automate/automation.d.ts.map +1 -0
- package/dist/internal/automate/automation.js +135 -0
- package/dist/internal/automate/automation.js.map +1 -0
- package/dist/internal/automate/declare.d.ts +84 -0
- package/dist/internal/automate/declare.d.ts.map +1 -0
- package/dist/internal/automate/declare.js +233 -0
- package/dist/internal/automate/declare.js.map +1 -0
- package/dist/internal/automate/engine.d.ts +125 -0
- package/dist/internal/automate/engine.d.ts.map +1 -0
- package/dist/internal/automate/engine.js +388 -0
- package/dist/internal/automate/engine.js.map +1 -0
- package/dist/internal/automate/index.d.ts +28 -0
- package/dist/internal/automate/index.d.ts.map +1 -0
- package/dist/internal/automate/index.js +26 -0
- package/dist/internal/automate/index.js.map +1 -0
- package/dist/internal/automate/main.d.ts +26 -0
- package/dist/internal/automate/main.d.ts.map +1 -0
- package/dist/internal/automate/main.js +298 -0
- package/dist/internal/automate/main.js.map +1 -0
- package/dist/internal/connect/index.d.ts +26 -0
- package/dist/internal/connect/index.d.ts.map +1 -0
- package/dist/internal/connect/index.js +24 -0
- package/dist/internal/connect/index.js.map +1 -0
- package/dist/internal/connect/main.d.ts +23 -0
- package/dist/internal/connect/main.d.ts.map +1 -0
- package/dist/internal/connect/main.js +330 -0
- package/dist/internal/connect/main.js.map +1 -0
- package/dist/internal/connect/run.d.ts +85 -0
- package/dist/internal/connect/run.d.ts.map +1 -0
- package/dist/internal/connect/run.js +242 -0
- package/dist/internal/connect/run.js.map +1 -0
- package/dist/internal/connect/source.d.ts +44 -0
- package/dist/internal/connect/source.d.ts.map +1 -0
- package/dist/internal/connect/source.js +215 -0
- package/dist/internal/connect/source.js.map +1 -0
- package/dist/internal/connect/template.d.ts +69 -0
- package/dist/internal/connect/template.d.ts.map +1 -0
- package/dist/internal/connect/template.js +221 -0
- package/dist/internal/connect/template.js.map +1 -0
- package/dist/internal/eval/index.d.ts +28 -0
- package/dist/internal/eval/index.d.ts.map +1 -0
- package/dist/internal/eval/index.js +27 -0
- package/dist/internal/eval/index.js.map +1 -0
- package/dist/internal/eval/judge.d.ts +30 -0
- package/dist/internal/eval/judge.d.ts.map +1 -0
- package/dist/internal/eval/judge.js +101 -0
- package/dist/internal/eval/judge.js.map +1 -0
- package/dist/internal/eval/loop.d.ts +64 -0
- package/dist/internal/eval/loop.d.ts.map +1 -0
- package/dist/internal/eval/loop.js +123 -0
- package/dist/internal/eval/loop.js.map +1 -0
- package/dist/internal/eval/main.d.ts +17 -0
- package/dist/internal/eval/main.d.ts.map +1 -0
- package/dist/internal/eval/main.js +236 -0
- package/dist/internal/eval/main.js.map +1 -0
- package/dist/internal/eval/queries.d.ts +74 -0
- package/dist/internal/eval/queries.d.ts.map +1 -0
- package/dist/internal/eval/queries.js +161 -0
- package/dist/internal/eval/queries.js.map +1 -0
- package/dist/internal/eval/run.d.ts +143 -0
- package/dist/internal/eval/run.d.ts.map +1 -0
- package/dist/internal/eval/run.js +376 -0
- package/dist/internal/eval/run.js.map +1 -0
- package/dist/internal/eval/score.d.ts +81 -0
- package/dist/internal/eval/score.d.ts.map +1 -0
- package/dist/internal/eval/score.js +126 -0
- package/dist/internal/eval/score.js.map +1 -0
- package/dist/internal/eval/suite.d.ts +66 -0
- package/dist/internal/eval/suite.d.ts.map +1 -0
- package/dist/internal/eval/suite.js +130 -0
- package/dist/internal/eval/suite.js.map +1 -0
- package/dist/internal/ingest/context.d.ts +20 -0
- package/dist/internal/ingest/context.d.ts.map +1 -0
- package/dist/internal/ingest/context.js +59 -0
- package/dist/internal/ingest/context.js.map +1 -0
- package/dist/internal/ingest/files.d.ts +46 -0
- package/dist/internal/ingest/files.d.ts.map +1 -0
- package/dist/internal/ingest/files.js +115 -0
- package/dist/internal/ingest/files.js.map +1 -0
- package/dist/internal/ingest/index.d.ts +31 -0
- package/dist/internal/ingest/index.d.ts.map +1 -0
- package/dist/internal/ingest/index.js +29 -0
- package/dist/internal/ingest/index.js.map +1 -0
- package/dist/internal/ingest/main.d.ts +12 -0
- package/dist/internal/ingest/main.d.ts.map +1 -0
- package/dist/internal/ingest/main.js +180 -0
- package/dist/internal/ingest/main.js.map +1 -0
- package/dist/internal/ingest/prompt.d.ts +32 -0
- package/dist/internal/ingest/prompt.d.ts.map +1 -0
- package/dist/internal/ingest/prompt.js +75 -0
- package/dist/internal/ingest/prompt.js.map +1 -0
- package/dist/internal/ingest/run.d.ts +142 -0
- package/dist/internal/ingest/run.d.ts.map +1 -0
- package/dist/internal/ingest/run.js +350 -0
- package/dist/internal/ingest/run.js.map +1 -0
- package/dist/internal/ingest/web.d.ts +48 -0
- package/dist/internal/ingest/web.d.ts.map +1 -0
- package/dist/internal/ingest/web.js +140 -0
- package/dist/internal/ingest/web.js.map +1 -0
- package/dist/internal/loop/demo.d.ts +22 -0
- package/dist/internal/loop/demo.d.ts.map +1 -0
- package/dist/internal/loop/demo.js +67 -0
- package/dist/internal/loop/demo.js.map +1 -0
- package/dist/internal/loop/index.d.ts +20 -0
- package/dist/internal/loop/index.d.ts.map +1 -0
- package/dist/internal/loop/index.js +17 -0
- package/dist/internal/loop/index.js.map +1 -0
- package/dist/internal/loop/llm.d.ts +99 -0
- package/dist/internal/loop/llm.d.ts.map +1 -0
- package/dist/internal/loop/llm.js +231 -0
- package/dist/internal/loop/llm.js.map +1 -0
- package/dist/internal/loop/reconstruct.d.ts +87 -0
- package/dist/internal/loop/reconstruct.d.ts.map +1 -0
- package/dist/internal/loop/reconstruct.js +157 -0
- package/dist/internal/loop/reconstruct.js.map +1 -0
- package/dist/internal/loop/sqlite.d.ts +13 -0
- package/dist/internal/loop/sqlite.d.ts.map +1 -0
- package/dist/internal/loop/sqlite.js +33 -0
- package/dist/internal/loop/sqlite.js.map +1 -0
- package/dist/internal/loop/store.d.ts +50 -0
- package/dist/internal/loop/store.d.ts.map +1 -0
- package/dist/internal/loop/store.js +100 -0
- package/dist/internal/loop/store.js.map +1 -0
- package/dist/internal/mcp/bin.d.ts +7 -0
- package/dist/internal/mcp/bin.d.ts.map +1 -0
- package/dist/internal/mcp/bin.js +8 -0
- package/dist/internal/mcp/bin.js.map +1 -0
- package/dist/internal/mcp/index.d.ts +25 -0
- package/dist/internal/mcp/index.d.ts.map +1 -0
- package/dist/internal/mcp/index.js +23 -0
- package/dist/internal/mcp/index.js.map +1 -0
- package/dist/internal/mcp/main.d.ts +23 -0
- package/dist/internal/mcp/main.d.ts.map +1 -0
- package/dist/internal/mcp/main.js +156 -0
- package/dist/internal/mcp/main.js.map +1 -0
- package/dist/internal/mcp/server.d.ts +92 -0
- package/dist/internal/mcp/server.d.ts.map +1 -0
- package/dist/internal/mcp/server.js +251 -0
- package/dist/internal/mcp/server.js.map +1 -0
- package/dist/internal/mcp/tools.d.ts +91 -0
- package/dist/internal/mcp/tools.d.ts.map +1 -0
- package/dist/internal/mcp/tools.js +584 -0
- package/dist/internal/mcp/tools.js.map +1 -0
- package/dist/internal/rules/declare.d.ts +58 -0
- package/dist/internal/rules/declare.d.ts.map +1 -0
- package/dist/internal/rules/declare.js +152 -0
- package/dist/internal/rules/declare.js.map +1 -0
- package/dist/internal/rules/engine.d.ts +125 -0
- package/dist/internal/rules/engine.d.ts.map +1 -0
- package/dist/internal/rules/engine.js +575 -0
- package/dist/internal/rules/engine.js.map +1 -0
- package/dist/internal/rules/index.d.ts +23 -0
- package/dist/internal/rules/index.d.ts.map +1 -0
- package/dist/internal/rules/index.js +21 -0
- package/dist/internal/rules/index.js.map +1 -0
- package/dist/internal/rules/rule.d.ts +88 -0
- package/dist/internal/rules/rule.d.ts.map +1 -0
- package/dist/internal/rules/rule.js +221 -0
- package/dist/internal/rules/rule.js.map +1 -0
- package/dist/internal/shape/check.d.ts +118 -0
- package/dist/internal/shape/check.d.ts.map +1 -0
- package/dist/internal/shape/check.js +331 -0
- package/dist/internal/shape/check.js.map +1 -0
- package/dist/internal/shape/client.d.ts +31 -0
- package/dist/internal/shape/client.d.ts.map +1 -0
- package/dist/internal/shape/client.js +170 -0
- package/dist/internal/shape/client.js.map +1 -0
- package/dist/internal/shape/gate.d.ts +33 -0
- package/dist/internal/shape/gate.d.ts.map +1 -0
- package/dist/internal/shape/gate.js +0 -0
- package/dist/internal/shape/gate.js.map +1 -0
- package/dist/internal/shape/index.d.ts +27 -0
- package/dist/internal/shape/index.d.ts.map +1 -0
- package/dist/internal/shape/index.js +23 -0
- package/dist/internal/shape/index.js.map +1 -0
- package/dist/internal/shape/suggest.d.ts +82 -0
- package/dist/internal/shape/suggest.d.ts.map +1 -0
- package/dist/internal/shape/suggest.js +374 -0
- package/dist/internal/shape/suggest.js.map +1 -0
- package/dist/internal/sync/index.d.ts +22 -0
- package/dist/internal/sync/index.d.ts.map +1 -0
- package/dist/internal/sync/index.js +21 -0
- package/dist/internal/sync/index.js.map +1 -0
- package/dist/internal/sync/sync.d.ts +95 -0
- package/dist/internal/sync/sync.d.ts.map +1 -0
- package/dist/internal/sync/sync.js +342 -0
- package/dist/internal/sync/sync.js.map +1 -0
- package/dist/internal/view/api.d.ts +196 -0
- package/dist/internal/view/api.d.ts.map +1 -0
- package/dist/internal/view/api.js +189 -0
- package/dist/internal/view/api.js.map +1 -0
- package/dist/internal/view/index.d.ts +33 -0
- package/dist/internal/view/index.d.ts.map +1 -0
- package/dist/internal/view/index.js +30 -0
- package/dist/internal/view/index.js.map +1 -0
- package/dist/internal/view/main.d.ts +11 -0
- package/dist/internal/view/main.d.ts.map +1 -0
- package/dist/internal/view/main.js +98 -0
- package/dist/internal/view/main.js.map +1 -0
- package/dist/internal/view/page.d.ts +14 -0
- package/dist/internal/view/page.d.ts.map +1 -0
- package/dist/internal/view/page.js +370 -0
- package/dist/internal/view/page.js.map +1 -0
- package/dist/internal/view/report.d.ts +52 -0
- package/dist/internal/view/report.d.ts.map +1 -0
- package/dist/internal/view/report.js +367 -0
- package/dist/internal/view/report.js.map +1 -0
- package/dist/internal/view/scope.d.ts +11 -0
- package/dist/internal/view/scope.d.ts.map +1 -0
- package/dist/internal/view/scope.js +41 -0
- package/dist/internal/view/scope.js.map +1 -0
- package/dist/internal/view/server.d.ts +35 -0
- package/dist/internal/view/server.d.ts.map +1 -0
- package/dist/internal/view/server.js +141 -0
- package/dist/internal/view/server.js.map +1 -0
- package/dist/src/act.d.ts +3 -0
- package/dist/src/act.d.ts.map +1 -0
- package/dist/src/act.js +3 -0
- package/dist/src/act.js.map +1 -0
- package/dist/src/automate.d.ts +3 -0
- package/dist/src/automate.d.ts.map +1 -0
- package/dist/src/automate.js +3 -0
- package/dist/src/automate.js.map +1 -0
- package/dist/src/cli.d.ts +24 -17
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +408 -107
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands.d.ts +104 -0
- package/dist/src/commands.d.ts.map +1 -0
- package/dist/src/commands.js +33 -0
- package/dist/src/commands.js.map +1 -0
- package/dist/src/connect.d.ts +3 -0
- package/dist/src/connect.d.ts.map +1 -0
- package/dist/src/connect.js +3 -0
- package/dist/src/connect.js.map +1 -0
- package/dist/src/dispatch.d.ts +14 -0
- package/dist/src/dispatch.d.ts.map +1 -0
- package/dist/src/dispatch.js +116 -0
- package/dist/src/dispatch.js.map +1 -0
- package/dist/src/doctor.d.ts +45 -0
- package/dist/src/doctor.d.ts.map +1 -0
- package/dist/src/doctor.js +284 -0
- package/dist/src/doctor.js.map +1 -0
- package/dist/src/eval.d.ts +3 -0
- package/dist/src/eval.d.ts.map +1 -0
- package/dist/src/eval.js +3 -0
- package/dist/src/eval.js.map +1 -0
- package/dist/src/index.d.ts +9 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +6 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/ingest.d.ts +3 -0
- package/dist/src/ingest.d.ts.map +1 -0
- package/dist/src/ingest.js +3 -0
- package/dist/src/ingest.js.map +1 -0
- package/dist/src/loop.d.ts +3 -0
- package/dist/src/loop.d.ts.map +1 -0
- package/dist/src/loop.js +3 -0
- package/dist/src/loop.js.map +1 -0
- package/dist/src/main.d.ts +1 -1
- package/dist/src/main.d.ts.map +1 -1
- package/dist/src/main.js +3 -75
- package/dist/src/main.js.map +1 -1
- package/dist/src/mcp.d.ts +3 -0
- package/dist/src/mcp.d.ts.map +1 -0
- package/dist/src/mcp.js +3 -0
- package/dist/src/mcp.js.map +1 -0
- package/dist/src/rules.d.ts +3 -0
- package/dist/src/rules.d.ts.map +1 -0
- package/dist/src/rules.js +3 -0
- package/dist/src/rules.js.map +1 -0
- package/dist/src/shape.d.ts +3 -0
- package/dist/src/shape.d.ts.map +1 -0
- package/dist/src/shape.js +3 -0
- package/dist/src/shape.js.map +1 -0
- package/dist/src/sync.d.ts +3 -0
- package/dist/src/sync.d.ts.map +1 -0
- package/dist/src/sync.js +3 -0
- package/dist/src/sync.js.map +1 -0
- package/dist/src/view.d.ts +3 -0
- package/dist/src/view.d.ts.map +1 -0
- package/dist/src/view.js +3 -0
- package/dist/src/view.js.map +1 -0
- package/package.json +81 -21
- package/src/act.ts +2 -0
- package/src/automate.ts +2 -0
- package/src/cli.ts +416 -102
- package/src/commands.ts +48 -0
- package/src/connect.ts +2 -0
- package/src/dispatch.ts +141 -0
- package/src/doctor.ts +370 -0
- package/src/eval.ts +2 -0
- package/src/index.ts +9 -2
- package/src/ingest.ts +2 -0
- package/src/loop.ts +2 -0
- package/src/main.ts +3 -66
- package/src/mcp.ts +2 -0
- package/src/rules.ts +2 -0
- package/src/shape.ts +2 -0
- package/src/sync.ts +2 -0
- package/src/view.ts +2 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@cavelang/cli/ingest` — LLM-driven knowledge ingestion.
|
|
3
|
+
*
|
|
4
|
+
* ```sh
|
|
5
|
+
* cave ingest 'src/**' https://example.com/design-notes --db k.db \
|
|
6
|
+
* --agent 'claude -p --mcp-config {mcp-config} --allowedTools "mcp__cave__*"'
|
|
7
|
+
* ```
|
|
8
|
+
*
|
|
9
|
+
* Library API for SDK scripts:
|
|
10
|
+
*
|
|
11
|
+
* ```ts
|
|
12
|
+
* import { run } from '@cavelang/cli/ingest'
|
|
13
|
+
* import { open } from '@cavelang/store'
|
|
14
|
+
*
|
|
15
|
+
* const store = open('k.db')
|
|
16
|
+
* await run({
|
|
17
|
+
* db: 'k.db', store, patterns: ['docs/**'], mode: 'stdout', embed: true,
|
|
18
|
+
* agent: async prompt => callYourSdk(prompt), // returns CAVE text
|
|
19
|
+
* // policy: 'lenient' // strict is the default
|
|
20
|
+
* })
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export * as Context from "./context.js";
|
|
24
|
+
export * as Files from "./files.js";
|
|
25
|
+
export * as Web from "./web.js";
|
|
26
|
+
export { buildPrompt, extractionRules, readInstructions } from "./prompt.js";
|
|
27
|
+
export { caveTextOf, promptFor, run, runShellAgent, selectBatches, writeMcpConfig } from "./run.js";
|
|
28
|
+
export { runIngest } from "./main.js";
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAE5E,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAInG,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `cave ingest` entry — argument parsing and report rendering around
|
|
3
|
+
* `run.ts`. See the package README for agent recipes (Claude Code,
|
|
4
|
+
* Copilot CLI, SDK scripts).
|
|
5
|
+
*/
|
|
6
|
+
export type RunContext = {
|
|
7
|
+
readonly stdout?: NodeJS.WritableStream;
|
|
8
|
+
readonly stderr?: NodeJS.WritableStream;
|
|
9
|
+
readonly signal?: AbortSignal;
|
|
10
|
+
};
|
|
11
|
+
export declare const runIngest: (argv: readonly string[], context?: RunContext) => Promise<number>;
|
|
12
|
+
//# sourceMappingURL=main.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA2CH,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAA;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAA;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAC9B,CAAA;AAED,eAAO,MAAM,SAAS,GAAU,MAAM,SAAS,MAAM,EAAE,EAAE,UAAS,UAAe,KAAG,OAAO,CAAC,MAAM,CAsIjG,CAAA"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `cave ingest` entry — argument parsing and report rendering around
|
|
3
|
+
* `run.ts`. See the package README for agent recipes (Claude Code,
|
|
4
|
+
* Copilot CLI, SDK scripts).
|
|
5
|
+
*/
|
|
6
|
+
import { parseArgs } from 'node:util';
|
|
7
|
+
import { Registry } from '@cavelang/canonical';
|
|
8
|
+
import { defaultDbPath, open } from '@cavelang/store';
|
|
9
|
+
import { promptFor, run, selectBatches, writeMcpConfig } from "./run.js";
|
|
10
|
+
const usage = `cave ingest — LLM-driven ingestion of files and web pages
|
|
11
|
+
|
|
12
|
+
Usage:
|
|
13
|
+
cave ingest [--db <path>] <files/globs/urls...> --agent '<command>' [options]
|
|
14
|
+
|
|
15
|
+
Sources may be file paths, globs, or http(s) URLs. URLs are fetched with
|
|
16
|
+
the built-in fetch; HTML pages are reduced to their readable article text
|
|
17
|
+
(Readability) and embedded into the prompt.
|
|
18
|
+
|
|
19
|
+
Options:
|
|
20
|
+
--db <path> knowledge database (default: $CAVE_DB, or cave.db)
|
|
21
|
+
--agent <template> shell command run once per batch; the prompt is piped
|
|
22
|
+
to stdin and {prompt-file}, {mcp-config}, {db} are
|
|
23
|
+
substituted shell-quoted (write placeholders bare)
|
|
24
|
+
--instructions <md> markdown file with domain instructions for the agent
|
|
25
|
+
--stdout agent prints CAVE text instead of using MCP tools
|
|
26
|
+
--batch <n> files per agent run (default 8)
|
|
27
|
+
--embed inline file contents into prompts (agents without
|
|
28
|
+
file access, e.g. bare SDK loops)
|
|
29
|
+
--force re-ingest files whose content digest is unchanged
|
|
30
|
+
--lenient commit accepted batches and continue after failures;
|
|
31
|
+
default strict mode stages and commits the whole run
|
|
32
|
+
--json print the complete machine-readable result manifest
|
|
33
|
+
--timeout <seconds> per-batch agent timeout (default 600)
|
|
34
|
+
--plan print batches as NDJSON and exit (drive with an SDK)
|
|
35
|
+
--dry-run print the plan and the first prompt, run nothing
|
|
36
|
+
--no-prelude open the store without the standard §5.5 registry
|
|
37
|
+
|
|
38
|
+
Examples:
|
|
39
|
+
cave ingest --db k.db 'src/**/*.ts' README.md \\
|
|
40
|
+
--agent 'claude -p --mcp-config {mcp-config} --allowedTools "mcp__cave__*"'
|
|
41
|
+
cave ingest --db k.db 'docs/**/*.md' --stdout --agent 'copilot -p "$(cat {prompt-file})"'
|
|
42
|
+
cave ingest --db k.db https://example.com/blog/design-notes \\
|
|
43
|
+
--agent 'claude -p --mcp-config {mcp-config} --allowedTools "mcp__cave__*"'
|
|
44
|
+
cave ingest --db k.db 'packages/*/README.md' --plan > plan.ndjson`;
|
|
45
|
+
export const runIngest = async (argv, context = {}) => {
|
|
46
|
+
const stdout = context.stdout ?? process.stdout;
|
|
47
|
+
const stderr = context.stderr ?? process.stderr;
|
|
48
|
+
context.signal?.throwIfAborted();
|
|
49
|
+
const { values, positionals } = parseArgs({
|
|
50
|
+
args: [...argv],
|
|
51
|
+
options: {
|
|
52
|
+
db: { type: 'string' },
|
|
53
|
+
agent: { type: 'string' },
|
|
54
|
+
instructions: { type: 'string' },
|
|
55
|
+
stdout: { type: 'boolean' },
|
|
56
|
+
batch: { type: 'string' },
|
|
57
|
+
embed: { type: 'boolean' },
|
|
58
|
+
force: { type: 'boolean' },
|
|
59
|
+
lenient: { type: 'boolean' },
|
|
60
|
+
json: { type: 'boolean' },
|
|
61
|
+
timeout: { type: 'string' },
|
|
62
|
+
plan: { type: 'boolean' },
|
|
63
|
+
'dry-run': { type: 'boolean' },
|
|
64
|
+
'no-prelude': { type: 'boolean' },
|
|
65
|
+
help: { type: 'boolean', short: 'h' }
|
|
66
|
+
},
|
|
67
|
+
allowPositionals: true
|
|
68
|
+
});
|
|
69
|
+
if (values.help === true) {
|
|
70
|
+
stdout.write(`${usage}\n`);
|
|
71
|
+
return 0;
|
|
72
|
+
}
|
|
73
|
+
if (positionals.length === 0) {
|
|
74
|
+
stderr.write(`cave ingest: sources (files, globs, urls) are required\n\n${usage}\n`);
|
|
75
|
+
return 1;
|
|
76
|
+
}
|
|
77
|
+
const db = values.db ?? defaultDbPath();
|
|
78
|
+
const planning = values.plan === true || values['dry-run'] === true;
|
|
79
|
+
if (values.agent === undefined && !planning) {
|
|
80
|
+
stderr.write('cave ingest: --agent is required (or use --plan / --dry-run)\n');
|
|
81
|
+
return 1;
|
|
82
|
+
}
|
|
83
|
+
const batchSize = values.batch === undefined ? undefined : Number(values.batch);
|
|
84
|
+
if (batchSize !== undefined && (!Number.isInteger(batchSize) || batchSize < 1)) {
|
|
85
|
+
stderr.write(`cave ingest: --batch must be a positive integer, got '${values.batch}'\n`);
|
|
86
|
+
return 1;
|
|
87
|
+
}
|
|
88
|
+
const timeoutSeconds = values.timeout === undefined ? undefined : Number(values.timeout);
|
|
89
|
+
if (timeoutSeconds !== undefined && (!Number.isFinite(timeoutSeconds) || timeoutSeconds <= 0)) {
|
|
90
|
+
stderr.write(`cave ingest: --timeout must be a positive number of seconds, got '${values.timeout}'\n`);
|
|
91
|
+
return 1;
|
|
92
|
+
}
|
|
93
|
+
const noPrelude = values['no-prelude'] === true;
|
|
94
|
+
const store = open(db, noPrelude ? { registry: Registry.empty } : {});
|
|
95
|
+
try {
|
|
96
|
+
const options = {
|
|
97
|
+
db,
|
|
98
|
+
patterns: positionals,
|
|
99
|
+
store,
|
|
100
|
+
mode: values.stdout === true ? 'stdout' : 'mcp',
|
|
101
|
+
...values.agent === undefined ? {} : { agent: values.agent },
|
|
102
|
+
...values.instructions === undefined ? {} : { instructions: values.instructions },
|
|
103
|
+
...batchSize === undefined ? {} : { batchSize },
|
|
104
|
+
...timeoutSeconds === undefined ? {} : { timeoutSeconds },
|
|
105
|
+
embed: values.embed === true,
|
|
106
|
+
force: values.force === true,
|
|
107
|
+
policy: values.lenient === true ? 'lenient' : 'strict',
|
|
108
|
+
noPrelude
|
|
109
|
+
};
|
|
110
|
+
if (planning) {
|
|
111
|
+
const { selection, batches } = await selectBatches(store, options);
|
|
112
|
+
if (values.plan === true) {
|
|
113
|
+
const mcpConfig = writeMcpConfig(db, { noPrelude });
|
|
114
|
+
for (const failure of selection.failures) {
|
|
115
|
+
stdout.write(`${JSON.stringify({
|
|
116
|
+
source: failure.path,
|
|
117
|
+
status: 'rejected',
|
|
118
|
+
failure: failure.kind,
|
|
119
|
+
retryable: failure.retryable,
|
|
120
|
+
...failure.status === undefined ? {} : { httpStatus: failure.status },
|
|
121
|
+
message: failure.message
|
|
122
|
+
})}\n`);
|
|
123
|
+
}
|
|
124
|
+
for (const files of batches) {
|
|
125
|
+
const prompt = promptFor(store, files, options);
|
|
126
|
+
stdout.write(`${JSON.stringify({ files: files.map(file => file.path), prompt, mcpConfig, db })}\n`);
|
|
127
|
+
}
|
|
128
|
+
return 0;
|
|
129
|
+
}
|
|
130
|
+
stdout.write([
|
|
131
|
+
`ingest plan: ${selection.files.length} source(s) in ${batches.length} batch(es), ` +
|
|
132
|
+
`${selection.skipped.length} skipped (unchanged), ${selection.failures.length} rejected`,
|
|
133
|
+
...selection.skipped.map(path => ` skip ${path}`),
|
|
134
|
+
...selection.failures.map(failure => ` reject ${failure.path}: ${failure.kind}, ${failure.retryable ? 'retryable' : 'permanent'} — ${failure.message}`),
|
|
135
|
+
...batches.map((files, index) => ` batch ${index + 1}: ${files.map(file => file.path).join(', ')}`),
|
|
136
|
+
...batches.length > 0 ? ['', '--- prompt for batch 1 ---', promptFor(store, batches[0], options)] : []
|
|
137
|
+
].join('\n') + '\n');
|
|
138
|
+
return 0;
|
|
139
|
+
}
|
|
140
|
+
const report = await run(options);
|
|
141
|
+
context.signal?.throwIfAborted();
|
|
142
|
+
const failed = report.failed > 0 || report.sources.some(source => source.status === 'not-run');
|
|
143
|
+
if (values.json === true) {
|
|
144
|
+
stdout.write(`${JSON.stringify(report, undefined, 2)}\n`);
|
|
145
|
+
return failed ? 1 : 0;
|
|
146
|
+
}
|
|
147
|
+
const lines = [
|
|
148
|
+
`ingest (${report.policy}): ${report.matched} source(s) matched, ${report.skipped.length} skipped (unchanged), ` +
|
|
149
|
+
`${report.batches.length} batch(es), ${report.applied ? 'applied' : 'not applied'}`
|
|
150
|
+
];
|
|
151
|
+
report.batches.forEach((batch, index) => {
|
|
152
|
+
const status = batch.ok ? `+${batch.added} claim(s)` : `FAILED${batch.note === undefined ? '' : ` — ${batch.note}`}`;
|
|
153
|
+
lines.push(`batch ${index + 1}/${report.batches.length} (${batch.files.length} file(s)): ${status}`);
|
|
154
|
+
for (const problem of batch.problems) {
|
|
155
|
+
lines.push(` ${problem}`);
|
|
156
|
+
}
|
|
157
|
+
if (batch.ok && batch.note !== undefined) {
|
|
158
|
+
lines.push(` agent: ${batch.note}`);
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
for (const source of report.sources) {
|
|
162
|
+
const detail = [
|
|
163
|
+
source.batch === undefined ? undefined : `batch ${source.batch}`,
|
|
164
|
+
source.note,
|
|
165
|
+
source.failure === undefined ? undefined :
|
|
166
|
+
`${source.failure}, ${source.retryable === true ? 'retryable' : 'permanent'}` +
|
|
167
|
+
(source.httpStatus === undefined ? '' : ` HTTP ${source.httpStatus}`),
|
|
168
|
+
...source.problems
|
|
169
|
+
].filter((value) => value !== undefined).join('; ');
|
|
170
|
+
lines.push(`source ${source.status}: ${source.path}${detail === '' ? '' : ` — ${detail}`}`);
|
|
171
|
+
}
|
|
172
|
+
lines.push(`done: +${report.added} claim(s)${report.failed > 0 ? `, ${report.failed} failed outcome(s)` : ''}`);
|
|
173
|
+
stdout.write(`${lines.join('\n')}\n`);
|
|
174
|
+
return failed ? 1 : 0;
|
|
175
|
+
}
|
|
176
|
+
finally {
|
|
177
|
+
store.close();
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
//# sourceMappingURL=main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ingestion prompt assembly.
|
|
3
|
+
*
|
|
4
|
+
* One prompt per batch, built from: the CAVE writing card (shared with the
|
|
5
|
+
* MCP server), the spec §14 extraction rules, the user's instructions
|
|
6
|
+
* markdown, the existing-knowledge context slice, the batch's files, and a
|
|
7
|
+
* mode-specific protocol:
|
|
8
|
+
*
|
|
9
|
+
* - `mcp` mode — the agent has the `cave_*` tools; it checks before
|
|
10
|
+
* writing and records via `cave_add`;
|
|
11
|
+
* - `stdout` mode — the agent prints only CAVE text; the orchestrator
|
|
12
|
+
* lints and stores it.
|
|
13
|
+
*/
|
|
14
|
+
export type Mode = 'mcp' | 'stdout';
|
|
15
|
+
/** Spec §14 extraction rules, distilled for the working prompt. */
|
|
16
|
+
export declare const extractionRules = "Extraction rules (CAVE spec \u00A714):\n1. One claim per line; never combine two facts.\n2. Resolve pronouns and vague references to concrete entities.\n3. Record decisions over discussion; skip meta-talk and filler.\n4. Code identifiers, error strings and config values go in backticks.\n5. Merge duplicates \u2014 check what is already recorded before adding.\n6. Preserve uncertainty: @ N% for belief strength, +/- for numeric estimates.\n7. Prefer standard verbs; comments (;) only for nuance that does not fit the triple.\n8. The granularity test: could someone act on this claim later without\n rereading the source? \"app HAS problems\" is useless; \"auth/middleware\n HAS bug: token-expiry #security\" is right.\n9. Reuse established entity names exactly; same entity \u2192 same name everywhere.\n10. Cite the smallest supporting source line or inclusive range on every\n extracted claim: @src:path/to/file#L10 or @src:path/to/file#L10-L20.\n Use the source context printed above each file exactly; line numbers shown\n before embedded content are provenance guides, not part of the content.";
|
|
17
|
+
export type PromptInput = {
|
|
18
|
+
readonly files: readonly {
|
|
19
|
+
path: string;
|
|
20
|
+
content?: string;
|
|
21
|
+
}[];
|
|
22
|
+
/** User instructions markdown, verbatim. */
|
|
23
|
+
readonly instructions?: string;
|
|
24
|
+
/** Existing-knowledge slice from `context.ts`. */
|
|
25
|
+
readonly context?: string;
|
|
26
|
+
readonly mode: Mode;
|
|
27
|
+
};
|
|
28
|
+
/** @returns the full prompt for one batch. */
|
|
29
|
+
export declare const buildPrompt: (input: PromptInput) => string;
|
|
30
|
+
/** Reads the instructions markdown file, when given. */
|
|
31
|
+
export declare const readInstructions: (path: undefined | string) => undefined | string;
|
|
32
|
+
//# sourceMappingURL=prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,MAAM,MAAM,IAAI,GAAG,KAAK,GAAG,QAAQ,CAAA;AAEnC,mEAAmE;AACnE,eAAO,MAAM,eAAe,8lCAegD,CAAA;AAa5E,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC7D,4CAA4C;IAC5C,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,kDAAkD;IAClD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;CACpB,CAAA;AAED,8CAA8C;AAC9C,eAAO,MAAM,WAAW,GAAI,OAAO,WAAW,KAAG,MA2BhD,CAAA;AAED,wDAAwD;AACxD,eAAO,MAAM,gBAAgB,GAAI,MAAM,SAAS,GAAG,MAAM,KAAG,SAAS,GAAG,MACX,CAAA"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ingestion prompt assembly.
|
|
3
|
+
*
|
|
4
|
+
* One prompt per batch, built from: the CAVE writing card (shared with the
|
|
5
|
+
* MCP server), the spec §14 extraction rules, the user's instructions
|
|
6
|
+
* markdown, the existing-knowledge context slice, the batch's files, and a
|
|
7
|
+
* mode-specific protocol:
|
|
8
|
+
*
|
|
9
|
+
* - `mcp` mode — the agent has the `cave_*` tools; it checks before
|
|
10
|
+
* writing and records via `cave_add`;
|
|
11
|
+
* - `stdout` mode — the agent prints only CAVE text; the orchestrator
|
|
12
|
+
* lints and stores it.
|
|
13
|
+
*/
|
|
14
|
+
import { readFileSync } from 'node:fs';
|
|
15
|
+
import { SourceSpan } from '@cavelang/core';
|
|
16
|
+
import { specCard as caveCard } from '@cavelang/cli/mcp';
|
|
17
|
+
/** Spec §14 extraction rules, distilled for the working prompt. */
|
|
18
|
+
export const extractionRules = `Extraction rules (CAVE spec §14):
|
|
19
|
+
1. One claim per line; never combine two facts.
|
|
20
|
+
2. Resolve pronouns and vague references to concrete entities.
|
|
21
|
+
3. Record decisions over discussion; skip meta-talk and filler.
|
|
22
|
+
4. Code identifiers, error strings and config values go in backticks.
|
|
23
|
+
5. Merge duplicates — check what is already recorded before adding.
|
|
24
|
+
6. Preserve uncertainty: @ N% for belief strength, +/- for numeric estimates.
|
|
25
|
+
7. Prefer standard verbs; comments (;) only for nuance that does not fit the triple.
|
|
26
|
+
8. The granularity test: could someone act on this claim later without
|
|
27
|
+
rereading the source? "app HAS problems" is useless; "auth/middleware
|
|
28
|
+
HAS bug: token-expiry #security" is right.
|
|
29
|
+
9. Reuse established entity names exactly; same entity → same name everywhere.
|
|
30
|
+
10. Cite the smallest supporting source line or inclusive range on every
|
|
31
|
+
extracted claim: @src:path/to/file#L10 or @src:path/to/file#L10-L20.
|
|
32
|
+
Use the source context printed above each file exactly; line numbers shown
|
|
33
|
+
before embedded content are provenance guides, not part of the content.`;
|
|
34
|
+
const protocolOf = {
|
|
35
|
+
mcp: `Protocol: you have the cave_* tools connected to the target database.
|
|
36
|
+
Before adding claims about an entity, check what is already recorded
|
|
37
|
+
(cave_query, cave_search, cave_about) and follow the established naming.
|
|
38
|
+
Validate uncertain syntax with cave_lint. Record knowledge with cave_add.
|
|
39
|
+
When finished, reply with one line: "done: <number of claims added>".`,
|
|
40
|
+
stdout: `Protocol: print ONLY CAVE text — one claim per line, optionally inside a
|
|
41
|
+
single \`\`\`cave fenced block. No prose before or after. If the files
|
|
42
|
+
contain nothing worth recording, print exactly: ; no extractable content`
|
|
43
|
+
};
|
|
44
|
+
/** @returns the full prompt for one batch. */
|
|
45
|
+
export const buildPrompt = (input) => {
|
|
46
|
+
const files = input.files.map(file => {
|
|
47
|
+
const source = `@${SourceSpan.context(file.path)}`;
|
|
48
|
+
if (file.content === undefined) {
|
|
49
|
+
return `- ${file.path} — source context ${source}; inspect the file and cite exact lines`;
|
|
50
|
+
}
|
|
51
|
+
const lines = file.content.split(/\r?\n/);
|
|
52
|
+
const width = String(lines.length).length;
|
|
53
|
+
const numbered = lines.map((line, at) => `${String(at + 1).padStart(width)} | ${line}`).join('\n');
|
|
54
|
+
return `### ${file.path}\nSource context: ${source}\n\`\`\`text\n${numbered}\n\`\`\``;
|
|
55
|
+
}).join('\n');
|
|
56
|
+
return [
|
|
57
|
+
'You are ingesting source material into a CAVE knowledge database.',
|
|
58
|
+
'Read the files below and record the important, durable knowledge they contain as CAVE claims.',
|
|
59
|
+
'',
|
|
60
|
+
caveCard,
|
|
61
|
+
'',
|
|
62
|
+
extractionRules,
|
|
63
|
+
...input.instructions === undefined ? [] : ['', '## Ingestion instructions', '', input.instructions.trim()],
|
|
64
|
+
...input.context === undefined ? [] : ['', '## Existing knowledge', '', input.context],
|
|
65
|
+
'',
|
|
66
|
+
'## Files to ingest',
|
|
67
|
+
'',
|
|
68
|
+
files,
|
|
69
|
+
'',
|
|
70
|
+
protocolOf[input.mode]
|
|
71
|
+
].join('\n');
|
|
72
|
+
};
|
|
73
|
+
/** Reads the instructions markdown file, when given. */
|
|
74
|
+
export const readInstructions = (path) => path === undefined ? undefined : readFileSync(path, 'utf8');
|
|
75
|
+
//# sourceMappingURL=prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,QAAQ,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAA;AAIpD,mEAAmE;AACnE,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;4EAe6C,CAAA;AAE5E,MAAM,UAAU,GAAyB;IACvC,GAAG,EAAE;;;;sEAI+D;IACpE,MAAM,EAAE;;yEAE+D;CACxE,CAAA;AAWD,8CAA8C;AAC9C,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAkB,EAAU,EAAE;IACxD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACnC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;QAClD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,KAAK,IAAI,CAAC,IAAI,qBAAqB,MAAM,yCAAyC,CAAA;QAC3F,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACzC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAA;QACzC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAClG,OAAO,OAAO,IAAI,CAAC,IAAI,qBAAqB,MAAM,iBAAiB,QAAQ,UAAU,CAAA;IACvF,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACb,OAAO;QACL,mEAAmE;QACnE,+FAA+F;QAC/F,EAAE;QACF,QAAQ;QACR,EAAE;QACF,eAAe;QACf,GAAG,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,2BAA2B,EAAE,EAAE,EAAE,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QAC3G,GAAG,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,uBAAuB,EAAE,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC;QACtF,EAAE;QACF,oBAAoB;QACpB,EAAE;QACF,KAAK;QACL,EAAE;QACF,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;KACvB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC,CAAA;AAED,wDAAwD;AACxD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAwB,EAAsB,EAAE,CAC/E,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The ingestion orchestrator.
|
|
3
|
+
*
|
|
4
|
+
* `cave ingest` walks a source list (file globs and http(s) URLs — see
|
|
5
|
+
* `web.ts`), skips sources whose content is already ingested (digest
|
|
6
|
+
* provenance claims), batches the rest, composes one prompt per batch,
|
|
7
|
+
* and drives an *agent* over it:
|
|
8
|
+
*
|
|
9
|
+
* - a shell command template (`--agent 'claude -p --mcp-config {mcp-config} …'`)
|
|
10
|
+
* for headless Claude Code / Copilot CLI runs — the prompt is piped to
|
|
11
|
+
* stdin and written to `{prompt-file}`;
|
|
12
|
+
* - a JavaScript function (`agent: async (prompt, files) => text`) for
|
|
13
|
+
* Claude/Copilot SDK scripts using the library API;
|
|
14
|
+
* - or no agent at all — `--plan` emits the batches as NDJSON for a
|
|
15
|
+
* fully external driver.
|
|
16
|
+
*
|
|
17
|
+
* API access for the agent is the MCP server (`{mcp-config}` points at a
|
|
18
|
+
* generated client configuration for `cave mcp --db …`); `--stdout` mode
|
|
19
|
+
* instead treats the agent's stdout as CAVE text and stores it here.
|
|
20
|
+
* Prompts are built lazily per batch, so the injected knowledge context
|
|
21
|
+
* reflects what earlier batches recorded.
|
|
22
|
+
*/
|
|
23
|
+
import { type Store } from '@cavelang/store';
|
|
24
|
+
import * as Files from './files.ts';
|
|
25
|
+
import * as Web from './web.ts';
|
|
26
|
+
import * as Prompt from './prompt.ts';
|
|
27
|
+
/** Shell command template or an in-process SDK adapter. */
|
|
28
|
+
export type Agent = string | ((prompt: string, files: readonly string[], context: AgentContext) => Promise<string>);
|
|
29
|
+
export type AgentContext = {
|
|
30
|
+
/** Database selected for this run; strict mode points at an isolated stage. */
|
|
31
|
+
readonly db: string;
|
|
32
|
+
/** Generated MCP client configuration when the run requested one. */
|
|
33
|
+
readonly mcpConfig?: string;
|
|
34
|
+
};
|
|
35
|
+
export type Policy = 'strict' | 'lenient';
|
|
36
|
+
export type Options = {
|
|
37
|
+
readonly db: string;
|
|
38
|
+
/** Source patterns — file globs and http(s) URLs. */
|
|
39
|
+
readonly patterns: readonly string[];
|
|
40
|
+
/**
|
|
41
|
+
* Literal file paths (relative to `cwd`), selected as-is with no glob
|
|
42
|
+
* expansion — for discovered names, which may contain `[]?*`. Unlike an
|
|
43
|
+
* unmatched pattern, a missing literal path is an error.
|
|
44
|
+
*/
|
|
45
|
+
readonly files?: readonly string[];
|
|
46
|
+
/** Path to an instructions markdown file. */
|
|
47
|
+
readonly instructions?: string;
|
|
48
|
+
readonly agent?: Agent;
|
|
49
|
+
readonly mode?: Prompt.Mode;
|
|
50
|
+
readonly batchSize?: number;
|
|
51
|
+
/** Inline file contents into prompts (for agents without file access). */
|
|
52
|
+
readonly embed?: boolean;
|
|
53
|
+
readonly force?: boolean;
|
|
54
|
+
/** Open generated MCP servers without the standard prelude registry. */
|
|
55
|
+
readonly noPrelude?: boolean;
|
|
56
|
+
readonly timeoutSeconds?: number;
|
|
57
|
+
readonly cwd?: string;
|
|
58
|
+
/** Injection point for URL fetching in tests. */
|
|
59
|
+
readonly fetchImpl?: Web.FetchLike;
|
|
60
|
+
readonly store: Store;
|
|
61
|
+
/** Strict stages the whole run and commits once; lenient commits accepted work batch by batch. */
|
|
62
|
+
readonly policy?: Policy;
|
|
63
|
+
};
|
|
64
|
+
export type BatchReport = {
|
|
65
|
+
readonly files: readonly string[];
|
|
66
|
+
readonly ok: boolean;
|
|
67
|
+
/** Claims produced by this batch; strict failures may discard this staged delta. */
|
|
68
|
+
readonly added: number;
|
|
69
|
+
readonly problems: readonly string[];
|
|
70
|
+
/** Agent's final output line (mcp mode) or a failure note. */
|
|
71
|
+
readonly note?: string;
|
|
72
|
+
};
|
|
73
|
+
export type SourceStatus = 'accepted' | 'rejected' | 'skipped' | 'not-run';
|
|
74
|
+
export type SourceReport = {
|
|
75
|
+
readonly path: string;
|
|
76
|
+
readonly status: SourceStatus;
|
|
77
|
+
readonly batch?: number;
|
|
78
|
+
readonly problems: readonly string[];
|
|
79
|
+
readonly note?: string;
|
|
80
|
+
/** Fetch classification for rejected URL sources. */
|
|
81
|
+
readonly failure?: Web.FailureKind;
|
|
82
|
+
readonly retryable?: boolean;
|
|
83
|
+
readonly httpStatus?: number;
|
|
84
|
+
};
|
|
85
|
+
export type Report = {
|
|
86
|
+
readonly policy: Policy;
|
|
87
|
+
/** Whether this run's accepted changes were applied to the requested store. */
|
|
88
|
+
readonly applied: boolean;
|
|
89
|
+
readonly matched: number;
|
|
90
|
+
readonly skipped: readonly string[];
|
|
91
|
+
readonly batches: readonly BatchReport[];
|
|
92
|
+
/** Complete manifest: one entry for every matched source. */
|
|
93
|
+
readonly sources: readonly SourceReport[];
|
|
94
|
+
/** Claims committed to the requested store (digest bookkeeping excluded). */
|
|
95
|
+
readonly added: number;
|
|
96
|
+
readonly failed: number;
|
|
97
|
+
};
|
|
98
|
+
export type Batch = {
|
|
99
|
+
readonly files: readonly Files.Selected[];
|
|
100
|
+
readonly prompt: string;
|
|
101
|
+
};
|
|
102
|
+
/** Writes an MCP client configuration pointing at `cave mcp --db <db>`. */
|
|
103
|
+
export declare const writeMcpConfig: (db: string, options?: {
|
|
104
|
+
noPrelude?: boolean;
|
|
105
|
+
dir?: string;
|
|
106
|
+
}) => string;
|
|
107
|
+
/** Builds the prompt for one batch against the store's *current* state. */
|
|
108
|
+
export declare const promptFor: (store: Store, files: readonly Files.Selected[], options: Pick<Options, "instructions" | "embed" | "mode" | "cwd">) => string;
|
|
109
|
+
/** Selects and batches the sources to process — file globs, literal paths and URLs. */
|
|
110
|
+
export declare const selectBatches: (store: Store, options: Options) => Promise<{
|
|
111
|
+
selection: Files.Selection & {
|
|
112
|
+
failures: readonly Web.Failure[];
|
|
113
|
+
};
|
|
114
|
+
batches: Files.Selected[][];
|
|
115
|
+
}>;
|
|
116
|
+
/**
|
|
117
|
+
* Runs one shell agent invocation: `{name}` placeholders substituted into
|
|
118
|
+
* the template — each value shell-quoted, so paths with spaces or shell
|
|
119
|
+
* metacharacters stay single arguments — the prompt piped to stdin,
|
|
120
|
+
* stdout captured. Shared with `@cavelang/cli/eval`, whose agents and judges
|
|
121
|
+
* follow the same contract.
|
|
122
|
+
*/
|
|
123
|
+
export declare const runShellAgent: (template: string, prompt: string, substitutions: Readonly<Record<string, string>>, timeoutSeconds: number, cwd: string) => Promise<{
|
|
124
|
+
code: number | null;
|
|
125
|
+
stdout: string;
|
|
126
|
+
error?: string;
|
|
127
|
+
}>;
|
|
128
|
+
/** Extracts CAVE text from stdout-mode agent output (```cave fences win). */
|
|
129
|
+
export declare const caveTextOf: (output: string) => string;
|
|
130
|
+
/**
|
|
131
|
+
* Runs the full ingestion. Strict is the default: the target is copied into
|
|
132
|
+
* an isolated staging store, every generated MCP configuration and `{db}`
|
|
133
|
+
* substitution points there, and one identity-preserving merge applies the
|
|
134
|
+
* complete run only after every batch succeeds. A fatal batch stops further
|
|
135
|
+
* agent calls and discards all staged claims and digests.
|
|
136
|
+
*
|
|
137
|
+
* Lenient mode writes accepted work batch by batch, continues after failures,
|
|
138
|
+
* and withholds digests for rejected sources so the next invocation retries
|
|
139
|
+
* them. The returned source manifest accounts for every matched input.
|
|
140
|
+
*/
|
|
141
|
+
export declare const run: (options: Options) => Promise<Report>;
|
|
142
|
+
//# sourceMappingURL=run.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/run.ts"],"names":[],"mappings":"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"}
|