Skip to content

fix(dsh): support @deepseek-ai/dsh-tools 0.2.x - #311

Open
WODE25500 wants to merge 1 commit into
microsoft:mainfrom
WODE25500:chore/dsh-upstream-sync
Open

WODE25500 wants to merge 1 commit into
microsoft:mainfrom
WODE25500:chore/dsh-upstream-sync

Conversation

@WODE25500

Copy link
Copy Markdown
Contributor

Syncs plugins/dsh with the standalone dsh-skillopt package (WODE25500/dsh-skillopt), which is otherwise byte-identical to this directory apart from its own CI/CHANGELOG/lock.

Problem. plugins/dsh/package.json imports @deepseek-ai/dsh-tools directly at runtime but declares it only as an optional peer at ^0.1.0-rc.8. That range admits neither 0.1.1-rc.2 nor 0.2.0-rc.2 — npm does not match a prerelease whose [major, minor, patch] tuple the range never names — so the plugin's requirement conflicts with the tool runtime the harness installs. @deepseek-ai/dsh 0.2.0-rc.2 (npm latest/next) ships dsh-tools 0.2.0-rc.2, and 0.1.5-rc.2 ships 0.1.1-rc.2.

Change. Declare @deepseek-ai/dsh-tools as a direct dependency with the range this plugin is actually tested against:

"@deepseek-ai/dsh-tools": ">=0.1.1-rc.2 <0.2.0 || >=0.2.0-rc.1 <0.3.0"

Two arms are needed: npm does not match prereleases of 0.2.0 unless the range names that tuple with a prerelease, so <0.3.0 alone still resolves to 0.1.1-rc.2. The optional cordis peer is unchanged. Package version and the README prerequisites line are aligned with the standalone package.

No source change. defineTool is byte-identical between the 0.1 and 0.2 lines (lib/index.js export list and schema.d.ts are the same), and the packed canary passes unchanged:

  • node scripts/canary.mjs -> 40 checks, ALL CHECKS PASSED against dsh-tools 0.2.0-rc.2 (full peer tree, cordis 4.0.4)
  • same canary against 0.1.1-rc.2 -> ALL CHECKS PASSED
  • 0.2.1-alpha.2 (npm alpha, published 2026-10-09) also passes; it is intentionally left out of range because that line pairs with the prerelease cordis 4.0.5-alpha.1, which the plugin does not claim yet.

`plugins/dsh` declared `@deepseek-ai/dsh-tools` only as an optional peer at
`^0.1.0-rc.8` while importing it directly at runtime. That range admits neither
`0.1.1-rc.2` nor `0.2.0-rc.2` (npm does not match prereleases of a tuple the
range never names), so under the current harness the plugin's requirement
conflicts with the tool runtime the harness installs: @deepseek-ai/dsh
0.2.0-rc.2 ships dsh-tools 0.2.0-rc.2.

Declare it as a direct dependency with the range this plugin is tested
against — `>=0.1.1-rc.2 <0.2.0 || >=0.2.0-rc.1 <0.3.0` — keeping the optional
`cordis` peer, and align the package version and README prerequisites with the
standalone dsh-skillopt package. No source change: `defineTool` is identical in
both lines and the packed canary (40 checks) passes against dsh-tools
0.2.0-rc.2.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant