codex-weixin 0.2.1

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.
Files changed (93) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/LICENSE +21 -0
  3. package/NOTICE +5 -0
  4. package/README.en.md +200 -0
  5. package/README.md +210 -0
  6. package/dist/bridge/access.d.ts +21 -0
  7. package/dist/bridge/access.js +31 -0
  8. package/dist/bridge/access.js.map +1 -0
  9. package/dist/bridge/actions.d.ts +21 -0
  10. package/dist/bridge/actions.js +120 -0
  11. package/dist/bridge/actions.js.map +1 -0
  12. package/dist/bridge/errors.d.ts +1 -0
  13. package/dist/bridge/errors.js +15 -0
  14. package/dist/bridge/errors.js.map +1 -0
  15. package/dist/bridge/format.d.ts +14 -0
  16. package/dist/bridge/format.js +62 -0
  17. package/dist/bridge/format.js.map +1 -0
  18. package/dist/bridge/prompt-buffer.d.ts +45 -0
  19. package/dist/bridge/prompt-buffer.js +56 -0
  20. package/dist/bridge/prompt-buffer.js.map +1 -0
  21. package/dist/bridge/service.d.ts +38 -0
  22. package/dist/bridge/service.js +292 -0
  23. package/dist/bridge/service.js.map +1 -0
  24. package/dist/codex/app-server-runner.d.ts +74 -0
  25. package/dist/codex/app-server-runner.js +514 -0
  26. package/dist/codex/app-server-runner.js.map +1 -0
  27. package/dist/codex/exec-runner.d.ts +36 -0
  28. package/dist/codex/exec-runner.js +153 -0
  29. package/dist/codex/exec-runner.js.map +1 -0
  30. package/dist/codex/runner.d.ts +22 -0
  31. package/dist/codex/runner.js +57 -0
  32. package/dist/codex/runner.js.map +1 -0
  33. package/dist/codex/sandbox.d.ts +3 -0
  34. package/dist/codex/sandbox.js +15 -0
  35. package/dist/codex/sandbox.js.map +1 -0
  36. package/dist/index.d.ts +15 -0
  37. package/dist/index.js +16 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/server/account-manager.d.ts +94 -0
  40. package/dist/server/account-manager.js +468 -0
  41. package/dist/server/account-manager.js.map +1 -0
  42. package/dist/server/arguments.d.ts +3 -0
  43. package/dist/server/arguments.js +25 -0
  44. package/dist/server/arguments.js.map +1 -0
  45. package/dist/server/http-server.d.ts +23 -0
  46. package/dist/server/http-server.js +481 -0
  47. package/dist/server/http-server.js.map +1 -0
  48. package/dist/server/index.d.ts +2 -0
  49. package/dist/server/index.js +69 -0
  50. package/dist/server/index.js.map +1 -0
  51. package/dist/server/login-manager.d.ts +27 -0
  52. package/dist/server/login-manager.js +49 -0
  53. package/dist/server/login-manager.js.map +1 -0
  54. package/dist/server/process-lock.d.ts +5 -0
  55. package/dist/server/process-lock.js +63 -0
  56. package/dist/server/process-lock.js.map +1 -0
  57. package/dist/state/config.d.ts +19 -0
  58. package/dist/state/config.js +41 -0
  59. package/dist/state/config.js.map +1 -0
  60. package/dist/state/json-store.d.ts +3 -0
  61. package/dist/state/json-store.js +23 -0
  62. package/dist/state/json-store.js.map +1 -0
  63. package/dist/state/paths.d.ts +12 -0
  64. package/dist/state/paths.js +28 -0
  65. package/dist/state/paths.js.map +1 -0
  66. package/dist/state/runtime-state.d.ts +57 -0
  67. package/dist/state/runtime-state.js +212 -0
  68. package/dist/state/runtime-state.js.map +1 -0
  69. package/dist/web/app.js +958 -0
  70. package/dist/web/index.html +273 -0
  71. package/dist/web/styles.css +324 -0
  72. package/dist/web/vendor/lucide.min.js +12 -0
  73. package/dist/web/vendor/marked.umd.js +79 -0
  74. package/dist/web/vendor/purify.min.js +3 -0
  75. package/dist/weixin/accounts.d.ts +22 -0
  76. package/dist/weixin/accounts.js +66 -0
  77. package/dist/weixin/accounts.js.map +1 -0
  78. package/dist/weixin/api.d.ts +75 -0
  79. package/dist/weixin/api.js +191 -0
  80. package/dist/weixin/api.js.map +1 -0
  81. package/dist/weixin/login.d.ts +29 -0
  82. package/dist/weixin/login.js +100 -0
  83. package/dist/weixin/login.js.map +1 -0
  84. package/dist/weixin/media.d.ts +32 -0
  85. package/dist/weixin/media.js +266 -0
  86. package/dist/weixin/media.js.map +1 -0
  87. package/dist/weixin/messages.d.ts +24 -0
  88. package/dist/weixin/messages.js +87 -0
  89. package/dist/weixin/messages.js.map +1 -0
  90. package/dist/weixin/monitor.d.ts +22 -0
  91. package/dist/weixin/monitor.js +110 -0
  92. package/dist/weixin/monitor.js.map +1 -0
  93. package/package.json +61 -0
