shennian 0.1.35 → 0.2.4

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 (52) hide show
  1. package/dist/src/__tests__/agents-e2e.js +14 -5
  2. package/dist/src/__tests__/agents-e2e.js.map +1 -1
  3. package/dist/src/__tests__/codex-adapter.test.js +59 -2
  4. package/dist/src/__tests__/codex-adapter.test.js.map +1 -1
  5. package/dist/src/__tests__/e2e-relay.js +173 -29
  6. package/dist/src/__tests__/e2e-relay.js.map +1 -1
  7. package/dist/src/__tests__/fs-handler.test.d.ts +2 -0
  8. package/dist/src/__tests__/fs-handler.test.d.ts.map +1 -0
  9. package/dist/src/__tests__/fs-handler.test.js +19 -0
  10. package/dist/src/__tests__/fs-handler.test.js.map +1 -0
  11. package/dist/src/__tests__/model-switching.test.js +40 -1
  12. package/dist/src/__tests__/model-switching.test.js.map +1 -1
  13. package/dist/src/__tests__/native-fusion-parsers.test.js +39 -2
  14. package/dist/src/__tests__/native-fusion-parsers.test.js.map +1 -1
  15. package/dist/src/__tests__/session-manager.test.js +95 -2
  16. package/dist/src/__tests__/session-manager.test.js.map +1 -1
  17. package/dist/src/agents/codex.d.ts +18 -0
  18. package/dist/src/agents/codex.d.ts.map +1 -1
  19. package/dist/src/agents/codex.js +360 -10
  20. package/dist/src/agents/codex.js.map +1 -1
  21. package/dist/src/agents/model-registry/discovery.d.ts.map +1 -1
  22. package/dist/src/agents/model-registry/discovery.js +84 -1
  23. package/dist/src/agents/model-registry/discovery.js.map +1 -1
  24. package/dist/src/agents/model-registry/parsers.d.ts +1 -0
  25. package/dist/src/agents/model-registry/parsers.d.ts.map +1 -1
  26. package/dist/src/agents/model-registry/parsers.js +77 -0
  27. package/dist/src/agents/model-registry/parsers.js.map +1 -1
  28. package/dist/src/agents/model-registry.d.ts +2 -1
  29. package/dist/src/agents/model-registry.d.ts.map +1 -1
  30. package/dist/src/agents/model-registry.js +2 -1
  31. package/dist/src/agents/model-registry.js.map +1 -1
  32. package/dist/src/fs/handler.d.ts.map +1 -1
  33. package/dist/src/fs/handler.js +18 -0
  34. package/dist/src/fs/handler.js.map +1 -1
  35. package/dist/src/index.js +3 -1
  36. package/dist/src/index.js.map +1 -1
  37. package/dist/src/native-fusion/parsers.d.ts.map +1 -1
  38. package/dist/src/native-fusion/parsers.js +52 -5
  39. package/dist/src/native-fusion/parsers.js.map +1 -1
  40. package/dist/src/native-fusion/service.d.ts.map +1 -1
  41. package/dist/src/native-fusion/service.js +2 -5
  42. package/dist/src/native-fusion/service.js.map +1 -1
  43. package/dist/src/session/handlers/chat.d.ts.map +1 -1
  44. package/dist/src/session/handlers/chat.js +49 -7
  45. package/dist/src/session/handlers/chat.js.map +1 -1
  46. package/dist/src/session/handlers/fs.d.ts.map +1 -1
  47. package/dist/src/session/handlers/fs.js +32 -1
  48. package/dist/src/session/handlers/fs.js.map +1 -1
  49. package/dist/src/session/types.d.ts +6 -0
  50. package/dist/src/session/types.d.ts.map +1 -1
  51. package/dist/tsconfig.tsbuildinfo +1 -1
  52. package/package.json +1 -1
