@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
package/dist/render.js
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
// Render — terminal output formatting. Markdown via marked-terminal,
|
|
2
|
+
// diffs for Edit confirmations, tool labels with a colored prefix.
|
|
3
|
+
import chalk from "chalk";
|
|
4
|
+
import { marked } from "marked";
|
|
5
|
+
// marked-terminal ships JS-only; suppress the missing-types error.
|
|
6
|
+
// @ts-expect-error — no .d.ts shipped with marked-terminal
|
|
7
|
+
import { markedTerminal } from "marked-terminal";
|
|
8
|
+
let _renderInitialized = false;
|
|
9
|
+
function initRenderer() {
|
|
10
|
+
if (_renderInitialized)
|
|
11
|
+
return;
|
|
12
|
+
marked.use(markedTerminal({
|
|
13
|
+
width: Math.max(60, Math.min(120, process.stdout.columns ?? 100)),
|
|
14
|
+
reflowText: true,
|
|
15
|
+
showSectionPrefix: false,
|
|
16
|
+
}));
|
|
17
|
+
_renderInitialized = true;
|
|
18
|
+
}
|
|
19
|
+
export function renderMarkdown(md) {
|
|
20
|
+
initRenderer();
|
|
21
|
+
return marked.parse(md, { async: false });
|
|
22
|
+
}
|
|
23
|
+
export const ui = {
|
|
24
|
+
brand: () => chalk.bold.hex("#FFAE00")("theron"),
|
|
25
|
+
user: (s) => chalk.cyan(s),
|
|
26
|
+
toolLabel: (name, detail) => `${chalk.dim("·")} ${chalk.hex("#FFAE00")(name)} ${chalk.dim(detail)}`,
|
|
27
|
+
toolResult: (s) => chalk.dim(s),
|
|
28
|
+
error: (s) => chalk.red(`✗ ${s}`),
|
|
29
|
+
warn: (s) => chalk.yellow(`! ${s}`),
|
|
30
|
+
info: (s) => chalk.dim(s),
|
|
31
|
+
prompt: () => chalk.bold.hex("#FFAE00")("> "),
|
|
32
|
+
/** Headline shown above streamed text — same role as the amber pill on web. */
|
|
33
|
+
planHeadline: (s) => chalk.italic.hex("#FFAE00")(`◇ ${s}`),
|
|
34
|
+
/** Numbered suggested-action chip in the post-stream footer. */
|
|
35
|
+
actionChip: (n, label) => `${chalk.hex("#FFAE00")(`[${n}]`)} ${chalk.dim(label)}`,
|
|
36
|
+
diffLine: (line) => {
|
|
37
|
+
if (line.startsWith("+"))
|
|
38
|
+
return chalk.green(line);
|
|
39
|
+
if (line.startsWith("-"))
|
|
40
|
+
return chalk.red(line);
|
|
41
|
+
if (line.startsWith("@@"))
|
|
42
|
+
return chalk.cyan(line);
|
|
43
|
+
return chalk.dim(line);
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
/** Compact unified diff between old and new content. */
|
|
47
|
+
export function unifiedDiff(oldText, newText, filename = "") {
|
|
48
|
+
// Minimal LCS-ish diff for short strings — we don't ship full diff
|
|
49
|
+
// here because the server-side Edit only does one substring swap.
|
|
50
|
+
// Just show the swap with a few context lines on each side.
|
|
51
|
+
const oldLines = oldText.split(/\r?\n/);
|
|
52
|
+
const newLines = newText.split(/\r?\n/);
|
|
53
|
+
const headerOld = filename ? `--- ${filename}` : "--- a";
|
|
54
|
+
const headerNew = filename ? `+++ ${filename}` : "+++ b";
|
|
55
|
+
// Find first/last differing line
|
|
56
|
+
let firstDiff = 0;
|
|
57
|
+
while (firstDiff < oldLines.length && firstDiff < newLines.length && oldLines[firstDiff] === newLines[firstDiff]) {
|
|
58
|
+
firstDiff += 1;
|
|
59
|
+
}
|
|
60
|
+
let lastDiffOld = oldLines.length - 1;
|
|
61
|
+
let lastDiffNew = newLines.length - 1;
|
|
62
|
+
while (lastDiffOld > firstDiff && lastDiffNew > firstDiff && oldLines[lastDiffOld] === newLines[lastDiffNew]) {
|
|
63
|
+
lastDiffOld -= 1;
|
|
64
|
+
lastDiffNew -= 1;
|
|
65
|
+
}
|
|
66
|
+
const ctxStart = Math.max(0, firstDiff - 3);
|
|
67
|
+
const ctxEndOld = Math.min(oldLines.length, lastDiffOld + 4);
|
|
68
|
+
const ctxEndNew = Math.min(newLines.length, lastDiffNew + 4);
|
|
69
|
+
const lines = [headerOld, headerNew];
|
|
70
|
+
lines.push(`@@ -${firstDiff + 1},${lastDiffOld - firstDiff + 1} +${firstDiff + 1},${lastDiffNew - firstDiff + 1} @@`);
|
|
71
|
+
for (let i = ctxStart; i < firstDiff; i++)
|
|
72
|
+
lines.push(` ${oldLines[i]}`);
|
|
73
|
+
for (let i = firstDiff; i <= lastDiffOld; i++)
|
|
74
|
+
lines.push(`-${oldLines[i] ?? ""}`);
|
|
75
|
+
for (let i = firstDiff; i <= lastDiffNew; i++)
|
|
76
|
+
lines.push(`+${newLines[i] ?? ""}`);
|
|
77
|
+
const tailEnd = Math.min(ctxEndOld, oldLines.length);
|
|
78
|
+
for (let i = lastDiffOld + 1; i < tailEnd; i++)
|
|
79
|
+
lines.push(` ${oldLines[i]}`);
|
|
80
|
+
return lines.map(ui.diffLine).join("\n");
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
|
package/dist/repl.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { renderMarkdown } from "./render.js";
|
|
2
|
+
interface ReplOptions {
|
|
3
|
+
apiUrl: string;
|
|
4
|
+
apiKey: string | undefined;
|
|
5
|
+
cwd: string;
|
|
6
|
+
yolo: boolean;
|
|
7
|
+
/** Optional first prompt — when set, run one turn then exit (for piping). */
|
|
8
|
+
oneShot?: string;
|
|
9
|
+
/** Domain profile slug. Defaults to "code". */
|
|
10
|
+
profile?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function runRepl(opts: ReplOptions): Promise<number>;
|
|
13
|
+
export { renderMarkdown };
|