@cavelang/cli 0.27.3 → 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 +416 -109
- 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 +423 -104
- 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,284 @@
|
|
|
1
|
+
/** Read-only installation, runtime, and store diagnostics for `cave doctor`. */
|
|
2
|
+
import { existsSync, readFileSync, statSync } from 'node:fs';
|
|
3
|
+
import { createRequire } from 'node:module';
|
|
4
|
+
import { dirname, join, parse } from 'node:path';
|
|
5
|
+
import { spawnSync } from 'node:child_process';
|
|
6
|
+
import { parseArgs } from 'node:util';
|
|
7
|
+
import { Version } from '@cavelang/core';
|
|
8
|
+
import { Schema, defaultDbPath } from '@cavelang/store';
|
|
9
|
+
import { nodeSqliteAdapter } from '@cavelang/store/adapter/node';
|
|
10
|
+
const requiredNode = '22.18.0';
|
|
11
|
+
const versionParts = (value) => {
|
|
12
|
+
const match = /^(\d+)\.(\d+)\.(\d+)/.exec(value);
|
|
13
|
+
return match === null ? undefined : [Number(match[1]), Number(match[2]), Number(match[3])];
|
|
14
|
+
};
|
|
15
|
+
const numericVersion = (value) => {
|
|
16
|
+
const parts = versionParts(value);
|
|
17
|
+
return parts === undefined ? undefined : parts.join('.');
|
|
18
|
+
};
|
|
19
|
+
const atLeast = (actual, required) => {
|
|
20
|
+
const a = versionParts(actual);
|
|
21
|
+
const b = versionParts(required);
|
|
22
|
+
if (a === undefined || b === undefined)
|
|
23
|
+
return false;
|
|
24
|
+
for (let index = 0; index < 3; index += 1) {
|
|
25
|
+
if (a[index] !== b[index])
|
|
26
|
+
return a[index] > b[index];
|
|
27
|
+
}
|
|
28
|
+
return true;
|
|
29
|
+
};
|
|
30
|
+
const check = (id, status, summary, remediation) => ({ id, status, summary, ...remediation === undefined ? {} : { remediation } });
|
|
31
|
+
const nodeCheck = () => atLeast(process.versions.node, requiredNode) ?
|
|
32
|
+
check('runtime.node', 'pass', `Node ${process.versions.node} satisfies >=${requiredNode}`) :
|
|
33
|
+
check('runtime.node', 'fail', `Node ${process.versions.node} is unsupported`, `Install Node ${requiredNode} or newer and rerun cave doctor.`);
|
|
34
|
+
const sqliteCheck = () => {
|
|
35
|
+
let db;
|
|
36
|
+
try {
|
|
37
|
+
db = nodeSqliteAdapter.open(':memory:');
|
|
38
|
+
db.exec('PRAGMA foreign_keys = ON');
|
|
39
|
+
const sqlite = db.prepare('SELECT sqlite_version() AS version').get()?.['version'];
|
|
40
|
+
const json = db.prepare(`SELECT json_valid('{}') AS available`).get()?.['available'];
|
|
41
|
+
const foreignKeys = db.prepare('PRAGMA foreign_keys').get()?.['foreign_keys'];
|
|
42
|
+
db.exec('CREATE VIRTUAL TABLE doctor_fts USING fts5(value)');
|
|
43
|
+
db.exec('DROP TABLE doctor_fts');
|
|
44
|
+
if (typeof sqlite !== 'string' || json !== 1 || foreignKeys !== 1 ||
|
|
45
|
+
nodeSqliteAdapter.capabilities.loadExtension === undefined) {
|
|
46
|
+
throw new Error('capability unavailable');
|
|
47
|
+
}
|
|
48
|
+
return check('runtime.sqlite', 'pass', `SQLite ${sqlite} supports FTS5, JSON functions, foreign keys, and extension loading`);
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return check('runtime.sqlite', 'fail', 'The Node SQLite runtime lacks a required capability', `Use an official Node ${requiredNode}+ build with SQLite FTS5 and JSON support.`);
|
|
52
|
+
}
|
|
53
|
+
finally {
|
|
54
|
+
db?.close();
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
const grammarCheck = () => {
|
|
58
|
+
try {
|
|
59
|
+
const fromHighlight = createRequire(import.meta.resolve('@cavelang/highlight'));
|
|
60
|
+
const assets = [
|
|
61
|
+
fromHighlight.resolve('@cavelang/tree-sitter-cave/wasm'),
|
|
62
|
+
fromHighlight.resolve('@cavelang/tree-sitter-cave/highlights')
|
|
63
|
+
];
|
|
64
|
+
if (assets.some(asset => !statSync(asset).isFile() || statSync(asset).size === 0)) {
|
|
65
|
+
throw new Error('asset unavailable');
|
|
66
|
+
}
|
|
67
|
+
return check('package.grammar', 'pass', 'Grammar WASM and highlight query are installed');
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return check('package.grammar', 'fail', 'Grammar assets are missing from the installed package layout', 'Reinstall @cavelang/cli without omitting its production dependencies.');
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
const workspaceFrom = (start) => {
|
|
74
|
+
let directory = start;
|
|
75
|
+
while (true) {
|
|
76
|
+
if (existsSync(join(directory, 'pnpm-workspace.yaml'))) {
|
|
77
|
+
try {
|
|
78
|
+
const manifest = JSON.parse(readFileSync(join(directory, 'package.json'), 'utf8'));
|
|
79
|
+
if (typeof manifest.packageManager === 'string' && manifest.packageManager.startsWith('pnpm@')) {
|
|
80
|
+
return { packageManager: manifest.packageManager };
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return { packageManager: 'pnpm' };
|
|
85
|
+
}
|
|
86
|
+
return { packageManager: 'pnpm' };
|
|
87
|
+
}
|
|
88
|
+
const parent = dirname(directory);
|
|
89
|
+
if (parent === directory || directory === parse(directory).root)
|
|
90
|
+
return undefined;
|
|
91
|
+
directory = parent;
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
const pnpmCheck = () => {
|
|
95
|
+
const workspace = workspaceFrom(process.cwd());
|
|
96
|
+
if (workspace === undefined) {
|
|
97
|
+
return check('workspace.pnpm', 'pass', 'pnpm is not required for this installed CLI');
|
|
98
|
+
}
|
|
99
|
+
const result = spawnSync('pnpm', ['--version'], {
|
|
100
|
+
encoding: 'utf8',
|
|
101
|
+
timeout: 3_000,
|
|
102
|
+
stdio: ['ignore', 'pipe', 'ignore']
|
|
103
|
+
});
|
|
104
|
+
const actual = result.status === 0 ? numericVersion(result.stdout.trim()) : undefined;
|
|
105
|
+
const pinned = workspace.packageManager.startsWith('pnpm@');
|
|
106
|
+
const required = pinned ? numericVersion(workspace.packageManager.slice('pnpm@'.length)) : undefined;
|
|
107
|
+
if (actual === undefined) {
|
|
108
|
+
return check('workspace.pnpm', 'fail', 'This workspace requires pnpm, but pnpm is unavailable', 'Enable Corepack or install the pnpm version declared by the workspace.');
|
|
109
|
+
}
|
|
110
|
+
if (required !== undefined && !atLeast(actual, required)) {
|
|
111
|
+
return check('workspace.pnpm', 'fail', `pnpm ${actual} is older than the workspace requirement`, `Enable Corepack or install pnpm ${required}.`);
|
|
112
|
+
}
|
|
113
|
+
return check('workspace.pnpm', 'pass', `pnpm ${actual} satisfies the workspace requirement`);
|
|
114
|
+
};
|
|
115
|
+
const inspectDatabase = (path, source) => {
|
|
116
|
+
const memory = path === ':memory:';
|
|
117
|
+
const exists = memory || existsSync(path);
|
|
118
|
+
const base = { source, kind: memory ? 'memory' : 'file', exists };
|
|
119
|
+
if (!exists) {
|
|
120
|
+
return {
|
|
121
|
+
configuration: base,
|
|
122
|
+
checks: [check('store.database', 'warn', 'The configured database does not exist yet', 'Run cave add to create it, or pass --db for an existing store.')]
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
let db;
|
|
126
|
+
let observed = base;
|
|
127
|
+
try {
|
|
128
|
+
db = nodeSqliteAdapter.open(path, { readOnly: true });
|
|
129
|
+
const version = db.prepare('PRAGMA user_version').get()?.['user_version'];
|
|
130
|
+
if (typeof version !== 'number')
|
|
131
|
+
throw new Error('invalid version');
|
|
132
|
+
const caveObjects = db.prepare(`SELECT count(*) AS count FROM sqlite_schema WHERE name LIKE 'cave_%' OR name LIKE 'idx_cave_%'`).get()?.['count'];
|
|
133
|
+
const configuration = { ...base, schemaVersion: version };
|
|
134
|
+
observed = configuration;
|
|
135
|
+
if (version > Schema.currentVersion) {
|
|
136
|
+
return {
|
|
137
|
+
configuration,
|
|
138
|
+
checks: [check('store.database', 'fail', `Database schema ${version} is newer than supported schema ${Schema.currentVersion}`, 'Upgrade CAVE before opening this database.')]
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
if (version === 0 && caveObjects === 0) {
|
|
142
|
+
return {
|
|
143
|
+
configuration,
|
|
144
|
+
checks: [check('store.database', 'warn', 'The database is readable but is not initialized as a CAVE store', 'Run cave add to initialize it; cave doctor made no changes.')]
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
if (version < Schema.currentVersion) {
|
|
148
|
+
return {
|
|
149
|
+
configuration,
|
|
150
|
+
checks: [check('store.database', 'warn', `Database schema ${version} needs migration to schema ${Schema.currentVersion}`, 'Back up the database, then open it with a normal cave command to migrate it.')]
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
Schema.validate(db, version);
|
|
154
|
+
const integrity = db.prepare('PRAGMA integrity_check').all();
|
|
155
|
+
if (integrity.length !== 1 || integrity[0]?.['integrity_check'] !== 'ok') {
|
|
156
|
+
return {
|
|
157
|
+
configuration,
|
|
158
|
+
checks: [check('store.integrity', 'fail', 'SQLite integrity checking failed', 'Restore a verified backup or recover the database with SQLite tooling.')]
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
const foreignKeys = db.prepare('PRAGMA foreign_key_check').all();
|
|
162
|
+
if (foreignKeys.length > 0) {
|
|
163
|
+
return {
|
|
164
|
+
configuration,
|
|
165
|
+
checks: [check('store.integrity', 'fail', 'The store contains broken foreign-key references', 'Restore a verified backup or repair the affected database rows.')]
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
const claims = db.prepare('SELECT count(*) AS count FROM cave_claim').get()?.['count'];
|
|
169
|
+
if (typeof claims !== 'number')
|
|
170
|
+
throw new Error('invalid count');
|
|
171
|
+
return {
|
|
172
|
+
configuration: { ...configuration, claims },
|
|
173
|
+
checks: [
|
|
174
|
+
check('store.database', 'pass', `CAVE schema ${version} is compatible (${claims} claim(s))`),
|
|
175
|
+
check('store.integrity', 'pass', 'SQLite integrity and foreign-key checks passed')
|
|
176
|
+
]
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
catch {
|
|
180
|
+
return {
|
|
181
|
+
configuration: observed,
|
|
182
|
+
checks: [check('store.database', 'fail', 'The configured database is unreadable or has an incompatible schema', 'Check file permissions, restore a verified backup, or pass --db for another store.')]
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
finally {
|
|
186
|
+
db?.close();
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
const inspectHooks = (path) => {
|
|
190
|
+
if (path === undefined) {
|
|
191
|
+
return {
|
|
192
|
+
configuration: { source: 'none', exists: false },
|
|
193
|
+
check: check('config.hooks', 'pass', 'No optional hooks file was configured')
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
const configuration = { source: 'flag', exists: existsSync(path) };
|
|
197
|
+
if (!configuration.exists) {
|
|
198
|
+
return {
|
|
199
|
+
configuration,
|
|
200
|
+
check: check('config.hooks', 'fail', 'The configured hooks file does not exist', 'Create a JSON object of hook names to shell command strings, or omit --hooks.')
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
try {
|
|
204
|
+
const parsed = JSON.parse(readFileSync(path, 'utf8'));
|
|
205
|
+
if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed))
|
|
206
|
+
throw new Error('invalid');
|
|
207
|
+
const entries = Object.entries(parsed);
|
|
208
|
+
if (entries.some(([name, command]) => name.trim() === '' || typeof command !== 'string')) {
|
|
209
|
+
throw new Error('invalid');
|
|
210
|
+
}
|
|
211
|
+
return {
|
|
212
|
+
configuration: { ...configuration, entries: entries.length },
|
|
213
|
+
check: check('config.hooks', 'pass', `Hooks configuration is valid (${entries.length} entr${entries.length === 1 ? 'y' : 'ies'})`)
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
catch {
|
|
217
|
+
return {
|
|
218
|
+
configuration,
|
|
219
|
+
check: check('config.hooks', 'fail', 'The configured hooks file is unreadable or malformed', 'Use a JSON object whose values are shell command strings.')
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
};
|
|
223
|
+
export const diagnose = (options = {}) => {
|
|
224
|
+
const databasePath = options.db ?? defaultDbPath();
|
|
225
|
+
const databaseSource = options.db !== undefined ? 'flag' :
|
|
226
|
+
process.env['CAVE_DB'] !== undefined ? 'environment' : 'default';
|
|
227
|
+
const database = inspectDatabase(databasePath, databaseSource);
|
|
228
|
+
const hooks = inspectHooks(options.hooks);
|
|
229
|
+
const checks = [
|
|
230
|
+
nodeCheck(),
|
|
231
|
+
sqliteCheck(),
|
|
232
|
+
grammarCheck(),
|
|
233
|
+
pnpmCheck(),
|
|
234
|
+
...database.checks,
|
|
235
|
+
hooks.check
|
|
236
|
+
];
|
|
237
|
+
return {
|
|
238
|
+
format: 'cave.doctor',
|
|
239
|
+
version: 1,
|
|
240
|
+
ok: checks.every(entry => entry.status !== 'fail'),
|
|
241
|
+
caveVersion: Version.current(),
|
|
242
|
+
runtime: { node: process.versions.node, platform: process.platform, arch: process.arch },
|
|
243
|
+
configuration: { database: database.configuration, hooks: hooks.configuration },
|
|
244
|
+
checks
|
|
245
|
+
};
|
|
246
|
+
};
|
|
247
|
+
const render = (report) => {
|
|
248
|
+
const lines = [`cave doctor ${report.caveVersion}`];
|
|
249
|
+
for (const entry of report.checks) {
|
|
250
|
+
lines.push(`${entry.status.toUpperCase().padEnd(4)} ${entry.summary}`);
|
|
251
|
+
if (entry.remediation !== undefined)
|
|
252
|
+
lines.push(` ${entry.remediation}`);
|
|
253
|
+
}
|
|
254
|
+
const failures = report.checks.filter(entry => entry.status === 'fail').length;
|
|
255
|
+
const warnings = report.checks.filter(entry => entry.status === 'warn').length;
|
|
256
|
+
lines.push(report.ok ?
|
|
257
|
+
`result: ready${warnings === 0 ? '' : ` with ${warnings} warning(s)`}` :
|
|
258
|
+
`result: ${failures} problem(s), ${warnings} warning(s)`);
|
|
259
|
+
return `${lines.join('\n')}\n`;
|
|
260
|
+
};
|
|
261
|
+
export const doctorCommand = (argv) => {
|
|
262
|
+
const { values, positionals } = parseArgs({
|
|
263
|
+
args: [...argv],
|
|
264
|
+
options: {
|
|
265
|
+
db: { type: 'string' },
|
|
266
|
+
hooks: { type: 'string' },
|
|
267
|
+
json: { type: 'boolean' }
|
|
268
|
+
},
|
|
269
|
+
allowPositionals: true
|
|
270
|
+
});
|
|
271
|
+
if (positionals.length > 0) {
|
|
272
|
+
return { code: 2, out: '', err: 'cave doctor: unexpected positional arguments\n' };
|
|
273
|
+
}
|
|
274
|
+
const report = diagnose({
|
|
275
|
+
...values.db === undefined ? {} : { db: values.db },
|
|
276
|
+
...values.hooks === undefined ? {} : { hooks: values.hooks }
|
|
277
|
+
});
|
|
278
|
+
return {
|
|
279
|
+
code: report.ok ? 0 : 1,
|
|
280
|
+
out: values.json === true ? `${JSON.stringify(report, undefined, 2)}\n` : render(report),
|
|
281
|
+
err: ''
|
|
282
|
+
};
|
|
283
|
+
};
|
|
284
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../src/eval.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,cAAc,gBAAgB,CAAA"}
|
package/dist/src/eval.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eval.js","sourceRoot":"","sources":["../../src/eval.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,cAAc,gBAAgB,CAAA"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `@cavelang/cli` — the `cave` command (parse / add / query / resolve / derive / act / check / suggest-alias / sync / export / report / reconstruct / demo).
|
|
3
|
-
* Programmatic access to the same implementations lives here
|
|
3
|
+
* Programmatic access to the same implementations lives here; `dispatch`
|
|
4
|
+
* and `runCli` expose the shared awaited command lifecycle.
|
|
4
5
|
*/
|
|
5
|
-
export { actCommand, addCommand, cave, checkCommand, commandHelp, demoCommand, deriveCommand, exportCommand, helpCommand, highlightCommand, importCommand, parseCommand, queryCommand, reconstructCommand, reportCommand, resolveCommand, suggestAliasCommand, syncCommand, usage, versionCommand } from './cli.ts';
|
|
6
|
+
export { actCommand, addCommand, backupCommand, cave, checkCommand, commandHelp, demoCommand, deriveCommand, exportCommand, generateCommand, helpCommand, highlightCommand, importCommand, parseCommand, queryCommand, reconstructCommand, reportCommand, resolveCommand, restoreCommand, suggestAliasCommand, syncCommand, usage, versionCommand } from './cli.ts';
|
|
7
|
+
export { dispatch, runCli } from './dispatch.ts';
|
|
8
|
+
export type { CommandRuntime } from './dispatch.ts';
|
|
9
|
+
export { commandRegistry } from './commands.ts';
|
|
10
|
+
export type { CommandReference } from './commands.ts';
|
|
6
11
|
export type { Output } from './cli.ts';
|
|
12
|
+
export { diagnose, doctorCommand } from './doctor.ts';
|
|
13
|
+
export type { DoctorCheck, DoctorOutput, DoctorReport, DoctorStatus } from './doctor.ts';
|
|
7
14
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,mBAAmB,EAAE,WAAW,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AACnW,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAChD,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AACrD,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACrD,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `@cavelang/cli` — the `cave` command (parse / add / query / resolve / derive / act / check / suggest-alias / sync / export / report / reconstruct / demo).
|
|
3
|
-
* Programmatic access to the same implementations lives here
|
|
3
|
+
* Programmatic access to the same implementations lives here; `dispatch`
|
|
4
|
+
* and `runCli` expose the shared awaited command lifecycle.
|
|
4
5
|
*/
|
|
5
|
-
export { actCommand, addCommand, cave, checkCommand, commandHelp, demoCommand, deriveCommand, exportCommand, helpCommand, highlightCommand, importCommand, parseCommand, queryCommand, reconstructCommand, reportCommand, resolveCommand, suggestAliasCommand, syncCommand, usage, versionCommand } from "./cli.js";
|
|
6
|
+
export { actCommand, addCommand, backupCommand, cave, checkCommand, commandHelp, demoCommand, deriveCommand, exportCommand, generateCommand, helpCommand, highlightCommand, importCommand, parseCommand, queryCommand, reconstructCommand, reportCommand, resolveCommand, restoreCommand, suggestAliasCommand, syncCommand, usage, versionCommand } from "./cli.js";
|
|
7
|
+
export { dispatch, runCli } from "./dispatch.js";
|
|
8
|
+
export { commandRegistry } from "./commands.js";
|
|
9
|
+
export { diagnose, doctorCommand } from "./doctor.js";
|
|
6
10
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,mBAAmB,EAAE,WAAW,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AACnW,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAG/C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../../src/ingest.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,kBAAkB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../src/ingest.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,kBAAkB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/loop.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,cAAc,gBAAgB,CAAA"}
|
package/dist/src/loop.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/loop.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,cAAc,gBAAgB,CAAA"}
|
package/dist/src/main.d.ts
CHANGED
package/dist/src/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":";AACA,
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":";AACA,mEAAmE"}
|
package/dist/src/main.js
CHANGED
|
@@ -1,77 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
/** `cave` binary entry point —
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
if (out !== '') {
|
|
6
|
-
process.stdout.write(out);
|
|
7
|
-
}
|
|
8
|
-
if (err !== '') {
|
|
9
|
-
process.stderr.write(err);
|
|
10
|
-
}
|
|
11
|
-
process.exitCode = code;
|
|
12
|
-
};
|
|
13
|
-
// mcp, ingest, connect, eval, automate and serve own their help text, so `cave help X` becomes `cave X --help`.
|
|
14
|
-
const raw = process.argv.slice(2);
|
|
15
|
-
const argv = raw[0] === 'help' && (raw[1] === 'mcp' || raw[1] === 'ingest' || raw[1] === 'connect' || raw[1] === 'eval' || raw[1] === 'automate' || raw[1] === 'serve') ?
|
|
16
|
-
[raw[1], '--help'] :
|
|
17
|
-
raw;
|
|
18
|
-
if (argv[0] === 'mcp') {
|
|
19
|
-
// Long-running: serves MCP on stdio until the client disconnects.
|
|
20
|
-
const { runMcp } = await import('@cavelang/mcp');
|
|
21
|
-
process.exitCode = await runMcp(argv.slice(1));
|
|
22
|
-
}
|
|
23
|
-
else if (argv[0] === 'ingest') {
|
|
24
|
-
// Long-running: drives an LLM agent over batches of files.
|
|
25
|
-
const { runIngest } = await import('@cavelang/ingest');
|
|
26
|
-
process.exitCode = await runIngest(argv.slice(1));
|
|
27
|
-
}
|
|
28
|
-
else if (argv[0] === 'eval') {
|
|
29
|
-
// Long-running: drives an agent (and optionally a judge) over eval fixtures.
|
|
30
|
-
const { runEval } = await import('@cavelang/eval');
|
|
31
|
-
process.exitCode = await runEval(argv.slice(1));
|
|
32
|
-
}
|
|
33
|
-
else if (argv[0] === 'connect') {
|
|
34
|
-
// Async (URL sources fetch) and potentially long-running (--watch).
|
|
35
|
-
const { runConnect } = await import('@cavelang/connect');
|
|
36
|
-
process.exitCode = await runConnect(argv.slice(1));
|
|
37
|
-
}
|
|
38
|
-
else if (argv[0] === 'automate') {
|
|
39
|
-
// Async (prompt steps run a shell agent) and potentially long-running (the loop).
|
|
40
|
-
const { runAutomate } = await import('@cavelang/automate');
|
|
41
|
-
process.exitCode = await runAutomate(argv.slice(1));
|
|
42
|
-
}
|
|
43
|
-
else if (argv[0] === 'serve') {
|
|
44
|
-
// Long-running: the human read surface serves HTTP until interrupted.
|
|
45
|
-
const { runServe } = await import('@cavelang/view');
|
|
46
|
-
process.exitCode = await runServe(argv.slice(1));
|
|
47
|
-
}
|
|
48
|
-
else if (argv[0] === 'reconstruct') {
|
|
49
|
-
// Async: the LLM policy runs a shell agent once per step.
|
|
50
|
-
const { code, out, err } = await reconstructCommand(argv.slice(1));
|
|
51
|
-
write(code, out, err);
|
|
52
|
-
}
|
|
53
|
-
else if (argv[0] === 'suggest-alias') {
|
|
54
|
-
// Async: the optional judge runs a shell agent.
|
|
55
|
-
const { code, out, err } = await suggestAliasCommand(argv.slice(1));
|
|
56
|
-
write(code, out, err);
|
|
57
|
-
}
|
|
58
|
-
else if (argv[0] === 'highlight' && !argv.includes('--help') && !argv.includes('-h')) {
|
|
59
|
-
// Async (grammar WASM loads on first use); --help stays on the sync path.
|
|
60
|
-
const { code, out, err } = await highlightCommand(argv.slice(1));
|
|
61
|
-
write(code, out, err);
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
const { code, out, err } = cave(argv);
|
|
65
|
-
// Canonical CAVE text going to a terminal gets syntax colors from the same
|
|
66
|
-
// grammar query `cave highlight` uses; piping or NO_COLOR keeps bytes clean.
|
|
67
|
-
const colorize = code === 0 && argv[0] === 'export' && !argv.includes('--out') &&
|
|
68
|
-
out !== '' && process.stdout.isTTY === true && process.env['NO_COLOR'] === undefined;
|
|
69
|
-
if (colorize) {
|
|
70
|
-
const { highlighter } = await import('@cavelang/highlight');
|
|
71
|
-
write(code, (await highlighter()).ansi(out), err);
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
write(code, out, err);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
2
|
+
/** `cave` binary entry point — one lifecycle for every command. */
|
|
3
|
+
import { runCli } from "./dispatch.js";
|
|
4
|
+
process.exitCode = await runCli(process.argv.slice(2));
|
|
77
5
|
//# sourceMappingURL=main.js.map
|
package/dist/src/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":";AACA,
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":";AACA,mEAAmE;AAEnE,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAEtC,OAAO,CAAC,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/mcp.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,cAAc,eAAe,CAAA"}
|
package/dist/src/mcp.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/mcp.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,cAAc,eAAe,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/rules.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,cAAc,iBAAiB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/rules.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,cAAc,iBAAiB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shape.d.ts","sourceRoot":"","sources":["../../src/shape.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,cAAc,iBAAiB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shape.js","sourceRoot":"","sources":["../../src/shape.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,cAAc,iBAAiB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/sync.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,gBAAgB,CAAA"}
|
package/dist/src/sync.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/sync.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,gBAAgB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../src/view.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,gBAAgB,CAAA"}
|
package/dist/src/view.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/view.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,gBAAgB,CAAA"}
|