mcp-server-opencode 1.1.5 → 1.3.0

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 (94) hide show
  1. package/CHANGELOG.md +127 -0
  2. package/README.md +34 -5
  3. package/build/src/index.js +32 -15
  4. package/build/src/index.js.map +1 -1
  5. package/build/src/modules/shared/execution-report.d.ts +66 -0
  6. package/build/src/modules/shared/execution-report.d.ts.map +1 -0
  7. package/build/src/modules/shared/execution-report.js +407 -0
  8. package/build/src/modules/shared/execution-report.js.map +1 -0
  9. package/build/src/modules/shared/execution-usage.d.ts +50 -0
  10. package/build/src/modules/shared/execution-usage.d.ts.map +1 -0
  11. package/build/src/modules/shared/execution-usage.js +89 -0
  12. package/build/src/modules/shared/execution-usage.js.map +1 -0
  13. package/build/src/modules/shared/git-workspace.d.ts +34 -0
  14. package/build/src/modules/shared/git-workspace.d.ts.map +1 -0
  15. package/build/src/modules/shared/git-workspace.js +193 -0
  16. package/build/src/modules/shared/git-workspace.js.map +1 -0
  17. package/build/src/modules/shared/instructions.d.ts +8 -1
  18. package/build/src/modules/shared/instructions.d.ts.map +1 -1
  19. package/build/src/modules/shared/instructions.js +32 -27
  20. package/build/src/modules/shared/instructions.js.map +1 -1
  21. package/build/src/modules/shared/message-id.d.ts +3 -0
  22. package/build/src/modules/shared/message-id.d.ts.map +1 -0
  23. package/build/src/modules/shared/message-id.js +6 -0
  24. package/build/src/modules/shared/message-id.js.map +1 -0
  25. package/build/src/modules/shared/opencode-client.d.ts +42 -4
  26. package/build/src/modules/shared/opencode-client.d.ts.map +1 -1
  27. package/build/src/modules/shared/opencode-client.js +214 -38
  28. package/build/src/modules/shared/opencode-client.js.map +1 -1
  29. package/build/src/modules/shared/permission-scopes.d.ts +6 -0
  30. package/build/src/modules/shared/permission-scopes.d.ts.map +1 -0
  31. package/build/src/modules/shared/permission-scopes.js +60 -0
  32. package/build/src/modules/shared/permission-scopes.js.map +1 -0
  33. package/build/src/modules/shared/permissions.d.ts +110 -0
  34. package/build/src/modules/shared/permissions.d.ts.map +1 -0
  35. package/build/src/modules/shared/permissions.js +214 -0
  36. package/build/src/modules/shared/permissions.js.map +1 -0
  37. package/build/src/modules/shared/prompt-dispatch.d.ts +13 -0
  38. package/build/src/modules/shared/prompt-dispatch.d.ts.map +1 -0
  39. package/build/src/modules/shared/prompt-dispatch.js +34 -0
  40. package/build/src/modules/shared/prompt-dispatch.js.map +1 -0
  41. package/build/src/modules/shared/run-observer.d.ts +5 -0
  42. package/build/src/modules/shared/run-observer.d.ts.map +1 -0
  43. package/build/src/modules/shared/run-observer.js +421 -0
  44. package/build/src/modules/shared/run-observer.js.map +1 -0
  45. package/build/src/modules/shared/server-registry.d.ts +4 -0
  46. package/build/src/modules/shared/server-registry.d.ts.map +1 -1
  47. package/build/src/modules/shared/server-registry.js.map +1 -1
  48. package/build/src/modules/shared/task-registry.d.ts +75 -0
  49. package/build/src/modules/shared/task-registry.d.ts.map +1 -1
  50. package/build/src/modules/shared/task-registry.js +85 -0
  51. package/build/src/modules/shared/task-registry.js.map +1 -1
  52. package/build/src/modules/shared/usage-limits.d.ts +70 -0
  53. package/build/src/modules/shared/usage-limits.d.ts.map +1 -0
  54. package/build/src/modules/shared/usage-limits.js +296 -0
  55. package/build/src/modules/shared/usage-limits.js.map +1 -0
  56. package/build/src/modules/shared/workspace-manager.d.ts +25 -0
  57. package/build/src/modules/shared/workspace-manager.d.ts.map +1 -0
  58. package/build/src/modules/shared/workspace-manager.js +105 -0
  59. package/build/src/modules/shared/workspace-manager.js.map +1 -0
  60. package/build/src/modules/tools/cancel_task.d.ts.map +1 -1
  61. package/build/src/modules/tools/cancel_task.js +30 -1
  62. package/build/src/modules/tools/cancel_task.js.map +1 -1
  63. package/build/src/modules/tools/cleanup_workspace.d.ts +3 -0
  64. package/build/src/modules/tools/cleanup_workspace.d.ts.map +1 -0
  65. package/build/src/modules/tools/cleanup_workspace.js +82 -0
  66. package/build/src/modules/tools/cleanup_workspace.js.map +1 -0
  67. package/build/src/modules/tools/continue_task.d.ts.map +1 -1
  68. package/build/src/modules/tools/continue_task.js +116 -6
  69. package/build/src/modules/tools/continue_task.js.map +1 -1
  70. package/build/src/modules/tools/get_task_result.d.ts.map +1 -1
  71. package/build/src/modules/tools/get_task_result.js +125 -22
  72. package/build/src/modules/tools/get_task_result.js.map +1 -1
  73. package/build/src/modules/tools/get_task_status.d.ts.map +1 -1
  74. package/build/src/modules/tools/get_task_status.js +69 -6
  75. package/build/src/modules/tools/get_task_status.js.map +1 -1
  76. package/build/src/modules/tools/index.d.ts.map +1 -1
  77. package/build/src/modules/tools/index.js +2 -0
  78. package/build/src/modules/tools/index.js.map +1 -1
  79. package/build/src/modules/tools/list_agents.d.ts.map +1 -1
  80. package/build/src/modules/tools/list_agents.js +48 -7
  81. package/build/src/modules/tools/list_agents.js.map +1 -1
  82. package/build/src/modules/tools/start_server.d.ts.map +1 -1
  83. package/build/src/modules/tools/start_server.js +21 -1
  84. package/build/src/modules/tools/start_server.js.map +1 -1
  85. package/build/src/modules/tools/start_task.d.ts.map +1 -1
  86. package/build/src/modules/tools/start_task.js +218 -13
  87. package/build/src/modules/tools/start_task.js.map +1 -1
  88. package/build/src/modules/tools/stop_server.d.ts.map +1 -1
  89. package/build/src/modules/tools/stop_server.js +17 -0
  90. package/build/src/modules/tools/stop_server.js.map +1 -1
  91. package/build/src/modules/tools/wait_for_task.d.ts.map +1 -1
  92. package/build/src/modules/tools/wait_for_task.js +110 -24
  93. package/build/src/modules/tools/wait_for_task.js.map +1 -1
  94. package/package.json +4 -2
