From 1c6078dca6acafc71e8bfcb1ad57ac2e01b604e1 Mon Sep 17 00:00:00 2001 From: imccyu <276526105+imccyu@users.noreply.github.com> Date: Sun, 11 Oct 2026 18:00:33 +0800 Subject: [PATCH] perf(build): declare React type packages only at the workspace root TypeScript builds a synthetic signature for every JSX intrinsic element and computes a module specifier for @types/react (index and jsx-runtime) per importing file. computeModuleSpecifiers visits every symlinked location of that file and scans all 491 tsconfig paths for each; pnpm gave 65 packages their own node_modules/@types/react link. Client test-aggregate Check followed 26.9 + 0.494 * N seconds for N locations. - Remove @types/react and @types/react-dom from all 67 workspace manifests and declare them once in the root devDependencies; packages keep declaring the react and react-dom they import (ui-slots gains react). - verify-package-dependencies rejects either package in any workspace manifest and requires the root declaration, so a new package cannot add the link back. - packages/client/AGENTS.md states the rule. Client aggregate Check 59.1 s -> 26.5 s; the 76 client-only package projects 54-57 s -> ~44 s wall. File set (2,613) and diagnostics unchanged. Refs #5852 --- apps/desktop/package.json | 2 - apps/web/package.json | 2 - package.json | 2 + packages/client/AGENTS.md | 1 + packages/client/locale/package.json | 1 - packages/client/ui-agent-preset/package.json | 1 - packages/client/ui-approval/package.json | 1 - packages/client/ui-attachment/package.json | 2 - .../client/ui-brand-official/package.json | 1 - packages/client/ui-chat/package.json | 2 - packages/client/ui-commands/package.json | 1 - packages/client/ui-conversation/package.json | 2 - packages/client/ui-deliverables/package.json | 1 - .../ui-directory-picker-browse/package.json | 1 - .../ui-directory-picker-native/package.json | 1 - packages/client/ui-dockkit/package.json | 2 - packages/client/ui-goal/package.json | 1 - packages/client/ui-input-trigger/package.json | 1 - packages/client/ui-jobs/package.json | 2 - packages/client/ui-layout/package.json | 1 - .../client/ui-message-feedback/package.json | 2 - .../client/ui-model-selection/package.json | 2 - packages/client/ui-open-in-app/package.json | 1 - .../client/ui-permission-presets/package.json | 1 - packages/client/ui-plan/package.json | 1 - .../client/ui-plugin-manager/package.json | 2 - packages/client/ui-primitives/package.json | 2 - packages/client/ui-reference/package.json | 1 - packages/client/ui-renderer/package.json | 2 - packages/client/ui-schedule/package.json | 2 - packages/client/ui-session/package.json | 1 - .../client/ui-settings-account/package.json | 2 - .../ui-settings-agent-loop/package.json | 1 - .../client/ui-settings-general/package.json | 2 - .../client/ui-settings-models/package.json | 1 - .../ui-settings-plugin-inventory/package.json | 1 - .../client/ui-settings-plugins/package.json | 1 - .../ui-settings-session-log/package.json | 4 +- .../client/ui-settings-shell/package.json | 1 - .../client/ui-settings-subagent/package.json | 1 - .../ui-settings-web-search/package.json | 1 - packages/client/ui-settings/package.json | 1 - packages/client/ui-shortcuts/package.json | 1 - .../client/ui-sidebar-browser/package.json | 2 - .../ui-sidebar-documentpreview/package.json | 2 - packages/client/ui-sidebar-files/package.json | 2 - packages/client/ui-sidebar-right/package.json | 2 - .../client/ui-sidebar-terminal/package.json | 2 - packages/client/ui-sidebar/package.json | 1 - packages/client/ui-skill/package.json | 1 - packages/client/ui-slots/package.json | 2 +- packages/client/ui-subagent/package.json | 2 - packages/client/ui-theme/package.json | 1 - packages/client/ui-tool/package.json | 1 - packages/client/ui-trajectory/package.json | 2 - .../client/ui-user-questions/package.json | 1 - packages/client/ui-workflow-run/package.json | 1 - packages/client/ui-workspace/package.json | 1 - packages/client/web/package.json | 2 - .../client-ui-agent-team/package.json | 2 - .../client-ui-claude-code-mods/package.json | 1 - .../client-ui-cot-translation/package.json | 1 - .../client-ui-voice-input/package.json | 1 - packages/experimental/inspector/package.json | 1 - .../session-inspector/package.json | 2 - .../cordis-client-runner/package.json | 1 - packages/extensions/ui-cordis/package.json | 1 - .../session-log-export/package.json | 1 - .../test-support/client-runtime/package.json | 2 - pnpm-lock.yaml | 309 +----------------- scripts/verify-package-dependencies.spec.ts | 76 ++++- scripts/verify-package-dependencies.ts | 50 ++- 72 files changed, 142 insertions(+), 393 deletions(-) diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 563f60a858..34e859cd20 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -75,8 +75,6 @@ "@deepseek-ai/dsh-client-ui-primitives": "workspace:*", "react": "^18.2.0", "react-dom": "^18.2.0", - "@types/react": "~18.3.1", - "@types/react-dom": "~18.3.0", "vite": "^6.4.3", "@deepseek-ai/dsh-client-ui-theme": "workspace:*", "@deepseek-ai/dsh-client-shortcuts": "workspace:*", diff --git a/apps/web/package.json b/apps/web/package.json index 0b44c5cd00..1684c9a9d8 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -49,8 +49,6 @@ "@deepseek-ai/dsh-session-projection-cache": "workspace:*", "@deepseek-ai/dsh-util-values": "workspace:*", "@types/node": "^22.20.1", - "@types/react": "~18.3.1", - "@types/react-dom": "~18.3.0", "@types/ws": "8.18.1", "@vitejs/plugin-react": "^4.7.0", "http-server": "^14.1.1", diff --git a/package.json b/package.json index 2d76805736..3c7e0e6de4 100644 --- a/package.json +++ b/package.json @@ -242,6 +242,8 @@ "@types/node": "^22.20.1", "@types/semver": "^7.8.0", "@types/spdx-expression-parse": "^4.0.0", + "@types/react": "~18.3.1", + "@types/react-dom": "~18.3.0", "@vitest/coverage-v8": "^4.1.11", "@yao-pkg/pkg": "6.21.0", "@yarnpkg/cli-dist": "4.18.0", diff --git a/packages/client/AGENTS.md b/packages/client/AGENTS.md index 3d38aa71fd..b9ca0a9dc1 100644 --- a/packages/client/AGENTS.md +++ b/packages/client/AGENTS.md @@ -69,6 +69,7 @@ Npm sections describe installation and development relationships; each build fac 5. **Only Host runtime libraries require installation dependencies.** Browser-only third-party implementations belong in `devDependencies`, whether inlined into `lib/client.js` or retained as bare imports in a static browser library. Static libraries are Web-shell build inputs; the final Vite build merges their imports and styles. Distributed browser code remains subject to runtime license disclosure ([reference](../../.agents/notes/implemented/process/2026-08-26-published-dependency-faces.md)). 6. **Browser and Node build faces declare externality independently.** A dynamic browser half uses the baseline plus `dsh.client.external`; a statically linked face externalizes every bare specifier; a Node face externalizes its production dependencies ([`tsdown.client.ts`](tsdown.client.ts)). Moving a name between npm sections must not silently change bundle contents. 7. **Keep the published payload closed.** Every relative runtime import and emitted asset must be covered by `files`; the repository publint pass checks the exact publication view. +8. **Only the root manifest declares React type packages.** `@types/react` and `@types/react-dom` belong only in the root `package.json` `devDependencies`, and `verify-package-dependencies` rejects them in every workspace manifest; packages still declare the `react` and `react-dom` they import. Each package-local pnpm link is one more location TypeScript scans when it computes module specifiers for every JSX file ([rationale](../../.agents/notes/implemented/process/2026-10-11-lossless-build-speedups.md#1-only-the-root-manifest-declares-react-type-packages)). ## Build-time browser environment diff --git a/packages/client/locale/package.json b/packages/client/locale/package.json index e04ed4efd9..6cc7ea6e2a 100644 --- a/packages/client/locale/package.json +++ b/packages/client/locale/package.json @@ -52,7 +52,6 @@ "@deepseek-ai/dsh-client-ui-settings": "workspace:*", "@deepseek-ai/dsh-client-ui-slots": "workspace:*", "@deepseek-ai/dsh-package-manifest": "workspace:*", - "@types/react": "~18.3.1", "react": "^18.2.0", "@deepseek-ai/dsh-client-connection": "workspace:*", "@deepseek-ai/dsh-settings": "workspace:*" diff --git a/packages/client/ui-agent-preset/package.json b/packages/client/ui-agent-preset/package.json index 3549bf1ad5..93a5319006 100644 --- a/packages/client/ui-agent-preset/package.json +++ b/packages/client/ui-agent-preset/package.json @@ -68,7 +68,6 @@ "@deepseek-ai/dsh-client-ui-workspace": "workspace:*", "@deepseek-ai/dsh-session": "workspace:*", "@deepseek-ai/dsh-util-values": "workspace:*", - "@types/react": "~18.3.1", "react": "^18.2.0" }, "files": [ diff --git a/packages/client/ui-approval/package.json b/packages/client/ui-approval/package.json index 19e91693f8..8c86cc1348 100644 --- a/packages/client/ui-approval/package.json +++ b/packages/client/ui-approval/package.json @@ -60,7 +60,6 @@ "@deepseek-ai/dsh-llm": "workspace:*", "@deepseek-ai/dsh-session": "workspace:*", "@deepseek-ai/dsh-typert-protocol": "workspace:*", - "@types/react": "~18.3.1", "react": "^18.2.0", "@deepseek-ai/dsh-client-shortcuts": "workspace:*" }, diff --git a/packages/client/ui-attachment/package.json b/packages/client/ui-attachment/package.json index 4937ea4263..3b2483a7e6 100644 --- a/packages/client/ui-attachment/package.json +++ b/packages/client/ui-attachment/package.json @@ -46,8 +46,6 @@ "license": "MIT", "devDependencies": { "@deepseek-ai/cordis": "workspace:~", - "@types/react": "~18.3.1", - "@types/react-dom": "~18.3.0", "@deepseek-ai/dsh-client-locale": "workspace:*", "@deepseek-ai/dsh-client-ui-chat": "workspace:*", "@deepseek-ai/dsh-client-ui-conversation": "workspace:*", diff --git a/packages/client/ui-brand-official/package.json b/packages/client/ui-brand-official/package.json index 263c0eef6a..e21a4838eb 100644 --- a/packages/client/ui-brand-official/package.json +++ b/packages/client/ui-brand-official/package.json @@ -49,7 +49,6 @@ "@deepseek-ai/dsh-client-ui-sidebar": "workspace:*", "@deepseek-ai/cordis": "workspace:~", "@testing-library/react": "^16.3.3", - "@types/react": "~18.3.1", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/packages/client/ui-chat/package.json b/packages/client/ui-chat/package.json index 911f15930d..1eb2d42930 100644 --- a/packages/client/ui-chat/package.json +++ b/packages/client/ui-chat/package.json @@ -89,8 +89,6 @@ "@deepseek-ai/dsh-util-workspace-path": "workspace:*", "@deepseek-ai/dsh-util-values": "workspace:*", "@tanstack/react-virtual": "3.14.10", - "@types/react": "~18.3.1", - "@types/react-dom": "~18.3.0", "react": "^18.2.0", "react-dom": "^18.2.0", "@deepseek-ai/dsh-settings": "workspace:*", diff --git a/packages/client/ui-commands/package.json b/packages/client/ui-commands/package.json index c78a7e0495..d7bfa638d8 100644 --- a/packages/client/ui-commands/package.json +++ b/packages/client/ui-commands/package.json @@ -55,7 +55,6 @@ "@deepseek-ai/dsh-client-ui-input-trigger": "workspace:*", "@deepseek-ai/dsh-client-ui-slots": "workspace:*", "@deepseek-ai/dsh-commands": "workspace:*", - "@types/react": "~18.3.1", "@deepseek-ai/cordis": "workspace:~", "react": "^18.2.0", "@deepseek-ai/dsh-api-session-controller": "workspace:*", diff --git a/packages/client/ui-conversation/package.json b/packages/client/ui-conversation/package.json index 1576ea9f49..48a3f73af5 100644 --- a/packages/client/ui-conversation/package.json +++ b/packages/client/ui-conversation/package.json @@ -83,11 +83,9 @@ "@deepseek-ai/dsh-workspace": "workspace:*", "@deepseek-ai/dsh-file-reference": "workspace:*", "@deepseek-ai/dsh-util-workspace-path": "workspace:*", - "@types/react": "~18.3.1", "react": "^18.2.0", "@lexical/headless": "^0.49.0", "react-dom": "^18.2.0", - "@types/react-dom": "~18.3.0", "zod": "4.4.3", "lexical": "^0.49.0", "clsx": "^2.0.0", diff --git a/packages/client/ui-deliverables/package.json b/packages/client/ui-deliverables/package.json index be986d9f63..8fb7a29a1b 100644 --- a/packages/client/ui-deliverables/package.json +++ b/packages/client/ui-deliverables/package.json @@ -62,7 +62,6 @@ "@deepseek-ai/dsh-client-ui-renderer": "workspace:*", "@deepseek-ai/dsh-client-ui-sidebar-right": "workspace:*", "@deepseek-ai/dsh-client-ui-slots": "workspace:*", - "@types/react": "~18.3.1", "@deepseek-ai/cordis": "workspace:~", "react": "^18.2.0", "@deepseek-ai/dsh-client-ui-primitives": "workspace:*", diff --git a/packages/client/ui-directory-picker-browse/package.json b/packages/client/ui-directory-picker-browse/package.json index f8802bca27..0b24a8a9eb 100644 --- a/packages/client/ui-directory-picker-browse/package.json +++ b/packages/client/ui-directory-picker-browse/package.json @@ -54,7 +54,6 @@ "@deepseek-ai/dsh-client-ui-slots": "workspace:*", "@deepseek-ai/dsh-client-ui-workspace": "workspace:*", "@testing-library/react": "^16.3.3", - "@types/react": "~18.3.1", "@deepseek-ai/cordis": "workspace:~", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/packages/client/ui-directory-picker-native/package.json b/packages/client/ui-directory-picker-native/package.json index c1d7acd92d..9a80407630 100644 --- a/packages/client/ui-directory-picker-native/package.json +++ b/packages/client/ui-directory-picker-native/package.json @@ -48,7 +48,6 @@ "@deepseek-ai/dsh-client-ui-renderer": "workspace:*", "@deepseek-ai/dsh-client-ui-workspace": "workspace:*", "@testing-library/react": "^16.3.3", - "@types/react": "~18.3.1", "@deepseek-ai/cordis": "workspace:~", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/packages/client/ui-dockkit/package.json b/packages/client/ui-dockkit/package.json index 30b92e8b1b..13bfb47625 100644 --- a/packages/client/ui-dockkit/package.json +++ b/packages/client/ui-dockkit/package.json @@ -27,8 +27,6 @@ "@deepseek-ai/dsh-brand": "workspace:*", "@deepseek-ai/dsh-client-ui-primitives": "workspace:*", "@testing-library/react": "^16.3.3", - "@types/react": "~18.3.1", - "@types/react-dom": "~18.3.0", "react-dom": "^18.2.0", "react": "^18.2.0", "clsx": "^2.0.0" diff --git a/packages/client/ui-goal/package.json b/packages/client/ui-goal/package.json index 4408b4ce11..43497a51fe 100644 --- a/packages/client/ui-goal/package.json +++ b/packages/client/ui-goal/package.json @@ -62,7 +62,6 @@ "@deepseek-ai/dsh-commands": "workspace:*", "@deepseek-ai/dsh-goal": "workspace:*", "@testing-library/react": "^16.3.3", - "@types/react": "~18.3.1", "@deepseek-ai/cordis": "workspace:~", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/packages/client/ui-input-trigger/package.json b/packages/client/ui-input-trigger/package.json index 2cbaa42e92..e2f1fa71e3 100644 --- a/packages/client/ui-input-trigger/package.json +++ b/packages/client/ui-input-trigger/package.json @@ -52,7 +52,6 @@ "@deepseek-ai/dsh-client-test-runtime": "workspace:*", "@deepseek-ai/dsh-client-ui-primitives": "workspace:*", "@deepseek-ai/dsh-client-ui-slots": "workspace:*", - "@types/react": "~18.3.1", "@deepseek-ai/cordis": "workspace:~", "react": "^18.2.0", "@deepseek-ai/dsh-file-reference": "workspace:*", diff --git a/packages/client/ui-jobs/package.json b/packages/client/ui-jobs/package.json index d69c2c231e..5eee006551 100644 --- a/packages/client/ui-jobs/package.json +++ b/packages/client/ui-jobs/package.json @@ -46,8 +46,6 @@ "@deepseek-ai/dsh-client-ui-slots": "workspace:*", "@deepseek-ai/dsh-jobs": "workspace:*", "@deepseek-ai/dsh-session": "workspace:*", - "@types/react": "~18.3.1", - "@types/react-dom": "~18.3.0", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/packages/client/ui-layout/package.json b/packages/client/ui-layout/package.json index 3ecf9b5ae2..8eb5ba21d3 100644 --- a/packages/client/ui-layout/package.json +++ b/packages/client/ui-layout/package.json @@ -54,7 +54,6 @@ "@deepseek-ai/dsh-client-ui-session": "workspace:*", "@deepseek-ai/dsh-client-ui-slots": "workspace:*", "@deepseek-ai/dsh-client-ui-theme": "workspace:*", - "@types/react": "~18.3.1", "@deepseek-ai/cordis": "workspace:~", "react": "^18.2.0", "@deepseek-ai/dsh-client-shortcuts": "workspace:*" diff --git a/packages/client/ui-message-feedback/package.json b/packages/client/ui-message-feedback/package.json index 35dad7870b..e186780ee2 100644 --- a/packages/client/ui-message-feedback/package.json +++ b/packages/client/ui-message-feedback/package.json @@ -61,8 +61,6 @@ "@deepseek-ai/dsh-typert-protocol": "workspace:*", "@deepseek-ai/cordis": "workspace:~", "@testing-library/react": "^16.3.3", - "@types/react": "~18.3.1", - "@types/react-dom": "~18.3.0", "react": "^18.2.0", "react-dom": "^18.2.0", "@deepseek-ai/dsh-client-ui-chat": "workspace:*", diff --git a/packages/client/ui-model-selection/package.json b/packages/client/ui-model-selection/package.json index b932b7de41..0762afbd44 100644 --- a/packages/client/ui-model-selection/package.json +++ b/packages/client/ui-model-selection/package.json @@ -56,11 +56,9 @@ "@deepseek-ai/dsh-client-ui-primitives": "workspace:*", "@deepseek-ai/dsh-client-ui-slots": "workspace:*", "@deepseek-ai/dsh-typert-protocol": "workspace:*", - "@types/react": "~18.3.1", "@deepseek-ai/cordis": "workspace:~", "react": "^18.2.0", "react-dom": "^18.2.0", - "@types/react-dom": "~18.3.0", "@deepseek-ai/dsh-client-store": "workspace:*", "@deepseek-ai/dsh-session": "workspace:*", "@deepseek-ai/dsh-util-values": "workspace:*", diff --git a/packages/client/ui-open-in-app/package.json b/packages/client/ui-open-in-app/package.json index 3f2544d42f..2dee006328 100644 --- a/packages/client/ui-open-in-app/package.json +++ b/packages/client/ui-open-in-app/package.json @@ -75,7 +75,6 @@ "@deepseek-ai/dsh-client-ui-slots": "workspace:*", "@deepseek-ai/dsh-host-open-in-app": "workspace:*", "@deepseek-ai/dsh-session": "workspace:*", - "@types/react": "~18.3.1", "react": "^18.2.0", "@deepseek-ai/dsh-client-ui-deliverables": "workspace:*", "@deepseek-ai/dsh-native-command": "workspace:*", diff --git a/packages/client/ui-permission-presets/package.json b/packages/client/ui-permission-presets/package.json index 3628ee6b9e..7f037eab8d 100644 --- a/packages/client/ui-permission-presets/package.json +++ b/packages/client/ui-permission-presets/package.json @@ -64,7 +64,6 @@ "@deepseek-ai/dsh-client-ui-input-trigger": "workspace:*", "@deepseek-ai/dsh-client-ui-slots": "workspace:*", "@deepseek-ai/dsh-permission-presets": "workspace:*", - "@types/react": "~18.3.1", "clsx": "^2.0.0", "react": "^18.2.0", "@deepseek-ai/dsh-client-ui-renderer": "workspace:*", diff --git a/packages/client/ui-plan/package.json b/packages/client/ui-plan/package.json index af28609a37..1fbf8eeb4d 100644 --- a/packages/client/ui-plan/package.json +++ b/packages/client/ui-plan/package.json @@ -58,7 +58,6 @@ "@deepseek-ai/dsh-client-ui-primitives": "workspace:*", "@deepseek-ai/dsh-client-ui-slots": "workspace:*", "@deepseek-ai/dsh-plan-mode": "workspace:*", - "@types/react": "~18.3.1", "@deepseek-ai/cordis": "workspace:~", "react": "^18.2.0", "@deepseek-ai/dsh-session": "workspace:*", diff --git a/packages/client/ui-plugin-manager/package.json b/packages/client/ui-plugin-manager/package.json index 32c21c0469..a90b4f0daf 100644 --- a/packages/client/ui-plugin-manager/package.json +++ b/packages/client/ui-plugin-manager/package.json @@ -66,8 +66,6 @@ "@deepseek-ai/dsh-client-ui-slots": "workspace:*", "@deepseek-ai/dsh-package-manifest": "workspace:*", "@testing-library/react": "^16.3.3", - "@types/react": "~18.3.1", - "@types/react-dom": "~18.3.0", "clsx": "^2.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/packages/client/ui-primitives/package.json b/packages/client/ui-primitives/package.json index 57d14d2819..be40575d1a 100644 --- a/packages/client/ui-primitives/package.json +++ b/packages/client/ui-primitives/package.json @@ -24,8 +24,6 @@ "license": "MIT", "devDependencies": { "@deepseek-ai/dsh-client-store": "workspace:*", - "@types/react": "~18.3.1", - "@types/react-dom": "~18.3.0", "@deepseek-ai/cordis": "workspace:~", "@deepseek-ai/dsh-util-code-language": "workspace:*", "react": "^18.2.0", diff --git a/packages/client/ui-reference/package.json b/packages/client/ui-reference/package.json index fad641b3fe..10b52588aa 100644 --- a/packages/client/ui-reference/package.json +++ b/packages/client/ui-reference/package.json @@ -56,7 +56,6 @@ "@deepseek-ai/dsh-client-locale": "workspace:*", "@deepseek-ai/dsh-client-test-runtime": "workspace:*", "@deepseek-ai/dsh-client-ui-conversation": "workspace:*", - "@types/react": "~18.3.1", "react": "^18.2.0", "@deepseek-ai/dsh-client-ui-input-trigger": "workspace:*", "@deepseek-ai/dsh-client-ui-primitives": "workspace:*", diff --git a/packages/client/ui-renderer/package.json b/packages/client/ui-renderer/package.json index 37afaebac6..12ce753757 100644 --- a/packages/client/ui-renderer/package.json +++ b/packages/client/ui-renderer/package.json @@ -44,8 +44,6 @@ "@deepseek-ai/cordis": "workspace:~", "@deepseek-ai/dsh-client-test-runtime": "workspace:*", "@deepseek-ai/dsh-client-ui-slots": "workspace:*", - "@types/react": "~18.3.1", - "@types/react-dom": "~18.3.0", "@types/use-sync-external-store": "^1.5.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/packages/client/ui-schedule/package.json b/packages/client/ui-schedule/package.json index 2ec4f63955..b8a228585b 100644 --- a/packages/client/ui-schedule/package.json +++ b/packages/client/ui-schedule/package.json @@ -74,8 +74,6 @@ "@deepseek-ai/dsh-session": "workspace:*", "@deepseek-ai/dsh-util-values": "workspace:*", "@testing-library/react": "^16.3.3", - "@types/react": "~18.3.1", - "@types/react-dom": "~18.3.0", "clsx": "^2.1.1", "@deepseek-ai/cordis": "workspace:~", "react": "^18.2.0", diff --git a/packages/client/ui-session/package.json b/packages/client/ui-session/package.json index a55f45f712..db6caa564f 100644 --- a/packages/client/ui-session/package.json +++ b/packages/client/ui-session/package.json @@ -55,7 +55,6 @@ "@deepseek-ai/dsh-remote-mock": "workspace:*", "@deepseek-ai/dsh-session": "workspace:*", "@deepseek-ai/dsh-util-values": "workspace:*", - "@types/react": "~18.3.1", "react": "^18.2.0" }, "files": [ diff --git a/packages/client/ui-settings-account/package.json b/packages/client/ui-settings-account/package.json index 4465baf5cd..6f9784dfbe 100644 --- a/packages/client/ui-settings-account/package.json +++ b/packages/client/ui-settings-account/package.json @@ -64,11 +64,9 @@ "@deepseek-ai/dsh-settings": "workspace:*", "@testing-library/react": "^16.3.3", "@types/big.js": "^6.2.2", - "@types/react": "~18.3.1", "react": "^18.2.0", "react-dom": "^18.2.0", "@deepseek-ai/dsh-client-ui-settings-models": "workspace:*", - "@types/react-dom": "~18.3.0", "@deepseek-ai/dsh-host-webserver": "workspace:*", "big.js": "^7.0.1", "@deepseek-ai/dsh-client-product-analytics": "workspace:*" diff --git a/packages/client/ui-settings-agent-loop/package.json b/packages/client/ui-settings-agent-loop/package.json index 744a50bbec..16e111f91f 100644 --- a/packages/client/ui-settings-agent-loop/package.json +++ b/packages/client/ui-settings-agent-loop/package.json @@ -55,7 +55,6 @@ "@deepseek-ai/dsh-client-ui-renderer": "workspace:*", "@deepseek-ai/dsh-client-ui-settings": "workspace:*", "@deepseek-ai/dsh-client-ui-slots": "workspace:*", - "@types/react": "~18.3.1", "react": "^18.2.0" }, "files": [ diff --git a/packages/client/ui-settings-general/package.json b/packages/client/ui-settings-general/package.json index 01d3748a6f..ba5dcebee3 100644 --- a/packages/client/ui-settings-general/package.json +++ b/packages/client/ui-settings-general/package.json @@ -67,8 +67,6 @@ "@deepseek-ai/dsh-client-ui-sidebar": "workspace:*", "@deepseek-ai/dsh-client-ui-slots": "workspace:*", "@deepseek-ai/dsh-remote-mock": "workspace:*", - "@types/react": "~18.3.1", - "@types/react-dom": "~18.3.0", "clsx": "^2.0.0", "react": "^18.2.0", "@deepseek-ai/dsh-settings": "workspace:*", diff --git a/packages/client/ui-settings-models/package.json b/packages/client/ui-settings-models/package.json index a6eb4914dc..4884bc67a0 100644 --- a/packages/client/ui-settings-models/package.json +++ b/packages/client/ui-settings-models/package.json @@ -53,7 +53,6 @@ "@deepseek-ai/dsh-client-ui-primitives": "workspace:*", "@deepseek-ai/dsh-client-ui-settings": "workspace:*", "@deepseek-ai/dsh-client-ui-slots": "workspace:*", - "@types/react": "~18.3.1", "@deepseek-ai/cordis": "workspace:~", "react": "^18.2.0", "@deepseek-ai/dsh-client-ui-renderer": "workspace:*", diff --git a/packages/client/ui-settings-plugin-inventory/package.json b/packages/client/ui-settings-plugin-inventory/package.json index 2ad924fadd..260faa8169 100644 --- a/packages/client/ui-settings-plugin-inventory/package.json +++ b/packages/client/ui-settings-plugin-inventory/package.json @@ -56,7 +56,6 @@ "@deepseek-ai/dsh-client-ui-slots": "workspace:*", "@deepseek-ai/dsh-package-manifest": "workspace:*", "@testing-library/react": "^16.3.3", - "@types/react": "~18.3.1", "@deepseek-ai/cordis": "workspace:~", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/packages/client/ui-settings-plugins/package.json b/packages/client/ui-settings-plugins/package.json index a2a4492ad6..6a3275581a 100644 --- a/packages/client/ui-settings-plugins/package.json +++ b/packages/client/ui-settings-plugins/package.json @@ -51,7 +51,6 @@ "@deepseek-ai/dsh-client-ui-settings": "workspace:*", "@deepseek-ai/dsh-client-ui-slots": "workspace:*", "@deepseek-ai/dsh-util-values": "workspace:*", - "@types/react": "~18.3.1", "react": "^18.2.0" }, "files": [ diff --git a/packages/client/ui-settings-session-log/package.json b/packages/client/ui-settings-session-log/package.json index d3fe0aede2..d1f0a7a55e 100644 --- a/packages/client/ui-settings-session-log/package.json +++ b/packages/client/ui-settings-session-log/package.json @@ -54,11 +54,9 @@ "@deepseek-ai/dsh-client-ui-renderer": "workspace:*", "@deepseek-ai/dsh-client-ui-settings": "workspace:*", "@deepseek-ai/dsh-client-ui-slots": "workspace:*", - "@types/react": "~18.3.1", "react": "^18.2.0", "@deepseek-ai/dsh-client-ui-layout": "workspace:*", - "react-dom": "^18.2.0", - "@types/react-dom": "~18.3.0" + "react-dom": "^18.2.0" }, "files": [ "locale/*.json", diff --git a/packages/client/ui-settings-shell/package.json b/packages/client/ui-settings-shell/package.json index f2d48c2aa4..2afa80d649 100644 --- a/packages/client/ui-settings-shell/package.json +++ b/packages/client/ui-settings-shell/package.json @@ -55,7 +55,6 @@ "@deepseek-ai/dsh-client-ui-renderer": "workspace:*", "@deepseek-ai/dsh-client-ui-settings": "workspace:*", "@deepseek-ai/dsh-client-ui-slots": "workspace:*", - "@types/react": "~18.3.1", "react": "^18.2.0" }, "files": [ diff --git a/packages/client/ui-settings-subagent/package.json b/packages/client/ui-settings-subagent/package.json index fa5d97b680..a07ea3707e 100644 --- a/packages/client/ui-settings-subagent/package.json +++ b/packages/client/ui-settings-subagent/package.json @@ -56,7 +56,6 @@ "@deepseek-ai/dsh-client-ui-renderer": "workspace:*", "@deepseek-ai/dsh-client-ui-settings": "workspace:*", "@deepseek-ai/dsh-client-ui-slots": "workspace:*", - "@types/react": "~18.3.1", "react": "^18.2.0" }, "files": [ diff --git a/packages/client/ui-settings-web-search/package.json b/packages/client/ui-settings-web-search/package.json index a858c70745..9604d1c6cf 100644 --- a/packages/client/ui-settings-web-search/package.json +++ b/packages/client/ui-settings-web-search/package.json @@ -56,7 +56,6 @@ "@deepseek-ai/dsh-client-ui-renderer": "workspace:*", "@deepseek-ai/dsh-client-ui-settings": "workspace:*", "@deepseek-ai/dsh-client-ui-slots": "workspace:*", - "@types/react": "~18.3.1", "react": "^18.2.0" }, "files": [ diff --git a/packages/client/ui-settings/package.json b/packages/client/ui-settings/package.json index 772529a9eb..d01f49a4f2 100644 --- a/packages/client/ui-settings/package.json +++ b/packages/client/ui-settings/package.json @@ -49,7 +49,6 @@ "@deepseek-ai/dsh-client-test-runtime": "workspace:*", "@deepseek-ai/dsh-client-ui-slots": "workspace:*", "@deepseek-ai/dsh-settings": "workspace:*", - "@types/react": "~18.3.1", "react": "^18.2.0", "@deepseek-ai/dsh-util-values": "workspace:*" }, diff --git a/packages/client/ui-shortcuts/package.json b/packages/client/ui-shortcuts/package.json index b014f63904..f50a08ccdf 100644 --- a/packages/client/ui-shortcuts/package.json +++ b/packages/client/ui-shortcuts/package.json @@ -56,7 +56,6 @@ "@deepseek-ai/dsh-client-ui-layout": "workspace:*", "@deepseek-ai/dsh-client-ui-settings": "workspace:*", "@deepseek-ai/dsh-brand": "workspace:*", - "@types/react": "~18.3.1", "clsx": "^2.1.1", "react": "^18.2.0", "@deepseek-ai/dsh-client-test-runtime": "workspace:*" diff --git a/packages/client/ui-sidebar-browser/package.json b/packages/client/ui-sidebar-browser/package.json index 7306f7a40d..ecd80c90a2 100644 --- a/packages/client/ui-sidebar-browser/package.json +++ b/packages/client/ui-sidebar-browser/package.json @@ -61,8 +61,6 @@ "@deepseek-ai/dsh-client-ui-sidebar-right": "workspace:*", "@deepseek-ai/dsh-client-ui-slots": "workspace:*", "@testing-library/react": "^16.3.3", - "@types/react": "~18.3.1", - "@types/react-dom": "~18.3.0", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/packages/client/ui-sidebar-documentpreview/package.json b/packages/client/ui-sidebar-documentpreview/package.json index 96a17e69c8..793a88c1b1 100644 --- a/packages/client/ui-sidebar-documentpreview/package.json +++ b/packages/client/ui-sidebar-documentpreview/package.json @@ -74,8 +74,6 @@ "@fortune-sheet/react": "1.0.4", "@testing-library/react": "^16.3.3", "@types/papaparse": "^5.3.16", - "@types/react": "~18.3.1", - "@types/react-dom": "~18.3.0", "clsx": "^2.0.0", "dompurify": "^3.4.16", "exceljs": "4.4.0", diff --git a/packages/client/ui-sidebar-files/package.json b/packages/client/ui-sidebar-files/package.json index 1e1a929d11..4039019176 100644 --- a/packages/client/ui-sidebar-files/package.json +++ b/packages/client/ui-sidebar-files/package.json @@ -63,8 +63,6 @@ "@deepseek-ai/dsh-typert-protocol": "workspace:*", "@deepseek-ai/dsh-util-workspace-path": "workspace:*", "@testing-library/react": "^16.3.3", - "@types/react": "~18.3.1", - "@types/react-dom": "~18.3.0", "react": "^18.2.0", "clsx": "^2.0.0", "react-dom": "^18.2.0", diff --git a/packages/client/ui-sidebar-right/package.json b/packages/client/ui-sidebar-right/package.json index cfac61654c..6367d31c9f 100644 --- a/packages/client/ui-sidebar-right/package.json +++ b/packages/client/ui-sidebar-right/package.json @@ -64,8 +64,6 @@ "@deepseek-ai/dsh-session": "workspace:*", "@testing-library/react": "^16.3.3", "@types/picomatch": "^4.0.3", - "@types/react": "~18.3.1", - "@types/react-dom": "~18.3.0", "react": "^18.2.0", "react-dom": "^18.2.0", "picomatch": "^4.0.7", diff --git a/packages/client/ui-sidebar-terminal/package.json b/packages/client/ui-sidebar-terminal/package.json index e872e94014..0de48c9ac3 100644 --- a/packages/client/ui-sidebar-terminal/package.json +++ b/packages/client/ui-sidebar-terminal/package.json @@ -60,8 +60,6 @@ "@deepseek-ai/dsh-client-ui-slots": "workspace:*", "@deepseek-ai/dsh-session": "workspace:*", "@testing-library/react": "^16.3.3", - "@types/react": "~18.3.1", - "@types/react-dom": "~18.3.0", "react": "^18.2.0", "clsx": "^2.0.0", "react-dom": "^18.2.0", diff --git a/packages/client/ui-sidebar/package.json b/packages/client/ui-sidebar/package.json index d3a6116c6f..e671c81756 100644 --- a/packages/client/ui-sidebar/package.json +++ b/packages/client/ui-sidebar/package.json @@ -59,7 +59,6 @@ "@deepseek-ai/dsh-client-ui-slots": "workspace:*", "@deepseek-ai/dsh-client-ui-session": "workspace:*", "@deepseek-ai/dsh-client-ui-workspace": "workspace:*", - "@types/react": "~18.3.1", "@deepseek-ai/cordis": "workspace:~", "react": "^18.2.0", "clsx": "^2.0.0", diff --git a/packages/client/ui-skill/package.json b/packages/client/ui-skill/package.json index 78a34d32ad..da3f022efc 100644 --- a/packages/client/ui-skill/package.json +++ b/packages/client/ui-skill/package.json @@ -63,7 +63,6 @@ "@deepseek-ai/dsh-client-ui-tool": "workspace:*", "@deepseek-ai/dsh-session": "workspace:*", "@testing-library/react": "^16.3.3", - "@types/react": "~18.3.1", "@deepseek-ai/cordis": "workspace:~", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/packages/client/ui-slots/package.json b/packages/client/ui-slots/package.json index 96aa83737a..5155bb9d17 100644 --- a/packages/client/ui-slots/package.json +++ b/packages/client/ui-slots/package.json @@ -24,7 +24,7 @@ "license": "MIT", "devDependencies": { "@deepseek-ai/dsh-client-store": "workspace:*", - "@types/react": "~18.3.1", + "react": "^18.2.0", "@deepseek-ai/cordis": "workspace:~" }, "files": [ diff --git a/packages/client/ui-subagent/package.json b/packages/client/ui-subagent/package.json index caf8ee1949..a0d55f7c57 100644 --- a/packages/client/ui-subagent/package.json +++ b/packages/client/ui-subagent/package.json @@ -61,8 +61,6 @@ "@deepseek-ai/dsh-client-ui-slots": "workspace:*", "@deepseek-ai/dsh-subagent": "workspace:*", "@deepseek-ai/dsh-token-meter": "workspace:*", - "@types/react": "~18.3.1", - "@types/react-dom": "~18.3.0", "@deepseek-ai/cordis": "workspace:~", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/packages/client/ui-theme/package.json b/packages/client/ui-theme/package.json index d66ddbf105..5c90ac94e1 100644 --- a/packages/client/ui-theme/package.json +++ b/packages/client/ui-theme/package.json @@ -56,7 +56,6 @@ "@deepseek-ai/dsh-client-ui-settings": "workspace:*", "@deepseek-ai/dsh-client-ui-slots": "workspace:*", "@deepseek-ai/dsh-host-webserver": "workspace:*", - "@types/react": "~18.3.1", "react": "^18.2.0", "clsx": "^2.0.0", "@deepseek-ai/dsh-settings": "workspace:*" diff --git a/packages/client/ui-tool/package.json b/packages/client/ui-tool/package.json index 28eaf9342b..2d0e0f2001 100644 --- a/packages/client/ui-tool/package.json +++ b/packages/client/ui-tool/package.json @@ -65,7 +65,6 @@ "@deepseek-ai/dsh-client-ui-primitives": "workspace:*", "@deepseek-ai/dsh-client-ui-slots": "workspace:*", "@testing-library/react": "^16.3.3", - "@types/react": "~18.3.1", "react": "^18.2.0", "react-dom": "^18.2.0", "@deepseek-ai/dsh-api-workspace-controller": "workspace:*", diff --git a/packages/client/ui-trajectory/package.json b/packages/client/ui-trajectory/package.json index 1db5a4637d..d41c148836 100644 --- a/packages/client/ui-trajectory/package.json +++ b/packages/client/ui-trajectory/package.json @@ -56,8 +56,6 @@ "@deepseek-ai/dsh-client-ui-slots": "workspace:*", "@deepseek-ai/dsh-compaction": "workspace:*", "@deepseek-ai/dsh-tools": "workspace:*", - "@types/react": "~18.3.1", - "@types/react-dom": "~18.3.0", "@deepseek-ai/cordis": "workspace:~", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/packages/client/ui-user-questions/package.json b/packages/client/ui-user-questions/package.json index 5307f4ea82..7df210cb91 100644 --- a/packages/client/ui-user-questions/package.json +++ b/packages/client/ui-user-questions/package.json @@ -59,7 +59,6 @@ "@deepseek-ai/dsh-system-prompt": "workspace:*", "@deepseek-ai/dsh-tools": "workspace:*", "@deepseek-ai/dsh-user-questions": "workspace:*", - "@types/react": "~18.3.1", "@deepseek-ai/dsh-client-ui-primitives": "workspace:*", "@deepseek-ai/dsh-client-ui-slots": "workspace:*", "@deepseek-ai/dsh-client-ui-renderer": "workspace:*", diff --git a/packages/client/ui-workflow-run/package.json b/packages/client/ui-workflow-run/package.json index 472f10f962..a1f452e556 100644 --- a/packages/client/ui-workflow-run/package.json +++ b/packages/client/ui-workflow-run/package.json @@ -69,7 +69,6 @@ "@deepseek-ai/dsh-session": "workspace:*", "@deepseek-ai/dsh-tool-workflow": "workspace:*", "@deepseek-ai/dsh-workflow": "workspace:*", - "@types/react": "~18.3.1", "@deepseek-ai/cordis": "workspace:~", "react": "^18.2.0" } diff --git a/packages/client/ui-workspace/package.json b/packages/client/ui-workspace/package.json index 5c74cd71b7..84ed8be042 100644 --- a/packages/client/ui-workspace/package.json +++ b/packages/client/ui-workspace/package.json @@ -76,7 +76,6 @@ "@deepseek-ai/dsh-typert-protocol": "workspace:*", "@deepseek-ai/dsh-util-values": "workspace:*", "@deepseek-ai/dsh-util-workspace-path": "workspace:*", - "@types/react": "~18.3.1", "clsx": "^2.0.0", "react": "^18.2.0", "@deepseek-ai/dsh-client-shortcuts": "workspace:*", diff --git a/packages/client/web/package.json b/packages/client/web/package.json index e3733a87e5..01e929ffe7 100644 --- a/packages/client/web/package.json +++ b/packages/client/web/package.json @@ -34,8 +34,6 @@ "@deepseek-ai/dsh-client-ui-renderer": "workspace:*", "@deepseek-ai/dsh-client-ui-primitives": "workspace:*", "@deepseek-ai/dsh-client-ui-slots": "workspace:*", - "@types/react": "~18.3.1", - "@types/react-dom": "~18.3.0", "@deepseek-ai/cordis": "workspace:~", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/packages/experimental/client-ui-agent-team/package.json b/packages/experimental/client-ui-agent-team/package.json index 73a171a53d..93d4ed4c76 100644 --- a/packages/experimental/client-ui-agent-team/package.json +++ b/packages/experimental/client-ui-agent-team/package.json @@ -70,8 +70,6 @@ "@deepseek-ai/dsh-experimental-agent-team": "workspace:*", "@deepseek-ai/dsh-session": "workspace:*", "@testing-library/react": "^16.3.3", - "@types/react": "~18.3.1", - "@types/react-dom": "~18.3.0", "@deepseek-ai/cordis": "workspace:~", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/packages/experimental/client-ui-claude-code-mods/package.json b/packages/experimental/client-ui-claude-code-mods/package.json index 64416f9042..6cab2cf49f 100644 --- a/packages/experimental/client-ui-claude-code-mods/package.json +++ b/packages/experimental/client-ui-claude-code-mods/package.json @@ -76,7 +76,6 @@ "@deepseek-ai/dsh-session": "workspace:*", "@deepseek-ai/dsh-typert-protocol": "workspace:*", "@testing-library/react": "^16.3.3", - "@types/react": "~18.3.1", "react": "^18.2.0", "react-dom": "^18.2.0" } diff --git a/packages/experimental/client-ui-cot-translation/package.json b/packages/experimental/client-ui-cot-translation/package.json index 9dcc42cc82..22125d92bd 100644 --- a/packages/experimental/client-ui-cot-translation/package.json +++ b/packages/experimental/client-ui-cot-translation/package.json @@ -82,7 +82,6 @@ "@deepseek-ai/dsh-client-ui-settings": "workspace:*", "@deepseek-ai/dsh-client-ui-slots": "workspace:*", "@deepseek-ai/schemastery": "workspace:~", - "@types/react": "~18.3.1", "react": "^18.2.0", "react-dom": "^18.2.0", "@testing-library/react": "^16.3.3", diff --git a/packages/experimental/client-ui-voice-input/package.json b/packages/experimental/client-ui-voice-input/package.json index 2c8aec199d..ff330d345a 100644 --- a/packages/experimental/client-ui-voice-input/package.json +++ b/packages/experimental/client-ui-voice-input/package.json @@ -67,7 +67,6 @@ "@deepseek-ai/dsh-experimental-api-speech-to-text": "workspace:*", "@deepseek-ai/dsh-experimental-speech-to-text": "workspace:*", "@deepseek-ai/dsh-client-test-runtime": "workspace:*", - "@types/react": "~18.3.1", "react": "^18.2.0", "react-dom": "^18.2.0", "@testing-library/react": "^16.3.3", diff --git a/packages/experimental/inspector/package.json b/packages/experimental/inspector/package.json index 4177a94c8a..69a656dbc6 100644 --- a/packages/experimental/inspector/package.json +++ b/packages/experimental/inspector/package.json @@ -67,7 +67,6 @@ "@deepseek-ai/dsh-client-test-runtime": "workspace:*", "@testing-library/react": "^16.3.3", "@deepseek-ai/dsh-client-ui-renderer": "workspace:*", - "@types/react": "~18.3.1", "@deepseek-ai/dsh-client-ui-layout": "workspace:*", "@deepseek-ai/dsh-client-shortcuts": "workspace:*", "@deepseek-ai/dsh-client-store": "workspace:*", diff --git a/packages/experimental/session-inspector/package.json b/packages/experimental/session-inspector/package.json index e9fc0837bc..17c325b5b7 100644 --- a/packages/experimental/session-inspector/package.json +++ b/packages/experimental/session-inspector/package.json @@ -55,7 +55,6 @@ "devDependencies": { "@deepseek-ai/dsh-client-test-runtime": "workspace:*", "@testing-library/react": "^16.3.3", - "@types/react-dom": "~18.3.0", "react-dom": "^18.2.0", "@deepseek-ai/dsh-api-session-controller": "workspace:*", "@deepseek-ai/dsh-client-store": "workspace:*", @@ -66,7 +65,6 @@ "@deepseek-ai/dsh-session": "workspace:*", "@deepseek-ai/dsh-llm": "workspace:*", "@tanstack/react-virtual": "^3.14.10", - "@types/react": "~18.3.1", "react": "^18.2.0", "@deepseek-ai/cordis": "workspace:~", "@deepseek-ai/dsh-client-locale": "workspace:*", diff --git a/packages/extensions/cordis-client-runner/package.json b/packages/extensions/cordis-client-runner/package.json index cb0a743583..fdfc292ef3 100644 --- a/packages/extensions/cordis-client-runner/package.json +++ b/packages/extensions/cordis-client-runner/package.json @@ -51,7 +51,6 @@ "@deepseek-ai/dsh-client-modules": "workspace:*", "@deepseek-ai/dsh-client-ui-renderer": "workspace:*", "@deepseek-ai/dsh-client-ui-theme": "workspace:*", - "@types/react": "~18.3.1", "@deepseek-ai/cordis": "workspace:~", "react": "^18.2.0", "@deepseek-ai/dsh-util-values": "workspace:*" diff --git a/packages/extensions/ui-cordis/package.json b/packages/extensions/ui-cordis/package.json index a633c2ac5e..b8247cda36 100644 --- a/packages/extensions/ui-cordis/package.json +++ b/packages/extensions/ui-cordis/package.json @@ -62,7 +62,6 @@ "@deepseek-ai/dsh-client-ui-slots": "workspace:*", "@deepseek-ai/dsh-client-ui-tool": "workspace:*", "@deepseek-ai/dsh-util-values": "workspace:*", - "@types/react": "~18.3.1", "@deepseek-ai/cordis": "workspace:~", "react": "^18.2.0" }, diff --git a/packages/session-query/session-log-export/package.json b/packages/session-query/session-log-export/package.json index e97465666e..75f1ee1459 100644 --- a/packages/session-query/session-log-export/package.json +++ b/packages/session-query/session-log-export/package.json @@ -67,7 +67,6 @@ "@deepseek-ai/dsh-session": "workspace:*", "@deepseek-ai/dsh-session-persistence": "workspace:*", "@deepseek-ai/dsh-session-query": "workspace:*", - "@types/react": "~18.3.1", "react": "^18.2.0" }, "dsh": { diff --git a/packages/test-support/client-runtime/package.json b/packages/test-support/client-runtime/package.json index a8b2050af4..e2f131880a 100644 --- a/packages/test-support/client-runtime/package.json +++ b/packages/test-support/client-runtime/package.json @@ -84,8 +84,6 @@ "@deepseek-ai/dsh-typert-protocol": "workspace:*", "@deepseek-ai/dsh-web-app": "workspace:*", "@types/js-yaml": "^4.0.9", - "@types/react": "~18.3.1", - "@types/react-dom": "~18.3.0", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 25600b8e14..2c8f3b3de5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -115,12 +115,18 @@ importers: '@types/node': specifier: ^22.20.1 version: 22.20.1 - '@types/semver': - specifier: ^7.8.0 - version: 7.8.0 '@types/papaparse': specifier: ^5.5.2 version: 5.5.2 + '@types/react': + specifier: ~18.3.1 + version: 18.3.31 + '@types/react-dom': + specifier: ~18.3.0 + version: 18.3.7(@types/react@18.3.31) + '@types/semver': + specifier: ^7.8.0 + version: 7.8.0 '@types/spdx-expression-parse': specifier: ^4.0.0 version: 4.0.0 @@ -708,12 +714,6 @@ importers: '@types/node': specifier: ^22.20.1 version: 22.20.1 - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 - '@types/react-dom': - specifier: ~18.3.0 - version: 18.3.7(@types/react@18.3.31) '@types/semver': specifier: ^7.8.0 version: 7.8.0 @@ -904,12 +904,6 @@ importers: '@types/node': specifier: ^22.20.1 version: 22.20.1 - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 - '@types/react-dom': - specifier: ~18.3.0 - version: 18.3.7(@types/react@18.3.31) '@types/ws': specifier: 8.18.1 version: 8.18.1 @@ -3061,9 +3055,6 @@ importers: '@deepseek-ai/dsh-settings': specifier: workspace:* version: link:../../settings/settings - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 react: specifier: ^18.2.0 version: 18.3.1 @@ -3255,9 +3246,6 @@ importers: '@deepseek-ai/dsh-util-values': specifier: workspace:* version: link:../../util/values - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 react: specifier: ^18.2.0 version: 18.3.1 @@ -3303,9 +3291,6 @@ importers: '@deepseek-ai/dsh-typert-protocol': specifier: workspace:* version: link:../../typert/protocol - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 react: specifier: ^18.2.0 version: 18.3.1 @@ -3342,12 +3327,6 @@ importers: '@deepseek-ai/dsh-client-ui-trajectory': specifier: workspace:* version: link:../ui-trajectory - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 - '@types/react-dom': - specifier: ~18.3.0 - version: 18.3.7(@types/react@18.3.31) clsx: specifier: ^2.0.0 version: 2.1.1 @@ -3375,9 +3354,6 @@ importers: '@testing-library/react': specifier: ^16.3.3 version: 16.3.3(@testing-library/dom@10.4.2)(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 react: specifier: ^18.2.0 version: 18.3.1 @@ -3505,12 +3481,6 @@ importers: '@tanstack/react-virtual': specifier: 3.14.10 version: 3.14.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 - '@types/react-dom': - specifier: ~18.3.0 - version: 18.3.7(@types/react@18.3.31) react: specifier: ^18.2.0 version: 18.3.1 @@ -3568,9 +3538,6 @@ importers: '@deepseek-ai/dsh-util-values': specifier: workspace:* version: link:../../util/values - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 clsx: specifier: ^2.0.0 version: 2.1.1 @@ -3701,12 +3668,6 @@ importers: '@lexical/utils': specifier: ^0.49.0 version: 0.49.0(typescript@6.0.3) - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 - '@types/react-dom': - specifier: ~18.3.0 - version: 18.3.7(@types/react@18.3.31) clsx: specifier: ^2.0.0 version: 2.1.1 @@ -3816,9 +3777,6 @@ importers: '@deepseek-ai/dsh-workspace-changes': specifier: workspace:* version: link:../../deliverables/workspace-changes - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 react: specifier: ^18.2.0 version: 18.3.1 @@ -3852,9 +3810,6 @@ importers: '@testing-library/react': specifier: ^16.3.3 version: 16.3.3(@testing-library/dom@10.4.2)(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 clsx: specifier: ^2.0.0 version: 2.1.1 @@ -3882,9 +3837,6 @@ importers: '@testing-library/react': specifier: ^16.3.3 version: 16.3.3(@testing-library/dom@10.4.2)(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 react: specifier: ^18.2.0 version: 18.3.1 @@ -3906,12 +3858,6 @@ importers: '@testing-library/react': specifier: ^16.3.3 version: 16.3.3(@testing-library/dom@10.4.2)(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 - '@types/react-dom': - specifier: ~18.3.0 - version: 18.3.7(@types/react@18.3.31) clsx: specifier: ^2.0.0 version: 2.1.1 @@ -3972,9 +3918,6 @@ importers: '@testing-library/react': specifier: ^16.3.3 version: 16.3.3(@testing-library/dom@10.4.2)(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 react: specifier: ^18.2.0 version: 18.3.1 @@ -4023,9 +3966,6 @@ importers: '@deepseek-ai/dsh-util-values': specifier: workspace:* version: link:../../util/values - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 clsx: specifier: ^2.0.0 version: 2.1.1 @@ -4068,12 +4008,6 @@ importers: '@deepseek-ai/dsh-session': specifier: workspace:* version: link:../../core/session - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 - '@types/react-dom': - specifier: ~18.3.0 - version: 18.3.7(@types/react@18.3.31) react: specifier: ^18.2.0 version: 18.3.1 @@ -4110,9 +4044,6 @@ importers: '@deepseek-ai/dsh-client-ui-theme': specifier: workspace:* version: link:../ui-theme - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 react: specifier: ^18.2.0 version: 18.3.1 @@ -4176,12 +4107,6 @@ importers: '@testing-library/react': specifier: ^16.3.3 version: 16.3.3(@testing-library/dom@10.4.2)(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 - '@types/react-dom': - specifier: ~18.3.0 - version: 18.3.7(@types/react@18.3.31) react: specifier: ^18.2.0 version: 18.3.1 @@ -4242,12 +4167,6 @@ importers: '@deepseek-ai/dsh-util-values': specifier: workspace:* version: link:../../util/values - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 - '@types/react-dom': - specifier: ~18.3.0 - version: 18.3.7(@types/react@18.3.31) clsx: specifier: ^2.1.1 version: 2.1.1 @@ -4320,9 +4239,6 @@ importers: '@deepseek-ai/dsh-session': specifier: workspace:* version: link:../../core/session - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 react: specifier: ^18.2.0 version: 18.3.1 @@ -4380,9 +4296,6 @@ importers: '@deepseek-ai/dsh-remote-mock': specifier: workspace:* version: link:../../test-support/remote-mock - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 clsx: specifier: ^2.0.0 version: 2.1.1 @@ -4455,9 +4368,6 @@ importers: '@deepseek-ai/dsh-util-crypto': specifier: workspace:* version: link:../../util/crypto - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 react: specifier: ^18.2.0 version: 18.3.1 @@ -4525,12 +4435,6 @@ importers: '@testing-library/react': specifier: ^16.3.3 version: 16.3.3(@testing-library/dom@10.4.2)(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 - '@types/react-dom': - specifier: ~18.3.0 - version: 18.3.7(@types/react@18.3.31) clsx: specifier: ^2.1.1 version: 2.1.1 @@ -4561,12 +4465,6 @@ importers: '@types/mdast': specifier: ^4.0.4 version: 4.0.4 - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 - '@types/react-dom': - specifier: ~18.3.0 - version: 18.3.7(@types/react@18.3.31) anser: specifier: ^2.3.5 version: 2.3.5 @@ -4678,9 +4576,6 @@ importers: '@deepseek-ai/dsh-util-workspace-path': specifier: workspace:* version: link:../../util/workspace-path - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 react: specifier: ^18.2.0 version: 18.3.1 @@ -4696,12 +4591,6 @@ importers: '@deepseek-ai/dsh-client-ui-slots': specifier: workspace:* version: link:../ui-slots - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 - '@types/react-dom': - specifier: ~18.3.0 - version: 18.3.7(@types/react@18.3.31) '@types/use-sync-external-store': specifier: ^1.5.0 version: 1.7.0 @@ -4780,12 +4669,6 @@ importers: '@testing-library/react': specifier: ^16.3.3 version: 16.3.3(@testing-library/dom@10.4.2)(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 - '@types/react-dom': - specifier: ~18.3.0 - version: 18.3.7(@types/react@18.3.31) clsx: specifier: ^2.1.1 version: 2.1.1 @@ -4828,9 +4711,6 @@ importers: '@deepseek-ai/dsh-util-values': specifier: workspace:* version: link:../../util/values - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 react: specifier: ^18.2.0 version: 18.3.1 @@ -4862,9 +4742,6 @@ importers: '@deepseek-ai/dsh-util-values': specifier: workspace:* version: link:../../util/values - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 react: specifier: ^18.2.0 version: 18.3.1 @@ -4932,12 +4809,6 @@ importers: '@types/big.js': specifier: ^6.2.2 version: 6.2.2 - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 - '@types/react-dom': - specifier: ~18.3.0 - version: 18.3.7(@types/react@18.3.31) big.js: specifier: ^7.0.1 version: 7.0.1 @@ -4980,9 +4851,6 @@ importers: '@deepseek-ai/dsh-client-ui-slots': specifier: workspace:* version: link:../ui-slots - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 react: specifier: ^18.2.0 version: 18.3.1 @@ -5038,12 +4906,6 @@ importers: '@deepseek-ai/dsh-settings': specifier: workspace:* version: link:../../settings/settings - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 - '@types/react-dom': - specifier: ~18.3.0 - version: 18.3.7(@types/react@18.3.31) clsx: specifier: ^2.0.0 version: 2.1.1 @@ -5099,9 +4961,6 @@ importers: '@deepseek-ai/dsh-util-values': specifier: workspace:* version: link:../../util/values - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 react: specifier: ^18.2.0 version: 18.3.1 @@ -5150,9 +5009,6 @@ importers: '@testing-library/react': specifier: ^16.3.3 version: 16.3.3(@testing-library/dom@10.4.2)(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 react: specifier: ^18.2.0 version: 18.3.1 @@ -5183,9 +5039,6 @@ importers: '@deepseek-ai/dsh-util-values': specifier: workspace:* version: link:../../util/values - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 react: specifier: ^18.2.0 version: 18.3.1 @@ -5222,12 +5075,6 @@ importers: '@deepseek-ai/dsh-client-ui-slots': specifier: workspace:* version: link:../ui-slots - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 - '@types/react-dom': - specifier: ~18.3.0 - version: 18.3.7(@types/react@18.3.31) react: specifier: ^18.2.0 version: 18.3.1 @@ -5267,9 +5114,6 @@ importers: '@deepseek-ai/dsh-client-ui-slots': specifier: workspace:* version: link:../ui-slots - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 react: specifier: ^18.2.0 version: 18.3.1 @@ -5306,9 +5150,6 @@ importers: '@deepseek-ai/dsh-client-ui-slots': specifier: workspace:* version: link:../ui-slots - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 react: specifier: ^18.2.0 version: 18.3.1 @@ -5345,9 +5186,6 @@ importers: '@deepseek-ai/dsh-client-ui-slots': specifier: workspace:* version: link:../ui-slots - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 react: specifier: ^18.2.0 version: 18.3.1 @@ -5387,9 +5225,6 @@ importers: '@deepseek-ai/dsh-client-ui-slots': specifier: workspace:* version: link:../ui-slots - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 clsx: specifier: ^2.1.1 version: 2.1.1 @@ -5438,9 +5273,6 @@ importers: '@deepseek-ai/dsh-client-ui-workspace': specifier: workspace:* version: link:../ui-workspace - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 clsx: specifier: ^2.0.0 version: 2.1.1 @@ -5489,12 +5321,6 @@ importers: '@testing-library/react': specifier: ^16.3.3 version: 16.3.3(@testing-library/dom@10.4.2)(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 - '@types/react-dom': - specifier: ~18.3.0 - version: 18.3.7(@types/react@18.3.31) react: specifier: ^18.2.0 version: 18.3.1 @@ -5580,12 +5406,6 @@ importers: '@types/papaparse': specifier: ^5.3.16 version: 5.5.2 - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 - '@types/react-dom': - specifier: ~18.3.0 - version: 18.3.7(@types/react@18.3.31) clsx: specifier: ^2.0.0 version: 2.1.1 @@ -5673,12 +5493,6 @@ importers: '@testing-library/react': specifier: ^16.3.3 version: 16.3.3(@testing-library/dom@10.4.2)(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 - '@types/react-dom': - specifier: ~18.3.0 - version: 18.3.7(@types/react@18.3.31) clsx: specifier: ^2.0.0 version: 2.1.1 @@ -5748,12 +5562,6 @@ importers: '@types/picomatch': specifier: ^4.0.3 version: 4.0.3 - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 - '@types/react-dom': - specifier: ~18.3.0 - version: 18.3.7(@types/react@18.3.31) clsx: specifier: ^2.0.0 version: 2.1.1 @@ -5826,12 +5634,6 @@ importers: '@testing-library/react': specifier: ^16.3.3 version: 16.3.3(@testing-library/dom@10.4.2)(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 - '@types/react-dom': - specifier: ~18.3.0 - version: 18.3.7(@types/react@18.3.31) '@xterm/addon-fit': specifier: ^0.11.0 version: 0.11.0 @@ -5901,9 +5703,6 @@ importers: '@testing-library/react': specifier: ^16.3.3 version: 16.3.3(@testing-library/dom@10.4.2)(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 react: specifier: ^18.2.0 version: 18.3.1 @@ -5919,9 +5718,9 @@ importers: '@deepseek-ai/dsh-client-store': specifier: workspace:* version: link:../store - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 + react: + specifier: ^18.2.0 + version: 18.3.1 packages/client/ui-subagent: devDependencies: @@ -5979,12 +5778,6 @@ importers: '@deepseek-ai/dsh-token-meter': specifier: workspace:* version: link:../../llm/token-meter - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 - '@types/react-dom': - specifier: ~18.3.0 - version: 18.3.7(@types/react@18.3.31) react: specifier: ^18.2.0 version: 18.3.1 @@ -6034,9 +5827,6 @@ importers: '@deepseek-ai/dsh-settings': specifier: workspace:* version: link:../../settings/settings - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 clsx: specifier: ^2.0.0 version: 2.1.1 @@ -6133,9 +5923,6 @@ importers: '@testing-library/react': specifier: ^16.3.3 version: 16.3.3(@testing-library/dom@10.4.2)(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 clsx: specifier: ^2.0.0 version: 2.1.1 @@ -6205,12 +5992,6 @@ importers: '@tanstack/react-virtual': specifier: 3.14.10 version: 3.14.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 - '@types/react-dom': - specifier: ~18.3.0 - version: 18.3.7(@types/react@18.3.31) diff: specifier: ^9.0.0 version: 9.0.0 @@ -6286,9 +6067,6 @@ importers: '@deepseek-ai/dsh-user-questions': specifier: workspace:* version: link:../../interaction/user-questions - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 clsx: specifier: ^2.0.0 version: 2.1.1 @@ -6343,9 +6121,6 @@ importers: '@deepseek-ai/dsh-workflow': specifier: workspace:* version: link:../../workflow/workflow - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 react: specifier: ^18.2.0 version: 18.3.1 @@ -6427,9 +6202,6 @@ importers: '@deepseek-ai/dsh-util-workspace-path': specifier: workspace:* version: link:../../util/workspace-path - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 clsx: specifier: ^2.0.0 version: 2.1.1 @@ -6469,12 +6241,6 @@ importers: '@tanstack/react-virtual': specifier: 3.14.10 version: 3.14.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 - '@types/react-dom': - specifier: ~18.3.0 - version: 18.3.7(@types/react@18.3.31) react: specifier: ^18.2.0 version: 18.3.1 @@ -7990,12 +7756,6 @@ importers: '@testing-library/react': specifier: ^16.3.3 version: 16.3.3(@testing-library/dom@10.4.2)(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 - '@types/react-dom': - specifier: ~18.3.0 - version: 18.3.7(@types/react@18.3.31) react: specifier: ^18.2.0 version: 18.3.1 @@ -8047,9 +7807,6 @@ importers: '@testing-library/react': specifier: ^16.3.3 version: 16.3.3(@testing-library/dom@10.4.2)(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 react: specifier: ^18.2.0 version: 18.3.1 @@ -8129,9 +7886,6 @@ importers: '@testing-library/react': specifier: ^16.3.3 version: 16.3.3(@testing-library/dom@10.4.2)(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 react: specifier: ^18.2.0 version: 18.3.1 @@ -8195,9 +7949,6 @@ importers: '@testing-library/react': specifier: ^16.3.3 version: 16.3.3(@testing-library/dom@10.4.2)(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 react: specifier: ^18.2.0 version: 18.3.1 @@ -8516,9 +8267,6 @@ importers: '@testing-library/react': specifier: ^16.3.3 version: 16.3.3(@testing-library/dom@10.4.2)(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 '@types/serve-static': specifier: ^2.2.0 version: 2.2.0 @@ -8654,12 +8402,6 @@ importers: '@testing-library/react': specifier: ^16.3.3 version: 16.3.3(@testing-library/dom@10.4.2)(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 - '@types/react-dom': - specifier: ~18.3.0 - version: 18.3.7(@types/react@18.3.31) react: specifier: ^18.2.0 version: 18.3.1 @@ -9458,9 +9200,6 @@ importers: '@deepseek-ai/dsh-util-values': specifier: workspace:* version: link:../../util/values - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 react: specifier: ^18.2.0 version: 18.3.1 @@ -9579,9 +9318,6 @@ importers: '@deepseek-ai/dsh-util-values': specifier: workspace:* version: link:../../util/values - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 react: specifier: ^18.2.0 version: 18.3.1 @@ -11772,9 +11508,6 @@ importers: '@deepseek-ai/dsh-session-query': specifier: workspace:* version: link:../session-query - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 react: specifier: ^18.2.0 version: 18.3.1 @@ -14301,12 +14034,6 @@ importers: '@types/js-yaml': specifier: ^4.0.9 version: 4.0.9 - '@types/react': - specifier: ~18.3.1 - version: 18.3.31 - '@types/react-dom': - specifier: ~18.3.0 - version: 18.3.7(@types/react@18.3.31) react: specifier: ^18.2.0 version: 18.3.1 @@ -15665,10 +15392,6 @@ importers: packages: - papaparse@5.5.3: - resolution: {integrity: sha512-5QvjGxYVjxO59MGU2lHVYpRWBBtKHnlIAcSe1uNFCkkptUh63NFRj0FJQm7nR67puEruUci/ZkjmEFrjCAyP4A==} - - '@agentclientprotocol/sdk@1.4.0': resolution: {integrity: sha512-/eufudw+aFY1LKLolT6yFE6UMmYRl7fMJ/DEONSIyR6wI3slHWITBsANRGqXEY8FRzqUxwh7QEaGiZHcJPVThg==} peerDependencies: @@ -21725,6 +21448,9 @@ packages: pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + papaparse@5.5.3: + resolution: {integrity: sha512-5QvjGxYVjxO59MGU2lHVYpRWBBtKHnlIAcSe1uNFCkkptUh63NFRj0FJQm7nR67puEruUci/ZkjmEFrjCAyP4A==} + papaparse@5.7.0: resolution: {integrity: sha512-qBGxg/7Q3Kl9Wfhrz2Z74UnvnHTXLNG6jmKJFeBvP2+y4lV7So+7SR62+Zd47JvdrCkX+nDcnr0ObPzek/+6RA==} @@ -23251,9 +22977,6 @@ packages: snapshots: - papaparse@5.5.3: {} - - '@agentclientprotocol/sdk@1.4.0(zod@4.4.3)': dependencies: zod: 4.4.3 @@ -29467,6 +29190,8 @@ snapshots: pako@1.0.11: {} + papaparse@5.5.3: {} + papaparse@5.7.0: {} parse-ms@4.0.0: {} diff --git a/scripts/verify-package-dependencies.spec.ts b/scripts/verify-package-dependencies.spec.ts index 8df1fc0c69..3548871b00 100644 --- a/scripts/verify-package-dependencies.spec.ts +++ b/scripts/verify-package-dependencies.spec.ts @@ -9,6 +9,7 @@ import { import { collectHostDependencyExportPolicyViolations, collectPackageDependencyViolations, + collectRootTypePackageViolations, collectRuntimeSourceExportUses, discoverPackageDependencyScope, expectedPackageDependencies, @@ -17,6 +18,7 @@ import { formatPeerRequiredRuntimeDependencies, readPackageDependencyFacts, readPackageDependencyState, + readWorkspacePackageManifests, repairPackageDependencyManifest, type PackageDependencyFacts, type PackageDependencyManifest, @@ -180,6 +182,27 @@ function hostRuntimeFixture(): { return { provider, workspaceNames, consumerFacts } } +function workspaceFixture(manifests: Readonly>): { + rootManifest: PackageDependencyManifest + packages: WorkspacePackageManifest[] +} { + const root = mkdtempSync(join(tmpdir(), 'dsh-root-type-packages-')) + roots.push(root) + for (const [path, manifest] of Object.entries(manifests)) { + mkdirSync(dirname(join(root, path)), { recursive: true }) + writeFileSync(join(root, path), JSON.stringify(manifest)) + } + return { + rootManifest: JSON.parse(readFileSync(join(root, 'package.json'), 'utf8')) as PackageDependencyManifest, + packages: readWorkspacePackageManifests(root).all, + } +} + +function rootTypeRemoval(path: string, entry: string): string { + return `${path}: remove ${entry}; the root package.json provides it because each package-local link slows ` + + 'TypeScript JSX checking (packages/client/AGENTS.md#dependency-declaration)' +} + describe('package dependency scope', () => { it('keeps the measured Host relay roster explicit', () => { expect(PACKAGE_DEPENDENCY_POLICY.clientFaceExclude).toEqual([ @@ -445,14 +468,14 @@ describe('face-aware source classification', () => { it('uses declared DefinitelyTyped providers only for erased source references', () => { const subject = sourceFacts({ - 'src/index.ts': "import type { ReactNode } from 'react'", + 'src/index.ts': "import type { ParseResult } from 'papaparse'", 'src/client/index.ts': "import type { Root } from 'mdast'; import type { Kind } from '@scope/types'", }, { dependencies: { '@types/mdast': '^4.0.0' }, - devDependencies: { '@types/react': '^18.0.0', '@types/scope__types': '^1.0.0' }, + devDependencies: { '@types/papaparse': '^5.0.0', '@types/scope__types': '^1.0.0' }, }) - expect([...subject.allSourceUses.keys()].sort()).toEqual(['@types/mdast', '@types/react', '@types/scope__types']) + expect([...subject.allSourceUses.keys()].sort()).toEqual(['@types/mdast', '@types/papaparse', '@types/scope__types']) expect([...subject.hostRuntimeSourceUses]).toEqual([]) repairPackageDependencyManifest(subject) expect(subject.manifest.devDependencies?.['@types/mdast']).toBe('^4.0.0') @@ -460,6 +483,16 @@ describe('face-aware source classification', () => { expect(subject.manifest.devDependencies?.mdast).toBeUndefined() }) + it('never lets a root-provided React type package stand in for react', () => { + const subject = sourceFacts({ + 'src/index.ts': "import type { ReactNode } from 'react'", + 'src/client/index.ts': "import type { Root } from 'react-dom/client'", + }, { devDependencies: { '@types/react': '~18.3.1', '@types/react-dom': '~18.3.0' } }) + + expect([...subject.allSourceUses.keys()].sort()).toEqual(['react', 'react-dom']) + expect(() => { repairPackageDependencyManifest(subject) }).toThrow('undeclared third-party dependency react') + }) + it.each(["import 'runtime-library'", 'export const view =
'])('does not let type providers satisfy runtime imports or JSX: %s', (source) => { const name = source.includes(' { expect(manifest.peerDependencies).toEqual({ [CORDIS]: 'workspace:~' }) }) }) + +describe('root-provided type packages', () => { + it('rejects React type packages in any workspace dependency section and requires them at the root', () => { + const { rootManifest, packages } = workspaceFixture({ + 'package.json': { name: 'root', devDependencies: { '@types/react': '~18.3.1' } }, + 'apps/app/package.json': { name: '@f/app', devDependencies: { '@types/react': '~18.3.1', react: '^18.2.0' } }, + 'packages/experimental/probe/package.json': { + name: '@f/probe', + dependencies: { '@types/react-dom': '~18.3.0' }, + peerDependencies: { '@types/react': '*' }, + }, + 'vendor/lib/package.json': { name: '@f/lib', optionalDependencies: { '@types/react': '~18.3.1' } }, + }) + + expect(collectRootTypePackageViolations(rootManifest, packages)).toEqual([ + rootTypeRemoval('apps/app/package.json', 'devDependencies.@types/react'), + 'package.json: devDependencies must declare @types/react-dom for every workspace package', + rootTypeRemoval('packages/experimental/probe/package.json', 'dependencies.@types/react-dom'), + rootTypeRemoval('packages/experimental/probe/package.json', 'peerDependencies.@types/react'), + rootTypeRemoval('vendor/lib/package.json', 'optionalDependencies.@types/react'), + ]) + }) + + it('accepts root declarations beside package-level runtime React and other type packages', () => { + const { rootManifest, packages } = workspaceFixture({ + 'package.json': { name: 'root', devDependencies: { '@types/react': '~18.3.1', '@types/react-dom': '~18.3.0' } }, + 'packages/client/ui-probe/package.json': { + name: '@f/ui-probe', + dependencies: { react: '^18.2.0' }, + devDependencies: { 'react-dom': '^18.2.0', '@types/react-is': '^18.0.0' }, + }, + }) + + expect(packages.map(pkg => pkg.manifestPath)).toEqual(['packages/client/ui-probe/package.json']) + expect(collectRootTypePackageViolations(rootManifest, packages)).toEqual([]) + }) +}) diff --git a/scripts/verify-package-dependencies.ts b/scripts/verify-package-dependencies.ts index b71fcd1af0..50e3ebcb5c 100644 --- a/scripts/verify-package-dependencies.ts +++ b/scripts/verify-package-dependencies.ts @@ -1,4 +1,7 @@ -/** Verify and repair npm dependency sections from published Client and Host faces. */ +/** + * Verify and repair npm dependency sections from published Client and Host faces, and keep root-provided type + * packages out of workspace manifests. + */ import { spawnSync } from 'node:child_process' import { existsSync, globSync, readFileSync, writeFileSync } from 'node:fs' @@ -20,6 +23,11 @@ import { const GATE = 'verify-package-dependencies' const CORDIS = '@deepseek-ai/cordis' +/** + * Type packages declared only in the root devDependencies. Each package-local pnpm link is one more + * location that TypeScript scans when it computes module specifiers for every JSX file. + */ +const ROOT_TYPE_PACKAGES: ReadonlySet = new Set(['@types/react', '@types/react-dom']) function workspaceRange(name: string): 'workspace:*' | 'workspace:~' { return name === '@deepseek-ai/dsh' || name.startsWith('@deepseek-ai/dsh-') ? 'workspace:*' : 'workspace:~' } @@ -434,7 +442,9 @@ function readAllSourceUses(root: string, pkg: WorkspacePackageManifest): Map 0) { + if (!ROOT_TYPE_PACKAGES.has(typesName) + && declaredSections(pkg.manifest, name).length === 0 + && declaredSections(pkg.manifest, typesName).length > 0) { runtimeUses ??= collectRuntimeSourcePackageUses(sourcePath, source) if (!runtimeUses.has(name)) { addUse(uses, typesName, displayPath) @@ -750,6 +760,34 @@ export function collectPackageDependencyViolations(state: PackageDependencyState return [...new Set(violations)].sort() } +/** + * Require each root-provided type package in the root devDependencies and in no workspace manifest. + * `--fix` does not remove these declarations. + * @param rootManifest - Repository root `package.json`. + * @param packages - Every workspace manifest from {@link readWorkspacePackageManifests}. + * @returns Violations in stable order. + */ +export function collectRootTypePackageViolations( + rootManifest: PackageDependencyManifest, + packages: readonly WorkspacePackageManifest[], +): string[] { + const violations: string[] = [] + for (const name of ROOT_TYPE_PACKAGES) { + if (rootManifest.devDependencies?.[name] === undefined) { + violations.push(`package.json: devDependencies must declare ${name} for every workspace package`) + } + for (const pkg of packages) { + for (const sectionName of declaredSections(pkg.manifest, name)) { + violations.push( + `${pkg.manifestPath}: remove ${sectionName}.${name}; the root package.json provides it because each ` + + 'package-local link slows TypeScript JSX checking (packages/client/AGENTS.md#dependency-declaration)', + ) + } + } + } + return violations.sort() +} + function deleteDependency( manifest: PackageDependencyManifest, sectionName: DependencySection, @@ -881,7 +919,13 @@ function main(): void { state = readPackageDependencyState(root) } } - const violations = collectPackageDependencyViolations(state) + const violations = [ + ...collectPackageDependencyViolations(state), + ...collectRootTypePackageViolations( + JSON.parse(readFileSync(resolve(root, 'package.json'), 'utf8')) as PackageDependencyManifest, + readWorkspacePackageManifests(root).all, + ), + ].sort() if (violations.length > 0) { console.error(`${GATE}: ${String(violations.length)} violation(s):`) for (const violation of violations) console.error(` ${violation}`)