@geminilight/mindos 1.0.10 → 1.1.3

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 (209) hide show
  1. package/README_zh.md +3 -3
  2. package/bin/mindos-shim.cjs +318 -7
  3. package/dist/agent/prompts.d.ts +1 -1
  4. package/dist/agent/prompts.d.ts.map +1 -1
  5. package/dist/agent/prompts.js +14 -0
  6. package/dist/agent/prompts.js.map +1 -1
  7. package/dist/agent-runtime/claude-code-cli.d.ts +34 -0
  8. package/dist/agent-runtime/claude-code-cli.d.ts.map +1 -0
  9. package/dist/agent-runtime/claude-code-cli.js +259 -0
  10. package/dist/agent-runtime/claude-code-cli.js.map +1 -0
  11. package/dist/agent-runtime/claude-code-sdk.d.ts +41 -0
  12. package/dist/agent-runtime/claude-code-sdk.d.ts.map +1 -0
  13. package/dist/agent-runtime/claude-code-sdk.js +553 -0
  14. package/dist/agent-runtime/claude-code-sdk.js.map +1 -0
  15. package/dist/agent-runtime/codex-app-server.d.ts +154 -0
  16. package/dist/agent-runtime/codex-app-server.d.ts.map +1 -0
  17. package/dist/agent-runtime/codex-app-server.js +628 -0
  18. package/dist/agent-runtime/codex-app-server.js.map +1 -0
  19. package/dist/agent-runtime/codex-env.d.ts +41 -0
  20. package/dist/agent-runtime/codex-env.d.ts.map +1 -0
  21. package/dist/agent-runtime/codex-env.js +278 -0
  22. package/dist/agent-runtime/codex-env.js.map +1 -0
  23. package/dist/agent-runtime/index.d.ts +7 -0
  24. package/dist/agent-runtime/index.d.ts.map +1 -0
  25. package/dist/agent-runtime/index.js +7 -0
  26. package/dist/agent-runtime/index.js.map +1 -0
  27. package/dist/agent-runtime/run.d.ts +111 -0
  28. package/dist/agent-runtime/run.d.ts.map +1 -0
  29. package/dist/agent-runtime/run.js +681 -0
  30. package/dist/agent-runtime/run.js.map +1 -0
  31. package/dist/agent-runtime/runtime-env.d.ts +28 -0
  32. package/dist/agent-runtime/runtime-env.d.ts.map +1 -0
  33. package/dist/agent-runtime/runtime-env.js +66 -0
  34. package/dist/agent-runtime/runtime-env.js.map +1 -0
  35. package/dist/agent-runtime.d.ts +2 -0
  36. package/dist/agent-runtime.d.ts.map +1 -0
  37. package/dist/agent-runtime.js +2 -0
  38. package/dist/agent-runtime.js.map +1 -0
  39. package/dist/client.d.ts +8 -1
  40. package/dist/client.d.ts.map +1 -1
  41. package/dist/client.js.map +1 -1
  42. package/dist/foundation/config/schema.d.ts +30 -141
  43. package/dist/foundation/config/schema.d.ts.map +1 -1
  44. package/dist/foundation/config/schema.js +18 -4
  45. package/dist/foundation/config/schema.js.map +1 -1
  46. package/dist/index.d.ts +1 -0
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +1 -0
  49. package/dist/index.js.map +1 -1
  50. package/dist/knowledge/audit/index.d.ts +4 -0
  51. package/dist/knowledge/audit/index.d.ts.map +1 -1
  52. package/dist/knowledge/audit/index.js +92 -8
  53. package/dist/knowledge/audit/index.js.map +1 -1
  54. package/dist/knowledge/git/index.d.ts.map +1 -1
  55. package/dist/knowledge/git/index.js +43 -2
  56. package/dist/knowledge/git/index.js.map +1 -1
  57. package/dist/protocols/acp/agent-descriptors.d.ts.map +1 -1
  58. package/dist/protocols/acp/agent-descriptors.js +7 -4
  59. package/dist/protocols/acp/agent-descriptors.js.map +1 -1
  60. package/dist/protocols/acp/index.js +39 -28
  61. package/dist/protocols/acp/session.d.ts.map +1 -1
  62. package/dist/protocols/acp/session.js +11 -14
  63. package/dist/protocols/acp/session.js.map +1 -1
  64. package/dist/protocols/acp/subprocess.d.ts +4 -1
  65. package/dist/protocols/acp/subprocess.d.ts.map +1 -1
  66. package/dist/protocols/acp/subprocess.js +37 -10
  67. package/dist/protocols/acp/subprocess.js.map +1 -1
  68. package/dist/protocols/mcp-server/index.cjs +80 -68
  69. package/dist/server/channel-contract.d.ts +13 -0
  70. package/dist/server/channel-contract.d.ts.map +1 -0
  71. package/dist/server/channel-contract.js +115 -0
  72. package/dist/server/channel-contract.js.map +1 -0
  73. package/dist/server/contract.d.ts.map +1 -1
  74. package/dist/server/contract.js +12 -0
  75. package/dist/server/contract.js.map +1 -1
  76. package/dist/server/handlers/a2a.d.ts +7 -0
  77. package/dist/server/handlers/a2a.d.ts.map +1 -1
  78. package/dist/server/handlers/a2a.js +5 -1
  79. package/dist/server/handlers/a2a.js.map +1 -1
  80. package/dist/server/handlers/agent-capabilities.d.ts +60 -0
  81. package/dist/server/handlers/agent-capabilities.d.ts.map +1 -0
  82. package/dist/server/handlers/agent-capabilities.js +178 -0
  83. package/dist/server/handlers/agent-capabilities.js.map +1 -0
  84. package/dist/server/handlers/agent-runtime-codex.d.ts +29 -0
  85. package/dist/server/handlers/agent-runtime-codex.d.ts.map +1 -0
  86. package/dist/server/handlers/agent-runtime-codex.js +198 -0
  87. package/dist/server/handlers/agent-runtime-codex.js.map +1 -0
  88. package/dist/server/handlers/agent-runtimes.d.ts +136 -0
  89. package/dist/server/handlers/agent-runtimes.d.ts.map +1 -0
  90. package/dist/server/handlers/agent-runtimes.js +712 -0
  91. package/dist/server/handlers/agent-runtimes.js.map +1 -0
  92. package/dist/server/handlers/agents.d.ts +6 -0
  93. package/dist/server/handlers/agents.d.ts.map +1 -1
  94. package/dist/server/handlers/agents.js +41 -6
  95. package/dist/server/handlers/agents.js.map +1 -1
  96. package/dist/server/handlers/ask.d.ts +18 -0
  97. package/dist/server/handlers/ask.d.ts.map +1 -1
  98. package/dist/server/handlers/ask.js +70 -0
  99. package/dist/server/handlers/ask.js.map +1 -1
  100. package/dist/server/handlers/channels-verify.d.ts +1 -1
  101. package/dist/server/handlers/channels-verify.d.ts.map +1 -1
  102. package/dist/server/handlers/channels-verify.js +1 -63
  103. package/dist/server/handlers/channels-verify.js.map +1 -1
  104. package/dist/server/handlers/extract-docx.d.ts +42 -0
  105. package/dist/server/handlers/extract-docx.d.ts.map +1 -0
  106. package/dist/server/handlers/extract-docx.js +101 -0
  107. package/dist/server/handlers/extract-docx.js.map +1 -0
  108. package/dist/server/handlers/extract-pdf.d.ts +32 -0
  109. package/dist/server/handlers/extract-pdf.d.ts.map +1 -0
  110. package/dist/server/handlers/extract-pdf.js +116 -0
  111. package/dist/server/handlers/extract-pdf.js.map +1 -0
  112. package/dist/server/handlers/im-activity.d.ts.map +1 -1
  113. package/dist/server/handlers/im-activity.js +26 -1
  114. package/dist/server/handlers/im-activity.js.map +1 -1
  115. package/dist/server/handlers/im-config.d.ts +1 -1
  116. package/dist/server/handlers/im-config.d.ts.map +1 -1
  117. package/dist/server/handlers/im-config.js +69 -59
  118. package/dist/server/handlers/im-config.js.map +1 -1
  119. package/dist/server/handlers/im-feishu-oauth.d.ts +55 -0
  120. package/dist/server/handlers/im-feishu-oauth.d.ts.map +1 -0
  121. package/dist/server/handlers/im-feishu-oauth.js +218 -0
  122. package/dist/server/handlers/im-feishu-oauth.js.map +1 -0
  123. package/dist/server/handlers/im-status.d.ts +15 -0
  124. package/dist/server/handlers/im-status.d.ts.map +1 -1
  125. package/dist/server/handlers/im-status.js +41 -24
  126. package/dist/server/handlers/im-status.js.map +1 -1
  127. package/dist/server/handlers/inbox-source.d.ts +18 -0
  128. package/dist/server/handlers/inbox-source.d.ts.map +1 -0
  129. package/dist/server/handlers/inbox-source.js +108 -0
  130. package/dist/server/handlers/inbox-source.js.map +1 -0
  131. package/dist/server/handlers/inbox.d.ts +2 -0
  132. package/dist/server/handlers/inbox.d.ts.map +1 -1
  133. package/dist/server/handlers/inbox.js +34 -2
  134. package/dist/server/handlers/inbox.js.map +1 -1
  135. package/dist/server/handlers/mcp-agents.d.ts +16 -1
  136. package/dist/server/handlers/mcp-agents.d.ts.map +1 -1
  137. package/dist/server/handlers/mcp-agents.js +174 -44
  138. package/dist/server/handlers/mcp-agents.js.map +1 -1
  139. package/dist/server/handlers/mcp-install.d.ts +5 -0
  140. package/dist/server/handlers/mcp-install.d.ts.map +1 -1
  141. package/dist/server/handlers/mcp-install.js +68 -20
  142. package/dist/server/handlers/mcp-install.js.map +1 -1
  143. package/dist/server/handlers/mcp-restart.js +1 -1
  144. package/dist/server/handlers/mcp-restart.js.map +1 -1
  145. package/dist/server/handlers/mcp-status.d.ts +7 -1
  146. package/dist/server/handlers/mcp-status.d.ts.map +1 -1
  147. package/dist/server/handlers/mcp-status.js +14 -1
  148. package/dist/server/handlers/mcp-status.js.map +1 -1
  149. package/dist/server/handlers/settings-list-models.d.ts +1 -1
  150. package/dist/server/handlers/settings-list-models.d.ts.map +1 -1
  151. package/dist/server/handlers/settings-list-models.js +6 -5
  152. package/dist/server/handlers/settings-list-models.js.map +1 -1
  153. package/dist/server/handlers/settings-test-key.d.ts.map +1 -1
  154. package/dist/server/handlers/settings-test-key.js +17 -7
  155. package/dist/server/handlers/settings-test-key.js.map +1 -1
  156. package/dist/server/handlers/settings.d.ts +5 -1
  157. package/dist/server/handlers/settings.d.ts.map +1 -1
  158. package/dist/server/handlers/settings.js +54 -5
  159. package/dist/server/handlers/settings.js.map +1 -1
  160. package/dist/server/handlers/skills.d.ts +1 -0
  161. package/dist/server/handlers/skills.d.ts.map +1 -1
  162. package/dist/server/handlers/skills.js +7 -5
  163. package/dist/server/handlers/skills.js.map +1 -1
  164. package/dist/server/handlers/sync.d.ts +15 -4
  165. package/dist/server/handlers/sync.d.ts.map +1 -1
  166. package/dist/server/handlers/sync.js +552 -81
  167. package/dist/server/handlers/sync.js.map +1 -1
  168. package/dist/server/handlers/uninstall.js +1 -0
  169. package/dist/server/handlers/uninstall.js.map +1 -1
  170. package/dist/server/handlers/update.js +1 -0
  171. package/dist/server/handlers/update.js.map +1 -1
  172. package/dist/server/http.d.ts +20 -0
  173. package/dist/server/http.d.ts.map +1 -1
  174. package/dist/server/http.js +228 -25
  175. package/dist/server/http.js.map +1 -1
  176. package/dist/server/index.d.ts +14 -5
  177. package/dist/server/index.d.ts.map +1 -1
  178. package/dist/server/index.js +11 -2
  179. package/dist/server/index.js.map +1 -1
  180. package/dist/server/mcp-agent-registry.d.ts +184 -0
  181. package/dist/server/mcp-agent-registry.d.ts.map +1 -1
  182. package/dist/server/mcp-agent-registry.js +100 -9
  183. package/dist/server/mcp-agent-registry.js.map +1 -1
  184. package/dist/server/provider-settings.d.ts +38 -0
  185. package/dist/server/provider-settings.d.ts.map +1 -0
  186. package/dist/server/provider-settings.js +286 -0
  187. package/dist/server/provider-settings.js.map +1 -0
  188. package/dist/server/route-ownership.d.ts.map +1 -1
  189. package/dist/server/route-ownership.js +18 -2
  190. package/dist/server/route-ownership.js.map +1 -1
  191. package/dist/server/runtime.d.ts +1 -0
  192. package/dist/server/runtime.d.ts.map +1 -1
  193. package/dist/server/runtime.js.map +1 -1
  194. package/dist/session/index.d.ts +96 -15
  195. package/dist/session/index.d.ts.map +1 -1
  196. package/dist/session/index.js +162 -30
  197. package/dist/session/index.js.map +1 -1
  198. package/dist/session/pi-coding-agent-runtime.js +3 -3
  199. package/dist/session/pi-coding-agent-runtime.js.map +1 -1
  200. package/dist/session/redaction.d.ts +3 -0
  201. package/dist/session/redaction.d.ts.map +1 -0
  202. package/dist/session/redaction.js +47 -0
  203. package/dist/session/redaction.js.map +1 -0
  204. package/dist/setup/index.d.ts +1 -0
  205. package/dist/setup/index.d.ts.map +1 -1
  206. package/dist/setup/index.js +13 -0
  207. package/dist/setup/index.js.map +1 -1
  208. package/package.json +18 -12
  209. package/src/cli.js +1 -0
