codedeck 0.2.0 → 0.3.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/README.md +45 -16
- package/dist/cli/cli-name.js +20 -0
- package/dist/cli/cli-name.js.map +1 -0
- package/dist/cli/commands/claims.js +170 -0
- package/dist/cli/commands/claims.js.map +1 -0
- package/dist/cli/commands/doctor.js +22 -1
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/models.js +3 -3
- package/dist/cli/commands/models.js.map +1 -1
- package/dist/cli/commands/open.js +148 -315
- package/dist/cli/commands/open.js.map +1 -1
- package/dist/cli/commands/ps.js +260 -23
- package/dist/cli/commands/ps.js.map +1 -1
- package/dist/cli/commands/rename.js +29 -0
- package/dist/cli/commands/rename.js.map +1 -0
- package/dist/cli/commands/run.js +48 -17
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/setup.js +388 -62
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/usage.js +37 -0
- package/dist/cli/commands/usage.js.map +1 -0
- package/dist/cli/commands/wait.js +3 -2
- package/dist/cli/commands/wait.js.map +1 -1
- package/dist/cli/index.js +33 -21
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/picker-state.js +75 -8
- package/dist/cli/picker-state.js.map +1 -1
- package/dist/cli/picker.js +13 -3
- package/dist/cli/picker.js.map +1 -1
- package/dist/cli/ui.js +20 -4
- package/dist/cli/ui.js.map +1 -1
- package/dist/config/config.js +39 -0
- package/dist/config/config.js.map +1 -1
- package/dist/config/orchestrator-mode.js +72 -0
- package/dist/config/orchestrator-mode.js.map +1 -0
- package/dist/config/paths.js +8 -0
- package/dist/config/paths.js.map +1 -1
- package/dist/core/pricing.js +65 -0
- package/dist/core/pricing.js.map +1 -0
- package/dist/core/roles.js +14 -3
- package/dist/core/roles.js.map +1 -1
- package/dist/core/run-usage.js +46 -0
- package/dist/core/run-usage.js.map +1 -0
- package/dist/core/session.js +5 -0
- package/dist/core/session.js.map +1 -1
- package/dist/daemon/daemon.js +90 -3
- package/dist/daemon/daemon.js.map +1 -1
- package/dist/daemon/ipc.js +10 -3
- package/dist/daemon/ipc.js.map +1 -1
- package/dist/drivers/opencode/driver.js +1 -114
- package/dist/drivers/opencode/driver.js.map +1 -1
- package/dist/drivers/opencode/parser.js +86 -0
- package/dist/drivers/opencode/parser.js.map +1 -0
- package/dist/drivers/session-runtime.js +1 -0
- package/dist/drivers/session-runtime.js.map +1 -1
- package/dist/git/worktree.js +1 -1
- package/dist/git/worktree.js.map +1 -1
- package/dist/open/contract.js +104 -0
- package/dist/open/contract.js.map +1 -0
- package/dist/open/injection.js +59 -0
- package/dist/open/injection.js.map +1 -0
- package/dist/open/launchers/claude.js +212 -0
- package/dist/open/launchers/claude.js.map +1 -0
- package/dist/open/launchers/opencode.js +178 -0
- package/dist/open/launchers/opencode.js.map +1 -0
- package/dist/open/orchestrator-prose.js +12 -0
- package/dist/open/orchestrator-prose.js.map +1 -0
- package/dist/open/pty.js +281 -0
- package/dist/open/pty.js.map +1 -0
- package/dist/open/runtime.js +597 -0
- package/dist/open/runtime.js.map +1 -0
- package/dist/plugin/agents/auditor.md +7 -1
- package/dist/plugin/agents/general.md +12 -1
- package/dist/plugin/agents/orchestrator-edit.md +69 -0
- package/dist/plugin/agents/orchestrator-read.md +69 -0
- package/dist/plugin/agents/orchestrator.md +76 -17
- package/dist/plugin/agents/reviewer.md +3 -0
- package/dist/plugin/commands/autonomous.md +58 -0
- package/dist/plugin/hooks/hooks.json +24 -0
- package/dist/plugin/hooks/session-id.sh +23 -0
- package/dist/plugin/hooks/session-name-lib.mjs +40 -0
- package/dist/plugin/hooks/session-name-worker.mjs +124 -0
- package/dist/plugin/hooks/session-name.mjs +66 -0
- package/dist/plugin/hooks/session-name.sh +7 -0
- package/dist/plugin/pty-shim.mjs +114 -0
- package/dist/plugin/statusline.sh +214 -22
- package/dist/plugin/themes/codedeck-rage.json +74 -0
- package/dist/plugin/themes/codedeck-ultra.json +52 -44
- package/dist/store/claims.js +152 -0
- package/dist/store/claims.js.map +1 -0
- package/dist/store/database.js +14 -0
- package/dist/store/database.js.map +1 -1
- package/dist/store/sessions.js +17 -3
- package/dist/store/sessions.js.map +1 -1
- package/package.json +3 -2
- package/dist/plugin/settings.json +0 -7
|
@@ -1,8 +1,233 @@
|
|
|
1
1
|
import { getCachedOrDiscoverModels, } from "../../core/models.js";
|
|
2
|
+
import { itemKey } from "../picker-state.js";
|
|
2
3
|
import { runScreens } from "../picker.js";
|
|
3
4
|
import { colors, readDimensions } from "../ui.js";
|
|
5
|
+
import { getCliName } from "../cli-name.js";
|
|
4
6
|
import { getRegistry } from "../../drivers/registry.js";
|
|
5
|
-
import {
|
|
7
|
+
import { ROLES } from "../../core/roles.js";
|
|
8
|
+
import { BALANCED_PRESET, DISPATCHER_PRESET, EXPLORER_PRESET, ORCHESTRATOR_PRESETS, isOrchestratorMode, loadConfig, orchestratorModeLabel, resolveOrchestratorMode, saveConfig, } from "../../config/config.js";
|
|
9
|
+
const ORCHESTRATOR_SCREEN_ROLE = "orchestrator-mode";
|
|
10
|
+
const ORCHESTRATOR_PICKER_GROUP = "orchestrator";
|
|
11
|
+
const PARALLELISM_NONE = "none";
|
|
12
|
+
const SANDBOX_SCREEN_ROLE = "sandbox";
|
|
13
|
+
const SANDBOX_PICKER_GROUP = "sandbox";
|
|
14
|
+
const SANDBOX_OFF = "workspace-write";
|
|
15
|
+
const SANDBOX_ON = "danger-full-access";
|
|
16
|
+
const ORCHESTRATOR_PARALLELISM_NOTE_LINES = [
|
|
17
|
+
"parallelism is advisory. Version 1 puts the requested cap in the",
|
|
18
|
+
"orchestrator prompt for review verification and does not enforce the",
|
|
19
|
+
"cap in code.",
|
|
20
|
+
];
|
|
21
|
+
export const ORCHESTRATOR_PARALLELISM_NOTE = ORCHESTRATOR_PARALLELISM_NOTE_LINES.join(" ");
|
|
22
|
+
const ORCHESTRATOR_PARAMETERS = [
|
|
23
|
+
"investigate",
|
|
24
|
+
"selfWork",
|
|
25
|
+
"tools",
|
|
26
|
+
"parallelism",
|
|
27
|
+
];
|
|
28
|
+
function copyOrchestratorMode(mode) {
|
|
29
|
+
return {
|
|
30
|
+
investigate: mode.investigate,
|
|
31
|
+
selfWork: mode.selfWork,
|
|
32
|
+
tools: mode.tools,
|
|
33
|
+
...(mode.parallelism === undefined ? {} : { parallelism: mode.parallelism }),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function selectionId(selection) {
|
|
37
|
+
return typeof selection === "string" ? selection : selection.id;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Turns a preset or a complete custom answer into the config block. The
|
|
41
|
+
* returned object contains parameters only, so labels and preset names cannot
|
|
42
|
+
* leak into the saved JSON.
|
|
43
|
+
*/
|
|
44
|
+
export function orchestratorConfigFromSelection(selection, parameters) {
|
|
45
|
+
const id = selectionId(selection);
|
|
46
|
+
if (Object.hasOwn(ORCHESTRATOR_PRESETS, id)) {
|
|
47
|
+
return copyOrchestratorMode(ORCHESTRATOR_PRESETS[id]);
|
|
48
|
+
}
|
|
49
|
+
if (id !== "custom" || parameters === undefined)
|
|
50
|
+
return undefined;
|
|
51
|
+
const mode = {
|
|
52
|
+
investigate: parameters.investigate,
|
|
53
|
+
selfWork: parameters.selfWork,
|
|
54
|
+
tools: parameters.tools,
|
|
55
|
+
...(parameters.parallelism === undefined ? {} : { parallelism: parameters.parallelism }),
|
|
56
|
+
};
|
|
57
|
+
return isOrchestratorMode(mode) ? mode : undefined;
|
|
58
|
+
}
|
|
59
|
+
export function orchestratorDisplayLabel(config) {
|
|
60
|
+
return orchestratorModeLabel(resolveOrchestratorMode(config));
|
|
61
|
+
}
|
|
62
|
+
function modeValue(mode, parameter) {
|
|
63
|
+
if (parameter === "parallelism")
|
|
64
|
+
return mode.parallelism === undefined ? PARALLELISM_NONE : String(mode.parallelism);
|
|
65
|
+
return mode[parameter];
|
|
66
|
+
}
|
|
67
|
+
function parameterItems(parameter, mode) {
|
|
68
|
+
const choices = parameter === "investigate"
|
|
69
|
+
? ["none", "read", "free"]
|
|
70
|
+
: parameter === "selfWork"
|
|
71
|
+
? ["none", "trivial", "small"]
|
|
72
|
+
: parameter === "tools"
|
|
73
|
+
? ["dispatch", "read", "edit"]
|
|
74
|
+
: [PARALLELISM_NONE, "1", "2", "3", "4", "5", "6", "8", "12"];
|
|
75
|
+
const current = modeValue(mode, parameter);
|
|
76
|
+
const ordered = [current, ...choices.filter((choice) => choice !== current)];
|
|
77
|
+
return ordered.map((choice) => ({
|
|
78
|
+
id: choice,
|
|
79
|
+
label: parameter === "parallelism" && choice === PARALLELISM_NONE ? "sem limite" : choice,
|
|
80
|
+
group: ORCHESTRATOR_PICKER_GROUP,
|
|
81
|
+
harness: ORCHESTRATOR_PICKER_GROUP,
|
|
82
|
+
...(choice === current ? { note: "atual" } : {}),
|
|
83
|
+
}));
|
|
84
|
+
}
|
|
85
|
+
export function buildOrchestratorScreen(config = {}, index = 0, total = 1) {
|
|
86
|
+
const mode = resolveOrchestratorMode(config);
|
|
87
|
+
const presets = [
|
|
88
|
+
["dispatcher", DISPATCHER_PRESET],
|
|
89
|
+
["balanced", BALANCED_PRESET],
|
|
90
|
+
["explorer", EXPLORER_PRESET],
|
|
91
|
+
];
|
|
92
|
+
const presetItems = presets.map(([name, preset]) => ({
|
|
93
|
+
id: name,
|
|
94
|
+
label: name,
|
|
95
|
+
group: ORCHESTRATOR_PICKER_GROUP,
|
|
96
|
+
harness: ORCHESTRATOR_PICKER_GROUP,
|
|
97
|
+
note: `${preset.investigate} / ${preset.selfWork} / ${preset.tools}`,
|
|
98
|
+
}));
|
|
99
|
+
return {
|
|
100
|
+
role: ORCHESTRATOR_SCREEN_ROLE,
|
|
101
|
+
title: `orchestrator (${orchestratorModeLabel(mode)})`,
|
|
102
|
+
counter: `agente ${index + 1} de ${total}`,
|
|
103
|
+
description: ORCHESTRATOR_PARALLELISM_NOTE_LINES,
|
|
104
|
+
items: [
|
|
105
|
+
...presetItems,
|
|
106
|
+
{
|
|
107
|
+
id: "custom",
|
|
108
|
+
label: "custom",
|
|
109
|
+
group: ORCHESTRATOR_PICKER_GROUP,
|
|
110
|
+
harness: ORCHESTRATOR_PICKER_GROUP,
|
|
111
|
+
note: "ajustar os quatro parametros",
|
|
112
|
+
},
|
|
113
|
+
],
|
|
114
|
+
pinned: false,
|
|
115
|
+
known: new Set([
|
|
116
|
+
...presetItems.map((item) => itemKey(item.harness, item.id)),
|
|
117
|
+
itemKey(ORCHESTRATOR_PICKER_GROUP, "custom"),
|
|
118
|
+
]),
|
|
119
|
+
harnesses: new Set([ORCHESTRATOR_PICKER_GROUP]),
|
|
120
|
+
next: (result) => result.kind === "picked" && result.id === "custom"
|
|
121
|
+
? [buildOrchestratorParameterScreen(ORCHESTRATOR_PARAMETERS[0], mode, 0)]
|
|
122
|
+
: [],
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
export function buildSandboxScreen(config = {}, index = 0, total = 1) {
|
|
126
|
+
const selected = config.defaultSandbox === SANDBOX_ON ? SANDBOX_ON : SANDBOX_OFF;
|
|
127
|
+
const values = selected === SANDBOX_ON ? [SANDBOX_ON, SANDBOX_OFF] : [SANDBOX_OFF, SANDBOX_ON];
|
|
128
|
+
const items = values.map((value) => ({
|
|
129
|
+
id: value,
|
|
130
|
+
label: value === SANDBOX_ON ? "ON" : "OFF",
|
|
131
|
+
group: SANDBOX_PICKER_GROUP,
|
|
132
|
+
harness: SANDBOX_PICKER_GROUP,
|
|
133
|
+
...(value === selected ? { note: "atual" } : {}),
|
|
134
|
+
}));
|
|
135
|
+
return {
|
|
136
|
+
role: SANDBOX_SCREEN_ROLE,
|
|
137
|
+
title: "Danger full access",
|
|
138
|
+
counter: `configuração ${index + 1} de ${total}`,
|
|
139
|
+
description: ["Danger full access applies to new Codex sessions."],
|
|
140
|
+
items,
|
|
141
|
+
pinned: true,
|
|
142
|
+
known: new Set(items.map((item) => itemKey(item.harness, item.id))),
|
|
143
|
+
harnesses: new Set([SANDBOX_PICKER_GROUP]),
|
|
144
|
+
next: () => [],
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
function modeAfterParameter(mode, result) {
|
|
148
|
+
const parameters = collectOrchestratorParameters([result], mode);
|
|
149
|
+
return orchestratorConfigFromSelection("custom", parameters) ?? mode;
|
|
150
|
+
}
|
|
151
|
+
function buildOrchestratorParameterScreen(parameter, mode, index, error) {
|
|
152
|
+
const items = parameterItems(parameter, mode);
|
|
153
|
+
const description = parameter === "parallelism"
|
|
154
|
+
? [...ORCHESTRATOR_PARALLELISM_NOTE_LINES, "Type orchestrator:N for another positive cap."]
|
|
155
|
+
: ORCHESTRATOR_PARALLELISM_NOTE_LINES;
|
|
156
|
+
return {
|
|
157
|
+
role: `${ORCHESTRATOR_SCREEN_ROLE}.${parameter}`,
|
|
158
|
+
title: `orchestrator (${orchestratorModeLabel(mode)}) · ${parameter}`,
|
|
159
|
+
counter: `parametro ${index + 1} de ${ORCHESTRATOR_PARAMETERS.length}`,
|
|
160
|
+
...(error === undefined ? {} : { error }),
|
|
161
|
+
description,
|
|
162
|
+
items,
|
|
163
|
+
pinned: false,
|
|
164
|
+
known: new Set(items.map((item) => itemKey(item.harness, item.id))),
|
|
165
|
+
harnesses: new Set([ORCHESTRATOR_PICKER_GROUP]),
|
|
166
|
+
next: (result) => {
|
|
167
|
+
if (parameter === "parallelism" &&
|
|
168
|
+
result.kind === "picked" &&
|
|
169
|
+
result.id !== PARALLELISM_NONE &&
|
|
170
|
+
numericParallelism(result.id) === undefined) {
|
|
171
|
+
return [
|
|
172
|
+
buildOrchestratorParameterScreen(parameter, mode, index, "parallelism must be a positive finite number"),
|
|
173
|
+
];
|
|
174
|
+
}
|
|
175
|
+
if (index + 1 >= ORCHESTRATOR_PARAMETERS.length)
|
|
176
|
+
return [];
|
|
177
|
+
const nextIndex = index + 1;
|
|
178
|
+
return [
|
|
179
|
+
buildOrchestratorParameterScreen(ORCHESTRATOR_PARAMETERS[nextIndex], modeAfterParameter(mode, result), nextIndex),
|
|
180
|
+
];
|
|
181
|
+
},
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
function numericParallelism(value) {
|
|
185
|
+
const parsed = Number(value);
|
|
186
|
+
return Number.isFinite(parsed) && parsed > 0 ? parsed : undefined;
|
|
187
|
+
}
|
|
188
|
+
/** Keeps skipped parameter screens at the mode shown when customization began. */
|
|
189
|
+
export function collectOrchestratorParameters(results, existing) {
|
|
190
|
+
const parameters = {
|
|
191
|
+
investigate: existing.investigate,
|
|
192
|
+
selfWork: existing.selfWork,
|
|
193
|
+
tools: existing.tools,
|
|
194
|
+
...(existing.parallelism === undefined ? {} : { parallelism: existing.parallelism }),
|
|
195
|
+
};
|
|
196
|
+
for (const result of results) {
|
|
197
|
+
if (result.kind !== "picked")
|
|
198
|
+
continue;
|
|
199
|
+
const parameter = result.role.startsWith(`${ORCHESTRATOR_SCREEN_ROLE}.`)
|
|
200
|
+
? result.role.slice(`${ORCHESTRATOR_SCREEN_ROLE}.`.length)
|
|
201
|
+
: "";
|
|
202
|
+
if (parameter === "investigate" && ["none", "read", "free"].includes(result.id)) {
|
|
203
|
+
parameters.investigate = result.id;
|
|
204
|
+
}
|
|
205
|
+
else if (parameter === "selfWork" && ["none", "trivial", "small"].includes(result.id)) {
|
|
206
|
+
parameters.selfWork = result.id;
|
|
207
|
+
}
|
|
208
|
+
else if (parameter === "tools" && ["dispatch", "read", "edit"].includes(result.id)) {
|
|
209
|
+
parameters.tools = result.id;
|
|
210
|
+
}
|
|
211
|
+
else if (parameter === "parallelism") {
|
|
212
|
+
if (result.id === PARALLELISM_NONE)
|
|
213
|
+
delete parameters.parallelism;
|
|
214
|
+
else {
|
|
215
|
+
const parsed = numericParallelism(result.id);
|
|
216
|
+
if (parsed !== undefined)
|
|
217
|
+
parameters.parallelism = parsed;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
return parameters;
|
|
222
|
+
}
|
|
223
|
+
export function collectOrchestratorSelection(selection, parameters, existing = {}) {
|
|
224
|
+
if (selection?.kind !== "picked")
|
|
225
|
+
return undefined;
|
|
226
|
+
if (selection.id !== "custom")
|
|
227
|
+
return orchestratorConfigFromSelection(selection);
|
|
228
|
+
const current = resolveOrchestratorMode(existing);
|
|
229
|
+
return orchestratorConfigFromSelection("custom", collectOrchestratorParameters(parameters, current));
|
|
230
|
+
}
|
|
6
231
|
/**
|
|
7
232
|
* Both streams have to be a terminal, not just stdout. A piped stdin leaves
|
|
8
233
|
* `question` waiting on input that can never arrive, and `tail -f /dev/null |
|
|
@@ -18,67 +243,122 @@ export function isInteractiveTerminal() {
|
|
|
18
243
|
export function needsModelSetup(config, isTTY = isInteractiveTerminal()) {
|
|
19
244
|
if (!isTTY)
|
|
20
245
|
return false;
|
|
21
|
-
|
|
246
|
+
// `agents` is what setup writes now. A config carrying only the older
|
|
247
|
+
// per-harness `models` has never answered the per-role question, so it still
|
|
248
|
+
// counts as unset.
|
|
249
|
+
return config == null || config.agents == null;
|
|
22
250
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
251
|
+
/**
|
|
252
|
+
* The catalog of every installed harness, flattened into one list.
|
|
253
|
+
*
|
|
254
|
+
* The group is the bare agent id rather than a prettier label because it is
|
|
255
|
+
* also what free text has to type as a prefix ("codex:gpt-5.7"). A header
|
|
256
|
+
* reading "Codex" over rows you reach by typing "codex" would hide that.
|
|
257
|
+
*/
|
|
258
|
+
/** One normalization for every id, so the catalog and the pin agree on a key. */
|
|
259
|
+
function modelId(raw) {
|
|
260
|
+
return typeof raw === "string" ? raw.trim() : "";
|
|
26
261
|
}
|
|
27
|
-
function
|
|
262
|
+
function catalogItems(installed) {
|
|
263
|
+
const known = new Set();
|
|
264
|
+
const items = [];
|
|
265
|
+
for (const harness of installed) {
|
|
266
|
+
for (const provider of harness.providers) {
|
|
267
|
+
for (const model of provider.models) {
|
|
268
|
+
// A driver reporting a blank id used to become a selectable blank row
|
|
269
|
+
// that Enter would save as the model. The line wizard guarded this and
|
|
270
|
+
// the port dropped the guard.
|
|
271
|
+
const id = modelId(model.id);
|
|
272
|
+
if (!id)
|
|
273
|
+
continue;
|
|
274
|
+
// Keyed by both halves: two harnesses listing the same id are two real
|
|
275
|
+
// choices, and only a repeat within one harness is a duplicate.
|
|
276
|
+
const key = itemKey(harness.agent, id);
|
|
277
|
+
if (known.has(key))
|
|
278
|
+
continue;
|
|
279
|
+
known.add(key);
|
|
280
|
+
// The name is carried for the filter, not for the row: most of the
|
|
281
|
+
// catalog spells a version readably there ("Claude Opus 5") and only in
|
|
282
|
+
// the id the way it is typed.
|
|
283
|
+
const name = typeof model.name === "string" ? model.name.trim() : "";
|
|
284
|
+
items.push({
|
|
285
|
+
id,
|
|
286
|
+
label: id,
|
|
287
|
+
group: harness.agent,
|
|
288
|
+
harness: harness.agent,
|
|
289
|
+
...(name && name !== id ? { name } : {}),
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
return { items, known };
|
|
295
|
+
}
|
|
296
|
+
function pinnedFor(installed, known, configured, fallbackHarness) {
|
|
28
297
|
if (configured) {
|
|
298
|
+
const inCatalog = known.has(itemKey(configured.harness, configured.model));
|
|
29
299
|
// A saved id the catalog no longer lists still gets shown. Hiding it is how
|
|
30
300
|
// the wizard used to answer `open`'s own "that model is gone, run setup":
|
|
31
301
|
// the user arrived here and could not see which model it meant. Marking it
|
|
32
302
|
// synthetic makes keeping it cost the same second Enter as typing it.
|
|
33
|
-
return
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
303
|
+
return {
|
|
304
|
+
id: configured.model,
|
|
305
|
+
label: configured.model,
|
|
306
|
+
group: configured.harness,
|
|
307
|
+
harness: configured.harness,
|
|
308
|
+
note: inCatalog ? `atual · ${configured.harness}` : `atual · ${configured.harness}, fora do catalogo`,
|
|
309
|
+
...(inCatalog ? {} : { synthetic: true }),
|
|
310
|
+
};
|
|
41
311
|
}
|
|
42
|
-
//
|
|
43
|
-
//
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
const grouped = [];
|
|
312
|
+
// Nothing saved for this role, so the suggestion comes from the harness that
|
|
313
|
+
// runs everything else by default, and only if that harness names a default.
|
|
314
|
+
const harness = installed.find((candidate) => candidate.agent === fallbackHarness);
|
|
315
|
+
if (!harness)
|
|
316
|
+
return undefined;
|
|
48
317
|
for (const provider of harness.providers) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
id,
|
|
63
|
-
label: id,
|
|
64
|
-
group: provider.provider,
|
|
65
|
-
...(name && name !== id ? { name } : {}),
|
|
66
|
-
});
|
|
318
|
+
// Trimmed the same way the catalog trims, or the lookup misses its own row
|
|
319
|
+
// and a harness that pads its ids ends up pinning nothing.
|
|
320
|
+
const real = provider.models
|
|
321
|
+
.map((model) => ({ id: modelId(model.id), isDefault: model.isDefault }))
|
|
322
|
+
.find((model) => model.isDefault && known.has(itemKey(harness.agent, model.id)));
|
|
323
|
+
if (real) {
|
|
324
|
+
return {
|
|
325
|
+
id: real.id,
|
|
326
|
+
label: real.id,
|
|
327
|
+
group: harness.agent,
|
|
328
|
+
harness: harness.agent,
|
|
329
|
+
note: `padrao · ${harness.agent}`,
|
|
330
|
+
};
|
|
67
331
|
}
|
|
68
332
|
}
|
|
69
|
-
|
|
70
|
-
|
|
333
|
+
// With no config and no isDefault, the first row is just catalog order.
|
|
334
|
+
// Hoisting that and calling it the default would stamp a coin flip as a
|
|
335
|
+
// recommendation.
|
|
336
|
+
}
|
|
337
|
+
export function buildRoleScreen(role, installed, index, total, configured, fallbackHarness = "claude") {
|
|
338
|
+
const { items: catalog, known } = catalogItems(installed);
|
|
339
|
+
const pinned = pinnedFor(installed, known, configured, fallbackHarness);
|
|
340
|
+
const pinnedKey = pinned ? itemKey(pinned.harness, pinned.id) : undefined;
|
|
341
|
+
const items = pinned
|
|
342
|
+
? [pinned, ...catalog.filter((item) => itemKey(item.harness, item.id) !== pinnedKey)]
|
|
343
|
+
: catalog;
|
|
344
|
+
// One screen now spans every harness, so a harness that answered with an
|
|
345
|
+
// error no longer owns the error line by itself. Naming each one keeps a
|
|
346
|
+
// missing catalog readable as "codex is why codex has no rows".
|
|
347
|
+
const errors = installed
|
|
348
|
+
.filter((harness) => harness.error)
|
|
349
|
+
.map((harness) => `${harness.agent}: ${harness.error}`);
|
|
71
350
|
return {
|
|
72
|
-
|
|
73
|
-
title:
|
|
351
|
+
role,
|
|
352
|
+
title: role,
|
|
74
353
|
counter: `agente ${index + 1} de ${total}`,
|
|
75
|
-
error:
|
|
354
|
+
...(errors.length > 0 ? { error: errors.join(" · ") } : {}),
|
|
76
355
|
items,
|
|
77
356
|
pinned: pinned !== undefined,
|
|
78
|
-
known
|
|
357
|
+
known,
|
|
358
|
+
harnesses: new Set(installed.map((harness) => harness.agent)),
|
|
79
359
|
};
|
|
80
360
|
}
|
|
81
|
-
export function buildScreens(harnesses, configured) {
|
|
361
|
+
export function buildScreens(roles, harnesses, configured, fallbackHarness = "claude") {
|
|
82
362
|
const seen = new Set();
|
|
83
363
|
// A merged disk cache can hand back the same agent twice.
|
|
84
364
|
const installed = harnesses.filter((harness) => {
|
|
@@ -87,18 +367,21 @@ export function buildScreens(harnesses, configured) {
|
|
|
87
367
|
seen.add(harness.agent);
|
|
88
368
|
return true;
|
|
89
369
|
});
|
|
90
|
-
|
|
370
|
+
if (installed.length === 0)
|
|
371
|
+
return [];
|
|
372
|
+
return roles.map((role, index) => buildRoleScreen(role, installed, index, roles.length, configured[role], fallbackHarness));
|
|
91
373
|
}
|
|
92
374
|
export function collectSelections(results, existing, shown) {
|
|
93
375
|
// Starts from what was already saved: skipping has to leave it intact, and a
|
|
94
376
|
// brand new map would wipe a choice made on an earlier run.
|
|
95
|
-
const
|
|
377
|
+
const agents = { ...(existing ?? {}) };
|
|
96
378
|
for (const result of results) {
|
|
97
|
-
if (result.kind
|
|
98
|
-
|
|
379
|
+
if (result.kind !== "picked")
|
|
380
|
+
continue;
|
|
381
|
+
agents[result.role] = { harness: result.harness, model: result.id };
|
|
99
382
|
}
|
|
100
383
|
const aborted = results.some((result) => result.kind === "aborted");
|
|
101
|
-
return {
|
|
384
|
+
return { agents, write: shown > 0 && !aborted };
|
|
102
385
|
}
|
|
103
386
|
/** Below this no list survives once the chrome is placed. */
|
|
104
387
|
const MIN_ROWS = 8;
|
|
@@ -131,11 +414,11 @@ export async function runModelSetupWizard(options = {}) {
|
|
|
131
414
|
console.error(`Warning: Could not discover models: ${error instanceof Error ? error.message : String(error)}`);
|
|
132
415
|
harnesses = [];
|
|
133
416
|
}
|
|
134
|
-
const
|
|
135
|
-
// Writing `
|
|
417
|
+
const roleScreens = buildScreens(ROLES, harnesses, config.agents ?? {}, config.defaultAgent ?? "claude");
|
|
418
|
+
// Writing `agents` is what marks first-run setup as done. Doing that after
|
|
136
419
|
// showing nothing would spend the single prompt the user ever gets.
|
|
137
|
-
if (
|
|
138
|
-
console.error("Warning: No installed
|
|
420
|
+
if (roleScreens.length === 0) {
|
|
421
|
+
console.error("Warning: No installed harness reported any model; skipping model setup.");
|
|
139
422
|
return config;
|
|
140
423
|
}
|
|
141
424
|
const dim = options.dimensions ?? readDimensions(output);
|
|
@@ -144,35 +427,78 @@ export async function runModelSetupWizard(options = {}) {
|
|
|
144
427
|
return config;
|
|
145
428
|
}
|
|
146
429
|
const paint = colors(Boolean(output.isTTY) && !process.env.NO_COLOR);
|
|
147
|
-
const
|
|
148
|
-
|
|
430
|
+
const screens = [
|
|
431
|
+
...roleScreens,
|
|
432
|
+
buildOrchestratorScreen(config, roleScreens.length, roleScreens.length + 1),
|
|
433
|
+
];
|
|
434
|
+
const results = await runScreens([...screens, buildSandboxScreen(config, screens.length, screens.length + 1)], { input, output, onResize: watchResize }, paint);
|
|
435
|
+
if (results.some((result) => result.kind === "aborted")) {
|
|
436
|
+
console.error("Warning: Model setup was interrupted; nothing was saved.");
|
|
437
|
+
return config;
|
|
438
|
+
}
|
|
439
|
+
const answeredResults = results.filter((result) => result.kind !== "aborted");
|
|
440
|
+
const agentResults = answeredResults.filter((result) => roleScreens.some((screen) => screen.role === result.role));
|
|
441
|
+
const { agents, write } = collectSelections(agentResults, config.agents, roleScreens.length);
|
|
149
442
|
if (!write) {
|
|
150
443
|
console.error("Warning: Model setup was interrupted; nothing was saved.");
|
|
151
444
|
return config;
|
|
152
445
|
}
|
|
153
|
-
const
|
|
446
|
+
const orchestratorSelection = answeredResults.find((result) => result.role === ORCHESTRATOR_SCREEN_ROLE);
|
|
447
|
+
if (orchestratorSelection === undefined) {
|
|
448
|
+
console.error("Warning: Orchestrator setup was interrupted; nothing was saved.");
|
|
449
|
+
return config;
|
|
450
|
+
}
|
|
451
|
+
let orchestrator;
|
|
452
|
+
if (orchestratorSelection.kind === "picked" && orchestratorSelection.id === "custom") {
|
|
453
|
+
const parameterResults = answeredResults.filter((result) => result.role.startsWith(`${ORCHESTRATOR_SCREEN_ROLE}.`));
|
|
454
|
+
orchestrator = collectOrchestratorSelection(orchestratorSelection, parameterResults, config);
|
|
455
|
+
if (orchestrator === undefined) {
|
|
456
|
+
console.error("Warning: Orchestrator setup was invalid; nothing was saved.");
|
|
457
|
+
return config;
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
else if (orchestratorSelection.kind === "picked") {
|
|
461
|
+
orchestrator = collectOrchestratorSelection(orchestratorSelection, [], config);
|
|
462
|
+
if (orchestrator === undefined) {
|
|
463
|
+
console.error("Warning: Orchestrator setup was invalid; nothing was saved.");
|
|
464
|
+
return config;
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
const updatedConfig = { ...config, agents };
|
|
468
|
+
if (orchestrator !== undefined)
|
|
469
|
+
updatedConfig.orchestrator = orchestrator;
|
|
470
|
+
const sandboxSelection = answeredResults.find((result) => result.role === SANDBOX_SCREEN_ROLE);
|
|
471
|
+
if (sandboxSelection?.kind === "picked") {
|
|
472
|
+
if (sandboxSelection.id === SANDBOX_OFF || sandboxSelection.id === SANDBOX_ON) {
|
|
473
|
+
updatedConfig.defaultSandbox = sandboxSelection.id;
|
|
474
|
+
}
|
|
475
|
+
}
|
|
154
476
|
try {
|
|
155
477
|
(options.save ?? saveConfig)(updatedConfig);
|
|
156
478
|
}
|
|
157
479
|
catch (error) {
|
|
158
480
|
console.error(`Warning: Could not save config: ${error instanceof Error ? error.message : String(error)}`);
|
|
159
481
|
}
|
|
160
|
-
const summary =
|
|
161
|
-
.map((screen) =>
|
|
482
|
+
const summary = roleScreens
|
|
483
|
+
.map((screen) => {
|
|
484
|
+
const binding = agents[screen.role];
|
|
485
|
+
return `${screen.role} ${binding ? `${binding.harness}:${binding.model}` : "unset"}`;
|
|
486
|
+
})
|
|
162
487
|
.join(" · ");
|
|
163
|
-
|
|
488
|
+
const modeSummary = orchestrator === undefined ? "" : ` · orchestrator ${orchestratorModeLabel(orchestrator)}`;
|
|
489
|
+
output.write(`\n saved: ${summary}${modeSummary}\n\n`);
|
|
164
490
|
return updatedConfig;
|
|
165
491
|
}
|
|
166
492
|
export function registerSetupCommand(program) {
|
|
167
493
|
program
|
|
168
494
|
.command("setup")
|
|
169
|
-
.description("Choose the model each
|
|
495
|
+
.description("Choose the harness and model each agent should run on")
|
|
170
496
|
.option("--refresh", "ignore the cached catalog and rediscover")
|
|
171
497
|
.action(async (opts) => {
|
|
172
498
|
// The message lives here rather than in the wizard, because `open` calls
|
|
173
499
|
// the same function and has to stay quiet when it cannot prompt.
|
|
174
500
|
if (!isInteractiveTerminal()) {
|
|
175
|
-
console.error(
|
|
501
|
+
console.error(`${getCliName()} setup needs a terminal on both stdin and stdout.`);
|
|
176
502
|
process.exitCode = 1;
|
|
177
503
|
return;
|
|
178
504
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { IpcClient } from "../../daemon/ipc.js";
|
|
2
|
+
export function formatUsageSummary(summary) {
|
|
3
|
+
const cost = `$${summary.costUsd.toFixed(2)}${summary.costComplete ? "" : "?"}`;
|
|
4
|
+
return `Run ${summary.runId}: ${summary.sessionCount} sessions, ${summary.inputTokens} input / ${summary.outputTokens} output / ${summary.cachedTokens} cached tokens, cost ${cost}`;
|
|
5
|
+
}
|
|
6
|
+
export function registerUsageCommand(program) {
|
|
7
|
+
program
|
|
8
|
+
.command("usage")
|
|
9
|
+
.description("Show aggregated usage for a run")
|
|
10
|
+
.argument("<run-id>", "run id")
|
|
11
|
+
.option("--json", "output the aggregated usage as JSON")
|
|
12
|
+
.action(async (runId, opts) => {
|
|
13
|
+
const client = new IpcClient();
|
|
14
|
+
try {
|
|
15
|
+
await client.ensureDaemonStarted();
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
console.error(`Failed to start daemon: ${error instanceof Error ? error.message : String(error)}`);
|
|
19
|
+
process.exitCode = 3;
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
let summary;
|
|
23
|
+
try {
|
|
24
|
+
summary = await client.request("usage.get", { runId });
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
console.error(error instanceof Error ? error.message : String(error));
|
|
28
|
+
process.exitCode = 3;
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (opts.json)
|
|
32
|
+
console.log(JSON.stringify(summary));
|
|
33
|
+
else
|
|
34
|
+
console.log(formatUsageSummary(summary));
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../../../src/cli/commands/usage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAOhD,MAAM,UAAU,kBAAkB,CAAC,OAAwB;IACzD,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAChF,OAAO,OAAO,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,YAAY,cAAc,OAAO,CAAC,WAAW,YAAY,OAAO,CAAC,YAAY,aAAa,OAAO,CAAC,YAAY,wBAAwB,IAAI,EAAE,CAAC;AACvL,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,iCAAiC,CAAC;SAC9C,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC;SAC9B,MAAM,CAAC,QAAQ,EAAE,qCAAqC,CAAC;SACvD,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,IAAyB,EAAE,EAAE;QACzD,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,mBAAmB,EAAE,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACnG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,IAAI,OAAwB,CAAC;QAC7B,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAkB,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACtE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;;YAC/C,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { IpcClient } from "../../daemon/ipc.js";
|
|
2
|
+
import { getCliInvocation } from "../cli-name.js";
|
|
2
3
|
import { exitCodeForOutcome } from "../../core/errors.js";
|
|
3
4
|
import { waitForSession } from "../wait.js";
|
|
4
5
|
export function formatWaitResult(session) {
|
|
@@ -18,8 +19,8 @@ export function registerWaitCommand(program) {
|
|
|
18
19
|
.option("--json", "output the final session as JSON")
|
|
19
20
|
.addHelpText("after", `
|
|
20
21
|
Examples:
|
|
21
|
-
$
|
|
22
|
-
$
|
|
22
|
+
$ ${getCliInvocation()} wait a83f
|
|
23
|
+
$ ${getCliInvocation()} wait a83f --json
|
|
23
24
|
`)
|
|
24
25
|
.action(async (id, opts) => {
|
|
25
26
|
const client = new IpcClient();
|