@vextlabs/theron-cli 0.1.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/LICENSE +15 -0
- package/LICENSE.txt +190 -0
- package/README.md +98 -0
- package/bin/theron +22 -0
- package/bin/theron.js +25 -0
- package/dist/api.d.ts +111 -0
- package/dist/api.js +328 -0
- package/dist/api.js.map +1 -0
- package/dist/auth.d.ts +15 -0
- package/dist/auth.js +92 -0
- package/dist/auth.js.map +1 -0
- package/dist/banner.d.ts +29 -0
- package/dist/banner.js +191 -0
- package/dist/banner.js.map +1 -0
- package/dist/cap_config.d.ts +28 -0
- package/dist/cap_config.js +83 -0
- package/dist/cap_config.js.map +1 -0
- package/dist/config.d.ts +18 -0
- package/dist/config.js +65 -0
- package/dist/config.js.map +1 -0
- package/dist/connections.d.ts +3 -0
- package/dist/connections.js +105 -0
- package/dist/connections.js.map +1 -0
- package/dist/import_claude.d.ts +3 -0
- package/dist/import_claude.js +268 -0
- package/dist/import_claude.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +237 -0
- package/dist/index.js.map +1 -0
- package/dist/onboard.d.ts +3 -0
- package/dist/onboard.js +234 -0
- package/dist/onboard.js.map +1 -0
- package/dist/profile_match.d.ts +15 -0
- package/dist/profile_match.js +107 -0
- package/dist/profile_match.js.map +1 -0
- package/dist/profiles/index.d.ts +20 -0
- package/dist/profiles/index.js +56 -0
- package/dist/profiles/index.js.map +1 -0
- package/dist/profiles/seeds.d.ts +4 -0
- package/dist/profiles/seeds.js +500 -0
- package/dist/profiles/seeds.js.map +1 -0
- package/dist/profiles/types.d.ts +35 -0
- package/dist/profiles/types.js +18 -0
- package/dist/profiles/types.js.map +1 -0
- package/dist/render.d.ts +18 -0
- package/dist/render.js +82 -0
- package/dist/render.js.map +1 -0
- package/dist/repl.d.ts +13 -0
- package/dist/repl.js +821 -0
- package/dist/repl.js.map +1 -0
- package/dist/streaming.d.ts +28 -0
- package/dist/streaming.js +118 -0
- package/dist/streaming.js.map +1 -0
- package/dist/tools/bash.d.ts +8 -0
- package/dist/tools/bash.js +57 -0
- package/dist/tools/bash.js.map +1 -0
- package/dist/tools/edit.d.ts +9 -0
- package/dist/tools/edit.js +42 -0
- package/dist/tools/edit.js.map +1 -0
- package/dist/tools/glob.d.ts +7 -0
- package/dist/tools/glob.js +40 -0
- package/dist/tools/glob.js.map +1 -0
- package/dist/tools/grep.d.ts +9 -0
- package/dist/tools/grep.js +73 -0
- package/dist/tools/grep.js.map +1 -0
- package/dist/tools/index.d.ts +31 -0
- package/dist/tools/index.js +180 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/ls.d.ts +6 -0
- package/dist/tools/ls.js +25 -0
- package/dist/tools/ls.js.map +1 -0
- package/dist/tools/read.d.ts +8 -0
- package/dist/tools/read.js +43 -0
- package/dist/tools/read.js.map +1 -0
- package/dist/tools/stoa.d.ts +34 -0
- package/dist/tools/stoa.js +103 -0
- package/dist/tools/stoa.js.map +1 -0
- package/dist/tools/write.d.ts +7 -0
- package/dist/tools/write.js +15 -0
- package/dist/tools/write.js.map +1 -0
- package/dist/verifiers/ai_ism_check.d.ts +2 -0
- package/dist/verifiers/ai_ism_check.js +48 -0
- package/dist/verifiers/ai_ism_check.js.map +1 -0
- package/dist/verifiers/arithmetic_recheck.d.ts +2 -0
- package/dist/verifiers/arithmetic_recheck.js +74 -0
- package/dist/verifiers/arithmetic_recheck.js.map +1 -0
- package/dist/verifiers/citation_presence.d.ts +2 -0
- package/dist/verifiers/citation_presence.js +42 -0
- package/dist/verifiers/citation_presence.js.map +1 -0
- package/dist/verifiers/em_dash_check.d.ts +2 -0
- package/dist/verifiers/em_dash_check.js +23 -0
- package/dist/verifiers/em_dash_check.js.map +1 -0
- package/dist/verifiers/index.d.ts +16 -0
- package/dist/verifiers/index.js +123 -0
- package/dist/verifiers/index.js.map +1 -0
- package/dist/verifiers/lint.d.ts +2 -0
- package/dist/verifiers/lint.js +90 -0
- package/dist/verifiers/lint.js.map +1 -0
- package/dist/verifiers/style_lint.d.ts +2 -0
- package/dist/verifiers/style_lint.js +115 -0
- package/dist/verifiers/style_lint.js.map +1 -0
- package/dist/verifiers/test_smoke.d.ts +2 -0
- package/dist/verifiers/test_smoke.js +94 -0
- package/dist/verifiers/test_smoke.js.map +1 -0
- package/dist/verifiers/typecheck.d.ts +2 -0
- package/dist/verifiers/typecheck.js +98 -0
- package/dist/verifiers/typecheck.js.map +1 -0
- package/dist/verifiers/types.d.ts +33 -0
- package/dist/verifiers/types.js +23 -0
- package/dist/verifiers/types.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
// Typecheck verifier — runs `tsc --noEmit` (or equivalent project
|
|
2
|
+
// command) against TypeScript files the model touched this turn.
|
|
3
|
+
//
|
|
4
|
+
// Why this exists: code-mode prompts edit code. Without a fast feedback
|
|
5
|
+
// signal, the model has no way of knowing it left a broken file behind
|
|
6
|
+
// until the user runs the project. Claude Code feels magical partly
|
|
7
|
+
// because of this loop — the model edits, tsc complains, the model
|
|
8
|
+
// re-edits and fixes itself.
|
|
9
|
+
//
|
|
10
|
+
// The kernel:
|
|
11
|
+
// 1. Filters touchedFiles to .ts / .tsx (skip if none).
|
|
12
|
+
// 2. Walks up from the first touched file looking for a tsconfig.json.
|
|
13
|
+
// 3. Runs `tsc --noEmit -p <tsconfig>` with a 4s timeout.
|
|
14
|
+
// 4. Parses the output into VerifierIssues, scoped to the touched
|
|
15
|
+
// files (we don't want to surface pre-existing errors in
|
|
16
|
+
// unrelated parts of the project).
|
|
17
|
+
import { spawn } from "node:child_process";
|
|
18
|
+
import path from "node:path";
|
|
19
|
+
import fs from "node:fs";
|
|
20
|
+
function findTsconfig(startDir) {
|
|
21
|
+
let dir = startDir;
|
|
22
|
+
for (let i = 0; i < 8; i++) {
|
|
23
|
+
const candidate = path.join(dir, "tsconfig.json");
|
|
24
|
+
if (fs.existsSync(candidate))
|
|
25
|
+
return candidate;
|
|
26
|
+
const parent = path.dirname(dir);
|
|
27
|
+
if (parent === dir)
|
|
28
|
+
break;
|
|
29
|
+
dir = parent;
|
|
30
|
+
}
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
function isTsFile(p) {
|
|
34
|
+
return /\.(ts|tsx|mts|cts)$/.test(p);
|
|
35
|
+
}
|
|
36
|
+
async function runTsc(tsconfig, cwd) {
|
|
37
|
+
return await new Promise((resolve) => {
|
|
38
|
+
let out = "";
|
|
39
|
+
// Use npx so we don't depend on global tsc — projects with a
|
|
40
|
+
// node_modules/.bin/tsc get the right version automatically.
|
|
41
|
+
const child = spawn("npx", ["--no-install", "tsc", "--noEmit", "-p", tsconfig], {
|
|
42
|
+
cwd,
|
|
43
|
+
env: { ...process.env, FORCE_COLOR: "0" },
|
|
44
|
+
shell: false,
|
|
45
|
+
});
|
|
46
|
+
const timer = setTimeout(() => { try {
|
|
47
|
+
child.kill("SIGKILL");
|
|
48
|
+
}
|
|
49
|
+
catch { /* ignore */ } }, 4000);
|
|
50
|
+
child.stdout?.on("data", (b) => { out += b.toString("utf8"); });
|
|
51
|
+
child.stderr?.on("data", (b) => { out += b.toString("utf8"); });
|
|
52
|
+
child.on("close", () => { clearTimeout(timer); resolve(out); });
|
|
53
|
+
child.on("error", () => { clearTimeout(timer); resolve(""); });
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
export const typecheckKernel = {
|
|
57
|
+
slug: "typecheck",
|
|
58
|
+
describe: "tsc --noEmit on edited .ts/.tsx files",
|
|
59
|
+
async run(ctx) {
|
|
60
|
+
const tsFiles = ctx.touchedFiles.filter(isTsFile);
|
|
61
|
+
if (tsFiles.length === 0)
|
|
62
|
+
return [];
|
|
63
|
+
// Find a tsconfig — walk up from the first touched file (or the
|
|
64
|
+
// CLI's cwd as a fallback).
|
|
65
|
+
const firstPath = path.isAbsolute(tsFiles[0])
|
|
66
|
+
? path.dirname(tsFiles[0])
|
|
67
|
+
: path.dirname(path.join(ctx.cwd, tsFiles[0]));
|
|
68
|
+
const tsconfig = findTsconfig(firstPath) ?? findTsconfig(ctx.cwd);
|
|
69
|
+
if (!tsconfig)
|
|
70
|
+
return [];
|
|
71
|
+
const out = await runTsc(tsconfig, path.dirname(tsconfig));
|
|
72
|
+
if (!out.trim())
|
|
73
|
+
return [];
|
|
74
|
+
// tsc emits one error per line in the form:
|
|
75
|
+
// path/to/file.ts(LINE,COL): error TSXXXX: message
|
|
76
|
+
const ERROR_RE = /^(.+\.tsx?)\((\d+),(\d+)\):\s+(error|warning)\s+(TS\d+):\s+(.+)$/;
|
|
77
|
+
const touchedSet = new Set(tsFiles.map((p) => (path.isAbsolute(p) ? p : path.join(ctx.cwd, p))));
|
|
78
|
+
const issues = [];
|
|
79
|
+
for (const line of out.split(/\r?\n/)) {
|
|
80
|
+
const m = ERROR_RE.exec(line.trim());
|
|
81
|
+
if (!m)
|
|
82
|
+
continue;
|
|
83
|
+
const filePath = path.resolve(path.dirname(tsconfig), m[1]);
|
|
84
|
+
// Only surface errors in files the model TOUCHED this turn.
|
|
85
|
+
// Pre-existing errors in unrelated files are noise.
|
|
86
|
+
if (!touchedSet.has(filePath))
|
|
87
|
+
continue;
|
|
88
|
+
issues.push({
|
|
89
|
+
severity: m[4] === "error" ? "block" : "warn",
|
|
90
|
+
kernel: "typecheck",
|
|
91
|
+
message: `${m[5]}: ${m[6]}`,
|
|
92
|
+
location: `${path.relative(ctx.cwd, filePath)}:${m[2]}`,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
return issues;
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
//# sourceMappingURL=typecheck.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typecheck.js","sourceRoot":"","sources":["../../src/verifiers/typecheck.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,iEAAiE;AACjE,EAAE;AACF,wEAAwE;AACxE,uEAAuE;AACvE,oEAAoE;AACpE,mEAAmE;AACnE,6BAA6B;AAC7B,EAAE;AACF,cAAc;AACd,0DAA0D;AAC1D,yEAAyE;AACzE,4DAA4D;AAC5D,oEAAoE;AACpE,8DAA8D;AAC9D,wCAAwC;AAExC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAGzB,SAAS,YAAY,CAAC,QAAgB;IACpC,IAAI,GAAG,GAAG,QAAQ,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;QAClD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,QAAQ,CAAC,CAAS;IACzB,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,QAAgB,EAAE,GAAW;IACjD,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QACnC,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,6DAA6D;QAC7D,6DAA6D;QAC7D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE;YAC9E,GAAG;YACH,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE;YACzC,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;YAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAChG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAa;IACvC,IAAI,EAAE,WAAW;IACjB,QAAQ,EAAE,uCAAuC;IACjD,KAAK,CAAC,GAAG,CAAC,GAAoB;QAC5B,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAEpC,gEAAgE;QAChE,4BAA4B;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC3C,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClE,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QAEzB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;YAAE,OAAO,EAAE,CAAC;QAE3B,4CAA4C;QAC5C,qDAAqD;QACrD,MAAM,QAAQ,GAAG,kEAAkE,CAAC;QACpF,MAAM,UAAU,GAAG,IAAI,GAAG,CACxB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CACrE,CAAC;QACF,MAAM,MAAM,GAAoB,EAAE,CAAC;QACnC,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACrC,IAAI,CAAC,CAAC;gBAAE,SAAS;YACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,4DAA4D;YAC5D,oDAAoD;YACpD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,SAAS;YACxC,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;gBAC7C,MAAM,EAAE,WAAW;gBACnB,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC3B,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;aACxD,CAAC,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export type VerifierSeverity = "block" | "warn" | "info";
|
|
2
|
+
export interface VerifierIssue {
|
|
3
|
+
severity: VerifierSeverity;
|
|
4
|
+
/** Human-readable kernel name that emitted this (e.g. "typecheck"). */
|
|
5
|
+
kernel: string;
|
|
6
|
+
/** One-line description of what's wrong. */
|
|
7
|
+
message: string;
|
|
8
|
+
/** Optional file:line reference. */
|
|
9
|
+
location?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface VerifierContext {
|
|
12
|
+
/** The absolute cwd the CLI is running in. */
|
|
13
|
+
cwd: string;
|
|
14
|
+
/** The assistant's last turn text — what the model emitted. */
|
|
15
|
+
assistantText: string;
|
|
16
|
+
/** Files the assistant touched this turn (paths the model passed to
|
|
17
|
+
* Write or Edit). Verifiers focus their work on these to keep
|
|
18
|
+
* latency low. */
|
|
19
|
+
touchedFiles: string[];
|
|
20
|
+
/** Profile slug active during this turn. */
|
|
21
|
+
profile: string;
|
|
22
|
+
}
|
|
23
|
+
export interface Verifier {
|
|
24
|
+
/** Slug referenced by profile.verifiers[]. */
|
|
25
|
+
slug: string;
|
|
26
|
+
/** One-line description shown in /tools and the welcome line. */
|
|
27
|
+
describe: string;
|
|
28
|
+
/** Run the kernel against the turn context. Returns issues (empty
|
|
29
|
+
* array if all good). Must complete fast — verifiers run on every
|
|
30
|
+
* turn. Hard cap of ~5s; longer kernels should return [] quickly
|
|
31
|
+
* if they can't finish in time. */
|
|
32
|
+
run: (ctx: VerifierContext) => Promise<VerifierIssue[]>;
|
|
33
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// Verifier kernels — the per-domain "is this output actually correct?"
|
|
2
|
+
// checks that run after every turn that produced output. This is the
|
|
3
|
+
// icing on the cake (per the user's own framing): the model alone does
|
|
4
|
+
// nothing — the verifiers are what make the loop feel SOTA.
|
|
5
|
+
//
|
|
6
|
+
// A verifier is a small function that:
|
|
7
|
+
// 1. Looks at the last assistant turn's text + any tools that ran
|
|
8
|
+
// (especially Write / Edit results — files that were touched).
|
|
9
|
+
// 2. Returns a list of issues — each with severity, location, and a
|
|
10
|
+
// one-line description.
|
|
11
|
+
//
|
|
12
|
+
// Verifiers run LOCALLY in the CLI. They never block the model loop —
|
|
13
|
+
// they emit a summary chip after the turn settles. The model sees the
|
|
14
|
+
// summary in the NEXT user message (auto-prepended) so it can fix its
|
|
15
|
+
// own output without the user having to ask.
|
|
16
|
+
//
|
|
17
|
+
// Severity:
|
|
18
|
+
// "block" — the next turn must address this before continuing (e.g.
|
|
19
|
+
// tsc failed, the code doesn't compile).
|
|
20
|
+
// "warn" — surfaced inline but not blocking (e.g. style lint).
|
|
21
|
+
// "info" — quiet, only shown if requested (e.g. confidence noted).
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/verifiers/types.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,qEAAqE;AACrE,uEAAuE;AACvE,4DAA4D;AAC5D,EAAE;AACF,uCAAuC;AACvC,oEAAoE;AACpE,oEAAoE;AACpE,sEAAsE;AACtE,6BAA6B;AAC7B,EAAE;AACF,sEAAsE;AACtE,sEAAsE;AACtE,sEAAsE;AACtE,6CAA6C;AAC7C,EAAE;AACF,YAAY;AACZ,sEAAsE;AACtE,qDAAqD;AACrD,kEAAkE;AAClE,sEAAsE"}
|
package/package.json
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@vextlabs/theron-cli",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Theron CLI — agentic coding assistant from Vext Labs. Brings the Theron council into your terminal with file/edit/bash tools.",
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
|
+
"homepage": "https://tryvext.com",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/Vext-Labs-Inc/sucrityflash.git",
|
|
10
|
+
"directory": "packages/theron-cli"
|
|
11
|
+
},
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/Vext-Labs-Inc/sucrityflash/issues"
|
|
14
|
+
},
|
|
15
|
+
"bin": {
|
|
16
|
+
"theron": "bin/theron.js"
|
|
17
|
+
},
|
|
18
|
+
"main": "./dist/index.js",
|
|
19
|
+
"type": "module",
|
|
20
|
+
"files": [
|
|
21
|
+
"bin",
|
|
22
|
+
"dist",
|
|
23
|
+
"README.md",
|
|
24
|
+
"LICENSE.txt"
|
|
25
|
+
],
|
|
26
|
+
"publishConfig": {
|
|
27
|
+
"access": "public"
|
|
28
|
+
},
|
|
29
|
+
"engines": {
|
|
30
|
+
"node": ">=18.0.0"
|
|
31
|
+
},
|
|
32
|
+
"scripts": {
|
|
33
|
+
"build": "tsc -p .",
|
|
34
|
+
"dev": "tsc -p . --watch",
|
|
35
|
+
"start": "node ./bin/theron.js",
|
|
36
|
+
"test": "npm run build && node test/sweep.mjs",
|
|
37
|
+
"test:integration": "npm run build && THERON_RUN_INTEGRATION=1 node test/integration.mjs",
|
|
38
|
+
"prepublishOnly": "npm run build"
|
|
39
|
+
},
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"@types/node": "^20.0.0",
|
|
42
|
+
"chalk": "^5.3.0",
|
|
43
|
+
"fast-glob": "^3.3.2",
|
|
44
|
+
"marked": "^12.0.0",
|
|
45
|
+
"marked-terminal": "^7.0.0"
|
|
46
|
+
},
|
|
47
|
+
"devDependencies": {
|
|
48
|
+
"typescript": "^5.4.0"
|
|
49
|
+
},
|
|
50
|
+
"keywords": [
|
|
51
|
+
"theron",
|
|
52
|
+
"vext",
|
|
53
|
+
"cli",
|
|
54
|
+
"ai",
|
|
55
|
+
"coding",
|
|
56
|
+
"agent",
|
|
57
|
+
"council",
|
|
58
|
+
"specialist"
|
|
59
|
+
]
|
|
60
|
+
}
|