You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit b251ed3
Browse filesBrowse the repository at this point in the historyBrowse files
feat(tools): add optional progress reporting and GitHub Actions CI
- deriveTaskStatus: optional includeProgress attaches TaskProgress
(partial text snippet, completed tool-call count, current tool)
- opencode_get_task_status and opencode_wait_for_task: include_progress
input; wait_for_task enriches unfinished tasks only in the final
response, never inside the poll loop
- CI workflow: lint, test with 100% coverage thresholds, build
- README: CI, coverage, and npm badges; fix stale colocated-tests note
An MCP (Model Context Protocol) server that lets any MCP host — Claude Code, Codex CLI, Cursor, etc. — drive an [OpenCode](https://opencode.ai) instance and delegate work to its subagents — so orchestrator models like Opus or Fable can hand off tasks to the other models OpenCode exposes.
4
8
5
9
```
@@ -29,9 +33,9 @@ Task delegation is **asynchronous**: starting a task returns immediately with a
29
33
|`opencode_start_task`| Delegate a task to an agent by starting a new session and prompt (optional `agent` / `model` override) |
30
34
|`opencode_continue_task`| Send a follow-up prompt to an existing task's session for iterative back-and-forth with the subagent |
31
35
|`opencode_cancel_task`| Abort a running delegated task by cancelling its session |
32
-
|`opencode_get_task_status`| Poll the status of a delegated task (`pending` / `running` / `completed` / `failed`)|
36
+
|`opencode_get_task_status`| Poll the status of a delegated task (`pending` / `running` / `completed` / `failed`); optional `include_progress` adds a partial output snippet and the currently running tool while it's still running|
33
37
|`opencode_get_task_result`| Fetch the final result of a completed task |
34
-
|`opencode_wait_for_task`| Long-poll one or more delegated tasks until they finish (`mode: "all"` or `"any"`) or the timeout elapses |
38
+
|`opencode_wait_for_task`| Long-poll one or more delegated tasks until they finish (`mode: "all"` or `"any"`) or the timeout elapses; optional `include_progress` enriches any still-unfinished tasks in the final result with a partial output snippet and the currently running tool|
"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.",
62
+
"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.",
34
63
inputSchema: {
35
64
task_ids: z.string().array().min(1).describe("IDs of tasks to wait for"),
36
65
mode: z
@@ -47,9 +76,15 @@ export function registerOpencodeWaitForTask(server: McpServer) {
47
76
.describe(
48
77
`Time between status checks in milliseconds (default ${DEFAULT_POLL_INTERVAL_MS})`,
49
78
),
79
+
include_progress: z
80
+
.boolean()
81
+
.optional()
82
+
.describe(
83
+
"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)",
0 commit comments