siliconflow/dsh-llm-siliconflow v0.2.0-rc.3
siliconflow/dsh-llm-siliconflow
Captured source
source ↗published Sep 14, 2026seen 4wcaptured 4whttp 200method plain
0.2.0-rc.3 — single build, both dsh eras
Repository: siliconflow/dsh-llm-siliconflow
Tag: v0.2.0-rc.3
Published: 2026-09-14T05:33:22Z
Prerelease: yes
Release notes: One published build now runs unchanged inside BOTH dsh runtime closures — no per-era builds, no forked versions.
- OLD era (dsh-llm 0.1.1-rc.2 / dsh CLI 0.1.1, credentials-local 0.1.0-rc.8 flat layout, settings 0.1.1): CallId brand, flat credentials, module-level
installSettingsSection, discovery Request withsignal. - NEW era (dsh-llm 0.1.5-rc.2, credentials version-1, settings 0.1.5): ToolCallId brand,
version: 1+refs:credentials, service methodinstallSection, discovery Operation.
How it works (src/dsh-era.ts)
- Namespace imports replace era-sensitive named imports — ESM link-time export validation applies only to named imports, which is where the reported
SyntaxError: ... 'CallId'came from. Runtime probe:typeof ns.ToolCallId === 'function'. toolCallIdOf()resolves the era-correct brand constructor at call time (ToolCallId ?? CallId), failing loud when neither exists.- Era-union discovery shape
ModelDiscoveryShape(signal lived on the Request in the old era, on the Operation in the new — one callback serves both). - Settings install probes both surfaces, each verified present in exactly one era's real package:
service.installSectionmethod (new; method-call form keeps the service's registration state bound) and the module-levelinstallSettingsSectionfunction (old; it runs its ownctx.inject(['settings'])). deepEqualJsoninlined and key-order-insensitive —@deepseek-ai/dsh-util-valuespostdates the OLD era entirely; keeping it as a peer made npm resolution fail under old dsh homes.- Credentials write is layout-preserving: fresh/flat documents stay flat (OLD-era native read; NEW-era dsh migrates on next boot), existing version-1 documents stay version-1. Early-wizard top-level artifacts still fold back under
refs. @deepseek-ai/dsh-*peerDependencies relaxed to*with optional peerDependenciesMeta — fixes the ERESOLVE that blocked 0.2.0-rc.2 installs on old-era hosts (npm tried to auto-install the never-publisheddsh-util-values, 404).
During release review
A blocker was caught and fixed before tagging: the old-era settings path initially probed the settings *service object* for installSettingsSection — but the OLD dsh-settings (0.1.1) exports it as a *module-level function* and the service object carries no such member (verified against the 0.1.1-rc.2 tarball and at runtime). The corrected dual-surface probe routes into the genuine module function in a pure old-era closure.
Verification (real executions)
- Dual-era link/import of the published bits: OK in 0.1.1-rc.2 and 0.1.5-rc.2 closures — the original
SyntaxError: CallIdreproducer is gone - Wizard run from the published package: flat layout written with comments kept; OLD credentials-local 0.1.0
parseCredentialsDocumentreads both keys back; NEWrenderFlatLayoutMigrationconverts the flat output correctly - Harness workspace: typecheck 0 errors, 220/220 tests, coverage gate passed (serialize.ts:78 branch is the pre-existing baseline gap, stash-verified)
Full change details: #3