Route OpenCode (and its Kilo sibling) through the public Host-Integration Interface and land two Context7-verified capability upgrades. Byte-identical install output for all 16 runtimes (golden parity asserted). Through the interface (AC2): - OpenCode/Kilo's bespoke commands+skills+plugin install (the inline `else if (isOpencode || isKilo)` block) moves into the engine (installOpencodeFamilyCommands/Artifacts in src/install-engine.cts), dispatched by installRuntimeArtifacts when the descriptor declares hostBehaviors.combinedFamilyInstall. opencode/kilo now flow CLI -> _runtimeAdapter -> installRuntimeArtifacts like the skills runtimes. _isSkillsRuntime no longer excludes them; the bespoke block + dead copyFlattenedCommands are removed. - Every hardcoded `runtime === 'opencode'`/`isOpencode` branch is folded into descriptor-driven runtime.hostBehaviors. ZERO `runtime === 'opencode'`/`'kilo'` string-equality remain in bin/install.js / install-engine.cts / runtime-artifact-conversion.cts. Upgrades (AC4): - Background dispatch: OpenCode shipped experimental background subagents in v1.15 and made them default-on in v1.17 -> dispatch.background/backgroundDispatch flip to true; shouldFlattenDispatch(opencode) now returns false (behavioral change; type: Changed). - Expanded event surface: the OpenCode plugin subscribes permission.asked/replied + session.error. Tests: opencode-imperative-reference (adapter/profile, shouldFlattenDispatch pin, fail-closed negotiate, hostBehaviors, AC2 source-guard) + extended plugin surface test. Docs: capability matrix v1.15/v1.17 citations. Changeset (Changed). gitignore .memdb//.memtrace/. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1.3 KiB
type, pr
| type | pr |
|---|---|
| Changed | 2087 |
OpenCode is now driven through the public Host-Integration Interface, with two capability upgrades (ADR-1239 / EoS). OpenCode and its Kilo sibling previously installed via a bespoke runtime === 'opencode'/isOpencode branch in bin/install.js; its commands+skills+plugin install now runs through the imperative adapter → the engine's combined-family install path (installRuntimeArtifacts), and every hardcoded runtime === 'opencode' branch is folded into descriptor-driven runtime.hostBehaviors. Install/uninstall output is byte-identical (golden parity asserted for all 16 runtimes). Two Context7-verified upgrades land: (1) background dispatch — OpenCode shipped experimental background subagents in v1.15 and made them default-on in v1.17, so dispatch.background/backgroundDispatch flip to true; GSD no longer force-flattens OpenCode-hosted wave dispatch (shouldFlattenDispatch now returns false), letting agents run concurrently where the host supports it. (2) expanded event surface — the OpenCode plugin now subscribes to permission.asked, permission.replied, and session.error (added to EXTENSION_EVENT_SURFACES.opencode), wiring the declared surface for future permission/error-aware bindings. (#2087)