@aeolus-fleet/trierarch 0.33.1 → 0.34.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 +7 -4
- package/dist/adapters/claude-code-setup.d.ts +11 -0
- package/dist/adapters/claude-code-setup.js +60 -0
- package/dist/adapters/claude-code-setup.js.map +1 -1
- package/dist/adapters/claude-code.d.ts +21 -18
- package/dist/adapters/claude-code.js +46 -36
- package/dist/adapters/claude-code.js.map +1 -1
- package/dist/adapters/codex-setup.d.ts +2 -0
- package/dist/adapters/codex-setup.js +6 -0
- package/dist/adapters/codex-setup.js.map +1 -1
- package/dist/adapters/codex.d.ts +2 -0
- package/dist/adapters/codex.js +31 -3
- package/dist/adapters/codex.js.map +1 -1
- package/dist/adapters/container.d.ts +36 -15
- package/dist/adapters/container.js +72 -93
- package/dist/adapters/container.js.map +1 -1
- package/dist/adapters/copilot-detector.d.ts +13 -0
- package/dist/adapters/copilot-detector.js +62 -0
- package/dist/adapters/copilot-detector.js.map +1 -0
- package/dist/adapters/copilot.d.ts +79 -0
- package/dist/adapters/copilot.js +187 -0
- package/dist/adapters/copilot.js.map +1 -0
- package/dist/adapters/detectors.js +6 -0
- package/dist/adapters/detectors.js.map +1 -1
- package/dist/adapters/files.d.ts +16 -0
- package/dist/adapters/files.js +5 -0
- package/dist/adapters/files.js.map +1 -1
- package/dist/adapters/harnesses.d.ts +3 -2
- package/dist/adapters/harnesses.js +21 -9
- package/dist/adapters/harnesses.js.map +1 -1
- package/dist/adapters/hold-runtime.d.ts +19 -5
- package/dist/adapters/hold-runtime.js +23 -10
- package/dist/adapters/hold-runtime.js.map +1 -1
- package/dist/adapters/hold.d.ts +12 -0
- package/dist/adapters/hold.js +66 -31
- package/dist/adapters/hold.js.map +1 -1
- package/dist/adapters/json-state.js +4 -0
- package/dist/adapters/json-state.js.map +1 -1
- package/dist/adapters/key-files.d.ts +16 -0
- package/dist/adapters/key-files.js +28 -0
- package/dist/adapters/key-files.js.map +1 -0
- package/dist/adapters/key-states.d.ts +21 -0
- package/dist/adapters/key-states.js +43 -0
- package/dist/adapters/key-states.js.map +1 -0
- package/dist/adapters/model-logins.d.ts +21 -0
- package/dist/adapters/model-logins.js +48 -0
- package/dist/adapters/model-logins.js.map +1 -0
- package/dist/adapters/model-proxy.d.ts +32 -0
- package/dist/adapters/model-proxy.js +171 -0
- package/dist/adapters/model-proxy.js.map +1 -0
- package/dist/adapters/paths.d.ts +4 -0
- package/dist/adapters/paths.js +2 -0
- package/dist/adapters/paths.js.map +1 -1
- package/dist/adapters/plugin.d.ts +11 -8
- package/dist/adapters/plugin.js +47 -13
- package/dist/adapters/plugin.js.map +1 -1
- package/dist/adapters/proxy-runtime.d.ts +31 -0
- package/dist/adapters/proxy-runtime.js +100 -0
- package/dist/adapters/proxy-runtime.js.map +1 -0
- package/dist/adapters/proxy-tokens.d.ts +25 -0
- package/dist/adapters/proxy-tokens.js +67 -0
- package/dist/adapters/proxy-tokens.js.map +1 -0
- package/dist/adapters/runtime-adapters.d.ts +11 -6
- package/dist/adapters/runtime-adapters.js +25 -11
- package/dist/adapters/runtime-adapters.js.map +1 -1
- package/dist/adapters/service.d.ts +1 -1
- package/dist/adapters/service.js +2 -2
- package/dist/adapters/service.js.map +1 -1
- package/dist/adapters/trust.d.ts +2 -1
- package/dist/adapters/trust.js +4 -1
- package/dist/adapters/trust.js.map +1 -1
- package/dist/adapters/vendor-answers.d.ts +6 -0
- package/dist/adapters/vendor-answers.js +38 -0
- package/dist/adapters/vendor-answers.js.map +1 -0
- package/dist/adapters/vendor-key-check.d.ts +23 -0
- package/dist/adapters/vendor-key-check.js +36 -0
- package/dist/adapters/vendor-key-check.js.map +1 -0
- package/dist/bin/aeolus-trierarch.js +7 -2
- package/dist/bin/aeolus-trierarch.js.map +1 -1
- package/dist/cli/add.d.ts +2 -2
- package/dist/cli/config-check.js +1 -1
- package/dist/cli/config-check.js.map +1 -1
- package/dist/cli/hold.js +13 -4
- package/dist/cli/hold.js.map +1 -1
- package/dist/cli/login.d.ts +72 -0
- package/dist/cli/login.js +114 -0
- package/dist/cli/login.js.map +1 -0
- package/dist/cli/main.js +85 -5
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/proxy.d.ts +2 -0
- package/dist/cli/proxy.js +58 -0
- package/dist/cli/proxy.js.map +1 -0
- package/dist/cli/run.js +30 -4
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/upgrade.d.ts +2 -2
- package/dist/cli/upgrade.js +2 -2
- package/dist/core/argo-reports.d.ts +10 -0
- package/dist/core/argo-reports.js +17 -0
- package/dist/core/argo-reports.js.map +1 -1
- package/dist/core/check-session-runtime.js +3 -1
- package/dist/core/check-session-runtime.js.map +1 -1
- package/dist/core/check-settings.d.ts +2 -0
- package/dist/core/check-settings.js +6 -1
- package/dist/core/check-settings.js.map +1 -1
- package/dist/core/entry.d.ts +12 -0
- package/dist/core/entry.js.map +1 -1
- package/dist/core/login.d.ts +28 -0
- package/dist/core/login.js +14 -0
- package/dist/core/login.js.map +1 -0
- package/dist/core/ports.d.ts +33 -1
- package/dist/core/reconciler.d.ts +5 -0
- package/dist/core/reconciler.js +12 -7
- package/dist/core/reconciler.js.map +1 -1
- package/dist/core/report-self.js +9 -3
- package/dist/core/report-self.js.map +1 -1
- package/dist/core/run-pass.d.ts +6 -1
- package/dist/core/run-pass.js +81 -13
- package/dist/core/run-pass.js.map +1 -1
- package/package.json +1 -2
- package/dist/adapters/claude-code-screen.d.ts +0 -1
- package/dist/adapters/claude-code-screen.js +0 -22
- package/dist/adapters/claude-code-screen.js.map +0 -1
- package/dist/adapters/held-command.d.ts +0 -13
- package/dist/adapters/held-command.js +0 -16
- package/dist/adapters/held-command.js.map +0 -1
- package/dist/adapters/launch-screen.d.ts +0 -14
- package/dist/adapters/launch-screen.js +0 -5
- package/dist/adapters/launch-screen.js.map +0 -1
- package/dist/adapters/stop-turn.d.ts +0 -13
- package/dist/adapters/stop-turn.js +0 -26
- package/dist/adapters/stop-turn.js.map +0 -1
- package/dist/adapters/tmux.d.ts +0 -13
- package/dist/adapters/tmux.js +0 -33
- package/dist/adapters/tmux.js.map +0 -1
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { spawn } from 'node:child_process';
|
|
2
|
-
import { readdir, readFile, rm, stat } from 'node:fs/promises';
|
|
2
|
+
import { mkdir, readdir, readFile, rm, stat } from 'node:fs/promises';
|
|
3
3
|
import { uptime } from 'node:os';
|
|
4
4
|
import { setTimeout as wait } from 'node:timers/promises';
|
|
5
5
|
import { idSchema } from '@aeolus-fleet/common';
|
|
6
6
|
import { INTERRUPT_WAIT_MS } from './hold.js';
|
|
7
7
|
import { callHold, holdFilesOf } from './hold-protocol.js';
|
|
8
|
+
import { writeProxyToken } from './proxy-tokens.js';
|
|
8
9
|
/** How long a hold has to answer a call other than interrupt. */
|
|
9
10
|
const CALL_TIMEOUT_MS = 2000;
|
|
10
11
|
/** How long a hold has to answer its first call after its start. */
|
|
@@ -17,9 +18,9 @@ const STOP_WAIT_MS = 5000;
|
|
|
17
18
|
const EVENT_LINES = 200;
|
|
18
19
|
/** Runs the command in the background and returns at once: its process is then nobody's child, so no session runs under the trierarch's own process. */
|
|
19
20
|
const DETACHED = '"$@" < /dev/null > /dev/null 2>&1 &';
|
|
20
|
-
/** What a session's start goes through: a systemd scope of its own under a systemd unit, which sets INVOCATION_ID, so a restart or upgrade of the service ends no session (#479, #537). */
|
|
21
|
+
/** What a session's start goes through: a systemd scope of its own under a systemd unit, which sets INVOCATION_ID, so a restart or upgrade of the service ends no session (#479, #537). It expands no variable in the command: systemd 259 would turn a $$ of it into $. */
|
|
21
22
|
export function sessionsLaunch(at) {
|
|
22
|
-
return at.platform === 'linux' && at.env.INVOCATION_ID !== undefined ? ['systemd-run', '--user', '--scope', '--quiet', '--collect', '--'] : [];
|
|
23
|
+
return at.platform === 'linux' && at.env.INVOCATION_ID !== undefined ? ['systemd-run', '--user', '--scope', '--quiet', '--collect', '--expand-environment=no', '--'] : [];
|
|
23
24
|
}
|
|
24
25
|
/**
|
|
25
26
|
* The host session runtime (headless H4, H8, H9): one hold per ship, the
|
|
@@ -33,8 +34,12 @@ export function sessionsLaunch(at) {
|
|
|
33
34
|
* A hold that answers runs; one that started since the machine did and no
|
|
34
35
|
* longer answers has exited, kept so the exit is seen with its events; one
|
|
35
36
|
* from before the machine started is gone. A hold another version started is
|
|
36
|
-
* listed as such (H19)
|
|
37
|
-
*
|
|
37
|
+
* listed as such (H19). What runs beside the holds, as a container runtime's
|
|
38
|
+
* containers, is stopped with its ship's hold, and listed as of another
|
|
39
|
+
* version for a ship no hold holds: an older trierarch started it.
|
|
40
|
+
*
|
|
41
|
+
* A hold runs the session's command itself, unless the runtime holds it
|
|
42
|
+
* otherwise: a container runtime's hold runs the runtime's run of it (H18).
|
|
38
43
|
*/
|
|
39
44
|
export function createHoldRuntime(options) {
|
|
40
45
|
const { sessions, version } = options;
|
|
@@ -67,7 +72,7 @@ export function createHoldRuntime(options) {
|
|
|
67
72
|
return { shipId, status: 'running', ...(answer.state.version !== version && { isOtherVersion: true }) };
|
|
68
73
|
};
|
|
69
74
|
const stop = async (shipId) => {
|
|
70
|
-
await options.
|
|
75
|
+
await options.beside?.stop(shipId);
|
|
71
76
|
const pid = await runningPid(shipId);
|
|
72
77
|
if (pid !== undefined) {
|
|
73
78
|
process.kill(pid, 'SIGTERM');
|
|
@@ -97,14 +102,22 @@ export function createHoldRuntime(options) {
|
|
|
97
102
|
});
|
|
98
103
|
const held = (await Promise.all(shipIds.map(observed))).flatMap((session) => (session === undefined ? [] : [session]));
|
|
99
104
|
const heldIds = new Set(held.map((session) => session.shipId));
|
|
100
|
-
const
|
|
101
|
-
return [...held, ...
|
|
105
|
+
const beside = ((await options.beside?.list()) ?? []).filter((session) => !heldIds.has(session.shipId)).map((session) => ({ ...session, isOtherVersion: true }));
|
|
106
|
+
return [...held, ...beside];
|
|
102
107
|
},
|
|
103
108
|
stop,
|
|
104
|
-
start: async (
|
|
109
|
+
start: async (session) => {
|
|
110
|
+
const { shipId, folder, harness, proxyToken } = session;
|
|
105
111
|
await stop(shipId);
|
|
106
112
|
const files = filesOf(shipId);
|
|
107
|
-
|
|
113
|
+
// The token goes in the session's folder, which only its user reads, and the hold reads it there: a command line is anyone's to see.
|
|
114
|
+
if (proxyToken !== undefined) {
|
|
115
|
+
await mkdir(files.folder, { recursive: true, mode: 0o700 });
|
|
116
|
+
await writeProxyToken(files.folder, proxyToken);
|
|
117
|
+
}
|
|
118
|
+
const tokenVariable = proxyToken === undefined ? [] : ['--proxy-token-variable', proxyToken.variable];
|
|
119
|
+
const { command, env } = options.heldAs === undefined ? { command: session.command, env: session.env ?? {} } : await options.heldAs(session, files);
|
|
120
|
+
const hold = [...options.program, 'hold', shipId, '--sessions', sessions, '--folder', folder, '--harness', harness, ...tokenVariable, ...Object.entries(env).flatMap(([variable, value]) => ['--env', `${variable}=${value}`]), '--', ...command];
|
|
108
121
|
const [program = 'sh', ...args] = [...(options.launch ?? []), 'sh', '-c', DETACHED, 'sh', ...hold];
|
|
109
122
|
const starter = spawn(program, args, { stdio: 'ignore', detached: true });
|
|
110
123
|
await new Promise((resolve, reject) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hold-runtime.js","sourceRoot":"","sources":["../../src/adapters/hold-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"hold-runtime.js","sourceRoot":"","sources":["../../src/adapters/hold-runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/adapters/hold.d.ts
CHANGED
|
@@ -22,6 +22,18 @@ import type { HoldFiles } from './hold-protocol.js';
|
|
|
22
22
|
* thread the first named, started once the last turn's process has ended.
|
|
23
23
|
* Between turns no Codex process runs and the hold stays; its turn is stopped
|
|
24
24
|
* with SIGINT, which ends the process (H12).
|
|
25
|
+
*
|
|
26
|
+
* Copilot runs one `copilot -p` per turn in the same way (CC4), each line the
|
|
27
|
+
* prompt of one resuming the session the last turn's result named. The
|
|
28
|
+
* `copilot` on the PATH is a launcher that runs the native Copilot as its
|
|
29
|
+
* child: a turn ends when the native process closed its output, not when the
|
|
30
|
+
* launcher exits, and its turn is stopped with SIGINT to its whole process
|
|
31
|
+
* group, since a SIGINT to the launcher alone ends the launcher and leaves
|
|
32
|
+
* the native process running the turn to its end. What Copilot writes on
|
|
33
|
+
* stderr is kept among the events, as it says a refused model or login
|
|
34
|
+
* there before any event. A turn that ends with a failing exit status ends
|
|
35
|
+
* the hold with it: the turn died, and the trierarch starts the session
|
|
36
|
+
* again (design harnesses/cursor-copilot, the died turn).
|
|
25
37
|
*/
|
|
26
38
|
/** The longest the hold waits for an interrupted turn to end before the forced line goes in anyway (timings-and-limits.md). */
|
|
27
39
|
export declare const INTERRUPT_WAIT_MS = 10000;
|
package/dist/adapters/hold.js
CHANGED
|
@@ -4,6 +4,7 @@ import { mkdir, rm, writeFile } from 'node:fs/promises';
|
|
|
4
4
|
import { createServer } from 'node:net';
|
|
5
5
|
import { createInterface } from 'node:readline';
|
|
6
6
|
import { codexThreadStartedSchema, codexTurnCommand } from './codex.js';
|
|
7
|
+
import { copilotSessionIdOf, copilotStderrEvent, copilotTurnCommand } from './copilot.js';
|
|
7
8
|
import { holdRequestSchema, parsedLine, REFUSED } from './hold-protocol.js';
|
|
8
9
|
/**
|
|
9
10
|
* The hold (headless H8 to H12): a small process per session, started outside
|
|
@@ -27,6 +28,18 @@ import { holdRequestSchema, parsedLine, REFUSED } from './hold-protocol.js';
|
|
|
27
28
|
* thread the first named, started once the last turn's process has ended.
|
|
28
29
|
* Between turns no Codex process runs and the hold stays; its turn is stopped
|
|
29
30
|
* with SIGINT, which ends the process (H12).
|
|
31
|
+
*
|
|
32
|
+
* Copilot runs one `copilot -p` per turn in the same way (CC4), each line the
|
|
33
|
+
* prompt of one resuming the session the last turn's result named. The
|
|
34
|
+
* `copilot` on the PATH is a launcher that runs the native Copilot as its
|
|
35
|
+
* child: a turn ends when the native process closed its output, not when the
|
|
36
|
+
* launcher exits, and its turn is stopped with SIGINT to its whole process
|
|
37
|
+
* group, since a SIGINT to the launcher alone ends the launcher and leaves
|
|
38
|
+
* the native process running the turn to its end. What Copilot writes on
|
|
39
|
+
* stderr is kept among the events, as it says a refused model or login
|
|
40
|
+
* there before any event. A turn that ends with a failing exit status ends
|
|
41
|
+
* the hold with it: the turn died, and the trierarch starts the session
|
|
42
|
+
* again (design harnesses/cursor-copilot, the died turn).
|
|
30
43
|
*/
|
|
31
44
|
/** The longest the hold waits for an interrupted turn to end before the forced line goes in anyway (timings-and-limits.md). */
|
|
32
45
|
export const INTERRUPT_WAIT_MS = 10_000;
|
|
@@ -71,6 +84,9 @@ export async function runHold(options) {
|
|
|
71
84
|
let isRestarting = false;
|
|
72
85
|
let isStopping = false;
|
|
73
86
|
const isCodex = harness === 'codex';
|
|
87
|
+
const isCopilot = harness === 'copilot';
|
|
88
|
+
/** Codex and Copilot run one process per turn, with no process between turns (H11, CC4). */
|
|
89
|
+
const isTurnPerProcess = isCodex || isCopilot;
|
|
74
90
|
let controls = 0;
|
|
75
91
|
const waiters = new Set();
|
|
76
92
|
const tell = (event) => {
|
|
@@ -94,7 +110,7 @@ export async function runHold(options) {
|
|
|
94
110
|
return;
|
|
95
111
|
}
|
|
96
112
|
const type = Reflect.get(event, 'type');
|
|
97
|
-
const id = isCodex ? codexThreadStartedSchema.safeParse(event).data?.thread_id : sessionIdOf(event);
|
|
113
|
+
const id = isCodex ? codexThreadStartedSchema.safeParse(event).data?.thread_id : isCopilot ? copilotSessionIdOf(line) : sessionIdOf(event);
|
|
98
114
|
if (id !== undefined && id !== sessionId) {
|
|
99
115
|
sessionId = id;
|
|
100
116
|
void writeFile(files.sessionId, id);
|
|
@@ -113,45 +129,60 @@ export async function runHold(options) {
|
|
|
113
129
|
const guard = spawn(process.execPath, ['-e', GUARD], { env: {}, stdio: ['pipe', 'ignore', 'ignore'], detached: true });
|
|
114
130
|
guard.stdin.on('error', () => undefined);
|
|
115
131
|
guard.unref();
|
|
116
|
-
/**
|
|
117
|
-
const
|
|
132
|
+
/** Sends the signal to the harness's process group: the harness and every process it started. */
|
|
133
|
+
const signalGroup = (running, signal) => {
|
|
118
134
|
try {
|
|
119
|
-
process.kill(-(running.pid ?? 0),
|
|
135
|
+
process.kill(-(running.pid ?? 0), signal);
|
|
120
136
|
}
|
|
121
137
|
catch {
|
|
122
138
|
// Its group is gone already.
|
|
123
139
|
}
|
|
124
140
|
};
|
|
141
|
+
const killGroup = (running) => {
|
|
142
|
+
signalGroup(running, 'SIGKILL');
|
|
143
|
+
};
|
|
144
|
+
const spawnHarness = (program, args) => {
|
|
145
|
+
// A process group of its own: a stop ends the harness and every process it started.
|
|
146
|
+
const at = { cwd: folder, env: { ...environment }, detached: true };
|
|
147
|
+
return isCopilot ? spawn(program, args, { ...at, stdio: ['pipe', 'pipe', 'pipe'] }) : spawn(program, args, { ...at, stdio: ['pipe', 'pipe', 'ignore'] });
|
|
148
|
+
};
|
|
125
149
|
const startHarness = (command) => {
|
|
126
150
|
const [program = '', ...args] = command;
|
|
127
|
-
|
|
128
|
-
const started = spawn(program, args, { cwd: folder, env: { ...environment }, stdio: ['pipe', 'pipe', 'ignore'], detached: true });
|
|
151
|
+
const started = spawnHarness(program, args);
|
|
129
152
|
if (started.pid !== undefined) {
|
|
130
153
|
guard.stdin.write(`${String(started.pid)}\n`);
|
|
131
154
|
}
|
|
132
155
|
started.stdin.on('error', () => undefined);
|
|
133
|
-
// codex exec reads a stdin that is no terminal to its end before its turn
|
|
134
|
-
if (
|
|
156
|
+
// codex exec reads a stdin that is no terminal to its end before its turn, and copilot -p may take it as its prompt: neither gets one.
|
|
157
|
+
if (isTurnPerProcess) {
|
|
135
158
|
started.stdin.end();
|
|
136
159
|
}
|
|
137
160
|
createInterface({ input: started.stdout }).on('line', onLine);
|
|
161
|
+
if (started.stderr !== null) {
|
|
162
|
+
createInterface({ input: started.stderr }).on('line', (line) => {
|
|
163
|
+
onLine(copilotStderrEvent(line));
|
|
164
|
+
});
|
|
165
|
+
}
|
|
138
166
|
started.on('error', () => {
|
|
139
167
|
resolveEnd(1);
|
|
140
168
|
});
|
|
141
|
-
|
|
142
|
-
|
|
169
|
+
// Copilot's turn ends once its native process closed the output it inherited from the launcher, which may exit first.
|
|
170
|
+
started.on(isCopilot ? 'close' : 'exit', (code) => {
|
|
171
|
+
if (isTurnPerProcess && child === started) {
|
|
143
172
|
isBusy = false;
|
|
144
173
|
child = undefined;
|
|
145
174
|
}
|
|
146
175
|
tell({ type: 'exit' });
|
|
147
|
-
|
|
176
|
+
// A Copilot turn that failed died: its exit status ends the hold. One the hold stopped ends by its signal, with no status.
|
|
177
|
+
const isDiedTurn = isCopilot && code !== null && code !== 0;
|
|
178
|
+
if (isStopping || isDiedTurn || (!isRestarting && !isTurnPerProcess)) {
|
|
148
179
|
resolveEnd(code ?? 1);
|
|
149
180
|
}
|
|
150
181
|
});
|
|
151
182
|
return started;
|
|
152
183
|
};
|
|
153
184
|
let child = startHarness(options.command);
|
|
154
|
-
if (
|
|
185
|
+
if (isTurnPerProcess) {
|
|
155
186
|
isBusy = true;
|
|
156
187
|
}
|
|
157
188
|
/** Waits until the waiter is told what it waits for, or the time is up. */
|
|
@@ -176,14 +207,18 @@ export async function runHold(options) {
|
|
|
176
207
|
const [program = '', ...flags] = options.command.filter((word) => word !== CONTINUE);
|
|
177
208
|
return sessionId === undefined ? [program, ...flags, CONTINUE] : [program, ...flags, RESUME, sessionId];
|
|
178
209
|
};
|
|
179
|
-
/** Ends
|
|
180
|
-
const
|
|
210
|
+
/** Ends the running turn of a harness with a process per turn: SIGINT, then its process group killed when it has not ended within the wait (H12). */
|
|
211
|
+
const endTurn = async (signal) => {
|
|
181
212
|
const running = child;
|
|
182
213
|
if (running === undefined) {
|
|
183
214
|
return;
|
|
184
215
|
}
|
|
185
216
|
const exited = waitFor((event) => event.type === 'exit', INTERRUPT_WAIT_MS);
|
|
186
|
-
if (signal === 'SIGINT') {
|
|
217
|
+
if (signal === 'SIGINT' && isCopilot) {
|
|
218
|
+
// To the native process too: the launcher alone would end and leave the turn running.
|
|
219
|
+
signalGroup(running, 'SIGINT');
|
|
220
|
+
}
|
|
221
|
+
else if (signal === 'SIGINT') {
|
|
187
222
|
running.kill('SIGINT');
|
|
188
223
|
}
|
|
189
224
|
else {
|
|
@@ -194,35 +229,35 @@ export async function runHold(options) {
|
|
|
194
229
|
await waitFor((event) => event.type === 'exit', INTERRUPT_WAIT_MS);
|
|
195
230
|
}
|
|
196
231
|
};
|
|
197
|
-
/**
|
|
198
|
-
const
|
|
199
|
-
if (sessionId === undefined) {
|
|
200
|
-
return { isOk: false, error: 'Codex named no thread to resume yet' };
|
|
201
|
-
}
|
|
232
|
+
/** The next turn, once the last turn's process has ended: a codex exec resume of the session's thread (H11), or a copilot -p resuming its session (CC4). */
|
|
233
|
+
const startTurn = async (line) => {
|
|
202
234
|
if (child !== undefined) {
|
|
203
235
|
const running = child;
|
|
204
236
|
if ((await waitFor((event) => event.type === 'exit', INTERRUPT_WAIT_MS)) === undefined && child === running) {
|
|
205
|
-
await
|
|
237
|
+
await endTurn('SIGKILL');
|
|
206
238
|
}
|
|
207
239
|
}
|
|
240
|
+
if (sessionId === undefined) {
|
|
241
|
+
return { isOk: false, error: isCopilot ? 'Copilot named no session to resume yet' : 'Codex named no thread to resume yet' };
|
|
242
|
+
}
|
|
208
243
|
isBusy = true;
|
|
209
|
-
child = startHarness(codexTurnCommand({ start: options.command, threadId: sessionId, line }));
|
|
244
|
+
child = startHarness(isCopilot ? copilotTurnCommand({ start: options.command, sessionId, line }) : codexTurnCommand({ start: options.command, threadId: sessionId, line }));
|
|
210
245
|
return { isOk: true };
|
|
211
246
|
};
|
|
212
|
-
/** The lines in the order they came: one waits for the one before, so two never start a
|
|
213
|
-
let
|
|
214
|
-
const
|
|
215
|
-
const sent =
|
|
247
|
+
/** The lines in the order they came: one waits for the one before, so two never start a turn on one session. */
|
|
248
|
+
let lastTurnSend = Promise.resolve();
|
|
249
|
+
const sendTurn = (line) => {
|
|
250
|
+
const sent = lastTurnSend.then(() => startTurn(line));
|
|
216
251
|
// A failed send must not hold back the lines after it.
|
|
217
|
-
|
|
252
|
+
lastTurnSend = sent.catch(() => undefined);
|
|
218
253
|
return sent;
|
|
219
254
|
};
|
|
220
255
|
const interrupt = async () => {
|
|
221
256
|
if (!isBusy) {
|
|
222
257
|
return;
|
|
223
258
|
}
|
|
224
|
-
if (
|
|
225
|
-
await
|
|
259
|
+
if (isTurnPerProcess) {
|
|
260
|
+
await endTurn('SIGINT');
|
|
226
261
|
return;
|
|
227
262
|
}
|
|
228
263
|
const current = child;
|
|
@@ -256,8 +291,8 @@ export async function runHold(options) {
|
|
|
256
291
|
const answer = async (request) => {
|
|
257
292
|
switch (request.call) {
|
|
258
293
|
case 'send':
|
|
259
|
-
if (
|
|
260
|
-
return
|
|
294
|
+
if (isTurnPerProcess) {
|
|
295
|
+
return sendTurn(request.line);
|
|
261
296
|
}
|
|
262
297
|
isBusy = true;
|
|
263
298
|
child?.stdin.write(`${request.line}\n`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hold.js","sourceRoot":"","sources":["../../src/adapters/hold.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hold.js","sourceRoot":"","sources":["../../src/adapters/hold.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { dirname, join } from 'node:path';
|
|
|
3
3
|
import { idSchema, trierarchWorkspaceSchema } from '@aeolus-fleet/common';
|
|
4
4
|
import { z } from 'zod';
|
|
5
5
|
import { EMPTY_STATE, ENTRY_STATES } from '../core/entry.js';
|
|
6
|
+
import { KEY_STATES, LOGINS } from '../core/login.js';
|
|
6
7
|
import { LOW_RESOURCES } from '../core/machine-load.js';
|
|
7
8
|
/**
|
|
8
9
|
* The state store: `~/.aeolus/trierarch/state.json`, written whole and
|
|
@@ -33,6 +34,7 @@ const stateSchema = z.object({
|
|
|
33
34
|
hasStarted: z.boolean(),
|
|
34
35
|
launchedAt: z.string().optional(),
|
|
35
36
|
launchId: z.string().optional(),
|
|
37
|
+
login: z.enum(LOGINS).optional(),
|
|
36
38
|
isReleasedElsewhere: z.literal(true).optional(),
|
|
37
39
|
crewFailures: z.int().min(1).optional(),
|
|
38
40
|
isIdentityGone: z.literal(true).optional(),
|
|
@@ -42,7 +44,9 @@ const stateSchema = z.object({
|
|
|
42
44
|
refused: z.record(z.string(), z.int().positive()),
|
|
43
45
|
lowResources: z.array(z.enum(LOW_RESOURCES)).optional(),
|
|
44
46
|
missingPlugins: z.array(z.string()).optional(),
|
|
47
|
+
notOffered: z.array(z.object({ harness: z.string(), reason: z.string() })).optional(),
|
|
45
48
|
passFailure: z.object({ reason: z.string(), since: z.string() }).optional(),
|
|
49
|
+
keysTold: z.record(z.string(), z.enum(KEY_STATES)).optional(),
|
|
46
50
|
failedStarts: z
|
|
47
51
|
.object({
|
|
48
52
|
shipIds: z.array(idSchema('ship')),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-state.js","sourceRoot":"","sources":["../../src/adapters/json-state.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"json-state.js","sourceRoot":"","sources":["../../src/adapters/json-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { PluginHarness } from './plugin.js';
|
|
2
|
+
/**
|
|
3
|
+
* Each harness's API key, one file per harness in `~/.aeolus/trierarch/keys/`
|
|
4
|
+
* (api keys K5): mode 600 in a folder of mode 700. Only `aeolus-trierarch
|
|
5
|
+
* login` writes it and only the model proxy reads it (K7), with readKey
|
|
6
|
+
* below: the key never comes back out of here into the trierarch.
|
|
7
|
+
*/
|
|
8
|
+
export interface KeyFiles {
|
|
9
|
+
has(harness: PluginHarness): Promise<boolean>;
|
|
10
|
+
write(harness: PluginHarness, key: string): Promise<void>;
|
|
11
|
+
/** Whether there was a key to remove. */
|
|
12
|
+
remove(harness: PluginHarness): Promise<boolean>;
|
|
13
|
+
}
|
|
14
|
+
export declare function createKeyFiles(folder: string): KeyFiles;
|
|
15
|
+
/** The harness's key, for the model proxy alone; none when it holds no key. */
|
|
16
|
+
export declare function readKey(folder: string, harness: PluginHarness): Promise<string | undefined>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { chmod, mkdir, readFile, rename, rm, stat, writeFile } from 'node:fs/promises';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
export function createKeyFiles(folder) {
|
|
4
|
+
const fileOf = (harness) => join(folder, harness);
|
|
5
|
+
return {
|
|
6
|
+
has: async (harness) => stat(fileOf(harness)).then(() => true, () => false),
|
|
7
|
+
write: async (harness, key) => {
|
|
8
|
+
await mkdir(folder, { recursive: true, mode: 0o700 });
|
|
9
|
+
await chmod(folder, 0o700);
|
|
10
|
+
// Written beside it first, so the proxy never reads half a key.
|
|
11
|
+
const next = `${fileOf(harness)}.next`;
|
|
12
|
+
await writeFile(next, key, { mode: 0o600 });
|
|
13
|
+
await chmod(next, 0o600);
|
|
14
|
+
await rename(next, fileOf(harness));
|
|
15
|
+
},
|
|
16
|
+
remove: async (harness) => {
|
|
17
|
+
const wasThere = await stat(fileOf(harness)).then(() => true, () => false);
|
|
18
|
+
await rm(fileOf(harness), { force: true });
|
|
19
|
+
return wasThere;
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/** The harness's key, for the model proxy alone; none when it holds no key. */
|
|
24
|
+
export async function readKey(folder, harness) {
|
|
25
|
+
const key = (await readFile(join(folder, harness), 'utf8').catch(() => '')).trim();
|
|
26
|
+
return key === '' ? undefined : key;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=key-files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key-files.js","sourceRoot":"","sources":["../../src/adapters/key-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAiBjC,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,MAAM,MAAM,GAAG,CAAC,OAAsB,EAAU,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzE,OAAO;QACL,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CACrB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CACxB,GAAG,EAAE,CAAC,IAAI,EACV,GAAG,EAAE,CAAC,KAAK,CACZ;QACH,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE;YAC5B,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACtD,MAAM,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC3B,gEAAgE;YAChE,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;YACvC,MAAM,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAC5C,MAAM,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACzB,MAAM,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACtC,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACxB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAC/C,GAAG,EAAE,CAAC,IAAI,EACV,GAAG,EAAE,CAAC,KAAK,CACZ,CAAC;YACF,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3C,OAAO,QAAQ,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAAc,EAAE,OAAsB;IAClE,MAAM,GAAG,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACnF,OAAO,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { KeyStateAt } from '../core/login.js';
|
|
2
|
+
import type { PluginHarness } from './plugin.js';
|
|
3
|
+
/**
|
|
4
|
+
* Each harness's key state (api keys K8, K9): the model proxy records what
|
|
5
|
+
* its vendor's answers say of the key, and the trierarch reads it. A state is
|
|
6
|
+
* kept for the key file it was said of, by the file's identity, never its
|
|
7
|
+
* content: a new key, which `login` writes as a new file, is ready again
|
|
8
|
+
* (K10), and no key is none.
|
|
9
|
+
*/
|
|
10
|
+
export interface KeyStates {
|
|
11
|
+
stateOf(harness: PluginHarness): Promise<KeyStateAt>;
|
|
12
|
+
/** Keeps what the vendor's answer said of the harness's key now; a state it already has keeps its time, and a refused key stays refused until a new key. */
|
|
13
|
+
record(harness: PluginHarness, said: {
|
|
14
|
+
state: 'ready' | 'refused' | 'outOfCredit';
|
|
15
|
+
at: Date;
|
|
16
|
+
}): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
export declare function createKeyStates(at: {
|
|
19
|
+
keys: string;
|
|
20
|
+
file: string;
|
|
21
|
+
}): KeyStates;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { mkdir, readFile, rename, stat, writeFile } from 'node:fs/promises';
|
|
2
|
+
import { dirname, join } from 'node:path';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { parsedLine } from './hold-protocol.js';
|
|
5
|
+
const recordedSchema = z.record(z.string(), z.object({ state: z.enum(['refused', 'outOfCredit']), at: z.string(), keyFile: z.object({ ino: z.number(), mtimeMs: z.number() }) }));
|
|
6
|
+
function isSameFile(left, right) {
|
|
7
|
+
return left.ino === right.ino && left.mtimeMs === right.mtimeMs;
|
|
8
|
+
}
|
|
9
|
+
export function createKeyStates(at) {
|
|
10
|
+
const keyFileOf = async (harness) => {
|
|
11
|
+
const found = await stat(join(at.keys, harness)).catch(() => undefined);
|
|
12
|
+
return found === undefined ? undefined : { ino: found.ino, mtimeMs: found.mtimeMs };
|
|
13
|
+
};
|
|
14
|
+
const recorded = async () => recordedSchema.safeParse(parsedLine(await readFile(at.file, 'utf8').catch(() => ''))).data ?? {};
|
|
15
|
+
return {
|
|
16
|
+
stateOf: async (harness) => {
|
|
17
|
+
const keyFile = await keyFileOf(harness);
|
|
18
|
+
if (keyFile === undefined) {
|
|
19
|
+
return { state: 'none' };
|
|
20
|
+
}
|
|
21
|
+
const said = (await recorded())[harness];
|
|
22
|
+
return said !== undefined && isSameFile(said.keyFile, keyFile) ? { state: said.state, at: said.at } : { state: 'ready' };
|
|
23
|
+
},
|
|
24
|
+
record: async (harness, said) => {
|
|
25
|
+
const keyFile = await keyFileOf(harness);
|
|
26
|
+
const all = await recorded();
|
|
27
|
+
const before = all[harness];
|
|
28
|
+
// A refused key leaves refused only as a new key login writes (K10), never by a later answer for the same key.
|
|
29
|
+
const isStillRefused = keyFile !== undefined && before?.state === 'refused' && isSameFile(before.keyFile, keyFile);
|
|
30
|
+
const isUnchanged = isStillRefused || (said.state === 'ready' ? before === undefined : keyFile === undefined || (before?.state === said.state && isSameFile(before.keyFile, keyFile)));
|
|
31
|
+
if (isUnchanged) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const others = Object.fromEntries(Object.entries(all).filter(([name]) => name !== harness));
|
|
35
|
+
const next = said.state === 'ready' || keyFile === undefined ? others : { ...others, [harness]: { state: said.state, at: said.at.toISOString(), keyFile } };
|
|
36
|
+
await mkdir(dirname(at.file), { recursive: true, mode: 0o700 });
|
|
37
|
+
const temporary = `${at.file}.next`;
|
|
38
|
+
await writeFile(temporary, JSON.stringify(next));
|
|
39
|
+
await rename(temporary, at.file);
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=key-states.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key-states.js","sourceRoot":"","sources":["../../src/adapters/key-states.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ModelLoginsPort } from '../core/ports.js';
|
|
2
|
+
import type { CodexSetup } from './codex-setup.js';
|
|
3
|
+
import type { KeyStates } from './key-states.js';
|
|
4
|
+
/**
|
|
5
|
+
* Whether a session can start on its login now (api keys K9): on an API key,
|
|
6
|
+
* only once its harness holds one, so a session never starts to be refused by
|
|
7
|
+
* the proxy, nor on its subscription instead (K2). On the subscription,
|
|
8
|
+
* only when nothing the harness reads itself would put a key in reach (K6).
|
|
9
|
+
*/
|
|
10
|
+
export declare function createModelLogins(at: {
|
|
11
|
+
/** What the model proxy recorded of each key (api keys K8). */
|
|
12
|
+
keyStates: Pick<KeyStates, 'stateOf'>;
|
|
13
|
+
/** What in Claude Code's settings would give a session with the options in the folder a key, named; see ClaudeCodeSetup.keyInReach. */
|
|
14
|
+
claudeCode: {
|
|
15
|
+
keyInReach(at: {
|
|
16
|
+
options: Readonly<Record<string, string>>;
|
|
17
|
+
folder?: string;
|
|
18
|
+
}): Promise<string | undefined>;
|
|
19
|
+
};
|
|
20
|
+
codex: Pick<CodexSetup, 'loginKind'>;
|
|
21
|
+
}): ModelLoginsPort;
|