@@ -16,6 +16,14 @@ export class CodexAdapter extends AgentAdapter {
16
16
  textTail = '';
17
17
  terminalState = 'open';
18
18
  forceCloseTimer = null;
19
+ stderrBuf = '';
20
+ rpcSeq = 1;
21
+ pendingRequests = new Map();
22
+ appServerReady = null;
23
+ activeTurnId = null;
24
+ namedThread = false;
25
+ deltaItemIds = new Set();
26
+ lastTransientStatus = '';
19
27
  async start(_sessionId, workDir, agentSessionId) {
20
28
  this.workDir = workDir;
21
29
  this.seq = 0;
@@ -23,20 +31,38 @@ export class CodexAdapter extends AgentAdapter {
23
31
  this.agentSessionId = agentSessionId;
24
32
  }
25
33
  async send(text, modelId) {
26
- await this.killProcess();
34
+ if (this.activeTurnId) {
35
+ await this.killProcess();
36
+ }
37
+ const codexModelId = normalizeCodexModelId(modelId);
27
38
  this.runId = randomUUID();
28
39
  this.seq = 0;
29
40
  this.resetRunState();
30
- const modelArgs = modelId ? ['-m', modelId] : [];
31
- if (this.agentSessionId) {
32
- this.spawnCodex([...modelArgs, '--dangerously-bypass-approvals-and-sandbox', 'exec', 'resume', this.agentSessionId, '--json', '--skip-git-repo-check', text]);
33
- }
34
- else {
35
- this.spawnCodex([...modelArgs, '--dangerously-bypass-approvals-and-sandbox', 'exec', '--json', '--skip-git-repo-check', text]);
41
+ await this.ensureAppServer(codexModelId);
42
+ const threadId = this.agentSessionId;
43
+ if (!threadId)
44
+ throw new Error('codex app-server did not create a thread');
45
+ this.emitEvent({ state: 'start', agentSessionId: threadId });
46
+ if (!this.namedThread) {
47
+ await this.sendRpc('thread/name/set', {
48
+ threadId,
49
+ name: makeThreadTitle(text),
50
+ }).catch(() => { });
51
+ this.namedThread = true;
36
52
  }
53
+ const response = await this.sendRpc('turn/start', {
54
+ threadId,
55
+ input: [{ type: 'text', text, text_elements: [] }],
56
+ approvalPolicy: 'never',
57
+ sandboxPolicy: { type: 'dangerFullAccess' },
58
+ ...(codexModelId ? { model: codexModelId } : {}),
59
+ });
60
+ this.activeTurnId = response.turn?.id ?? null;
37
61
  }
38
62
  async resume(agentSessionId) {
63
+ await this.killProcess();
39
64
  this.agentSessionId = agentSessionId;
65
+ this.namedThread = true;
40
66
  this.resetTextState();
41
67
  }
42
68
  async stop() {
@@ -84,6 +110,258 @@ export class CodexAdapter extends AgentAdapter {
84
110
  }
85
111
  });
86
112
  }
113
+ spawnAppServer() {
114
+ const proc = spawn('codex', ['app-server', '--listen', 'stdio://'], {
115
+ cwd: this.workDir ?? undefined,
116
+ stdio: ['pipe', 'pipe', 'pipe'],
117
+ env: { ...process.env, NO_COLOR: '1' },
118
+ });
119
+ this.process = proc;
120
+ this.stderrBuf = '';
121
+ const rl = createInterface({ input: proc.stdout });
122
+ rl.on('line', (line) => {
123
+ if (!line.trim())
124
+ return;
125
+ let msg;
126
+ try {
127
+ msg = JSON.parse(line);
128
+ }
129
+ catch {
130
+ return;
131
+ }
132
+ this.handleAppServerMessage(msg);
133
+ });
134
+ proc.stderr?.on('data', (chunk) => {
135
+ this.stderrBuf += chunk.toString();
136
+ });
137
+ proc.on('close', (code) => {
138
+ if (this.process !== proc)
139
+ return;
140
+ const hadActiveTurn = this.activeTurnId != null;
141
+ this.process = null;
142
+ this.appServerReady = null;
143
+ this.activeTurnId = null;
144
+ this.rejectAllPending(new Error(normalizeCodexStderr(this.stderrBuf) || `codex app-server exited with code ${code}`));
145
+ if (this.terminalState === 'open' && hadActiveTurn) {
146
+ this.handleProcessClose(code, this.stderrBuf);
147
+ }
148
+ });
149
+ proc.on('error', (err) => {
150
+ if (this.process !== proc)
151
+ return;
152
+ this.process = null;
153
+ this.rejectAllPending(err);
154
+ if (err.code === 'ENOENT') {
155
+ this.emit('error', new Error('Command "codex" not found. Is OpenAI Codex CLI installed?'));
156
+ }
157
+ else {
158
+ this.emit('error', err);
159
+ }
160
+ });
161
+ }
162
+ async ensureAppServer(modelId) {
163
+ if (this.appServerReady)
164
+ return this.appServerReady;
165
+ this.spawnAppServer();
166
+ this.appServerReady = this.initializeAppServer(modelId).catch(async (error) => {
167
+ this.appServerReady = null;
168
+ await this.killProcess();
169
+ throw error;
170
+ });
171
+ return this.appServerReady;
172
+ }
173
+ async initializeAppServer(modelId) {
174
+ const codexModelId = normalizeCodexModelId(modelId);
175
+ await this.sendRpc('initialize', {
176
+ clientInfo: { name: 'shennian', title: 'Shennian', version: '0.0.0' },
177
+ capabilities: { experimentalApi: true },
178
+ });
179
+ if (this.agentSessionId) {
180
+ const response = await this.sendRpc('thread/resume', {
181
+ threadId: this.agentSessionId,
182
+ cwd: this.workDir,
183
+ approvalPolicy: 'never',
184
+ sandbox: 'danger-full-access',
185
+ persistExtendedHistory: true,
186
+ ...(codexModelId ? { model: codexModelId } : {}),
187
+ });
188
+ this.agentSessionId = response.thread?.id ?? this.agentSessionId;
189
+ this.namedThread = !!response.thread?.name;
190
+ return;
191
+ }
192
+ const response = await this.sendRpc('thread/start', {
193
+ cwd: this.workDir,
194
+ approvalPolicy: 'never',
195
+ sandbox: 'danger-full-access',
196
+ serviceName: 'Shennian',
197
+ experimentalRawEvents: false,
198
+ persistExtendedHistory: true,
199
+ ...(codexModelId ? { model: codexModelId } : {}),
200
+ });
201
+ const threadId = response.thread?.id;
202
+ if (!threadId)
203
+ throw new Error('codex app-server thread/start returned no thread id');
204
+ this.agentSessionId = threadId;
205
+ this.namedThread = !!response.thread?.name;
206
+ }
207
+ sendRpc(method, params, timeoutMs = 60_000) {
208
+ const proc = this.process;
209
+ if (!proc?.stdin)
210
+ return Promise.reject(new Error('codex app-server is not running'));
211
+ const id = this.rpcSeq++;
212
+ const payload = JSON.stringify({ id, method, params });
213
+ return new Promise((resolve, reject) => {
214
+ const timer = setTimeout(() => {
215
+ this.pendingRequests.delete(id);
216
+ reject(new Error(`codex app-server request timed out: ${method}`));
217
+ }, timeoutMs);
218
+ this.pendingRequests.set(id, { resolve, reject, timer });
219
+ proc.stdin.write(`${payload}\n`, (error) => {
220
+ if (!error)
221
+ return;
222
+ clearTimeout(timer);
223
+ this.pendingRequests.delete(id);
224
+ reject(error);
225
+ });
226
+ });
227
+ }
228
+ handleAppServerMessage(msg) {
229
+ if (msg.id != null) {
230
+ const pending = this.pendingRequests.get(msg.id);
231
+ if (pending) {
232
+ clearTimeout(pending.timer);
233
+ this.pendingRequests.delete(msg.id);
234
+ if (msg.error) {
235
+ pending.reject(new Error(msg.error.message || `codex app-server error ${msg.error.code ?? ''}`.trim()));
236
+ }
237
+ else {
238
+ pending.resolve(msg.result);
239
+ }
240
+ }
241
+ }
242
+ if (!msg.method)
243
+ return;
244
+ const params = msg.params ?? {};
245
+ switch (msg.method) {
246
+ case 'item/agentMessage/delta': {
247
+ const itemId = typeof params.itemId === 'string' ? params.itemId : '';
248
+ if (itemId)
249
+ this.deltaItemIds.add(itemId);
250
+ if (typeof params.delta === 'string')
251
+ this.emitText(params.delta);
252
+ break;
253
+ }
254
+ case 'item/completed':
255
+ this.handleAppServerCompletedItem(params);
256
+ break;
257
+ case 'thread/tokenUsage/updated':
258
+ this.handleAppServerUsage(params);
259
+ break;
260
+ case 'turn/completed': {
261
+ const turn = typeof params.turn === 'object' && params.turn !== null
262
+ ? params.turn
263
+ : null;
264
+ const turnId = typeof turn?.id === 'string' ? turn.id : null;
265
+ if (!this.activeTurnId || turnId === this.activeTurnId) {
266
+ this.activeTurnId = null;
267
+ this.emitFinalIfOpen();
268
+ }
269
+ break;
270
+ }
271
+ case 'error': {
272
+ const message = extractAppServerErrorMessage(params);
273
+ if (isTransientCodexErrorMessage(message)) {
274
+ this.emitTransientStatus(message);
275
+ return;
276
+ }
277
+ this.emitErrorIfOpen(message);
278
+ break;
279
+ }
280
+ }
281
+ }
282
+ handleAppServerCompletedItem(params) {
283
+ const item = typeof params.item === 'object' && params.item !== null
284
+ ? params.item
285
+ : null;
286
+ if (!item || typeof item.type !== 'string')
287
+ return;
288
+ switch (item.type) {
289
+ case 'agentMessage': {
290
+ const id = typeof item.id === 'string' ? item.id : '';
291
+ if (id && this.deltaItemIds.has(id))
292
+ return;
293
+ if (typeof item.text === 'string')
294
+ this.emitText(item.text, 'block');
295
+ break;
296
+ }
297
+ case 'commandExecution': {
298
+ const command = typeof item.command === 'string' ? item.command : '';
299
+ const output = typeof item.aggregatedOutput === 'string' ? item.aggregatedOutput : '';
300
+ if (command) {
301
+ this.emitEvent({ state: 'tool-call', name: 'command_execution', args: { command } });
302
+ }
303
+ this.emitEvent({
304
+ state: 'tool-result',
305
+ name: 'command_execution',
306
+ result: [output, item.exitCode != null ? `\n(exit ${item.exitCode})` : ''].join('').trim(),
307
+ });
308
+ break;
309
+ }
310
+ case 'mcpToolCall':
311
+ case 'dynamicToolCall': {
312
+ const tool = typeof item.tool === 'string' ? item.tool : item.type;
313
+ const args = typeof item.arguments === 'object' && item.arguments !== null
314
+ ? item.arguments
315
+ : {};
316
+ this.emitEvent({ state: 'tool-call', name: tool, args });
317
+ this.emitEvent({
318
+ state: 'tool-result',
319
+ name: tool,
320
+ result: safeStringify(item.error ?? item.result ?? item.contentItems ?? ''),
321
+ });
322
+ break;
323
+ }
324
+ case 'fileChange': {
325
+ const changes = Array.isArray(item.changes) ? item.changes : [];
326
+ const summary = changes
327
+ .map((change) => {
328
+ if (typeof change !== 'object' || change === null)
329
+ return '';
330
+ const c = change;
331
+ const path = typeof c.path === 'string' ? c.path : typeof c.file === 'string' ? c.file : '';
332
+ const kind = typeof c.kind === 'string' ? c.kind : typeof c.type === 'string' ? c.type : 'change';
333
+ return path ? `${kind}: ${path}` : '';
334
+ })
335
+ .filter(Boolean)
336
+ .join('\n');
337
+ if (summary)
338
+ this.emitText(summary, 'block');
339
+ break;
340
+ }
341
+ }
342
+ }
343
+ handleAppServerUsage(params) {
344
+ const tokenUsage = typeof params.tokenUsage === 'object' && params.tokenUsage !== null
345
+ ? params.tokenUsage
346
+ : null;
347
+ const last = typeof tokenUsage?.last === 'object' && tokenUsage.last !== null
348
+ ? tokenUsage.last
349
+ : null;
350
+ const total = typeof tokenUsage?.total === 'object' && tokenUsage.total !== null
351
+ ? tokenUsage.total
352
+ : null;
353
+ const usage = last ?? total;
354
+ if (!usage)
355
+ return;
356
+ const input = typeof usage.inputTokens === 'number' ? usage.inputTokens : undefined;
357
+ const output = typeof usage.outputTokens === 'number' ? usage.outputTokens : undefined;
358
+ if (input != null || output != null) {
359
+ this.pendingUsage = {
360
+ inputTokens: input ?? 0,
361
+ outputTokens: output ?? 0,
362
+ };
363
+ }
364
+ }
87
365
  handleCodexItemLine(obj) {
88
366
  const item = obj.item;
89
367
  if (!item?.type)
@@ -273,8 +551,12 @@ export class CodexAdapter extends AgentAdapter {
273
551
  }
274
552
  async killProcess() {
275
553
  const proc = this.process;
276
- if (!proc)
554
+ this.appServerReady = null;
555
+ this.activeTurnId = null;
556
+ if (!proc) {
557
+ this.rejectAllPending(new Error('codex app-server stopped'));
277
558
  return;
559
+ }
278
560
  this.process = null;
279
561
  this.clearForceCloseTimer();
280
562
  proc.kill('SIGTERM');
@@ -285,6 +567,14 @@ export class CodexAdapter extends AgentAdapter {
285
567
  resolve();
286
568
  }, 3000);
287
569
  });
