codedeck 0.3.0 → 0.4.1
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/dist/cli/charts/bar-chart.js +104 -0
- package/dist/cli/charts/bar-chart.js.map +1 -0
- package/dist/cli/charts/sparkline.js +18 -0
- package/dist/cli/charts/sparkline.js.map +1 -0
- package/dist/cli/charts/stacked-bar.js +59 -0
- package/dist/cli/charts/stacked-bar.js.map +1 -0
- package/dist/cli/commands/done.js +35 -0
- package/dist/cli/commands/done.js.map +1 -0
- package/dist/cli/commands/models.js +4 -4
- package/dist/cli/commands/models.js.map +1 -1
- package/dist/cli/commands/open.js +218 -57
- package/dist/cli/commands/open.js.map +1 -1
- package/dist/cli/commands/ps.js +1 -35
- package/dist/cli/commands/ps.js.map +1 -1
- package/dist/cli/commands/run.js +4 -3
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/send.js +2 -0
- package/dist/cli/commands/send.js.map +1 -1
- package/dist/cli/commands/setup.js +604 -13
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/usage.js +171 -16
- package/dist/cli/commands/usage.js.map +1 -1
- package/dist/cli/commands/web.js +307 -0
- package/dist/cli/commands/web.js.map +1 -0
- package/dist/cli/index.js +5 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/ui.js +34 -0
- package/dist/cli/ui.js.map +1 -1
- package/dist/cli/usage/dashboard.js +330 -0
- package/dist/cli/usage/dashboard.js.map +1 -0
- package/dist/cli/usage/snapshot.js +112 -0
- package/dist/cli/usage/snapshot.js.map +1 -0
- package/dist/config/config.js +287 -5
- package/dist/config/config.js.map +1 -1
- package/dist/config/paths.js +20 -9
- package/dist/config/paths.js.map +1 -1
- package/dist/core/autocompact.js +77 -0
- package/dist/core/autocompact.js.map +1 -0
- package/dist/core/driver.js.map +1 -1
- package/dist/core/events.js.map +1 -1
- package/dist/core/models.js +166 -3
- package/dist/core/models.js.map +1 -1
- package/dist/core/pricing.js +18 -0
- package/dist/core/pricing.js.map +1 -1
- package/dist/core/session.js +14 -1
- package/dist/core/session.js.map +1 -1
- package/dist/daemon/daemon.js +483 -96
- package/dist/daemon/daemon.js.map +1 -1
- package/dist/drivers/antigravity/driver.js +172 -0
- package/dist/drivers/antigravity/driver.js.map +1 -0
- package/dist/drivers/antigravity/parser.js +168 -0
- package/dist/drivers/antigravity/parser.js.map +1 -0
- package/dist/drivers/claude/driver.js +13 -3
- package/dist/drivers/claude/driver.js.map +1 -1
- package/dist/drivers/registry.js +2 -0
- package/dist/drivers/registry.js.map +1 -1
- package/dist/drivers/session-driver.js +6 -4
- package/dist/drivers/session-driver.js.map +1 -1
- package/dist/drivers/session-runtime.js +1 -1
- package/dist/drivers/session-runtime.js.map +1 -1
- package/dist/open/contract.js +16 -4
- package/dist/open/contract.js.map +1 -1
- package/dist/open/injection.js +1 -0
- package/dist/open/injection.js.map +1 -1
- package/dist/open/launchers/claude.js +4 -1
- package/dist/open/launchers/claude.js.map +1 -1
- package/dist/open/launchers/opencode.js +37 -2
- package/dist/open/launchers/opencode.js.map +1 -1
- package/dist/open/runtime.js +43 -8
- package/dist/open/runtime.js.map +1 -1
- package/dist/plugin/agents/orchestrator-edit.md +1 -3
- package/dist/plugin/agents/orchestrator-read.md +1 -3
- package/dist/plugin/agents/orchestrator.md +2 -4
- package/dist/store/database.js +40 -15
- package/dist/store/database.js.map +1 -1
- package/dist/store/sessions.js +225 -3
- package/dist/store/sessions.js.map +1 -1
- package/dist/web/canvas-page.js +1069 -0
- package/dist/web/canvas-page.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { visibleWidth } from "../ui.js";
|
|
2
|
+
const BLOCK_GLYPHS = [" ", " ", "▂", "▃", "▄", "▅", "▆", "▇", "█"];
|
|
3
|
+
function centerText(text, width) {
|
|
4
|
+
const v = visibleWidth(text);
|
|
5
|
+
if (v >= width)
|
|
6
|
+
return text.slice(0, width);
|
|
7
|
+
const left = Math.floor((width - v) / 2);
|
|
8
|
+
const right = width - v - left;
|
|
9
|
+
return " ".repeat(left) + text + " ".repeat(right);
|
|
10
|
+
}
|
|
11
|
+
export function renderBarChart(data, options = {}) {
|
|
12
|
+
if (data.length === 0)
|
|
13
|
+
return [" (no data for this period)"];
|
|
14
|
+
const height = Math.max(3, options.height ?? 6);
|
|
15
|
+
const maxWidth = options.maxWidth ?? 80;
|
|
16
|
+
const useColor = options.color ?? true;
|
|
17
|
+
const formatY = options.formatY ?? ((v) => `$${v >= 1000 ? `${(v / 1000).toFixed(1)}k` : v.toFixed(v < 10 ? 2 : 0)}`);
|
|
18
|
+
const values = data.map((d) => (Number.isFinite(d.value) && d.value > 0 ? d.value : 0));
|
|
19
|
+
const maxValue = Math.max(...values, 0.01);
|
|
20
|
+
const totalSublevels = height * 8;
|
|
21
|
+
// Y-axis labels (4 steps: max, 2/3, 1/3, 0)
|
|
22
|
+
const yLabels = [
|
|
23
|
+
formatY(maxValue),
|
|
24
|
+
formatY((maxValue * 2) / 3),
|
|
25
|
+
formatY(maxValue / 3),
|
|
26
|
+
formatY(0),
|
|
27
|
+
];
|
|
28
|
+
const yLabelWidth = Math.max(...yLabels.map((l) => visibleWidth(l)));
|
|
29
|
+
const paddedYLabels = yLabels.map((l) => l.padStart(yLabelWidth, " "));
|
|
30
|
+
// Calculate dynamic wide bars based on available space and number of columns
|
|
31
|
+
const availableWidth = Math.max(30, maxWidth - yLabelWidth - 8);
|
|
32
|
+
const count = data.length;
|
|
33
|
+
const targetBarWidth = options.barWidth ?? Math.max(4, Math.min(14, Math.floor(availableWidth / (count * 1.5))));
|
|
34
|
+
const gapWidth = Math.max(2, Math.min(6, Math.floor(targetBarWidth * 0.5)));
|
|
35
|
+
const lines = [];
|
|
36
|
+
// Render each vertical line of the chart (top down)
|
|
37
|
+
for (let row = height - 1; row >= 0; row--) {
|
|
38
|
+
let yPrefix = " ".repeat(yLabelWidth);
|
|
39
|
+
if (row === height - 1) {
|
|
40
|
+
yPrefix = paddedYLabels[0];
|
|
41
|
+
}
|
|
42
|
+
else if (row === Math.floor(height * 0.66)) {
|
|
43
|
+
yPrefix = paddedYLabels[1];
|
|
44
|
+
}
|
|
45
|
+
else if (row === Math.floor(height * 0.33)) {
|
|
46
|
+
yPrefix = paddedYLabels[2];
|
|
47
|
+
}
|
|
48
|
+
else if (row === 0) {
|
|
49
|
+
yPrefix = paddedYLabels[3];
|
|
50
|
+
}
|
|
51
|
+
let rowBars = "";
|
|
52
|
+
for (let i = 0; i < data.length; i++) {
|
|
53
|
+
const val = values[i];
|
|
54
|
+
const sub = Math.min(totalSublevels, Math.round((val / maxValue) * totalSublevels));
|
|
55
|
+
const gap = " ".repeat(gapWidth);
|
|
56
|
+
if (sub >= (row + 1) * 8) {
|
|
57
|
+
const barBlock = "█".repeat(targetBarWidth);
|
|
58
|
+
rowBars += `${gap}${useColor ? `\x1b[36m${barBlock}\x1b[0m` : barBlock}`;
|
|
59
|
+
}
|
|
60
|
+
else if (sub <= row * 8) {
|
|
61
|
+
rowBars += `${gap}${" ".repeat(targetBarWidth)}`;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
const glyphIdx = Math.min(8, Math.max(0, sub - row * 8));
|
|
65
|
+
const glyph = BLOCK_GLYPHS[glyphIdx];
|
|
66
|
+
const barBlock = glyph.repeat(targetBarWidth);
|
|
67
|
+
rowBars += `${gap}${useColor ? `\x1b[36m${barBlock}\x1b[0m` : barBlock}`;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
lines.push(` ${yPrefix} │${rowBars}`);
|
|
71
|
+
}
|
|
72
|
+
// X-axis baseline and ticks
|
|
73
|
+
let axisLine = "";
|
|
74
|
+
for (let i = 0; i < data.length; i++) {
|
|
75
|
+
const gap = "─".repeat(gapWidth);
|
|
76
|
+
const tickBar = "─".repeat(targetBarWidth);
|
|
77
|
+
axisLine += `${gap}${tickBar}`;
|
|
78
|
+
}
|
|
79
|
+
lines.push(` ${" ".repeat(yLabelWidth)} └───${axisLine}──`);
|
|
80
|
+
// X-axis date labels (centered under each bar)
|
|
81
|
+
let dateLine = "";
|
|
82
|
+
for (let i = 0; i < data.length; i++) {
|
|
83
|
+
const gap = " ".repeat(gapWidth);
|
|
84
|
+
const rawLabel = data[i].label.length > 5 ? data[i].label.slice(5) : data[i].label; // e.g. "2026-09-07" -> "09-07"
|
|
85
|
+
const centered = centerText(rawLabel, targetBarWidth);
|
|
86
|
+
dateLine += `${gap}${centered}`;
|
|
87
|
+
}
|
|
88
|
+
lines.push(` ${" ".repeat(yLabelWidth)} ${dateLine}`);
|
|
89
|
+
// X-axis value labels (centered under each date)
|
|
90
|
+
if (options.showValues ?? true) {
|
|
91
|
+
let valueLine = "";
|
|
92
|
+
for (let i = 0; i < data.length; i++) {
|
|
93
|
+
const gap = " ".repeat(gapWidth);
|
|
94
|
+
const val = values[i];
|
|
95
|
+
const valText = `$${val.toFixed(val < 10 ? 2 : 0)}`;
|
|
96
|
+
const centered = centerText(valText, targetBarWidth);
|
|
97
|
+
const colored = useColor ? `\x1b[1m${centered}\x1b[0m` : centered;
|
|
98
|
+
valueLine += `${gap}${colored}`;
|
|
99
|
+
}
|
|
100
|
+
lines.push(` ${" ".repeat(yLabelWidth)} ${valueLine}`);
|
|
101
|
+
}
|
|
102
|
+
return lines;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=bar-chart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bar-chart.js","sourceRoot":"","sources":["../../../src/cli/charts/bar-chart.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const SPARKS = [" ", "▂", "▃", "▄", "▅", "▆", "▇", "█"];
|
|
2
|
+
export function renderSparkline(values) {
|
|
3
|
+
if (values.length === 0)
|
|
4
|
+
return "";
|
|
5
|
+
const valid = values.map((v) => (Number.isFinite(v) && v >= 0 ? v : 0));
|
|
6
|
+
const min = Math.min(...valid);
|
|
7
|
+
const max = Math.max(...valid);
|
|
8
|
+
const range = max - min;
|
|
9
|
+
return valid
|
|
10
|
+
.map((v) => {
|
|
11
|
+
if (range === 0)
|
|
12
|
+
return v > 0 ? SPARKS[4] : SPARKS[0];
|
|
13
|
+
const idx = Math.min(7, Math.max(0, Math.round(((v - min) / range) * 7)));
|
|
14
|
+
return SPARKS[idx];
|
|
15
|
+
})
|
|
16
|
+
.join("");
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=sparkline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sparkline.js","sourceRoot":"","sources":["../../../src/cli/charts/sparkline.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAExD,MAAM,UAAU,eAAe,CAAC,MAAgB;IAC9C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;IAExB,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
const PALETTE = [
|
|
2
|
+
"\x1b[36m", // Cyan
|
|
3
|
+
"\x1b[32m", // Green
|
|
4
|
+
"\x1b[33m", // Yellow
|
|
5
|
+
"\x1b[35m", // Magenta
|
|
6
|
+
"\x1b[34m", // Blue
|
|
7
|
+
"\x1b[91m", // Bright Red
|
|
8
|
+
"\x1b[96m", // Bright Cyan
|
|
9
|
+
"\x1b[92m", // Bright Green
|
|
10
|
+
];
|
|
11
|
+
const RESET = "\x1b[0m";
|
|
12
|
+
export function renderStackedBar(segments, width, options = {}) {
|
|
13
|
+
const useColor = options.color ?? true;
|
|
14
|
+
const validSegments = segments.filter((s) => Number.isFinite(s.value) && s.value > 0);
|
|
15
|
+
const total = validSegments.reduce((sum, s) => sum + s.value, 0);
|
|
16
|
+
if (total <= 0 || width <= 2) {
|
|
17
|
+
const emptyRoom = Math.max(0, width - 2);
|
|
18
|
+
return {
|
|
19
|
+
bar: `[${" ".repeat(emptyRoom)}]`,
|
|
20
|
+
legend: "",
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
const innerWidth = width - 2; // Discount brackets '[' and ']'
|
|
24
|
+
// Largest Remainder Method (Hamilton)
|
|
25
|
+
const exactAllocations = validSegments.map((s) => ({
|
|
26
|
+
segment: s,
|
|
27
|
+
exact: (s.value / total) * innerWidth,
|
|
28
|
+
}));
|
|
29
|
+
const integers = exactAllocations.map((a) => Math.floor(a.exact));
|
|
30
|
+
const remainders = exactAllocations.map((a, idx) => ({
|
|
31
|
+
idx,
|
|
32
|
+
rem: a.exact - integers[idx],
|
|
33
|
+
}));
|
|
34
|
+
let allocated = integers.reduce((sum, v) => sum + v, 0);
|
|
35
|
+
remainders.sort((a, b) => b.rem - a.rem);
|
|
36
|
+
for (let i = 0; i < innerWidth - allocated; i++) {
|
|
37
|
+
integers[remainders[i % remainders.length].idx] += 1;
|
|
38
|
+
}
|
|
39
|
+
let barChars = "";
|
|
40
|
+
const legendParts = [];
|
|
41
|
+
for (let i = 0; i < validSegments.length; i++) {
|
|
42
|
+
const count = integers[i];
|
|
43
|
+
const color = useColor ? PALETTE[i % PALETTE.length] : "";
|
|
44
|
+
const reset = useColor ? RESET : "";
|
|
45
|
+
const pct = Math.round((validSegments[i].value / total) * 100);
|
|
46
|
+
if (count > 0) {
|
|
47
|
+
barChars += `${color}${"█".repeat(count)}${reset}`;
|
|
48
|
+
}
|
|
49
|
+
// Only show items that have at least 1% share
|
|
50
|
+
if (pct >= 1) {
|
|
51
|
+
legendParts.push(`${color}■${reset} ${validSegments[i].label} (${pct}%)`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
bar: `[${barChars}]`,
|
|
56
|
+
legend: legendParts.join(" "),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=stacked-bar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stacked-bar.js","sourceRoot":"","sources":["../../../src/cli/charts/stacked-bar.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { IpcClient } from "../../daemon/ipc.js";
|
|
2
|
+
export function registerDoneCommand(program) {
|
|
3
|
+
program
|
|
4
|
+
.command("done")
|
|
5
|
+
.description("Mark a session as finished (archives interrupted rows as completed)")
|
|
6
|
+
.argument("<id>", "session id (prefix allowed, e.g. a83f)")
|
|
7
|
+
.option("--failed", "archive as failed instead of completed")
|
|
8
|
+
.option("--error <text>", "failure text for --failed")
|
|
9
|
+
.option("--json", "output JSON")
|
|
10
|
+
.action(async (id, opts) => {
|
|
11
|
+
const client = new IpcClient();
|
|
12
|
+
try {
|
|
13
|
+
await client.ensureDaemonStarted();
|
|
14
|
+
}
|
|
15
|
+
catch { }
|
|
16
|
+
try {
|
|
17
|
+
const params = { id };
|
|
18
|
+
if (opts.failed) {
|
|
19
|
+
params.status = "failed";
|
|
20
|
+
if (typeof opts.error === "string" && opts.error.trim())
|
|
21
|
+
params.error = opts.error;
|
|
22
|
+
}
|
|
23
|
+
const result = await client.request("session.release", params);
|
|
24
|
+
if (opts.json)
|
|
25
|
+
console.log(JSON.stringify(result, null, 2));
|
|
26
|
+
else
|
|
27
|
+
console.log(`Session ${id} marked as ${opts.failed ? "failed" : "completed"}`);
|
|
28
|
+
}
|
|
29
|
+
catch (e) {
|
|
30
|
+
console.error(`Failed to mark done: ${e instanceof Error ? e.message : String(e)}`);
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=done.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"done.js","sourceRoot":"","sources":["../../../src/cli/commands/done.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,qEAAqE,CAAC;SAClF,QAAQ,CAAC,MAAM,EAAE,wCAAwC,CAAC;SAC1D,MAAM,CAAC,UAAU,EAAE,wCAAwC,CAAC;SAC5D,MAAM,CAAC,gBAAgB,EAAE,2BAA2B,CAAC;SACrD,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC;SAC/B,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,IAAS,EAAE,EAAE;QACtC,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC;YAAC,MAAM,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACpD,IAAI,CAAC;YACH,MAAM,MAAM,GAAsD,EAAE,EAAE,EAAE,CAAC;YACzE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC;gBACzB,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;oBAAE,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACrF,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;YAC/D,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;gBACvD,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,cAAc,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACtF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACpF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { IpcClient, isDaemonRunning } from "../../daemon/ipc.js";
|
|
2
2
|
import { getRegistry } from "../../drivers/registry.js";
|
|
3
3
|
import { getCachedOrDiscoverModels, } from "../../core/models.js";
|
|
4
|
-
import { AGENT_IDS } from "../../core/session.js";
|
|
4
|
+
import { AGENT_IDS, normalizeAgentId } from "../../core/session.js";
|
|
5
5
|
export function filterHarnessModels(harnesses, options) {
|
|
6
6
|
const search = options.search?.toLowerCase().trim();
|
|
7
7
|
const providerFilter = options.provider?.toLowerCase().trim();
|
|
@@ -109,12 +109,12 @@ export function registerModelsCommand(program) {
|
|
|
109
109
|
.action(async (agentArg, opts = {}) => {
|
|
110
110
|
let agent;
|
|
111
111
|
if (agentArg) {
|
|
112
|
-
const
|
|
113
|
-
if (!
|
|
112
|
+
const resolved = normalizeAgentId(agentArg);
|
|
113
|
+
if (!resolved) {
|
|
114
114
|
console.error(`Invalid agent "${agentArg}". Available agents: ${AGENT_IDS.join(", ")}`);
|
|
115
115
|
process.exit(1);
|
|
116
116
|
}
|
|
117
|
-
agent =
|
|
117
|
+
agent = resolved;
|
|
118
118
|
}
|
|
119
119
|
let harnesses = [];
|
|
120
120
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/cli/commands/models.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EACL,yBAAyB,GAI1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAgB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/cli/commands/models.ts"],"names":[],"mappings":"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"}
|