Files
deepseek-harness/THIRD_PARTY_NOTICES.md
Yichen Jiang 0512b12714 feat(config)!: one ordering for configuration sources, and a bootstrap deny rule
$DSH_HOME/.env had just become an ordinary environment layer, which left the
harness resolving user-facing values from a flattened process.env that could
no longer say where a value came from. A key stored through the web page
stayed shadowed by an older key in the user's own .env. An endpoint could be
redirected by the project: the invoking directory's .env is materialized like
every other layer, and a base URL decides where a resolved API key is sent, so
a DEEPSEEK_BASE_URL written into a model-editable workspace would send the
user's credential — and the prompts carrying their code — to whatever host
that file named.

Give every user-facing value one ordering, with four kinds of source:

  explicit for this run     per-operation override, CLI argument
  > authored by deployment  --config / --config-replace
  > this launch's shell     inherited process environment
  > product-managed store   settings.yaml, .credentials.yaml
  > discovered file         $DSH_HOME/.env
  > defaults                schema default, shipped base, public default

The domains differ only in which tiers exist. The earlier split — credentials
ranking the environment over the managed file while settings ranked over the
environment — was inconsistent: the distinguishing fact is who authored the
source, not the domain.

packages/util/environment owns an immutable snapshot with per-layer
provenance. getFrom(name, sources) searches only the layers a caller names,
and omitting one is a refusal rather than a demotion: the adapters ask for
['process', 'user-env'], so no reordering can let a project file back into a
decision it was excluded from.

isBootstrapOnly rejects, before anything is materialized, any .env setting a
variable that governs how a process launches (PATH, SHELL, NODE_OPTIONS,
LD_PRELOAD), where code or model-visible instructions load from (the whole
DSH_* namespace, HOME, XDG_*), or how the network is reached (proxy and CA
variables). The namespace is denied wholesale so a switch added later cannot
become settable by being forgotten, and there is no opt-out.

verify-config-source-ownership keeps both rules: no unregistered process.env
read under packages/*/*/src (26 allowlisted with reasons), and no apiKey,
baseURL, or headers inlined from the environment in shipped Cordis config —
removing those inlines is what makes the deployment tier meaningful.
2026-08-04 16:17:32 +08:00

12 KiB

Third-Party Notices

DeepSeek Harness is licensed under BSD 3-Clause. It depends on the third-party open-source software listed below. Each project remains under its own license; nothing in this file changes those terms.

This file lists direct dependencies declared by the workspace. It is generated from the workspace manifests by scripts/gen-third-party-notices.ts: a pre-commit hook regenerates it whenever a staged file changes one of its inputs, and scripts/gen-third-party-notices.spec.ts asserts in the test lane that the committed bytes match. Deleting a manifest runs no hook, so that case is caught by the assertion instead. Run pnpm run verify-third-party-notices for the standalone check.

The complete npm transitive closure, with exact pinned versions, is recorded in pnpm-lock.yaml — inspect it with pnpm licenses list. The Python closure is recorded in python/sdk/uv.lock, and the Landlock launcher workspace keeps its own in native/landlock-run/pnpm-lock.yaml.

Vendored source (vendor/)

The Cordis framework and its foundation libraries are source-vendored into this repository rather than consumed from npm. All are MIT-licensed; each directory preserves its upstream LICENSE file. Exact upstream commits and local modifications are recorded in vendor/README.md.

Package Upstream License
cosmokit github.com/deepseek-harness/cosmokit MIT
schemastery github.com/deepseek-harness/schemastery MIT
cordis github.com/cordiverse/cordis MIT
@cordisjs/plugin-loader github.com/cordiverse/cordis MIT
@cordisjs/plugin-include github.com/deepseek-harness/cordis MIT
@cordisjs/plugin-group github.com/deepseek-harness/cordis MIT
@cordisjs/plugin-timer github.com/deepseek-harness/cordis MIT
@cordisjs/plugin-hmr github.com/deepseek-harness/cordis MIT
@cordisjs/plugin-logger-console github.com/deepseek-harness/cordis MIT

Runtime npm dependencies

External packages that a workspace package resolves at runtime. scripts/install.sh installs this repository itself, so the tier covers every plugin a user can mount from cordis.yml — not only what the dsh CLI/TUI, the Web UI, and the Python SDK runtime load by default.

