Files
deepseek-harness/package.json
T
imccyu 129c915498 build: split build:src and build:test, and schedule build in parallel
pnpm run build ran every step in one serial chain, including the two
noEmit aggregate programs (tests, scripts, benchmarks, website) that no
artifact step consumes, so the Host aggregate check alone delayed tsdown by
about 66 s.

- build:src (scripts/build.ts --scope src) builds every artifact in the
  existing order and writes the client build record; it replaces the
  removed --artifacts-only flag and the libraries CLI mode.
- build:test (--scope test) type-checks only the Host and Client aggregate
  programs with tsc -p, concurrently, without compiling references or
  checking prerequisites.
- build runs both as one dependency graph through run-gates' new
  runAggregate: each aggregate check starts once its face's packages are
  compiled, and Client compilation stays after the Host bundle that writes
  the Typert /remote declarations. DSH_GATE_CONCURRENCY=1 serializes it;
  DSH_GATE_FAIL_FAST=1 stops the remaining steps at the first failure.
  Passing steps print one PASS line (DSH_GATE_VERBOSE=1 shows their output).
- PR artifact builds (e2e, release, preview, Node 22 compatibility) and the
  Python builder (--build-src) use build:src; dev:web and dev:desktop use
  build:src. test:*, bench, typecheck and the required consumer/Windows
  lanes keep the complete build.
- lint, lint:fix, doc-typecheck and the Typert contracts gate prepare with
  host-libraries (Host package compilation + Host bundle) instead of
  build:lib:host; their own checks never read the aggregate root or the
  Desktop bundle.

Parallel and serial build produce byte-identical lib/, Web dist and client
build record; a test-only type error fails build and build:test while
build:src passes.

Refs #5852
2026-10-11 18:19:23 +08:00

291 lines
18 KiB
JSON

