@excitedjs/agent-runtime-codex 0.2.0-alpha.gdd32dedd5789 → 0.2.0-beta.73
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/runtime.d.ts +0 -162
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +7 -192
- package/dist/runtime.js.map +1 -1
- package/dist/skill-roots.d.ts +14 -0
- package/dist/skill-roots.d.ts.map +1 -0
- package/dist/skill-roots.js +38 -0
- package/dist/skill-roots.js.map +1 -0
- package/package.json +3 -3
package/dist/runtime.d.ts
CHANGED
|
@@ -1,90 +1,27 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CodexRuntime — one running Codex-backed AgentRuntime instance.
|
|
3
|
-
*
|
|
4
|
-
* Owns:
|
|
5
|
-
* - CodexProcess (child app-server)
|
|
6
|
-
* - CodexWsClient (WS connection)
|
|
7
|
-
* - thread_id (lazily created via thread/start or resumed)
|
|
8
|
-
* - TurnManager (FIFO worker for this dispatcher)
|
|
9
|
-
*
|
|
10
|
-
* Lifecycle: declared → starting → ready → (degraded) → stopping → stopped.
|
|
11
|
-
*
|
|
12
|
-
* Current MVP:
|
|
13
|
-
* - accepted inbound work is process-local and is dropped on restart;
|
|
14
|
-
* - thread/resume failure does not degrade the whole dispatcher; we
|
|
15
|
-
* start a fresh thread, record the lost one in last_lost_thread_id,
|
|
16
|
-
* and post a visible warning to the next source chat.
|
|
17
|
-
*/
|
|
18
1
|
import { CodexProcess, type CodexProcessOptions } from './supervisor.js';
|
|
19
2
|
import { CodexWsClient } from './rpc.js';
|
|
20
3
|
import type { AgentRuntime, AgentRuntimeCapabilities, AgentRuntimeIdentity, AgentRuntimeLastResult, AgentRuntimePathContext, AgentRuntimeResumeInput, AgentRuntimeSkillSource, AgentRuntimeStateCallbacks, AgentRuntimeStatus, AgentRuntimeSystemInput, AgentRuntimeTurnResult, CompletionEnvelope, DreamuxLogger, InboundDeliveryHooks, InboundTurnInput, TeamMateCompletionDeliveryResult, TurnSettledSignal } from '@excitedjs/dreamux-types';
|
|
21
4
|
export interface CodexRuntimeDeps {
|
|
22
|
-
/** Working directory the codex app-server runs in (required launch param). */
|
|
23
5
|
cwd: string;
|
|
24
|
-
/**
|
|
25
|
-
* Launcher-supplied system-prompt content used as codex `baseInstructions`
|
|
26
|
-
* (codex applies it as a REPLACE per its `systemPrompt` capability). Omitted
|
|
27
|
-
* for launches that supply none (e.g. teammates).
|
|
28
|
-
*/
|
|
29
6
|
systemPromptContent?: string;
|
|
30
|
-
/** Neutral state sink the host adapts from its dispatcher store. */
|
|
31
7
|
state: AgentRuntimeStateCallbacks;
|
|
32
|
-
/** Host-supplied per-dispatcher path context (logs/spill live in the host tree). */
|
|
33
8
|
paths: AgentRuntimePathContext;
|
|
34
|
-
/**
|
|
35
|
-
* Allocate a fresh volatile rendezvous socket path for one app-server start.
|
|
36
|
-
* Host-supplied: the socket root is a Dreamux runtime contract this package
|
|
37
|
-
* must not reconstruct.
|
|
38
|
-
*/
|
|
39
9
|
allocateSocketPath: (id: string) => string;
|
|
40
|
-
/**
|
|
41
|
-
* Role-gated bundled skill sources core selected for this runtime (issue #209
|
|
42
|
-
* slice 6). Applied via the app-server `skills/extraRoots/set` RPC after
|
|
43
|
-
* initialize and before thread start/resume, and reapplied after every
|
|
44
|
-
* app-server restart. Empty/omitted means no roots are set (the default for
|
|
45
|
-
* teammates and any role core does not gate skills for).
|
|
46
|
-
*/
|
|
47
10
|
skillSources?: readonly AgentRuntimeSkillSource[];
|
|
48
|
-
/**
|
|
49
|
-
* The host's neutral env-injection entries from the create context, merged
|
|
50
|
-
* into the child env before this provider's own `extraEnv`. Empty/omitted
|
|
51
|
-
* means inject nothing (the common case).
|
|
52
|
-
*/
|
|
53
11
|
injectEnv?: Record<string, string>;
|
|
54
|
-
/** Optional bin path override for tests. */
|
|
55
12
|
codexBinPath?: string;
|
|
56
|
-
/** Override process construction for tests. */
|
|
57
13
|
codexProcessFactory?: (opts: CodexProcessOptions) => CodexProcess;
|
|
58
|
-
/** Override WS client factory for tests. */
|
|
59
14
|
codexClientFactory?: (socketPath: string) => CodexWsClient;
|
|
60
|
-
/**
|
|
61
|
-
* Optional host-owned Codex home/auth pre-start check, invoked before the
|
|
62
|
-
* child spawns with the runtime id and cwd. The host owns its path/socket
|
|
63
|
-
* inputs and builds its own validation context from these.
|
|
64
|
-
*/
|
|
65
15
|
codexHomeDoctor?: (info: {
|
|
66
16
|
runtimeId: string;
|
|
67
17
|
cwd: string;
|
|
68
18
|
}) => void | Promise<void>;
|
|
69
|
-
/** Codex extraArgs (parsed from dispatcher.codex_args_json). */
|
|
70
19
|
resolveExtraArgs?: () => string[];
|
|
71
|
-
/**
|
|
72
|
-
* Codex initialize handshake timeout (ms). From this dispatcher's
|
|
73
|
-
* `dispatchers[].runtime.config.initialize_timeout_ms` (default 10000).
|
|
74
|
-
*/
|
|
75
20
|
handshakeTimeoutMs?: number;
|
|
76
|
-
/** Per-dispatcher environment overrides from config. */
|
|
77
21
|
extraEnv?: Record<string, string>;
|
|
78
|
-
/** Codex child/WS restart backoff base (tests may override). */
|
|
79
22
|
restartBackoffBaseMs?: number;
|
|
80
|
-
/** Codex child/WS restart backoff cap (tests may override). */
|
|
81
23
|
restartBackoffMaxMs?: number;
|
|
82
|
-
/**
|
|
83
|
-
* Fired each time a delivered turn reaches a terminal state. Supplied by the
|
|
84
|
-
* launcher (teammate service) and omitted for dispatcher launches.
|
|
85
|
-
*/
|
|
86
24
|
onTurnSettled?: (settled: TurnSettledSignal) => void;
|
|
87
|
-
/** Neutral logger the host passes in; a console fallback is used when absent. */
|
|
88
25
|
logger?: DreamuxLogger;
|
|
89
26
|
}
|
|
90
27
|
export declare class CodexRuntime implements AgentRuntime {
|
|
@@ -95,35 +32,12 @@ export declare class CodexRuntime implements AgentRuntime {
|
|
|
95
32
|
private client;
|
|
96
33
|
private turnManager;
|
|
97
34
|
private threadId;
|
|
98
|
-
/**
|
|
99
|
-
* Whether the most recent thread resolution resumed an existing Codex thread
|
|
100
|
-
* (true) rather than starting a fresh one or recovering from a failed resume.
|
|
101
|
-
* Consulted by the server right after the slot is ready to decide whether a
|
|
102
|
-
* `daemon restart` notice should be injected (issue #78).
|
|
103
|
-
*/
|
|
104
35
|
private threadResumed;
|
|
105
36
|
private status;
|
|
106
|
-
/** Monotonic per-attempt suffix for TeamMate delivery turn dedup ids (#110 PR8). */
|
|
107
37
|
private teammateDeliverySeq;
|
|
108
|
-
/**
|
|
109
|
-
* Completion deliveries currently being processed. Duplicate settled events can
|
|
110
|
-
* race into `completionInput`; coalescing by completion id keeps one logical
|
|
111
|
-
* completion from injecting or triggering more than once concurrently.
|
|
112
|
-
*/
|
|
113
38
|
private readonly inFlightCompletionDeliveries;
|
|
114
|
-
/**
|
|
115
|
-
* Completion ids whose trigger turn has already been accepted. A later replay
|
|
116
|
-
* of the same settled teammate turn is an idempotent success, not a new wake-up.
|
|
117
|
-
*/
|
|
118
39
|
private readonly acceptedCompletionIds;
|
|
119
40
|
private readonly acceptedCompletionOrder;
|
|
120
|
-
/**
|
|
121
|
-
* Completion ids whose item has already been injected into the thread. The
|
|
122
|
-
* Dispatcher Service retries `completionInput` on `failed`; if the inject
|
|
123
|
-
* succeeded but the trigger turn failed, the retry must NOT re-inject the same
|
|
124
|
-
* item (that would persist a duplicate completion to the rollout). Bounded so
|
|
125
|
-
* a long-lived dispatcher does not grow this set without limit.
|
|
126
|
-
*/
|
|
127
41
|
private readonly injectedCompletionIds;
|
|
128
42
|
private readonly injectedCompletionOrder;
|
|
129
43
|
private readonly log;
|
|
@@ -139,70 +53,19 @@ export declare class CodexRuntime implements AgentRuntime {
|
|
|
139
53
|
getStatus(): AgentRuntimeStatus;
|
|
140
54
|
getCapabilities(): AgentRuntimeCapabilities;
|
|
141
55
|
getThreadId(): string | null;
|
|
142
|
-
/** True when the live thread was resumed (not freshly started/recovered). */
|
|
143
56
|
wasThreadResumed(): boolean;
|
|
144
57
|
getLast(): Promise<AgentRuntimeLastResult | null>;
|
|
145
58
|
getContext(): Promise<null>;
|
|
146
59
|
resume(input?: AgentRuntimeResumeInput): Promise<void>;
|
|
147
60
|
private submitRestartNotice;
|
|
148
|
-
/**
|
|
149
|
-
* Bring the dispatcher up. Order:
|
|
150
|
-
* 1. spawn codex app-server child
|
|
151
|
-
* 2. open WS client
|
|
152
|
-
* 3. install fail-fast approval handler
|
|
153
|
-
* 4. thread/start (new) or thread/resume (existing)
|
|
154
|
-
* 5. install turn manager
|
|
155
|
-
* 6. status = ready
|
|
156
|
-
*/
|
|
157
61
|
start(): Promise<void>;
|
|
158
62
|
private startCodexRuntime;
|
|
159
|
-
/**
|
|
160
|
-
* Apply the role-gated bundled skill sources to the live app-server via
|
|
161
|
-
* `skills/extraRoots/set`. Codex treats each extra root as a directory whose
|
|
162
|
-
* immediate children are skill dirs, so a `skill-dir` source maps to the
|
|
163
|
-
* *parent* of its own directory; roots are deduped (the bundled Dreamux skills
|
|
164
|
-
* share one parent). Empty input skips the RPC entirely (a fresh per-runtime
|
|
165
|
-
* app-server starts with no extra roots, so nothing to clear).
|
|
166
|
-
*
|
|
167
|
-
* Error handling distinguishes two failure modes (issue #209 slice 6 repair):
|
|
168
|
-
* 1. The app-server does not implement `skills/extraRoots/set` at all — a
|
|
169
|
-
* capability/version skew against an older codex backend (it answers with
|
|
170
|
-
* an `unknown variant`/method-not-found error). This is NOT a real
|
|
171
|
-
* failure: fail open, warn, and continue skill-blind rather than bricking
|
|
172
|
-
* startup against every backend that predates the RPC.
|
|
173
|
-
* 2. The RPC exists but applying the given roots genuinely failed — fail
|
|
174
|
-
* loud, exactly as before, so real misconfiguration is not masked.
|
|
175
|
-
*/
|
|
176
63
|
private applySkillExtraRoots;
|
|
177
64
|
private resolveThread;
|
|
178
|
-
/**
|
|
179
|
-
* Submit any accepted inbound message arriving for this dispatcher. Called by
|
|
180
|
-
* the Feishu inbound layer.
|
|
181
|
-
*/
|
|
182
65
|
channelInput(input: InboundTurnInput, hooks?: InboundDeliveryHooks): Promise<AgentRuntimeTurnResult>;
|
|
183
|
-
/** Inject a system-originated notice (e.g. a restart notice). */
|
|
184
66
|
systemInput(notice: AgentRuntimeSystemInput): Promise<AgentRuntimeTurnResult>;
|
|
185
|
-
/**
|
|
186
|
-
* Codex TeamMate completion delivery — the native inbox-then-trigger idiom.
|
|
187
|
-
*
|
|
188
|
-
* Two steps, in order:
|
|
189
|
-
* 1. `thread/inject_items` appends the completion to the dispatcher thread's
|
|
190
|
-
* model-visible history as a developer-role message (no fake user turn).
|
|
191
|
-
* codex folds the item onto the active turn when one is running and never
|
|
192
|
-
* rejects on a busy thread, so a failure here is a genuine RPC error.
|
|
193
|
-
* 2. a minimal trigger turn through the public `channelInput` seam wakes the
|
|
194
|
-
* idle dispatcher so it reads the just-injected notification and acts.
|
|
195
|
-
*
|
|
196
|
-
* The trigger turn uses a fresh, non-routable source id per attempt. The turn
|
|
197
|
-
* manager commits its dedup id before `turn/start` and does not roll it back
|
|
198
|
-
* on failure, so a retry that reused one id would come back `duplicate` and be
|
|
199
|
-
* mis-counted as delivered when nothing was submitted. The Dispatcher Service
|
|
200
|
-
* only retries on `failed` (definitely not submitted), so a unique id per
|
|
201
|
-
* attempt re-submits the trigger safely.
|
|
202
|
-
*/
|
|
203
67
|
completionInput(completion: CompletionEnvelope): Promise<TeamMateCompletionDeliveryResult>;
|
|
204
68
|
private deliverCompletionInput;
|
|
205
|
-
/** Graceful stop: stop accepting work, reap codex child. */
|
|
206
69
|
stop(): Promise<void>;
|
|
207
70
|
private cleanupOnFailure;
|
|
208
71
|
private teardownCodexRuntime;
|
|
@@ -214,33 +77,8 @@ export declare class CodexRuntime implements AgentRuntime {
|
|
|
214
77
|
private clearRestartTimer;
|
|
215
78
|
private markReady;
|
|
216
79
|
private recordCollectedTurn;
|
|
217
|
-
/** Record a completion id as injected, evicting the oldest past a small cap. */
|
|
218
80
|
private rememberInjectedCompletion;
|
|
219
|
-
/** Record a completion id as fully accepted, evicting the oldest past a cap. */
|
|
220
81
|
private rememberAcceptedCompletion;
|
|
221
82
|
private setStatus;
|
|
222
83
|
}
|
|
223
|
-
/**
|
|
224
|
-
* Classify an RPC rejection as a capability/version gap — the app-server does
|
|
225
|
-
* not implement the requested method at all — rather than a genuine failure of
|
|
226
|
-
* an existing method.
|
|
227
|
-
*
|
|
228
|
-
* The rpc layer collapses codex's structured error to `Error(message)` (it
|
|
229
|
-
* drops the JSON-RPC error code), so the *message* is all we have. codex
|
|
230
|
-
* surfaces an unimplemented method as a serde enum-deserialization failure of
|
|
231
|
-
* the request's `method` field — `unknown variant \`<method>\`, expected one of
|
|
232
|
-
* …` — while a spec-compliant JSON-RPC peer answers method-not-found (-32601).
|
|
233
|
-
* We match those canonical phrasings only; the test stays deliberately narrow
|
|
234
|
-
* so a real error from an *existing* method (a bad root path, a permission
|
|
235
|
-
* failure) is NOT swallowed and still fails loud.
|
|
236
|
-
*
|
|
237
|
-
* The match is message-based by necessity: the rpc layer drops the structured
|
|
238
|
-
* JSON-RPC error code, so the message is all we have. The one residual
|
|
239
|
-
* false-positive is a server that *implements* the method but rejects a bad
|
|
240
|
-
* *param value* with an "unknown variant `<value>`" serde error. That is safe
|
|
241
|
-
* for our sole caller — `skills/extraRoots/set` takes a `string[]` of paths,
|
|
242
|
-
* which codex never enum-rejects — but a future caller passing an enum-typed
|
|
243
|
-
* param should not reuse this classifier blindly.
|
|
244
|
-
*/
|
|
245
|
-
export declare function isUnsupportedRpcMethodError(err: unknown): boolean;
|
|
246
84
|
//# sourceMappingURL=runtime.d.ts.map
|
package/dist/runtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime.js
CHANGED
|
@@ -1,21 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* CodexRuntime — one running Codex-backed AgentRuntime instance.
|
|
3
|
-
*
|
|
4
|
-
* Owns:
|
|
5
|
-
* - CodexProcess (child app-server)
|
|
6
|
-
* - CodexWsClient (WS connection)
|
|
7
|
-
* - thread_id (lazily created via thread/start or resumed)
|
|
8
|
-
* - TurnManager (FIFO worker for this dispatcher)
|
|
9
|
-
*
|
|
10
|
-
* Lifecycle: declared → starting → ready → (degraded) → stopping → stopped.
|
|
11
|
-
*
|
|
12
|
-
* Current MVP:
|
|
13
|
-
* - accepted inbound work is process-local and is dropped on restart;
|
|
14
|
-
* - thread/resume failure does not degrade the whole dispatcher; we
|
|
15
|
-
* start a fresh thread, record the lost one in last_lost_thread_id,
|
|
16
|
-
* and post a visible warning to the next source chat.
|
|
17
|
-
*/
|
|
18
|
-
import { dirname, join } from 'node:path';
|
|
1
|
+
import { join } from 'node:path';
|
|
19
2
|
import { CodexProcess, } from './supervisor.js';
|
|
20
3
|
import { CodexWsClient } from './rpc.js';
|
|
21
4
|
import { performInitializeHandshake } from './handshake.js';
|
|
@@ -26,14 +9,7 @@ import { createFailFastApprovalHandler } from './approval.js';
|
|
|
26
9
|
import { BUILTIN_CODEX_PROVIDER_REF } from './provider-ref.js';
|
|
27
10
|
import { CODEX_AGENT_RUNTIME_CAPABILITIES } from './provider.js';
|
|
28
11
|
import { buildCodexCompletionItem, CODEX_COMPLETION_TRIGGER_TEXT, codexProcessEnv, } from './runtime-support.js';
|
|
29
|
-
|
|
30
|
-
* The skill-source `layout` this runtime knows how to apply. `path` is one
|
|
31
|
-
* skill's own directory (containing `SKILL.md`); codex's `skills/extraRoots/set`
|
|
32
|
-
* takes the *parent* of such a dir as a skills root (a root whose immediate
|
|
33
|
-
* children are skill dirs — verified against codex 0.137's app-server schema).
|
|
34
|
-
* Sources with any other layout are ignored by the codex mapping.
|
|
35
|
-
*/
|
|
36
|
-
const CODEX_SKILL_DIR_LAYOUT = 'skill-dir';
|
|
12
|
+
import { applyCodexSkillExtraRoots } from './skill-roots.js';
|
|
37
13
|
const DEFAULT_RESTART_BACKOFF_BASE_MS = 1000;
|
|
38
14
|
const DEFAULT_RESTART_BACKOFF_MAX_MS = 30_000;
|
|
39
15
|
const COMPLETION_ID_CACHE_LIMIT = 256;
|
|
@@ -45,35 +21,12 @@ export class CodexRuntime {
|
|
|
45
21
|
client = null;
|
|
46
22
|
turnManager = null;
|
|
47
23
|
threadId = null;
|
|
48
|
-
/**
|
|
49
|
-
* Whether the most recent thread resolution resumed an existing Codex thread
|
|
50
|
-
* (true) rather than starting a fresh one or recovering from a failed resume.
|
|
51
|
-
* Consulted by the server right after the slot is ready to decide whether a
|
|
52
|
-
* `daemon restart` notice should be injected (issue #78).
|
|
53
|
-
*/
|
|
54
24
|
threadResumed = false;
|
|
55
25
|
status = 'declared';
|
|
56
|
-
/** Monotonic per-attempt suffix for TeamMate delivery turn dedup ids (#110 PR8). */
|
|
57
26
|
teammateDeliverySeq = 0;
|
|
58
|
-
/**
|
|
59
|
-
* Completion deliveries currently being processed. Duplicate settled events can
|
|
60
|
-
* race into `completionInput`; coalescing by completion id keeps one logical
|
|
61
|
-
* completion from injecting or triggering more than once concurrently.
|
|
62
|
-
*/
|
|
63
27
|
inFlightCompletionDeliveries = new Map();
|
|
64
|
-
/**
|
|
65
|
-
* Completion ids whose trigger turn has already been accepted. A later replay
|
|
66
|
-
* of the same settled teammate turn is an idempotent success, not a new wake-up.
|
|
67
|
-
*/
|
|
68
28
|
acceptedCompletionIds = new Set();
|
|
69
29
|
acceptedCompletionOrder = [];
|
|
70
|
-
/**
|
|
71
|
-
* Completion ids whose item has already been injected into the thread. The
|
|
72
|
-
* Dispatcher Service retries `completionInput` on `failed`; if the inject
|
|
73
|
-
* succeeded but the trigger turn failed, the retry must NOT re-inject the same
|
|
74
|
-
* item (that would persist a duplicate completion to the rollout). Bounded so
|
|
75
|
-
* a long-lived dispatcher does not grow this set without limit.
|
|
76
|
-
*/
|
|
77
30
|
injectedCompletionIds = new Set();
|
|
78
31
|
injectedCompletionOrder = [];
|
|
79
32
|
log;
|
|
@@ -114,7 +67,6 @@ export class CodexRuntime {
|
|
|
114
67
|
getThreadId() {
|
|
115
68
|
return this.threadId;
|
|
116
69
|
}
|
|
117
|
-
/** True when the live thread was resumed (not freshly started/recovered). */
|
|
118
70
|
wasThreadResumed() {
|
|
119
71
|
return this.threadResumed;
|
|
120
72
|
}
|
|
@@ -145,15 +97,6 @@ export class CodexRuntime {
|
|
|
145
97
|
}
|
|
146
98
|
return result;
|
|
147
99
|
}
|
|
148
|
-
/**
|
|
149
|
-
* Bring the dispatcher up. Order:
|
|
150
|
-
* 1. spawn codex app-server child
|
|
151
|
-
* 2. open WS client
|
|
152
|
-
* 3. install fail-fast approval handler
|
|
153
|
-
* 4. thread/start (new) or thread/resume (existing)
|
|
154
|
-
* 5. install turn manager
|
|
155
|
-
* 6. status = ready
|
|
156
|
-
*/
|
|
157
100
|
async start() {
|
|
158
101
|
this.stopping = false;
|
|
159
102
|
this.restarting = false;
|
|
@@ -179,17 +122,11 @@ export class CodexRuntime {
|
|
|
179
122
|
}
|
|
180
123
|
async startCodexRuntime() {
|
|
181
124
|
const cwd = this.deps.cwd;
|
|
182
|
-
// Fresh random rendezvous socket per start (issue #182): held in memory
|
|
183
|
-
// only — never persisted to durable state, never derived from state paths.
|
|
184
125
|
const socketPath = this.deps.allocateSocketPath(this.dispatcherId);
|
|
185
126
|
const extraArgs = this.deps.resolveExtraArgs?.() ?? [];
|
|
186
127
|
if (this.deps.codexHomeDoctor !== undefined) {
|
|
187
128
|
await this.deps.codexHomeDoctor({ runtimeId: this.dispatcherId, cwd });
|
|
188
129
|
}
|
|
189
|
-
// Compose the codex app-server log subpaths under the neutral central logs
|
|
190
|
-
// root (B2): core no longer names a per-runtime log file. The host supplies
|
|
191
|
-
// a unique, filesystem-safe `runtime_id`, so `<logsDir>/codex-app-server/
|
|
192
|
-
// <id>.log` is collision-free across dispatchers and teammates.
|
|
193
130
|
const codexLogDir = join(this.paths.logsDir(), 'codex-app-server');
|
|
194
131
|
const factory = this.deps.codexProcessFactory ?? ((o) => new CodexProcess(o));
|
|
195
132
|
const process = factory({
|
|
@@ -223,18 +160,12 @@ export class CodexRuntime {
|
|
|
223
160
|
},
|
|
224
161
|
});
|
|
225
162
|
this.client.setServerRequestHandler(approvalHandler);
|
|
226
|
-
// codex 0.134+ LSP-style handshake — must precede thread/start or
|
|
227
|
-
// any other RPC, otherwise codex answers everything with
|
|
228
|
-
// `Not initialized` (see src/codex/handshake.ts).
|
|
229
163
|
const initResponse = await performInitializeHandshake(this.client, {
|
|
230
164
|
...(this.deps.handshakeTimeoutMs !== undefined
|
|
231
165
|
? { timeoutMs: this.deps.handshakeTimeoutMs }
|
|
232
166
|
: {}),
|
|
233
167
|
});
|
|
234
168
|
this.log('info', `codex initialized: ${initResponse.userAgent} (home=${initResponse.codexHome}, ${initResponse.platformOs})`);
|
|
235
|
-
// Role-gated bundled skills (issue #209 slice 6): set the extra skill roots
|
|
236
|
-
// AFTER initialize and BEFORE thread start/resume, and on every restart this
|
|
237
|
-
// method runs again so the roots are reapplied to the fresh app-server.
|
|
238
169
|
await this.applySkillExtraRoots();
|
|
239
170
|
await this.resolveThread();
|
|
240
171
|
this.turnManager = new TurnManager({
|
|
@@ -246,57 +177,21 @@ export class CodexRuntime {
|
|
|
246
177
|
log: this.log,
|
|
247
178
|
});
|
|
248
179
|
}
|
|
249
|
-
/**
|
|
250
|
-
* Apply the role-gated bundled skill sources to the live app-server via
|
|
251
|
-
* `skills/extraRoots/set`. Codex treats each extra root as a directory whose
|
|
252
|
-
* immediate children are skill dirs, so a `skill-dir` source maps to the
|
|
253
|
-
* *parent* of its own directory; roots are deduped (the bundled Dreamux skills
|
|
254
|
-
* share one parent). Empty input skips the RPC entirely (a fresh per-runtime
|
|
255
|
-
* app-server starts with no extra roots, so nothing to clear).
|
|
256
|
-
*
|
|
257
|
-
* Error handling distinguishes two failure modes (issue #209 slice 6 repair):
|
|
258
|
-
* 1. The app-server does not implement `skills/extraRoots/set` at all — a
|
|
259
|
-
* capability/version skew against an older codex backend (it answers with
|
|
260
|
-
* an `unknown variant`/method-not-found error). This is NOT a real
|
|
261
|
-
* failure: fail open, warn, and continue skill-blind rather than bricking
|
|
262
|
-
* startup against every backend that predates the RPC.
|
|
263
|
-
* 2. The RPC exists but applying the given roots genuinely failed — fail
|
|
264
|
-
* loud, exactly as before, so real misconfiguration is not masked.
|
|
265
|
-
*/
|
|
266
180
|
async applySkillExtraRoots() {
|
|
267
181
|
if (this.client === null)
|
|
268
182
|
throw new Error('client not initialized');
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
.filter((s) => s.layout === CODEX_SKILL_DIR_LAYOUT)
|
|
275
|
-
.map((s) => dirname(s.path))),
|
|
276
|
-
];
|
|
277
|
-
if (extraRoots.length === 0)
|
|
278
|
-
return;
|
|
279
|
-
try {
|
|
280
|
-
await this.client.request('skills/extraRoots/set', { extraRoots });
|
|
281
|
-
}
|
|
282
|
-
catch (err) {
|
|
283
|
-
if (isUnsupportedRpcMethodError(err)) {
|
|
284
|
-
this.log('warn', `skills/extraRoots/set unsupported by this app-server; continuing skill-blind (${extraRoots.length} extra root(s) not applied)`, err);
|
|
285
|
-
return;
|
|
286
|
-
}
|
|
287
|
-
throw err;
|
|
288
|
-
}
|
|
289
|
-
this.log('info', `applied ${extraRoots.length} skill extra root(s): ${extraRoots.join(', ')}`);
|
|
183
|
+
await applyCodexSkillExtraRoots({
|
|
184
|
+
client: this.client,
|
|
185
|
+
sources: this.deps.skillSources ?? [],
|
|
186
|
+
log: this.log,
|
|
187
|
+
});
|
|
290
188
|
}
|
|
291
189
|
async resolveThread() {
|
|
292
190
|
if (this.client === null)
|
|
293
191
|
throw new Error('client not initialized');
|
|
294
|
-
// Each resolution recomputes whether we resumed; a fresh start or a
|
|
295
|
-
// resume-failure recovery must not look like a resume to the notice gate.
|
|
296
192
|
this.threadResumed = false;
|
|
297
193
|
const existing = this.threadId ?? this.identity.checkpoint_id ?? null;
|
|
298
194
|
if (existing === null) {
|
|
299
|
-
// Fresh thread.
|
|
300
195
|
const params = {
|
|
301
196
|
baseInstructions: this.deps.systemPromptContent,
|
|
302
197
|
};
|
|
@@ -317,7 +212,6 @@ export class CodexRuntime {
|
|
|
317
212
|
this.log('info', `resumed thread ${this.threadId}`);
|
|
318
213
|
}
|
|
319
214
|
catch (err) {
|
|
320
|
-
// Visible degradation (issue #2 Q11): start a fresh thread, record loss.
|
|
321
215
|
const msg = err instanceof Error ? err.message : String(err);
|
|
322
216
|
this.log('warn', `thread/resume failed for ${existing}: ${msg}; starting fresh thread`);
|
|
323
217
|
const res = await this.client.request('thread/start', { baseInstructions: this.deps.systemPromptContent });
|
|
@@ -331,47 +225,17 @@ export class CodexRuntime {
|
|
|
331
225
|
last_error: `thread/resume failed: ${msg}`,
|
|
332
226
|
});
|
|
333
227
|
}
|
|
334
|
-
// Park a warning to be delivered with the next outbound — best-effort
|
|
335
|
-
// queue note. For MVP we just log; full user-visible delivery on next
|
|
336
|
-
// inbound is a follow-up (see PR review).
|
|
337
228
|
}
|
|
338
229
|
}
|
|
339
|
-
/**
|
|
340
|
-
* Submit any accepted inbound message arriving for this dispatcher. Called by
|
|
341
|
-
* the Feishu inbound layer.
|
|
342
|
-
*/
|
|
343
230
|
async channelInput(input, hooks = {}) {
|
|
344
231
|
if (this.turnManager === null) {
|
|
345
232
|
return { status: 'failed', error: new Error('turn manager not initialized') };
|
|
346
233
|
}
|
|
347
|
-
// This runtime owns wrapping the channel input into its delivery shape: a
|
|
348
|
-
// structured channel turn becomes the native `<channel source="…">` block
|
|
349
|
-
// (same envelope claude renders); a plain turn (e.g. the completion trigger)
|
|
350
|
-
// passes through unchanged.
|
|
351
234
|
return this.turnManager.enqueue({ ...input, text: renderChannelInput(input) }, hooks);
|
|
352
235
|
}
|
|
353
|
-
/** Inject a system-originated notice (e.g. a restart notice). */
|
|
354
236
|
async systemInput(notice) {
|
|
355
237
|
return this.submitRestartNotice(notice.text);
|
|
356
238
|
}
|
|
357
|
-
/**
|
|
358
|
-
* Codex TeamMate completion delivery — the native inbox-then-trigger idiom.
|
|
359
|
-
*
|
|
360
|
-
* Two steps, in order:
|
|
361
|
-
* 1. `thread/inject_items` appends the completion to the dispatcher thread's
|
|
362
|
-
* model-visible history as a developer-role message (no fake user turn).
|
|
363
|
-
* codex folds the item onto the active turn when one is running and never
|
|
364
|
-
* rejects on a busy thread, so a failure here is a genuine RPC error.
|
|
365
|
-
* 2. a minimal trigger turn through the public `channelInput` seam wakes the
|
|
366
|
-
* idle dispatcher so it reads the just-injected notification and acts.
|
|
367
|
-
*
|
|
368
|
-
* The trigger turn uses a fresh, non-routable source id per attempt. The turn
|
|
369
|
-
* manager commits its dedup id before `turn/start` and does not roll it back
|
|
370
|
-
* on failure, so a retry that reused one id would come back `duplicate` and be
|
|
371
|
-
* mis-counted as delivered when nothing was submitted. The Dispatcher Service
|
|
372
|
-
* only retries on `failed` (definitely not submitted), so a unique id per
|
|
373
|
-
* attempt re-submits the trigger safely.
|
|
374
|
-
*/
|
|
375
239
|
async completionInput(completion) {
|
|
376
240
|
if (this.acceptedCompletionIds.has(completion.id)) {
|
|
377
241
|
return { status: 'accepted' };
|
|
@@ -403,9 +267,6 @@ export class CodexRuntime {
|
|
|
403
267
|
error: new Error('teammate completion delivery has no thread id'),
|
|
404
268
|
};
|
|
405
269
|
}
|
|
406
|
-
// Inject the completion item at most once per completion id. On a retry
|
|
407
|
-
// (trigger turn failed last time) the item is already in the thread, so we
|
|
408
|
-
// skip straight to re-triggering instead of persisting a duplicate.
|
|
409
270
|
if (!this.injectedCompletionIds.has(completion.id)) {
|
|
410
271
|
try {
|
|
411
272
|
await injectThreadItems(this.client, threadId, [
|
|
@@ -414,9 +275,6 @@ export class CodexRuntime {
|
|
|
414
275
|
}
|
|
415
276
|
catch (err) {
|
|
416
277
|
const cause = err instanceof Error ? err.message : String(err);
|
|
417
|
-
// `thread/inject_items` exists only on codex 0.137+. On an older codex
|
|
418
|
-
// it RPC-fails here, so surface the version requirement loudly rather
|
|
419
|
-
// than letting the dispatcher silently never see the completion.
|
|
420
278
|
return {
|
|
421
279
|
status: 'failed',
|
|
422
280
|
error: new Error(`teammate completion thread/inject_items failed (requires codex 0.137+): ${cause}`),
|
|
@@ -437,8 +295,6 @@ export class CodexRuntime {
|
|
|
437
295
|
case 'failed':
|
|
438
296
|
return { status: 'failed', error: delivery.error };
|
|
439
297
|
case 'duplicate':
|
|
440
|
-
// Unreachable with the per-attempt id above; if it ever happens, the
|
|
441
|
-
// turn was NOT freshly submitted, so do not report it as delivered.
|
|
442
298
|
return {
|
|
443
299
|
status: 'failed',
|
|
444
300
|
error: new Error('teammate completion trigger unexpectedly deduplicated'),
|
|
@@ -450,7 +306,6 @@ export class CodexRuntime {
|
|
|
450
306
|
};
|
|
451
307
|
}
|
|
452
308
|
}
|
|
453
|
-
/** Graceful stop: stop accepting work, reap codex child. */
|
|
454
309
|
async stop() {
|
|
455
310
|
this.stopping = true;
|
|
456
311
|
this.clearRestartTimer();
|
|
@@ -507,11 +362,6 @@ export class CodexRuntime {
|
|
|
507
362
|
const delay = this.restartDelayMs(attempt);
|
|
508
363
|
this.log('warn', `${reason}; restarting in ${delay}ms`);
|
|
509
364
|
this.setStatus('degraded');
|
|
510
|
-
// scheduleRestart runs from synchronous event handlers (ws close, child
|
|
511
|
-
// exit); the durable status write is best-effort here — persist it without
|
|
512
|
-
// blocking, logging (never throwing) on failure. The restart timer's later
|
|
513
|
-
// 'starting'/'ready' writes are awaited, so they cannot be reordered behind
|
|
514
|
-
// this one within the backoff delay.
|
|
515
365
|
void this.state
|
|
516
366
|
.setStatus(this.dispatcherId, 'degraded', { last_error: reason })
|
|
517
367
|
.catch((err) => this.log('warn', 'failed to persist degraded status', err));
|
|
@@ -582,12 +432,8 @@ export class CodexRuntime {
|
|
|
582
432
|
if (typeof last?.text === 'string' && last.text.length > 0) {
|
|
583
433
|
this.lastResult = { text: last.text };
|
|
584
434
|
}
|
|
585
|
-
// A turn reaching `turn/completed` is the `completed` terminal state. The
|
|
586
|
-
// `stopped` settlement for interrupted turns is emitted by the turn manager
|
|
587
|
-
// on `stop()`.
|
|
588
435
|
this.deps.onTurnSettled?.({ turnId: turn.turnId, status: 'completed' });
|
|
589
436
|
}
|
|
590
|
-
/** Record a completion id as injected, evicting the oldest past a small cap. */
|
|
591
437
|
rememberInjectedCompletion(id) {
|
|
592
438
|
if (this.injectedCompletionIds.has(id))
|
|
593
439
|
return;
|
|
@@ -599,7 +445,6 @@ export class CodexRuntime {
|
|
|
599
445
|
this.injectedCompletionIds.delete(evicted);
|
|
600
446
|
}
|
|
601
447
|
}
|
|
602
|
-
/** Record a completion id as fully accepted, evicting the oldest past a cap. */
|
|
603
448
|
rememberAcceptedCompletion(id) {
|
|
604
449
|
if (this.acceptedCompletionIds.has(id))
|
|
605
450
|
return;
|
|
@@ -615,34 +460,4 @@ export class CodexRuntime {
|
|
|
615
460
|
this.status = s;
|
|
616
461
|
}
|
|
617
462
|
}
|
|
618
|
-
/**
|
|
619
|
-
* Classify an RPC rejection as a capability/version gap — the app-server does
|
|
620
|
-
* not implement the requested method at all — rather than a genuine failure of
|
|
621
|
-
* an existing method.
|
|
622
|
-
*
|
|
623
|
-
* The rpc layer collapses codex's structured error to `Error(message)` (it
|
|
624
|
-
* drops the JSON-RPC error code), so the *message* is all we have. codex
|
|
625
|
-
* surfaces an unimplemented method as a serde enum-deserialization failure of
|
|
626
|
-
* the request's `method` field — `unknown variant \`<method>\`, expected one of
|
|
627
|
-
* …` — while a spec-compliant JSON-RPC peer answers method-not-found (-32601).
|
|
628
|
-
* We match those canonical phrasings only; the test stays deliberately narrow
|
|
629
|
-
* so a real error from an *existing* method (a bad root path, a permission
|
|
630
|
-
* failure) is NOT swallowed and still fails loud.
|
|
631
|
-
*
|
|
632
|
-
* The match is message-based by necessity: the rpc layer drops the structured
|
|
633
|
-
* JSON-RPC error code, so the message is all we have. The one residual
|
|
634
|
-
* false-positive is a server that *implements* the method but rejects a bad
|
|
635
|
-
* *param value* with an "unknown variant `<value>`" serde error. That is safe
|
|
636
|
-
* for our sole caller — `skills/extraRoots/set` takes a `string[]` of paths,
|
|
637
|
-
* which codex never enum-rejects — but a future caller passing an enum-typed
|
|
638
|
-
* param should not reuse this classifier blindly.
|
|
639
|
-
*/
|
|
640
|
-
export function isUnsupportedRpcMethodError(err) {
|
|
641
|
-
const message = (err instanceof Error ? err.message : String(err)).toLowerCase();
|
|
642
|
-
return (message.includes('unknown variant') ||
|
|
643
|
-
message.includes('method not found') ||
|
|
644
|
-
message.includes('unknown method') ||
|
|
645
|
-
message.includes('no such method') ||
|
|
646
|
-
message.includes('unsupported method'));
|
|
647
|
-
}
|
|
648
463
|
//# sourceMappingURL=runtime.js.map
|
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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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { AgentRuntimeSkillSource } from '@excitedjs/dreamux-types';
|
|
2
|
+
import type { CodexWsClient } from './rpc.js';
|
|
3
|
+
export declare function applyCodexSkillExtraRoots(input: {
|
|
4
|
+
client: CodexWsClient;
|
|
5
|
+
sources: readonly AgentRuntimeSkillSource[];
|
|
6
|
+
log: (level: 'info' | 'warn' | 'error', msg: string, err?: unknown) => void;
|
|
7
|
+
}): Promise<void>;
|
|
8
|
+
/**
|
|
9
|
+
* Classify an RPC rejection as a capability/version gap, not a genuine failure
|
|
10
|
+
* of an existing method. The rpc layer drops JSON-RPC error codes, so this must
|
|
11
|
+
* stay message-based and deliberately narrow.
|
|
12
|
+
*/
|
|
13
|
+
export declare function isUnsupportedRpcMethodError(err: unknown): boolean;
|
|
14
|
+
//# sourceMappingURL=skill-roots.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-roots.d.ts","sourceRoot":"","sources":["../src/skill-roots.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,uBAAuB,EACxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAI9C,wBAAsB,yBAAyB,CAAC,KAAK,EAAE;IACrD,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAC5C,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CAC7E,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BhB;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAWjE"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { dirname } from 'node:path';
|
|
2
|
+
const CODEX_SKILL_DIR_LAYOUT = 'skill-dir';
|
|
3
|
+
export async function applyCodexSkillExtraRoots(input) {
|
|
4
|
+
if (input.sources.length === 0)
|
|
5
|
+
return;
|
|
6
|
+
const extraRoots = [
|
|
7
|
+
...new Set(input.sources
|
|
8
|
+
.filter((source) => source.layout === CODEX_SKILL_DIR_LAYOUT)
|
|
9
|
+
.map((source) => dirname(source.path))),
|
|
10
|
+
];
|
|
11
|
+
if (extraRoots.length === 0)
|
|
12
|
+
return;
|
|
13
|
+
try {
|
|
14
|
+
await input.client.request('skills/extraRoots/set', { extraRoots });
|
|
15
|
+
}
|
|
16
|
+
catch (err) {
|
|
17
|
+
if (isUnsupportedRpcMethodError(err)) {
|
|
18
|
+
input.log('warn', `skills/extraRoots/set unsupported by this app-server; continuing skill-blind (${extraRoots.length} extra root(s) not applied)`, err);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
throw err;
|
|
22
|
+
}
|
|
23
|
+
input.log('info', `applied ${extraRoots.length} skill extra root(s): ${extraRoots.join(', ')}`);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Classify an RPC rejection as a capability/version gap, not a genuine failure
|
|
27
|
+
* of an existing method. The rpc layer drops JSON-RPC error codes, so this must
|
|
28
|
+
* stay message-based and deliberately narrow.
|
|
29
|
+
*/
|
|
30
|
+
export function isUnsupportedRpcMethodError(err) {
|
|
31
|
+
const message = (err instanceof Error ? err.message : String(err)).toLowerCase();
|
|
32
|
+
return (message.includes('unknown variant') ||
|
|
33
|
+
message.includes('method not found') ||
|
|
34
|
+
message.includes('unknown method') ||
|
|
35
|
+
message.includes('no such method') ||
|
|
36
|
+
message.includes('unsupported method'));
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=skill-roots.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-roots.js","sourceRoot":"","sources":["../src/skill-roots.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,MAAM,sBAAsB,GAAG,WAAW,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,KAI/C;IACC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACvC,MAAM,UAAU,GAAG;QACjB,GAAG,IAAI,GAAG,CACR,KAAK,CAAC,OAAO;aACV,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,sBAAsB,CAAC;aAC5D,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CACzC;KACF,CAAC;IACF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACpC,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IACtE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,2BAA2B,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,KAAK,CAAC,GAAG,CACP,MAAM,EACN,iFAAiF,UAAU,CAAC,MAAM,6BAA6B,EAC/H,GAAG,CACJ,CAAC;YACF,OAAO;QACT,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,KAAK,CAAC,GAAG,CACP,MAAM,EACN,WAAW,UAAU,CAAC,MAAM,yBAAyB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC7E,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,GAAY;IACtD,MAAM,OAAO,GAAG,CACd,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CACjD,CAAC,WAAW,EAAE,CAAC;IAChB,OAAO,CACL,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QACnC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QACpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAClC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAClC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CACvC,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@excitedjs/agent-runtime-codex",
|
|
3
|
-
"version": "0.2.0-
|
|
3
|
+
"version": "0.2.0-beta.73",
|
|
4
4
|
"description": "Built-in Codex Agent Runtime provider for Dreamux (alias builtin:codex). Implements the @excitedjs/dreamux-types AgentRuntimeProvider contract against the Codex app-server; depends on @excitedjs/dreamux-types only, never on @excitedjs/dreamux core (issue excitedjs/dreamux#209).",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
"LICENSE"
|
|
33
33
|
],
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@excitedjs/dreamux-types": "0.2.0-
|
|
36
|
-
"@excitedjs/dreamux-utils": "0.2.0-
|
|
35
|
+
"@excitedjs/dreamux-types": "0.2.0-beta.73",
|
|
36
|
+
"@excitedjs/dreamux-utils": "0.2.0-beta.73",
|
|
37
37
|
"smol-toml": "^1.6.1",
|
|
38
38
|
"ws": "^8.18.0"
|
|
39
39
|
},
|