570
+ this.rejectAllPending(new Error('codex app-server stopped'));
571
+ }
572
+ rejectAllPending(error) {
573
+ for (const [id, pending] of this.pendingRequests.entries()) {
574
+ clearTimeout(pending.timer);
575
+ pending.reject(error);
576
+ this.pendingRequests.delete(id);
577
+ }
288
578
  }
289
579
  handleProcessClose(code, stderrBuf) {
290
580
  const stderr = normalizeCodexStderr(stderrBuf);
@@ -311,21 +601,29 @@ export class CodexAdapter extends AgentAdapter {
311
601
  usage: this.pendingUsage,
312
602
  agentSessionId: this.agentSessionId ?? undefined,
313
603
  });
314
- this.scheduleProcessClose();
315
604
  }
316
605
  emitErrorIfOpen(message) {
317
606
  if (this.terminalState !== 'open')
318
607
  return;
319
608
  this.terminalState = 'error';
320
- this.emitEvent({ state: 'error', message });
609
+ this.emitEvent({ state: 'error', message: formatCodexErrorMessage(message) });
321
610
  this.scheduleProcessClose();
322
611
  }
323
612
  resetRunState() {
324
613
  this.pendingUsage = undefined;
325
614
  this.terminalState = 'open';
615
+ this.deltaItemIds.clear();
616
+ this.lastTransientStatus = '';
326
617
  this.clearForceCloseTimer();
327
618
  this.resetTextState();
328
619
  }
