feat(opencode): native opencode addon — bottom-row project indicator + in-TUI switcher #98
Open
michal
wants to merge 1 commits from
feat/opencode-extension-abhishek into main
pull from: feat/opencode-extension-abhishek
merge into: michal:main
michal:main
michal:fix/smoke-resultid-regex
michal:fix/drilldown-required-params
michal:deploy/bounded-failures
michal:fix/bounded-mcp-failures
michal:test/wire-safe-smoke
michal:fix/wire-safe-prose
michal:fix/wire-safe-tool-names
michal:fix/gitea-mcp-digest-pin
michal:feat/gitea-mcp-shell-base
michal:fix/injector-image-server-argv
michal:feat/injector-attach-mode
michal:fix/injector-entrypoint
michal:fix/server-repo-field-mapping
michal:feat/per-server-identity-tests
michal:fix/openbao-list-verb
michal:feat/openbao-resilience
michal:fix/stdio-restart-recovery
michal:hotfix/toolcall-timeout
michal:fix/deploy-double-smoke
michal:fix/paginator-drilldown-contract
michal:fix/chat-repl-thread-brick
michal:fix/chat-sse-streaming
michal:fix/pi-ext-module-resolution
michal:worktree-fix-healthcheck-unifi
michal:feat/agent-parity
michal:feat/opencode-extension
michal:feat/opencode-mine
michal:opencodeeepseek
michal:feat/opencode-extension-mcpctl
michal:feat/pi-extension
michal:feat/prime-agent-switcher-ux
michal:fix/smoke-test-cleanup
michal:feat/mcpctl-switcher-status
michal:feat/config-prime-agent
michal:bench/config-prime-agent-pre-fix
michal:fix/mcp-bridge-head-of-line
michal:feat/llm-tier-resolution
1 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
9aea1189bd |
feat(opencode): native opencode addon — bottom-row project indicator + in-TUI switcher
Some checks failed
CI/CD / lint (pull_request) Successful in 1m10s
CI/CD / test (pull_request) Successful in 1m23s
CI/CD / typecheck (pull_request) Successful in 2m58s
CI/CD / smoke (pull_request) Failing after 1m55s
CI/CD / build (pull_request) Successful in 4m56s
CI/CD / publish (pull_request) Has been skipped
Adds an opencode integration mirroring the existing pi and prime-agent addons.
The addon is a TUI plugin (`src/opencode-ext/open-mcpctl.tsx`) that:
- renders the active mcpctl project into opencode's `app_bottom` slot — the
status row that also carries the token counter / model info,
- registers a `mcpctl.switch_project` command bound to `<leader>m` that opens a
searchable `DialogSelect` project picker,
- switches live by re-pointing opencode's `mcpctl` MCP server at the new
project's mcplocal endpoint via the SDK client (native MCP, no JSON-RPC code),
- persists state in `~/.mcpctl/opencode-state.json` (+ `.mcpctl-project` marker).
Pure helpers (`filterProjects`, `toolChangeAnnouncement`) live in
`projects.ts` so they are unit-tested.
`mcpctl config opencode --project X` provisions it: writes the plugin into
`~/.config/opencode/plugin/`, registers the `.tsx` in opencode.json's plugin
array (auto-discovery only matches {ts,js}), best-effort installs the TUI peer
deps (`@opentui/*`), and syncs skills into `~/.config/opencode/skill`.
`mcpctl skills sync --agent opencode` is added as a fourth shared-tree target.
Closes typecheck gap with `typecheck:opencode-ext` against the real
`@opencode-ai/plugin` + `@opentui/solid` types.
Tests: embed freshness, opencode-settings, projects helpers, skills agent
root. Full `pnpm run typecheck` + cli tests pass; completions regenerated.
|