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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wait.js","sourceRoot":"","sources":["../../../src/cli/commands/wait.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,cAAc,EAA0B,MAAM,YAAY,CAAC;AAMpE,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,IAAI,OAAO,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;QACrG,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1F,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClF,OAAO,aAAa,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG,GAAG,MAAM,EAAE,CAAC;IACpE,CAAC;IACD,OAAO,aAAa,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,8CAA8C,CAAC;SAC3D,QAAQ,CAAC,MAAM,EAAE,wCAAwC,CAAC;SAC1D,MAAM,CAAC,QAAQ,EAAE,kCAAkC,CAAC;SACpD,WAAW,CAAC,OAAO,EAAE
|
|
1
|
+
{"version":3,"file":"wait.js","sourceRoot":"","sources":["../../../src/cli/commands/wait.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -5,7 +5,9 @@ import { fileURLToPath } from "node:url";
|
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import { registerRunCommand } from "./commands/run.js";
|
|
7
7
|
import { registerPsCommand } from "./commands/ps.js";
|
|
8
|
+
import { registerClaimsCommand } from "./commands/claims.js";
|
|
8
9
|
import { registerShowCommand } from "./commands/show.js";
|
|
10
|
+
import { registerRenameCommand } from "./commands/rename.js";
|
|
9
11
|
import { registerLogsCommand } from "./commands/logs.js";
|
|
10
12
|
import { registerWaitCommand } from "./commands/wait.js";
|
|
11
13
|
import { registerSendCommand } from "./commands/send.js";
|
|
@@ -15,6 +17,8 @@ import { registerDoctorCommand } from "./commands/doctor.js";
|
|
|
15
17
|
import { registerModelsCommand } from "./commands/models.js";
|
|
16
18
|
import { registerOpenCommand } from "./commands/open.js";
|
|
17
19
|
import { registerSetupCommand } from "./commands/setup.js";
|
|
20
|
+
import { registerUsageCommand } from "./commands/usage.js";
|
|
21
|
+
import { getCliInvocation, getCliName } from "./cli-name.js";
|
|
18
22
|
function getVersion() {
|
|
19
23
|
try {
|
|
20
24
|
const pkgPath = path.join(path.dirname(fileURLToPath(import.meta.url)), "../../package.json");
|
|
@@ -26,8 +30,12 @@ function getVersion() {
|
|
|
26
30
|
}
|
|
27
31
|
}
|
|
28
32
|
const program = new Command();
|
|
33
|
+
// CODEDECK_CLI_NAME renames the tool (for example a `codedeck-dev`
|
|
34
|
+
// alias), so the help below shows that name instead of `npx codedeck`.
|
|
35
|
+
const cliName = getCliName();
|
|
36
|
+
const cli = getCliInvocation();
|
|
29
37
|
program
|
|
30
|
-
.name(
|
|
38
|
+
.name(cliName)
|
|
31
39
|
.description("CodeDeck — local runtime for coding agents\nManage Claude, Codex, OpenCode and OMP through a single session interface")
|
|
32
40
|
.version(getVersion())
|
|
33
41
|
.helpOption("-h, --help", "display help for command")
|
|
@@ -35,34 +43,37 @@ program
|
|
|
35
43
|
.showSuggestionAfterError(true)
|
|
36
44
|
.addHelpText("after", `
|
|
37
45
|
Examples:
|
|
38
|
-
$
|
|
39
|
-
$
|
|
40
|
-
$
|
|
41
|
-
$
|
|
42
|
-
$
|
|
43
|
-
$
|
|
44
|
-
$
|
|
45
|
-
$
|
|
46
|
-
$
|
|
47
|
-
$
|
|
48
|
-
$
|
|
49
|
-
$
|
|
50
|
-
$
|
|
51
|
-
$
|
|
52
|
-
$
|
|
46
|
+
$ ${cli} run "implement authentication" --agent claude --worktree
|
|
47
|
+
$ ${cli} run "fix the tests" --agent codex --bg
|
|
48
|
+
$ ${cli} wait a83f
|
|
49
|
+
$ ${cli} ps
|
|
50
|
+
$ ${cli} ps --json
|
|
51
|
+
$ ${cli} show a83f
|
|
52
|
+
$ ${cli} rename a83f "fix auth tests"
|
|
53
|
+
$ ${cli} logs a83f --follow
|
|
54
|
+
$ ${cli} logs a83f --json
|
|
55
|
+
$ ${cli} send a83f "add tests"
|
|
56
|
+
$ ${cli} stop a83f
|
|
57
|
+
$ ${cli} diff a83f --stat
|
|
58
|
+
$ ${cli} doctor
|
|
59
|
+
$ ${cli} models
|
|
60
|
+
$ ${cli} models codex
|
|
61
|
+
$ ${cli} models --search sonnet
|
|
53
62
|
|
|
54
63
|
Recommended flow:
|
|
55
|
-
$
|
|
56
|
-
$
|
|
57
|
-
$
|
|
58
|
-
$
|
|
64
|
+
$ ${cli} run "task" # blocks and follows logs
|
|
65
|
+
$ ${cli} run "task" --bg --json # starts in background
|
|
66
|
+
$ ${cli} wait <id> # waits without ps/show loop
|
|
67
|
+
$ ${cli} logs <id> --follow # inspect progress
|
|
59
68
|
|
|
60
|
-
Run '
|
|
69
|
+
Run '${cli} <command> --help' for command-specific options.
|
|
61
70
|
Docs: https://github.com/4ndreello/run-agent
|
|
62
71
|
`);
|
|
63
72
|
registerRunCommand(program);
|
|
64
73
|
registerPsCommand(program);
|
|
74
|
+
registerClaimsCommand(program);
|
|
65
75
|
registerShowCommand(program);
|
|
76
|
+
registerRenameCommand(program);
|
|
66
77
|
registerLogsCommand(program);
|
|
67
78
|
registerWaitCommand(program);
|
|
68
79
|
registerSendCommand(program);
|
|
@@ -72,6 +83,7 @@ registerDoctorCommand(program);
|
|
|
72
83
|
registerModelsCommand(program);
|
|
73
84
|
registerOpenCommand(program);
|
|
74
85
|
registerSetupCommand(program);
|
|
86
|
+
registerUsageCommand(program);
|
|
75
87
|
// Make `codedeck help` behave like `codedeck --help`
|
|
76
88
|
program.command("help", { hidden: true }).action(() => program.outputHelp());
|
|
77
89
|
program.parseAsync(process.argv).catch((err) => {
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/picker-state.js
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The catalog is keyed by both halves because a model id alone is ambiguous:
|
|
3
|
+
* two harnesses can list the same one, and `run --agent` needs to know which
|
|
4
|
+
* of them was picked.
|
|
5
|
+
*
|
|
6
|
+
* The separator is ":", the same one free text types and the summary line
|
|
7
|
+
* prints, so the key stays readable wherever it surfaces (the confirm footer
|
|
8
|
+
* shows it verbatim). Splitting it the other way would need a harness name
|
|
9
|
+
* containing ":", and the four there are cannot, so a model id carrying one
|
|
10
|
+
* is still unambiguous.
|
|
11
|
+
*/
|
|
12
|
+
export function itemKey(harness, id) {
|
|
13
|
+
return `${harness ?? ""}:${id}`;
|
|
14
|
+
}
|
|
1
15
|
export function initialState(screen) {
|
|
2
16
|
return { screen, filter: "", cursor: 0, offset: 0, pasting: false };
|
|
3
17
|
}
|
|
@@ -21,16 +35,51 @@ export function hitCount(state) {
|
|
|
21
35
|
return state.screen.items.length;
|
|
22
36
|
return state.screen.items.filter((item) => matches(item, filter)).length;
|
|
23
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* A model typed by hand has to name its harness, because the screen answers a
|
|
40
|
+
* role and a bare id says nothing about who runs it. The separator is ":" and
|
|
41
|
+
* not "/": opencode spells its own ids with a slash ("opencode/gpt-5.6-luna"),
|
|
42
|
+
* so splitting on that would cut a real id in half.
|
|
43
|
+
*
|
|
44
|
+
* Only the first ":" separates. Everything after it is the model, verbatim.
|
|
45
|
+
*/
|
|
46
|
+
export function parseFreeText(raw, harnesses) {
|
|
47
|
+
const cut = raw.indexOf(":");
|
|
48
|
+
if (cut <= 0)
|
|
49
|
+
return undefined;
|
|
50
|
+
const harness = raw.slice(0, cut).trim().toLowerCase();
|
|
51
|
+
const id = raw.slice(cut + 1).trim();
|
|
52
|
+
if (!id || !harnesses.has(harness))
|
|
53
|
+
return undefined;
|
|
54
|
+
return { harness, id };
|
|
55
|
+
}
|
|
24
56
|
export function visibleItems(state) {
|
|
25
57
|
const filter = state.filter.trim().toLowerCase();
|
|
26
58
|
const hits = filter ? state.screen.items.filter((item) => matches(item, filter)) : state.screen.items;
|
|
27
59
|
if (hits.length > 0)
|
|
28
60
|
return hits;
|
|
29
61
|
// Nothing to list, so the only way forward is writing the raw text. This is
|
|
30
|
-
// also the whole screen
|
|
62
|
+
// also the whole screen when no installed harness reported a catalog, which
|
|
31
63
|
// would never have a list to filter.
|
|
32
64
|
const raw = state.filter.trim();
|
|
33
|
-
|
|
65
|
+
const typed = parseFreeText(raw, state.screen.harnesses);
|
|
66
|
+
if (typed) {
|
|
67
|
+
return [{
|
|
68
|
+
id: typed.id,
|
|
69
|
+
label: `usar "${typed.id}" em ${typed.harness}`,
|
|
70
|
+
harness: typed.harness,
|
|
71
|
+
synthetic: true,
|
|
72
|
+
}];
|
|
73
|
+
}
|
|
74
|
+
// An id with no harness in front of it is not a choice this screen can save,
|
|
75
|
+
// so the row says what is missing rather than offering an Enter that would
|
|
76
|
+
// have to guess. The empty id is what blocks that Enter.
|
|
77
|
+
const example = [...state.screen.harnesses][0] ?? "codex";
|
|
78
|
+
return [{
|
|
79
|
+
id: "",
|
|
80
|
+
label: raw ? `escreva ${example}:${raw}` : `digite harness:modelo, por exemplo ${example}:gpt-5.7`,
|
|
81
|
+
synthetic: true,
|
|
82
|
+
}];
|
|
34
83
|
}
|
|
35
84
|
function scrolled(state, cursor, viewport) {
|
|
36
85
|
const offset = Math.min(state.offset, cursor);
|
|
@@ -60,7 +109,16 @@ export function applyKey(state, key, viewport) {
|
|
|
60
109
|
return none(state);
|
|
61
110
|
if (key.sequence < " ")
|
|
62
111
|
return none(state);
|
|
63
|
-
|
|
112
|
+
// Pasted text edits the filter like typed text does, so it has to drop a
|
|
113
|
+
// pending confirmation the same way. Keeping it meant the footer asked
|
|
114
|
+
// about one id while the row on screen was already another.
|
|
115
|
+
return none({
|
|
116
|
+
...state,
|
|
117
|
+
confirming: undefined,
|
|
118
|
+
filter: state.filter + key.sequence,
|
|
119
|
+
cursor: 0,
|
|
120
|
+
offset: 0,
|
|
121
|
+
});
|
|
64
122
|
}
|
|
65
123
|
if (key.ctrl && key.name === "c")
|
|
66
124
|
return { state, action: { kind: "aborted" } };
|
|
@@ -75,12 +133,21 @@ export function applyKey(state, key, viewport) {
|
|
|
75
133
|
return none(cleared);
|
|
76
134
|
if (item.synthetic && item.id === "")
|
|
77
135
|
return none(cleared);
|
|
78
|
-
|
|
79
|
-
|
|
136
|
+
// Both halves or nothing. A row with no harness cannot be saved, and the
|
|
137
|
+
// rows that reach here without one are exactly the ones already refused
|
|
138
|
+
// above, so this only guards the type.
|
|
139
|
+
if (!item.harness)
|
|
140
|
+
return none(cleared);
|
|
141
|
+
const entry = itemKey(item.harness, item.id);
|
|
142
|
+
const picked = { kind: "picked", id: item.id, harness: item.harness };
|
|
143
|
+
if (!item.synthetic || cleared.screen.known.has(entry)) {
|
|
144
|
+
return { state: cleared, action: picked };
|
|
80
145
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
146
|
+
// The pending confirmation is keyed by both halves, so answering it for one
|
|
147
|
+
// harness cannot accept the same id under another.
|
|
148
|
+
if (pending === entry)
|
|
149
|
+
return { state: cleared, action: picked };
|
|
150
|
+
return none({ ...cleared, confirming: entry });
|
|
84
151
|
}
|
|
85
152
|
if (key.name === "up")
|
|
86
153
|
return none(scrolled(cleared, Math.max(0, cleared.cursor - 1), viewport));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"picker-state.js","sourceRoot":"","sources":["../../src/cli/picker-state.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"picker-state.js","sourceRoot":"","sources":["../../src/cli/picker-state.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/picker.js
CHANGED
|
@@ -68,11 +68,16 @@ export async function runScreens(screens, io, c) {
|
|
|
68
68
|
input.resume();
|
|
69
69
|
output.write(PASTE_ON);
|
|
70
70
|
stopResize = io.onResize?.(() => frame.repaint());
|
|
71
|
-
|
|
71
|
+
const pending = [...screens];
|
|
72
|
+
for (let index = 0; index < pending.length; index += 1) {
|
|
73
|
+
const screen = pending[index];
|
|
72
74
|
const result = await runScreen(screen, io, c, frame);
|
|
73
75
|
results.push(result);
|
|
74
76
|
if (result.kind === "aborted")
|
|
75
77
|
break;
|
|
78
|
+
const followups = screen.next?.(result) ?? [];
|
|
79
|
+
if (followups.length > 0)
|
|
80
|
+
pending.splice(index + 1, 0, ...followups);
|
|
76
81
|
}
|
|
77
82
|
}
|
|
78
83
|
finally {
|
|
@@ -119,11 +124,16 @@ function runScreen(screen, io, c, frame) {
|
|
|
119
124
|
}
|
|
120
125
|
detach();
|
|
121
126
|
if (outcome.action.kind === "picked") {
|
|
122
|
-
resolve({
|
|
127
|
+
resolve({
|
|
128
|
+
kind: "picked",
|
|
129
|
+
role: screen.role,
|
|
130
|
+
harness: outcome.action.harness,
|
|
131
|
+
id: outcome.action.id,
|
|
132
|
+
});
|
|
123
133
|
return;
|
|
124
134
|
}
|
|
125
135
|
if (outcome.action.kind === "skipped") {
|
|
126
|
-
resolve({ kind: "skipped",
|
|
136
|
+
resolve({ kind: "skipped", role: screen.role });
|
|
127
137
|
return;
|
|
128
138
|
}
|
|
129
139
|
resolve({ kind: "aborted" });
|
package/dist/cli/picker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"picker.js","sourceRoot":"","sources":["../../src/cli/picker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,QAAQ,GAIT,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAe,MAAM,SAAS,CAAC;AAUnF,MAAM,QAAQ,GAAG,aAAa,CAAC;AAC/B,MAAM,SAAS,GAAG,aAAa,CAAC;AAOhC;;;;;;;GAOG;AACH,SAAS,oBAAoB,CAC3B,KAAwB,EACxB,MAAmD;IAEnD,MAAM,MAAM,GAAG,KAGd,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,aAAa,CAAU,EAAE,CAAC;QACrD,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,QAAiB,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,OAAiB,EACjB,EAAY,EACZ,CAAS;IAET,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAmB,EAAE,CAAC;IAEnC,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,IAAI,QAAQ;YAAE,OAAO;QACrB,QAAQ,GAAG,IAAI,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,CAAC,KAAK,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,sEAAsE;YACtE,8DAA8D;QAChE,CAAC;QACD,KAAK,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC;QAC1B,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC,CAAC;IAEF,2EAA2E;IAC3E,yCAAyC;IACzC,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,OAAO,EAAE,CAAC;QACV,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAEjC,6EAA6E;IAC7E,6CAA6C;IAC7C,MAAM,KAAK,GAAU,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;IACtD,IAAI,UAAoC,CAAC;IAEzC,MAAM,SAAS,GAAG,KAA2D,CAAC;IAC9E,MAAM,MAAM,GAAG;QACb,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,WAAW,EAAE,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;KACrD,CAAC;IAEF,4EAA4E;IAC5E,sEAAsE;IACtE,IAAI,CAAC;QACH,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC1B,KAAK,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC;QACzB,KAAK,CAAC,MAAM,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACvB,UAAU,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAElD,KAAK,
|
|
1
|
+
{"version":3,"file":"picker.js","sourceRoot":"","sources":["../../src/cli/picker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,QAAQ,GAIT,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAe,MAAM,SAAS,CAAC;AAUnF,MAAM,QAAQ,GAAG,aAAa,CAAC;AAC/B,MAAM,SAAS,GAAG,aAAa,CAAC;AAOhC;;;;;;;GAOG;AACH,SAAS,oBAAoB,CAC3B,KAAwB,EACxB,MAAmD;IAEnD,MAAM,MAAM,GAAG,KAGd,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,aAAa,CAAU,EAAE,CAAC;QACrD,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,QAAiB,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,OAAiB,EACjB,EAAY,EACZ,CAAS;IAET,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAmB,EAAE,CAAC;IAEnC,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,IAAI,QAAQ;YAAE,OAAO;QACrB,QAAQ,GAAG,IAAI,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,CAAC,KAAK,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,sEAAsE;YACtE,8DAA8D;QAChE,CAAC;QACD,KAAK,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC;QAC1B,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC,CAAC;IAEF,2EAA2E;IAC3E,yCAAyC;IACzC,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,OAAO,EAAE,CAAC;QACV,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAEjC,6EAA6E;IAC7E,6CAA6C;IAC7C,MAAM,KAAK,GAAU,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;IACtD,IAAI,UAAoC,CAAC;IAEzC,MAAM,SAAS,GAAG,KAA2D,CAAC;IAC9E,MAAM,MAAM,GAAG;QACb,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,WAAW,EAAE,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;KACrD,CAAC;IAEF,4EAA4E;IAC5E,sEAAsE;IACtE,IAAI,CAAC;QACH,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC1B,KAAK,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC;QACzB,KAAK,CAAC,MAAM,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACvB,UAAU,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAElD,MAAM,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;QAC7B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YACvD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;YAC9B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;YACrD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;gBAAE,MAAM;YACrC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAC9C,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;YAAS,CAAC;QACT,KAAK,CAAC,OAAO,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;QACzB,UAAU,EAAE,EAAE,CAAC;QACf,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAClC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,SAAS,CAAC,MAAc,EAAE,EAAY,EAAE,CAAS,EAAE,KAAY;IACtE,OAAO,IAAI,OAAO,CAAe,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QAC7B,IAAI,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QAEjC,MAAM,KAAK,GAAG,GAAG,EAAE;YACjB,MAAM,GAAG,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;YACnC,yEAAyE;YACzE,wEAAwE;YACxE,sCAAsC;YACtC,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;YACpD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YACzC,uEAAuE;YACvE,6DAA6D;YAC7D,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,MAAM,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/C,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC9B,CAAC,CAAC;QAEF,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YAC7B,KAAK,CAAC,OAAO,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;QAC3B,CAAC,CAAC;QAEF,MAAM,KAAK,GAAG,CAAC,QAA4B,EAAE,GAAoB,EAAE,EAAE;YACnE,MAAM,OAAO,GAAQ,GAAG;gBACtB,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,QAAQ,IAAI,EAAE,EAAE;gBACtD,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YAC3D,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACxF,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;gBACtB,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBACnC,KAAK,EAAE,CAAC;oBACR,OAAO;gBACT,CAAC;gBACD,MAAM,EAAE,CAAC;gBACT,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACrC,OAAO,CAAC;wBACN,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,MAAM,CAAC,IAAI;wBACjB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO;wBAC/B,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE;qBACtB,CAAC,CAAC;oBACH,OAAO;gBACT,CAAC;gBACD,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBACtC,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;oBAChD,OAAO;gBACT,CAAC;gBACD,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YAC/B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,EAAE,CAAC;gBACT,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC;QAEF,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAC5B,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC;YACH,KAAK,EAAE,CAAC;QACV,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,EAAE,CAAC;YACT,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/cli/ui.js
CHANGED
|
@@ -5,11 +5,17 @@
|
|
|
5
5
|
import { hitCount, visibleItems } from "./picker-state.js";
|
|
6
6
|
// Box-drawing letters, every row exactly 24 columns wide. Kept as three
|
|
7
7
|
// separate strings rather than one template so an editor cannot reflow it.
|
|
8
|
-
const LOGO = [
|
|
8
|
+
export const LOGO = [
|
|
9
9
|
"╔═╗╔═╗╔╦╗╔═╗╔╦╗╔═╗╔═╗╦╔═",
|
|
10
10
|
"║ ║ ║║║║╠═ ║║║╠═ ║ ╠╩╗",
|
|
11
11
|
"╚═╝╚═╝═╩╝╚═╝═╩╝╚═╝╚═╝╩ ╩",
|
|
12
12
|
];
|
|
13
|
+
// The sign-off, same alphabet as the logo so the two ends of a session match.
|
|
14
|
+
const FAREWELL = [
|
|
15
|
+
"╔╗ ╦ ╦╔═╗",
|
|
16
|
+
"╠╩╗╚╦╝╠═ ",
|
|
17
|
+
"╚═╝ ╩ ╚═╝",
|
|
18
|
+
];
|
|
13
19
|
export const INDENT = " ";
|
|
14
20
|
/** The logo with an optional line of context under it. */
|
|
15
21
|
export function renderLogo(subtitle) {
|
|
@@ -18,6 +24,13 @@ export function renderLogo(subtitle) {
|
|
|
18
24
|
lines.push(`${INDENT}${subtitle}`);
|
|
19
25
|
return `\n${lines.join("\n")}\n`;
|
|
20
26
|
}
|
|
27
|
+
/** The same, for the way out. */
|
|
28
|
+
export function renderFarewell(subtitle) {
|
|
29
|
+
const lines = FAREWELL.map((line) => `${INDENT}${line}`);
|
|
30
|
+
if (subtitle)
|
|
31
|
+
lines.push(`${INDENT}${subtitle}`);
|
|
32
|
+
return `\n${lines.join("\n")}\n`;
|
|
33
|
+
}
|
|
21
34
|
const RESET = "\x1b[0m";
|
|
22
35
|
/**
|
|
23
36
|
* Color is a factory rather than an environment read, because the renderer has
|
|
@@ -130,18 +143,19 @@ function drawsLogo(dim) {
|
|
|
130
143
|
return dim.rows >= LOGO_MIN_ROWS;
|
|
131
144
|
}
|
|
132
145
|
/**
|
|
133
|
-
* Counted, not a constant:
|
|
134
|
-
* and a wrong constant here silently cuts items off the list.
|
|
146
|
+
* Counted, not a constant: error and description lines and the logo only exist
|
|
147
|
+
* sometimes, and a wrong constant here silently cuts items off the list.
|
|
135
148
|
*/
|
|
136
149
|
export function chromeHeight(state, dim) {
|
|
137
150
|
const logo = drawsLogo(dim) ? LOGO.length + 1 : 0;
|
|
138
151
|
const header = 1;
|
|
139
152
|
const error = state.screen.error ? 1 : 0;
|
|
153
|
+
const description = state.screen.description?.length ?? 0;
|
|
140
154
|
const filterLine = 1;
|
|
141
155
|
const footer = 1;
|
|
142
156
|
// One: the blank above the filter. The logo brings its own, already counted.
|
|
143
157
|
const blank = 1;
|
|
144
|
-
return logo + header + error + filterLine + footer + blank;
|
|
158
|
+
return logo + header + error + description + filterLine + footer + blank;
|
|
145
159
|
}
|
|
146
160
|
const PLAIN = colors(false);
|
|
147
161
|
/**
|
|
@@ -201,6 +215,8 @@ export function renderFrame(state, dim, c) {
|
|
|
201
215
|
lines.push(`${INDENT}${c.bold(`${state.screen.title} ~ ${state.screen.counter}`)}`);
|
|
202
216
|
if (state.screen.error)
|
|
203
217
|
lines.push(`${INDENT}${c.dim(state.screen.error)}`);
|
|
218
|
+
for (const line of state.screen.description ?? [])
|
|
219
|
+
lines.push(`${INDENT}${c.dim(line)}`);
|
|
204
220
|
lines.push("");
|
|
205
221
|
lines.push(`${INDENT}filtrar: ${state.filter}`);
|
|
206
222
|
const filtering = state.filter.trim().length > 0;
|
package/dist/cli/ui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/cli/ui.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAoB,MAAM,mBAAmB,CAAC;AAE7E,wEAAwE;AACxE,2EAA2E;AAC3E,MAAM,IAAI,GAAG;
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/cli/ui.ts"],"names":[],"mappings":"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"}
|
package/dist/config/config.js
CHANGED
|
@@ -1,6 +1,29 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { getPaths } from "./paths.js";
|
|
4
|
+
import { isAgentId } from "../core/session.js";
|
|
5
|
+
import { parseSandbox } from "../core/driver.js";
|
|
6
|
+
export { BALANCED_PRESET, DISPATCHER_PRESET, EXPLORER_PRESET, ORCHESTRATOR_PRESETS, isOrchestratorMode, orchestratorModeLabel, resolveOrchestratorMode, } from "./orchestrator-mode.js";
|
|
7
|
+
/**
|
|
8
|
+
* A saved binding is only usable whole. A half-written entry (a harness with
|
|
9
|
+
* no model, or the reverse) resolves to nothing rather than to a guess, so the
|
|
10
|
+
* caller falls back the same way it would for a role nobody configured.
|
|
11
|
+
*
|
|
12
|
+
* The file is JSON someone can edit, and the cast in `loadConfig` believes
|
|
13
|
+
* whatever it finds, so the harness is checked against the four CodeDeck
|
|
14
|
+
* drives. Without that, `{"harness":"wat"}` reached the daemon as an agent id
|
|
15
|
+
* and died there instead of falling back here.
|
|
16
|
+
*/
|
|
17
|
+
export function resolveRoleBinding(role, config = {}) {
|
|
18
|
+
if (role === undefined)
|
|
19
|
+
return undefined;
|
|
20
|
+
const binding = config.agents?.[role];
|
|
21
|
+
if (!binding || !isAgentId(binding.harness))
|
|
22
|
+
return undefined;
|
|
23
|
+
if (typeof binding.model !== "string" || binding.model.trim() === "")
|
|
24
|
+
return undefined;
|
|
25
|
+
return { harness: binding.harness, model: binding.model };
|
|
26
|
+
}
|
|
4
27
|
/**
|
|
5
28
|
* Resolve the model passed to a driver without making driver defaults part of
|
|
6
29
|
* CodeDeck's config. An undefined result lets the selected driver choose its
|
|
@@ -9,9 +32,25 @@ import { getPaths } from "./paths.js";
|
|
|
9
32
|
export function resolveModel(agent, explicit, config = {}) {
|
|
10
33
|
return explicit ?? config.models?.[agent] ?? config.defaultModel;
|
|
11
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Resolve a hand-edited sandbox value without allowing an invalid value to
|
|
37
|
+
* reach a driver. An invalid value is treated as absent, so the driver keeps
|
|
38
|
+
* its own fallback.
|
|
39
|
+
*/
|
|
40
|
+
export function resolveDefaultSandbox(config = {}) {
|
|
41
|
+
try {
|
|
42
|
+
const value = config?.defaultSandbox;
|
|
43
|
+
return typeof value === "string" ? parseSandbox(value) : undefined;
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
12
49
|
const DEFAULT_CONFIG = {
|
|
13
50
|
defaultAgent: "claude",
|
|
14
51
|
worktree: false,
|
|
52
|
+
remoteControl: true,
|
|
53
|
+
pty: true,
|
|
15
54
|
};
|
|
16
55
|
export function loadConfig() {
|
|
17
56
|
const { configFile } = getPaths();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
export const DISPATCHER_PRESET = Object.freeze({
|
|
2
|
+
investigate: "none",
|
|
3
|
+
selfWork: "none",
|
|
4
|
+
tools: "dispatch",
|
|
5
|
+
});
|
|
6
|
+
export const BALANCED_PRESET = Object.freeze({
|
|
7
|
+
investigate: "read",
|
|
8
|
+
selfWork: "trivial",
|
|
9
|
+
tools: "edit",
|
|
10
|
+
});
|
|
11
|
+
export const EXPLORER_PRESET = Object.freeze({
|
|
12
|
+
investigate: "free",
|
|
13
|
+
selfWork: "small",
|
|
14
|
+
tools: "edit",
|
|
15
|
+
});
|
|
16
|
+
export const ORCHESTRATOR_PRESETS = Object.freeze({
|
|
17
|
+
dispatcher: DISPATCHER_PRESET,
|
|
18
|
+
balanced: BALANCED_PRESET,
|
|
19
|
+
explorer: EXPLORER_PRESET,
|
|
20
|
+
});
|
|
21
|
+
const INVESTIGATE_MODES = ["none", "read", "free"];
|
|
22
|
+
const SELF_WORK_MODES = ["none", "trivial", "small"];
|
|
23
|
+
const ORCHESTRATOR_TOOLS = ["dispatch", "read", "edit"];
|
|
24
|
+
function hasOwn(value, property) {
|
|
25
|
+
return Object.prototype.hasOwnProperty.call(value, property);
|
|
26
|
+
}
|
|
27
|
+
export function isOrchestratorMode(value) {
|
|
28
|
+
if (typeof value !== "object" || value === null || Array.isArray(value))
|
|
29
|
+
return false;
|
|
30
|
+
const candidate = value;
|
|
31
|
+
if (!INVESTIGATE_MODES.includes(candidate.investigate))
|
|
32
|
+
return false;
|
|
33
|
+
if (!SELF_WORK_MODES.includes(candidate.selfWork))
|
|
34
|
+
return false;
|
|
35
|
+
if (!ORCHESTRATOR_TOOLS.includes(candidate.tools))
|
|
36
|
+
return false;
|
|
37
|
+
if (!hasOwn(candidate, "parallelism"))
|
|
38
|
+
return true;
|
|
39
|
+
return typeof candidate.parallelism === "number" && Number.isFinite(candidate.parallelism) && candidate.parallelism > 0;
|
|
40
|
+
}
|
|
41
|
+
function copyMode(mode) {
|
|
42
|
+
return {
|
|
43
|
+
investigate: mode.investigate,
|
|
44
|
+
selfWork: mode.selfWork,
|
|
45
|
+
tools: mode.tools,
|
|
46
|
+
...(hasOwn(mode, "parallelism") ? { parallelism: mode.parallelism } : {}),
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
export function resolveOrchestratorMode(config = {}) {
|
|
50
|
+
const configured = config.orchestrator;
|
|
51
|
+
if (!isOrchestratorMode(configured))
|
|
52
|
+
return copyMode(DISPATCHER_PRESET);
|
|
53
|
+
return copyMode(configured);
|
|
54
|
+
}
|
|
55
|
+
function matchesPreset(mode, preset) {
|
|
56
|
+
const sameParallelism = hasOwn(mode, "parallelism") === hasOwn(preset, "parallelism") &&
|
|
57
|
+
(!hasOwn(mode, "parallelism") || mode.parallelism === preset.parallelism);
|
|
58
|
+
return (mode.investigate === preset.investigate &&
|
|
59
|
+
mode.selfWork === preset.selfWork &&
|
|
60
|
+
mode.tools === preset.tools &&
|
|
61
|
+
sameParallelism);
|
|
62
|
+
}
|
|
63
|
+
export function orchestratorModeLabel(mode) {
|
|
64
|
+
if (matchesPreset(mode, DISPATCHER_PRESET))
|
|
65
|
+
return "dispatcher";
|
|
66
|
+
if (matchesPreset(mode, BALANCED_PRESET))
|
|
67
|
+
return "balanced";
|
|
68
|
+
if (matchesPreset(mode, EXPLORER_PRESET))
|
|
69
|
+
return "explorer";
|
|
70
|
+
return "custom";
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=orchestrator-mode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator-mode.js","sourceRoot":"","sources":["../../src/config/orchestrator-mode.ts"],"names":[],"mappings":"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"}
|
package/dist/config/paths.js
CHANGED
|
@@ -32,6 +32,11 @@ export function getPaths() {
|
|
|
32
32
|
logsDir: path.join(base, "logs"),
|
|
33
33
|
worktreesDir: path.join(base, "worktrees"),
|
|
34
34
|
cacheDir: path.join(base, "cache"),
|
|
35
|
+
// Per-session scratch: the session id a hook reports, and the name it
|
|
36
|
+
// derives from the first prompt. It lives here rather than in the shared
|
|
37
|
+
// temp directory because `open` types what it finds there into a live
|
|
38
|
+
// session, and on Linux anyone on the box can write to /tmp.
|
|
39
|
+
sessionsDir: path.join(base, "sessions"),
|
|
35
40
|
modelsCache: path.join(base, "cache", "models.json"),
|
|
36
41
|
configFile: path.join(configBase, "config.json"),
|
|
37
42
|
};
|
|
@@ -41,5 +46,8 @@ export function ensureDirs() {
|
|
|
41
46
|
for (const dir of [p.base, p.logsDir, p.worktreesDir, p.cacheDir, path.dirname(p.configFile)]) {
|
|
42
47
|
fs.mkdirSync(dir, { recursive: true });
|
|
43
48
|
}
|
|
49
|
+
// Narrower than the rest on purpose: what lands here is typed into a
|
|
50
|
+
// session, so only its owner may put anything in it.
|
|
51
|
+
fs.mkdirSync(p.sessionsDir, { recursive: true, mode: 0o700 });
|
|
44
52
|
}
|
|
45
53
|
//# sourceMappingURL=paths.js.map
|
package/dist/config/paths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,MAAM,UAAU,UAAU;IACxB,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,qCAAqC;IACrC,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IAChE,mEAAmE;IACnE,wCAAwC;IACxC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,YAAY,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IAC9E,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IACxC,IAAI,GAAG;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAC9B,MAAM,UAAU,GAAG,YAAY,EAAE,CAAC;IAClC,OAAO;QACL,IAAI;QACJ,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC;QACnC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC;QAC1C,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC;QACxC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC;QACxC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;QAChC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;QAC1C,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;QAClC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,CAAC;QACpD,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC;KACjD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;IACrB,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QAC9F,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,MAAM,UAAU,UAAU;IACxB,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,qCAAqC;IACrC,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IAChE,mEAAmE;IACnE,wCAAwC;IACxC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,YAAY,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IAC9E,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IACxC,IAAI,GAAG;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAC9B,MAAM,UAAU,GAAG,YAAY,EAAE,CAAC;IAClC,OAAO;QACL,IAAI;QACJ,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC;QACnC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC;QAC1C,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC;QACxC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC;QACxC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;QAChC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;QAC1C,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;QAClC,sEAAsE;QACtE,yEAAyE;QACzE,sEAAsE;QACtE,6DAA6D;QAC7D,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC;QACxC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,CAAC;QACpD,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC;KACjD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;IACrB,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QAC9F,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IACD,qEAAqE;IACrE,qDAAqD;IACrD,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAChE,CAAC"}
|