cyrus-codex-runner 0.2.64-test.6 → 0.2.64
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/CodexEventMapper.d.ts +56 -0
- package/dist/CodexEventMapper.d.ts.map +1 -0
- package/dist/CodexEventMapper.js +469 -0
- package/dist/CodexEventMapper.js.map +1 -0
- package/dist/CodexRunner.d.ts +37 -46
- package/dist/CodexRunner.d.ts.map +1 -1
- package/dist/CodexRunner.js +136 -851
- package/dist/CodexRunner.js.map +1 -1
- package/dist/CodexSkillStager.d.ts +42 -0
- package/dist/CodexSkillStager.d.ts.map +1 -0
- package/dist/CodexSkillStager.js +182 -0
- package/dist/CodexSkillStager.js.map +1 -0
- package/dist/backend/AppServerCodexBackend.d.ts +74 -0
- package/dist/backend/AppServerCodexBackend.d.ts.map +1 -0
- package/dist/backend/AppServerCodexBackend.js +352 -0
- package/dist/backend/AppServerCodexBackend.js.map +1 -0
- package/dist/backend/appServerClient.d.ts +75 -0
- package/dist/backend/appServerClient.d.ts.map +1 -0
- package/dist/backend/appServerClient.js +223 -0
- package/dist/backend/appServerClient.js.map +1 -0
- package/dist/backend/appServerEvents.d.ts +9 -0
- package/dist/backend/appServerEvents.d.ts.map +1 -0
- package/dist/backend/appServerEvents.js +110 -0
- package/dist/backend/appServerEvents.js.map +1 -0
- package/dist/backend/appServerProcess.d.ts +38 -0
- package/dist/backend/appServerProcess.d.ts.map +1 -0
- package/dist/backend/appServerProcess.js +283 -0
- package/dist/backend/appServerProcess.js.map +1 -0
- package/dist/backend/codexBinary.d.ts +24 -0
- package/dist/backend/codexBinary.d.ts.map +1 -0
- package/dist/backend/codexBinary.js +44 -0
- package/dist/backend/codexBinary.js.map +1 -0
- package/dist/backend/types.d.ts +210 -0
- package/dist/backend/types.d.ts.map +1 -0
- package/dist/backend/types.js +2 -0
- package/dist/backend/types.js.map +1 -0
- package/dist/config/CodexConfigBuilder.d.ts +40 -0
- package/dist/config/CodexConfigBuilder.d.ts.map +1 -0
- package/dist/config/CodexConfigBuilder.js +182 -0
- package/dist/config/CodexConfigBuilder.js.map +1 -0
- package/dist/config/mcpConfigTranslator.d.ts +17 -0
- package/dist/config/mcpConfigTranslator.d.ts.map +1 -0
- package/dist/config/mcpConfigTranslator.js +245 -0
- package/dist/config/mcpConfigTranslator.js.map +1 -0
- package/dist/config/sandboxPolicy.d.ts +43 -0
- package/dist/config/sandboxPolicy.d.ts.map +1 -0
- package/dist/config/sandboxPolicy.js +56 -0
- package/dist/config/sandboxPolicy.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +9 -7
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -4
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { SDKMessage } from "cyrus-core";
|
|
2
|
+
import type { NormalizedCodexEvent } from "./backend/types.js";
|
|
3
|
+
export declare const DEFAULT_CODEX_MODEL = "gpt-5.5";
|
|
4
|
+
/**
|
|
5
|
+
* Dependencies the mapper needs from its owner (the runner). Keeps the mapper
|
|
6
|
+
* free of session-lifecycle ownership while letting it read session identity
|
|
7
|
+
* and push messages out.
|
|
8
|
+
*/
|
|
9
|
+
export interface MapperContext {
|
|
10
|
+
workingDirectory?: string;
|
|
11
|
+
model?: string;
|
|
12
|
+
/** Current session id, or "pending" before the thread id is known. */
|
|
13
|
+
getSessionId(): string;
|
|
14
|
+
/** Skills staged for this run (surfaced in the init message). */
|
|
15
|
+
getStagedSkillNames(): string[];
|
|
16
|
+
/** Emit a message to listeners (and append to the session list). */
|
|
17
|
+
emitMessage(message: SDKMessage): void;
|
|
18
|
+
/** Called when the backend reports the thread id, before the init message. */
|
|
19
|
+
onThreadStarted(threadId: string): void;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Translates backend-neutral {@link NormalizedCodexEvent}s into Cyrus
|
|
23
|
+
* `SDKMessage`s and accumulates the session message list. Single responsibility:
|
|
24
|
+
* event → message mapping. Knows nothing about transports or session lifecycle.
|
|
25
|
+
*/
|
|
26
|
+
export declare class CodexEventMapper {
|
|
27
|
+
private readonly ctx;
|
|
28
|
+
private messages;
|
|
29
|
+
private hasInitMessage;
|
|
30
|
+
private pendingResultMessage;
|
|
31
|
+
private lastAssistantText;
|
|
32
|
+
private lastUsage;
|
|
33
|
+
private errorMessages;
|
|
34
|
+
private startTimestampMs;
|
|
35
|
+
private emittedToolUseIds;
|
|
36
|
+
constructor(ctx: MapperContext);
|
|
37
|
+
reset(): void;
|
|
38
|
+
getMessages(): SDKMessage[];
|
|
39
|
+
handle(event: NormalizedCodexEvent): void;
|
|
40
|
+
/**
|
|
41
|
+
* Build and emit the terminal result message (and init, if a turn never
|
|
42
|
+
* started). Returns the full message list for the runner's `complete` event.
|
|
43
|
+
*/
|
|
44
|
+
finalize(opts: {
|
|
45
|
+
caughtError?: unknown;
|
|
46
|
+
wasStopped: boolean;
|
|
47
|
+
}): SDKMessage[];
|
|
48
|
+
private pushAndEmit;
|
|
49
|
+
private projectItemToTool;
|
|
50
|
+
private emitToolMessagesForItem;
|
|
51
|
+
private emitAssistantMessage;
|
|
52
|
+
private emitSystemInitMessage;
|
|
53
|
+
private createSuccessResultMessage;
|
|
54
|
+
private createErrorResultMessage;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=CodexEventMapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodexEventMapper.d.ts","sourceRoot":"","sources":["../src/CodexEventMapper.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEX,UAAU,EAGV,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EACX,oBAAoB,EAGpB,MAAM,oBAAoB,CAAC;AAE5B,eAAO,MAAM,mBAAmB,YAAY,CAAC;AAiB7C;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,YAAY,IAAI,MAAM,CAAC;IACvB,iEAAiE;IACjE,mBAAmB,IAAI,MAAM,EAAE,CAAC;IAChC,oEAAoE;IACpE,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC;IACvC,8EAA8E;IAC9E,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC;AAsND;;;;GAIG;AACH,qBAAa,gBAAgB;IAchB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAbhC,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,oBAAoB,CAAiC;IAC7D,OAAO,CAAC,iBAAiB,CAAuB;IAChD,OAAO,CAAC,SAAS,CAIf;IACF,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,iBAAiB,CAAqB;gBAEjB,GAAG,EAAE,aAAa;IAE/C,KAAK,IAAI,IAAI;IAeb,WAAW,IAAI,UAAU,EAAE;IAI3B,MAAM,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI;IA0CzC;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,GAAG,UAAU,EAAE;IA2B5E,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,iBAAiB;IAsFzB,OAAO,CAAC,uBAAuB;IA4C/B,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,qBAAqB;IA2B7B,OAAO,CAAC,0BAA0B;IAoBlC,OAAO,CAAC,wBAAwB;CAmBhC"}
|
|
@@ -0,0 +1,469 @@
|
|
|
1
|
+
import crypto from "node:crypto";
|
|
2
|
+
import { cwd } from "node:process";
|
|
3
|
+
export const DEFAULT_CODEX_MODEL = "gpt-5.5";
|
|
4
|
+
function safeStringify(value) {
|
|
5
|
+
try {
|
|
6
|
+
return JSON.stringify(value, null, 2);
|
|
7
|
+
}
|
|
8
|
+
catch {
|
|
9
|
+
return String(value);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function asRecord(value) {
|
|
13
|
+
if (value && typeof value === "object") {
|
|
14
|
+
return value;
|
|
15
|
+
}
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
function normalizeError(error) {
|
|
19
|
+
if (error instanceof Error) {
|
|
20
|
+
return error.message;
|
|
21
|
+
}
|
|
22
|
+
if (typeof error === "string") {
|
|
23
|
+
return error;
|
|
24
|
+
}
|
|
25
|
+
return "Codex execution failed";
|
|
26
|
+
}
|
|
27
|
+
function inferCommandToolName(command) {
|
|
28
|
+
const normalized = command.toLowerCase();
|
|
29
|
+
if (/\brg\b|\bgrep\b/.test(normalized)) {
|
|
30
|
+
return "Grep";
|
|
31
|
+
}
|
|
32
|
+
if (/\bglob\.glob\b|\bfind\b.+\s-name\s/.test(normalized)) {
|
|
33
|
+
return "Glob";
|
|
34
|
+
}
|
|
35
|
+
if (/\bcat\b/.test(normalized) && !/>/.test(normalized)) {
|
|
36
|
+
return "Read";
|
|
37
|
+
}
|
|
38
|
+
if (/<<\s*['"]?eof['"]?\s*>/i.test(command) ||
|
|
39
|
+
/\becho\b.+>/.test(normalized)) {
|
|
40
|
+
return "Write";
|
|
41
|
+
}
|
|
42
|
+
return "Bash";
|
|
43
|
+
}
|
|
44
|
+
function normalizeFilePath(path, workingDirectory) {
|
|
45
|
+
if (!path) {
|
|
46
|
+
return path;
|
|
47
|
+
}
|
|
48
|
+
if (workingDirectory && path.startsWith(workingDirectory)) {
|
|
49
|
+
// Lazy relative: strip the working-directory prefix without importing path.
|
|
50
|
+
const rel = path.slice(workingDirectory.length).replace(/^[/\\]+/, "");
|
|
51
|
+
if (rel && rel !== ".") {
|
|
52
|
+
return rel;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return path;
|
|
56
|
+
}
|
|
57
|
+
function summarizeFileChanges(item, workingDirectory) {
|
|
58
|
+
if (!item.changes.length) {
|
|
59
|
+
return item.status === "failed" ? "Patch failed" : "No file changes";
|
|
60
|
+
}
|
|
61
|
+
return item.changes
|
|
62
|
+
.map((change) => {
|
|
63
|
+
const filePath = normalizeFilePath(change.path, workingDirectory);
|
|
64
|
+
return `${change.kind} ${filePath}`;
|
|
65
|
+
})
|
|
66
|
+
.join("\n");
|
|
67
|
+
}
|
|
68
|
+
function toMcpResultString(item) {
|
|
69
|
+
if (item.error?.message) {
|
|
70
|
+
return item.error.message;
|
|
71
|
+
}
|
|
72
|
+
const textBlocks = [];
|
|
73
|
+
for (const block of item.result?.content || []) {
|
|
74
|
+
const text = asRecord(block)?.text;
|
|
75
|
+
if (typeof text === "string" && text.trim().length > 0) {
|
|
76
|
+
textBlocks.push(text);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if (textBlocks.length > 0) {
|
|
80
|
+
return textBlocks.join("\n");
|
|
81
|
+
}
|
|
82
|
+
if (item.result?.structured_content !== undefined) {
|
|
83
|
+
return safeStringify(item.result.structured_content);
|
|
84
|
+
}
|
|
85
|
+
return item.status === "failed"
|
|
86
|
+
? "MCP tool call failed"
|
|
87
|
+
: "MCP tool call completed";
|
|
88
|
+
}
|
|
89
|
+
function normalizeMcpIdentifier(value) {
|
|
90
|
+
const normalized = value
|
|
91
|
+
.toLowerCase()
|
|
92
|
+
.replace(/[^a-z0-9_]+/g, "_")
|
|
93
|
+
.replace(/^_+|_+$/g, "");
|
|
94
|
+
return normalized || "unknown";
|
|
95
|
+
}
|
|
96
|
+
function emptyUsageBlock() {
|
|
97
|
+
return {
|
|
98
|
+
input_tokens: 0,
|
|
99
|
+
output_tokens: 0,
|
|
100
|
+
cache_creation_input_tokens: 0,
|
|
101
|
+
cache_read_input_tokens: 0,
|
|
102
|
+
output_tokens_details: null,
|
|
103
|
+
cache_creation: null,
|
|
104
|
+
inference_geo: null,
|
|
105
|
+
iterations: null,
|
|
106
|
+
server_tool_use: null,
|
|
107
|
+
service_tier: null,
|
|
108
|
+
speed: null,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
function createAssistantToolUseMessage(toolUseId, toolName, toolInput, messageId = crypto.randomUUID()) {
|
|
112
|
+
const contentBlocks = [
|
|
113
|
+
{ type: "tool_use", id: toolUseId, name: toolName, input: toolInput },
|
|
114
|
+
];
|
|
115
|
+
return {
|
|
116
|
+
id: messageId,
|
|
117
|
+
type: "message",
|
|
118
|
+
role: "assistant",
|
|
119
|
+
content: contentBlocks,
|
|
120
|
+
model: DEFAULT_CODEX_MODEL,
|
|
121
|
+
stop_reason: null,
|
|
122
|
+
stop_sequence: null,
|
|
123
|
+
stop_details: null,
|
|
124
|
+
usage: emptyUsageBlock(),
|
|
125
|
+
container: null,
|
|
126
|
+
context_management: null,
|
|
127
|
+
diagnostics: null,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
function createUserToolResultMessage(toolUseId, result, isError) {
|
|
131
|
+
const contentBlocks = [
|
|
132
|
+
{
|
|
133
|
+
type: "tool_result",
|
|
134
|
+
tool_use_id: toolUseId,
|
|
135
|
+
content: result,
|
|
136
|
+
is_error: isError,
|
|
137
|
+
},
|
|
138
|
+
];
|
|
139
|
+
return { role: "user", content: contentBlocks };
|
|
140
|
+
}
|
|
141
|
+
function createAssistantBetaMessage(content, messageId = crypto.randomUUID()) {
|
|
142
|
+
const contentBlocks = [
|
|
143
|
+
{ type: "text", text: content },
|
|
144
|
+
];
|
|
145
|
+
return {
|
|
146
|
+
id: messageId,
|
|
147
|
+
type: "message",
|
|
148
|
+
role: "assistant",
|
|
149
|
+
content: contentBlocks,
|
|
150
|
+
model: DEFAULT_CODEX_MODEL,
|
|
151
|
+
stop_reason: null,
|
|
152
|
+
stop_sequence: null,
|
|
153
|
+
stop_details: null,
|
|
154
|
+
usage: emptyUsageBlock(),
|
|
155
|
+
container: null,
|
|
156
|
+
context_management: null,
|
|
157
|
+
diagnostics: null,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
function createResultUsage(parsed) {
|
|
161
|
+
return {
|
|
162
|
+
input_tokens: parsed.input_tokens,
|
|
163
|
+
output_tokens: parsed.output_tokens,
|
|
164
|
+
cache_creation_input_tokens: 0,
|
|
165
|
+
cache_read_input_tokens: parsed.cached_input_tokens,
|
|
166
|
+
output_tokens_details: { thinking_tokens: 0 },
|
|
167
|
+
cache_creation: {
|
|
168
|
+
ephemeral_1h_input_tokens: 0,
|
|
169
|
+
ephemeral_5m_input_tokens: 0,
|
|
170
|
+
},
|
|
171
|
+
inference_geo: "unknown",
|
|
172
|
+
iterations: [],
|
|
173
|
+
server_tool_use: { web_fetch_requests: 0, web_search_requests: 0 },
|
|
174
|
+
service_tier: "standard",
|
|
175
|
+
speed: "standard",
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Translates backend-neutral {@link NormalizedCodexEvent}s into Cyrus
|
|
180
|
+
* `SDKMessage`s and accumulates the session message list. Single responsibility:
|
|
181
|
+
* event → message mapping. Knows nothing about transports or session lifecycle.
|
|
182
|
+
*/
|
|
183
|
+
export class CodexEventMapper {
|
|
184
|
+
ctx;
|
|
185
|
+
messages = [];
|
|
186
|
+
hasInitMessage = false;
|
|
187
|
+
pendingResultMessage = null;
|
|
188
|
+
lastAssistantText = null;
|
|
189
|
+
lastUsage = {
|
|
190
|
+
input_tokens: 0,
|
|
191
|
+
output_tokens: 0,
|
|
192
|
+
cached_input_tokens: 0,
|
|
193
|
+
};
|
|
194
|
+
errorMessages = [];
|
|
195
|
+
startTimestampMs = 0;
|
|
196
|
+
emittedToolUseIds = new Set();
|
|
197
|
+
constructor(ctx) {
|
|
198
|
+
this.ctx = ctx;
|
|
199
|
+
}
|
|
200
|
+
reset() {
|
|
201
|
+
this.messages = [];
|
|
202
|
+
this.hasInitMessage = false;
|
|
203
|
+
this.pendingResultMessage = null;
|
|
204
|
+
this.lastAssistantText = null;
|
|
205
|
+
this.lastUsage = {
|
|
206
|
+
input_tokens: 0,
|
|
207
|
+
output_tokens: 0,
|
|
208
|
+
cached_input_tokens: 0,
|
|
209
|
+
};
|
|
210
|
+
this.errorMessages = [];
|
|
211
|
+
this.startTimestampMs = Date.now();
|
|
212
|
+
this.emittedToolUseIds.clear();
|
|
213
|
+
}
|
|
214
|
+
getMessages() {
|
|
215
|
+
return [...this.messages];
|
|
216
|
+
}
|
|
217
|
+
handle(event) {
|
|
218
|
+
switch (event.kind) {
|
|
219
|
+
case "thread-started": {
|
|
220
|
+
this.ctx.onThreadStarted(event.threadId);
|
|
221
|
+
this.emitSystemInitMessage(event.threadId);
|
|
222
|
+
break;
|
|
223
|
+
}
|
|
224
|
+
case "item-completed": {
|
|
225
|
+
if (event.item.type === "agent_message") {
|
|
226
|
+
this.emitAssistantMessage(event.item.text);
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
this.emitToolMessagesForItem(event.item, true);
|
|
230
|
+
}
|
|
231
|
+
break;
|
|
232
|
+
}
|
|
233
|
+
case "item-started": {
|
|
234
|
+
this.emitToolMessagesForItem(event.item, false);
|
|
235
|
+
break;
|
|
236
|
+
}
|
|
237
|
+
case "turn-completed": {
|
|
238
|
+
this.lastUsage = event.usage;
|
|
239
|
+
this.pendingResultMessage = this.createSuccessResultMessage(this.lastAssistantText || "Codex session completed successfully");
|
|
240
|
+
break;
|
|
241
|
+
}
|
|
242
|
+
case "turn-failed": {
|
|
243
|
+
const message = event.message ||
|
|
244
|
+
this.errorMessages.at(-1) ||
|
|
245
|
+
"Codex execution failed";
|
|
246
|
+
this.errorMessages.push(message);
|
|
247
|
+
this.pendingResultMessage = this.createErrorResultMessage(message);
|
|
248
|
+
break;
|
|
249
|
+
}
|
|
250
|
+
case "error": {
|
|
251
|
+
this.errorMessages.push(event.message);
|
|
252
|
+
break;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Build and emit the terminal result message (and init, if a turn never
|
|
258
|
+
* started). Returns the full message list for the runner's `complete` event.
|
|
259
|
+
*/
|
|
260
|
+
finalize(opts) {
|
|
261
|
+
if (!this.hasInitMessage) {
|
|
262
|
+
this.emitSystemInitMessage(this.ctx.getSessionId());
|
|
263
|
+
}
|
|
264
|
+
if (opts.caughtError && !opts.wasStopped) {
|
|
265
|
+
this.errorMessages.push(normalizeError(opts.caughtError));
|
|
266
|
+
}
|
|
267
|
+
if (!this.pendingResultMessage && !opts.wasStopped) {
|
|
268
|
+
this.pendingResultMessage = opts.caughtError
|
|
269
|
+
? this.createErrorResultMessage(this.errorMessages.at(-1) || "Codex execution failed")
|
|
270
|
+
: this.createSuccessResultMessage(this.lastAssistantText || "Codex session completed successfully");
|
|
271
|
+
}
|
|
272
|
+
if (this.pendingResultMessage) {
|
|
273
|
+
this.pushAndEmit(this.pendingResultMessage);
|
|
274
|
+
this.pendingResultMessage = null;
|
|
275
|
+
}
|
|
276
|
+
return this.getMessages();
|
|
277
|
+
}
|
|
278
|
+
pushAndEmit(message) {
|
|
279
|
+
this.messages.push(message);
|
|
280
|
+
this.ctx.emitMessage(message);
|
|
281
|
+
}
|
|
282
|
+
projectItemToTool(item) {
|
|
283
|
+
switch (item.type) {
|
|
284
|
+
case "command_execution": {
|
|
285
|
+
const isError = item.status === "failed" ||
|
|
286
|
+
(typeof item.exit_code === "number" && item.exit_code !== 0);
|
|
287
|
+
const result = item.aggregated_output?.trim() ||
|
|
288
|
+
(isError
|
|
289
|
+
? `Command failed (exit code ${item.exit_code ?? "unknown"})`
|
|
290
|
+
: "Command completed with no output");
|
|
291
|
+
return {
|
|
292
|
+
toolUseId: item.id,
|
|
293
|
+
toolName: inferCommandToolName(item.command),
|
|
294
|
+
toolInput: { command: item.command },
|
|
295
|
+
result,
|
|
296
|
+
isError,
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
case "file_change": {
|
|
300
|
+
const primaryPath = item.changes[0]?.path &&
|
|
301
|
+
normalizeFilePath(item.changes[0].path, this.ctx.workingDirectory);
|
|
302
|
+
return {
|
|
303
|
+
toolUseId: item.id,
|
|
304
|
+
toolName: "Edit",
|
|
305
|
+
toolInput: {
|
|
306
|
+
...(primaryPath ? { file_path: primaryPath } : {}),
|
|
307
|
+
changes: item.changes.map((change) => ({
|
|
308
|
+
kind: change.kind,
|
|
309
|
+
path: normalizeFilePath(change.path, this.ctx.workingDirectory),
|
|
310
|
+
})),
|
|
311
|
+
},
|
|
312
|
+
result: summarizeFileChanges(item, this.ctx.workingDirectory),
|
|
313
|
+
isError: item.status === "failed",
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
case "web_search": {
|
|
317
|
+
const action = asRecord(item.action);
|
|
318
|
+
const actionType = typeof action?.type === "string" ? action.type : undefined;
|
|
319
|
+
const isFetch = actionType === "open_page";
|
|
320
|
+
const url = typeof action?.url === "string" ? action.url : undefined;
|
|
321
|
+
const pattern = typeof action?.pattern === "string" ? action.pattern : undefined;
|
|
322
|
+
return {
|
|
323
|
+
toolUseId: item.id,
|
|
324
|
+
toolName: isFetch ? "WebFetch" : "WebSearch",
|
|
325
|
+
toolInput: isFetch
|
|
326
|
+
? { url: url || item.query, ...(pattern ? { pattern } : {}) }
|
|
327
|
+
: { query: item.query },
|
|
328
|
+
result: action && Object.keys(action).length > 0
|
|
329
|
+
? safeStringify(action)
|
|
330
|
+
: `Search completed for query: ${item.query}`,
|
|
331
|
+
isError: false,
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
case "mcp_tool_call": {
|
|
335
|
+
return {
|
|
336
|
+
toolUseId: item.id,
|
|
337
|
+
toolName: `mcp__${normalizeMcpIdentifier(item.server)}__${normalizeMcpIdentifier(item.tool)}`,
|
|
338
|
+
toolInput: asRecord(item.arguments) || { arguments: item.arguments },
|
|
339
|
+
result: toMcpResultString(item),
|
|
340
|
+
isError: item.status === "failed" || Boolean(item.error),
|
|
341
|
+
};
|
|
342
|
+
}
|
|
343
|
+
case "todo_list": {
|
|
344
|
+
return {
|
|
345
|
+
toolUseId: item.id,
|
|
346
|
+
toolName: "TodoWrite",
|
|
347
|
+
toolInput: {
|
|
348
|
+
todos: item.items.map((todo) => ({
|
|
349
|
+
content: todo.text,
|
|
350
|
+
status: todo.completed ? "completed" : "pending",
|
|
351
|
+
})),
|
|
352
|
+
},
|
|
353
|
+
result: `Updated todo list (${item.items.length} items)`,
|
|
354
|
+
isError: false,
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
default:
|
|
358
|
+
return null;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
emitToolMessagesForItem(item, includeResult) {
|
|
362
|
+
const projection = this.projectItemToTool(item);
|
|
363
|
+
if (!projection) {
|
|
364
|
+
return;
|
|
365
|
+
}
|
|
366
|
+
if (!this.emittedToolUseIds.has(projection.toolUseId)) {
|
|
367
|
+
const assistantMessage = {
|
|
368
|
+
type: "assistant",
|
|
369
|
+
message: createAssistantToolUseMessage(projection.toolUseId, projection.toolName, projection.toolInput),
|
|
370
|
+
parent_tool_use_id: null,
|
|
371
|
+
uuid: crypto.randomUUID(),
|
|
372
|
+
session_id: this.ctx.getSessionId(),
|
|
373
|
+
};
|
|
374
|
+
this.pushAndEmit(assistantMessage);
|
|
375
|
+
this.emittedToolUseIds.add(projection.toolUseId);
|
|
376
|
+
}
|
|
377
|
+
if (!includeResult) {
|
|
378
|
+
return;
|
|
379
|
+
}
|
|
380
|
+
const userMessage = {
|
|
381
|
+
type: "user",
|
|
382
|
+
message: createUserToolResultMessage(projection.toolUseId, projection.result, projection.isError),
|
|
383
|
+
parent_tool_use_id: null,
|
|
384
|
+
uuid: crypto.randomUUID(),
|
|
385
|
+
session_id: this.ctx.getSessionId(),
|
|
386
|
+
};
|
|
387
|
+
this.pushAndEmit(userMessage);
|
|
388
|
+
this.emittedToolUseIds.delete(projection.toolUseId);
|
|
389
|
+
}
|
|
390
|
+
emitAssistantMessage(text) {
|
|
391
|
+
const normalized = text.trim();
|
|
392
|
+
if (!normalized) {
|
|
393
|
+
return;
|
|
394
|
+
}
|
|
395
|
+
this.lastAssistantText = normalized;
|
|
396
|
+
const assistantMessage = {
|
|
397
|
+
type: "assistant",
|
|
398
|
+
message: createAssistantBetaMessage(normalized),
|
|
399
|
+
parent_tool_use_id: null,
|
|
400
|
+
uuid: crypto.randomUUID(),
|
|
401
|
+
session_id: this.ctx.getSessionId(),
|
|
402
|
+
};
|
|
403
|
+
this.pushAndEmit(assistantMessage);
|
|
404
|
+
}
|
|
405
|
+
emitSystemInitMessage(sessionId) {
|
|
406
|
+
if (this.hasInitMessage) {
|
|
407
|
+
return;
|
|
408
|
+
}
|
|
409
|
+
this.hasInitMessage = true;
|
|
410
|
+
const initMessage = {
|
|
411
|
+
type: "system",
|
|
412
|
+
subtype: "init",
|
|
413
|
+
agents: undefined,
|
|
414
|
+
apiKeySource: "user",
|
|
415
|
+
claude_code_version: "codex-cli",
|
|
416
|
+
cwd: this.ctx.workingDirectory || cwd(),
|
|
417
|
+
tools: [],
|
|
418
|
+
mcp_servers: [],
|
|
419
|
+
model: this.ctx.model || DEFAULT_CODEX_MODEL,
|
|
420
|
+
permissionMode: "default",
|
|
421
|
+
slash_commands: [],
|
|
422
|
+
output_style: "default",
|
|
423
|
+
skills: this.ctx.getStagedSkillNames(),
|
|
424
|
+
plugins: [],
|
|
425
|
+
uuid: crypto.randomUUID(),
|
|
426
|
+
session_id: sessionId,
|
|
427
|
+
};
|
|
428
|
+
this.pushAndEmit(initMessage);
|
|
429
|
+
}
|
|
430
|
+
createSuccessResultMessage(result) {
|
|
431
|
+
const durationMs = Math.max(Date.now() - this.startTimestampMs, 0);
|
|
432
|
+
return {
|
|
433
|
+
type: "result",
|
|
434
|
+
subtype: "success",
|
|
435
|
+
duration_ms: durationMs,
|
|
436
|
+
duration_api_ms: 0,
|
|
437
|
+
is_error: false,
|
|
438
|
+
num_turns: 1,
|
|
439
|
+
result,
|
|
440
|
+
stop_reason: null,
|
|
441
|
+
total_cost_usd: 0,
|
|
442
|
+
usage: createResultUsage(this.lastUsage),
|
|
443
|
+
modelUsage: {},
|
|
444
|
+
permission_denials: [],
|
|
445
|
+
uuid: crypto.randomUUID(),
|
|
446
|
+
session_id: this.ctx.getSessionId(),
|
|
447
|
+
};
|
|
448
|
+
}
|
|
449
|
+
createErrorResultMessage(errorMessage) {
|
|
450
|
+
const durationMs = Math.max(Date.now() - this.startTimestampMs, 0);
|
|
451
|
+
return {
|
|
452
|
+
type: "result",
|
|
453
|
+
subtype: "error_during_execution",
|
|
454
|
+
duration_ms: durationMs,
|
|
455
|
+
duration_api_ms: 0,
|
|
456
|
+
is_error: true,
|
|
457
|
+
num_turns: 1,
|
|
458
|
+
stop_reason: null,
|
|
459
|
+
errors: [errorMessage],
|
|
460
|
+
total_cost_usd: 0,
|
|
461
|
+
usage: createResultUsage(this.lastUsage),
|
|
462
|
+
modelUsage: {},
|
|
463
|
+
permission_denials: [],
|
|
464
|
+
uuid: crypto.randomUUID(),
|
|
465
|
+
session_id: this.ctx.getSessionId(),
|
|
466
|
+
};
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
//# sourceMappingURL=CodexEventMapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodexEventMapper.js","sourceRoot":"","sources":["../src/CodexEventMapper.ts"],"names":[],"mappings":"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"}
|
package/dist/CodexRunner.d.ts
CHANGED
|
@@ -6,64 +6,55 @@ export declare interface CodexRunner {
|
|
|
6
6
|
emit<K extends keyof CodexRunnerEvents>(event: K, ...args: Parameters<CodexRunnerEvents[K]>): boolean;
|
|
7
7
|
}
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
9
|
+
* Adapts Codex to Cyrus's {@link IAgentRunner} contract.
|
|
10
|
+
*
|
|
11
|
+
* The runner is a thin orchestrator: it owns session lifecycle and delegates
|
|
12
|
+
* configuration assembly ({@link CodexConfigBuilder}), skill staging
|
|
13
|
+
* ({@link CodexSkillStager}), event→message mapping ({@link CodexEventMapper}),
|
|
14
|
+
* and transport ({@link CodexBackend}) to dedicated collaborators. Codex is
|
|
15
|
+
* driven exclusively through the app-server backend, which supports mid-turn
|
|
16
|
+
* input injection (`turn/steer`).
|
|
10
17
|
*/
|
|
11
18
|
export declare class CodexRunner extends EventEmitter implements IAgentRunner {
|
|
12
|
-
readonly supportsStreamingInput =
|
|
13
|
-
private config;
|
|
19
|
+
readonly supportsStreamingInput = true;
|
|
20
|
+
private readonly config;
|
|
21
|
+
private readonly formatter;
|
|
22
|
+
private readonly skillStager;
|
|
23
|
+
private readonly mapper;
|
|
14
24
|
private sessionInfo;
|
|
15
|
-
private
|
|
16
|
-
private formatter;
|
|
17
|
-
private hasInitMessage;
|
|
18
|
-
private pendingResultMessage;
|
|
19
|
-
private lastAssistantText;
|
|
20
|
-
private lastUsage;
|
|
21
|
-
private errorMessages;
|
|
22
|
-
private startTimestampMs;
|
|
25
|
+
private backend;
|
|
23
26
|
private wasStopped;
|
|
24
|
-
|
|
25
|
-
private
|
|
27
|
+
/** Set once the turn reaches a terminal state; gates {@link isStreaming}. */
|
|
28
|
+
private turnFinished;
|
|
29
|
+
/**
|
|
30
|
+
* Follow-up messages that arrived before the turn became steerable (during
|
|
31
|
+
* config build / process spawn / thread start). Flushed via `steer` once the
|
|
32
|
+
* turn starts, so a fast follow-up is never lost or wrongly deferred.
|
|
33
|
+
*/
|
|
34
|
+
private pendingFollowups;
|
|
26
35
|
constructor(config: CodexRunnerConfig);
|
|
27
36
|
start(prompt: string): Promise<CodexSessionInfo>;
|
|
28
37
|
startStreaming(initialPrompt?: string): Promise<CodexSessionInfo>;
|
|
29
|
-
addStreamMessage(_content: string): void;
|
|
30
|
-
completeStream(): void;
|
|
31
|
-
private startWithPrompt;
|
|
32
|
-
/**
|
|
33
|
-
* Check if the configured model is accessible via the OpenAI API.
|
|
34
|
-
* If not, swap to the fallback model before starting the session.
|
|
35
|
-
*
|
|
36
|
-
* Skipped when:
|
|
37
|
-
* - No OPENAI_API_KEY is set (Codex-native auth handles model access)
|
|
38
|
-
* - The user has a ChatGPT subscription (`codex login status` reports "Logged in using ChatGPT")
|
|
39
|
-
*/
|
|
40
|
-
private resolveModelWithFallback;
|
|
41
38
|
/**
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
39
|
+
* Inject a message mid-session. While a turn is steerable it is sent
|
|
40
|
+
* immediately (`turn/steer`); during the startup window (before the turn
|
|
41
|
+
* begins) it is buffered and flushed once the turn starts. Throws only once
|
|
42
|
+
* the turn has finished, where the caller should resume with a new turn.
|
|
45
43
|
*/
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
private getAdditionalDirectories;
|
|
50
|
-
private resolveCodexHome;
|
|
51
|
-
private buildEnvOverride;
|
|
52
|
-
private buildCodexMcpServersConfig;
|
|
53
|
-
private buildConfigOverrides;
|
|
54
|
-
private runTurn;
|
|
55
|
-
private handleEvent;
|
|
56
|
-
private projectItemToTool;
|
|
57
|
-
private emitToolMessagesForItem;
|
|
58
|
-
private finalizeSession;
|
|
59
|
-
private emitAssistantMessage;
|
|
60
|
-
private emitSystemInitMessage;
|
|
61
|
-
private createSuccessResultMessage;
|
|
62
|
-
private createErrorResultMessage;
|
|
63
|
-
private cleanupRuntimeState;
|
|
44
|
+
addStreamMessage(content: string): void;
|
|
45
|
+
completeStream(): void;
|
|
46
|
+
isStreaming(): boolean;
|
|
64
47
|
stop(): void;
|
|
65
48
|
isRunning(): boolean;
|
|
66
49
|
getMessages(): SDKMessage[];
|
|
67
50
|
getFormatter(): IMessageFormatter;
|
|
51
|
+
private startWithPrompt;
|
|
52
|
+
private createBackend;
|
|
53
|
+
private handleBackendEvent;
|
|
54
|
+
private steer;
|
|
55
|
+
private flushPendingFollowups;
|
|
56
|
+
private buildMapperContext;
|
|
57
|
+
private finalizeSession;
|
|
58
|
+
private cleanupRuntimeState;
|
|
68
59
|
}
|
|
69
60
|
//# sourceMappingURL=CodexRunner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodexRunner.d.ts","sourceRoot":"","sources":["../src/CodexRunner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"CodexRunner.d.ts","sourceRoot":"","sources":["../src/CodexRunner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAW9E,OAAO,KAAK,EACX,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,OAAO,WAAW,WAAW;IACnC,EAAE,CAAC,CAAC,SAAS,MAAM,iBAAiB,EACnC,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC5B,IAAI,CAAC;IACR,IAAI,CAAC,CAAC,SAAS,MAAM,iBAAiB,EACrC,KAAK,EAAE,CAAC,EACR,GAAG,IAAI,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,GACvC,OAAO,CAAC;CACX;AAED;;;;;;;;;GASG;AACH,qBAAa,WAAY,SAAQ,YAAa,YAAW,YAAY;IACpE,QAAQ,CAAC,sBAAsB,QAAQ;IAEvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAC9C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmB;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAE1C,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,UAAU,CAAS;IAC3B,6EAA6E;IAC7E,OAAO,CAAC,YAAY,CAAS;IAC7B;;;;OAIG;IACH,OAAO,CAAC,gBAAgB,CAAgB;gBAE5B,MAAM,EAAE,iBAAiB;IAiB/B,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAIhD,cAAc,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAIvE;;;;;OAKG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAYvC,cAAc,IAAI,IAAI;IAKtB,WAAW,IAAI,OAAO;IAStB,IAAI,IAAI,IAAI;IAOZ,SAAS,IAAI,OAAO;IAIpB,WAAW,IAAI,UAAU,EAAE;IAI3B,YAAY,IAAI,iBAAiB;YAMnB,eAAe;IA4C7B,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,KAAK;IAWb,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,kBAAkB;IAoB1B,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,mBAAmB;CAQ3B"}
|