Skip to content

feat: wire OpenCode as a third harness via Yoke#28

Open
d180 wants to merge 2 commits into
AlmanacCode:mainfrom
d180:feat/opencode-yoke-integration
Open

feat: wire OpenCode as a third harness via Yoke#28
d180 wants to merge 2 commits into
AlmanacCode:mainfrom
d180:feat/opencode-yoke-integration

Conversation

@d180

@d180 d180 commented Jul 12, 2026

Copy link
Copy Markdown

Summary

  • Add OpenCode as a third harness (alongside Codex/Claude) via almanac-yoke: harness selection, config/model validation, setup wizard, instruction install, and transcript sync/runtime reading.

Why

Yoke (our provider library) added OpenCode support (companion PR: AlmanacCode/Yoke#1). CodeAlmanac's own harness selection, config validation, setup wizard, instruction installer, and transcript sync only knew about Codex/Claude, so OpenCode had no path through any of them.

Verification

uv run pytest        # 513 passed
uv run ruff check .  # clean
git diff --check     # clean
uv build --out-dir dist
uvx twine check dist/*  # PASSED
Also live-tested against a real opencode CLI and real git repos through init, garden, ingest, and sync.

Docs and wiki

  • README/docs updated if user-facing behavior changed.
  • almanac/ wiki updated if an implementation decision, workflow, invariant, or gotcha changed.
  • Not applicable.

Notes for reviewers

  • pyproject.toml previously pinned almanac-yoke via a local dev-only path override; that's been removed and repinned to >=0.1.7,<0.2 (a real published version). This PR is still sequenced behind feat: add OpenCode as a third provider adapter Yoke#1 — the one skipped test (test_adapter_forwards_exact_prompt_and_model[opencode]) self-clears once Yoke publishes a release with Provider.OPENCODE.
  • default_source_runtime_adapters() had hardcoded its adapter list directly, bypassing an existing aggregator — worth a look since it's an easy place for a future adapter to go missing silently again.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant