build: track the 0.1.2 client module graph

Drop the deleted `@deepseek-ai/dsh-client-runtime` from dsh.client.inject
and remove the preloaded-client-externals channel that died with it; mirror
0.1.2's platform module table (+ dsh-client-store) in the client bundle's
purity gate; widen the dsh peer ranges to >=0.1.0-rc.7 so 0.1.2 prereleases
resolve; pin the devDependency types to the newest published surface
(0.1.1-rc.2); the bundle smoke's fake ctx now honors inject callbacks.
This commit is contained in:
bowenliang123 committed 2026-08-28 22:32:31 +08:00
1 parent 7b61d5ddc7
commit 1dab8dcdbf
4 files changed
+49 -43

No files matched your search

+7 -8
View File
@@ -52,7 +52,6 @@
"inject": [
"@deepseek-ai/dsh-client-connection",
"@deepseek-ai/dsh-client-locale",
"@deepseek-ai/dsh-client-runtime",
"@deepseek-ai/dsh-client-ui-conversation",
"@deepseek-ai/dsh-client-ui-settings"
],
@@ -71,9 +70,9 @@
"license": "Apache-2.0",
"peerDependencies": {
"@deepseek-ai/cordis": "^4.0.1",
"@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.7",
"@deepseek-ai/dsh-session": "^0.1.0-rc.7",
"@deepseek-ai/dsh-settings": "^0.1.0-rc.7",
"@deepseek-ai/dsh-client-ui-primitives": ">=0.1.0-rc.7",
"@deepseek-ai/dsh-session": ">=0.1.0-rc.7",
"@deepseek-ai/dsh-settings": ">=0.1.0-rc.7",
"@deepseek-ai/schemastery": "^3.18.1",
"react": "^18.3.1",
"zod": "^4.4.3"
@@ -88,10 +87,10 @@
},
"devDependencies": {
"@deepseek-ai/cordis": "^4.0.1",
"@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.7",
"@deepseek-ai/dsh-session": "^0.1.0-rc.7",
"@deepseek-ai/dsh-session-projection": "^0.1.0-rc.7",
"@deepseek-ai/dsh-settings": "^0.1.0-rc.7",
"@deepseek-ai/dsh-client-ui-primitives": "^0.1.1-rc.2",
"@deepseek-ai/dsh-session": "^0.1.1-rc.2",
"@deepseek-ai/dsh-session-projection": "^0.1.1-rc.2",
"@deepseek-ai/dsh-settings": "^0.1.1-rc.2",
"@deepseek-ai/schemastery": "^3.18.1",
"@stylistic/eslint-plugin": "^5.10.0",
"@types/node": "^26.2.0",
+31 -31
View File
@@ -16,17 +16,17 @@ importers:
specifier: ^4.0.1
version: 4.0.1
'@deepseek-ai/dsh-client-ui-primitives':
specifier: ^0.1.0-rc.7
version: 0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))
specifier: ^0.1.1-rc.2
version: 0.1.1-rc.2(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))
'@deepseek-ai/dsh-session':
specifier: ^0.1.0-rc.7
version: 0.1.0-rc.8(6fd26f59436a18b115f326d6060415e6)
specifier: ^0.1.1-rc.2
version: 0.1.1-rc.2(6fd26f59436a18b115f326d6060415e6)
'@deepseek-ai/dsh-session-projection':
specifier: ^0.1.0-rc.7
version: 0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-session@0.1.0-rc.8(6fd26f59436a18b115f326d6060415e6))
specifier: ^0.1.1-rc.2
version: 0.1.1-rc.2(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-session@0.1.1-rc.2(6fd26f59436a18b115f326d6060415e6))
'@deepseek-ai/dsh-settings':
specifier: ^0.1.0-rc.7
version: 0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/schemastery@3.18.1)
specifier: ^0.1.1-rc.2
version: 0.1.1-rc.2(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/schemastery@3.18.1)
'@deepseek-ai/schemastery':
specifier: ^3.18.1
version: 3.18.1
@@ -178,11 +178,11 @@ packages:
'@deepseek-ai/cordis': ^4.0.1
'@deepseek-ai/dsh-invariants': ^0.1.0-rc.6
'@deepseek-ai/dsh-client-ui-primitives@0.1.0-rc.8':
resolution: {integrity: sha512-P3/n4jWT5kp4kTH67h+nmLu8LhKl9KsbFn8plumQFPXKGj2ythwmVoK3Nc329ANcYlxKXVtnoLPwYrTxkSeIpA==}
'@deepseek-ai/dsh-client-ui-primitives@0.1.1-rc.2':
resolution: {integrity: sha512-vCWEha1yhY//26j/LppHC/xZrU6MOuw6lcI4bJr5L7ppbY8h7GAR24ozBr+4ESMtQ5OmsvqGnsa/Kj5ZjSLfEQ==}
peerDependencies:
'@deepseek-ai/cordis': ^4.0.1
'@deepseek-ai/dsh-invariants': ^0.1.0-rc.8
'@deepseek-ai/dsh-invariants': ^0.1.1-rc.2
'@deepseek-ai/dsh-invariants@0.1.0-rc.6':
resolution: {integrity: sha512-WfEfOi99a4cpOugRAHTBSTnesLieu3ist1q9PXDXFBHX++K1rAl9+sB7YrdnbB8LH0UOY532gS9xJUYU6w0SLw==}
@@ -204,29 +204,29 @@ packages:
'@deepseek-ai/cordis': ^4.0.1
'@deepseek-ai/dsh-invariants': ^0.1.0-rc.6
'@deepseek-ai/dsh-session-projection@0.1.0-rc.8':
resolution: {integrity: sha512-q00B+rl7WAuK0Bgh93SY2+ZpqaH2kJhfJ9n6Jg6R/m4plnH0Ip4oCAHl6u8rBzDgb1mniQGEQDz/7BN5Q3It8Q==}
'@deepseek-ai/dsh-session-projection@0.1.1-rc.2':
resolution: {integrity: sha512-SNaOrjRS4RMXocna6uL33TeS/uhcQ7jDJtJZ1HyDPL06mXUdAgje2MVt8OZCh6dH95xIiqpQQm+KjzeiQnhYSQ==}
peerDependencies:
'@deepseek-ai/cordis': ^4.0.1
'@deepseek-ai/dsh-invariants': ^0.1.0-rc.8
'@deepseek-ai/dsh-session': ^0.1.0-rc.8
'@deepseek-ai/dsh-invariants': ^0.1.1-rc.2
'@deepseek-ai/dsh-session': ^0.1.1-rc.2
'@deepseek-ai/dsh-session@0.1.0-rc.8':
resolution: {integrity: sha512-Qs5Mgn32WPPVB4rKHjsZBgLOkh0TQurUAcc9GaDVudK4dUkpno2HDh++qu/PrwRA3CZ/iwPAoFHCpB3AMMaoLg==}
'@deepseek-ai/dsh-session@0.1.1-rc.2':
resolution: {integrity: sha512-4/cv6X9HPhm47eyRhCu/WZwzrtJKegk5J+0xaxcZ9i8S0smdxP57tqy8a0jkSshLQn7BzMFxneQrlYExrLrDhQ==}
peerDependencies:
'@deepseek-ai/cordis': ^4.0.1
'@deepseek-ai/dsh-brand': ^0.1.0-rc.8
'@deepseek-ai/dsh-invariants': ^0.1.0-rc.8
'@deepseek-ai/dsh-llm': ^0.1.0-rc.8
'@deepseek-ai/dsh-scope': ^0.1.0-rc.8
'@deepseek-ai/dsh-typert-protocol': ^0.1.0-rc.8
'@deepseek-ai/dsh-brand': ^0.1.1-rc.2
'@deepseek-ai/dsh-invariants': ^0.1.1-rc.2
'@deepseek-ai/dsh-llm': ^0.1.1-rc.2
'@deepseek-ai/dsh-scope': ^0.1.1-rc.2
'@deepseek-ai/dsh-typert-protocol': ^0.1.1-rc.2
'@deepseek-ai/dsh-settings@0.1.0-rc.8':
resolution: {integrity: sha512-pqbMoiSP+Ieww9/4gcHYXcBCDlno1zYDu2OPq+5xdZ+McnK+5YBtHsiRpnR9cHQxGTH7lkfIv+adkOueQW0utg==}
'@deepseek-ai/dsh-settings@0.1.1-rc.2':
resolution: {integrity: sha512-iGdKEt91Im3gE7xA9CzRfTJsPcFcxDeDOCLhAjzbpjEv7TAjx/EoYP7lPtiy+QmOjKSKy206SEtAKol9PXWbOw==}
peerDependencies:
'@deepseek-ai/cordis': ^4.0.1
'@deepseek-ai/dsh-brand': ^0.1.0-rc.8
'@deepseek-ai/dsh-invariants': ^0.1.0-rc.8
'@deepseek-ai/dsh-brand': ^0.1.1-rc.2
'@deepseek-ai/dsh-invariants': ^0.1.1-rc.2
'@deepseek-ai/schemastery': ^3.18.1
'@deepseek-ai/dsh-timeout@0.1.0-rc.6':
@@ -2129,7 +2129,7 @@ snapshots:
'@deepseek-ai/cordis': 4.0.1
'@deepseek-ai/dsh-invariants': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)
'@deepseek-ai/dsh-client-ui-primitives@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))':
'@deepseek-ai/dsh-client-ui-primitives@0.1.1-rc.2(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))':
dependencies:
'@deepseek-ai/cordis': 4.0.1
'@deepseek-ai/dsh-invariants': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)
@@ -2175,14 +2175,14 @@ snapshots:
'@deepseek-ai/cordis': 4.0.1
'@deepseek-ai/dsh-invariants': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)
'@deepseek-ai/dsh-session-projection@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-session@0.1.0-rc.8(6fd26f59436a18b115f326d6060415e6))':
'@deepseek-ai/dsh-session-projection@0.1.1-rc.2(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/dsh-session@0.1.1-rc.2(6fd26f59436a18b115f326d6060415e6))':
dependencies:
'@deepseek-ai/cordis': 4.0.1
'@deepseek-ai/dsh-invariants': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)
'@deepseek-ai/dsh-session': 0.1.0-rc.8(6fd26f59436a18b115f326d6060415e6)
'@deepseek-ai/dsh-session': 0.1.1-rc.2(6fd26f59436a18b115f326d6060415e6)
zod: 4.4.3
'@deepseek-ai/dsh-session@0.1.0-rc.8(6fd26f59436a18b115f326d6060415e6)':
'@deepseek-ai/dsh-session@0.1.1-rc.2(6fd26f59436a18b115f326d6060415e6)':
dependencies:
'@deepseek-ai/cordis': 4.0.1
'@deepseek-ai/dsh-brand': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))
@@ -2191,7 +2191,7 @@ snapshots:
'@deepseek-ai/dsh-scope': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))
'@deepseek-ai/dsh-typert-protocol': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))
'@deepseek-ai/dsh-settings@0.1.0-rc.8(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/schemastery@3.18.1)':
'@deepseek-ai/dsh-settings@0.1.1-rc.2(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-brand@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)))(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))(@deepseek-ai/schemastery@3.18.1)':
dependencies:
'@deepseek-ai/cordis': 4.0.1
'@deepseek-ai/dsh-brand': 0.1.0-rc.6(@deepseek-ai/cordis@4.0.1)(@deepseek-ai/dsh-invariants@0.1.0-rc.6(@deepseek-ai/cordis@4.0.1))
+6 -1
View File
@@ -91,7 +91,12 @@ const ctx = {
}
return undefined
},
inject() { /* no settingsScope composed: the settings wiring stays pending */ },
inject(deps, cb) {
// Cordis fires the callback once every requested service exists; this
// fake answers every name it knows up front, so it fires immediately.
// The settingsScope wiring guards on the absent binder itself.
cb(ctx)
},
effect(fn) { const d = fn(); effectDisposers.push(d); return d },
locale: {
register(ns, d) { dicts.set(ns, d); return () => dicts.delete(ns) },
+5 -3
View File
@@ -11,13 +11,16 @@ const pkg = JSON.parse(readFileSync(join(process.cwd(), 'package.json'), 'utf8')
// Mirrors packages/client/web/src/platform.ts in deepseek-harness: the shell
// seeds these specifiers into the frozen browser module table, so client
// bundles leave them to the injected `require` instead of inlining.
// bundles leave them to the injected `require` instead of inlining. (Since
// dsh 0.1.2 the preloaded-client-externals channel is gone —
// `@deepseek-ai/dsh-client-runtime` was deleted and `dsh-client-store` joined
// the platform baseline; bundles must require nothing beyond this list.)
const PLATFORM_MODULES = [
'react', 'react/jsx-runtime', 'react-dom', 'react-dom/client', '@deepseek-ai/cordis',
'@deepseek-ai/dsh-client-store',
'@deepseek-ai/dsh-client-ui-slots',
'@deepseek-ai/dsh-client-ui-primitives',
]
const PRELOADED_CLIENT_EXTERNALS = ['@deepseek-ai/dsh-client-runtime/client']
// Mirrors the purity-gate allowances in packages/client/tsdown.client.ts:
// wire/type layers with no shared runtime identity may inline; every other
@@ -29,7 +32,6 @@ const GENERATED_REMOTE = /^@deepseek-ai\/dsh-[a-z0-9]+(?:-[a-z0-9]+)*\/remote$/
const requested = new Set([
...PLATFORM_MODULES,
...PRELOADED_CLIENT_EXTERNALS,
...(pkg.dsh?.client?.external ?? []),
])
const isRequested = (specifier: string): boolean => requested.has(specifier)