tellrun 1.0.1 → 1.1.2

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.
@@ -1,13 +1,18 @@
1
1
  import { execFile, spawn } from "node:child_process";
2
- import { delimiter, dirname } from "node:path";
2
+ import { existsSync, readFileSync } from "node:fs";
3
+ import { connect } from "node:net";
4
+ import { homedir } from "node:os";
5
+ import { delimiter, dirname, join } from "node:path";
3
6
  import { promisify } from "node:util";
7
+ import { createJSONRPCErrorResponse, createJSONRPCSuccessResponse, JSONRPCClient, JSONRPCErrorException, } from "json-rpc-2.0";
8
+ import WebSocket from "ws";
4
9
  import { z } from "zod";
5
10
  /** 由 Codex 0.165.0 的 generate-ts 核对;只校验实际消费的协议字段。 */
6
11
  const turnSchema = z.object({
7
12
  id: z.string().min(1),
8
13
  status: z.enum(["inProgress", "completed", "failed", "interrupted"]),
9
14
  });
10
- /** 每次任务使用独立 app-server 连接,续聊使用已持久化的 thread ID。 */
15
+ /** 优先连接本机后台服务,否则启动独立进程;续聊使用已持久化的 thread ID。 */
11
16
  export async function createCodexAgent(command = "codex") {
12
17
  /** 保留运行时、认证和代理环境,不向子进程传入 Telegram 凭据。 */
13
18
  const env = Object.fromEntries(Object.entries(process.env).filter(([key]) => /^(PATH|HOME|USER|LOGNAME|SHELL|LANG|LC_.*|TERM|TMPDIR|TEMP|TMP|SYSTEMROOT|WINDIR|CODEX_HOME|OPENAI_API_KEY|OPENAI_BASE_URL|HTTP_PROXY|HTTPS_PROXY|ALL_PROXY|NO_PROXY|http_proxy|https_proxy|all_proxy|no_proxy|SSL_CERT_FILE|SSL_CERT_DIR)$/.test(key)));
@@ -19,28 +24,47 @@ export async function createCodexAgent(command = "codex") {
19
24
  env,
20
25
  });
21
26
  if (!/^codex-cli \S+$/.test(stdout.trim()))
22
- throw new Error("Codex CLI 返回了无法识别的版本信息");
27
+ throw new Error("Unrecognized Codex CLI version.");
23
28
  let active;