620
+ emitTransientStatus(message) {
621
+ const formatted = formatTransientCodexStatus(message);
622
+ if (!formatted || formatted === this.lastTransientStatus || this.terminalState !== 'open')
623
+ return;
624
+ this.lastTransientStatus = formatted;
625
+ this.emitEvent({ state: 'delta', text: `${formatted}\n`, thinking: true });
626
+ }
329
627
  resetTextState() {
330
628
  this.hasEmittedText = false;
331
629
  this.textTail = '';
@@ -371,6 +669,58 @@ export class CodexAdapter extends AgentAdapter {
371
669
  this.forceCloseTimer = null;
372
670
  }
373
671
  }
672
+ function makeThreadTitle(text) {
673
+ const firstLine = normalizeTitleText(text).split('\n').find((line) => line.trim()) ?? 'Shennian';
674
+ const title = firstLine.trim().slice(0, 80);
675
+ return title || 'Shennian';
676
+ }
677
+ function normalizeTitleText(text) {
678
+ return text
679
+ .replace(/!\[[^\]]*]\([^)]+\)/g, '')
680
+ .replace(/\s+/g, ' ')
681
+ .trim();
682
+ }
683
+ export function normalizeCodexModelId(modelId) {
684
+ const trimmed = modelId?.trim();
685
+ if (!trimmed)
686
+ return undefined;
687
+ return trimmed.toLowerCase() === 'openai' ? undefined : trimmed;
688
+ }
689
+ function extractAppServerErrorMessage(params) {
690
+ if (typeof params.message === 'string' && params.message.trim())
691
+ return params.message.trim();
692
+ const error = params.error;
693
+ if (typeof error === 'string' && error.trim())
694
+ return error.trim();
695
+ if (typeof error === 'object' && error !== null) {
696
+ const message = error.message;
697
+ if (typeof message === 'string' && message.trim())
698
+ return message.trim();
699
+ }
700
+ return 'codex app-server error';
701
+ }
702
+ function isTransientCodexErrorMessage(message) {
703
+ return /\bReconnecting\.\.\.\s*\d+\/\d+/i.test(message);
704
+ }
705
+ function formatTransientCodexStatus(message) {
706
+ const match = message.match(/\bReconnecting\.\.\.\s*(\d+\/\d+)/i);
707
+ if (!match)
708
+ return '';
709
+ return `Codex API 暂时不可用,正在重试 ${match[1]}...`;
710
+ }
711
+ function formatCodexErrorMessage(message) {
712
+ const statusMatch = message.match(/unexpected status\s+(\d+)\s+([^:,]+)(?::\s*([^,]+))?(?:,\s*url:\s*([^,\s]+))?(?:,\s*request id:\s*([^\s,]+))?/i);
713
+ if (!statusMatch)
714
+ return message;
715
+ const [, status, statusText, detail, url, requestId] = statusMatch;
716
+ const parts = [
717
+ `Codex API 返回 ${status} ${statusText.trim()}`,
718
+ detail?.trim() ? `:${detail.trim()}` : '',
719
+ url ? `\n上游地址:${url}` : '',
720
+ requestId ? `\nrequest id:${requestId}` : '',
721
+ ];
722
+ return parts.join('');
723
+ }
374
724
  const GIT_DIRECTIVE_LINE_RE = /^\s*::git-[a-z-]+\{[^\n]*\}\s*$/gm;
