Files
fastcrw-opencode-websearch/docs/runtime-checks.md
T
haylanandClaude Bot 7d7c684724
check / check (pull_request) Successful in 27s
docs: record runtime check results
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-03 19:40:19 +02:00

4.2 KiB

Runtime checks

Results of the verification list in docs/spec.md. Run on 2026-10-03 against opencode v2.0.22 (Windows), in an isolated profile (XDG_CONFIG_HOME, XDG_DATA_HOME, XDG_CACHE_HOME, XDG_STATE_HOME pointed at a temp folder, private opencode serve on a local port, mock fastCRW server on another), so the real opencode config was never touched.

Summary

# Check Result
1 Built-in providers removable or disableable Not run (plugin did not load)
2 Throwing setup disables only this plugin Not run (plugin did not load)
3 Config websearch.provider vs editor.default.set Not run (plugin did not load)
4 Install by name from the Gitea registry Not run (needs a published release)
5 Release job token has package-write rights Not run (needs a release run)
6 @opencode/plugin install weight Done
7 npm run smoke against the real fastCRW server Not run (server unreachable from this machine)
8 Typings, time shape, 429 cooldown Typings done; 429 not run

Findings

Plugin did not load locally (blocks checks 1 to 3)

I tried three ways to load the built plugin (dist/index.js) into a private opencode serve, and checked GET /api/plugin and GET /api/websearch/provider after a restart and after POST /api/location/reload:

  1. plugins: [{ "package": "G:/_DEV/repos/fastcrw-opencode-websarch", "options": {...} }] in the global opencode.jsonc.
  2. The same with "package": "file:///G:/_DEV/repos/fastcrw-opencode-websarch".
  3. Auto-discovery: plugins/fastcrw.mjs in the config directory re-exporting the built file, with the endpoint taken from CRW_API_URL.

In every case opencode parsed the config (GET /api/config showed the plugins entry), but the plugin never appeared in GET /api/plugin (88 built-in entries only), fastcrw never appeared in the websearch provider list (exa, firecrawl, parallel, tavily, tinyfish), no request reached the mock server, and the debug log contained no plugin-related message or error. The cause is undetermined. Candidates: Windows path handling, plugins only loading per session rather than per location, or a problem in the built output. Next step: reproduce on Linux or macOS, or load a trivial hello-world plugin the same way to separate a loader problem from a problem in this plugin.

6. @opencode/plugin install weight

npm install of @opencode/plugin@2.0.22 adds about 100 MB of transitive dependencies (mainly effect, OpenTelemetry, @redis). Its peers solid-js, @opentui/core, @opentui/solid and @opencode/theme are marked optional and are not installed. Decision for the first release: keep it in dependencies as the docs say; revisit if install size matters.

8. Typings

From @opencode/schema 2.0.22: a websearch result is { url: string, title?: string, content?: string, time: { published?: number } }, so time: {} is valid. execute receives ({ query }, { signal }). editor.default.set(selection: string | false). Whether a 429 status in an error message triggers opencode's provider cooldown is not verified.

Useful for later runs

  • opencode serve --hostname 127.0.0.1 --port <p> prints a generated server password; HTTP Basic auth with user opencode works. GET /openapi.json lists the API.
  • Relevant operations: GET /api/plugin, GET /api/websearch/provider, POST /api/websearch (body needs query and providerID), POST /api/location/reload.
  • opencode debug config hung in an empty profile; opencode plugin add writes to the global config, so avoid it on a real machine.

7. Smoke test

crw.home:3000 did not respond from this machine. Run CRW_API_URL=http://crw.home:3000 npm run smoke -- "opencode" from a machine on your network and add the printed response shape (data[] or data.results) here.