@@ -0,0 +1,514 @@
1
+ import { spawn } from "node:child_process";
2
+ import readline from "node:readline";
3
+ import { resolveCodexCommand } from "./exec-runner.js";
4
+ export class AppServerCodexRunner {
5
+ options;
6
+ child;
7
+ lines;
8
+ connectPromise;
9
+ initialized = false;
10
+ closed = false;
11
+ nextId = 1;
12
+ stderr = "";
13
+ pending = new Map();
14
+ activeTurns = new Map();
15
+ turnWaiters = new Map();
16
+ turnEvents = new Map();
17
+ turnTexts = new Map();
18
+ completedTurns = new Map();
19
+ runtimeInfoByThread = new Map();
20
+ modelOptions;
21
+ constructor(options = {}) {
22
+ this.options = options;
23
+ }
24
+ async run(input) {
25
+ await this.ensureConnected();
26
+ const threadResponse = await this.request(input.threadId ? "thread/resume" : "thread/start", compactObject({
27
+ ...(input.threadId ? { threadId: input.threadId } : {}),
28
+ cwd: input.cwd,
29
+ model: input.model,
30
+ approvalPolicy: "never"
31
+ }));
32
+ const thread = threadResponse.thread;
33
+ const threadId = typeof thread?.id === "string" ? thread.id : input.threadId;
34
+ if (!threadId) {
35
+ throw new Error("Codex app-server did not return a thread id");
36
+ }
37
+ this.runtimeInfoByThread.set(threadId, runtimeInfoFromThreadResponse(threadResponse));
38
+ const turnResponse = await this.request("turn/start", compactObject({
39
+ threadId,
40
+ input: [{ type: "text", text: input.prompt, text_elements: [] }],
41
+ cwd: input.cwd,
42
+ approvalPolicy: "never",
43
+ model: input.model,
44
+ effort: input.effort
45
+ }));
46
+ const turn = turnResponse.turn;
47
+ const turnId = typeof turn?.id === "string" ? turn.id : undefined;
48
+ if (!turnId) {
49
+ throw new Error("Codex app-server did not return a turn id");
50
+ }
51
+ this.activeTurns.set(threadId, turnId);
52
+ return this.waitForTurn(threadId, turnId);
53
+ }
54
+ async listSessions() {
55
+ await this.ensureConnected();
56
+ return this.request("thread/list", {});
57
+ }
58
+ async getHistory(threadId) {
59
+ await this.ensureConnected();
60
+ const response = await this.request("thread/read", { threadId, includeTurns: true });
61
+ const thread = response.thread;
62
+ return parseThreadHistory(thread);
63
+ }
64
+ async getRuntimeInfo(cwd, threadId) {
65
+ const active = threadId ? this.runtimeInfoByThread.get(threadId) : undefined;
66
+ if (active?.model || active?.effort) {
67
+ return active;
68
+ }
69
+ await this.ensureConnected();
70
+ const response = await this.request("config/read", { cwd, includeLayers: false });
71
+ const config = response.config;
72
+ return compactRuntimeInfo({
73
+ model: config?.model,
74
+ effort: config?.model_reasoning_effort,
75
+ provider: config?.model_provider ?? config?.modelProvider
76
+ });
77
+ }
78
+ async listModels() {
79
+ if (this.modelOptions) {
80
+ return structuredClone(this.modelOptions);
81
+ }
82
+ await this.ensureConnected();
83
+ const models = [];
84
+ const seenCursors = new Set();
85
+ let cursor;
86
+ do {
87
+ const response = await this.request("model/list", compactObject({
88
+ cursor,
89
+ includeHidden: false,
90
+ limit: 100
91
+ }));
92
+ const data = Array.isArray(response.data) ? response.data : [];
93
+ for (const item of data) {
94
+ const option = parseModelOption(item);
95
+ if (option && !models.some((candidate) => candidate.model === option.model)) {
96
+ models.push(option);
97
+ }
98
+ }
99
+ const nextCursor = typeof response.nextCursor === "string" && response.nextCursor
100
+ ? response.nextCursor
101
+ : undefined;
102
+ if (!nextCursor || seenCursors.has(nextCursor))
103
+ break;
104
+ seenCursors.add(nextCursor);
105
+ cursor = nextCursor;
106
+ } while (cursor);
107
+ this.modelOptions = models;
108
+ return structuredClone(models);
109
+ }
110
+ async stop(threadId) {
111
+ if (!this.initialized || !this.child || this.child.exitCode !== null) {
112
+ return;
113
+ }
114
+ const target = threadId && this.activeTurns.has(threadId)
115
+ ? { threadId, turnId: this.activeTurns.get(threadId) }
116
+ : Array.from(this.activeTurns.entries(), ([activeThreadId, turnId]) => ({
117
+ threadId: activeThreadId,
118
+ turnId
119
+ })).at(-1);
120
+ if (!target) {
121
+ return;
122
+ }
123
+ await this.request("turn/interrupt", target);
124
+ }
125
+ close() {
126
+ this.closed = true;
127
+ this.failTransport(new Error("Codex app-server runner closed"), true);
128
+ }
129
+ async ensureConnected() {
130
+ if (this.closed) {
131
+ throw new Error("Codex app-server runner is closed");
132
+ }
133
+ if (this.initialized && this.child?.exitCode === null && !this.child.stdin.destroyed) {
134
+ return;
135
+ }
136
+ if (!this.connectPromise) {
137
+ this.connectPromise = this.startAppServer().finally(() => {
138
+ this.connectPromise = undefined;
139
+ });
140
+ }
141
+ await this.connectPromise;
142
+ }
143
+ async startAppServer() {
144
+ const command = resolveCodexCommand(this.options.codexBin ?? "codex");
145
+ const child = spawn(command.command, [...command.argsPrefix, "app-server", "--stdio"], {
146
+ stdio: ["pipe", "pipe", "pipe"],
147
+ shell: false
148
+ });
149
+ this.child = child;
150
+ this.stderr = "";
151
+ this.lines = readline.createInterface({ input: child.stdout });
152
+ this.lines.on("line", (line) => this.handleMessage(line));
153
+ child.stderr.on("data", (chunk) => {
154
+ this.stderr = `${this.stderr}${chunk.toString("utf8")}`.slice(-20_000);
155
+ });
156
+ child.once("error", (error) => this.handleChildFailure(child, error));
157
+ child.once("exit", (code, signal) => {
158
+ const detail = this.stderr.trim();
159
+ const suffix = detail ? `: ${detail}` : "";
160
+ this.handleChildFailure(child, new Error(`Codex app-server exited with code ${code ?? "unknown"}${signal ? ` (${signal})` : ""}${suffix}`));
161
+ });
162
+ try {
163
+ await this.request("initialize", {
164
+ clientInfo: {
165
+ name: "codex-weixin",
166
+ title: "Codex Weixin",
167
+ version: "0.2.0"
168
+ },
169
+ capabilities: {
170
+ experimentalApi: false,
171
+ requestAttestation: false
172
+ }
173
+ }, Math.min(this.options.requestTimeoutMs ?? 600_000, 15_000));
174
+ this.notify("initialized", {});
175
+ this.initialized = true;
176
+ }
177
+ catch (error) {
178
+ this.failTransport(error instanceof Error ? error : new Error(String(error)), true);
179
+ throw error;
180
+ }
181
+ }
182
+ request(method, params, timeoutMs = this.options.requestTimeoutMs ?? 600_000) {
183
+ const id = this.nextId++;
184
+ return new Promise((resolve, reject) => {
185
+ const timer = setTimeout(() => {
186
+ const error = new Error(`app-server request ${method} timed out after ${timeoutMs}ms`);
187
+ this.pending.delete(id);
188
+ reject(error);
189
+ this.failTransport(error, true);
190
+ }, timeoutMs);
191
+ this.pending.set(id, { method, resolve, reject, timer });
192
+ try {
193
+ this.send({ id, method, params });
194
+ }
195
+ catch (error) {
196
+ clearTimeout(timer);
197
+ this.pending.delete(id);
198
+ reject(error);
199
+ }
200
+ });
201
+ }
202
+ notify(method, params) {
203
+ this.send({ method, params });
204
+ }
205
+ send(message) {
206
+ if (!this.child || this.child.exitCode !== null || this.child.stdin.destroyed) {
207
+ throw new Error("Codex app-server stdio transport is not connected");
208
+ }
209
+ this.child.stdin.write(`${JSON.stringify(message)}\n`);
210
+ }
211
+ handleMessage(raw) {
212
+ let message;
213
+ try {
214
+ message = JSON.parse(raw);
215
+ }
216
+ catch {
217
+ return;
218
+ }
219
+ if (message.method && message.id !== undefined) {
220
+ this.handleServerRequest(message);
221
+ return;
222
+ }
223
+ if (message.method) {
224
+ this.handleNotification(message.method, message.params ?? {}, raw);
225
+ return;
226
+ }
227
+ if (message.id === undefined) {
228
+ return;
229
+ }
230
+ const pending = this.pending.get(message.id);
231
+ if (!pending) {
232
+ return;
233
+ }
234
+ this.pending.delete(message.id);
235
+ clearTimeout(pending.timer);
236
+ if (message.error) {
237
+ const code = message.error.code === undefined ? "" : ` (${message.error.code})`;
238
+ pending.reject(new Error(`app-server ${pending.method} failed${code}: ${message.error.message ?? "unknown error"}`));
239
+ }
240
+ else {
241
+ pending.resolve(message.result);
242
+ }
243
+ }
244
+ handleNotification(method, params, raw) {
245
+ if (method === "item/completed") {
246
+ const threadId = typeof params.threadId === "string" ? params.threadId : undefined;
247
+ const turnId = typeof params.turnId === "string" ? params.turnId : undefined;
248
+ if (!threadId || !turnId) {
249
+ return;
250
+ }
251
+ const key = turnKey(threadId, turnId);
252
+ this.appendTurnEvent(key, raw);
253
+ const item = params.item;
254
+ if (item?.type === "agentMessage" && typeof item.text === "string") {
255
+ this.turnTexts.set(key, item.text);
256
+ }
257
+ return;
258
+ }
259
+ if (method !== "turn/completed") {
260
+ return;
261
+ }
262
+ const threadId = typeof params.threadId === "string" ? params.threadId : undefined;
263
+ const turn = params.turn;
264
+ const turnId = typeof turn?.id === "string" ? turn.id : undefined;
265
+ if (!threadId || !turnId) {
266
+ return;
267
+ }
268
+ const key = turnKey(threadId, turnId);
269
+ this.appendTurnEvent(key, raw);
270
+ const status = typeof turn?.status === "string" ? turn.status : "completed";
271
+ const errorValue = turn?.error;
272
+ const completion = {
273
+ status,
274
+ text: this.turnTexts.get(key) ?? extractAgentMessageFromTurn(turn),
275
+ raw: (this.turnEvents.get(key) ?? []).join("\n"),
276
+ error: typeof errorValue?.message === "string" ? errorValue.message : undefined
277
+ };
278
+ this.activeTurns.delete(threadId);
279
+ const waiter = this.turnWaiters.get(key);
280
+ if (!waiter) {
281
+ this.completedTurns.set(key, completion);
282
+ return;
283
+ }
284
+ this.turnWaiters.delete(key);
285
+ clearTimeout(waiter.timer);
286
+ this.finishTurn(threadId, key, completion, waiter.resolve, waiter.reject);
287
+ }
288
+ waitForTurn(threadId, turnId) {
289
+ const key = turnKey(threadId, turnId);
290
+ const completed = this.completedTurns.get(key);
291
+ if (completed) {
292
+ this.completedTurns.delete(key);
293
+ return new Promise((resolve, reject) => {
294
+ this.finishTurn(threadId, key, completed, resolve, reject);
295
+ });
296
+ }
297
+ const timeoutMs = this.options.requestTimeoutMs ?? 600_000;
298
+ return new Promise((resolve, reject) => {
299
+ const timer = setTimeout(() => {
300
+ this.turnWaiters.delete(key);
301
+ const error = new Error(`app-server turn timed out after ${timeoutMs}ms`);
302
+ reject(error);
303
+ this.failTransport(error, true);
304
+ }, timeoutMs);
305
+ this.turnWaiters.set(key, { resolve, reject, timer });
306
+ });
307
+ }
308
+ finishTurn(threadId, key, completion, resolve, reject) {
309
+ this.turnEvents.delete(key);
310
+ this.turnTexts.delete(key);
311
+ if (completion.status === "completed") {
312
+ resolve({ text: completion.text, threadId, raw: completion.raw });
313
+ return;
314
+ }
315
+ if (completion.status === "interrupted") {
316
+ reject(new Error("Codex app-server turn was interrupted"));
317
+ return;
318
+ }
319
+ reject(new Error(completion.error ?? `Codex app-server turn ended with status ${completion.status}`));
320
+ }
321
+ appendTurnEvent(key, raw) {
322
+ const events = this.turnEvents.get(key) ?? [];
323
+ events.push(raw);
324
+ this.turnEvents.set(key, events);
325
+ }
326
+ handleServerRequest(message) {
327
+ const id = message.id;
328
+ switch (message.method) {
329
+ case "item/commandExecution/requestApproval":
330
+ case "item/fileChange/requestApproval":
331
+ this.send({ id, result: { decision: "decline" } });
332
+ return;
333
+ case "execCommandApproval":
334
+ case "applyPatchApproval":
335
+ this.send({ id, result: { decision: "denied" } });
336
+ return;
337
+ case "item/tool/requestUserInput":
338
+ this.send({ id, result: { answers: {} } });
339
+ return;
340
+ case "mcpServer/elicitation/request":
341
+ this.send({ id, result: { action: "cancel", content: null, _meta: null } });
342
+ return;
343
+ case "item/permissions/requestApproval":
344
+ this.send({ id, result: { permissions: {}, scope: "turn" } });
345
+ return;
346
+ case "item/tool/call":
347
+ this.send({
348
+ id,
349
+ result: {
350
+ contentItems: [{ type: "inputText", text: "Dynamic tools are not available in codex-weixin." }],
351
+ success: false
352
+ }
353
+ });
354
+ return;
355
+ case "currentTime/read":
356
+ this.send({ id, result: { currentTimeAt: Math.floor(Date.now() / 1_000) } });
357
+ return;
358
+ default:
359
+ this.send({
360
+ id,
361
+ error: { code: -32601, message: `Unsupported app-server request: ${message.method ?? "unknown"}` }
362
+ });
363
+ }
364
+ }
365
+ handleChildFailure(child, error) {
366
+ if (this.child !== child) {
367
+ return;
368
+ }
369
+ this.failTransport(error, false);
370
+ }
371
+ failTransport(error, kill) {
372
+ const child = this.child;
373
+ this.child = undefined;
374
+ this.initialized = false;
375
+ this.lines?.close();
376
+ this.lines = undefined;
377
+ if (kill && child?.exitCode === null) {
378
+ child.kill();
379
+ }
380
+ for (const [id, pending] of this.pending.entries()) {
381
+ this.pending.delete(id);
382
+ clearTimeout(pending.timer);
383
+ pending.reject(error);
384
+ }
385
+ for (const [key, waiter] of this.turnWaiters.entries()) {
386
+ this.turnWaiters.delete(key);
387
+ clearTimeout(waiter.timer);
388
+ waiter.reject(error);
389
+ }
390
+ this.activeTurns.clear();
391
+ this.turnEvents.clear();
392
+ this.turnTexts.clear();
393
+ this.completedTurns.clear();
394
+ this.runtimeInfoByThread.clear();
395
+ this.modelOptions = undefined;
396
+ }
397
+ }
398
+ function parseModelOption(value) {
399
+ const model = value;
400
+ const modelId = typeof model.model === "string" && model.model
401
+ ? model.model
402
+ : typeof model.id === "string" ? model.id : "";
403
+ if (!modelId || model.hidden === true)
404
+ return undefined;
405
+ const efforts = Array.isArray(model.supportedReasoningEfforts)
406
+ ? model.supportedReasoningEfforts.flatMap((value) => {
407
+ const effort = value;
408
+ return typeof effort.reasoningEffort === "string" && effort.reasoningEffort
409
+ ? [{
410
+ effort: effort.reasoningEffort,
411
+ description: typeof effort.description === "string" ? effort.description : ""
412
+ }]
413
+ : [];
414
+ })
415
+ : [];
416
+ return {
417
+ model: modelId,
418
+ displayName: typeof model.displayName === "string" && model.displayName ? model.displayName : modelId,
419
+ description: typeof model.description === "string" ? model.description : "",
420
+ isDefault: model.isDefault === true,
421
+ ...(typeof model.defaultReasoningEffort === "string" && model.defaultReasoningEffort
422
+ ? { defaultEffort: model.defaultReasoningEffort }
423
+ : {}),
424
+ supportedEfforts: efforts
425
+ };
426
+ }
427
+ function runtimeInfoFromThreadResponse(response) {
428
+ return compactRuntimeInfo({
429
+ model: response.model,
430
+ effort: response.reasoningEffort,
431
+ provider: response.modelProvider ?? response.model_provider
432
+ });
433
+ }
434
+ function compactRuntimeInfo(input) {
435
+ return {
436
+ ...(typeof input.model === "string" && input.model ? { model: input.model } : {}),
437
+ ...(typeof input.effort === "string" && input.effort ? { effort: input.effort } : {}),
438
+ ...(typeof input.provider === "string" && input.provider ? { provider: input.provider } : {})
439
+ };
440
+ }
441
+ function compactObject(input) {
442
+ return Object.fromEntries(Object.entries(input).filter(([, value]) => value !== undefined));
443
+ }
444
+ function turnKey(threadId, turnId) {
445
+ return `${threadId}\u0000${turnId}`;
446
+ }
447
+ function extractAgentMessageFromTurn(turn) {
448
+ const items = Array.isArray(turn?.items) ? turn.items : [];
449
+ for (let index = items.length - 1; index >= 0; index -= 1) {
450
+ const item = items[index];
451
+ if (item?.type === "agentMessage" && typeof item.text === "string") {
452
+ return item.text;
453
+ }
454
+ }
455
+ return "";
456
+ }
457
+ export function parseThreadHistory(thread) {
458
+ const turns = Array.isArray(thread?.turns) ? thread.turns : [];
459
+ const messages = [];
460
+ for (const rawTurn of turns) {
461
+ const turn = rawTurn;
462
+ const items = Array.isArray(turn.items) ? turn.items : [];
463
+ const userCreatedAt = unixSecondsToIso(turn.startedAt);
464
+ const assistantCreatedAt = unixSecondsToIso(turn.completedAt ?? turn.startedAt);
465
+ for (const rawItem of items) {
466
+ const item = rawItem;
467
+ const id = typeof item.id === "string" ? item.id : `${String(turn.id ?? "turn")}:${messages.length}`;
468
+ if (item.type === "userMessage") {
469
+ const text = extractUserMessageText(item.content);
470
+ if (text) {
471
+ messages.push({ id, role: "user", text, ...(userCreatedAt ? { createdAt: userCreatedAt } : {}) });
472
+ }
473
+ continue;
474
+ }
475
+ if (item.type === "agentMessage"
476
+ && item.phase !== "commentary"
477
+ && typeof item.text === "string"
478
+ && item.text.trim()) {
479
+ messages.push({
480
+ id,
481
+ role: "assistant",
482
+ text: item.text.trim(),
483
+ ...(assistantCreatedAt ? { createdAt: assistantCreatedAt } : {})
484
+ });
485
+ }
486
+ }
487
+ }
488
+ return messages;
489
+ }
490
+ function extractUserMessageText(value) {
491
+ if (!Array.isArray(value)) {
492
+ return "";
493
+ }
494
+ return value.map((raw) => {
495
+ const item = raw;
496
+ if (item.type === "text" && typeof item.text === "string") {
497
+ return item.text;
498
+ }
499
+ if (item.type === "localImage" && typeof item.path === "string") {
500
+ return `[本机图片: ${item.path}]`;
501
+ }
502
+ if (item.type === "image" && typeof item.url === "string") {
503
+ return `[图片: ${item.url}]`;
504
+ }
505
+ return "";
506
+ }).filter(Boolean).join("\n").trim();
507
+ }
508
+ function unixSecondsToIso(value) {
509
+ if (typeof value !== "number" || !Number.isFinite(value)) {
510
+ return undefined;
511
+ }
512
+ return new Date(value * 1_000).toISOString();
513
+ }
514
+ //# sourceMappingURL=app-server-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-server-runner.js","sourceRoot":"","sources":["../../src/codex/app-server-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { CodexExecSandbox } from "./sandbox.js";
2
+ export type BuildCodexExecArgsInput = {
3
+ prompt: string;
4
+ cwd: string;
5
+ threadId?: string;
6
+ sandbox?: CodexExecSandbox;
7
+ };
8
+ export declare function buildCodexExecArgs(input: BuildCodexExecArgsInput): string[];
9
+ export type CodexExecRunnerOptions = {
10
+ codexBin?: string;
11
+ sandbox?: CodexExecSandbox;
12
+ timeoutMs?: number;
13
+ };
14
+ export type CodexRunResult = {
15
+ text: string;
16
+ threadId?: string;
17
+ raw: string;
18
+ };
19
+ export declare class CodexExecRunner {
20
+ private readonly options;
21
+ private readonly activeRuns;
22
+ constructor(options?: CodexExecRunnerOptions);
23
+ run(input: BuildCodexExecArgsInput): Promise<CodexRunResult>;
24
+ stop(threadId?: string): Promise<void>;
25
+ close(): void;
26
+ }
27
+ export declare function formatCodexExecFailure(code: number | null, stderr: string): Error;
28
+ export declare function resolveCodexCommand(codexBin: string): {
29
+ command: string;
30
+ argsPrefix: string[];
31
+ };
32
+ export declare function parseCodexExecOutput(raw: string): {
33
+ text: string;
34
+ threadId?: string;
35
+ };
36
+ export declare function extractFinalText(raw: string): string;