375
725
  function stripGitDirectiveArtifacts(text) {
376
726
  if (!text)
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../../src/agents/model-registry/discovery.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAoB,SAAS,EAAE,MAAM,gBAAgB,CAAA;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAIjD,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAkHrE,wBAAsB,sBAAsB,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAKlH"}
1
+ {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../../src/agents/model-registry/discovery.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAoB,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAGjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAWjD,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAmNrE,wBAAsB,sBAAsB,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAKlH"}
@@ -1,9 +1,89 @@
1
1
  // @arch docs/architecture/cli/model-discovery.md
2
2
  // @test src/__tests__/model-switching.test.ts
3
+ import { spawn } from 'node:child_process';
4
+ import { createInterface } from 'node:readline';
3
5
  import { resolveBuiltinCommand } from '../command-spec.js';
4
- import { parseClaudeModels, parseCodexModels, parseCursorModels, parseGeminiModels, parseOpenClawModels } from './parsers.js';
6
+ import { parseClaudeModels, parseCodexAppServerModels, parseCodexModels, parseCursorModels, parseGeminiModels, parseOpenClawModels, } from './parsers.js';
5
7
  import { runCommand, runPtyCommand } from './runner.js';
6
8
  import { DISCOVERY_WORKDIR } from './types.js';
9
+ function sendAppServerRpc(proc, pending, id, method, params, timeoutMs) {
10
+ if (!proc.stdin)
11
+ return Promise.reject(new Error('codex app-server stdin unavailable'));
12
+ return new Promise((resolve, reject) => {
13
+ const timer = setTimeout(() => {
14
+ pending.delete(id);
15
+ reject(new Error(`codex app-server request timed out: ${method}`));
16
+ }, timeoutMs);
17
+ pending.set(id, { resolve, reject, timer });
18
+ proc.stdin.write(`${JSON.stringify({ id, method, params })}\n`, (error) => {
19
+ if (!error)
20
+ return;
21
+ clearTimeout(timer);
22
+ pending.delete(id);
23
+ reject(error);
24
+ });
25
+ });
26
+ }
27
+ async function discoverCodexModelsViaAppServer() {
28
+ const proc = spawn('codex', ['app-server', '--listen', 'stdio://'], {
29
+ cwd: DISCOVERY_WORKDIR,
30
+ stdio: ['pipe', 'pipe', 'pipe'],
31
+ env: { ...process.env, NO_COLOR: '1' },
32
+ });
33
+ const pending = new Map();
34
+ let seq = 1;
35
+ const rl = createInterface({ input: proc.stdout });
36
+ rl.on('line', (line) => {
37
+ if (!line.trim())
38
+ return;
39
+ let msg;
40
+ try {
41
+ msg = JSON.parse(line);
42
+ }
43
+ catch {
44
+ return;
45
+ }
46
+ if (msg.id == null)
47
+ return;
48
+ const request = pending.get(msg.id);
49
+ if (!request)
50
+ return;
51
+ clearTimeout(request.timer);
52
+ pending.delete(msg.id);
53
+ if (msg.error) {
54
+ request.reject(new Error(msg.error.message || `codex app-server error ${msg.error.code ?? ''}`.trim()));
55
+ }
56
+ else {
57
+ request.resolve(msg.result);
58
+ }
59
+ });
60
+ try {
61
+ await sendAppServerRpc(proc, pending, seq++, 'initialize', {
62
+ clientInfo: { name: 'shennian', title: 'Shennian', version: '0.0.0' },
63
+ capabilities: { experimentalApi: true },
64
+ }, 10_000);
65
+ const [modelList, configRead] = await Promise.all([
66
+ sendAppServerRpc(proc, pending, seq++, 'model/list', {}, 15_000),
67
+ sendAppServerRpc(proc, pending, seq++, 'config/read', {}, 15_000).catch(() => null),
68
+ ]);
69
+ const config = typeof configRead === 'object' && configRead !== null && 'config' in configRead
70
+ ? configRead.config
71
+ : undefined;
72
+ return parseCodexAppServerModels({
73
+ ...(typeof modelList === 'object' && modelList !== null ? modelList : {}),
74
+ config,
75
+ });
76
+ }
77
+ finally {
78
+ for (const [id, request] of pending) {
79
+ clearTimeout(request.timer);
80
+ request.reject(new Error('codex app-server stopped'));
81
+ pending.delete(id);
82
+ }
83
+ proc.kill('SIGTERM');
84
+ setTimeout(() => proc.kill('SIGKILL'), 1000).unref();
85
+ }
86
+ }
7
87
  async function discoverCursorModels() {
8
88
  const spec = resolveBuiltinCommand('cursor');
9
89
  if (!spec)
@@ -47,6 +127,9 @@ async function discoverCodexModels() {
47
127
  const spec = resolveBuiltinCommand('codex');
48
128
  if (!spec)
49
129
  return [];
130
+ const appServerModels = await discoverCodexModelsViaAppServer().catch(() => []);
131
+ if (appServerModels.length > 0)
132
+ return appServerModels;
50
133
  const raw = await runPtyCommand(spec, {
51
134
  startupArgs: ['--no-alt-screen', '-C', DISCOVERY_WORKDIR],
52
135
  preOpenPromptPatterns: [/update available!/i, /skip until next version/i, /release notes:/i],