@@ -1,13 +1,13 @@
1
1
  import { z } from "zod";
2
2
  import { getMaxToolTimeoutMs } from "../shared/config.js";
3
3
  import { jsonError, jsonResult } from "../shared/mcp-result.js";
4
- import { clientForTask, deriveTaskStatus, } from "../shared/opencode-client.js";
4
+ import { clientForTask, deriveTaskStatus, isTerminalTaskStatus, } from "../shared/opencode-client.js";
5
+ import { getTask } from "../shared/task-registry.js";
5
6
  const DEFAULT_TIMEOUT_MS = 120_000;
6
7
  const DEFAULT_POLL_INTERVAL_MS = 2_500;
7
8
  const MIN_POLL_INTERVAL_MS = 500;
8
- const FINISHED_STATUSES = new Set(["completed", "failed", "error"]);
9
9
  function isFinished(result) {
10
- return result !== undefined && FINISHED_STATUSES.has(result.status);
10
+ return result !== undefined && isTerminalTaskStatus(result.status);
11
11
  }
12
12
  function sleep(ms) {
13
13
  return new Promise((resolve) => setTimeout(resolve, ms));
@@ -18,7 +18,7 @@ function sleep(ms) {
18
18
  * poll loop. Failures are swallowed per-task so one bad re-derivation doesn't
19
19
  * fail the whole call.
20
20
  */
21
- async function enrichUnfinishedWithProgress(tasks, taskData) {
21
+ async function enrichUnfinishedWithProgress(tasks, taskData, deadline) {
22
22
  const clientByTaskId = new Map(taskData.map((entry) => [entry.task_id, entry.client]));
23
23
  return Promise.all(tasks.map(async (task) => {
24
24
  if (isFinished(task))
@@ -26,19 +26,43 @@ async function enrichUnfinishedWithProgress(tasks, taskData) {
26
26
  // Every task_id in `tasks` was resolved into taskData before polling started.
27
27
  // biome-ignore lint/style/noNonNullAssertion: guaranteed present, see comment above
28
28
  const client = clientByTaskId.get(task.task_id);
29
+ const remaining = deadline - Date.now();
30
+ if (remaining <= 0)
31
+ return task;
32
+ const controller = new AbortController();
29
33
  try {
30
- return await deriveTaskStatus(client.client, client.sessionId, task.task_id, {
34
+ return await pollUntilDeadline(deriveTaskStatus(client.client, client.sessionId, task.task_id, {
31
35
  includeProgress: true,
32
- });
36
+ includeUsage: true,
37
+ signal: controller.signal,
38
+ }), remaining, () => controller.abort(new Error("wait deadline exceeded")));
33
39
  }
34
40
  catch {
35
41
  return task;
36
42
  }
37
43
  }));
38
44
  }
45
+ async function pollUntilDeadline(operation, remainingMs, onTimeout) {
46
+ let timer;
47
+ try {
48
+ return await Promise.race([
49
+ operation,
50
+ new Promise((_, reject) => {
51
+ timer = setTimeout(() => {
52
+ onTimeout();
53
+ reject(new Error("status poll deadline exceeded"));
54
+ }, remainingMs);
55
+ timer.unref?.();
56
+ }),
57
+ ]);
58
+ }
59
+ finally {
60
+ clearTimeout(timer);
61
+ }
62
+ }
39
63
  export function registerOpencodeWaitForTask(server) {
40
64
  server.registerTool("opencode_wait_for_task", {
41
- description: "Long-poll one or more delegated tasks until they finish or the timeout elapses. Use mode 'all' to wait for all tasks, or 'any' to return as soon as one completes. Set include_progress to enrich still-running tasks in the final result with a partial output snippet and the currently running tool.",
65
+ description: "Long-poll one or more delegated tasks until they finish or the timeout elapses. Use mode 'all' to wait for all tasks, or 'any' to return as soon as one completes. Set include_progress to best-effort enrich still-running tasks within the same wait deadline; when time runs out, return the last observed status and progress.",
42
66
  inputSchema: {
43
67
  task_ids: z.string().array().min(1).describe("IDs of tasks to wait for"),
44
68
  mode: z
@@ -53,18 +77,25 @@ export function registerOpencodeWaitForTask(server) {
53
77
  .number()
54
78
  .optional()
55
79
  .describe(`Time between status checks in milliseconds (default ${DEFAULT_POLL_INTERVAL_MS})`),
80
+ until: z
81
+ .enum(["execution", "report"])
82
+ .optional()
83
+ .describe("Wait for execution (default) or finalized execution report"),
56
84
  include_progress: z
57
85
  .boolean()
58
86
  .optional()
59
- .describe("If true, enrich tasks that are still not finished in the returned result with a partial output snippet and the currently running tool (not used during polling, only on the final result)"),
87
+ .describe("If true, best-effort enrich unfinished tasks with a partial output snippet and the currently running tool, without extending the wait deadline"),
60
88
  },
61
- }, async ({ task_ids, mode = "all", timeout_ms, poll_interval_ms, include_progress }) => {
89
+ }, async ({ task_ids, mode = "all", timeout_ms, poll_interval_ms, include_progress, until = "execution", }) => {
62
90
  // Fail-fast: check for unknown task IDs before polling starts
63
91
  const unknownIds = [];
64
92
  const taskData = [];
65
93
  for (const taskId of task_ids) {
66
94
  const resolved = clientForTask(taskId);
67
- if (!resolved) {
95
+ const tracked = getTask(taskId);
96
+ const cached = tracked?.runs?.find((run) => run.run_id === tracked.currentRunId);
97
+ if ((!tracked && !resolved) ||
98
+ (!resolved && until === "execution" && !cached?.reportReady)) {
68
99
  unknownIds.push(taskId);
69
100
  }
70
101
  else {
@@ -81,40 +112,95 @@ export function registerOpencodeWaitForTask(server) {
81
112
  while (true) {
82
113
  // Poll all tasks that are not yet finished
83
114
  for (const { task_id, client } of taskData) {
115
+ const currentRun = getTask(task_id)?.runs?.find((run) => run.run_id === getTask(task_id)?.currentRunId);
116
+ if (currentRun?.reportReady) {
117
+ const cachedStatus = currentRun.result?.status ?? currentRun.executionState ?? "error";
118
+ statusMap.set(task_id, cachedStatus === "error"
119
+ ? {
120
+ task_id,
121
+ status: "error",
122
+ error: currentRun.result?.error ?? "execution report unavailable",
123
+ }
124
+ : { task_id, status: cachedStatus });
125
+ continue;
126
+ }
84
127
  if (isFinished(statusMap.get(task_id)))
85
128
  continue;
129
+ if (!client) {
130
+ statusMap.set(task_id, { task_id, status: "running" });
131
+ continue;
132
+ }
86
133
  try {
87
- const result = await deriveTaskStatus(client.client, client.sessionId, task_id);
134
+ const remaining = Math.max(1, deadline - Date.now());
135
+ const controller = new AbortController();
136
+ const result = await pollUntilDeadline(deriveTaskStatus(client.client, client.sessionId, task_id, {
137
+ includeUsage: true,
138
+ signal: controller.signal,
139
+ }), remaining, () => controller.abort(new Error("wait deadline exceeded")));
88
140
  statusMap.set(task_id, result);
89
141
  }
90
142
  catch (error) {
91
- // Per-task SDK error: mark as finished with error
92
- statusMap.set(task_id, {
93
- task_id,
94
- status: "error",
95
- error: error instanceof Error ? error.message : String(error),
96
- });
143
+ // The overall deadline returns the last known live status rather than
144
+ // converting a slow read into a completed per-task error.
145
+ statusMap.set(task_id, Date.now() >= deadline
146
+ ? (statusMap.get(task_id) ?? { task_id, status: "running" })
147
+ : {
148
+ task_id,
149
+ status: "error",
150
+ error: error instanceof Error ? error.message : String(error),
151
+ usage: {
152
+ captured_at: new Date().toISOString(),
153
+ snapshot_kind: "live_observation",
154
+ report: null,
155
+ diagnostic: `usage unavailable: ${error instanceof Error ? error.message : String(error)}`,
156
+ },
157
+ });
97
158
  }
98
159
  }
99
160
  // biome-ignore lint/style/noNonNullAssertion: every task_id was just written to statusMap above
100
161
  const tasks = task_ids.map((id) => statusMap.get(id));
101
- if (mode === "all" && tasks.every(isFinished)) {
102
- return jsonResult({ mode, tasks, timed_out: false });
162
+ const done = (task) => until === "report"
163
+ ? Boolean(getTask(task.task_id)?.runs?.find((run) => run.run_id === getTask(task.task_id)?.currentRunId)?.reportReady)
164
+ : isFinished(task);
165
+ if (mode === "all" && tasks.every(done)) {
166
+ return jsonResult({ mode, tasks: addReports(tasks), timed_out: false });
103
167
  }
104
- if (mode === "any" && tasks.some(isFinished)) {
168
+ if (mode === "any" && tasks.some(done)) {
105
169
  const enriched = include_progress
106
- ? await enrichUnfinishedWithProgress(tasks, taskData)
170
+ ? await enrichUnfinishedWithProgress(tasks, taskData.filter((item) => Boolean(item.client)), deadline)
107
171
  : tasks;
108
- return jsonResult({ mode, tasks: enriched, timed_out: false });
172
+ return jsonResult({ mode, tasks: addReports(enriched), timed_out: false });
109
173
  }
110
174
  if (Date.now() >= deadline) {
111
175
  const enriched = include_progress
112
- ? await enrichUnfinishedWithProgress(tasks, taskData)
176
+ ? await enrichUnfinishedWithProgress(tasks, taskData.filter((item) => Boolean(item.client)), deadline)
113
177
  : tasks;
114
- return jsonResult({ mode, tasks: enriched, timed_out: true });
178
+ return jsonResult({ mode, tasks: addReports(enriched), timed_out: true });
115
179
  }
116
180
  await sleep(pollInterval);
117
181
  }
118
182
  });
119
183
  }
184
+ function addReports(tasks) {
185
+ return tasks.map((result) => {
186
+ const task = getTask(result.task_id);
187
+ const run = task?.runs?.find((item) => item.run_id === task.currentRunId);
188
+ if (!run)
189
+ return result;
190
+ return {
191
+ ...result,
192
+ ...(run.reportReady && run.executionState ? { status: run.executionState } : {}),
193
+ run_id: run.run_id,
194
+ changes: run.report?.changes ?? [],
195
+ verification: run.report?.verification ?? { state: "pending", checks: [] },
196
+ diagnostics: run.report?.diagnostics ?? [],
197
+ evidence: run.report?.evidence,
198
+ ...(run.usage ? { usage: run.usage } : {}),
199
+ ...(task?.workspace ? { workspace: task.workspace } : {}),
200
+ ...(run.dispatchState === "uncertain"
201
+ ? { dispatch: { state: run.dispatchState, error: run.dispatchError } }
202
+ : {}),
203
+ };
204
+ });
205
+ }
120
206
  //# sourceMappingURL=wait_for_task.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wait_for_task.js","sourceRoot":"","sources":["../../../../src/modules/tools/wait_for_task.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wait_for_task.js","sourceRoot":"","sources":["../../../../src/modules/tools/wait_for_task.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcp-server-opencode",
3
- "version": "1.1.5",
3
+ "version": "1.3.0",
4
4
  "description": "MCP server that lets any MCP host (Claude Code, Codex CLI, Cursor, etc.) drive OpenCode and delegate tasks asynchronously to its agents",
5
5
  "main": "./build/src/index.js",
6
6
  "types": "./build/src/index.d.ts",
@@ -42,12 +42,14 @@
42
42
  "lint:format": "biome format --write .",
43
43
  "test": "vitest run",
44
44
  "test:coverage": "vitest run --coverage",
45
+ "smoke": "pnpm build && node --experimental-strip-types scripts/smoke.ts",
45
46
  "build": "rm -rf build && npx tsc && chmod +x build/src/index.js",
46
47
  "prepare": "npm run build",
47
48
  "publish": "npm publish --access public"
48
49
  },
49
50
  "files": [
50
- "build"
51
+ "build",
52
+ "CHANGELOG.md"
51
53
  ],
52
54
  "dependencies": {
53
55
  "@modelcontextprotocol/sdk": "^1.29.0",