feat: add OpenCode runner support#1263
Conversation
1cc6d89 to
1df5f63
Compare
1071830 to
8874763
Compare
9424f3f to
50c844e
Compare
|
@JappyMondo Great work here! We had to clear a big codex update first, but now ready to get on with merging this in. Can you bring it up to speed with 'main' branch? |
|
hi @Connoropolous thanks for the feedback, yes i will address all these :) regarding the model selection labels, for the opencode runner you need a 3 part selector, runner + provider + model |
…ode-model-selector-handling fix(opencode): harden model selectors
…-activity-like-claude-runner fix(opencode): format todowrite activity
…idermodel-names-in-linear fix(opencode): show useful model names
…-calls-to-meaningful-linear fix(opencode): label aborted tool activity
|
@Connoropolous i fixed/addressed all your comments and will now test it for the next couple days, feel free to already give it a look :) |
|
awesome! we will be running it in a new test |
…-support # Conflicts: # CHANGELOG.internal.md # CHANGELOG.md # packages/core/src/index.ts # pnpm-lock.yaml
|
Just pushed an update to bring this branch back in sync with The branch is now mergable again the only remaining blocker is the required review approval. Could you let us know where this stands on your side and what's needed to move it forward? Happy to address any feedback or make further changes. |
|
@cyrusagent can you report to me on this PR handles the translation of the 'allowed tools' into opencode compatibility, or otherwise approaches that? (compared to claude runner, cursor runner, and codex runner) |
|
Short version: this PR does add an OpenCode-specific translation layer, but it is not strict parity with Claude/Cursor. OpenCode path:
Comparison:
Main caveat: OpenCode currently auto-allows every enabled MCP server present in runtime config via So: good compatibility layer for common built-in tool classes, but not exact allowed-tools parity. The biggest follow-up I’d want before calling it strict is to stop auto-allowing all configured MCP servers, or filter that server/tool permission set from |
|
@cyrusagent " The biggest follow-up I’d want before calling it strict is to stop auto-allowing all configured MCP servers, or filter that server/tool permission set from allowedTools instead. " Is it clear what would be done to enable this? Don't actually do it, just discuss. |
|
@cyrusagent can you try again to answer? I missed that |
|
Yes — it's a small, well-scoped change. Here's what's actually going on and what would be done. Why it auto-allows today. In Key point: the allowlist path for MCP already exists. Option A (recommended — strict parity). Delete the Option B (filter instead of remove). Keep the loop but intersect it with the allowlist — only auto-allow a server that The diligence that matters more than the code. The auto-allow exists because Test coverage to add: in Net: one-line removal plus verifying the allowed-tools defaults carry the intended MCP entries. I made no code changes. |
|
The 2 uncommitted changes ( |
|
Hey @Connoropolous i am using this daily and i havent seen the error you experience even once... Not sure what it might be... I also saw your conversation here with cyrusagent, do you want me to adapt some things? |
|
@Connoropolous ping :) |



Summary
opencode run, parses JSONL events, preserves appended system prompts, and maps lifecycle/output events into Cyrus runner messages.opencodelabel and[agent=opencode]selector, including model/default config handling and chat/session continuation safeguards.Test plan
pnpm buildpnpm typecheckpnpm test:packages:runpnpm auditpnpm lint(warning-only Biome suggestions; no errors)