diff --git a/package.json b/package.json index 5b59c9c..873c109 100644 --- a/package.json +++ b/package.json @@ -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", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 35b388d..71715df 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -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)) diff --git a/scripts/bundle-smoke.mjs b/scripts/bundle-smoke.mjs index a84ba25..41051f3 100644 --- a/scripts/bundle-smoke.mjs +++ b/scripts/bundle-smoke.mjs @@ -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) }, diff --git a/tsdown.config.ts b/tsdown.config.ts index e7d0cee..0018308 100644 --- a/tsdown.config.ts +++ b/tsdown.config.ts @@ -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)