{
"name": "@deepseek-ai/dsh-root",
"version": "0.2.1-alpha.2",
"license": "MIT",
"private": true,
"type": "module",
"packageManager": "[email protected]",
"engines": {
"node": "^22.19.0 || >=24.0.0"
},
"workspaces": [
"vendor/*",
"packages/*/*",
"native/system",
"native/system/packages/*",
"apps/*",
"website"
],
"scripts": {
"prepare:primary-runtime": "tsx scripts/primary-runtime/prepare.ts",
"build": "tsx scripts/build.ts",
"build:src": "tsx scripts/build.ts --scope src",
"build:test": "tsx scripts/build.ts --scope test",
"build:bench": "npm run build:native-system && npm run build:lib && tsdown --config-loader native --config benchmarks/tsdown.config.ts",
"build:official": "tsx scripts/build.ts --profile official",
"build:lib": "pnpm run build:lib:host && pnpm run build:lib:client",
"build:lib:host": "node --max-old-space-size=4096 ./node_modules/typescript/bin/tsc -b tsconfig.host.json && tsdown --config-loader native --env.DSH_BUILD_FACE host && pnpm --filter @deepseek-ai/dsh-desktop run bundle",
"build:lib:client": "tsc -b tsconfig.client.json && tsdown --config-loader native --env.DSH_BUILD_FACE client",
"build:web": "pnpm --filter @deepseek-ai/dsh-web-frontend run build",
"build:desktop": "pnpm --filter @deepseek-ai/dsh-desktop run build",
"dev:desktop": "pnpm --filter @deepseek-ai/dsh-desktop run dev",
"start:desktop": "pnpm --filter @deepseek-ai/dsh-desktop run start",
"prepare:desktop": "pnpm --filter @deepseek-ai/dsh-desktop run prepare:package",
"package:desktop": "pnpm --filter @deepseek-ai/dsh-desktop run package",
"package:desktop:dir": "pnpm --filter @deepseek-ai/dsh-desktop run package:dir",
"package:desktop:mac:arm64": "pnpm --filter @deepseek-ai/dsh-desktop run package:mac:arm64",
"package:desktop:mac:arm64:unsigned": "pnpm --filter @deepseek-ai/dsh-desktop run package:mac:arm64:unsigned",
"package:desktop:mac:arm64:dir": "pnpm --filter @deepseek-ai/dsh-desktop run package:mac:arm64:dir",
"package:desktop:mac:x64": "pnpm --filter @deepseek-ai/dsh-desktop run package:mac:x64",
"package:desktop:mac:x64:unsigned": "pnpm --filter @deepseek-ai/dsh-desktop run package:mac:x64:unsigned",
"package:desktop:mac:x64:dir": "pnpm --filter @deepseek-ai/dsh-desktop run package:mac:x64:dir",
"package:desktop:win:x64": "pnpm --filter @deepseek-ai/dsh-desktop run package:win:x64",
"package:desktop:win:x64:unsigned": "pnpm --filter @deepseek-ai/dsh-desktop run package:win:x64:unsigned",
"package:desktop:win:x64:dir": "pnpm --filter @deepseek-ai/dsh-desktop run package:win:x64:dir",
"upload:mac:arm64": "pnpm --filter @deepseek-ai/dsh-desktop run upload:mac:arm64",
"upload:mac:x64": "pnpm --filter @deepseek-ai/dsh-desktop run upload:mac:x64",
"upload:win:x64": "pnpm --filter @deepseek-ai/dsh-desktop run upload:win:x64",
"upload:latest:mac:arm64": "pnpm --filter @deepseek-ai/dsh-desktop run upload:latest:mac:arm64",
"upload:latest:mac:x64": "pnpm --filter @deepseek-ai/dsh-desktop run upload:latest:mac:x64",
"upload:latest:win:x64": "pnpm --filter @deepseek-ai/dsh-desktop run upload:latest:win:x64",
"clean": "tsx scripts/clean.ts",
"change-scope": "tsx scripts/change-scope.ts",
"typecheck": "npm run build:lib:host && npm run typecheck:contracts-ready",
"typecheck:contracts-ready": "tsc -b tsconfig.client.json",
"lint": "tsx scripts/compile-referenced-projects.ts host-libraries && npm run lint:contracts-ready",
"lint:contracts-ready": "tsx scripts/run-oxlint.ts .",
"lint:fix": "tsx scripts/compile-referenced-projects.ts host-libraries && npm run lint:fix:contracts-ready",
"lint:fix:contracts-ready": "tsx scripts/run-oxlint.ts --config .oxlintrc.staged.json packages/typert/generator/tests/fixtures/type-model --fix && tsx scripts/run-oxlint.ts . --fix",
"duplication": "jscpd --config .jscpd.json packages scripts",
"test": "pnpm run build:native-system && vitest run",
"test:coverage": "pnpm run build:native-system && vitest run --coverage",
"build:native-system": "tsx native/system/scripts/build.ts --host-addon-only",
"test:coverage:partitioned": "tsx scripts/run-coverage-partitions.ts",
"test:e2e": "vitest run --config vitest.e2e.config.ts",
"test:bench": "npm run build:bench && npm run build:web && npm run test:bench:built",
"test:bench:built": "vitest run --config vitest.bench.config.ts",
"test:bench:memory": "tsx scripts/run-memory-pressure-bench.ts",
"test:expected": "vitest run --config vitest.expected.config.ts",
"test:expected:refresh": "DSH_SNAPSHOT=refresh vitest run --config vitest.expected.config.ts",
"test:approval-policy": "node --test .github/review-ownership/check-approval.test.mjs .github/review-ownership/blame-ownership.test.mjs .github/review-ownership/author-weight.test.mjs",
"test:issue-management": "node .github/issue-management/policy.test.mjs",
"test:snapshot": "vitest run --config vitest.snapshot.config.ts",
"test:snapshot:record": "DSH_SNAPSHOT=record vitest run --config vitest.snapshot.config.ts --update",
"test:snapshot:refresh": "DSH_SNAPSHOT=refresh vitest run --config vitest.snapshot.config.ts",
"migrate:packed-session-fixtures": "tsx scripts/migrate-packed-session-fixtures.ts",
"migrate:sessions-to-v4": "tsx scripts/migrate-sessions-to-v4.ts",
"test:web": "npm run build && npm run test:web:built",
"test:web:refresh": "npm run build && DSH_SNAPSHOT=refresh vitest run --config vitest.web.config.ts",
"test:web:built": "vitest run --config vitest.web.config.ts",
"test:web:ci": "tsx scripts/run-web-snapshots.ts",
"test:web:perf": "npm run build && npm run test:web:perf:built",
"test:web:perf:built": "DSH_SNAPSHOT=replay vitest run --config vitest.web.perf.config.ts",
"test:web:stress": "npm run build && vitest run --config vitest.web-stress.config.ts",
"benchmark:npm-resolution": "tsx scripts/benchmark-npm-resolution.ts",
"benchmark:npm-resolution:next": "tsx scripts/benchmark-next-package-dependency.ts",
"test:gui": "vitest run packages/client packages/host",
"check:all": "tsx scripts/run-gates.ts check-all",
"check:ci": "tsx scripts/run-gates.ts ci-primary",
"check:ci:linux-primary": "tsx scripts/run-gates.ts ci-linux-primary",
"check:ci:static": "tsx scripts/run-gates.ts ci-static",
"check:ci:lint:contracts-ready": "tsx scripts/run-gates.ts ci-lint-contracts-ready",
"check:ci:coverage": "tsx scripts/run-gates.ts ci-coverage",
"check:ci:unit": "tsx scripts/run-gates.ts ci-unit",
"check:ci:bench": "tsx scripts/run-gates.ts ci-bench",
"check:ci:snapshot": "tsx scripts/run-gates.ts ci-snapshot",
"check:ci:artifacts": "tsx scripts/run-gates.ts ci-artifacts",
"check:ci:consumers": "tsx scripts/run-gates.ts ci-consumers",
"check:windows-wine": "bash scripts/wine-windows-gates.sh",
"check:ci:windows-blocking": "tsx scripts/run-gates.ts ci-windows-blocking",
"check:ci:windows-complete": "tsx scripts/run-gates.ts ci-windows-complete",
"check:ci:windows-observational-ready": "tsx scripts/run-gates.ts ci-windows-observational-ready",
"check:node-compat": "tsx scripts/run-gates.ts node-compat",
"publint": "tsx scripts/publint-all.ts",
"doc-typecheck": "tsx scripts/compile-referenced-projects.ts host-libraries && npm run doc-typecheck:contracts-ready",
"doc-typecheck:contracts-ready": "tsx scripts/doc-typecheck.ts",
"verify-md-wrap": "tsx scripts/verify-md-wrap.ts",
"verify-md-links": "tsx scripts/verify-md-links.ts",
"verify-doc-site-fragments": "tsx scripts/verify-doc-site-fragments.ts",
"verify-public-repository-links": "tsx scripts/verify-public-repository-links.ts",
"verify-repository-references": "tsx scripts/verify-repository-references.ts",
"verify-concrete-terms": "tsx scripts/verify-concrete-terms.ts",
"verify-no-unknown-casts": "tsx scripts/verify-no-unknown-casts.ts",
"verify-doc-refs": "tsx scripts/verify-doc-refs.ts",
"verify-subsystem-pages": "tsx scripts/verify-subsystem-pages.ts",
"verify-package-paths": "tsx scripts/verify-package-paths.ts",
"verify-dsh-package-licenses": "tsx scripts/verify-dsh-package-licenses.ts",
"verify-config-source-ownership": "tsx scripts/verify-config-source-ownership.ts",
"verify-package-meta": "tsx scripts/verify-package-meta.ts",
"verify-package-readme-model-experience": "tsx scripts/verify-package-readme-model-experience.ts",
"verify-package-readme-summaries": "tsx scripts/verify-package-readme-summaries.ts",
"verify-mermaid": "tsx scripts/verify-mermaid.ts",
"verify-agent-note-classification": "tsx scripts/verify-agent-note-classification.ts",
"verify-agent-note-format": "tsx scripts/verify-agent-note-format.ts",
"verify-archived-agent-notes": "tsx scripts/verify-archived-agent-notes.ts",
"verify-type-equiv": "tsx scripts/verify-type-equiv.ts",
"verify-skill-invocation-metadata": "tsx scripts/verify-skill-invocation-metadata.ts",
"verify-upgrade-guides": "tsx scripts/verify-upgrade-guides.ts",
"verify-translation-prompt": "tsx scripts/verify-translation-prompt.ts",
"verify-translation-pairing": "tsx scripts/verify-translation-pairing.ts",
"test:docs": "tsx scripts/run-gates.ts doc-quick",
"gen-translation-brief": "tsx scripts/gen-translation-brief.ts",
"verify-doc-budgets": "tsx scripts/verify-doc-budgets.ts",
"docs:dev": "pnpm --filter @deepseek-ai/website run dev",
"docs:build": "tsx website/build.ts && pnpm run verify-doc-site-fragments",
"docs:build:mpa": "tsx website/build.ts --mpa && pnpm run verify-doc-site-fragments",
"docs:preview": "pnpm --filter @deepseek-ai/website run preview",
"docs:check": "pnpm exec vitest run scripts/project-doc-site.spec.ts scripts/verify-doc-site-fragments.spec.ts website/tests/mermaid-viewer.spec.ts website/tests/image-viewer.spec.ts website/tests/code-groups.spec.ts website/tests/page-markdown-actions.spec.ts website/tests/raw-markdown.spec.ts && pnpm run docs:build",
"website:dev": "pnpm run docs:dev",
"website:build": "pnpm run docs:build",
"verify-package-readme-limitations": "tsx scripts/verify-package-readme-limitations.ts",
"verify-node-next-types": "tsx scripts/verify-node-next-types.ts",
"verify-optional-dependency-imports": "tsx scripts/verify-optional-dependency-imports.ts",
"verify-runtime-closure": "tsx scripts/verify-runtime-closure.ts",
"verify-default-product-isolation": "tsx scripts/verify-default-product-isolation.ts",
"verify-application-entrypoints": "tsx scripts/verify-application-entrypoints.ts",
"verify-package-dependencies": "tsx scripts/verify-package-dependencies.ts",
"verify-npm-install-layout": "tsx scripts/verify-npm-install-layout.ts",
"verify-client-packages": "tsx scripts/verify-client-packages.ts",
"verify-client-ui-i18n": "tsx scripts/verify-client-ui-i18n.ts",
"verify-client-route-resolution": "tsx scripts/verify-client-route-resolution.ts",
"verify-no-bare-dispatcher": "tsx scripts/verify-no-bare-dispatcher.ts",
"verify-plugin-record-callers": "tsx scripts/verify-plugin-record-callers.ts",
"verify-cordis-config": "tsx scripts/verify-cordis-config.ts",
"rescope-vendor": "tsx scripts/rescope-vendor.ts",
"rescope-vendor:check": "tsx scripts/rescope-vendor.ts --check",
"verify-client-domain-graph": "tsx scripts/verify-client-domain-graph.ts",
"gen-tsconfig-paths": "tsx scripts/gen-tsconfig-paths.ts",
"verify-tsconfig-paths": "tsx scripts/gen-tsconfig-paths.ts --check",
"gen-cli-help": "tsx scripts/gen-cli-help.ts",
"verify-cli-help": "tsx scripts/gen-cli-help.ts --check",
"gen-cordis-catalog": "tsx scripts/gen-cordis-catalog.ts",
"verify-cordis-catalog": "tsx scripts/gen-cordis-catalog.ts --check",
"gen-cordis-api": "tsx scripts/gen-cordis-api.ts",
"verify-cordis-api": "tsx scripts/gen-cordis-api.ts --check",
"gen-client-catalog": "tsx scripts/gen-client-catalog.ts",
"gen-cordis-inspect-catalog": "tsx scripts/gen-cordis-inspect-catalog.ts",
"verify-cordis-inspect-catalog": "tsx scripts/gen-cordis-inspect-catalog.ts --check",
"verify-client-catalog": "tsx scripts/gen-client-catalog.ts --check",
"verify-export-jsdoc": "tsx scripts/verify-export-jsdoc.ts",
"gen-tool-catalog": "tsx scripts/gen-tool-catalog.ts",
"gen-workflow-guest": "tsx scripts/gen-workflow-guest.ts",
"verify-workflow-guest": "tsx scripts/gen-workflow-guest.ts --check",
"verify-tool-catalog": "tsx scripts/gen-tool-catalog.ts --check",
"gen-config-catalog": "tsx scripts/gen-config-catalog.ts",
"verify-config-catalog": "tsx scripts/gen-config-catalog.ts --check",
"gen-plugin-packages": "tsx scripts/gen-plugin-packages.ts",
"verify-plugin-packages": "tsx scripts/gen-plugin-packages.ts --check",
"gen-dependency-catalog": "tsx scripts/gen-dependency-catalog.ts",
"verify-dependency-catalog": "tsx scripts/gen-dependency-catalog.ts --check",
"gen-doc-graphs": "tsx scripts/gen-doc-graphs.ts",
"verify-doc-graphs": "tsx scripts/gen-doc-graphs.ts --check",
"gen-persistence-catalog": "tsx scripts/gen-persistence-catalog.ts",
"verify-persistence-catalog": "tsx scripts/gen-persistence-catalog.ts --check",
"persistence-changes": "tsx scripts/persistence-changes.ts",
"persistence-review": "tsx scripts/persistence-review.ts",
"verify-persistence-changes": "tsx scripts/persistence-changes.ts --check",
"verify-persistence-releases": "tsx scripts/persistence-releases.ts",
"verify-persistence-formats": "tsx scripts/persistence-formats.ts",
"gen-session-format-catalog": "tsx scripts/gen-session-format-catalog.ts",
"verify-v3-event-vocabulary": "tsx scripts/verify-v3-event-vocabulary.ts",
"verify-session-format-catalog": "tsx scripts/gen-session-format-catalog.ts --check",
"gen-third-party-notices": "tsx scripts/gen-third-party-notices.ts",
"verify-third-party-notices": "tsx scripts/gen-third-party-notices.ts --check",
"gen-module-graph": "tsx scripts/gen-module-graph.ts",
"verify-module-graph": "tsx scripts/gen-module-graph.ts --check",
"constraints": "tsx scripts/check-workspace-constraints.ts",
"doc-sync": "tsx scripts/run-gates.ts doc-sync",
"hygiene": "tsx scripts/run-gates.ts hygiene",
"publish:npm-baseline": "tsx scripts/publish-npm-baseline.ts",
"release:dsh": "tsx scripts/release/bump.ts --family dsh",
"release:vendor": "tsx scripts/release/bump.ts --family vendor",
"release:verify": "tsx scripts/release/verify.ts",
"release:pack": "tsx scripts/release/pack.ts",
"release:verify-packed-install": "tsx scripts/release/verify-packed-install.ts",
"release:publish": "tsx scripts/release/publish.ts",
"dsh": "node --import tsx/esm apps/cli/src/bin.ts",
"demo:ptc": "node scripts/demo-ptc.mjs",
"demo:inspector": "node --import tsx/esm apps/cli/src/bin.ts web --patch ./packages/experimental/inspector/cordis.source.patch.yml",
"mock:llm": "node --import tsx packages/test-support/llm-mock-server/src/bin.ts",
"start:web": "node --import tsx/esm apps/cli/src/bin.ts web",
"dev:web": "tsx scripts/dev-web.ts --poll",
"dev:bundle-registry": "tsx scripts/dev-bundle-registry.ts",
"postinstall": "node scripts/install-lefthook.mjs",
"gen-official-bundle-catalog": "tsx scripts/gen-official-bundle-catalog.ts",
"verify-official-bundle-catalog": "tsx scripts/gen-official-bundle-catalog.ts --check",
"verify-product-use": "tsx scripts/verify-product-use.ts"
},
"devDependencies": {
"@deepseek-ai/dsh-hooks-claude-code": "workspace:*",
"@deepseek-ai/dsh-hooks-codex": "workspace:*",
"@deepseek-ai/dsh-tool-ralph": "workspace:*",
"@deepseek-ai/dsh-tool-terminal": "workspace:*",
"@deepseek-ai/dsh-agent": "workspace:*",
"@deepseek-ai/dsh-browser-use": "workspace:*",
"@deepseek-ai/dsh-experimental-browser-use-runtime": "workspace:*",
"@deepseek-ai/dsh-experimental-browser-use-playwright-mcp": "workspace:*",
"@deepseek-ai/dsh-experimental-browser-use-chrome-devtools-mcp": "workspace:*",
"@deepseek-ai/dsh-experimental-browser-use-stagehand-native": "workspace:*",
"@deepseek-ai/dsh-computer-use": "workspace:*",
"@deepseek-ai/dsh-experimental-computer-use-cua-driver-mcp": "workspace:*",
"@deepseek-ai/dsh-experimental-computer-use-cua-driver-native": "workspace:*",
"@deepseek-ai/dsh-experimental-claude-code-mods": "workspace:*",
"@deepseek-ai/dsh-llm-replay": "workspace:*",
"@deepseek-ai/dsh-mcp-client": "workspace:*",
"@deepseek-ai/dsh-tool-session-query": "workspace:*",
"@deepseek-ai/dsh-web-fetch-http": "workspace:*",
"@stylistic/eslint-plugin": "^5.10.0",
"@testing-library/dom": "^10.4.1",
"@testing-library/react": "^16.3.3",
"@types/js-yaml": "^4.0.9",
"@types/jsdom": "^28.0.3",
"@types/mdast": "^4.0.4",
"@types/papaparse": "^5.5.2",
"@types/node": "^22.20.1",
"@types/react": "~18.3.1",
"@types/react-dom": "~18.3.0",
"@types/semver": "^7.8.0",
"@types/spdx-expression-parse": "^4.0.0",
"@vitest/coverage-v8": "^4.1.11",
"@yao-pkg/pkg": "6.21.0",
"@yarnpkg/cli-dist": "4.18.0",
"eslint-plugin-sonarjs": "^4.2.0",
"execa": "^10.0.1",
"zod": "^4.4.3",
"extract-zip": "^2.0.1",
"fast-check": "^4.9.0",
"fflate": "^0.8.2",
"istanbul-lib-report": "^3.0.1",
"js-yaml": "^4.3.2",
"jscpd": "^5.1.2",
"jsdom": "29.1.1",
"lefthook": "^2.1.12",
"lightningcss": "^1.33.0",
"mdast-util-from-markdown": "^2.0.3",
"mdast-util-gfm": "^3.1.0",
"mermaid": "11.17.2",
"micromark-extension-gfm": "^3.0.0",
"oxlint": "1.81.0",
"oxlint-tsgolint": "7.0.2001",
"papaparse": "5.5.3",
"pnpm": "11.28.5",
"publint": "^0.3.24",
"semver": "^7.8.5",
"smol-toml": "^1.9.0",
"spdx-expression-parse": "^5.0.0",
"tar": "^7.5.22",
"tsdown": "^0.22.2",
"tsx": "^4.23.13",
"typescript": "^6.0.3",
"vite": "8.2.2",
"vite-tsconfig-paths": "^6.1.1",
"vitest": "^4.1.11",
"@deepseek-ai/dsh-skill-office": "workspace:*",
"@deepseek-ai/dsh-tool-workspace-dependencies": "workspace:*",
"@deepseek-ai/dsh-tool-working-directory": "workspace:*",
"@deepseek-ai/dsh-working-directory": "workspace:*",
"@deepseek-ai/dsh-experimental-worktree": "workspace:*",
"@deepseek-ai/dsh-experimental-tool-worktree": "workspace:*"
}
}