* fix: avoid unnecessary project plugin dependencies
Fixes#12778
* test: move config plugin-dependency tests onto the Effect 4 API
zipRight, Effect.fork and Fiber.poll are gone in effect 4.0.0-beta.83, so
typecheck failed on this file. Uses andThen, forkChild and a bounded join.
* refactor: move plugin dependency logic into kilo-owned helper
Per review, extract the local plugin dependency install out of the upstream
config.ts and into packages/opencode/src/kilocode/config/plugin-deps.ts so the
upstream file keeps a minimal call and future merges have less to conflict on.
needsLocalPluginDependency owns the file:// specifier test and
installLocalPluginDependency owns the npm install effect, taking the npm
service, dir, version and local flag as parameters. Behavior is unchanged: the
plugins accumulator still collects both the file-loaded specs and the
ConfigPlugin.load results before the check, and the resulting fiber is still
pushed onto deps.
---------
Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Removes packages/opencode/.kilo/tui.json, an empty {} file that was
accidentally committed by a broad 'git add' while running the httpapi
exerciser (PATCH /tui/config) from packages/opencode/ during work on
PR #13271 (feat(cli): add experimental MCP Apps support with
resource/tool HTTP endpoints).
Also ignores per-directory tui.json/tui.jsonc runtime config files
under packages/*/.kilo/ so this can't recur.
The httpapi coverage gate requires every declared route to have a
scenario. Add Kilo-owned scenarios for POST /experimental/resource/read
and POST /experimental/mcp/call-tool asserting the flag-gated 404 (the
exerciser runs with experimentalMcpApps off).
Extract the experimental MCP Apps schemas, HTTP handler bodies, and the
tool-call metadata helper into @/kilocode/mcp/apps so the shared upstream
files only carry minimal marked integration points (route registrations,
imports, one field). Reduces the long-term diff against upstream opencode.
- Add kilocode_change markers to all shared upstream files touched
- Log MCP callTool failures instead of silently swallowing them
- Remove redundant type casts on the callTool result
- Make ReadResourcePayload.server required (schema-level validation)
and drop the now-dead BadRequest guard
- Remove unused meta field from ReadResourceContent schema
- Add KILO_EXPERIMENTAL_MCP_APPS runtime flag
- Expose clientName on McpTool interface and populate it during tool listing
- Add POST /experimental/resource/read and POST /experimental/mcp/call-tool HTTP endpoints
- Gate both endpoints behind experimentalMcpApps flag
- Propagate mcpApp UI metadata (resourceUri, serverId) in tool call results
when tools advertise _meta.ui.resourceUri in their definition
- Add docs/kilo-headless-embedding.md for headless and embedding capabilities
- Fix test fixtures to include clientName in McpTool mocks