mcp-codex-worker 0.1.13 → 0.1.15

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.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { type ToolDefinition } from './mcp/tool-definitions.js';
2
+ import { TaskManager } from './task/task-manager.js';
2
3
  export interface ResourceDefinition {
3
4
  uri: string;
4
5
  name: string;
@@ -7,7 +8,10 @@ export interface ResourceDefinition {
7
8
  }
8
9
  export declare class CodexWorkerApp {
9
10
  private readonly runtime;
11
+ private taskManager;
12
+ private registry;
10
13
  initialize(): Promise<void>;
14
+ getTaskManager(): TaskManager;
11
15
  shutdown(): Promise<void>;
12
16
  listTools(): Promise<ToolDefinition[]>;
13
17
  listResources(): ResourceDefinition[];
@@ -25,5 +29,10 @@ export declare class CodexWorkerApp {
25
29
  private handleTurnInterrupt;
26
30
  private handleRequestRespond;
27
31
  private handleWait;
32
+ private handleSpawnTask;
33
+ private handleWaitTask;
34
+ private handleRespondTask;
35
+ private handleMessageTask;
36
+ private handleCancelTask;
28
37
  private buildServerRequestPayload;
29
38
  }
package/dist/src/app.js CHANGED
@@ -1,11 +1,32 @@
1
1
  import { createToolDefinitions, } from './mcp/tool-definitions.js';
2
2
  import { buildRequestBanner, buildThreadBanner } from './mcp/tool-banners.js';
3
3
  import { renderRequestListMarkdown, renderThreadListMarkdown, renderThreadMarkdown, } from './mcp/task-markdown.js';
4
- import { OPERATION_POLL_INTERVAL_MS, REQUEST_TIMEOUT_MS } from './config/defaults.js';
4
+ import { OPERATION_BRIDGE_TIMEOUT_MS, OPERATION_POLL_INTERVAL_MS, REQUEST_TIMEOUT_MS } from './config/defaults.js';
5
5
  import { CodexRuntime } from './services/codex-runtime.js';
6
+ import { TaskManager } from './task/task-manager.js';
7
+ import { TaskStatus, isTerminalStatus } from './task/task-state.js';
8
+ import { ProviderRegistry } from './execution/provider-registry.js';
9
+ import { CodexAdapter } from './execution/codex-adapter.js';
10
+ import { mapToWireState } from './task/wire-state-mapper.js';
11
+ import { computePollFrequency } from './mcp/sep1686-handlers.js';
12
+ import { renderScoreboard, renderTaskDetail, renderSummaryLog, renderVerboseLog, } from './mcp/resource-renderers.js';
13
+ import { validateResponseAgainstCapabilities } from './execution/provider-capabilities.js';
6
14
  export class CodexWorkerApp {
7
15
  runtime = new CodexRuntime();
8
- async initialize() { }
16
+ taskManager;
17
+ registry;
18
+ async initialize() {
19
+ // Create TaskManager (in-memory only for now)
20
+ this.taskManager = new TaskManager({ persistenceRoot: undefined });
21
+ // Create ProviderRegistry and register the Codex adapter
22
+ this.registry = new ProviderRegistry();
23
+ const codexAdapter = new CodexAdapter({});
24
+ this.registry.register(codexAdapter);
25
+ this.registry.setDefault('codex');
26
+ }
27
+ getTaskManager() {
28
+ return this.taskManager;
29
+ }
9
30
  async shutdown() {
10
31
  await this.runtime.shutdown();
11
32
  }
@@ -49,6 +70,44 @@ export class CodexWorkerApp {
49
70
  mimeType: 'application/json',
50
71
  },
51
72
  ];
73
+ // Task tracking resources
74
+ base.push({
75
+ uri: 'task:///all',
76
+ name: 'Task Scoreboard',
77
+ description: 'Compact overview of all tracked tasks with status badges',
78
+ mimeType: 'text/plain',
79
+ }, {
80
+ uri: 'task:///{id}',
81
+ name: 'Task Detail',
82
+ description: 'Full detail view for a specific task (template: replace {id})',
83
+ mimeType: 'text/markdown',
84
+ }, {
85
+ uri: 'task:///{id}/log',
86
+ name: 'Task Summary Log',
87
+ description: 'Last 20 output lines for a task (template: replace {id})',
88
+ mimeType: 'text/plain',
89
+ }, {
90
+ uri: 'task:///{id}/log.verbose',
91
+ name: 'Task Verbose Log',
92
+ description: 'Full output log for a task (template: replace {id})',
93
+ mimeType: 'text/plain',
94
+ });
95
+ // Dynamic task detail resources for known tasks
96
+ if (this.taskManager) {
97
+ for (const task of this.taskManager.getAllTasks()) {
98
+ base.push({
99
+ uri: `task:///${task.id}`,
100
+ name: `Task ${task.id}`,
101
+ description: `Task detail: ${task.prompt.slice(0, 50)}`,
102
+ mimeType: 'text/markdown',
103
+ }, {
104
+ uri: `task:///${task.id}/log`,
105
+ name: `Task ${task.id} log`,
106
+ description: 'Summary log for this task',
107
+ mimeType: 'text/plain',
108
+ });
109
+ }
110
+ }
52
111
  for (const threadId of this.runtime.listKnownThreadIds()) {
53
112
  base.push({
54
113
  uri: `codex://thread/${threadId}`,
@@ -65,6 +124,45 @@ export class CodexWorkerApp {
65
124
  return base;
66
125
  }
67
126
  async readResource(uri) {
127
+ // ---- Task tracking resources ----
128
+ if (uri === 'task:///all') {
129
+ return {
130
+ mimeType: 'text/plain',
131
+ text: renderScoreboard(this.taskManager.getAllTasks()),
132
+ };
133
+ }
134
+ const taskVerboseLogMatch = /^task:\/\/\/([^/]+)\/log\.verbose$/.exec(uri);
135
+ if (taskVerboseLogMatch) {
136
+ const taskId = decodeURIComponent(taskVerboseLogMatch[1]);
137
+ const task = this.taskManager.getTask(taskId);
138
+ if (!task) {
139
+ return { mimeType: 'text/plain', text: `Task not found: ${taskId}` };
140
+ }
141
+ return { mimeType: 'text/plain', text: renderVerboseLog(task) };
142
+ }
143
+ const taskSummaryLogMatch = /^task:\/\/\/([^/]+)\/log$/.exec(uri);
144
+ if (taskSummaryLogMatch) {
145
+ const taskId = decodeURIComponent(taskSummaryLogMatch[1]);
146
+ const task = this.taskManager.getTask(taskId);
147
+ if (!task) {
148
+ return { mimeType: 'text/plain', text: `Task not found: ${taskId}` };
149
+ }
150
+ return { mimeType: 'text/plain', text: renderSummaryLog(task) };
151
+ }
152
+ const taskDetailMatch = /^task:\/\/\/([^/]+)$/.exec(uri);
153
+ if (taskDetailMatch) {
154
+ const taskId = decodeURIComponent(taskDetailMatch[1]);
155
+ // Skip the template placeholder
156
+ if (taskId === '{id}') {
157
+ return { mimeType: 'text/markdown', text: 'Provide a real task ID in place of {id}.' };
158
+ }
159
+ const task = this.taskManager.getTask(taskId);
160
+ if (!task) {
161
+ return { mimeType: 'text/markdown', text: `Task not found: ${taskId}` };
162
+ }
163
+ return { mimeType: 'text/markdown', text: renderTaskDetail(task) };
164
+ }
165
+ // ---- Legacy codex:// resources ----
68
166
  if (uri === 'codex://threads') {
69
167
  const response = await this.runtime.request('thread/list', { limit: 50 });
70
168
  for (const row of response.data ?? []) {
@@ -157,6 +255,16 @@ export class CodexWorkerApp {
157
255
  return this.handleRequestRespond(validated);
158
256
  case 'codex-wait':
159
257
  return this.handleWait(validated);
258
+ case 'spawn-task':
259
+ return this.handleSpawnTask(validated);
260
+ case 'wait-task':
261
+ return this.handleWaitTask(validated);
262
+ case 'respond-task':
263
+ return this.handleRespondTask(validated);
264
+ case 'message-task':
265
+ return this.handleMessageTask(validated);
266
+ case 'cancel-task':
267
+ return this.handleCancelTask(validated);
160
268
  default:
161
269
  throw new Error(`Unhandled tool: ${name}`);
162
270
  }
@@ -385,6 +493,264 @@ export class CodexWorkerApp {
385
493
  }
386
494
  return renderRequestListMarkdown(this.runtime.getPendingServerRequests(false));
387
495
  }
496
+ // ---------------------------------------------------------------------------
497
+ // New unified task tool handlers
498
+ // ---------------------------------------------------------------------------
499
+ async handleSpawnTask(input) {
500
+ const provider = input.provider ?? 'codex';
501
+ const taskType = input.task_type ?? 'coder';
502
+ // 1. Create the task
503
+ const createInput = {
504
+ prompt: input.prompt,
505
+ cwd: input.cwd ?? process.cwd(),
506
+ provider,
507
+ taskType,
508
+ };
509
+ if (input.model !== undefined)
510
+ createInput.model = input.model;
511
+ if (input.timeout_ms !== undefined)
512
+ createInput.timeoutMs = input.timeout_ms;
513
+ if (input.labels !== undefined)
514
+ createInput.labels = input.labels;
515
+ if (input.depends_on !== undefined)
516
+ createInput.dependsOn = input.depends_on;
517
+ const task = this.taskManager.createTask(createInput);
518
+ // 2. Get handle
519
+ const handle = this.taskManager.getHandle(task.id);
520
+ if (!handle) {
521
+ throw new Error(`Failed to get handle for task ${task.id}`);
522
+ }
523
+ // 3. Get adapter
524
+ const adapter = this.registry.getAdapter(provider) ?? this.registry.selectForTaskType(taskType);
525
+ if (!adapter) {
526
+ throw new Error(`No provider adapter available for ${provider}/${taskType}`);
527
+ }
528
+ // 4. Build spawn options
529
+ const spawnOptions = {
530
+ taskId: task.id,
531
+ prompt: input.prompt,
532
+ cwd: input.cwd ?? process.cwd(),
533
+ timeout: input.timeout_ms ?? 0,
534
+ };
535
+ if (input.model !== undefined)
536
+ spawnOptions.model = input.model;
537
+ // 5. Dispatch asynchronously (don't block MCP response)
538
+ setImmediate(() => {
539
+ adapter.spawn(spawnOptions, handle).catch((err) => {
540
+ const message = err instanceof Error ? err.message : String(err);
541
+ if (handle.isAlive()) {
542
+ handle.markFailed(`Spawn error: ${message}`);
543
+ }
544
+ });
545
+ });
546
+ // 6. Bridge window — poll for up to OPERATION_BRIDGE_TIMEOUT_MS to see if
547
+ // a question arrived immediately (fast first response)
548
+ const bridgeEnd = Date.now() + OPERATION_BRIDGE_TIMEOUT_MS;
549
+ let latestTask = task;
550
+ while (Date.now() < bridgeEnd) {
551
+ await new Promise((resolve) => setTimeout(resolve, OPERATION_POLL_INTERVAL_MS));
552
+ latestTask = this.taskManager.getTask(task.id);
553
+ if (!latestTask)
554
+ break;
555
+ if (isTerminalStatus(latestTask.status) || latestTask.status === TaskStatus.WAITING_ANSWER) {
556
+ break;
557
+ }
558
+ }
559
+ const current = latestTask ?? task;
560
+ const wireStatus = mapToWireState(current.status);
561
+ const pollFreq = computePollFrequency(current);
562
+ const result = {
563
+ task_id: task.id,
564
+ status: wireStatus,
565
+ poll_frequency: pollFreq,
566
+ resources: {
567
+ scoreboard: 'task:///all',
568
+ detail: `task:///${task.id}`,
569
+ log: `task:///${task.id}/log`,
570
+ },
571
+ };
572
+ if (current.sessionId) {
573
+ result['provider_session_id'] = current.sessionId;
574
+ }
575
+ if (current.status === TaskStatus.WAITING_ANSWER && current.pendingQuestions.length > 0) {
576
+ result['pending_question'] = current.pendingQuestions[0];
577
+ }
578
+ return JSON.stringify(result, null, 2);
579
+ }
580
+ async handleWaitTask(input) {
581
+ const timeoutMs = input.timeout_ms ?? 30_000;
582
+ const pollIntervalMs = input.poll_interval_ms ?? 1_000;
583
+ const taskId = input.task_id;
584
+ const task = this.taskManager.getTask(taskId);
585
+ if (!task) {
586
+ throw new Error(`Task not found: ${taskId}`);
587
+ }
588
+ // Poll until terminal, input_required, or timeout
589
+ const deadline = Date.now() + timeoutMs;
590
+ let current = task;
591
+ while (Date.now() < deadline) {
592
+ if (isTerminalStatus(current.status) || current.status === TaskStatus.WAITING_ANSWER) {
593
+ break;
594
+ }
595
+ await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));
596
+ const refreshed = this.taskManager.getTask(taskId);
597
+ if (!refreshed)
598
+ break;
599
+ current = refreshed;
600
+ }
601
+ const wireStatus = mapToWireState(current.status);
602
+ const result = {
603
+ task_id: taskId,
604
+ status: wireStatus,
605
+ };
606
+ if (current.sessionId) {
607
+ result['provider_session_id'] = current.sessionId;
608
+ }
609
+ if (current.status === TaskStatus.WAITING_ANSWER && current.pendingQuestions.length > 0) {
610
+ result['pending_question'] = current.pendingQuestions[0];
611
+ }
612
+ // Include last 10 lines of output
613
+ if (current.output.length > 0) {
614
+ result['output'] = current.output.slice(-10);
615
+ }
616
+ if (current.error) {
617
+ result['error'] = current.error;
618
+ }
619
+ return JSON.stringify(result, null, 2);
620
+ }
621
+ async handleRespondTask(input) {
622
+ const taskId = input.task_id;
623
+ const task = this.taskManager.getTask(taskId);
624
+ if (!task) {
625
+ throw new Error(`Task not found: ${taskId}`);
626
+ }
627
+ const handle = this.taskManager.getHandle(taskId);
628
+ if (!handle) {
629
+ throw new Error(`No handle for task ${taskId}`);
630
+ }
631
+ // Validate response type against adapter capabilities
632
+ const adapter = this.registry.getAdapter(task.provider);
633
+ if (adapter) {
634
+ const validation = validateResponseAgainstCapabilities(adapter.getCapabilities(), input.type);
635
+ if (!validation.ok) {
636
+ throw new Error(validation.reason ?? 'Unsupported response type');
637
+ }
638
+ }
639
+ // Dequeue the pending question
640
+ const question = handle.dequeuePendingQuestion();
641
+ if (!question) {
642
+ throw new Error(`No pending question for task ${taskId}`);
643
+ }
644
+ // Build payload based on response type and forward to provider
645
+ let payload;
646
+ switch (input.type) {
647
+ case 'user_input':
648
+ payload = { answers: input.answers };
649
+ break;
650
+ case 'command_approval':
651
+ payload = { decision: input.decision === 'accept' ? 'accept' : 'decline' };
652
+ break;
653
+ case 'file_approval':
654
+ payload = { decision: input.decision === 'accept' ? 'accept' : 'decline' };
655
+ break;
656
+ case 'elicitation':
657
+ payload = {
658
+ action: input.action,
659
+ content: input.content ?? null,
660
+ _meta: null,
661
+ };
662
+ break;
663
+ case 'dynamic_tool':
664
+ payload = {
665
+ contentItems: [],
666
+ success: !input.error,
667
+ ...(input.result !== undefined ? { result: input.result } : {}),
668
+ ...(input.error !== undefined ? { error: input.error } : {}),
669
+ };
670
+ break;
671
+ }
672
+ // Forward the response to the runtime using the question's requestId
673
+ await this.runtime.respondToServerRequest(question.requestId, payload);
674
+ // If queue is now empty and task was WAITING_ANSWER, resume tracking
675
+ // The adapter's executeSession will continue automatically
676
+ const currentTask = this.taskManager.getTask(taskId);
677
+ const wireStatus = mapToWireState(currentTask?.status ?? task.status);
678
+ return JSON.stringify({
679
+ task_id: taskId,
680
+ status: wireStatus,
681
+ remaining_questions: currentTask?.pendingQuestions.length ?? 0,
682
+ }, null, 2);
683
+ }
684
+ async handleMessageTask(input) {
685
+ const taskId = input.task_id;
686
+ const task = this.taskManager.getTask(taskId);
687
+ if (!task) {
688
+ throw new Error(`Task not found: ${taskId}`);
689
+ }
690
+ if (!task.sessionId) {
691
+ throw new Error(`Task ${taskId} has no active session (sessionId missing)`);
692
+ }
693
+ if (isTerminalStatus(task.status)) {
694
+ throw new Error(`Task ${taskId} is in terminal status: ${task.status}`);
695
+ }
696
+ // Start a new turn on the existing thread
697
+ const built = await this.runtime.buildTurnStartParams({
698
+ threadId: task.sessionId,
699
+ userInput: input.message,
700
+ model: input.model,
701
+ });
702
+ await this.runtime.ensureThreadLoaded(task.sessionId, input.model);
703
+ const bridged = await this.runtime.requestWithBridge('turn/start', built.params, {
704
+ threadId: task.sessionId,
705
+ });
706
+ // Update task status back to running
707
+ this.taskManager.updateTask(taskId, { status: TaskStatus.RUNNING });
708
+ return JSON.stringify({
709
+ task_id: taskId,
710
+ provider_session_id: task.sessionId,
711
+ status: 'working',
712
+ operation_id: bridged.operationId,
713
+ }, null, 2);
714
+ }
715
+ async handleCancelTask(input) {
716
+ const taskIds = Array.isArray(input.task_id) ? input.task_id : [input.task_id];
717
+ const cancelled = [];
718
+ const alreadyTerminal = [];
719
+ const notFound = [];
720
+ for (const taskId of taskIds) {
721
+ const task = this.taskManager.getTask(taskId);
722
+ if (!task) {
723
+ notFound.push(taskId);
724
+ continue;
725
+ }
726
+ if (isTerminalStatus(task.status)) {
727
+ alreadyTerminal.push(taskId);
728
+ continue;
729
+ }
730
+ const handle = this.taskManager.getHandle(taskId);
731
+ if (handle) {
732
+ handle.markCancelled('Cancelled by user');
733
+ }
734
+ // Try to interrupt the provider session
735
+ if (task.sessionId) {
736
+ try {
737
+ await this.runtime.request('turn/interrupt', {
738
+ threadId: task.sessionId,
739
+ turnId: task.operationId ?? '',
740
+ });
741
+ }
742
+ catch {
743
+ // Best-effort interrupt — task is already marked cancelled
744
+ }
745
+ }
746
+ cancelled.push(taskId);
747
+ }
748
+ return JSON.stringify({
749
+ cancelled,
750
+ already_terminal: alreadyTerminal,
751
+ ...(notFound.length > 0 ? { not_found: notFound } : {}),
752
+ }, null, 2);
753
+ }
388
754
  buildServerRequestPayload(method, input) {
389
755
  if (input.payload) {
390
756
  return input.payload;
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/app.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,7 @@ export declare class CodexAdapter extends BaseProviderAdapter {
16
16
  checkAvailability(): AvailabilityResult;
17
17
  getCapabilities(): ProviderCapabilities;
18
18
  getStats(): Record<string, unknown>;
19
- protected executeSession(_handle: TaskHandle, _prompt: string, _signal: AbortSignal, _options: ProviderSpawnOptions): Promise<void>;
19
+ protected executeSession(handle: TaskHandle, prompt: string, _signal: AbortSignal, options: ProviderSpawnOptions): Promise<void>;
20
20
  shutdown(): Promise<void>;
21
+ private getRuntime;
21
22
  }
@@ -4,6 +4,9 @@
4
4
  // ---------------------------------------------------------------------------
5
5
  import { CODEX_CAPABILITIES } from './provider-capabilities.js';
6
6
  import { BaseProviderAdapter, } from './base-adapter.js';
7
+ import { CodexRuntime } from '../services/codex-runtime.js';
8
+ import { attachPauseFlow } from './codex-pause-flow.js';
9
+ import { REQUEST_TIMEOUT_MS } from '../config/defaults.js';
7
10
  // ---------------------------------------------------------------------------
8
11
  // Adapter
9
12
  // ---------------------------------------------------------------------------
@@ -25,11 +28,79 @@ export class CodexAdapter extends BaseProviderAdapter {
25
28
  getStats() {
26
29
  return {};
27
30
  }
28
- async executeSession(_handle, _prompt, _signal, _options) {
29
- throw new Error('CodexAdapter.executeSession is not yet implemented');
31
+ // -------------------------------------------------------------------------
32
+ // Core session lifecycle
33
+ // -------------------------------------------------------------------------
34
+ async executeSession(handle, prompt, _signal, options) {
35
+ const runtime = this.getRuntime();
36
+ let detachPauseFlow;
37
+ try {
38
+ // 1. Create a new thread
39
+ const { params: threadParams } = await runtime.buildThreadStartParams({
40
+ model: options.model,
41
+ cwd: options.cwd,
42
+ });
43
+ const threadResult = await runtime.request('thread/start', threadParams);
44
+ const threadId = threadResult?.thread?.id;
45
+ if (!threadId) {
46
+ throw new Error('thread/start did not return a thread ID');
47
+ }
48
+ // 2. Mark running with the thread ID as session identifier
49
+ handle.markRunning(threadId);
50
+ // 3. Attach pause-flow: translate server-requests → PendingQuestions
51
+ // getCurrentClient() is private on CodexRuntime; access via cast.
52
+ // Safe after a successful request() call guarantees the client exists.
53
+ const client = runtime
54
+ .getCurrentClient();
55
+ detachPauseFlow = attachPauseFlow(client, handle, threadId);
56
+ // 4. Build turn params and start the turn via bridged request
57
+ const { params: turnParams } = await runtime.buildTurnStartParams({
58
+ threadId,
59
+ userInput: prompt,
60
+ model: options.model,
61
+ });
62
+ const bridgeResult = await runtime.requestWithBridge('turn/start', turnParams, { threadId });
63
+ // 5. Handle bridge result
64
+ if (bridgeResult.status === 'pending_request') {
65
+ // Pause flow already queued the question on the handle and
66
+ // markInputRequired was called. Nothing more to do here —
67
+ // the wait-task / answer-task handlers drive the rest.
68
+ return;
69
+ }
70
+ if (bridgeResult.status === 'completed') {
71
+ handle.markCompleted();
72
+ return;
73
+ }
74
+ // status === 'running' — the bridge timed out before completion;
75
+ // poll until the operation settles.
76
+ const timeoutMs = options.timeout > 0 ? options.timeout : REQUEST_TIMEOUT_MS;
77
+ const op = await runtime.waitForOperation(bridgeResult.operationId, timeoutMs, 500);
78
+ if (op.status === 'completed') {
79
+ handle.markCompleted();
80
+ }
81
+ else {
82
+ handle.markFailed(op.error ?? 'Turn failed');
83
+ }
84
+ }
85
+ finally {
86
+ detachPauseFlow?.();
87
+ }
30
88
  }
31
89
  async shutdown() {
32
90
  await this.runtime?.shutdown();
33
91
  }
92
+ // -------------------------------------------------------------------------
93
+ // Internal
94
+ // -------------------------------------------------------------------------
95
+ getRuntime() {
96
+ if (!this.runtime) {
97
+ this.runtime = new CodexRuntime({
98
+ command: this.options.command,
99
+ args: this.options.args,
100
+ env: this.options.env,
101
+ });
102
+ }
103
+ return this.runtime;
104
+ }
34
105
  }
35
106
  //# sourceMappingURL=codex-adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"codex-adapter.js","sourceRoot":"","sources":["../../../src/execution/codex-adapter.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,4EAA4E;AAC5E,uBAAuB;AACvB,8EAA8E;AAK9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EACL,mBAAmB,GAGpB,MAAM,mBAAmB,CAAC;AAa3B,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,MAAM,OAAO,YAAa,SAAQ,mBAAmB;IAC1C,EAAE,GAAa,OAAO,CAAC;IACvB,WAAW,GAAG,OAAO,CAAC;IAEd,OAAO,CAAsB;IACtC,OAAO,CAAgB;IAE/B,YAAY,OAA4B;QACtC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,iBAAiB;QACf,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED,eAAe;QACb,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,QAAQ;QACN,OAAO,EAAE,CAAC;IACZ,CAAC;IAES,KAAK,CAAC,cAAc,CAC5B,OAAmB,EACnB,OAAe,EACf,OAAoB,EACpB,QAA8B;QAE9B,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;IACjC,CAAC;CACF"}
1
+ {"version":3,"file":"codex-adapter.js","sourceRoot":"","sources":["../../../src/execution/codex-adapter.ts"],"names":[],"mappings":"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"}
package/dist/src/index.js CHANGED
@@ -47,6 +47,19 @@ server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
47
47
  });
48
48
  async function main() {
49
49
  await app.initialize();
50
+ // Wire state-change notifications: when any task status changes,
51
+ // notify MCP clients that the scoreboard and task detail resources are updated.
52
+ const taskManager = app.getTaskManager();
53
+ taskManager.onStatusChange((task) => {
54
+ server.notification({
55
+ method: 'notifications/resources/updated',
56
+ params: { uri: 'task:///all' },
57
+ }).catch(() => { });
58
+ server.notification({
59
+ method: 'notifications/resources/updated',
60
+ params: { uri: `task:///${task.id}` },
61
+ }).catch(() => { });
62
+ });
50
63
  const transport = new StdioServerTransport();
51
64
  await server.connect(transport);
52
65
  process.stdin.resume();