@aeolus-fleet/trierarch 0.33.1 → 0.35.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-usage.d.ts +2 -0
- package/dist/adapters/claude-code-usage.js +16 -12
- package/dist/adapters/claude-code-usage.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/clone-workspace.js +4 -0
- package/dist/adapters/clone-workspace.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-usage.d.ts +2 -0
- package/dist/adapters/codex-usage.js +16 -11
- package/dist/adapters/codex-usage.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/core-version.d.ts +1 -1
- package/dist/adapters/core-version.js +1 -1
- 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 +5 -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/rest-fleet.js +3 -5
- package/dist/adapters/rest-fleet.js.map +1 -1
- 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 +3 -1
- package/dist/adapters/service.js +6 -2
- package/dist/adapters/service.js.map +1 -1
- package/dist/adapters/ship-sockets.d.ts +1 -1
- package/dist/adapters/ship-sockets.js +2 -2
- package/dist/adapters/ship-sockets.js.map +1 -1
- package/dist/adapters/tokens-per-login.d.ts +8 -0
- package/dist/adapters/tokens-per-login.js +15 -0
- package/dist/adapters/tokens-per-login.js.map +1 -0
- 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/usage.d.ts +2 -0
- package/dist/adapters/usage.js +1 -1
- package/dist/adapters/usage.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/add.js +1 -1
- package/dist/cli/add.js.map +1 -1
- 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/init.js +19 -2
- package/dist/cli/init.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 +89 -8
- 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 +31 -5
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/upgrade.d.ts +5 -3
- package/dist/cli/upgrade.js +9 -3
- package/dist/cli/upgrade.js.map +1 -1
- 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 +14 -0
- package/dist/core/entry.js.map +1 -1
- package/dist/core/login.d.ts +49 -0
- package/dist/core/login.js +24 -0
- package/dist/core/login.js.map +1 -0
- package/dist/core/ports.d.ts +39 -4
- package/dist/core/read-usage.d.ts +2 -1
- package/dist/core/read-usage.js +6 -3
- package/dist/core/read-usage.js.map +1 -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.d.ts +6 -2
- package/dist/core/report-self.js +34 -8
- package/dist/core/report-self.js.map +1 -1
- package/dist/core/run-pass.d.ts +6 -1
- package/dist/core/run-pass.js +84 -14
- package/dist/core/run-pass.js.map +1 -1
- package/package.json +3 -4
- 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
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,8 @@ 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(),
|
|
38
|
+
earlierLogins: z.array(z.object({ login: z.enum(LOGINS), until: z.string() })).optional(),
|
|
36
39
|
isReleasedElsewhere: z.literal(true).optional(),
|
|
37
40
|
crewFailures: z.int().min(1).optional(),
|
|
38
41
|
isIdentityGone: z.literal(true).optional(),
|
|
@@ -42,7 +45,9 @@ const stateSchema = z.object({
|
|
|
42
45
|
refused: z.record(z.string(), z.int().positive()),
|
|
43
46
|
lowResources: z.array(z.enum(LOW_RESOURCES)).optional(),
|
|
44
47
|
missingPlugins: z.array(z.string()).optional(),
|
|
48
|
+
notOffered: z.array(z.object({ harness: z.string(), reason: z.string() })).optional(),
|
|
45
49
|
passFailure: z.object({ reason: z.string(), since: z.string() }).optional(),
|
|
50
|
+
keysTold: z.record(z.string(), z.enum(KEY_STATES)).optional(),
|
|
46
51
|
failedStarts: z
|
|
47
52
|
.object({
|
|
48
53
|
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":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,YAAY,EAAuB,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGxD;;;;;;;GAOG;AAEH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,cAAc,GAAG,iBAAiB,CAAC;AAEhD,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC,MAAM,CACf,CAAC,CAAC,MAAM,EAAE,EACV,CAAC,CAAC,MAAM,CAAC;QACP,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;QACxB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,eAAe,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QACnC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,SAAS,EAAE,wBAAwB;QACnC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAClC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;QACzC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;QAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC1B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE;QACvB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACjC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE;QAChC,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;QACzF,mBAAmB,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;QAC/C,YAAY,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QACvC,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;KAC3C,CAAC,CACH;IACD,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC/F,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC1F,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IACjD,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE;IACvD,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC9C,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;IACrF,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC3E,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC7D,YAAY,EAAE,CAAC;SACZ,MAAM,CAAC;QACN,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;QAClB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;QACd,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE;KAC/E,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAC;AAEH,kEAAkE;AAClE,MAAM,cAAc,GAAG,CAAC,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAE/D,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO;QACL,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,IAAI,IAAY,CAAC;YACjB,IAAI,CAAC;gBACH,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACtC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;oBACrB,OAAO,WAAW,CAAC;gBACrB,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,IAAI,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC3C,MAAM,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;gBACxD,OAAO,WAAW,CAAC;YACrB,CAAC;YACD,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,gHAAgH;gBAChH,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,iKAAiK,CACzK,CAAC;YACJ,CAAC;YACD,OAAO,MAAM,CAAC,IAAI,CAAC;QACrB,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,KAAqB,EAAE,EAAE;YACpC,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAChD,MAAM,SAAS,GAAG,GAAG,IAAI,MAAM,CAAC;YAChC,MAAM,SAAS,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACnF,MAAM,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -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;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { PLUGIN_HARNESSES } from './plugin.js';
|
|
2
|
+
/**
|
|
3
|
+
* Whether a session can start on its login now (api keys K9): on an API key,
|
|
4
|
+
* only once its harness holds one, so a session never starts to be refused by
|
|
5
|
+
* the proxy, nor on its subscription instead (K2). On the subscription,
|
|
6
|
+
* only when nothing the harness reads itself would put a key in reach (K6).
|
|
7
|
+
*/
|
|
8
|
+
export function createModelLogins(at) {
|
|
9
|
+
return {
|
|
10
|
+
startProblem: async ({ harness, login, options, folder }) => {
|
|
11
|
+
if (login === 'subscription') {
|
|
12
|
+
return subscriptionProblem(at, { harness, options, ...(folder !== undefined && { folder }) });
|
|
13
|
+
}
|
|
14
|
+
if (harness === 'copilot') {
|
|
15
|
+
return "copilot signs in with this computer's own login and runs on no API key: run the ship on its subscription";
|
|
16
|
+
}
|
|
17
|
+
const { state, at: since = '' } = await keyStateOf(at, harness);
|
|
18
|
+
switch (state) {
|
|
19
|
+
case 'ready':
|
|
20
|
+
return undefined;
|
|
21
|
+
case 'none':
|
|
22
|
+
return `${harness} has no API key on this computer: aeolus-trierarch login ${harness} --api-key`;
|
|
23
|
+
case 'refused':
|
|
24
|
+
return `${harness}'s API key was refused by its vendor since ${since}: give it a new one with aeolus-trierarch login ${harness} --api-key`;
|
|
25
|
+
case 'outOfCredit':
|
|
26
|
+
return `${harness}'s API key is out of credit since ${since}: it is checked every 15 minutes, or at once with aeolus-trierarch login ${harness} --check`;
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
keyState: (harness) => keyStateOf(at, harness),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/** The harness's key state; none for a harness this trierarch keeps no key for. */
|
|
33
|
+
function keyStateOf(at, harness) {
|
|
34
|
+
const known = PLUGIN_HARNESSES.find((name) => name === harness);
|
|
35
|
+
return known === undefined ? Promise.resolve({ state: 'none' }) : at.keyStates.stateOf(known);
|
|
36
|
+
}
|
|
37
|
+
/** Why a session of the harness would not run on its subscription alone; none when it would. */
|
|
38
|
+
async function subscriptionProblem(at, session) {
|
|
39
|
+
if (session.harness === 'claude-code') {
|
|
40
|
+
const found = await at.claudeCode.keyInReach({ options: session.options, ...(session.folder !== undefined && { folder: session.folder }) });
|
|
41
|
+
return found === undefined ? undefined : `claude-code would reach an API key on its subscription (${found}): remove it, or run the ship on its API key`;
|
|
42
|
+
}
|
|
43
|
+
if (session.harness === 'codex' && (await at.codex.loginKind()) === 'apiKey') {
|
|
44
|
+
return 'codex is logged in with an API key, not ChatGPT: log Codex in with ChatGPT (codex logout, then codex login), or run the ship on its API key';
|
|
45
|
+
}
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=model-logins.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-logins.js","sourceRoot":"","sources":["../../src/adapters/model-logins.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAsB,MAAM,aAAa,CAAC;AAEnE;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAMjC;IACC,OAAO;QACL,YAAY,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;YAC1D,IAAI,KAAK,KAAK,cAAc,EAAE,CAAC;gBAC7B,OAAO,mBAAmB,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;YAChG,CAAC;YACD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,OAAO,0GAA0G,CAAC;YACpH,CAAC;YACD,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,MAAM,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YAChE,QAAQ,KAAK,EAAE,CAAC;gBACd,KAAK,OAAO;oBACV,OAAO,SAAS,CAAC;gBACnB,KAAK,MAAM;oBACT,OAAO,GAAG,OAAO,4DAA4D,OAAO,YAAY,CAAC;gBACnG,KAAK,SAAS;oBACZ,OAAO,GAAG,OAAO,8CAA8C,KAAK,mDAAmD,OAAO,YAAY,CAAC;gBAC7I,KAAK,aAAa;oBAChB,OAAO,GAAG,OAAO,qCAAqC,KAAK,4EAA4E,OAAO,UAAU,CAAC;YAC7J,CAAC;QACH,CAAC;QACD,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC;KAC/C,CAAC;AACJ,CAAC;AAED,mFAAmF;AACnF,SAAS,UAAU,CAAC,EAA6C,EAAE,OAAe;IAChF,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAyB,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IACvF,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChG,CAAC;AAED,gGAAgG;AAChG,KAAK,UAAU,mBAAmB,CAAC,EAA2C,EAAE,OAAwF;IACtK,IAAI,OAAO,CAAC,OAAO,KAAK,aAAa,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5I,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,2DAA2D,KAAK,8CAA8C,CAAC;IAC1J,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC7E,OAAO,6IAA6I,CAAC;IACvJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type IncomingMessage, type ServerResponse } from 'node:http';
|
|
2
|
+
import { type PluginHarness } from './plugin.js';
|
|
3
|
+
/**
|
|
4
|
+
* The model proxy (headless H16, api keys K7): the one process that reads a
|
|
5
|
+
* harness's API key. A session reaches its vendor through it with a token of
|
|
6
|
+
* its own; the proxy takes the token only from a running session of that
|
|
7
|
+
* harness, swaps it for the key, and forwards the request to that harness's
|
|
8
|
+
* vendor alone: `/anthropic/...` to Anthropic for Claude Code, `/openai/...`
|
|
9
|
+
* to OpenAI for Codex. Its refusals name neither a key nor a token. It reads
|
|
10
|
+
* every vendor answer to the key and records what it says of the key (api
|
|
11
|
+
* keys K9): a success as it streams, an error once whole, before it is sent
|
|
12
|
+
* on unchanged.
|
|
13
|
+
*/
|
|
14
|
+
export interface ModelProxy {
|
|
15
|
+
readonly handle: (request: IncomingMessage, response: ServerResponse) => void;
|
|
16
|
+
/** Checks each key out of credit once (api keys K10), as the proxy does every 15 minutes. */
|
|
17
|
+
readonly checkOutOfCredit: () => Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
/** The proxy's own path, which answers its version. */
|
|
20
|
+
export declare const STATE_PATH = "/aeolus/state";
|
|
21
|
+
/** The proxy's own path that checks a harness's key at once, `<path>/<harness>` (login --check, K10). */
|
|
22
|
+
export declare const CHECK_PATH = "/aeolus/check/";
|
|
23
|
+
/** How often a key out of credit is checked (K10). */
|
|
24
|
+
export declare const CHECK_INTERVAL_MS: number;
|
|
25
|
+
export declare function createModelProxy(at: {
|
|
26
|
+
sessions: string;
|
|
27
|
+
keys: string;
|
|
28
|
+
keyStates: string;
|
|
29
|
+
version: string;
|
|
30
|
+
vendors?: Partial<Record<PluginHarness, string>>;
|
|
31
|
+
now?: () => Date;
|
|
32
|
+
}): ModelProxy;
|