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,106 +1,85 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { randomUUID } from "node:crypto";
|
|
3
3
|
import path from "node:path";
|
|
4
|
-
import { promisify } from "node:util";
|
|
5
4
|
import * as readline from "node:readline";
|
|
6
|
-
import { constants } from "node:os";
|
|
7
5
|
import { IpcClient } from "../../daemon/ipc.js";
|
|
8
|
-
import { loadConfig,
|
|
6
|
+
import { loadConfig, resolveRoleBinding, resolveOrchestratorMode, } from "../../config/config.js";
|
|
7
|
+
import { harnessInjection } from "../../open/injection.js";
|
|
8
|
+
import { ptyShimPath } from "../../open/pty.js";
|
|
9
9
|
import { isInteractiveTerminal } from "./setup.js";
|
|
10
|
-
import {
|
|
11
|
-
import { getRegistry } from "../../drivers/registry.js";
|
|
12
|
-
import { detectBinary } from "../../drivers/helpers.js";
|
|
13
|
-
import { findClosestModel, getCachedOrDiscoverModels, modelNames, } from "../../core/models.js";
|
|
10
|
+
import { sessionsDir } from "../../open/pty.js";
|
|
14
11
|
import { ROLES, parseRole, resolvePluginDir } from "../../core/roles.js";
|
|
12
|
+
import { getCliName } from "../cli-name.js";
|
|
13
|
+
import { effectiveModel, resolveOpenModel } from "../../open/contract.js";
|
|
14
|
+
import { buildArgs as buildOpencodeArgs, buildInlineConfig, createEphemeralTuiDir, ensureOpencodeTheme, OPENCODE_NOT_FOUND, preflight as preflightOpencode, removeEphemeralTuiDir, resolveBinary as resolveOpencodeBinary, } from "../../open/launchers/opencode.js";
|
|
15
|
+
import { assertSupport, buildOpenArgs, CLAUDE_NOT_FOUND, DEFAULT_EFFORT, DEFAULT_MODEL, entitlementError, preflightModel, resolveBinary, } from "../../open/launchers/claude.js";
|
|
16
|
+
import { assertPluginDirectory, currentWorkingDirectory, finishOpenSession, playBoot, renderBanner, spawnHarness, } from "../../open/runtime.js";
|
|
15
17
|
export { ROLES, parseRole, resolvePluginDir };
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
return `'${value.replaceAll("'", `'\\''`)}'`;
|
|
33
|
-
}
|
|
34
|
-
function settingsArgument(pluginDir, flags) {
|
|
35
|
-
if (flags.theme !== false)
|
|
36
|
-
return path.join(pluginDir, "settings.json");
|
|
37
|
-
// Claude accepts an inline settings JSON value. Keep the status line while
|
|
38
|
-
// removing only the theme, without mutating the plugin's shared settings file.
|
|
39
|
-
return JSON.stringify({
|
|
40
|
-
statusLine: {
|
|
41
|
-
type: "command",
|
|
42
|
-
command: `bash ${shellQuote(path.join(pluginDir, "statusline.sh"))}`,
|
|
43
|
-
},
|
|
18
|
+
export { effectiveModel };
|
|
19
|
+
export { buildOpenArgs, buildSettings, entitlementError, judgeModel, sessionName } from "../../open/launchers/claude.js";
|
|
20
|
+
export { bootFrame, ensureCodedeckShim, exitCodeFor, finishOpenSession, installSigintGuard, renderBanner, renderExit, resumeHint, sanitizeEnv, spinnerTips, withCodedeckOnPath, writeStdoutSync, } from "../../open/runtime.js";
|
|
21
|
+
const DEFAULT_ROLE = "orchestrator";
|
|
22
|
+
export function launchClaude(claudeBin, model, args, cwd, sessionFile, onClose, spawnChild = spawn, signalHost = process, envExtra, pty) {
|
|
23
|
+
return spawnHarness(claudeBin, args, {
|
|
24
|
+
cwd,
|
|
25
|
+
sessionFile,
|
|
26
|
+
envExtra,
|
|
27
|
+
model,
|
|
28
|
+
notFoundMessage: CLAUDE_NOT_FOUND,
|
|
29
|
+
entitlementError,
|
|
30
|
+
onClose,
|
|
31
|
+
spawnChild,
|
|
32
|
+
signalHost,
|
|
33
|
+
pty,
|
|
44
34
|
});
|
|
45
35
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
// replacing it, and an agent file with no `tools:` key inherits the whole
|
|
61
|
-
// toolset. So `general` carries its contract the same way the others do,
|
|
62
|
-
// with nothing taken away.
|
|
63
|
-
"--agent",
|
|
64
|
-
`${PLUGIN_NAME}:${role}`,
|
|
65
|
-
"-n",
|
|
66
|
-
`CodeDeck · ${role}`,
|
|
67
|
-
...(flags.resume ? ["--resume", flags.resume] : []),
|
|
68
|
-
...(flags.worktree ? ["-w"] : []),
|
|
69
|
-
...passthrough,
|
|
70
|
-
];
|
|
71
|
-
return args;
|
|
36
|
+
/**
|
|
37
|
+
* What CodeDeck may type into this harness, or nothing when the harness has no
|
|
38
|
+
* command worth typing or the caller turned the pty off. Interactive only: a
|
|
39
|
+
* `--print` launch has no TUI to type into.
|
|
40
|
+
*/
|
|
41
|
+
export function ptyLaunchForHarness(harness, pluginDir, sessionFile, flags, config, interactive) {
|
|
42
|
+
if (!interactive)
|
|
43
|
+
return undefined;
|
|
44
|
+
if (flags.pty === false || config.pty === false)
|
|
45
|
+
return undefined;
|
|
46
|
+
const rename = harnessInjection(harness).rename;
|
|
47
|
+
if (!rename)
|
|
48
|
+
return undefined;
|
|
49
|
+
return { shim: ptyShimPath(pluginDir), sessionFile, keystrokesForName: rename };
|
|
72
50
|
}
|
|
73
|
-
const MODEL_PREFIX = "--model=";
|
|
74
51
|
/**
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
52
|
+
* Width of each replacement verb in terminal columns. Keeping this fixed
|
|
53
|
+
* leaves Claude's elapsed-time and token-count fields aligned.
|
|
54
|
+
*/
|
|
55
|
+
export const SPINNER_VERB_WIDTH = 12;
|
|
56
|
+
/**
|
|
57
|
+
* Why an agent bound to a harness without a launcher cannot be opened, or
|
|
58
|
+
* nothing. `open` launches claude and opencode sessions; anything else has no
|
|
59
|
+
* launcher, so refusing beats opening a session under a name whose
|
|
60
|
+
* configuration it does not follow.
|
|
83
61
|
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
* arity, which CodeDeck does not have.
|
|
62
|
+
* The model is deliberately not part of the check. An explicit --model changes
|
|
63
|
+
* which binary runs, never whether it is the right harness.
|
|
87
64
|
*/
|
|
88
|
-
export function
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
if (token.startsWith(MODEL_PREFIX))
|
|
92
|
-
return token.slice(MODEL_PREFIX.length);
|
|
93
|
-
if (i > 0 && passthrough[i - 1] === "--model")
|
|
94
|
-
return token;
|
|
65
|
+
export function harnessMismatch(role, binding) {
|
|
66
|
+
if (!binding || binding.harness === "claude" || binding.harness === "opencode") {
|
|
67
|
+
return undefined;
|
|
95
68
|
}
|
|
69
|
+
return (`Agent "${role}" runs on ${binding.harness}, and ${getCliName()} open only launches claude and opencode sessions. ` +
|
|
70
|
+
`Use \`${getCliName()} run --role ${role} "<prompt>"\`, or move it with \`${getCliName()} setup\`.`);
|
|
96
71
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
export function
|
|
103
|
-
|
|
72
|
+
/**
|
|
73
|
+
* The one dispatch decision: the binding owns the harness, and an unbound
|
|
74
|
+
* role opens claude like it always did. Anything else throws instead of
|
|
75
|
+
* rounding down to the wrong session.
|
|
76
|
+
*/
|
|
77
|
+
export function launcherFor(role, binding) {
|
|
78
|
+
const harness = binding?.harness ?? "claude";
|
|
79
|
+
if (harness === "claude" || harness === "opencode")
|
|
80
|
+
return harness;
|
|
81
|
+
const mismatch = harnessMismatch(role, binding);
|
|
82
|
+
throw new Error(mismatch ?? `Agent "${role}" runs on ${harness}, which ${getCliName()} open does not launch.`);
|
|
104
83
|
}
|
|
105
84
|
function selectRole() {
|
|
106
85
|
const rl = readline.createInterface({
|
|
@@ -128,8 +107,8 @@ function selectRole() {
|
|
|
128
107
|
reject(new Error("Role selection was interrupted; nothing was launched."));
|
|
129
108
|
});
|
|
130
109
|
const ask = () => {
|
|
131
|
-
rl.question(`Role [
|
|
132
|
-
const role = parseRole(answer ||
|
|
110
|
+
rl.question(`Role [${DEFAULT_ROLE}] (${ROLES.join("/")}): `, (answer) => {
|
|
111
|
+
const role = parseRole(answer || DEFAULT_ROLE);
|
|
133
112
|
if (role) {
|
|
134
113
|
finish(role);
|
|
135
114
|
return;
|
|
@@ -149,7 +128,7 @@ function selectRole() {
|
|
|
149
128
|
export function isNonInteractiveLaunch(passthrough) {
|
|
150
129
|
return passthrough.some((arg) => arg === "-p" || arg === "--print");
|
|
151
130
|
}
|
|
152
|
-
function resolveRole(input, interactive) {
|
|
131
|
+
export function resolveRole(input, interactive) {
|
|
153
132
|
if (input !== undefined) {
|
|
154
133
|
const role = parseRole(input);
|
|
155
134
|
if (!role) {
|
|
@@ -158,7 +137,7 @@ function resolveRole(input, interactive) {
|
|
|
158
137
|
return Promise.resolve(role);
|
|
159
138
|
}
|
|
160
139
|
if (!interactive || !isInteractiveTerminal())
|
|
161
|
-
return Promise.resolve(
|
|
140
|
+
return Promise.resolve(DEFAULT_ROLE);
|
|
162
141
|
return selectRole();
|
|
163
142
|
}
|
|
164
143
|
/**
|
|
@@ -204,13 +183,13 @@ export function scanOptions(tokens, command) {
|
|
|
204
183
|
const name = separator >= 0 ? token.slice(0, separator) : token;
|
|
205
184
|
const wantsValue = takesValue.get(name);
|
|
206
185
|
if (wantsValue === undefined) {
|
|
207
|
-
throw new Error(`Unknown option "${name}" for
|
|
186
|
+
throw new Error(`Unknown option "${name}" for ${getCliName()} open. Options for Claude go after "--".`);
|
|
208
187
|
}
|
|
209
188
|
// Commander honours "=" only on options declared with a value and drops the
|
|
210
189
|
// whole token otherwise, so `--no-bypass=false` would read as accepted and
|
|
211
190
|
// launch with the bypass still on.
|
|
212
191
|
if (separator >= 0 && !wantsValue) {
|
|
213
|
-
throw new Error(`Option "${name}" for
|
|
192
|
+
throw new Error(`Option "${name}" for ${getCliName()} open takes no value.`);
|
|
214
193
|
}
|
|
215
194
|
// The next token belongs to this option even when it looks like a flag,
|
|
216
195
|
// which is what keeps `--model -weird` from reading as an unknown option.
|
|
@@ -250,222 +229,17 @@ function getInvocation(command, roleArg) {
|
|
|
250
229
|
}
|
|
251
230
|
return { roleInput: roleArg, passthrough: [] };
|
|
252
231
|
}
|
|
253
|
-
function assertPluginDirectory(pluginDir) {
|
|
254
|
-
try {
|
|
255
|
-
if (fs.statSync(pluginDir).isDirectory())
|
|
256
|
-
return;
|
|
257
|
-
}
|
|
258
|
-
catch { }
|
|
259
|
-
throw new Error(`CodeDeck plugin directory not found at ${pluginDir}. Rebuild or reinstall CodeDeck before running open.`);
|
|
260
|
-
}
|
|
261
|
-
function currentWorkingDirectory() {
|
|
262
|
-
try {
|
|
263
|
-
const cwd = process.cwd();
|
|
264
|
-
if (fs.statSync(cwd).isDirectory())
|
|
265
|
-
return cwd;
|
|
266
|
-
}
|
|
267
|
-
catch { }
|
|
268
|
-
throw new Error("Cannot launch Claude Code: the current working directory no longer exists.");
|
|
269
|
-
}
|
|
270
|
-
function errorDetails(error) {
|
|
271
|
-
if (typeof error !== "object" || error === null)
|
|
272
|
-
return { text: String(error) };
|
|
273
|
-
const value = error;
|
|
274
|
-
const text = [value.stderr, value.stdout, value.message]
|
|
275
|
-
.filter((part) => typeof part === "string" && part.length > 0)
|
|
276
|
-
.join("\n");
|
|
277
|
-
return {
|
|
278
|
-
code: typeof value.code === "string" ? value.code : undefined,
|
|
279
|
-
text: text || String(error),
|
|
280
|
-
};
|
|
281
|
-
}
|
|
282
|
-
/**
|
|
283
|
-
* What the catalog can say about a model. Reachable is not the same as allowed:
|
|
284
|
-
* the catalog lists what Claude Code knows about, never what this account may
|
|
285
|
-
* use, so an entitlement problem only surfaces at launch (see launchClaude).
|
|
286
|
-
*/
|
|
287
|
-
const catalogWarning = (model, state) => `Warning: Claude model catalog is ${state}; continuing with "${model}".`;
|
|
288
|
-
/**
|
|
289
|
-
* Pure so all three outcomes are testable without touching the disk cache or
|
|
290
|
-
* spawning a harness.
|
|
291
|
-
*/
|
|
292
|
-
export function judgeModel(model, catalogs, fromConfig) {
|
|
293
|
-
const keepGoing = (reason) => ({
|
|
294
|
-
kind: "unknown-catalog",
|
|
295
|
-
warning: catalogWarning(model, `unavailable${reason}`),
|
|
296
|
-
});
|
|
297
|
-
const catalog = catalogs?.find((item) => item.agent === "claude");
|
|
298
|
-
if (!catalog || !catalog.available || catalog.error) {
|
|
299
|
-
return keepGoing(catalog?.error ? ` (${catalog.error})` : "");
|
|
300
|
-
}
|
|
301
|
-
const candidates = modelNames(catalog);
|
|
302
|
-
if (candidates.length === 0) {
|
|
303
|
-
return { kind: "unknown-catalog", warning: catalogWarning(model, "empty") };
|
|
304
|
-
}
|
|
305
|
-
if (candidates.includes(model))
|
|
306
|
-
return { kind: "ok" };
|
|
307
|
-
const suggestion = findClosestModel(model, candidates);
|
|
308
|
-
const hint = suggestion ? ` Did you mean "${suggestion}"?` : " No close model was found.";
|
|
309
|
-
// A model can leave the catalog on its own, with nobody having typed it
|
|
310
|
-
// wrong, and `needsModelSetup` never asks again, so the way out has to be
|
|
311
|
-
// spelled out.
|
|
312
|
-
const recovery = fromConfig ? " Run `codedeck setup` to pick another." : "";
|
|
313
|
-
return { kind: "rejected", error: `Model "${model}" is not in the Claude catalog.${hint}${recovery}` };
|
|
314
|
-
}
|
|
315
|
-
async function preflightModel(model, fromConfig) {
|
|
316
|
-
let catalogs;
|
|
317
|
-
try {
|
|
318
|
-
catalogs = await getCachedOrDiscoverModels(getRegistry(), { agent: "claude" });
|
|
319
|
-
}
|
|
320
|
-
catch (error) {
|
|
321
|
-
// A catalog that cannot be reached is not evidence against the model, so
|
|
322
|
-
// this warns and lets the launch decide.
|
|
323
|
-
const details = errorDetails(error);
|
|
324
|
-
console.warn(catalogWarning(model, `unavailable (${details.text})`));
|
|
325
|
-
return;
|
|
326
|
-
}
|
|
327
|
-
const verdict = judgeModel(model, catalogs, fromConfig);
|
|
328
|
-
if (verdict.kind === "ok")
|
|
329
|
-
return;
|
|
330
|
-
if (verdict.kind === "unknown-catalog") {
|
|
331
|
-
console.warn(verdict.warning);
|
|
332
|
-
return;
|
|
333
|
-
}
|
|
334
|
-
throw new Error(verdict.error);
|
|
335
|
-
}
|
|
336
|
-
/**
|
|
337
|
-
* Returns the resolved path rather than a boolean so everything downstream
|
|
338
|
-
* launches the exact binary that was checked, instead of asking PATH again and
|
|
339
|
-
* hoping it answers the same way.
|
|
340
|
-
*/
|
|
341
|
-
async function resolveClaudeBinary() {
|
|
342
|
-
// detectBinary reports failure in its result and never rejects, so there is
|
|
343
|
-
// nothing here to catch.
|
|
344
|
-
const installation = await detectBinary("claude");
|
|
345
|
-
if (!installation.installed || !installation.path) {
|
|
346
|
-
throw new Error(CLAUDE_NOT_FOUND);
|
|
347
|
-
}
|
|
348
|
-
return installation.path;
|
|
349
|
-
}
|
|
350
|
-
async function assertSystemPromptFlagSupported(claudeBin, cwd) {
|
|
351
|
-
try {
|
|
352
|
-
await execFileAsync(claudeBin, ["--append-system-prompt-file"], {
|
|
353
|
-
cwd,
|
|
354
|
-
env: sanitizeEnv(process.env),
|
|
355
|
-
timeout: 5000,
|
|
356
|
-
maxBuffer: 1024 * 1024,
|
|
357
|
-
});
|
|
358
|
-
}
|
|
359
|
-
catch (error) {
|
|
360
|
-
const details = errorDetails(error);
|
|
361
|
-
if (details.code === "ENOENT") {
|
|
362
|
-
throw new Error(CLAUDE_NOT_FOUND);
|
|
363
|
-
}
|
|
364
|
-
if (/unknown option|unknown argument|unrecognized option|invalid option/i.test(details.text)) {
|
|
365
|
-
throw new Error("This Claude Code version does not support --append-system-prompt-file. Upgrade Claude Code and retry.");
|
|
366
|
-
}
|
|
367
|
-
// A supported Commander option reports a missing argument for this probe.
|
|
368
|
-
// Other probe failures are left to the real launch, which can provide the
|
|
369
|
-
// harness-specific diagnostic without blocking a valid installation.
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
/**
|
|
373
|
-
* Only stderr is piped, and only because Claude Code reports an unusable model
|
|
374
|
-
* there as a tagged line rather than a distinct exit code. stdout stays
|
|
375
|
-
* inherited so the TUI paints straight to the terminal, which also means
|
|
376
|
-
* `child.stdout` is null and there is nothing to relay.
|
|
377
|
-
*/
|
|
378
|
-
function relayStderr(child, output) {
|
|
379
|
-
const stream = child.stderr;
|
|
380
|
-
if (!stream)
|
|
381
|
-
return;
|
|
382
|
-
stream.setEncoding?.("utf8");
|
|
383
|
-
stream.on("data", (chunk) => {
|
|
384
|
-
output.value += typeof chunk === "string" ? chunk : chunk.toString();
|
|
385
|
-
process.stderr.write(chunk);
|
|
386
|
-
});
|
|
387
|
-
}
|
|
388
|
-
/**
|
|
389
|
-
* A signalled death carries no exit code, and collapsing it to 1 tells a caller
|
|
390
|
-
* the session failed rather than that it was killed. Shells report this as
|
|
391
|
-
* 128 plus the signal number, so Ctrl+C stays 130 and a SIGKILL stays 137.
|
|
392
|
-
*/
|
|
393
|
-
export function exitCodeFor(code, signal) {
|
|
394
|
-
if (code !== null)
|
|
395
|
-
return code;
|
|
396
|
-
if (!signal)
|
|
397
|
-
return 1;
|
|
398
|
-
const number = constants.signals[signal];
|
|
399
|
-
return typeof number === "number" ? 128 + number : 1;
|
|
400
|
-
}
|
|
401
|
-
/**
|
|
402
|
-
* The catalog knows which models exist, not which ones this account may use, so
|
|
403
|
-
* an entitlement problem can only be read off the launch itself. Claude Code
|
|
404
|
-
* reports it as a tagged error rather than a distinct exit code.
|
|
405
|
-
*/
|
|
406
|
-
export function entitlementError(model, output) {
|
|
407
|
-
const tag = /\[claude-code:unrecognized_model\]\s*(\{.*\})?/i.exec(output);
|
|
408
|
-
if (!tag)
|
|
409
|
-
return undefined;
|
|
410
|
-
// The passthrough can carry its own --model, which wins over the one CodeDeck
|
|
411
|
-
// resolved, so the name in the payload is the one that was actually rejected.
|
|
412
|
-
let rejected = model;
|
|
413
|
-
if (tag[1]) {
|
|
414
|
-
try {
|
|
415
|
-
const payload = JSON.parse(tag[1]);
|
|
416
|
-
if (typeof payload.model === "string" && payload.model)
|
|
417
|
-
rejected = payload.model;
|
|
418
|
-
}
|
|
419
|
-
catch { }
|
|
420
|
-
}
|
|
421
|
-
return `Claude Code rejected model "${rejected}" because this account is not entitled to it. Check the Claude plan or model access for the account.`;
|
|
422
|
-
}
|
|
423
|
-
function launchClaude(claudeBin, model, args, cwd) {
|
|
424
|
-
return new Promise((resolve, reject) => {
|
|
425
|
-
let settled = false;
|
|
426
|
-
const output = { value: "" };
|
|
427
|
-
const child = spawn(claudeBin, args, {
|
|
428
|
-
cwd,
|
|
429
|
-
env: sanitizeEnv(process.env),
|
|
430
|
-
stdio: ["inherit", "inherit", "pipe"],
|
|
431
|
-
});
|
|
432
|
-
relayStderr(child, output);
|
|
433
|
-
child.once("error", (error) => {
|
|
434
|
-
if (settled)
|
|
435
|
-
return;
|
|
436
|
-
settled = true;
|
|
437
|
-
const details = errorDetails(error);
|
|
438
|
-
if (details.code === "ENOENT") {
|
|
439
|
-
reject(new Error(CLAUDE_NOT_FOUND));
|
|
440
|
-
}
|
|
441
|
-
else {
|
|
442
|
-
reject(error);
|
|
443
|
-
}
|
|
444
|
-
});
|
|
445
|
-
child.once("close", (code, signal) => {
|
|
446
|
-
if (settled)
|
|
447
|
-
return;
|
|
448
|
-
settled = true;
|
|
449
|
-
const entitlement = entitlementError(model, output.value);
|
|
450
|
-
if (entitlement) {
|
|
451
|
-
reject(new Error(entitlement));
|
|
452
|
-
return;
|
|
453
|
-
}
|
|
454
|
-
process.exitCode = exitCodeFor(code, signal);
|
|
455
|
-
resolve();
|
|
456
|
-
});
|
|
457
|
-
});
|
|
458
|
-
}
|
|
459
232
|
export function registerOpenCommand(program) {
|
|
460
233
|
program
|
|
461
234
|
.command("open [role]")
|
|
462
|
-
.description(
|
|
235
|
+
.description(`Open a configured Claude Code session (roles: ${ROLES.join(" | ")}, default: ${DEFAULT_ROLE}, 3-letter prefixes accepted)`)
|
|
463
236
|
.option("--model <model>", `model to use (default: ${DEFAULT_MODEL})`)
|
|
464
237
|
.option("--effort <level>", `reasoning effort (default: ${DEFAULT_EFFORT})`)
|
|
465
238
|
.option("--resume <session>", "resume a Claude Code session")
|
|
466
239
|
.option("--worktree", "ask Claude Code to create an isolated worktree")
|
|
467
240
|
.option("--no-bypass", "do not skip Claude Code permission prompts")
|
|
468
|
-
.option("--no-theme", "keep the CodeDeck status line without
|
|
241
|
+
.option("--no-theme", "keep only the CodeDeck status line, without the theme or the renderer")
|
|
242
|
+
.option("--no-pty", "do not run the session under a pty, which also drops the automatic rename")
|
|
469
243
|
.allowUnknownOption()
|
|
470
244
|
.action(async (roleArg, opts, command) => {
|
|
471
245
|
const invocation = getInvocation(command, roleArg);
|
|
@@ -480,19 +254,78 @@ export function registerOpenCommand(program) {
|
|
|
480
254
|
// wrong question to greet someone with, and `codedeck setup` is the place
|
|
481
255
|
// to answer it deliberately.
|
|
482
256
|
const config = loadConfig();
|
|
483
|
-
const
|
|
484
|
-
const
|
|
485
|
-
const
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
257
|
+
const orchestratorMode = resolveOrchestratorMode(config);
|
|
258
|
+
const binding = resolveRoleBinding(role, config);
|
|
259
|
+
const launcher = launcherFor(role, binding);
|
|
260
|
+
const passthroughModel = effectiveModel(invocation.passthrough);
|
|
261
|
+
const { model: boundModel, fromConfig } = resolveOpenModel(role, { model: opts.model, passthroughModel }, config);
|
|
262
|
+
// Not the shared temp directory: `open` types the name it finds beside
|
|
263
|
+
// this file into a live session, and on Linux anyone on the box can put
|
|
264
|
+
// a file in /tmp under a name that is only a pid.
|
|
265
|
+
const sessionFile = path.join(sessionsDir(), `codedeck-session-${process.pid}`);
|
|
266
|
+
const runId = randomUUID();
|
|
267
|
+
if (launcher === "opencode") {
|
|
268
|
+
// Dispatch needs a binding, and a binding always carries a model, so
|
|
269
|
+
// this is unreachable through the CLI. It stays because buildArgs
|
|
270
|
+
// takes a string and a TypeError is not a diagnostic.
|
|
271
|
+
if (boundModel === undefined) {
|
|
272
|
+
throw new Error(`Agent "${role}" has no model bound. Run \`${getCliName()} setup\` to bind one.`);
|
|
273
|
+
}
|
|
274
|
+
if (opts.worktree) {
|
|
275
|
+
console.error("Warning: --worktree has no effect on opencode (no native worktree); continuing without it.");
|
|
276
|
+
}
|
|
277
|
+
const model = passthroughModel ?? boundModel;
|
|
278
|
+
await preflightOpencode(model, fromConfig);
|
|
279
|
+
const opencodeBin = await resolveOpencodeBinary();
|
|
280
|
+
// Effort has no opencode flag; the banner names the fallback.
|
|
281
|
+
const effort = opts.effort ?? "default";
|
|
282
|
+
// --no-theme asks for no CodeDeck styling, and an animation is styling.
|
|
283
|
+
if (opts.theme === false) {
|
|
284
|
+
process.stdout.write(renderBanner(role, model, effort));
|
|
285
|
+
}
|
|
286
|
+
else {
|
|
287
|
+
await playBoot(role, model, effort);
|
|
288
|
+
}
|
|
289
|
+
// --no-theme leaves the user's own opencode theme alone. Otherwise the
|
|
290
|
+
// managed rage theme is ensured once and selected through an ephemeral
|
|
291
|
+
// config dir, so the user's tui.json is never rewritten.
|
|
292
|
+
const tuiDir = opts.theme === false || !ensureOpencodeTheme(pluginDir)
|
|
293
|
+
? undefined
|
|
294
|
+
: createEphemeralTuiDir();
|
|
295
|
+
const closeOpencode = () => {
|
|
296
|
+
if (tuiDir !== undefined)
|
|
297
|
+
removeEphemeralTuiDir(tuiDir);
|
|
298
|
+
finishOpenSession(role, sessionFile);
|
|
299
|
+
};
|
|
300
|
+
await spawnHarness(opencodeBin, buildOpencodeArgs(role, { ...opts, model: boundModel }, invocation.passthrough), {
|
|
301
|
+
cwd,
|
|
302
|
+
envExtra: {
|
|
303
|
+
CODEDECK_RUN_ID: runId,
|
|
304
|
+
OPENCODE_CONFIG_CONTENT: buildInlineConfig(pluginDir, role, orchestratorMode),
|
|
305
|
+
...(tuiDir !== undefined ? { OPENCODE_CONFIG_DIR: tuiDir } : {}),
|
|
306
|
+
},
|
|
307
|
+
sessionFile,
|
|
308
|
+
model,
|
|
309
|
+
notFoundMessage: OPENCODE_NOT_FOUND,
|
|
310
|
+
onClose: closeOpencode,
|
|
311
|
+
});
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
const resolved = boundModel ?? DEFAULT_MODEL;
|
|
315
|
+
const args = buildOpenArgs(role, { ...opts, model: resolved, remoteControl: config.remoteControl }, pluginDir, invocation.passthrough, cwd, orchestratorMode);
|
|
316
|
+
const model = passthroughModel ?? resolved;
|
|
491
317
|
await preflightModel(model, fromConfig);
|
|
492
|
-
const claudeBin = await
|
|
493
|
-
await
|
|
494
|
-
|
|
495
|
-
|
|
318
|
+
const claudeBin = await resolveBinary();
|
|
319
|
+
await assertSupport(claudeBin, cwd);
|
|
320
|
+
const effort = opts.effort ?? DEFAULT_EFFORT;
|
|
321
|
+
// --no-theme asks for no CodeDeck styling, and an animation is styling.
|
|
322
|
+
if (opts.theme === false) {
|
|
323
|
+
process.stdout.write(renderBanner(role, model, effort));
|
|
324
|
+
}
|
|
325
|
+
else {
|
|
326
|
+
await playBoot(role, model, effort);
|
|
327
|
+
}
|
|
328
|
+
await launchClaude(claudeBin, model, args, cwd, sessionFile, () => finishOpenSession(role, sessionFile), undefined, undefined, { CODEDECK_RUN_ID: runId }, ptyLaunchForHarness("claude", pluginDir, sessionFile, opts, config, interactive));
|
|
496
329
|
});
|
|
497
330
|
}
|
|
498
331
|
//# sourceMappingURL=open.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open.js","sourceRoot":"","sources":["../../../src/cli/commands/open.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"open.js","sourceRoot":"","sources":["../../../src/cli/commands/open.ts"],"names":[],"mappings":"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"}
|