Package License
@agentclientprotocol/sdk Apache-2.0
@babel/code-frame MIT
@clack/core MIT
@clack/prompts MIT
@earendil-works/pi-ai MIT
@earendil-works/pi-tui MIT
@joplin/turndown-plugin-gfm MIT
@modelcontextprotocol/sdk MIT
@opentelemetry/api Apache-2.0
@opentelemetry/api-logs Apache-2.0
@opentelemetry/exporter-logs-otlp-http Apache-2.0
@opentelemetry/otlp-exporter-base Apache-2.0
@opentelemetry/resources Apache-2.0
@opentelemetry/sdk-logs Apache-2.0
@shikijs/langs MIT
@standard-schema/spec MIT
anser MIT
chokidar MIT
clsx MIT
commander MIT
diff BSD-3-Clause
dotenv BSD-2-Clause
eventsource-parser MIT
handlebars MIT
immer MIT
js-yaml MIT
jsonc-parser MIT
katex MIT
koffi MIT
mdast-util-from-markdown MIT
mdast-util-gfm MIT
micromark-extension-gfm MIT
node-addon-require-builtin MIT
node-pty MIT
picomatch MIT
pnpm MIT
react MIT
react-dom MIT
react-markdown MIT
rehype-katex MIT
remark-gfm MIT
remark-math MIT
saxes ISC
shiki MIT
supports-color MIT
tsx MIT
turndown MIT
typescript Apache-2.0
use-sync-external-store MIT
yaml ISC
zod MIT
zustand MIT

pnpm applies local patches to the following packages at install time, so shipped artifacts carry modified copies; each patch file is the complete record of the modification:

Development-only npm dependencies

External packages directly declared only by repository tooling, test infrastructure, the documentation site, the demo leaves, or the native launcher's build workspace. No shipped surface names them itself. A package here may still be pulled in transitively by a runtime dependency — pnpm-lock.yaml is the authority on the full closure — so this tier records who declares a package, not what a build ultimately bundles.

Package License
@braintree/sanitize-url MIT
@modelcontextprotocol/server-everything MIT / Apache-2.0
@modelcontextprotocol/server-filesystem MIT / Apache-2.0
@stylistic/eslint-plugin MIT
@testing-library/dom MIT
@testing-library/react MIT
@types/babel__code-frame MIT
@types/js-yaml MIT
@types/jsdom MIT
@types/mdast MIT
@types/node MIT
@types/picomatch MIT
@types/react MIT
@types/react-dom MIT
@types/spdx-expression-parse MIT
@types/turndown MIT
@typescript-eslint/parser MIT
@vitejs/plugin-react MIT
@vitest/coverage-v8 MIT
@xterm/headless MIT
@yarnpkg/cli-dist BSD-2-Clause
cytoscape MIT
cytoscape-cose-bilkent MIT
dayjs MIT
debug MIT
esbuild MIT
eslint MIT
eslint-plugin-sonarjs LGPL-3.0-only
execa MIT
fast-check MIT
jscpd MIT
jsdom MIT
knip ISC
lefthook MIT
lightningcss MPL-2.0
mermaid MIT
oxlint MIT
oxlint-tsgolint MIT
playwright Apache-2.0
publint MIT
smol-toml BSD-3-Clause
spdx-expression-parse MIT
tsdown MIT
typescript-language-server Apache-2.0
vite MIT
vite-tsconfig-paths MIT
vitepress MIT
vitepress-plugin-mermaid MIT
vitest MIT

eslint-plugin-sonarjs (LGPL-3.0-only) and lightningcss (MPL-2.0) run only as development tooling; their code is not linked into or distributed with any DeepSeek Harness artifact.

Python SDK dependencies (python/)

Direct dependencies of the pyproject.toml manifests, plus uv as the development workflow tool.

Package License Role
hatchling MIT build backend
pydantic MIT runtime dependency of deepseek-harness
pytest MIT test-only
uv MIT / Apache-2.0 development workflow tool

Fetched at build time

Package License Role
@yao-pkg/pkg MIT invoked by scripts/build-exe-for-python-sdk.ts to assemble the single-file SDK runtime executable

First-party sibling releases

node-addon-landlock-run (and its platform packages) is released from a DeepSeek Harness sibling repository under BSD 3-Clause. It is listed here for completeness; it is first-party, not third-party.