Repository navigation
Conversation
- The deprecated @viztor/dsh-opencode wrapper re-exported a `default` the
barrel does not have, an ESM link error on every host load. It now
forwards `export *` only, written by one shared helper that a test links
against the built barrel in a real Node process.
- isZenProvider("opencode-google") answered false: "go" inside "google"
read as the Go plane. It now uses the plane rule the catalog already has.
- enrichModelsResponse answered a 401, 403, 429 or 5xx with a 200 catalog.
Those statuses now pass through; a 404 is still filled from the catalog,
because the Go plane's inference base has no /models of its own.
- The warning colour named a token the host does not define, so warnings
rendered as caption text. They now use --dsw-alias-state-warn-label.
- The settings spinner only animated while the meter was mounted; the
settings surface now carries its own keyframes.
- The stream hook wrote debugFile with debug off. debug is the switch and
debugFile only where it writes, the same gate the fetch patch uses.
- The purge row reported the host's own { ok: false } failure as "not a
purge result" and cast the answer; it now shows the host's message and
parses through the contract's whitelisting parser.
- The endpoint copy described modern as /inference/v1, which the plugin
never sends. It now names the per-protocol inference family, and auto as
its alias, which is what the code already did.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0141fKp5k6hiaJcP5ovhGtSD
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0141fKp5k6hiaJcP5ovhGtSD
This was referenced Oct 23, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0141fKp5k6hiaJcP5ovhGtSD
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Phase P1a of
docs/improvement-plan.md. It is stacked on #105 and targets that branch; once #105 merges, its base moves tomain.It makes eight small fixes to defects that shipped in 1.4.1. Each one opened with a test that was red on the base.
@viztor/dsh-opencodewrapper re-exported adefaultthat the barrel doesn't have. That is an ESM link error on every load:SyntaxError: … does not provide an export named 'default'.export *only, written by one shared helper (scripts/wrapper-forwarder.ts).test/wrapper-forwarder.test.tslinks the generated entry against the built barrel in a real Node process. vite-node would turn the missing export intoundefinedand stay green.isZenProvider("opencode-google")answered false, because the "go" inside "google" read as the Go plane.catalogPlaneForRoutealready encodes: Go isopencode-gooropencode-go-*.request-shape.test.ts, plus a usage-service behaviour caseenrichModelsResponseanswered a 401, 403, 429 or 5xx with a 200 catalog./models.catalog.test.ts--dsw-alias-label-warning, which the host doesn't define, so warnings rendered as caption text.--dsw-alias-state-warn-label, the token the primitives' own modules use.host-tokens.test.tschecks every token the card files name against the primitives' token set. It was checked by planting a bogus token.dsh-oc-spinkeyframes.settings-usage.test.tsxdebugFilewithdebugoff.debugis the switch anddebugFileis only where it writes. The fetch patch already used this gate.stream-hook.test.ts,lifecycle.test.ts{ ok: false }failure as "not a purge result", and cast the answer.parsePurgeResult.settings-purge.test.ts,settings-card-purge.test.tsxmodernas/inference/v1, which the plugin never sends.autoas its alias. This is what the code already did; behaviour is unchanged.endpoint-copy.test.ts,pi-provider.test.tsBehaviour changes worth knowing
/modelslisting now reach the host as errors. A 401, 403 or 5xx used to show up as a full catalog. The host now gets a failed listing it can report.debugFilewithoutdebug: trueno longer writes anything. The README examples that paireddebug: falsewith adebugFilewere updated.Review
The change was reviewed in three lenses: correctness and host contracts, tests, and repository rules. Two independent skeptics checked each finding. Over three rounds the reviewers raised 23 findings; 22 survived as low severity and were fixed, and one was refuted.
Verification
All run locally:
pnpm run checktest:mockscripts/check.tstest:mockThe diff contains no local paths.
Generated by Claude Code