@@ -0,0 +1,628 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { createInterface } from 'node:readline';
3
+ import { redactSensitiveText, sanitizeToolArgs, sanitizeToolOutput, } from '../session/index.js';
4
+ import { buildCodexAppServerEnv } from './codex-env.js';
5
+ const DEFAULT_REQUEST_TIMEOUT_MS = 60_000;
6
+ class AsyncQueue {
7
+ values = [];
8
+ readers = [];
9
+ closed = false;
10
+ push(value) {
11
+ if (this.closed)
12
+ return;
13
+ const reader = this.readers.shift();
14
+ if (reader) {
15
+ reader({ value, done: false });
16
+ return;
17
+ }
18
+ this.values.push(value);
19
+ }
20
+ close() {
21
+ if (this.closed)
22
+ return;
23
+ this.closed = true;
24
+ for (const reader of this.readers.splice(0)) {
25
+ reader({ value: undefined, done: true });
26
+ }
27
+ }
28
+ [Symbol.asyncIterator]() {
29
+ return {
30
+ next: () => {
31
+ const value = this.values.shift();
32
+ if (value !== undefined)
33
+ return Promise.resolve({ value, done: false });
34
+ if (this.closed)
35
+ return Promise.resolve({ value: undefined, done: true });
36
+ return new Promise((resolve) => this.readers.push(resolve));
37
+ },
38
+ };
39
+ }
40
+ }
41
+ export function createCodexAppServerClient(transport, options = {}) {
42
+ const clientInfo = options.clientInfo ?? {
43
+ name: 'codex-mindos',
44
+ title: 'Codex MindOS',
45
+ version: '0.1.0',
46
+ };
47
+ const capabilities = options.capabilities ?? {
48
+ experimentalApi: true,
49
+ };
50
+ const pending = new Map();
51
+ const notifications = new AsyncQueue();
52
+ let nextId = 1;
53
+ let readStarted = false;
54
+ const startReadLoop = (signal) => {
55
+ if (readStarted)
56
+ return;
57
+ readStarted = true;
58
+ void (async () => {
59
+ try {
60
+ for await (const message of transport.read(signal)) {
61
+ if (isCodexResponse(message)) {
62
+ const request = pending.get(message.id);
63
+ if (!request)
64
+ continue;
65
+ pending.delete(message.id);
66
+ request.cleanup();
67
+ if (message.error) {
68
+ request.reject(new Error(formatCodexJsonRpcError(request.method, message.error)));
69
+ }
70
+ else {
71
+ request.resolve(message.result);
72
+ }
73
+ continue;
74
+ }
75
+ if (isCodexServerRequest(message)) {
76
+ void respondToServerRequest(message).catch((error) => {
77
+ const err = error instanceof Error ? error : new Error(String(error));
78
+ notifications.push({
79
+ method: 'error',
80
+ params: { message: `Codex app-server request ${message.method} failed: ${err.message}` },
81
+ });
82
+ });
83
+ continue;
84
+ }
85
+ if (isCodexNotification(message))
86
+ notifications.push(message);
87
+ }
88
+ }
89
+ catch (error) {
90
+ const err = error instanceof Error ? error : new Error(String(error));
91
+ for (const request of pending.values()) {
92
+ request.cleanup();
93
+ request.reject(err);
94
+ }
95
+ pending.clear();
96
+ }
97
+ finally {
98
+ notifications.close();
99
+ }
100
+ })();
101
+ };
102
+ const request = async (method, params = {}, signal) => {
103
+ startReadLoop(signal);
104
+ if (signal?.aborted)
105
+ throw new Error(`Codex app-server ${method} aborted.`);
106
+ const id = nextId++;
107
+ let timer;
108
+ let abortListener;
109
+ const response = new Promise((resolve, reject) => {
110
+ const cleanup = () => {
111
+ if (timer)
112
+ clearTimeout(timer);
113
+ if (abortListener)
114
+ signal?.removeEventListener('abort', abortListener);
115
+ };
116
+ const rejectPending = (error) => {
117
+ const pendingRequest = pending.get(id);
118
+ if (!pendingRequest)
119
+ return;
120
+ pending.delete(id);
121
+ pendingRequest.cleanup();
122
+ pendingRequest.reject(error);
123
+ };
124
+ abortListener = () => rejectPending(new Error(`Codex app-server ${method} aborted.`));
125
+ timer = setTimeout(() => {
126
+ rejectPending(new Error(`Codex app-server ${method} timed out after ${DEFAULT_REQUEST_TIMEOUT_MS}ms.`));
127
+ }, DEFAULT_REQUEST_TIMEOUT_MS);
128
+ signal?.addEventListener('abort', abortListener, { once: true });
129
+ pending.set(id, { method, resolve, reject, cleanup });
130
+ });
131
+ try {
132
+ await transport.send({ method, id, params });
133
+ }
134
+ catch (error) {
135
+ const pendingRequest = pending.get(id);
136
+ if (pendingRequest) {
137
+ pending.delete(id);
138
+ pendingRequest.cleanup();
139
+ pendingRequest.reject(error instanceof Error ? error : new Error(String(error)));
140
+ }
141
+ }
142
+ return response;
143
+ };
144
+ const notify = async (method, params = {}) => {
145
+ await transport.send({ method, params });
146
+ };
147
+ const respondToServerRequest = async (message) => {
148
+ try {
149
+ const result = options.handleServerRequest
150
+ ? await options.handleServerRequest(message)
151
+ : defaultCodexServerRequestResult(message);
152
+ await transport.send({ id: message.id, result });
153
+ }
154
+ catch (error) {
155
+ const err = error instanceof Error ? error : new Error(String(error));
156
+ await transport.send({
157
+ id: message.id,
158
+ error: {
159
+ code: -32000,
160
+ message: err.message || `Codex app-server request ${message.method} failed`,
161
+ },
162
+ });
163
+ }
164
+ };
165
+ return {
166
+ async initialize(options = {}) {
167
+ await request('initialize', { clientInfo, capabilities }, options.signal);
168
+ await notify('initialized');
169
+ },
170
+ async startThread(input = {}, options = {}) {
171
+ const params = pruneUndefined({
172
+ model: input.model,
173
+ cwd: input.cwd,
174
+ });
175
+ const result = await request('thread/start', params, options.signal);
176
+ return { threadId: getThreadId(result, 'thread/start') };
177
+ },
178
+ async resumeThread(input, options = {}) {
179
+ const result = await request('thread/resume', { threadId: input.threadId }, options.signal);
180
+ return { threadId: getThreadId(result, 'thread/resume') ?? input.threadId };
181
+ },
182
+ async listThreads(input = {}) {
183
+ const result = await request('thread/list', pruneUndefined(input));
184
+ return getThreadListResult(result, 'thread/list');
185
+ },
186
+ async readThread(input) {
187
+ const result = await request('thread/read', {
188
+ threadId: input.threadId,
189
+ ...(typeof input.includeTurns === 'boolean' ? { includeTurns: input.includeTurns } : {}),
190
+ });
191
+ return { thread: getThread(result, 'thread/read') };
192
+ },
193
+ async forkThread(input) {
194
+ const result = await request('thread/fork', pruneUndefined(input));
195
+ const record = asRecord(result);
196
+ return {
197
+ ...(record ?? {}),
198
+ thread: getThread(result, 'thread/fork'),
199
+ };
200
+ },
201
+ async archiveThread(input) {
202
+ await request('thread/archive', { threadId: input.threadId });
203
+ },
204
+ async unarchiveThread(input) {
205
+ const result = await request('thread/unarchive', { threadId: input.threadId });
206
+ return { thread: getThread(result, 'thread/unarchive') };
207
+ },
208
+ async *startTurn(input) {
209
+ const params = {
210
+ threadId: input.threadId,
211
+ input: input.input,
212
+ ...(input.cwd ? { cwd: input.cwd } : {}),
213
+ };
214
+ await request('turn/start', params, input.signal);
215
+ for await (const notification of notifications) {
216
+ yield notification;
217
+ if (isCodexTerminalTurnNotification(notification))
218
+ break;
219
+ }
220
+ },
221
+ async interruptTurn(input) {
222
+ await request('turn/interrupt', {
223
+ threadId: input.threadId,
224
+ ...(input.turnId ? { turnId: input.turnId } : {}),
225
+ });
226
+ },
227
+ close: () => transport.close?.(),
228
+ };
229
+ }
230
+ export function createCodexAppServerStdioTransport(options = {}) {
231
+ const command = options.command ?? 'codex';
232
+ const args = options.args ?? ['app-server'];
233
+ const child = spawn(command, args, {
234
+ stdio: ['pipe', 'pipe', 'pipe'],
235
+ ...(options.cwd ? { cwd: options.cwd } : {}),
236
+ env: buildCodexAppServerEnv({ overrideEnv: options.env }),
237
+ });
238
+ const lines = createInterface({ input: child.stdout });
239
+ let stderr = '';
240
+ let spawnError = null;
241
+ child.stderr.on('data', (chunk) => {
242
+ stderr += String(chunk);
243
+ });
244
+ child.once('error', (error) => {
245
+ spawnError = error;
246
+ });
247
+ const childClose = new Promise((resolve) => {
248
+ child.once('close', (code, signal) => resolve({ code, signal }));
249
+ });
250
+ return {
251
+ send(message) {
252
+ child.stdin.write(`${JSON.stringify(message)}\n`);
253
+ },
254
+ async *read() {
255
+ try {
256
+ for await (const line of lines) {
257
+ if (typeof line !== 'string' || !line.trim())
258
+ continue;
259
+ yield JSON.parse(line);
260
+ }
261
+ const result = await childClose;
262
+ if (spawnError)
263
+ throw spawnError;
264
+ if (result.code && result.code !== 0) {
265
+ throw new Error(stderr.trim() || `Codex app-server exited with code ${result.code}`);
266
+ }
267
+ }
268
+ catch (error) {
269
+ const err = error instanceof Error ? error : new Error(String(error));
270
+ if (err.message)
271
+ throw err;
272
+ throw new Error(stderr.trim() || 'Codex app-server stopped unexpectedly');
273
+ }
274
+ },
275
+ close() {
276
+ lines.close();
277
+ child.kill();
278
+ },
279
+ };
280
+ }
281
+ export function mapCodexAppServerNotificationToSseEvents(notification) {
282
+ const toolEvents = mapCodexRuntimeToolNotification(notification);
283
+ if (toolEvents.length > 0)
284
+ return toolEvents;
285
+ if (notification.method === 'error') {
286
+ return [{ type: 'error', message: redactSensitiveText(getCodexErrorMessage(notification.params, 'Codex app-server error')) }];
287
+ }
288
+ if (notification.method === 'item/agentMessage/delta') {
289
+ const delta = getStringParam(notification.params, 'delta') ?? getStringParam(notification.params, 'text');
290
+ return delta ? [{ type: 'text_delta', delta }] : [];
291
+ }
292
+ if (notification.method === 'item/thinking/delta') {
293
+ const delta = getStringParam(notification.params, 'delta') ?? getStringParam(notification.params, 'text');
294
+ return delta ? [{ type: 'thinking_delta', delta }] : [];
295
+ }
296
+ if (notification.method === 'item/reasoning/textDelta'
297
+ || notification.method === 'item/reasoning/summaryTextDelta'
298
+ || notification.method === 'item/reasoning/summaryPartAdded') {
299
+ const delta = getStringParam(notification.params, 'delta')
300
+ ?? getStringParam(notification.params, 'text')
301
+ ?? getStringParam(notification.params, 'summary');
302
+ return delta ? [{ type: 'thinking_delta', delta }] : [];
303
+ }
304
+ if (notification.method === 'turn/completed') {
305
+ const status = getCodexTurnStatus(notification.params);
306
+ if (status && status !== 'completed' && status !== 'success') {
307
+ return [{ type: 'error', message: redactSensitiveText(getCodexErrorMessage(notification.params, `Codex turn ${status}`)) }];
308
+ }
309
+ return [{ type: 'done' }];
310
+ }
311
+ if (notification.method === 'turn/failed') {
312
+ return [{ type: 'error', message: redactSensitiveText(getCodexErrorMessage(notification.params, 'Codex turn failed')) }];
313
+ }
314
+ return [];
315
+ }
316
+ function mapCodexRuntimeToolNotification(notification) {
317
+ const method = notification.method;
318
+ const lower = method.toLowerCase();
319
+ const params = notification.params ?? {};
320
+ const officialItemEvents = mapCodexOfficialItemNotification(method, params);
321
+ if (officialItemEvents.length > 0)
322
+ return officialItemEvents;
323
+ if (!/(tool|command|exec|approval|permission|patch)/.test(lower))
324
+ return [];
325
+ const toolCallId = getCodexToolCallId(method, params);
326
+ const toolName = getCodexToolName(method, params);
327
+ if (!toolCallId || !toolName)
328
+ return [];
329
+ if (/outputdelta|output_delta/.test(lower)) {
330
+ const delta = getStringParam(params, 'delta')
331
+ ?? getStringParam(params, 'output')
332
+ ?? getStringParam(params, 'text');
333
+ return delta ? [{
334
+ type: 'tool_delta',
335
+ toolCallId,
336
+ toolName,
337
+ delta: redactSensitiveText(delta),
338
+ runtime: 'codex',
339
+ }] : [];
340
+ }
341
+ if (/(end|ended|complete|completed|result|output|failed|error|rejected|denied|approved|allowed)/.test(lower)) {
342
+ return [{
343
+ type: 'tool_end',
344
+ toolCallId,
345
+ toolName,
346
+ output: sanitizeToolOutput(getCodexToolOutput(params)),
347
+ isError: /(failed|error|rejected|denied)/.test(lower) || params.isError === true || params.error !== undefined,
348
+ runtime: 'codex',
349
+ }];
350
+ }
351
+ if (/(start|started|begin|began|added|call|request|requested|created)/.test(lower)) {
352
+ return [{
353
+ type: 'tool_start',
354
+ toolCallId,
355
+ toolName,
356
+ args: sanitizeToolArgs(toolName, getCodexToolInput(params)),
357
+ runtime: 'codex',
358
+ }];
359
+ }
360
+ return [];
361
+ }
362
+ function mapCodexOfficialItemNotification(method, params) {
363
+ if (method === 'item/commandExecution/outputDelta') {
364
+ const toolCallId = getCodexToolCallId(method, params);
365
+ const delta = getStringParam(params, 'delta')
366
+ ?? getStringParam(params, 'output')
367
+ ?? getStringParam(params, 'text');
368
+ if (!toolCallId || !delta)
369
+ return [];
370
+ return [{
371
+ type: 'tool_delta',
372
+ toolCallId,
373
+ toolName: getCodexToolName(method, params),
374
+ delta: redactSensitiveText(delta),
375
+ runtime: 'codex',
376
+ }];
377
+ }
378
+ if (method !== 'item/started' && method !== 'item/completed')
379
+ return [];
380
+ const item = getCodexItem(params);
381
+ if (!item || !isCodexRuntimeToolItem(item))
382
+ return [];
383
+ const toolCallId = getCodexToolCallId(method, params);
384
+ const toolName = getCodexToolName(method, params);
385
+ if (!toolCallId || !toolName)
386
+ return [];
387
+ if (method === 'item/started') {
388
+ return [{
389
+ type: 'tool_start',
390
+ toolCallId,
391
+ toolName,
392
+ args: sanitizeToolArgs(toolName, getCodexToolInput(params)),
393
+ runtime: 'codex',
394
+ }];
395
+ }
396
+ const status = getStringField(item, 'status') ?? getStringParam(params, 'status');
397
+ return [{
398
+ type: 'tool_end',
399
+ toolCallId,
400
+ toolName,
401
+ output: sanitizeToolOutput(getCodexToolOutput(params)),
402
+ isError: status === 'failed'
403
+ || status === 'error'
404
+ || status === 'declined'
405
+ || params.isError === true
406
+ || params.error !== undefined
407
+ || item.error !== undefined,
408
+ runtime: 'codex',
409
+ }];
410
+ }
411
+ function formatCodexJsonRpcError(method, error) {
412
+ const parts = [
413
+ error.message?.trim() || `Codex app-server ${method} failed`,
414
+ typeof error.code === 'number' ? `method=${method} code=${error.code}` : `method=${method}`,
415
+ error.data !== undefined ? `data=${safeJson(error.data)}` : '',
416
+ ].filter(Boolean);
417
+ return parts.join(' ');
418
+ }
419
+ function safeJson(value) {
420
+ try {
421
+ return JSON.stringify(value);
422
+ }
423
+ catch {
424
+ return String(value);
425
+ }
426
+ }
427
+ function isCodexResponse(message) {
428
+ return typeof message.id === 'number'
429
+ && typeof message.method !== 'string';
430
+ }
431
+ function isCodexNotification(message) {
432
+ return typeof message.method === 'string'
433
+ && typeof message.id !== 'number';
434
+ }
435
+ function isCodexServerRequest(message) {
436
+ return typeof message.id === 'number'
437
+ && typeof message.method === 'string';
438
+ }
439
+ function isCodexTerminalTurnNotification(notification) {
440
+ return (notification.method === 'error'
441
+ || notification.method === 'turn/completed'
442
+ || notification.method === 'turn/failed');
443
+ }
444
+ function asRecord(value) {
445
+ return value && typeof value === 'object' ? value : null;
446
+ }
447
+ function getThreadId(result, method) {
448
+ return getThread(result, method).id;
449
+ }
450
+ function getThread(result, method) {
451
+ const record = asRecord(result);
452
+ const thread = asRecord(record?.thread);
453
+ const id = thread?.id;
454
+ if (typeof id !== 'string' || !id) {
455
+ throw new Error(`Codex app-server ${method} did not return a thread id`);
456
+ }
457
+ return { ...thread, id };
458
+ }
459
+ function getThreadListResult(result, method) {
460
+ const record = asRecord(result);
461
+ if (!record || !Array.isArray(record.data)) {
462
+ throw new Error(`Codex app-server ${method} did not return a thread list`);
463
+ }
464
+ return {
465
+ data: record.data.map((item) => {
466
+ const thread = asRecord(item);
467
+ const id = thread?.id;
468
+ if (typeof id !== 'string' || !id) {
469
+ throw new Error(`Codex app-server ${method} returned a thread without an id`);
470
+ }
471
+ return { ...thread, id };
472
+ }),
473
+ nextCursor: typeof record.nextCursor === 'string' ? record.nextCursor : null,
474
+ backwardsCursor: typeof record.backwardsCursor === 'string' ? record.backwardsCursor : null,
475
+ };
476
+ }
477
+ function pruneUndefined(value) {
478
+ return Object.fromEntries(Object.entries(value).filter(([, entry]) => entry !== undefined));
479
+ }
480
+ function getStringParam(params, key) {
481
+ const value = params?.[key];
482
+ return typeof value === 'string' ? value : undefined;
483
+ }
484
+ function getCodexItem(params) {
485
+ return asRecord(params.item) ?? params;
486
+ }
487
+ function getCodexItemType(item) {
488
+ return getStringField(item, 'type') ?? getStringField(item, 'kind') ?? '';
489
+ }
490
+ function isCodexRuntimeToolItem(item) {
491
+ const type = getCodexItemType(item).toLowerCase();
492
+ return type.includes('command')
493
+ || type.includes('filechange')
494
+ || type.includes('file_change')
495
+ || type.includes('tool')
496
+ || type.includes('dynamic')
497
+ || Boolean(getStringField(item, 'command'))
498
+ || Boolean(getStringField(item, 'toolName'))
499
+ || Boolean(getStringField(item, 'name'));
500
+ }
501
+ function getCodexToolCallId(method, params) {
502
+ const direct = getStringParam(params, 'toolCallId')
503
+ ?? getStringParam(params, 'callId')
504
+ ?? getStringParam(params, 'itemId')
505
+ ?? getStringParam(params, 'requestId')
506
+ ?? getStringParam(params, 'id');
507
+ if (direct)
508
+ return direct;
509
+ const item = asRecord(params.item);
510
+ const nested = getStringField(item, 'id') ?? getStringField(item, 'callId');
511
+ return nested ?? `codex-${method}`;
512
+ }
513
+ function getCodexToolName(method, params) {
514
+ const direct = getStringParam(params, 'toolName')
515
+ ?? getStringParam(params, 'name')
516
+ ?? getStringParam(params, 'tool')
517
+ ?? getStringParam(params, 'commandName');
518
+ if (direct)
519
+ return direct;
520
+ if (getStringParam(params, 'command'))
521
+ return 'Bash';
522
+ if (method.toLowerCase().includes('commandexecution'))
523
+ return 'Bash';
524
+ if (method.toLowerCase().includes('approval') || method.toLowerCase().includes('permission'))
525
+ return 'approval_request';
526
+ const item = getCodexItem(params);
527
+ const itemType = getCodexItemType(item).toLowerCase();
528
+ const itemTool = asRecord(item?.tool) ?? asRecord(item?.mcpTool) ?? asRecord(item?.dynamicTool);
529
+ const itemServer = asRecord(item?.server) ?? asRecord(item?.mcpServer);
530
+ if (getStringField(item, 'command'))
531
+ return 'Bash';
532
+ if (itemType.includes('command'))
533
+ return 'Bash';
534
+ if (itemType.includes('filechange') || itemType.includes('file_change'))
535
+ return 'file_change';
536
+ const nestedToolName = getStringField(itemTool, 'name')
537
+ ?? getStringField(itemTool, 'toolName')
538
+ ?? getStringField(item, 'serverToolName');
539
+ const serverName = getStringField(itemServer, 'name') ?? getStringField(itemServer, 'serverName');
540
+ if (serverName && nestedToolName)
541
+ return `${serverName}.${nestedToolName}`;
542
+ return getStringField(item, 'name')
543
+ ?? getStringField(item, 'toolName')
544
+ ?? nestedToolName
545
+ ?? method.split('/').at(-1)
546
+ ?? method;
547
+ }
548
+ function getCodexToolInput(params) {
549
+ const item = getCodexItem(params);
550
+ const itemTool = asRecord(item?.tool) ?? asRecord(item?.mcpTool) ?? asRecord(item?.dynamicTool);
551
+ return params.input
552
+ ?? params.arguments
553
+ ?? params.args
554
+ ?? params.command
555
+ ?? item?.input
556
+ ?? item?.arguments
557
+ ?? item?.args
558
+ ?? item?.command
559
+ ?? itemTool?.input
560
+ ?? itemTool?.arguments
561
+ ?? itemTool?.args
562
+ ?? params;
563
+ }
564
+ function getCodexToolOutput(params) {
565
+ const direct = getStringParam(params, 'output')
566
+ ?? getStringParam(params, 'result')
567
+ ?? getStringParam(params, 'message')
568
+ ?? getStringParam(params, 'text');
569
+ if (direct)
570
+ return direct;
571
+ const error = asRecord(params.error);
572
+ const errorMessage = getStringField(error, 'message') ?? getStringField(error, 'detail');
573
+ if (errorMessage)
574
+ return errorMessage;
575
+ const item = getCodexItem(params);
576
+ const itemOutput = getStringField(item, 'output') ?? getStringField(item, 'result');
577
+ if (itemOutput)
578
+ return itemOutput;
579
+ const itemTool = asRecord(item?.tool) ?? asRecord(item?.mcpTool) ?? asRecord(item?.dynamicTool);
580
+ const toolOutput = getStringField(itemTool, 'output') ?? getStringField(itemTool, 'result');
581
+ if (toolOutput)
582
+ return toolOutput;
583
+ const itemError = asRecord(item?.error);
584
+ const itemErrorMessage = getStringField(itemError, 'message') ?? getStringField(itemError, 'detail');
585
+ if (itemErrorMessage)
586
+ return itemErrorMessage;
587
+ const status = getStringField(item, 'status') ?? getStringParam(params, 'status');
588
+ if (status)
589
+ return `Codex item ${status}`;
590
+ return safeJson(params);
591
+ }
592
+ function getCodexTurnStatus(params) {
593
+ const direct = getStringParam(params, 'status');
594
+ if (direct)
595
+ return direct;
596
+ const turn = asRecord(params?.turn);
597
+ const nested = turn?.status;
598
+ return typeof nested === 'string' ? nested : undefined;
599
+ }
600
+ function getCodexErrorMessage(params, fallback) {
601
+ const direct = getStringParam(params, 'message') ?? getStringParam(params, 'errorMessage');
602
+ if (direct)
603
+ return direct;
604
+ const error = asRecord(params?.error);
605
+ const errorMessage = getStringField(error, 'message') ?? getStringField(error, 'detail');
606
+ if (errorMessage)
607
+ return errorMessage;
608
+ const turn = asRecord(params?.turn);
609
+ const turnError = asRecord(turn?.error);
610
+ const turnMessage = getStringField(turnError, 'message')
611
+ ?? getStringField(turnError, 'detail')
612
+ ?? getStringField(turn, 'message');
613
+ if (turnMessage)
614
+ return turnMessage;
615
+ const status = getCodexTurnStatus(params);
616
+ return status ? `${fallback}: ${status}` : fallback;
617
+ }
618
+ function getStringField(record, key) {
619
+ const value = record?.[key];
620
+ return typeof value === 'string' && value ? value : undefined;
621
+ }
622
+ function defaultCodexServerRequestResult(request) {
623
+ if (/requestApproval|approval|permission/i.test(request.method)) {
624
+ return { decision: 'cancel' };
625
+ }
626
+ throw new Error(`Unhandled Codex app-server request: ${request.method}`);
627
+ }
628
+ //# sourceMappingURL=codex-app-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-app-server.js","sourceRoot":"","sources":["../../src/agent-runtime/codex-app-server.ts"],"names":[],"mappings":"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"}