@excitedjs/agent-runtime-codex 0.5.0-beta.179 → 0.5.0-beta.182
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/dist/activity/budget.d.ts +8 -0
- package/dist/activity/budget.d.ts.map +1 -0
- package/dist/activity/budget.js +9 -0
- package/dist/activity/budget.js.map +1 -0
- package/dist/{transcript → activity}/cursor.d.ts +2 -2
- package/dist/activity/cursor.d.ts.map +1 -0
- package/dist/{transcript → activity}/cursor.js +10 -10
- package/dist/activity/cursor.js.map +1 -0
- package/dist/activity/error.d.ts +16 -0
- package/dist/activity/error.d.ts.map +1 -0
- package/dist/activity/error.js +22 -0
- package/dist/activity/error.js.map +1 -0
- package/dist/activity/opened-file.d.ts +10 -0
- package/dist/activity/opened-file.d.ts.map +1 -0
- package/dist/{transcript → activity}/opened-file.js +10 -10
- package/dist/activity/opened-file.js.map +1 -0
- package/dist/activity/path.d.ts +27 -0
- package/dist/activity/path.d.ts.map +1 -0
- package/dist/{transcript → activity}/path.js +49 -119
- package/dist/activity/path.js.map +1 -0
- package/dist/activity/projection.d.ts +34 -0
- package/dist/activity/projection.d.ts.map +1 -0
- package/dist/activity/projection.js +191 -0
- package/dist/activity/projection.js.map +1 -0
- package/dist/activity/reader.d.ts +14 -0
- package/dist/activity/reader.d.ts.map +1 -0
- package/dist/activity/reader.js +314 -0
- package/dist/activity/reader.js.map +1 -0
- package/dist/diagnostic.d.ts +2 -2
- package/dist/diagnostic.d.ts.map +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp-config.d.ts +27 -3
- package/dist/mcp-config.d.ts.map +1 -1
- package/dist/mcp-config.js +55 -9
- package/dist/mcp-config.js.map +1 -1
- package/dist/provider.d.ts +28 -42
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +37 -56
- package/dist/provider.js.map +1 -1
- package/dist/runtime-deps.d.ts +43 -0
- package/dist/runtime-deps.d.ts.map +1 -0
- package/dist/runtime-deps.js +2 -0
- package/dist/runtime-deps.js.map +1 -0
- package/dist/runtime.d.ts +69 -47
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +188 -131
- package/dist/runtime.js.map +1 -1
- package/dist/turn-manager.d.ts +14 -19
- package/dist/turn-manager.d.ts.map +1 -1
- package/dist/turn-manager.js +16 -104
- package/dist/turn-manager.js.map +1 -1
- package/package.json +3 -3
- package/dist/transcript/budget.d.ts +0 -8
- package/dist/transcript/budget.d.ts.map +0 -1
- package/dist/transcript/budget.js +0 -9
- package/dist/transcript/budget.js.map +0 -1
- package/dist/transcript/cursor.d.ts.map +0 -1
- package/dist/transcript/cursor.js.map +0 -1
- package/dist/transcript/error.d.ts +0 -9
- package/dist/transcript/error.d.ts.map +0 -1
- package/dist/transcript/error.js +0 -9
- package/dist/transcript/error.js.map +0 -1
- package/dist/transcript/opened-file.d.ts +0 -10
- package/dist/transcript/opened-file.d.ts.map +0 -1
- package/dist/transcript/opened-file.js.map +0 -1
- package/dist/transcript/path.d.ts +0 -28
- package/dist/transcript/path.d.ts.map +0 -1
- package/dist/transcript/path.js.map +0 -1
- package/dist/transcript/projection.d.ts +0 -6
- package/dist/transcript/projection.d.ts.map +0 -1
- package/dist/transcript/projection.js +0 -170
- package/dist/transcript/projection.js.map +0 -1
- package/dist/transcript/reader.d.ts +0 -7
- package/dist/transcript/reader.d.ts.map +0 -1
- package/dist/transcript/reader.js +0 -421
- package/dist/transcript/reader.js.map +0 -1
package/dist/runtime.js
CHANGED
|
@@ -3,25 +3,31 @@ import { CodexProcess, } from './supervisor.js';
|
|
|
3
3
|
import { CodexWsClient } from './rpc.js';
|
|
4
4
|
import { performInitializeHandshake } from './handshake.js';
|
|
5
5
|
import { TurnManager, } from './turn-manager.js';
|
|
6
|
-
import { renderChannelInput } from '@excitedjs/dreamux-utils';
|
|
7
6
|
import { createFailFastApprovalHandler } from './approval.js';
|
|
8
|
-
import {
|
|
9
|
-
import { CODEX_AGENT_RUNTIME_CAPABILITIES } from './provider.js';
|
|
7
|
+
import { RuntimeStateFence } from '@excitedjs/dreamux-utils';
|
|
10
8
|
import { codexProcessEnv, renderCodexSystemPromptAppend, } from './runtime-support.js';
|
|
11
9
|
import { applyCodexSkillExtraRoots } from './skill-roots.js';
|
|
12
|
-
import { resolveCodexTranscriptRoots, validateCodexThreadPath, } from './transcript/path.js';
|
|
13
10
|
const DEFAULT_RESTART_BACKOFF_BASE_MS = 1000;
|
|
14
11
|
const DEFAULT_RESTART_BACKOFF_MAX_MS = 30_000;
|
|
15
12
|
export class CodexRuntime {
|
|
16
13
|
identity;
|
|
17
14
|
deps;
|
|
18
|
-
providerRef = BUILTIN_CODEX_PROVIDER_REF;
|
|
19
15
|
process = null;
|
|
20
16
|
client = null;
|
|
21
17
|
turnManager = null;
|
|
22
18
|
threadId = null;
|
|
23
|
-
transcriptLocator = null;
|
|
24
19
|
threadResumed = false;
|
|
20
|
+
startOutcome = null;
|
|
21
|
+
/**
|
|
22
|
+
* The provider-local fatal path for authoritative state writes. Any failure
|
|
23
|
+
* to persist — a revoked lease or a plain write failure — fences input, stops
|
|
24
|
+
* the restart loop, and tears the app-server child down; the runtime never
|
|
25
|
+
* keeps running against a state record it could not update.
|
|
26
|
+
*/
|
|
27
|
+
fence = new RuntimeStateFence({
|
|
28
|
+
terminate: () => this.terminateForFence(),
|
|
29
|
+
log: (level, message, error) => this.log(level, message, error),
|
|
30
|
+
});
|
|
25
31
|
status = 'declared';
|
|
26
32
|
log;
|
|
27
33
|
stopping = false;
|
|
@@ -42,43 +48,23 @@ export class CodexRuntime {
|
|
|
42
48
|
logger !== undefined
|
|
43
49
|
? (lvl, msg, err) => logger[lvl](err !== undefined ? { err } : {}, msg)
|
|
44
50
|
: (lvl, msg, err) => {
|
|
45
|
-
const prefix = `[dispatcher ${identity.
|
|
51
|
+
const prefix = `[dispatcher ${identity.runtimeId}] ${lvl}`;
|
|
46
52
|
if (err !== undefined)
|
|
47
53
|
console.error(prefix, msg, err);
|
|
48
54
|
else
|
|
49
55
|
console.error(prefix, msg);
|
|
50
56
|
};
|
|
51
|
-
this.threadId = identity.
|
|
52
|
-
this.transcriptLocator =
|
|
53
|
-
identity.checkpoint?.transcript_locator ?? null;
|
|
57
|
+
this.threadId = identity.session?.id ?? null;
|
|
54
58
|
this.state = deps.state;
|
|
55
59
|
this.paths = deps.paths;
|
|
56
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* The host-supplied runtime id, used for this package's own paths and log
|
|
63
|
+
* fields. Private: the live handle Core holds is `start`/`submit`/`stop`, and
|
|
64
|
+
* a runtime answers no questions about itself.
|
|
65
|
+
*/
|
|
57
66
|
get dispatcherId() {
|
|
58
|
-
return this.identity.
|
|
59
|
-
}
|
|
60
|
-
getStatus() {
|
|
61
|
-
return this.status;
|
|
62
|
-
}
|
|
63
|
-
getCapabilities() {
|
|
64
|
-
return CODEX_AGENT_RUNTIME_CAPABILITIES;
|
|
65
|
-
}
|
|
66
|
-
getCheckpoint() {
|
|
67
|
-
if (this.threadId === null)
|
|
68
|
-
return null;
|
|
69
|
-
return {
|
|
70
|
-
id: this.threadId,
|
|
71
|
-
transcript_locator: this.transcriptLocator,
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
wasCheckpointResumed() {
|
|
75
|
-
return this.threadResumed;
|
|
76
|
-
}
|
|
77
|
-
async getContext() {
|
|
78
|
-
return null;
|
|
79
|
-
}
|
|
80
|
-
async resume() {
|
|
81
|
-
await this.start();
|
|
67
|
+
return this.identity.runtimeId;
|
|
82
68
|
}
|
|
83
69
|
start() {
|
|
84
70
|
if (this.startupTask !== null)
|
|
@@ -86,8 +72,9 @@ export class CodexRuntime {
|
|
|
86
72
|
if (this.stopping || this.stopTask !== null || this.status === 'stopped') {
|
|
87
73
|
return Promise.reject(new Error('codex runtime is stopped'));
|
|
88
74
|
}
|
|
89
|
-
if (this.status === 'ready')
|
|
90
|
-
return Promise.resolve();
|
|
75
|
+
if (this.status === 'ready' && this.startOutcome !== null) {
|
|
76
|
+
return Promise.resolve(this.startOutcome);
|
|
77
|
+
}
|
|
91
78
|
this.restarting = false;
|
|
92
79
|
this.generation += 1;
|
|
93
80
|
this.clearRestartTimer();
|
|
@@ -102,13 +89,16 @@ export class CodexRuntime {
|
|
|
102
89
|
}
|
|
103
90
|
async startRuntime(generation) {
|
|
104
91
|
this.setStatus('starting');
|
|
105
|
-
await this.
|
|
106
|
-
last_started_at: Date.now(),
|
|
107
|
-
});
|
|
92
|
+
await this.publish({ kind: 'status', status: 'starting' });
|
|
108
93
|
try {
|
|
109
|
-
await this.startCodexRuntime(generation);
|
|
94
|
+
await this.startCodexRuntime(generation, { allowFreshFallback: false });
|
|
110
95
|
this.assertGeneration(generation);
|
|
111
96
|
await this.markReady(generation);
|
|
97
|
+
const outcome = Object.freeze({
|
|
98
|
+
continuity: this.threadResumed ? 'resumed' : 'fresh',
|
|
99
|
+
});
|
|
100
|
+
this.startOutcome = outcome;
|
|
101
|
+
return outcome;
|
|
112
102
|
}
|
|
113
103
|
catch (err) {
|
|
114
104
|
const msg = err instanceof Error ? err.message : String(err);
|
|
@@ -116,14 +106,14 @@ export class CodexRuntime {
|
|
|
116
106
|
const failures = [err];
|
|
117
107
|
if (!this.stopping && generation === this.generation) {
|
|
118
108
|
this.setStatus('degraded');
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
}
|
|
109
|
+
// Awaited for ordering, but not folded into `failures`: the fence has
|
|
110
|
+
// already made a failed write terminal, and start must report the
|
|
111
|
+
// original start failure.
|
|
112
|
+
await this.settleState({
|
|
113
|
+
kind: 'status',
|
|
114
|
+
status: 'degraded',
|
|
115
|
+
lastError: msg,
|
|
116
|
+
});
|
|
127
117
|
}
|
|
128
118
|
try {
|
|
129
119
|
await this.cleanupOnFailure();
|
|
@@ -138,7 +128,7 @@ export class CodexRuntime {
|
|
|
138
128
|
throw err;
|
|
139
129
|
}
|
|
140
130
|
}
|
|
141
|
-
async startCodexRuntime(generation) {
|
|
131
|
+
async startCodexRuntime(generation, options) {
|
|
142
132
|
this.assertGeneration(generation);
|
|
143
133
|
if (this.process !== null) {
|
|
144
134
|
throw new Error('codex runtime retains an unterminated process from a prior attempt');
|
|
@@ -194,12 +184,13 @@ export class CodexRuntime {
|
|
|
194
184
|
this.log('info', `codex initialized: ${initResponse.userAgent} (home=${initResponse.codexHome}, ${initResponse.platformOs})`);
|
|
195
185
|
await this.applySkillExtraRoots();
|
|
196
186
|
this.assertGeneration(generation);
|
|
197
|
-
await this.resolveThread(generation);
|
|
187
|
+
await this.resolveThread(generation, options);
|
|
198
188
|
this.assertGeneration(generation);
|
|
199
189
|
this.turnManager = new TurnManager({
|
|
200
190
|
dispatcherId: this.dispatcherId,
|
|
201
191
|
getThreadId: () => this.threadId,
|
|
202
192
|
client: this.client,
|
|
193
|
+
codec: this.deps.codec,
|
|
203
194
|
log: this.log,
|
|
204
195
|
activitySink: this.deps.activitySink,
|
|
205
196
|
});
|
|
@@ -213,12 +204,21 @@ export class CodexRuntime {
|
|
|
213
204
|
log: this.log,
|
|
214
205
|
});
|
|
215
206
|
}
|
|
216
|
-
|
|
207
|
+
/**
|
|
208
|
+
* Establish the native thread for this generation.
|
|
209
|
+
*
|
|
210
|
+
* Recovery is continuous by contract: when a prior session exists, a failed
|
|
211
|
+
* `thread/resume` rejects rather than silently becoming a fresh thread. Only
|
|
212
|
+
* a mid-life restart — where start has already resolved and the caller can no
|
|
213
|
+
* longer be told — may fall back to a fresh thread, and it must publish the
|
|
214
|
+
* loss before publishing the replacement session.
|
|
215
|
+
*/
|
|
216
|
+
async resolveThread(generation, options) {
|
|
217
217
|
if (this.client === null)
|
|
218
218
|
throw new Error('client not initialized');
|
|
219
219
|
this.threadResumed = false;
|
|
220
220
|
const threadInstructions = this.threadInstructionParams();
|
|
221
|
-
const existing = this.threadId ?? this.identity.
|
|
221
|
+
const existing = this.threadId ?? this.identity.session?.id ?? null;
|
|
222
222
|
if (existing === null) {
|
|
223
223
|
const params = {
|
|
224
224
|
...threadInstructions,
|
|
@@ -226,14 +226,12 @@ export class CodexRuntime {
|
|
|
226
226
|
const res = await this.client.request('thread/start', params);
|
|
227
227
|
this.assertGeneration(generation);
|
|
228
228
|
const candidateThreadId = res.thread.id;
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
id: candidateThreadId,
|
|
232
|
-
transcript_locator: transcript.path,
|
|
229
|
+
await this.publish({
|
|
230
|
+
kind: 'session',
|
|
231
|
+
session: { id: candidateThreadId },
|
|
233
232
|
});
|
|
234
233
|
this.assertGeneration(generation);
|
|
235
234
|
this.threadId = candidateThreadId;
|
|
236
|
-
this.transcriptLocator = transcript.path;
|
|
237
235
|
this.log('info', `started fresh thread ${this.threadId}`);
|
|
238
236
|
return;
|
|
239
237
|
}
|
|
@@ -248,54 +246,36 @@ export class CodexRuntime {
|
|
|
248
246
|
catch (err) {
|
|
249
247
|
this.assertGeneration(generation);
|
|
250
248
|
const msg = err instanceof Error ? err.message : String(err);
|
|
249
|
+
if (!options.allowFreshFallback) {
|
|
250
|
+
throw new Error(`codex could not restore session ${existing}: ${msg}`, { cause: err });
|
|
251
|
+
}
|
|
251
252
|
this.log('warn', `thread/resume failed for ${existing}: ${msg}; starting fresh thread`);
|
|
252
253
|
const res = await this.client.request('thread/start', { ...threadInstructions });
|
|
253
254
|
this.assertGeneration(generation);
|
|
254
255
|
const replacementThreadId = res.thread.id;
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
transcript_locator: this.transcriptLocator,
|
|
264
|
-
}, replacement, `thread/resume failed: ${msg}`);
|
|
265
|
-
}
|
|
266
|
-
else {
|
|
267
|
-
await this.state.setCheckpoint(replacement);
|
|
268
|
-
await this.state.setStatus('degraded', {
|
|
269
|
-
last_error: `thread/resume failed: ${msg}`,
|
|
270
|
-
});
|
|
271
|
-
}
|
|
256
|
+
await this.publish({
|
|
257
|
+
kind: 'session_lost',
|
|
258
|
+
reason: `thread/resume failed: ${msg}`,
|
|
259
|
+
});
|
|
260
|
+
await this.publish({
|
|
261
|
+
kind: 'session',
|
|
262
|
+
session: { id: replacementThreadId },
|
|
263
|
+
});
|
|
272
264
|
this.assertGeneration(generation);
|
|
273
265
|
this.threadId = replacementThreadId;
|
|
274
|
-
this.transcriptLocator = transcript.path;
|
|
275
266
|
return;
|
|
276
267
|
}
|
|
277
268
|
this.assertGeneration(generation);
|
|
278
269
|
const resumedThreadId = resumed.thread.id;
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
id: resumedThreadId,
|
|
282
|
-
transcript_locator: transcript.path,
|
|
270
|
+
await this.publish({
|
|
271
|
+
kind: 'session',
|
|
272
|
+
session: { id: resumedThreadId },
|
|
283
273
|
});
|
|
284
274
|
this.assertGeneration(generation);
|
|
285
275
|
this.threadId = resumedThreadId;
|
|
286
|
-
this.transcriptLocator = transcript.path;
|
|
287
276
|
this.threadResumed = true;
|
|
288
277
|
this.log('info', `resumed thread ${this.threadId}`);
|
|
289
278
|
}
|
|
290
|
-
validateThreadPath(path, threadId) {
|
|
291
|
-
if (path === null || path === undefined) {
|
|
292
|
-
throw new Error('Codex thread response omitted the native transcript path');
|
|
293
|
-
}
|
|
294
|
-
if (this.deps.validateTranscriptPath !== undefined) {
|
|
295
|
-
return this.deps.validateTranscriptPath(path, threadId).then((validatedPath) => ({ path: validatedPath }));
|
|
296
|
-
}
|
|
297
|
-
return resolveCodexTranscriptRoots(codexProcessEnv(this.deps.injectEnv, this.deps.extraEnv)).then((roots) => validateCodexThreadPath(path, threadId, roots));
|
|
298
|
-
}
|
|
299
279
|
threadInstructionParams() {
|
|
300
280
|
const params = {};
|
|
301
281
|
if (this.deps.systemPromptReplace !== undefined) {
|
|
@@ -309,38 +289,37 @@ export class CodexRuntime {
|
|
|
309
289
|
}
|
|
310
290
|
return params;
|
|
311
291
|
}
|
|
312
|
-
async
|
|
313
|
-
if (this.stopping || this.status === 'stopped') {
|
|
314
|
-
return { status: 'stopped' };
|
|
315
|
-
}
|
|
316
|
-
if (this.turnManager === null) {
|
|
317
|
-
return { status: 'failed', error: new Error('turn manager not initialized') };
|
|
318
|
-
}
|
|
319
|
-
return this.turnManager.enqueue({ ...input, text: renderChannelInput(input) });
|
|
320
|
-
}
|
|
321
|
-
waitIdle() {
|
|
322
|
-
return this.turnManager?.waitIdle() ?? Promise.resolve();
|
|
323
|
-
}
|
|
324
|
-
async completionInput(input) {
|
|
292
|
+
async submit(input) {
|
|
325
293
|
if (this.stopping || this.status === 'stopped') {
|
|
326
294
|
return { status: 'stopped' };
|
|
327
295
|
}
|
|
328
|
-
|
|
296
|
+
const turnManager = this.turnManager;
|
|
297
|
+
if (turnManager === null) {
|
|
329
298
|
return { status: 'failed', error: new Error('turn manager not initialized') };
|
|
330
299
|
}
|
|
331
|
-
|
|
300
|
+
// The text is already the complete model-facing message: this runtime
|
|
301
|
+
// renders no envelope and never branches on where the turn came from.
|
|
302
|
+
return turnManager.submitInput(input);
|
|
332
303
|
}
|
|
333
304
|
stop() {
|
|
334
|
-
if (this.status === 'stopped')
|
|
335
|
-
return Promise.resolve();
|
|
336
305
|
if (this.stopTask !== null)
|
|
337
306
|
return this.stopTask;
|
|
307
|
+
// A fenced runtime is already being torn down by the fence. Join that
|
|
308
|
+
// teardown instead of publishing a terminal state through the sink that
|
|
309
|
+
// just failed, and never report a stop the fence could not prove.
|
|
310
|
+
if (this.fence.isFenced)
|
|
311
|
+
return this.track(this.stopAfterFatalTeardown());
|
|
312
|
+
if (this.status === 'stopped')
|
|
313
|
+
return Promise.resolve();
|
|
338
314
|
if (!this.stopping) {
|
|
339
315
|
this.stopping = true;
|
|
340
316
|
this.generation += 1;
|
|
341
317
|
}
|
|
342
318
|
this.clearRestartTimer();
|
|
343
|
-
|
|
319
|
+
return this.track(this.stopRuntime());
|
|
320
|
+
}
|
|
321
|
+
/** Single-flight the stop task, releasing the slot so a failure can retry. */
|
|
322
|
+
track(task) {
|
|
344
323
|
this.stopTask = task;
|
|
345
324
|
void task.catch(() => {
|
|
346
325
|
if (this.stopTask === task)
|
|
@@ -348,6 +327,28 @@ export class CodexRuntime {
|
|
|
348
327
|
});
|
|
349
328
|
return task;
|
|
350
329
|
}
|
|
330
|
+
/**
|
|
331
|
+
* Converge a stop that arrived after the fence already started the fatal
|
|
332
|
+
* teardown. A teardown that succeeded left the runtime stopped; one that
|
|
333
|
+
* failed retained the client, turn manager, and child process, so this
|
|
334
|
+
* retries against that retained authority and rejects if the retry fails too.
|
|
335
|
+
*/
|
|
336
|
+
async stopAfterFatalTeardown() {
|
|
337
|
+
let fatal = null;
|
|
338
|
+
try {
|
|
339
|
+
await this.fence.terminated();
|
|
340
|
+
}
|
|
341
|
+
catch (error) {
|
|
342
|
+
fatal = error;
|
|
343
|
+
}
|
|
344
|
+
if (fatal === null) {
|
|
345
|
+
this.status = 'stopped';
|
|
346
|
+
return;
|
|
347
|
+
}
|
|
348
|
+
this.log('warn', 'retrying codex runtime teardown after a fatal state write left it unproven', fatal);
|
|
349
|
+
await this.teardownCodexRuntime();
|
|
350
|
+
this.status = 'stopped';
|
|
351
|
+
}
|
|
351
352
|
async stopRuntime() {
|
|
352
353
|
this.setStatus('stopping');
|
|
353
354
|
// Teardown must be initiated before any status/start/restart join. Closing
|
|
@@ -355,13 +356,17 @@ export class CodexRuntime {
|
|
|
355
356
|
// fence prevents pre-authority startup work from publishing later.
|
|
356
357
|
const teardown = this.teardownCodexRuntime();
|
|
357
358
|
void teardown.catch(() => undefined);
|
|
358
|
-
|
|
359
|
-
|
|
359
|
+
// The terminal writes are awaited so stop cannot resolve before they land
|
|
360
|
+
// — Core revokes this generation's lease right after stop settles — but
|
|
361
|
+
// they do not decide whether stop converged. Only the native teardown does;
|
|
362
|
+
// a failed write is already terminal through the fence.
|
|
363
|
+
const stoppingState = Promise.resolve().then(() => this.settleState({ kind: 'status', status: 'stopping' }));
|
|
364
|
+
const [, teardownResult] = await Promise.allSettled([
|
|
360
365
|
stoppingState,
|
|
361
366
|
teardown,
|
|
362
367
|
]);
|
|
363
|
-
throwSettledFailures([
|
|
364
|
-
await this.
|
|
368
|
+
throwSettledFailures([teardownResult], 'codex runtime stop did not converge');
|
|
369
|
+
await this.settleState({ kind: 'status', status: 'stopped' });
|
|
365
370
|
this.setStatus('stopped');
|
|
366
371
|
}
|
|
367
372
|
async cleanupOnFailure() {
|
|
@@ -421,6 +426,8 @@ export class CodexRuntime {
|
|
|
421
426
|
this.scheduleRestart(`codex app-server websocket closed: ${reason.message}`);
|
|
422
427
|
}
|
|
423
428
|
scheduleRestart(reason) {
|
|
429
|
+
// A fenced runtime is terminal: `terminateForFence` sets the stop fence
|
|
430
|
+
// synchronously, so this guard also stops the restart loop.
|
|
424
431
|
if (this.stopping || this.restartTimer !== null || this.restarting)
|
|
425
432
|
return;
|
|
426
433
|
const attempt = this.restartAttempts + 1;
|
|
@@ -428,9 +435,11 @@ export class CodexRuntime {
|
|
|
428
435
|
const delay = this.restartDelayMs(attempt);
|
|
429
436
|
this.log('warn', `${reason}; restarting in ${delay}ms`);
|
|
430
437
|
this.setStatus('degraded');
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
438
|
+
this.fence.publishDetached(() => this.state.publish({
|
|
439
|
+
kind: 'status',
|
|
440
|
+
status: 'degraded',
|
|
441
|
+
lastError: reason,
|
|
442
|
+
}));
|
|
434
443
|
this.restartTimer = setTimeout(() => {
|
|
435
444
|
this.restartTimer = null;
|
|
436
445
|
const task = this.restartCodexRuntime(reason, this.generation);
|
|
@@ -448,12 +457,10 @@ export class CodexRuntime {
|
|
|
448
457
|
let retryReason = null;
|
|
449
458
|
try {
|
|
450
459
|
this.setStatus('starting');
|
|
451
|
-
await this.
|
|
452
|
-
last_started_at: Date.now(),
|
|
453
|
-
});
|
|
460
|
+
await this.publish({ kind: 'status', status: 'starting' });
|
|
454
461
|
await this.teardownCodexRuntime();
|
|
455
462
|
this.assertGeneration(generation);
|
|
456
|
-
await this.startCodexRuntime(generation);
|
|
463
|
+
await this.startCodexRuntime(generation, { allowFreshFallback: true });
|
|
457
464
|
this.assertGeneration(generation);
|
|
458
465
|
this.restartAttempts = 0;
|
|
459
466
|
await this.markReady(generation);
|
|
@@ -472,14 +479,13 @@ export class CodexRuntime {
|
|
|
472
479
|
const msg = failures.map((failure) => failure instanceof Error ? failure.message : String(failure)).join('; ');
|
|
473
480
|
this.log('error', `restart failed: ${msg}`, err);
|
|
474
481
|
this.setStatus('degraded');
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
}
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
}
|
|
482
|
+
await this.settleState({
|
|
483
|
+
kind: 'status',
|
|
484
|
+
status: 'degraded',
|
|
485
|
+
lastError: msg,
|
|
486
|
+
});
|
|
487
|
+
// A fenced runtime never reaches the retry: `scheduleRestart` refuses
|
|
488
|
+
// once the fence set the stop flag.
|
|
483
489
|
retryReason = `codex app-server restart failed: ${msg}`;
|
|
484
490
|
}
|
|
485
491
|
finally {
|
|
@@ -502,17 +508,68 @@ export class CodexRuntime {
|
|
|
502
508
|
async markReady(generation) {
|
|
503
509
|
this.assertGeneration(generation);
|
|
504
510
|
this.setStatus('ready');
|
|
505
|
-
await this.
|
|
506
|
-
last_ready_at: Date.now(),
|
|
507
|
-
last_error: null,
|
|
508
|
-
});
|
|
511
|
+
await this.publish({ kind: 'status', status: 'ready' });
|
|
509
512
|
this.assertGeneration(generation);
|
|
510
513
|
}
|
|
514
|
+
/**
|
|
515
|
+
* Push one authoritative fact into the leased sink. Core resolves `publish`
|
|
516
|
+
* only after the durable write, so awaiting it is what makes the session and
|
|
517
|
+
* ready state durable before `start` resolves. Every failure is terminal and
|
|
518
|
+
* runs through the fence — a revoked lease means a newer generation already
|
|
519
|
+
* owns the entity, and any other failure means Core's record of this runtime
|
|
520
|
+
* can no longer be repaired from here.
|
|
521
|
+
*/
|
|
522
|
+
publish(update) {
|
|
523
|
+
return this.fence.publish(() => this.state.publish(update));
|
|
524
|
+
}
|
|
525
|
+
/**
|
|
526
|
+
* Persist a fact the caller's own outcome does not depend on, but whose
|
|
527
|
+
* ordering does: `stop` must not resolve before its terminal write lands,
|
|
528
|
+
* because Core keeps this generation's lease valid exactly until stop settles
|
|
529
|
+
* and a detached write would race the revocation that follows.
|
|
530
|
+
*
|
|
531
|
+
* The error is not rethrown. The fence has already made it terminal, and
|
|
532
|
+
* these callers report something else — whether the app-server child
|
|
533
|
+
* terminated, or the original start/restart failure — which a state-write
|
|
534
|
+
* failure does not change.
|
|
535
|
+
*/
|
|
536
|
+
async settleState(update) {
|
|
537
|
+
try {
|
|
538
|
+
await this.publish(update);
|
|
539
|
+
}
|
|
540
|
+
catch {
|
|
541
|
+
// Already logged and acted on by the fence.
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
/**
|
|
545
|
+
* The fence's native teardown. Deliberately not `stop()`: `stop()` publishes
|
|
546
|
+
* `stopping`/`stopped` through the very sink that just proved unusable and
|
|
547
|
+
* would only produce a second failure. This closes the client, turn manager,
|
|
548
|
+
* and child process, and nothing else.
|
|
549
|
+
*
|
|
550
|
+
* It runs synchronously up to its first await, so the stop fence and bumped
|
|
551
|
+
* generation refuse new input and cancel any pending restart immediately.
|
|
552
|
+
*/
|
|
553
|
+
async terminateForFence() {
|
|
554
|
+
this.stopping = true;
|
|
555
|
+
this.generation += 1;
|
|
556
|
+
this.clearRestartTimer();
|
|
557
|
+
await this.teardownCodexRuntime();
|
|
558
|
+
// Reached only when teardown converged. A failed teardown propagates to
|
|
559
|
+
// `RuntimeStateFence.terminated()` and leaves the status alone, so a later
|
|
560
|
+
// `stop()` cannot read 'stopped' off a child that was never proved dead.
|
|
561
|
+
// Assigned directly because `setStatus` refuses once the fence is closed.
|
|
562
|
+
this.status = 'stopped';
|
|
563
|
+
}
|
|
511
564
|
setStatus(s) {
|
|
565
|
+
// A fenced runtime is terminal: its status is owned by the teardown, and a
|
|
566
|
+
// late background transition must not reopen it.
|
|
567
|
+
if (this.fence.isFenced)
|
|
568
|
+
return;
|
|
512
569
|
this.status = s;
|
|
513
570
|
}
|
|
514
571
|
assertGeneration(generation) {
|
|
515
|
-
if (this.stopping || generation !== this.generation) {
|
|
572
|
+
if (this.stopping || this.fence.isFenced || generation !== this.generation) {
|
|
516
573
|
throw new Error('codex runtime is stopping');
|
|
517
574
|
}
|
|
518
575
|
}
|
package/dist/runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|