29
+ /** 只绑定当前任务的连接,不能把迟到输入送入下一轮或其他客户端的轮次。 */
30
+ let steer;
24
31
  return {
25
32
  name: "Codex",
26
33
  version: stdout.trim().replace(/^codex-cli /, ""),
27
34
  async run(input) {
28
35
  if (active)
29
- throw new Error("Codex 已有任务正在执行");
36
+ throw new Error("Codex is already running a task.");
30
37
  const controller = new AbortController();
31
38
  active = controller;
32
- const child = spawn(command, ["app-server"], {
33
- cwd: input.cwd,
34
- env,
35
- detached: process.platform !== "win32",
36
- stdio: ["pipe", "pipe", "ignore"],
37
- });
39
+ /** 后台服务会保留空闲会话的写锁,复用其连接才能立即恢复同一会话。 */
40
+ const socketPath = join(env.CODEX_HOME ?? join(homedir(), ".codex"), "app-server-control", "app-server-control.sock");
41
+ const socket = process.platform !== "win32" && existsSync(socketPath)
42
+ ? await new Promise((resolve) => {
43
+ const connection = new WebSocket("ws://localhost", {
44
+ createConnection: () => connect(socketPath),
45
+ handshakeTimeout: 5_000,
46
+ maxPayload: 8_000_000,
47
+ });
48
+ connection.once("open", () => resolve(connection));
49
+ connection.once("error", () => resolve(undefined));
50
+ })
51
+ : undefined;
52
+ const child = socket
53
+ ? undefined
54
+ : spawn(command, ["app-server"], {
55
+ cwd: input.cwd,
56
+ env,
57
+ detached: process.platform !== "win32",
58
+ stdio: ["pipe", "pipe", "ignore"],
59
+ });
38
60
  const closed = Promise.withResolvers();
39
61
  const completed = Promise.withResolvers();
40
- const pending = new Map();
62
+ /** 库管理请求关联和超时;Codex 线上消息省略 jsonrpc 字段。 */
63
+ const client = new JSONRPCClient(({ id, method, params }) => write({ id, method, params }));
41
64
  const messages = new Map();
42
- let serial = 0;
43
65
  let buffer = "";
66
+ /** turn/start 响应前的事件暂存,收到当前 turn ID 后再处理,避免混入其他客户端事件。 */
67
+ let earlyMessages = "";
44
68
  let sessionId;
45
69
  let runId;
46
70
  let dispatched = false;
@@ -53,9 +77,21 @@ export async function createCodexAgent(command = "codex") {
53
77
  settled = true;
54
78
  completed.resolve(result);
55
79
  }
56
- /** POSIX 下同时结束受管理进程组,避免切换任务后遗留旧命令。 */
80
+ /** 增量与完整消息共用输出上限;只推送回复文本,不推送思考或工具原始输出。 */
81
+ function publishText(text) {
82
+ if ([...messages.values()].reduce((sum, item) => sum + item.text.length, 0) > 256_000) {
83
+ fail("Codex output limit exceeded. Task interrupted; check the local session.");
84
+ return;
85
+ }
86
+ input.onText(text);
87
+ }
88
+ /** 共享后台仅断开自己的连接;独立进程按进程组清理。 */
57
89
  function terminate(signal) {
58
- if (!child.pid)
90
+ if (socket) {
91
+ socket.terminate();
92
+ return;
93
+ }
94
+ if (!child?.pid)
59
95
  return;
60
96
  try {
61
97
  if (process.platform === "win32")
@@ -67,46 +103,68 @@ export async function createCodexAgent(command = "codex") {
67
103
  if (!(error instanceof Error && "code" in error && error.code === "ESRCH")) {
68
104
  finish({
69
105
  status: "interrupted",
70
- text: "无法确认 Codex 子进程已停止,请检查本地进程。",
106
+ text: "Codex stop unconfirmed. Check local processes.",
71
107
  });
72
108
  }
73
109
  }
74
110
  }
75
- /** 连接结束时释放所有 RPC 等待,取消初始化也不必等待请求超时。 */
76
- function rejectPending(text) {
77
- for (const item of pending.values()) {
78
- clearTimeout(item.timer);
79
- item.reject(new Error(text));
80
- }
81
- pending.clear();
82
- }
83
111
  /** 通信故障不等于执行失败;保留不确定状态并结束当前连接。 */
84
112
  function fail(text) {
85
113
  if (settled)
86
114
  return;
87
115
  finish({ status: "interrupted", text });
88
- rejectPending(text);
116
+ /** 共享服务不会随连接退出;仅中断已经确认归属本次任务的 turn。 */
117
+ if (socket?.readyState === WebSocket.OPEN && sessionId && runId)
118
+ void request("turn/interrupt", { threadId: sessionId, turnId: runId }).catch(() => { });
119
+ client.rejectAllPendingRequests(text);
89
120
  controller.abort();
90
121
  }
91
- /** 请求按 ID 关联且有超时;一次仅有一个业务请求及一个中断请求在途。 */
92
- function request(method, params) {
122
+ /** 请求、通知和交互应答共用发送入口,适配 JSONL 与 WebSocket 帧。 */
123
+ function write(message) {
124
+ try {
125
+ if (socket)
126
+ socket.send(JSON.stringify(message), (error) => {
127
+ if (error)
128
+ fail("Codex connection write failed. Task status unknown.");
129
+ });
130
+ else
131
+ child?.stdin.write(`${JSON.stringify(message)}\n`, (error) => {
132
+ if (error)
133
+ fail("Codex connection write failed. Task status unknown.");
134
+ });
135
+ }
136
+ catch {
137
+ fail("Codex connection write failed. Task status unknown.");
138
+ }
139
+ }
140
+ /** 超时仍终止任务;区分服务端拒绝与连接故障,保留补充输入的不确定状态。 */
141
+ async function request(method, params) {
93
142
  if (controller.signal.aborted && method !== "turn/interrupt")
94
- return Promise.reject(new Error("任务已停止"));
95
- return new Promise((resolve, reject) => {
96
- const id = ++serial;
97
- pending.set(id, {
98
- resolve,
99
- reject,
100
- method,
101
- timer: setTimeout(() => fail(`Codex ${method} 请求超时,未自动重试。`), 30_000),
102
- });
103
- child.stdin.write(`${JSON.stringify({ id, method, params })}\n`, (error) => {
104
- if (error)
105
- fail("无法写入 Codex 连接,执行状态待确认。");
106
- });
107
- });
143
+ throw new Error("Task stopped.");
144
+ try {
145
+ return await client
146
+ .timeout(30_000, (id) => {
147
+ fail(`Codex ${method} timed out. Not retried.`);
148
+ return createJSONRPCErrorResponse(id, 0, "Codex request timed out.");
149
+ })
150
+ .request(method, params);
151
+ }
152
+ catch (error) {
153
+ /** 只识别已知占用错误,避免把可能含敏感信息的原始错误转发到 IM。 */
154
+ if (error instanceof JSONRPCErrorException && error.data === "codex")
155
+ throw new Error(method === "thread/resume" &&
156
+ error.code === -32600 &&
157
+ error.message.includes("already has an active writer")
158
+ ? "Codex session locked by another process. Task not started; check local Codex connections."
159
+ : method === "turn/steer"
160
+ ? `Codex rejected input (${error.code}). The turn may have ended; resend to continue.`
161
+ : `Codex ${method} rejected (${error.code}). Check config and sign-in.`);
162
+ if (method === "turn/steer")
163
+ throw new Error("Codex input delivery unconfirmed. Not retried; check the session before resending.");
164
+ throw error;
165
+ }
108
166
  }
109
- /** 通知可能先于 turn/start 响应;只记录当前任务的首个 run ID。 */
167
+ /** 以 turn/start 响应确认本次任务的 run ID,其他客户端的事件不能改变归属。 */
110
168
  function recordRun(id) {
111
169
  if (runId && runId !== id)
112
170
  return false;
@@ -119,31 +177,30 @@ export async function createCodexAgent(command = "codex") {
119
177
  controller.signal.addEventListener("abort", () => {
120
178
  if (settled)
121
179
  return;
122
- stopTimer = setTimeout(() => fail("停止请求未得到确认,已结束 Codex 连接。请检查工作目录后发送 /resume。"), 5_000);
180
+ stopTimer = setTimeout(() => fail("Stop unconfirmed; Codex disconnected. Check the project before /resume."), 5_000);
123
181
  if (sessionId && runId) {
124
182
  void request("turn/interrupt", { threadId: sessionId, turnId: runId }).catch(() => terminate("SIGTERM"));
125
183
  }
126
184
  else
127
185
  terminate("SIGTERM");
128
186
  }, { once: true });
129
- child.on("error", () => fail("无法启动 Codex app-server,请检查 CLI 和工作目录。"));
130
- child.stdin.on("error", () => fail("Codex 输入连接已关闭,执行状态待确认。"));
131
- child.on("close", (code) => {
187
+ /** 两种传输共用关闭处理;连接中断不能当作共享后台中的任务已经停止。 */
188
+ function onClose(code) {
132
189
  closed.resolve();
133
190
  if (controller.signal.aborted && !dispatched)
134
- finish({ status: "cancelled", text: "任务在开始前已停止。" });
191
+ finish({ status: "cancelled", text: "Stopped before starting." });
135
192
  if (!settled)
136
- fail(`Codex 连接已退出(${code ?? "signal"}),请检查本机认证与运行环境。`);
193
+ fail(`Codex disconnected (${code ?? "signal"}). Check sign-in and local setup.`);
137
194
  else
138
- rejectPending("Codex 连接已关闭");
139
- });
140
- child.stdout.setEncoding("utf8");
141
- child.stdout.on("data", (chunk) => {
195
+ client.rejectAllPendingRequests("Codex connection closed.");
196
+ }
197
+ /** 两种传输与提前到达的通知共用协议处理,始终只消费当前任务的事件。 */
198
+ function onData(chunk) {
142
199
  if (settled)
143
200
  return;
144
201
  buffer += chunk;
145
202
  if (buffer.length > 8_000_000)
146
- return fail("Codex 协议缓冲超出限制,任务已中断。");
203
+ return fail("Codex buffer limit exceeded. Task interrupted.");
147
204
  const lines = buffer.split("\n");
148
205
  buffer = lines.pop() ?? "";
149
206
  for (const line of lines) {
@@ -156,26 +213,59 @@ export async function createCodexAgent(command = "codex") {
156
213
  method: z.string().optional(),
157
214
  params: z.unknown().optional(),
158
215
  result: z.unknown().optional(),
159
- error: z.object({ code: z.number() }).optional(),
216
+ error: z.object({ code: z.number(), message: z.string().optional() }).optional(),
160
217
  })
161
218
  .parse(JSON.parse(line));
219
+ if (message.method && !runId) {
220
+ if (dispatched) {
221
+ earlyMessages += `${line}\n`;
222
+ if (earlyMessages.length > 8_000_000)
223
+ return fail("Codex event limit exceeded. Task interrupted.");
224
+ }
225
+ continue;
226
+ }
162
227
  if (message.id !== undefined && message.method) {
228
+ /** 共享连接上的交互可能属于其他会话或轮次,不能替其他客户端拒绝。 */
229
+ const context = z
230
+ .object({ threadId: z.string(), turnId: z.string().optional() })
231
+ .safeParse(message.params);
232
+ if (!context.success ||
233
+ context.data.threadId !== sessionId ||
234
+ (context.data.turnId !== undefined && context.data.turnId !== runId))
235
+ continue;
163
236
  /** 暂未接入审批与结构化提问界面,明确拒绝并停止,不能静默批准。 */
164
- child.stdin.write(`${JSON.stringify({ id: message.id, error: { code: -32601, message: "This client does not support interactive requests yet" } })}\n`);
165
- fail("任务需要审批或补充输入,当前版本尚未接入该交互,已中断。请在本机处理后发送 /resume,或调整任务后重新提交。");
237
+ write({
238
+ id: message.id,
239
+ error: {
240
+ code: -32601,
241
+ message: "This client does not support interactive requests yet",
242
+ },
243
+ });
244
+ fail("Task interrupted: approvals and structured questions are unsupported. Handle locally, then /resume.");
166
245
  }
167
246
  else if (typeof message.id === "number") {
168
- const item = pending.get(message.id);
169
- if (!item)
247
+ /** 补齐库需要的协议字段;错误来源标记仅用于本地处理,不信任服务端 data。 */
248
+ client.receive(message.error
249
+ ? createJSONRPCErrorResponse(message.id, message.error.code, message.error.message ?? "", "codex")
250
+ : createJSONRPCSuccessResponse(message.id, message.result));
251
+ }
252
+ else if (message.method === "item/agentMessage/delta") {
253
+ const event = z
254
+ .object({
255
+ threadId: z.string(),
256
+ turnId: z.string(),
257
+ itemId: z.string(),
258
+ delta: z.string(),
259
+ })
260
+ .parse(message.params);
261
+ if (event.threadId !== sessionId || !recordRun(event.turnId))
170
262
  continue;
171
- clearTimeout(item.timer);
172
- pending.delete(message.id);
173
- if (message.error)
174
- item.reject(new Error(`Codex ${item.method} 请求被拒绝(${message.error.code})。请检查本机 Codex 配置与认证。`));
175
- else
176
- item.resolve(message.result);
263
+ const item = messages.get(event.itemId) ?? { text: "" };
264
+ item.text += event.delta;
265
+ messages.set(event.itemId, item);
266
+ publishText(item.text);
177
267
  }
178
- else if (message.method === "item/completed") {
268
+ else if (message.method === "item/started" || message.method === "item/completed") {
179
269
  const event = z
180
270
  .object({
181
271
  threadId: z.string(),
@@ -192,9 +282,7 @@ export async function createCodexAgent(command = "codex") {
192
282
  continue;
193
283
  if (event.item.type === "agentMessage" && event.item.text !== undefined) {
194
284
  messages.set(event.item.id, { text: event.item.text, phase: event.item.phase });
195
- if ([...messages.values()].reduce((sum, item) => sum + item.text.length, 0) > 256_000) {
196
- fail("Codex 文本输出超出限制,任务已中断;可在本机查看会话记录。");
197
- }
285
+ publishText(event.item.text);
198
286
  }
199
287
  }
200
288
  else if (message.method === "turn/started" || message.method === "turn/completed") {
@@ -217,35 +305,80 @@ export async function createCodexAgent(command = "codex") {
217
305
  .map((item) => item.text)
218
306
  .join("\n\n") ||
219
307
  (event.turn.status === "completed"
220
- ? "Codex 已完成,本轮没有文本输出。"
308
+ ? "Codex finished with no text output."
221
309
  : event.turn.status === "failed"
222
- ? "Codex 未能完成本轮任务,请检查本机认证、模型访问与网络。"
223
- : "任务已中断。已完成的文件修改不会自动撤销。"),
310
+ ? "Codex task failed. Check sign-in, model access, and network."
311
+ : "Task interrupted. File changes were not reverted."),
224
312
  });
225
313
  }
226
314
  }
227
315
  }
228
316
  catch {
229
- fail("Codex 协议响应或状态保存失败,任务已中断,请检查 CLI 版本与本地存储。");
317
+ fail("Codex response or state save failed. Task interrupted; check CLI version and storage.");
230
318
  }
231
319
  }
232
- });
320
+ }
321
+ child?.on("error", () => fail("Cannot start Codex app-server. Check CLI and working directory."));
322
+ child?.stdin.on("error", () => fail("Codex input closed. Task status unknown."));
323
+ child?.on("close", onClose);
324
+ child?.stdout.setEncoding("utf8");
325
+ child?.stdout.on("data", onData);
326
+ socket?.on("error", () => fail("Codex connection failed. Task status unknown."));
327
+ socket?.on("close", () => onClose(null));
328
+ socket?.on("message", (data) => onData(`${data.toString()}\n`));
329
+ steer = async (prompt) => {
330
+ if (!sessionId || !runId || settled || controller.signal.aborted)
331
+ throw new Error("Codex turn is not running. Input not sent; try again later.");
332
+ const response = z.object({ turnId: z.string() }).parse(await request("turn/steer", {
333
+ threadId: sessionId,
334
+ expectedTurnId: runId,
335
+ input: [{ type: "text", text: prompt, text_elements: [] }],
336
+ }));
337
+ if (response.turnId !== runId) {
338
+ fail("Codex input returned a different turn. Task status unknown.");
339
+ throw new Error("Codex input turn unconfirmed. Not retried; check the session.");
340
+ }
341
+ };
233
342
  try {
343
+ if (controller.signal.aborted)
344
+ return { status: "cancelled", text: "Stopped before starting." };
234
345
  await request("initialize", {
235
- clientInfo: { name: "tellrun", title: "Tellrun", version: "1.0.1" },
346
+ clientInfo: {
347
+ name: "tellrun",
348
+ title: "Tellrun",
349
+ /** 源码和编译产物都读取包版本,与 CLI 的版本显示保持一致。 */
350
+ version: JSON.parse(readFileSync(new URL("../../package.json", import.meta.url), "utf8")).version,
351
+ },
236
352
  capabilities: null,
237
353
  });
238
- child.stdin.write(`${JSON.stringify({ method: "initialized" })}\n`);
239
- const response = z.object({ thread: z.object({ id: z.string().min(1) }) }).parse(await request(input.sessionId ? "thread/resume" : "thread/start", {
354
+ write({ method: "initialized" });
355
+ if (socket && input.sessionId) {
356
+ /** 先查询共享会话,忙碌时不恢复配置、不追加输入,也不中断其他客户端任务。 */
357
+ const current = z
358
+ .object({ thread: z.object({ status: z.object({ type: z.string() }) }) })
359
+ .parse(await request("thread/read", { threadId: input.sessionId }));
360
+ if (!["idle", "notLoaded"].includes(current.thread.status.type))
361
+ throw new Error("Codex session busy or unavailable. Message not sent; wait until it is idle.");
362
+ }
363
+ const response = z
364
+ .object({
365
+ thread: z.object({
366
+ id: z.string().min(1),
367
+ status: z.object({ type: z.string() }).optional(),
368
+ }),
369
+ })
370
+ .parse(await request(input.sessionId ? "thread/resume" : "thread/start", {
240
371
  ...(input.sessionId ? { threadId: input.sessionId, excludeTurns: true } : {}),
241
372
  cwd: input.cwd,
242
373
  approvalPolicy: "on-request",
243
374
  sandbox: "workspace-write",
244
375
  }));
376
+ if (socket && response.thread.status?.type !== "idle")
377
+ throw new Error("Codex session busy. Message not sent; wait until it is idle.");
245
378
  sessionId = response.thread.id;
246
379
  input.onSession(sessionId);
247
380
  if (controller.signal.aborted)
248
- return { status: "cancelled", text: "任务在开始前已停止。" };
381
+ return { status: "cancelled", text: "Stopped before starting." };
249
382
  dispatched = true;
250
383
  const started = await Promise.race([
251
384
  request("turn/start", {
@@ -254,8 +387,13 @@ export async function createCodexAgent(command = "codex") {
254
387
  }),
255
388
  completed.promise.then(() => null),
256
389
  ]);
257
- if (started !== null)
390
+ if (started !== null && !settled) {
258
391
  recordRun(z.object({ turn: turnSchema }).parse(started).turn.id);
392
+ earlyMessages += buffer;
393
+ buffer = "";
394
+ onData(earlyMessages);
395
+ earlyMessages = "";
396
+ }
259
397
  return await completed.promise;
260
398
  }
261
399
  catch (error) {
@@ -264,16 +402,17 @@ export async function createCodexAgent(command = "codex") {
264
402
  status: dispatched ? "interrupted" : controller.signal.aborted ? "cancelled" : "failed",
265
403
  text: error instanceof Error && error.message.startsWith("Codex ")
266
404
  ? error.message
267
- : "Codex 任务未能正常完成,请检查本地运行环境。",
405
+ : "Codex task failed. Check the local setup.",
268
406
  });
269
407
  return await completed.promise;
270
408
  }
271
409
  finally {
410
+ steer = undefined;
272
411
  clearTimeout(stopTimer);
273
- rejectPending("Codex 连接已结束");
412
+ client.rejectAllPendingRequests("Codex connection closed.");
274
413
  terminate("SIGTERM");
275
414
  const force = setTimeout(() => terminate("SIGKILL"), 3_000);
276
- const deadline = setTimeout(() => closed.reject(new Error("无法确认 Codex 子进程退出,服务必须停止")), 8_000);
415
+ const deadline = setTimeout(() => closed.reject(new Error("Codex exit unconfirmed. Service must stop.")), 8_000);
277
416
  try {
278
417
  await closed.promise;
279
418
  terminate("SIGKILL");
@@ -285,6 +424,12 @@ export async function createCodexAgent(command = "codex") {
285
424
  }
286
425
  }
287
426
  },
427
+ /** 复用当前连接提交补充消息,由 expectedTurnId 防止误入其他轮次。 */
428
+ steer(prompt) {
429
+ if (!steer)
430
+ return Promise.reject(new Error("Codex has no active turn. Input not sent; resend to continue."));
431
+ return steer(prompt);
432
+ },
288
433
  /** 中断当前任务;run 会等待终态或子进程退出后才返回。 */
289
434
  stop() {
290
435
  active?.abort();
@@ -1 +1 @@
1
- {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/agents/codex.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/agents/codex.ts"],"names":[],"mappings":"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"}