Repository navigation
fix: widen the DSH peer ranges to the tested 0.1.x line / v0.2.0-rc.1 - #3
christianschmidt wants to merge 2 commits into
Conversation
The exact pins on 0.1.0-rc.6 no longer match any current release, and DeepSeek
Harness 0.1.7-rc.1 refuses to load the bundle because of them:
dsh: skipping profile bundle "@firecrawl/dsh-firecrawl": Error: Plugin
@firecrawl/dsh-firecrawl@0.1.0 is incompatible with dsh 0.1.7-rc.1:
peerDependencies {"@deepseek-ai/dsh-launch-environment":"0.1.0-rc.6",
"@deepseek-ai/dsh-web":"0.1.0-rc.6"}
The provider code itself is unchanged and demonstrably works on the refused
runtime: packages/web and packages/util/launch-environment carry no code change
between dsh-v0.1.7-alpha.2 and dsh-v0.1.7-rc.1, and with the peers widened the
bundle composes without a warning and a real web_search returns results.
The range admits 0.1.0-rc.6 through 0.1.7 and stops before 0.1.8, including its
prereleases (the -0 bound), so the next minor needs a deliberate release.
Two semver details it hinges on, verified against DSH's own comparison
(semver.satisfies(..., { includePrerelease: true })): a caret range such as
^0.1.7 does not match 0.1.7-rc.1, because a prerelease sorts below its release;
and a lower bound of >=0.1.7-rc.1 would drop the older releases the plugin
already runs on.
The previous commit capped both peers at `<0.1.8-0`, which covers the 0.1.x line but refuses DeepSeek Harness `0.2.0-rc.1` — released 2026-09-28. The bundle is skipped again and `web_search`/`web_fetch` silently fall back to other providers, the same symptom this PR originally described. Widen both peers to `>=0.1.0-rc.6 <0.2.1-0`, which is a superset of the previous range and additionally admits 0.2.0 and its prereleases. The cap stops before `0.2.1-0` rather than `0.3.0-0` for the same reason as before: claiming the next minor is a deliberate follow-up release, not a default. Verified against `0.2.0-rc.1`: the bundle composes without a warning and a real `web_search` returns Firecrawl results. Provider code is unchanged.
|
Heads-up: DeepSeek Harness I've pushed a second commit widening both peers to Verified against |
The exact peers on
0.1.0-rc.6no longer match any current release. Since DeepSeek Harness0.1.7-rc.1a preflight evaluates plugin manifests before loading them, so the bundle is refused andweb_search/web_fetchnever reach Firecrawl:The profile still boots, so the symptom is a search that quietly no longer uses Firecrawl rather than a failed start.
Change
"peerDependencies": { "@deepseek-ai/cordis": "4.0.1", - "@deepseek-ai/dsh-launch-environment": "0.1.0-rc.6", - "@deepseek-ai/dsh-web": "0.1.0-rc.6" + "@deepseek-ai/dsh-launch-environment": ">=0.1.0-rc.6 <0.1.8-0", + "@deepseek-ai/dsh-web": ">=0.1.0-rc.6 <0.1.8-0" },The range admits
0.1.0-rc.6through0.1.7(including the0.1.7prereleases and the final release) and stops before0.1.8, including its prereleases. Three semver details it hinges on, verified against DSH's own comparison (semver.satisfies(..., { includePrerelease: true })):^0.1.7does not match0.1.7-rc.1: a prerelease sorts below its release.<=0.1.7-rc.1) would refuse0.1.7itself, so the same failure wouldreturn with the very next release.
-0bound is what keeps0.1.8-alpha.1out; a plain<0.1.8would still admit it. Claimingthe next minor is a deliberate follow-up release, not a default.
Why no code change
The provider code is unaffected and demonstrably works on the refused runtime:
ctx.web.registerSearchProvider(...),ctx.web.registerFetchProvider(...),launchEnvironmentOf(ctx)and config on theweb/tool-webrows, all present in0.1.7-rc.1with the same signatures.packages/webandpackages/util/launch-environmentcarry no code change betweendsh-v0.1.7-alpha.2anddsh-v0.1.7-rc.1(only the version string in eachpackage.json).0.1.7-rc.1and a realweb_searchreturns Firecrawl results.Verification
pnpm install --frozen-lockfile && pnpm run checkon Node 24: 96 unit tests pass, build, manifest and package guards pass, lockfile unchanged.Scope
Only the two peer ranges. No runtime code, no tests, no README.
devDependenciesstay on0.1.0-rc.6: they are development-only, are not published, and the unit suite exercises the plugin against that runtime. Bumping them to the current line is a separate change (it moves the lockfile and may require test updates). A follow-up can widen the range for0.1.8once it is tested, and modernize the credential handling (apiKeyEnvwithcredential-refplus a lazy per-request resolver, so a key from the credentials store is visible to the plugin); see the notes in #2.