mcp-codex-worker 0.1.11 → 0.1.13
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/execution/base-adapter.d.ts +63 -0
- package/dist/src/execution/base-adapter.js +74 -0
- package/dist/src/execution/base-adapter.js.map +1 -0
- package/dist/src/execution/claude-adapter.d.ts +12 -0
- package/dist/src/execution/claude-adapter.js +23 -0
- package/dist/src/execution/claude-adapter.js.map +1 -0
- package/dist/src/execution/codex-adapter.d.ts +21 -0
- package/dist/src/execution/codex-adapter.js +35 -0
- package/dist/src/execution/codex-adapter.js.map +1 -0
- package/dist/src/execution/codex-pause-flow.d.ts +23 -0
- package/dist/src/execution/codex-pause-flow.js +185 -0
- package/dist/src/execution/codex-pause-flow.js.map +1 -0
- package/dist/src/execution/copilot-adapter.d.ts +12 -0
- package/dist/src/execution/copilot-adapter.js +23 -0
- package/dist/src/execution/copilot-adapter.js.map +1 -0
- package/dist/src/execution/provider-capabilities.d.ts +35 -0
- package/dist/src/execution/provider-capabilities.js +58 -0
- package/dist/src/execution/provider-capabilities.js.map +1 -0
- package/dist/src/execution/provider-registry.d.ts +37 -0
- package/dist/src/execution/provider-registry.js +69 -0
- package/dist/src/execution/provider-registry.js.map +1 -0
- package/dist/src/mcp/resource-renderers.d.ts +25 -0
- package/dist/src/mcp/resource-renderers.js +190 -0
- package/dist/src/mcp/resource-renderers.js.map +1 -0
- package/dist/src/mcp/sep1686-handlers.d.ts +56 -0
- package/dist/src/mcp/sep1686-handlers.js +98 -0
- package/dist/src/mcp/sep1686-handlers.js.map +1 -0
- package/dist/src/mcp/tool-definitions.d.ts +157 -0
- package/dist/src/mcp/tool-definitions.js +242 -0
- package/dist/src/mcp/tool-definitions.js.map +1 -1
- package/dist/src/task/fsm-transitions.d.ts +17 -0
- package/dist/src/task/fsm-transitions.js +66 -0
- package/dist/src/task/fsm-transitions.js.map +1 -0
- package/dist/src/task/task-handle-impl.d.ts +10 -0
- package/dist/src/task/task-handle-impl.js +139 -0
- package/dist/src/task/task-handle-impl.js.map +1 -0
- package/dist/src/task/task-handle.d.ts +88 -0
- package/dist/src/task/task-handle.js +2 -0
- package/dist/src/task/task-handle.js.map +1 -0
- package/dist/src/task/task-manager.d.ts +99 -0
- package/dist/src/task/task-manager.js +246 -0
- package/dist/src/task/task-manager.js.map +1 -0
- package/dist/src/task/task-persistence.d.ts +18 -0
- package/dist/src/task/task-persistence.js +61 -0
- package/dist/src/task/task-persistence.js.map +1 -0
- package/dist/src/task/task-state.d.ts +79 -0
- package/dist/src/task/task-state.js +24 -0
- package/dist/src/task/task-state.js.map +1 -0
- package/dist/src/task/task-store.d.ts +46 -0
- package/dist/src/task/task-store.js +104 -0
- package/dist/src/task/task-store.js.map +1 -0
- package/dist/src/task/wire-state-mapper.d.ts +21 -0
- package/dist/src/task/wire-state-mapper.js +63 -0
- package/dist/src/task/wire-state-mapper.js.map +1 -0
- package/package.json +2 -1
- package/src/execution/base-adapter.ts +133 -0
- package/src/execution/claude-adapter.ts +40 -0
- package/src/execution/codex-adapter.ts +67 -0
- package/src/execution/codex-pause-flow.ts +225 -0
- package/src/execution/copilot-adapter.ts +40 -0
- package/src/execution/provider-capabilities.ts +100 -0
- package/src/execution/provider-registry.ts +81 -0
- package/src/mcp/resource-renderers.ts +224 -0
- package/src/mcp/sep1686-handlers.ts +149 -0
- package/src/mcp/tool-definitions.ts +255 -0
- package/src/task/fsm-transitions.ts +72 -0
- package/src/task/task-handle-impl.ts +170 -0
- package/src/task/task-handle.ts +135 -0
- package/src/task/task-manager.ts +328 -0
- package/src/task/task-persistence.ts +95 -0
- package/src/task/task-state.ts +121 -0
- package/src/task/task-store.ts +121 -0
- package/src/task/wire-state-mapper.ts +77 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// ProviderRegistry — routes task types to provider adapters
|
|
3
|
+
// Spec reference: §3.4
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
/**
|
|
6
|
+
* Central registry for provider adapters.
|
|
7
|
+
*
|
|
8
|
+
* Supports:
|
|
9
|
+
* - Registration by provider ID
|
|
10
|
+
* - Default fallback provider
|
|
11
|
+
* - Per-task-type routing overrides
|
|
12
|
+
* - Bulk shutdown
|
|
13
|
+
*/
|
|
14
|
+
export class ProviderRegistry {
|
|
15
|
+
adapters = new Map();
|
|
16
|
+
defaultProvider;
|
|
17
|
+
taskTypeRoutes = new Map();
|
|
18
|
+
/** Register an adapter. Keyed by its `id` property. */
|
|
19
|
+
register(adapter) {
|
|
20
|
+
this.adapters.set(adapter.id, adapter);
|
|
21
|
+
}
|
|
22
|
+
/** Set the fallback provider used when no task-type route matches. */
|
|
23
|
+
setDefault(provider) {
|
|
24
|
+
this.defaultProvider = provider;
|
|
25
|
+
}
|
|
26
|
+
/** Override routing for a specific task type. */
|
|
27
|
+
setTaskTypeRoute(taskType, provider) {
|
|
28
|
+
this.taskTypeRoutes.set(taskType, provider);
|
|
29
|
+
}
|
|
30
|
+
/** Look up an adapter by provider ID. */
|
|
31
|
+
getAdapter(provider) {
|
|
32
|
+
return this.adapters.get(provider);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Select the best adapter for a given task type.
|
|
36
|
+
*
|
|
37
|
+
* Resolution order:
|
|
38
|
+
* 1. Explicit task-type route
|
|
39
|
+
* 2. Default provider
|
|
40
|
+
* 3. First registered adapter (arbitrary but deterministic)
|
|
41
|
+
*/
|
|
42
|
+
selectForTaskType(taskType) {
|
|
43
|
+
// 1. Check explicit route
|
|
44
|
+
const routed = this.taskTypeRoutes.get(taskType);
|
|
45
|
+
if (routed !== undefined) {
|
|
46
|
+
const adapter = this.adapters.get(routed);
|
|
47
|
+
if (adapter)
|
|
48
|
+
return adapter;
|
|
49
|
+
}
|
|
50
|
+
// 2. Check default
|
|
51
|
+
if (this.defaultProvider !== undefined) {
|
|
52
|
+
const adapter = this.adapters.get(this.defaultProvider);
|
|
53
|
+
if (adapter)
|
|
54
|
+
return adapter;
|
|
55
|
+
}
|
|
56
|
+
// 3. Fall back to first registered
|
|
57
|
+
const all = Array.from(this.adapters.values());
|
|
58
|
+
return all.length > 0 ? all[0] : undefined;
|
|
59
|
+
}
|
|
60
|
+
/** Return all registered adapters. */
|
|
61
|
+
getAllAdapters() {
|
|
62
|
+
return Array.from(this.adapters.values());
|
|
63
|
+
}
|
|
64
|
+
/** Shut down all registered adapters in parallel. */
|
|
65
|
+
async shutdownAll() {
|
|
66
|
+
await Promise.all(Array.from(this.adapters.values()).map((a) => a.shutdown()));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=provider-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-registry.js","sourceRoot":"","sources":["../../../src/execution/provider-registry.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,4DAA4D;AAC5D,uBAAuB;AACvB,8EAA8E;AAK9E;;;;;;;;GAQG;AACH,MAAM,OAAO,gBAAgB;IACV,QAAQ,GAAG,IAAI,GAAG,EAAiC,CAAC;IAC7D,eAAe,CAAuB;IAC7B,cAAc,GAAG,IAAI,GAAG,EAA0B,CAAC;IAEpE,uDAAuD;IACvD,QAAQ,CAAC,OAA4B;QACnC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,sEAAsE;IACtE,UAAU,CAAC,QAAkB;QAC3B,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;IAClC,CAAC;IAED,iDAAiD;IACjD,gBAAgB,CAAC,QAAsB,EAAE,QAAkB;QACzD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED,yCAAyC;IACzC,UAAU,CAAC,QAAkB;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED;;;;;;;OAOG;IACH,iBAAiB,CAAC,QAAsB;QACtC,0BAA0B;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC1C,IAAI,OAAO;gBAAE,OAAO,OAAO,CAAC;QAC9B,CAAC;QAED,mBAAmB;QACnB,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACxD,IAAI,OAAO;gBAAE,OAAO,OAAO,CAAC;QAC9B,CAAC;QAED,mCAAmC;QACnC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/C,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7C,CAAC;IAED,sCAAsC;IACtC,cAAc;QACZ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,qDAAqD;IACrD,KAAK,CAAC,WAAW;QACf,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAC5D,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { TaskState } from '../task/task-state.js';
|
|
2
|
+
/**
|
|
3
|
+
* Compact all-tasks view.
|
|
4
|
+
*
|
|
5
|
+
* Resource URI: `task:///all`
|
|
6
|
+
*/
|
|
7
|
+
export declare function renderScoreboard(tasks: TaskState[]): string;
|
|
8
|
+
/**
|
|
9
|
+
* Full task detail view as markdown.
|
|
10
|
+
*
|
|
11
|
+
* Resource URI: `task:///{id}`
|
|
12
|
+
*/
|
|
13
|
+
export declare function renderTaskDetail(task: TaskState): string;
|
|
14
|
+
/**
|
|
15
|
+
* Last 20 lines from task.output.
|
|
16
|
+
*
|
|
17
|
+
* Resource URI: `task:///{id}/log`
|
|
18
|
+
*/
|
|
19
|
+
export declare function renderSummaryLog(task: TaskState): string;
|
|
20
|
+
/**
|
|
21
|
+
* All lines from task.output (no truncation).
|
|
22
|
+
*
|
|
23
|
+
* Resource URI: `task:///{id}/log.verbose`
|
|
24
|
+
*/
|
|
25
|
+
export declare function renderVerboseLog(task: TaskState): string;
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { TaskStatus } from '../task/task-state.js';
|
|
2
|
+
import { mapToDisplay } from '../task/wire-state-mapper.js';
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// Constants
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
const PROMPT_MAX_LEN = 50;
|
|
7
|
+
const SUMMARY_LOG_LINES = 20;
|
|
8
|
+
const DETAIL_OUTPUT_LINES = 10;
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
// Sorting helpers
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
/** Active statuses that should appear first on the scoreboard. */
|
|
13
|
+
const ACTIVE_STATUSES = new Set([
|
|
14
|
+
TaskStatus.RUNNING,
|
|
15
|
+
TaskStatus.WAITING_ANSWER,
|
|
16
|
+
TaskStatus.RATE_LIMITED,
|
|
17
|
+
]);
|
|
18
|
+
/** Pending statuses that appear between active and terminal. */
|
|
19
|
+
const PENDING_STATUSES = new Set([
|
|
20
|
+
TaskStatus.WAITING,
|
|
21
|
+
TaskStatus.PENDING,
|
|
22
|
+
]);
|
|
23
|
+
function sortPriority(status) {
|
|
24
|
+
if (ACTIVE_STATUSES.has(status))
|
|
25
|
+
return 0;
|
|
26
|
+
if (PENDING_STATUSES.has(status))
|
|
27
|
+
return 1;
|
|
28
|
+
return 2; // terminal
|
|
29
|
+
}
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
// Formatting helpers
|
|
32
|
+
// ---------------------------------------------------------------------------
|
|
33
|
+
function truncatePrompt(prompt, maxLen = PROMPT_MAX_LEN) {
|
|
34
|
+
if (prompt.length <= maxLen)
|
|
35
|
+
return prompt;
|
|
36
|
+
return prompt.slice(0, maxLen - 3) + '...';
|
|
37
|
+
}
|
|
38
|
+
function formatElapsed(createdAt, updatedAt) {
|
|
39
|
+
const start = new Date(createdAt).getTime();
|
|
40
|
+
const end = new Date(updatedAt).getTime();
|
|
41
|
+
const diffMs = Math.max(0, end - start);
|
|
42
|
+
const totalSec = Math.floor(diffMs / 1000);
|
|
43
|
+
const min = Math.floor(totalSec / 60);
|
|
44
|
+
const sec = totalSec % 60;
|
|
45
|
+
if (min > 0) {
|
|
46
|
+
return `${min}m ${sec}s`;
|
|
47
|
+
}
|
|
48
|
+
return `${sec}s`;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Build a status-count summary string like "3 done, 1 busy, 1 wait".
|
|
52
|
+
* Uses the display badge labels (without brackets) as category names.
|
|
53
|
+
*/
|
|
54
|
+
function statusSummary(tasks) {
|
|
55
|
+
const counts = new Map();
|
|
56
|
+
for (const t of tasks) {
|
|
57
|
+
const badge = mapToDisplay(t.status);
|
|
58
|
+
// Strip brackets: "[busy]" → "busy"
|
|
59
|
+
const label = badge.slice(1, -1);
|
|
60
|
+
counts.set(label, (counts.get(label) ?? 0) + 1);
|
|
61
|
+
}
|
|
62
|
+
return Array.from(counts.entries())
|
|
63
|
+
.map(([label, count]) => `${count} ${label}`)
|
|
64
|
+
.join(', ');
|
|
65
|
+
}
|
|
66
|
+
// ---------------------------------------------------------------------------
|
|
67
|
+
// renderScoreboard
|
|
68
|
+
// ---------------------------------------------------------------------------
|
|
69
|
+
/**
|
|
70
|
+
* Compact all-tasks view.
|
|
71
|
+
*
|
|
72
|
+
* Resource URI: `task:///all`
|
|
73
|
+
*/
|
|
74
|
+
export function renderScoreboard(tasks) {
|
|
75
|
+
const sorted = [...tasks].sort((a, b) => sortPriority(a.status) - sortPriority(b.status));
|
|
76
|
+
const summary = tasks.length > 0 ? ` (${statusSummary(tasks)})` : '';
|
|
77
|
+
const header = `tasks -- ${tasks.length} total${summary}`;
|
|
78
|
+
const lines = [header, ''];
|
|
79
|
+
for (const task of sorted) {
|
|
80
|
+
const badge = mapToDisplay(task.status);
|
|
81
|
+
const prompt = truncatePrompt(task.prompt);
|
|
82
|
+
const elapsed = formatElapsed(task.createdAt, task.updatedAt);
|
|
83
|
+
lines.push(`${badge} ${task.id} -- "${prompt}" (${elapsed})`);
|
|
84
|
+
}
|
|
85
|
+
return lines.join('\n');
|
|
86
|
+
}
|
|
87
|
+
// ---------------------------------------------------------------------------
|
|
88
|
+
// renderTaskDetail
|
|
89
|
+
// ---------------------------------------------------------------------------
|
|
90
|
+
/**
|
|
91
|
+
* Full task detail view as markdown.
|
|
92
|
+
*
|
|
93
|
+
* Resource URI: `task:///{id}`
|
|
94
|
+
*/
|
|
95
|
+
export function renderTaskDetail(task) {
|
|
96
|
+
const badge = mapToDisplay(task.status);
|
|
97
|
+
const lines = [
|
|
98
|
+
`# Task: ${task.id} -- ${truncatePrompt(task.prompt)}`,
|
|
99
|
+
'',
|
|
100
|
+
'| Field | Value |',
|
|
101
|
+
'|---|---|',
|
|
102
|
+
`| **Status** | ${badge} \`${task.status}\` |`,
|
|
103
|
+
`| **Provider** | ${task.provider} |`,
|
|
104
|
+
];
|
|
105
|
+
if (task.sessionId) {
|
|
106
|
+
lines.push(`| **Session ID** | \`${task.sessionId}\` |`);
|
|
107
|
+
}
|
|
108
|
+
if (task.model) {
|
|
109
|
+
lines.push(`| **Model** | \`${task.model}\` |`);
|
|
110
|
+
}
|
|
111
|
+
lines.push(`| **Task type** | ${task.taskType} |`);
|
|
112
|
+
lines.push(`| **CWD** | \`${task.cwd}\` |`);
|
|
113
|
+
lines.push(`| **Created** | ${task.createdAt} |`);
|
|
114
|
+
if (task.startedAt) {
|
|
115
|
+
lines.push(`| **Started** | ${task.startedAt} |`);
|
|
116
|
+
}
|
|
117
|
+
if (task.completedAt) {
|
|
118
|
+
lines.push(`| **Completed** | ${task.completedAt} |`);
|
|
119
|
+
}
|
|
120
|
+
lines.push(`| **Updated** | ${task.updatedAt} |`);
|
|
121
|
+
lines.push('');
|
|
122
|
+
// Pending questions
|
|
123
|
+
if (task.pendingQuestions.length > 0) {
|
|
124
|
+
lines.push('## Pending Question', '');
|
|
125
|
+
for (const q of task.pendingQuestions) {
|
|
126
|
+
lines.push(formatPendingQuestion(q));
|
|
127
|
+
}
|
|
128
|
+
lines.push('');
|
|
129
|
+
}
|
|
130
|
+
// Error
|
|
131
|
+
if (task.error) {
|
|
132
|
+
lines.push('## Error', '', `\`\`\`\n${task.error}\n\`\`\``, '');
|
|
133
|
+
}
|
|
134
|
+
// Last N output lines
|
|
135
|
+
if (task.output.length > 0) {
|
|
136
|
+
const tail = task.output.slice(-DETAIL_OUTPUT_LINES);
|
|
137
|
+
lines.push('## Recent Output', '');
|
|
138
|
+
for (const line of tail) {
|
|
139
|
+
lines.push(line);
|
|
140
|
+
}
|
|
141
|
+
lines.push('');
|
|
142
|
+
}
|
|
143
|
+
return lines.join('\n');
|
|
144
|
+
}
|
|
145
|
+
function formatPendingQuestion(q) {
|
|
146
|
+
switch (q.type) {
|
|
147
|
+
case 'user_input':
|
|
148
|
+
return q.questions.map((iq) => `- **${iq.text}**${iq.options ? ` (options: ${iq.options.join(', ')})` : ''}`).join('\n');
|
|
149
|
+
case 'command_approval':
|
|
150
|
+
return `- **Command approval**: \`${q.command}\``;
|
|
151
|
+
case 'file_approval':
|
|
152
|
+
return `- **File approval**: ${q.fileChanges.map((f) => f.path).join(', ')}`;
|
|
153
|
+
case 'elicitation':
|
|
154
|
+
return `- **Elicitation**: ${q.message}`;
|
|
155
|
+
case 'dynamic_tool':
|
|
156
|
+
return `- **Dynamic tool**: \`${q.toolName}\``;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
// ---------------------------------------------------------------------------
|
|
160
|
+
// renderSummaryLog
|
|
161
|
+
// ---------------------------------------------------------------------------
|
|
162
|
+
/**
|
|
163
|
+
* Last 20 lines from task.output.
|
|
164
|
+
*
|
|
165
|
+
* Resource URI: `task:///{id}/log`
|
|
166
|
+
*/
|
|
167
|
+
export function renderSummaryLog(task) {
|
|
168
|
+
if (task.output.length === 0) {
|
|
169
|
+
return `# Log: ${task.id}\n\nNo output yet.`;
|
|
170
|
+
}
|
|
171
|
+
const tail = task.output.slice(-SUMMARY_LOG_LINES);
|
|
172
|
+
const header = `# Log: ${task.id} (last ${tail.length} of ${task.output.length} lines)`;
|
|
173
|
+
return [header, '', ...tail].join('\n');
|
|
174
|
+
}
|
|
175
|
+
// ---------------------------------------------------------------------------
|
|
176
|
+
// renderVerboseLog
|
|
177
|
+
// ---------------------------------------------------------------------------
|
|
178
|
+
/**
|
|
179
|
+
* All lines from task.output (no truncation).
|
|
180
|
+
*
|
|
181
|
+
* Resource URI: `task:///{id}/log.verbose`
|
|
182
|
+
*/
|
|
183
|
+
export function renderVerboseLog(task) {
|
|
184
|
+
if (task.output.length === 0) {
|
|
185
|
+
return `# Verbose Log: ${task.id}\n\nNo output yet.`;
|
|
186
|
+
}
|
|
187
|
+
const header = `# Verbose Log: ${task.id} (${task.output.length} lines)`;
|
|
188
|
+
return [header, '', ...task.output].join('\n');
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=resource-renderers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-renderers.js","sourceRoot":"","sources":["../../../src/mcp/resource-renderers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { TaskState, PendingQuestion } from '../task/task-state.js';
|
|
2
|
+
import type { WireState } from '../task/wire-state-mapper.js';
|
|
3
|
+
/**
|
|
4
|
+
* Response shape for `tasks/get` — a single task's status snapshot.
|
|
5
|
+
*/
|
|
6
|
+
export interface TasksGetResponse {
|
|
7
|
+
taskId: string;
|
|
8
|
+
status: WireState;
|
|
9
|
+
pollFrequency: number;
|
|
10
|
+
keepAlive?: number;
|
|
11
|
+
metadata?: {
|
|
12
|
+
pendingQuestion?: PendingQuestion;
|
|
13
|
+
};
|
|
14
|
+
error?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* List item shape for `tasks/list` — lightweight summary per task.
|
|
18
|
+
*/
|
|
19
|
+
export interface TasksListItem {
|
|
20
|
+
taskId: string;
|
|
21
|
+
status: WireState;
|
|
22
|
+
pollFrequency: number;
|
|
23
|
+
createdAt: string;
|
|
24
|
+
lastUpdatedAt: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Returns the recommended poll interval in milliseconds based on task status.
|
|
28
|
+
*
|
|
29
|
+
* - WAITING_ANSWER → 2 000 ms (client should check frequently for input-required)
|
|
30
|
+
* - PENDING, RUNNING → 5 000 ms
|
|
31
|
+
* - All others (WAITING, RATE_LIMITED, terminal) → 30 000 ms
|
|
32
|
+
*/
|
|
33
|
+
export declare function computePollFrequency(task: TaskState): number;
|
|
34
|
+
/**
|
|
35
|
+
* Builds a SEP-1686 `tasks/get` response from internal TaskState.
|
|
36
|
+
*
|
|
37
|
+
* - Maps internal status to wire state via `mapToWireState`
|
|
38
|
+
* - Computes poll frequency via `computePollFrequency`
|
|
39
|
+
* - Includes `keepAlive` from task if present
|
|
40
|
+
* - Includes first pending question in metadata when status is
|
|
41
|
+
* WAITING_ANSWER and the queue is non-empty
|
|
42
|
+
* - Includes error string if present
|
|
43
|
+
*/
|
|
44
|
+
export declare function buildTasksGetResponse(task: TaskState): TasksGetResponse;
|
|
45
|
+
/**
|
|
46
|
+
* Builds a SEP-1686 `tasks/list` response.
|
|
47
|
+
*
|
|
48
|
+
* - Filters by wire status if `statusFilter` is provided
|
|
49
|
+
* - Sorts by `createdAt` descending (newest first)
|
|
50
|
+
* - Paginates with page size 50; cursor is a string-encoded start index
|
|
51
|
+
* - Returns `nextCursor` if more pages exist
|
|
52
|
+
*/
|
|
53
|
+
export declare function buildTasksListResponse(tasks: TaskState[], cursor?: string, statusFilter?: WireState): {
|
|
54
|
+
tasks: TasksListItem[];
|
|
55
|
+
nextCursor?: string;
|
|
56
|
+
};
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { TaskStatus } from '../task/task-state.js';
|
|
2
|
+
import { mapToWireState } from '../task/wire-state-mapper.js';
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// Poll frequency computation
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
/**
|
|
7
|
+
* Returns the recommended poll interval in milliseconds based on task status.
|
|
8
|
+
*
|
|
9
|
+
* - WAITING_ANSWER → 2 000 ms (client should check frequently for input-required)
|
|
10
|
+
* - PENDING, RUNNING → 5 000 ms
|
|
11
|
+
* - All others (WAITING, RATE_LIMITED, terminal) → 30 000 ms
|
|
12
|
+
*/
|
|
13
|
+
export function computePollFrequency(task) {
|
|
14
|
+
switch (task.status) {
|
|
15
|
+
case TaskStatus.WAITING_ANSWER:
|
|
16
|
+
return 2000;
|
|
17
|
+
case TaskStatus.PENDING:
|
|
18
|
+
case TaskStatus.RUNNING:
|
|
19
|
+
return 5000;
|
|
20
|
+
default:
|
|
21
|
+
return 30000;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
// tasks/get response builder
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
/**
|
|
28
|
+
* Builds a SEP-1686 `tasks/get` response from internal TaskState.
|
|
29
|
+
*
|
|
30
|
+
* - Maps internal status to wire state via `mapToWireState`
|
|
31
|
+
* - Computes poll frequency via `computePollFrequency`
|
|
32
|
+
* - Includes `keepAlive` from task if present
|
|
33
|
+
* - Includes first pending question in metadata when status is
|
|
34
|
+
* WAITING_ANSWER and the queue is non-empty
|
|
35
|
+
* - Includes error string if present
|
|
36
|
+
*/
|
|
37
|
+
export function buildTasksGetResponse(task) {
|
|
38
|
+
const status = mapToWireState(task.status);
|
|
39
|
+
const pollFrequency = computePollFrequency(task);
|
|
40
|
+
const hasPendingQuestion = task.status === TaskStatus.WAITING_ANSWER &&
|
|
41
|
+
task.pendingQuestions.length > 0;
|
|
42
|
+
const response = {
|
|
43
|
+
taskId: task.id,
|
|
44
|
+
status,
|
|
45
|
+
pollFrequency,
|
|
46
|
+
};
|
|
47
|
+
if (task.keepAlive !== undefined) {
|
|
48
|
+
response.keepAlive = task.keepAlive;
|
|
49
|
+
}
|
|
50
|
+
if (hasPendingQuestion) {
|
|
51
|
+
const firstQuestion = task.pendingQuestions[0];
|
|
52
|
+
if (firstQuestion !== undefined) {
|
|
53
|
+
response.metadata = { pendingQuestion: firstQuestion };
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (task.error !== undefined) {
|
|
57
|
+
response.error = task.error;
|
|
58
|
+
}
|
|
59
|
+
return response;
|
|
60
|
+
}
|
|
61
|
+
// ---------------------------------------------------------------------------
|
|
62
|
+
// tasks/list response builder
|
|
63
|
+
// ---------------------------------------------------------------------------
|
|
64
|
+
const PAGE_SIZE = 50;
|
|
65
|
+
/**
|
|
66
|
+
* Builds a SEP-1686 `tasks/list` response.
|
|
67
|
+
*
|
|
68
|
+
* - Filters by wire status if `statusFilter` is provided
|
|
69
|
+
* - Sorts by `createdAt` descending (newest first)
|
|
70
|
+
* - Paginates with page size 50; cursor is a string-encoded start index
|
|
71
|
+
* - Returns `nextCursor` if more pages exist
|
|
72
|
+
*/
|
|
73
|
+
export function buildTasksListResponse(tasks, cursor, statusFilter) {
|
|
74
|
+
// 1. Filter by wire status if requested
|
|
75
|
+
const filtered = statusFilter
|
|
76
|
+
? tasks.filter(t => mapToWireState(t.status) === statusFilter)
|
|
77
|
+
: [...tasks];
|
|
78
|
+
// 2. Sort by createdAt descending
|
|
79
|
+
filtered.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
|
|
80
|
+
// 3. Paginate
|
|
81
|
+
const start = cursor ? parseInt(cursor, 10) : 0;
|
|
82
|
+
const page = filtered.slice(start, start + PAGE_SIZE);
|
|
83
|
+
const nextStart = start + PAGE_SIZE;
|
|
84
|
+
// 4. Map to list items
|
|
85
|
+
const items = page.map(t => ({
|
|
86
|
+
taskId: t.id,
|
|
87
|
+
status: mapToWireState(t.status),
|
|
88
|
+
pollFrequency: computePollFrequency(t),
|
|
89
|
+
createdAt: t.createdAt,
|
|
90
|
+
lastUpdatedAt: t.updatedAt,
|
|
91
|
+
}));
|
|
92
|
+
const result = { tasks: items };
|
|
93
|
+
if (nextStart < filtered.length) {
|
|
94
|
+
result.nextCursor = String(nextStart);
|
|
95
|
+
}
|
|
96
|
+
return result;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=sep1686-handlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sep1686-handlers.js","sourceRoot":"","sources":["../../../src/mcp/sep1686-handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -148,6 +148,158 @@ declare const waitSchema: z.ZodObject<{
|
|
|
148
148
|
timeout_ms?: number | undefined;
|
|
149
149
|
poll_interval_ms?: number | undefined;
|
|
150
150
|
}>;
|
|
151
|
+
declare const spawnTaskSchema: z.ZodObject<{
|
|
152
|
+
prompt: z.ZodString;
|
|
153
|
+
task_type: z.ZodDefault<z.ZodEnum<["coder", "planner", "tester", "researcher", "general"]>>;
|
|
154
|
+
provider: z.ZodOptional<z.ZodEnum<["codex", "copilot", "claude-cli"]>>;
|
|
155
|
+
model: z.ZodOptional<z.ZodString>;
|
|
156
|
+
cwd: z.ZodOptional<z.ZodString>;
|
|
157
|
+
timeout_ms: z.ZodOptional<z.ZodNumber>;
|
|
158
|
+
keep_alive: z.ZodOptional<z.ZodNumber>;
|
|
159
|
+
labels: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
160
|
+
depends_on: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
161
|
+
developer_instructions: z.ZodOptional<z.ZodString>;
|
|
162
|
+
context_files: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
163
|
+
path: z.ZodString;
|
|
164
|
+
description: z.ZodOptional<z.ZodString>;
|
|
165
|
+
}, "strip", z.ZodTypeAny, {
|
|
166
|
+
path: string;
|
|
167
|
+
description?: string | undefined;
|
|
168
|
+
}, {
|
|
169
|
+
path: string;
|
|
170
|
+
description?: string | undefined;
|
|
171
|
+
}>, "many">>;
|
|
172
|
+
}, "strip", z.ZodTypeAny, {
|
|
173
|
+
prompt: string;
|
|
174
|
+
task_type: "coder" | "planner" | "tester" | "researcher" | "general";
|
|
175
|
+
model?: string | undefined;
|
|
176
|
+
cwd?: string | undefined;
|
|
177
|
+
developer_instructions?: string | undefined;
|
|
178
|
+
timeout_ms?: number | undefined;
|
|
179
|
+
provider?: "codex" | "copilot" | "claude-cli" | undefined;
|
|
180
|
+
keep_alive?: number | undefined;
|
|
181
|
+
labels?: string[] | undefined;
|
|
182
|
+
depends_on?: string[] | undefined;
|
|
183
|
+
context_files?: {
|
|
184
|
+
path: string;
|
|
185
|
+
description?: string | undefined;
|
|
186
|
+
}[] | undefined;
|
|
187
|
+
}, {
|
|
188
|
+
prompt: string;
|
|
189
|
+
model?: string | undefined;
|
|
190
|
+
cwd?: string | undefined;
|
|
191
|
+
developer_instructions?: string | undefined;
|
|
192
|
+
timeout_ms?: number | undefined;
|
|
193
|
+
task_type?: "coder" | "planner" | "tester" | "researcher" | "general" | undefined;
|
|
194
|
+
provider?: "codex" | "copilot" | "claude-cli" | undefined;
|
|
195
|
+
keep_alive?: number | undefined;
|
|
196
|
+
labels?: string[] | undefined;
|
|
197
|
+
depends_on?: string[] | undefined;
|
|
198
|
+
context_files?: {
|
|
199
|
+
path: string;
|
|
200
|
+
description?: string | undefined;
|
|
201
|
+
}[] | undefined;
|
|
202
|
+
}>;
|
|
203
|
+
declare const waitTaskSchema: z.ZodObject<{
|
|
204
|
+
task_id: z.ZodString;
|
|
205
|
+
timeout_ms: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
206
|
+
poll_interval_ms: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
207
|
+
}, "strip", z.ZodTypeAny, {
|
|
208
|
+
task_id: string;
|
|
209
|
+
timeout_ms?: number | undefined;
|
|
210
|
+
poll_interval_ms?: number | undefined;
|
|
211
|
+
}, {
|
|
212
|
+
task_id: string;
|
|
213
|
+
timeout_ms?: number | undefined;
|
|
214
|
+
poll_interval_ms?: number | undefined;
|
|
215
|
+
}>;
|
|
216
|
+
declare const respondTaskSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
|
|
217
|
+
task_id: z.ZodString;
|
|
218
|
+
type: z.ZodLiteral<"user_input">;
|
|
219
|
+
answers: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
220
|
+
}, "strip", z.ZodTypeAny, {
|
|
221
|
+
type: "user_input";
|
|
222
|
+
answers: Record<string, string>;
|
|
223
|
+
task_id: string;
|
|
224
|
+
}, {
|
|
225
|
+
type: "user_input";
|
|
226
|
+
answers: Record<string, string>;
|
|
227
|
+
task_id: string;
|
|
228
|
+
}>, z.ZodObject<{
|
|
229
|
+
task_id: z.ZodString;
|
|
230
|
+
type: z.ZodLiteral<"command_approval">;
|
|
231
|
+
decision: z.ZodEnum<["accept", "reject"]>;
|
|
232
|
+
}, "strip", z.ZodTypeAny, {
|
|
233
|
+
type: "command_approval";
|
|
234
|
+
decision: "accept" | "reject";
|
|
235
|
+
task_id: string;
|
|
236
|
+
}, {
|
|
237
|
+
type: "command_approval";
|
|
238
|
+
decision: "accept" | "reject";
|
|
239
|
+
task_id: string;
|
|
240
|
+
}>, z.ZodObject<{
|
|
241
|
+
task_id: z.ZodString;
|
|
242
|
+
type: z.ZodLiteral<"file_approval">;
|
|
243
|
+
decision: z.ZodEnum<["accept", "reject"]>;
|
|
244
|
+
}, "strip", z.ZodTypeAny, {
|
|
245
|
+
type: "file_approval";
|
|
246
|
+
decision: "accept" | "reject";
|
|
247
|
+
task_id: string;
|
|
248
|
+
}, {
|
|
249
|
+
type: "file_approval";
|
|
250
|
+
decision: "accept" | "reject";
|
|
251
|
+
task_id: string;
|
|
252
|
+
}>, z.ZodObject<{
|
|
253
|
+
task_id: z.ZodString;
|
|
254
|
+
type: z.ZodLiteral<"elicitation">;
|
|
255
|
+
action: z.ZodEnum<["accept", "decline"]>;
|
|
256
|
+
content: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
257
|
+
}, "strip", z.ZodTypeAny, {
|
|
258
|
+
type: "elicitation";
|
|
259
|
+
action: "accept" | "decline";
|
|
260
|
+
task_id: string;
|
|
261
|
+
content?: Record<string, unknown> | undefined;
|
|
262
|
+
}, {
|
|
263
|
+
type: "elicitation";
|
|
264
|
+
action: "accept" | "decline";
|
|
265
|
+
task_id: string;
|
|
266
|
+
content?: Record<string, unknown> | undefined;
|
|
267
|
+
}>, z.ZodObject<{
|
|
268
|
+
task_id: z.ZodString;
|
|
269
|
+
type: z.ZodLiteral<"dynamic_tool">;
|
|
270
|
+
result: z.ZodOptional<z.ZodString>;
|
|
271
|
+
error: z.ZodOptional<z.ZodString>;
|
|
272
|
+
}, "strip", z.ZodTypeAny, {
|
|
273
|
+
type: "dynamic_tool";
|
|
274
|
+
task_id: string;
|
|
275
|
+
result?: string | undefined;
|
|
276
|
+
error?: string | undefined;
|
|
277
|
+
}, {
|
|
278
|
+
type: "dynamic_tool";
|
|
279
|
+
task_id: string;
|
|
280
|
+
result?: string | undefined;
|
|
281
|
+
error?: string | undefined;
|
|
282
|
+
}>]>;
|
|
283
|
+
declare const messageTaskSchema: z.ZodObject<{
|
|
284
|
+
task_id: z.ZodString;
|
|
285
|
+
message: z.ZodString;
|
|
286
|
+
model: z.ZodOptional<z.ZodString>;
|
|
287
|
+
}, "strip", z.ZodTypeAny, {
|
|
288
|
+
message: string;
|
|
289
|
+
task_id: string;
|
|
290
|
+
model?: string | undefined;
|
|
291
|
+
}, {
|
|
292
|
+
message: string;
|
|
293
|
+
task_id: string;
|
|
294
|
+
model?: string | undefined;
|
|
295
|
+
}>;
|
|
296
|
+
declare const cancelTaskSchema: z.ZodObject<{
|
|
297
|
+
task_id: z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>;
|
|
298
|
+
}, "strip", z.ZodTypeAny, {
|
|
299
|
+
task_id: string | string[];
|
|
300
|
+
}, {
|
|
301
|
+
task_id: string | string[];
|
|
302
|
+
}>;
|
|
151
303
|
export interface ToolDefinition {
|
|
152
304
|
name: string;
|
|
153
305
|
description: string;
|
|
@@ -174,4 +326,9 @@ export type TurnInterruptInput = z.infer<typeof turnInterruptSchema>;
|
|
|
174
326
|
export type RequestListInput = z.infer<typeof requestListSchema>;
|
|
175
327
|
export type RequestRespondInput = z.infer<typeof requestRespondSchema>;
|
|
176
328
|
export type WaitInput = z.infer<typeof waitSchema>;
|
|
329
|
+
export type SpawnTaskInput = z.infer<typeof spawnTaskSchema>;
|
|
330
|
+
export type WaitTaskInput = z.infer<typeof waitTaskSchema>;
|
|
331
|
+
export type RespondTaskInput = z.infer<typeof respondTaskSchema>;
|
|
332
|
+
export type MessageTaskInput = z.infer<typeof messageTaskSchema>;
|
|
333
|
+
export type CancelTaskInput = z.infer<typeof cancelTaskSchema>;
|
|
177
334
|
export {};
|