mcp-codex-worker 0.1.1 → 0.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.
package/dist/src/app.js CHANGED
@@ -1,4 +1,6 @@
1
1
  import { createToolDefinitions, } from './mcp/tool-definitions.js';
2
+ import { buildRequestBanner, buildThreadBanner } from './mcp/tool-banners.js';
3
+ import { renderRequestListMarkdown, renderThreadListMarkdown, renderThreadMarkdown, } from './mcp/task-markdown.js';
2
4
  import { OPERATION_POLL_INTERVAL_MS, REQUEST_TIMEOUT_MS } from './config/defaults.js';
3
5
  import { CodexRuntime } from './services/codex-runtime.js';
4
6
  export class CodexWorkerApp {
@@ -10,10 +12,14 @@ export class CodexWorkerApp {
10
12
  async listTools() {
11
13
  try {
12
14
  const modelIds = await this.runtime.listVisibleModelIds();
13
- return createToolDefinitions(modelIds);
15
+ return createToolDefinitions({
16
+ modelIds,
17
+ threadBanner: buildThreadBanner(this.runtime),
18
+ requestBanner: buildRequestBanner(this.runtime),
19
+ });
14
20
  }
15
21
  catch {
16
- return createToolDefinitions([]);
22
+ return createToolDefinitions({ modelIds: [], threadBanner: '', requestBanner: '' });
17
23
  }
18
24
  }
19
25
  listResources() {
@@ -21,8 +27,8 @@ export class CodexWorkerApp {
21
27
  {
22
28
  uri: 'codex://threads',
23
29
  name: 'Codex Threads',
24
- description: 'Latest threads from `thread/list`',
25
- mimeType: 'application/json',
30
+ description: 'All tracked threads with status',
31
+ mimeType: 'text/markdown',
26
32
  },
27
33
  {
28
34
  uri: 'codex://models',
@@ -47,8 +53,8 @@ export class CodexWorkerApp {
47
53
  base.push({
48
54
  uri: `codex://thread/${threadId}`,
49
55
  name: `Thread ${threadId}`,
50
- description: 'Thread from `thread/read`',
51
- mimeType: 'application/json',
56
+ description: 'Thread status and guidance',
57
+ mimeType: 'text/markdown',
52
58
  }, {
53
59
  uri: `codex://thread/${threadId}/events`,
54
60
  name: `Thread ${threadId} events`,
@@ -67,17 +73,14 @@ export class CodexWorkerApp {
67
73
  }
68
74
  }
69
75
  return {
70
- mimeType: 'application/json',
71
- text: JSON.stringify(response, null, 2),
76
+ mimeType: 'text/markdown',
77
+ text: renderThreadListMarkdown(response.data ?? [], this.runtime.getPendingServerRequests(false)),
72
78
  };
73
79
  }
74
80
  if (uri === 'codex://models') {
75
- const response = {
76
- data: await this.runtime.listModels(false),
77
- };
78
81
  return {
79
82
  mimeType: 'application/json',
80
- text: JSON.stringify(response, null, 2),
83
+ text: JSON.stringify({ data: await this.runtime.listModels(false) }, null, 2),
81
84
  };
82
85
  }
83
86
  if (uri === 'codex://account') {
@@ -117,8 +120,8 @@ export class CodexWorkerApp {
117
120
  includeTurns: true,
118
121
  });
119
122
  return {
120
- mimeType: 'application/json',
121
- text: JSON.stringify(response, null, 2),
123
+ mimeType: 'text/markdown',
124
+ text: renderThreadMarkdown(response, this.runtime.getOperationsForThread(threadId), this.runtime.getPendingServerRequests(false)),
122
125
  };
123
126
  }
124
127
  return {
@@ -149,9 +152,7 @@ export class CodexWorkerApp {
149
152
  case 'codex-turn-interrupt':
150
153
  return this.handleTurnInterrupt(validated);
151
154
  case 'codex-request-list':
152
- return JSON.stringify({
153
- requests: this.runtime.getPendingServerRequests(Boolean(validated.include_resolved)),
154
- }, null, 2);
155
+ return renderRequestListMarkdown(this.runtime.getPendingServerRequests(Boolean(validated.include_resolved)));
155
156
  case 'codex-request-respond':
156
157
  return this.handleRequestRespond(validated);
157
158
  case 'codex-wait':
@@ -171,11 +172,17 @@ export class CodexWorkerApp {
171
172
  if (threadId) {
172
173
  this.runtime.rememberThreadId(threadId);
173
174
  }
174
- return JSON.stringify({
175
- method: 'thread/start',
176
- remapped_from: built.remappedFrom,
177
- result: response,
178
- }, null, 2);
175
+ const remapNote = built.remappedFrom ? ` (remapped from ${built.remappedFrom})` : '';
176
+ return [
177
+ `**Thread started**`,
178
+ `thread_id: \`${threadId ?? 'unknown'}\``,
179
+ `model: \`${built.params.model}\`${remapNote}`,
180
+ '',
181
+ '**What to do next:**',
182
+ `- Use \`codex-turn-start\` with \`thread_id: "${threadId}"\` to send the agent its task.`,
183
+ '- After starting a turn, use `codex-wait` with `operation_id` to block until it finishes or asks for approval.',
184
+ '- Check `codex-request-list` after starting turns -- agents often need approval for commands or file changes.',
185
+ ].join('\n');
179
186
  }
180
187
  async handleThreadResume(input) {
181
188
  const built = await this.runtime.buildThreadResumeParams({
@@ -184,13 +191,16 @@ export class CodexWorkerApp {
184
191
  cwd: input.cwd,
185
192
  developerInstructions: input.developer_instructions,
186
193
  });
187
- const response = await this.runtime.request('thread/resume', built.params);
194
+ await this.runtime.request('thread/resume', built.params);
188
195
  this.runtime.rememberThreadId(input.thread_id);
189
- return JSON.stringify({
190
- method: 'thread/resume',
191
- remapped_from: built.remappedFrom,
192
- result: response,
193
- }, null, 2);
196
+ return [
197
+ `**Thread resumed**`,
198
+ `thread_id: \`${input.thread_id}\``,
199
+ '',
200
+ '**What to do next:**',
201
+ '- Use `codex-turn-start` to send a new task to this thread.',
202
+ '- The thread\'s previous context is loaded -- the agent remembers prior conversation.',
203
+ ].join('\n');
194
204
  }
195
205
  async handleThreadRead(input) {
196
206
  const response = await this.runtime.request('thread/read', {
@@ -198,7 +208,7 @@ export class CodexWorkerApp {
198
208
  includeTurns: input.include_turns ?? true,
199
209
  });
200
210
  this.runtime.rememberThreadId(input.thread_id);
201
- return JSON.stringify(response, null, 2);
211
+ return renderThreadMarkdown(response, this.runtime.getOperationsForThread(input.thread_id), this.runtime.getPendingServerRequests(false));
202
212
  }
203
213
  async handleThreadList(input) {
204
214
  const response = await this.runtime.request('thread/list', {
@@ -210,7 +220,7 @@ export class CodexWorkerApp {
210
220
  this.runtime.rememberThreadId(row.id);
211
221
  }
212
222
  }
213
- return JSON.stringify(response, null, 2);
223
+ return renderThreadListMarkdown(response.data ?? [], this.runtime.getPendingServerRequests(false));
214
224
  }
215
225
  async handleTurnStart(input) {
216
226
  const built = await this.runtime.buildTurnStartParams({
@@ -222,11 +232,44 @@ export class CodexWorkerApp {
222
232
  const bridged = await this.runtime.requestWithBridge('turn/start', built.params, {
223
233
  threadId: input.thread_id,
224
234
  });
225
- return JSON.stringify({
226
- method: 'turn/start',
227
- remapped_from: built.remappedFrom,
228
- ...bridged,
229
- }, null, 2);
235
+ const remapNote = built.remappedFrom ? ` (remapped from ${built.remappedFrom})` : '';
236
+ const header = [
237
+ `thread_id: \`${input.thread_id}\``,
238
+ `operation_id: \`${bridged.operationId}\`${remapNote}`,
239
+ ];
240
+ if (bridged.status === 'pending_request') {
241
+ const reqCount = bridged.pendingRequestIds?.length ?? 0;
242
+ return [
243
+ `**Turn started -- approval needed**`,
244
+ ...header,
245
+ `pending_requests: ${reqCount}`,
246
+ '',
247
+ '**ACTION REQUIRED:**',
248
+ 'The agent needs approval before it can proceed. Use `codex-request-list` to see what it needs, then `codex-request-respond` to approve or decline.',
249
+ '',
250
+ '**After approving:**',
251
+ `Use \`codex-wait\` with \`operation_id: "${bridged.operationId}"\` to block until the turn completes.`,
252
+ ].join('\n');
253
+ }
254
+ if (bridged.status === 'completed') {
255
+ return [
256
+ `**Turn completed**`,
257
+ ...header,
258
+ '',
259
+ '**What to do next:**',
260
+ `- Use \`codex-thread-read\` with \`thread_id: "${input.thread_id}"\` to inspect the agent's output and file changes.`,
261
+ '- Use `codex-turn-start` to send follow-up instructions.',
262
+ ].join('\n');
263
+ }
264
+ return [
265
+ `**Turn started -- agent working**`,
266
+ ...header,
267
+ '',
268
+ '**What to do next:**',
269
+ `- Use \`codex-wait\` with \`operation_id: "${bridged.operationId}"\` to block until the agent finishes or asks for approval.`,
270
+ '- Check `codex-request-list` for any pending approvals.',
271
+ '- For parallel work, start turns on other threads now.',
272
+ ].join('\n');
230
273
  }
231
274
  async handleTurnSteer(input) {
232
275
  const params = this.runtime.buildTurnSteerParams({
@@ -237,17 +280,27 @@ export class CodexWorkerApp {
237
280
  const bridged = await this.runtime.requestWithBridge('turn/steer', params, {
238
281
  threadId: input.thread_id,
239
282
  });
240
- return JSON.stringify({
241
- method: 'turn/steer',
242
- ...bridged,
243
- }, null, 2);
283
+ return [
284
+ `**Turn steered**`,
285
+ `thread_id: \`${input.thread_id}\``,
286
+ `operation_id: \`${bridged.operationId}\``,
287
+ '',
288
+ 'The agent is adjusting course with your new instructions.',
289
+ `Use \`codex-wait\` with \`operation_id: "${bridged.operationId}"\` to block until it finishes.`,
290
+ ].join('\n');
244
291
  }
245
292
  async handleTurnInterrupt(input) {
246
- const response = await this.runtime.request('turn/interrupt', {
293
+ await this.runtime.request('turn/interrupt', {
247
294
  threadId: input.thread_id,
248
295
  turnId: input.turn_id,
249
296
  });
250
- return JSON.stringify(response, null, 2);
297
+ return [
298
+ `**Turn interrupted**`,
299
+ `thread_id: \`${input.thread_id}\``,
300
+ `turn_id: \`${input.turn_id}\``,
301
+ '',
302
+ 'The turn has been stopped. Use `codex-turn-start` to begin a new turn with corrected instructions.',
303
+ ].join('\n');
251
304
  }
252
305
  async handleRequestRespond(input) {
253
306
  const pending = this.runtime.getPendingServerRequest(input.request_id);
@@ -256,19 +309,53 @@ export class CodexWorkerApp {
256
309
  }
257
310
  const payload = this.buildServerRequestPayload(pending.method, input);
258
311
  await this.runtime.respondToServerRequest(input.request_id, payload);
259
- return JSON.stringify({
260
- request_id: input.request_id,
261
- method: pending.method,
262
- payload,
263
- status: 'responded',
264
- }, null, 2);
312
+ return [
313
+ `**Request responded**`,
314
+ `request_id: \`${String(input.request_id)}\``,
315
+ `method: \`${pending.method}\``,
316
+ '',
317
+ '**What to do next:**',
318
+ '- The agent will continue working. Use `codex-wait` to block until it finishes or needs another approval.',
319
+ '- Check `codex-request-list` for any remaining pending requests.',
320
+ ].join('\n');
265
321
  }
266
322
  async handleWait(input) {
267
323
  const timeoutMs = input.timeout_ms ?? REQUEST_TIMEOUT_MS;
268
324
  const pollIntervalMs = input.poll_interval_ms ?? OPERATION_POLL_INTERVAL_MS;
269
325
  if (input.operation_id) {
270
326
  const operation = await this.runtime.waitForOperation(input.operation_id, timeoutMs, pollIntervalMs);
271
- return JSON.stringify(operation, null, 2);
327
+ const threadId = operation.threadId ?? 'unknown';
328
+ if (operation.status === 'failed') {
329
+ return [
330
+ `**Operation failed**`,
331
+ `operation_id: \`${operation.operationId}\``,
332
+ `error: ${operation.error ?? 'unknown error'}`,
333
+ '',
334
+ '**What to do next:**',
335
+ `- Use \`codex-thread-read\` with \`thread_id: "${threadId}"\` to inspect what happened.`,
336
+ '- Fix the issue and use `codex-turn-start` to retry.',
337
+ ].join('\n');
338
+ }
339
+ if (operation.pendingRequestIds.length > 0) {
340
+ return [
341
+ `**Operation paused -- approval needed**`,
342
+ `operation_id: \`${operation.operationId}\``,
343
+ `pending_requests: ${operation.pendingRequestIds.length}`,
344
+ '',
345
+ '**ACTION REQUIRED:**',
346
+ 'Use `codex-request-list` to see what the agent needs, then `codex-request-respond` to approve.',
347
+ `After approving, call \`codex-wait\` again with \`operation_id: "${operation.operationId}"\`.`,
348
+ ].join('\n');
349
+ }
350
+ return [
351
+ `**Operation completed**`,
352
+ `operation_id: \`${operation.operationId}\``,
353
+ `thread_id: \`${threadId}\``,
354
+ '',
355
+ '**What to do next:**',
356
+ `- Use \`codex-thread-read\` with \`thread_id: "${threadId}"\` to inspect the agent's output.`,
357
+ '- Use `codex-turn-start` to send follow-up instructions.',
358
+ ].join('\n');
272
359
  }
273
360
  if (input.thread_id) {
274
361
  const start = Date.now();
@@ -279,20 +366,21 @@ export class CodexWorkerApp {
279
366
  });
280
367
  const statusType = response.thread?.status?.type;
281
368
  if (statusType !== 'active') {
282
- return JSON.stringify({
283
- thread_id: input.thread_id,
284
- status: statusType ?? 'unknown',
285
- thread: response.thread ?? null,
286
- }, null, 2);
369
+ return [
370
+ `**Thread idle**`,
371
+ `thread_id: \`${input.thread_id}\``,
372
+ `status: \`${statusType ?? 'unknown'}\``,
373
+ '',
374
+ '**What to do next:**',
375
+ `- Use \`codex-thread-read\` with \`thread_id: "${input.thread_id}"\` to review the agent's work.`,
376
+ '- Use `codex-turn-start` to send another task.',
377
+ ].join('\n');
287
378
  }
288
379
  await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));
289
380
  }
290
381
  throw new Error(`Timed out waiting for thread ${input.thread_id}`);
291
382
  }
292
- return JSON.stringify({
293
- requests: this.runtime.getPendingServerRequests(false),
294
- operations: [],
295
- }, null, 2);
383
+ return renderRequestListMarkdown(this.runtime.getPendingServerRequests(false));
296
384
  }
297
385
  buildServerRequestPayload(method, input) {
298
386
  if (input.payload) {
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,GAWtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAS3D,MAAM,OAAO,cAAc;IACR,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;IAE9C,KAAK,CAAC,UAAU,KAAmB,CAAC;IAEpC,KAAK,CAAC,QAAQ;QACZ,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,SAAS;QACb,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;YAC1D,OAAO,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,qBAAqB,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,aAAa;QACX,MAAM,IAAI,GAAyB;YACjC;gBACE,GAAG,EAAE,iBAAiB;gBACtB,IAAI,EAAE,eAAe;gBACrB,WAAW,EAAE,mCAAmC;gBAChD,QAAQ,EAAE,kBAAkB;aAC7B;YACD;gBACE,GAAG,EAAE,gBAAgB;gBACrB,IAAI,EAAE,cAAc;gBACpB,WAAW,EAAE,kCAAkC;gBAC/C,QAAQ,EAAE,kBAAkB;aAC7B;YACD;gBACE,GAAG,EAAE,iBAAiB;gBACtB,IAAI,EAAE,eAAe;gBACrB,WAAW,EAAE,kCAAkC;gBAC/C,QAAQ,EAAE,kBAAkB;aAC7B;YACD;gBACE,GAAG,EAAE,kBAAkB;gBACvB,IAAI,EAAE,gBAAgB;gBACtB,WAAW,EAAE,yCAAyC;gBACtD,QAAQ,EAAE,kBAAkB;aAC7B;SACF,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;YACzD,IAAI,CAAC,IAAI,CACP;gBACE,GAAG,EAAE,kBAAkB,QAAQ,EAAE;gBACjC,IAAI,EAAE,UAAU,QAAQ,EAAE;gBAC1B,WAAW,EAAE,2BAA2B;gBACxC,QAAQ,EAAE,kBAAkB;aAC7B,EACD;gBACE,GAAG,EAAE,kBAAkB,QAAQ,SAAS;gBACxC,IAAI,EAAE,UAAU,QAAQ,SAAS;gBACjC,WAAW,EAAE,wCAAwC;gBACrD,QAAQ,EAAE,kBAAkB;aAC7B,CACF,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAW;QAC5B,IAAI,GAAG,KAAK,iBAAiB,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAEvE,CAAC;YACF,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;gBACtC,IAAI,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;oBAC/B,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC;YACD,OAAO;gBACL,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;aACxC,CAAC;QACJ,CAAC;QAED,IAAI,GAAG,KAAK,gBAAgB,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG;gBACf,IAAI,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC;aAC3C,CAAC;YACF,OAAO;gBACL,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;aACxC,CAAC;QACJ,CAAC;QAED,IAAI,GAAG,KAAK,iBAAiB,EAAE,CAAC;YAC9B,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBAC1C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;gBACxC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC;aACpD,CAAC,CAAC;YACH,OAAO;gBACL,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;aAChE,CAAC;QACJ,CAAC;QAED,IAAI,GAAG,KAAK,kBAAkB,EAAE,CAAC;YAC/B,OAAO;gBACL,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,KAAK,CAAC;iBACvD,EAAE,IAAI,EAAE,CAAC,CAAC;aACZ,CAAC;QACJ,CAAC;QAED,MAAM,iBAAiB,GAAG,qCAAqC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1E,IAAI,iBAAiB,EAAE,CAAC;YACtB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,iBAAiB,CAAC,CAAC,CAAE,CAAC,CAAC;YAC3D,OAAO;gBACL,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,SAAS,EAAE,QAAQ;oBACnB,MAAM,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC;iBACrD,EAAE,IAAI,EAAE,CAAC,CAAC;aACZ,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5D,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,CAAC;YACrD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE;gBACzD,QAAQ;gBACR,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;YACH,OAAO;gBACL,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;aACxC,CAAC;QACJ,CAAC;QAED,OAAO;YACL,QAAQ,EAAE,kBAAkB;YAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,yBAAyB,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;SACzE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,IAAa;QACxC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAChE,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAC5C,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,oBAAoB;gBACvB,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAA6B,CAAC,CAAC;YAC/D,KAAK,qBAAqB;gBACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAA8B,CAAC,CAAC;YACjE,KAAK,mBAAmB;gBACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAA4B,CAAC,CAAC;YAC7D,KAAK,mBAAmB;gBACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAA4B,CAAC,CAAC;YAC7D,KAAK,kBAAkB;gBACrB,OAAO,IAAI,CAAC,eAAe,CAAC,SAA2B,CAAC,CAAC;YAC3D,KAAK,kBAAkB;gBACrB,OAAO,IAAI,CAAC,eAAe,CAAC,SAA2B,CAAC,CAAC;YAC3D,KAAK,sBAAsB;gBACzB,OAAO,IAAI,CAAC,mBAAmB,CAAC,SAA+B,CAAC,CAAC;YACnE,KAAK,oBAAoB;gBACvB,OAAO,IAAI,CAAC,SAAS,CAAC;oBACpB,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAC7C,OAAO,CAAE,SAA4C,CAAC,gBAAgB,CAAC,CACxE;iBACF,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACd,KAAK,uBAAuB;gBAC1B,OAAO,IAAI,CAAC,oBAAoB,CAAC,SAAgC,CAAC,CAAC;YACrE,KAAK,YAAY;gBACf,OAAO,IAAI,CAAC,UAAU,CAAC,SAAsB,CAAC,CAAC;YACjD;gBACE,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,KAAuB;QACrD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC;YACtD,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,qBAAqB,EAAE,KAAK,CAAC,sBAAsB;SACpD,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC1E,MAAM,QAAQ,GAAI,QAAyC,CAAC,MAAM,EAAE,EAAE,CAAC;QACvE,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,MAAM,EAAE,cAAc;YACtB,aAAa,EAAE,KAAK,CAAC,YAAY;YACjC,MAAM,EAAE,QAAQ;SACjB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,KAAwB;QACvD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC;YACvD,QAAQ,EAAE,KAAK,CAAC,SAAS;YACzB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,qBAAqB,EAAE,KAAK,CAAC,sBAAsB;SACpD,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3E,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,MAAM,EAAE,eAAe;YACvB,aAAa,EAAE,KAAK,CAAC,YAAY;YACjC,MAAM,EAAE,QAAQ;SACjB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,KAAsB;QACnD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE;YACzD,QAAQ,EAAE,KAAK,CAAC,SAAS;YACzB,YAAY,EAAE,KAAK,CAAC,aAAa,IAAI,IAAI;SAC1C,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,KAAsB;QACnD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE;YACzD,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI;SAC7B,CAEA,CAAC;QACF,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;YACtC,IAAI,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;gBAC/B,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,KAAqB;QACjD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;YACpD,QAAQ,EAAE,KAAK,CAAC,SAAS;YACzB,SAAS,EAAE,KAAK,CAAC,UAAU;YAC3B,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,EAAE;YAC/E,QAAQ,EAAE,KAAK,CAAC,SAAS;SAC1B,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,MAAM,EAAE,YAAY;YACpB,aAAa,EAAE,KAAK,CAAC,YAAY;YACjC,GAAG,OAAO;SACX,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,KAAqB;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;YAC/C,QAAQ,EAAE,KAAK,CAAC,SAAS;YACzB,cAAc,EAAE,KAAK,CAAC,gBAAgB;YACtC,SAAS,EAAE,KAAK,CAAC,UAAU;SAC5B,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE;YACzE,QAAQ,EAAE,KAAK,CAAC,SAAS;SAC1B,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,MAAM,EAAE,YAAY;YACpB,GAAG,OAAO;SACX,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,KAAyB;QACzD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE;YAC5D,QAAQ,EAAE,KAAK,CAAC,SAAS;YACzB,MAAM,EAAE,KAAK,CAAC,OAAO;SACtB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,KAA0B;QAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACvE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,qCAAqC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACnF,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACtE,MAAM,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO;YACP,MAAM,EAAE,WAAW;SACpB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,KAAgB;QACvC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,IAAI,kBAAkB,CAAC;QACzD,MAAM,cAAc,GAAG,KAAK,CAAC,gBAAgB,IAAI,0BAA0B,CAAC;QAE5E,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,YAAY,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;YACrG,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,SAAS,EAAE,CAAC;gBACvC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE;oBACzD,QAAQ,EAAE,KAAK,CAAC,SAAS;oBACzB,YAAY,EAAE,KAAK;iBACpB,CAIA,CAAC;gBACF,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;gBACjD,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;oBAC5B,OAAO,IAAI,CAAC,SAAS,CAAC;wBACpB,SAAS,EAAE,KAAK,CAAC,SAAS;wBAC1B,MAAM,EAAE,UAAU,IAAI,SAAS;wBAC/B,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,IAAI;qBAChC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBACd,CAAC;gBACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;YACtE,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,KAAK,CAAC;YACtD,UAAU,EAAE,EAAE;SACf,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACd,CAAC;IAEO,yBAAyB,CAAC,MAAc,EAAE,KAA0B;QAC1E,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO,KAAK,CAAC,OAAO,CAAC;QACvB,CAAC;QAED,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,uCAAuC,CAAC;YAC7C,KAAK,iCAAiC;gBACpC,OAAO;oBACL,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,QAAQ;iBACrC,CAAC;YACJ,KAAK,4BAA4B;gBAC/B,OAAO;oBACL,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;iBAC7B,CAAC;YACJ,KAAK,+BAA+B;gBAClC,OAAO;oBACL,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,QAAQ;oBAChC,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI;oBAC9B,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI;iBAC1B,CAAC;YACJ,KAAK,kCAAkC;gBACrC,OAAO;oBACL,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;oBACpC,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,SAAS;iBAChC,CAAC;YACJ,KAAK,gBAAgB;gBACnB,OAAO;oBACL,YAAY,EAAE,EAAE;oBAChB,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,KAAK,oBAAoB,CAAC;YAC1B,KAAK,qBAAqB;gBACxB,OAAO;oBACL,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,UAAU;iBACvC,CAAC;YACJ;gBACE,MAAM,IAAI,KAAK,CACb,kDAAkD,MAAM,+BAA+B,CACxF,CAAC;QACN,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/app.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { PendingServerRequest, RuntimeOperation } from '../types/codex.js';
2
+ export declare function renderThreadMarkdown(raw: unknown, operations: RuntimeOperation[], pendingRequests: PendingServerRequest[]): string;
3
+ export declare function renderThreadListMarkdown(rawThreads: unknown[], pendingRequests: PendingServerRequest[]): string;
4
+ export declare function renderRequestListMarkdown(requests: PendingServerRequest[]): string;
@@ -0,0 +1,107 @@
1
+ function extractThread(raw) {
2
+ const obj = (raw ?? {});
3
+ const thread = (obj.thread ?? obj);
4
+ return {
5
+ id: typeof thread.id === 'string' ? thread.id : undefined,
6
+ status: thread.status,
7
+ model: typeof thread.model === 'string' ? thread.model : undefined,
8
+ createdAt: typeof thread.createdAt === 'string' ? thread.createdAt : undefined,
9
+ };
10
+ }
11
+ function requestsForThread(requests, threadId) {
12
+ if (!threadId)
13
+ return requests;
14
+ return requests.filter((r) => {
15
+ const params = r.params;
16
+ return params?.threadId === threadId;
17
+ });
18
+ }
19
+ export function renderThreadMarkdown(raw, operations, pendingRequests) {
20
+ const thread = extractThread(raw);
21
+ const threadId = thread.id ?? 'unknown';
22
+ const statusType = thread.status?.type ?? 'unknown';
23
+ const threadRequests = requestsForThread(pendingRequests, thread.id);
24
+ const lines = [
25
+ `# Thread: ${threadId}`,
26
+ '',
27
+ '| Field | Value |',
28
+ '|---|---|',
29
+ `| **Status** | \`${statusType}\` |`,
30
+ ...(thread.model ? [`| **Model** | \`${thread.model}\` |`] : []),
31
+ ...(thread.createdAt ? [`| **Created** | ${thread.createdAt} |`] : []),
32
+ '',
33
+ ];
34
+ if (operations.length > 0) {
35
+ lines.push('## Operations', '');
36
+ for (const op of operations) {
37
+ const time = op.completedAt ?? op.startedAt;
38
+ lines.push(`- \`${op.operationId}\` [${op.status}] ${op.method} -- ${time}`);
39
+ }
40
+ lines.push('');
41
+ }
42
+ if (threadRequests.length > 0) {
43
+ lines.push(`## Pending Requests (${threadRequests.length})`, '');
44
+ for (const req of threadRequests) {
45
+ lines.push(`### ${String(req.id)} (${req.method})`);
46
+ lines.push(`Use \`codex-request-respond\` with \`request_id: "${String(req.id)}"\` and \`decision: "accept"\`.`);
47
+ lines.push('');
48
+ }
49
+ }
50
+ lines.push('## What to do next', '');
51
+ if (threadRequests.length > 0) {
52
+ lines.push(`**ACTION REQUIRED** -- ${threadRequests.length} pending request(s) need your response. Use \`codex-request-list\` to see details, then \`codex-request-respond\` to approve or decline.`);
53
+ }
54
+ else if (statusType === 'active') {
55
+ lines.push(`The agent is still working. Use \`codex-wait\` with \`thread_id: "${threadId}"\` to block until it finishes or needs approval.`);
56
+ }
57
+ else if (statusType === 'idle' || statusType === 'completed') {
58
+ lines.push(`Thread is idle. Use \`codex-turn-start\` to send a new task, or \`codex-thread-read\` with \`include_turns: true\` for full conversation history.`);
59
+ }
60
+ else {
61
+ lines.push(`Use \`codex-thread-resume\` to reload this thread before starting a turn.`);
62
+ }
63
+ return lines.join('\n');
64
+ }
65
+ export function renderThreadListMarkdown(rawThreads, pendingRequests) {
66
+ const threads = rawThreads.map(extractThread);
67
+ const lines = [
68
+ `# Threads (${threads.length} total)`,
69
+ '',
70
+ '| ID | Status |',
71
+ '|---|---|',
72
+ ...threads.map((t) => `| ${t.id ?? 'unknown'} | ${t.status?.type ?? 'unknown'} |`),
73
+ ];
74
+ const pending = pendingRequests.filter((r) => r.status === 'pending');
75
+ if (pending.length > 0) {
76
+ lines.push('', `## Pending Requests (${pending.length})`, '');
77
+ for (const req of pending) {
78
+ const params = req.params;
79
+ const tid = typeof params?.threadId === 'string' ? params.threadId : '?';
80
+ lines.push(`- ${tid} / ${String(req.id)}: ${req.method}`);
81
+ }
82
+ }
83
+ return lines.join('\n');
84
+ }
85
+ export function renderRequestListMarkdown(requests) {
86
+ const pending = requests.filter((r) => r.status === 'pending');
87
+ if (pending.length === 0) {
88
+ return [
89
+ '**No pending requests**',
90
+ '',
91
+ 'All agents are running without needing approval.',
92
+ ].join('\n');
93
+ }
94
+ const lines = [
95
+ `# Pending Requests (${pending.length})`,
96
+ '',
97
+ '| Request ID | Method | Created |',
98
+ '|---|---|---|',
99
+ ...pending.map((r) => `| ${String(r.id)} | ${r.method} | ${r.createdAt} |`),
100
+ '',
101
+ '## How to respond',
102
+ '',
103
+ 'Use `codex-request-respond` with the `request_id` and `decision: "accept"` to approve, or `decision: "decline"` to reject.',
104
+ ];
105
+ return lines.join('\n');
106
+ }
107
+ //# sourceMappingURL=task-markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-markdown.js","sourceRoot":"","sources":["../../../src/mcp/task-markdown.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { CodexRuntime } from '../services/codex-runtime.js';
2
+ export declare function buildThreadBanner(runtime: CodexRuntime): string;
3
+ export declare function buildRequestBanner(runtime: CodexRuntime): string;
@@ -0,0 +1,44 @@
1
+ export function buildThreadBanner(runtime) {
2
+ const threadIds = runtime.listKnownThreadIds();
3
+ if (threadIds.length === 0) {
4
+ return '';
5
+ }
6
+ const operations = runtime.getAllOperations();
7
+ const requests = runtime.getPendingServerRequests(false);
8
+ const active = operations.filter((op) => op.status === 'running').length;
9
+ const pending = requests.length;
10
+ const lines = [
11
+ '---',
12
+ `AGENT STATUS: ${active} active | ${pending} pending requests`,
13
+ ];
14
+ for (const threadId of threadIds.slice(-3)) {
15
+ const threadOps = operations.filter((op) => op.threadId === threadId);
16
+ const threadReqs = requests.filter((r) => {
17
+ const params = r.params;
18
+ return params?.threadId === threadId;
19
+ });
20
+ const status = threadOps.some((op) => op.status === 'running') ? 'active' : 'idle';
21
+ const reqNote = threadReqs.length > 0 ? ` -- ${threadReqs.length} pending requests` : '';
22
+ lines.push(`- ${threadId} [${status}]${reqNote}`);
23
+ }
24
+ lines.push('Read codex://threads for full details.');
25
+ return lines.join('\n');
26
+ }
27
+ export function buildRequestBanner(runtime) {
28
+ const requests = runtime.getPendingServerRequests(false);
29
+ if (requests.length === 0) {
30
+ return '';
31
+ }
32
+ const lines = [
33
+ '---',
34
+ `ACTION REQUIRED -- ${requests.length} request(s) waiting for your response:`,
35
+ ];
36
+ for (const req of requests.slice(0, 5)) {
37
+ const params = req.params;
38
+ const threadId = typeof params?.threadId === 'string' ? params.threadId : '?';
39
+ lines.push(`- ${String(req.id)} (${threadId}): ${req.method}`);
40
+ }
41
+ lines.push('Use codex-request-respond { "request_id": "<id>", "decision": "accept" }');
42
+ return lines.join('\n');
43
+ }
44
+ //# sourceMappingURL=tool-banners.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-banners.js","sourceRoot":"","sources":["../../../src/mcp/tool-banners.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB,CAAC,OAAqB;IACrD,MAAM,SAAS,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAC/C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IACzE,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC;IAEhC,MAAM,KAAK,GAAG;QACZ,KAAK;QACL,iBAAiB,MAAM,aAAa,OAAO,mBAAmB;KAC/D,CAAC;IAEF,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;QACtE,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YACvC,MAAM,MAAM,GAAG,CAAC,CAAC,MAA6C,CAAC;YAC/D,OAAO,MAAM,EAAE,QAAQ,KAAK,QAAQ,CAAC;QACvC,CAAC,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;QACnF,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,UAAU,CAAC,MAAM,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;QACzF,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ,KAAK,MAAM,IAAI,OAAO,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IACrD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAqB;IACtD,MAAM,QAAQ,GAAG,OAAO,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;IACzD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAG;QACZ,KAAK;QACL,sBAAsB,QAAQ,CAAC,MAAM,wCAAwC;KAC9E,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,GAAG,CAAC,MAA6C,CAAC;QACjE,MAAM,QAAQ,GAAG,OAAO,MAAM,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;QAC9E,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,QAAQ,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;IACvF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -158,7 +158,12 @@ export interface ToolDefinition {
158
158
  };
159
159
  validate: (value: unknown) => unknown;
160
160
  }
161
- export declare function createToolDefinitions(modelIds: string[]): ToolDefinition[];
161
+ export interface CreateToolDefinitionsInput {
162
+ modelIds: string[];
163
+ threadBanner: string;
164
+ requestBanner: string;
165
+ }
166
+ export declare function createToolDefinitions(input: CreateToolDefinitionsInput): ToolDefinition[];
162
167
  export type ThreadStartInput = z.infer<typeof threadStartSchema>;
163
168
  export type ThreadResumeInput = z.infer<typeof threadResumeSchema>;
164
169
  export type ThreadReadInput = z.infer<typeof threadReadSchema>;