2nd dokployH
Find a file
Huanqi Cao cb69ca80d6 ci(windows): run the observational gate wrapper in pwsh — an MSYS parent leaks into the suite
The lane-split merge moved the Run gates step to `shell: bash`, which
broke it twice over. First, GHA's bash shell runs with -e, so a failing
gate aborted the step before the :⚠️:/exit 0 lines — the lane
went red X instead of the intended yellow warning. Second, and worse,
Git Bash as the PARENT of the gate run leaks MSYS environment into the
suite itself, producing 8 real test failures the pwsh-launched runs
(and the DSec VM runs) never saw:

- bash exports PWD; the MSYS runtime rewrites it to Windows form for
  native children, dsh-bash-local's adaptEnv passes it through, and the
  executor's MSYS bash adopts it — `pwd` prints `D:/a/...` where the
  tests (and the executor's MSYS dialect) expect `/d/a/...` (7 tests).
- cygwin enables SeBackupPrivilege on the runner's admin token; children
  inherit the enabled state, and libuv's FILE_FLAG_BACKUP_SEMANTICS read
  opens then pierce the dwShareMode=0 lock the jsonl EBUSY test holds —
  loadLive resolves instead of rejecting (1 test).

Evidence: run 28918325498 (pwsh step, pre-merge) failed only the two
hooks dispose tests since fixed by f8fd8c00; run 28921741006 (bash
step) fixed those and failed exactly the 8 above, with zero relevant
source diff between them.

Fix: run the wrapper in pwsh — a native command's failure doesn't abort
pwsh, so $LASTEXITCODE capture + :⚠️: + exit 0 works without an
errexit dance, and the gates start from a native Windows shell as they
do everywhere else Windows CI has been validated.

Docs: the windows-support RFC drops the stale continue-on-error wording
(replaced by the warning wrapper) and records the launch-environment
limitation — native shell required today; making an MSYS parent a
supported launch environment (PWD scrub in adaptEnv, privilege-explicit
tests) is a future improvement direction.
2026-07-15 18:09:38 +08:00
.agents/skills refactor: relocate demo app bundles to packages/examples/*-demo 2026-07-15 16:46:05 +08:00
.claude docs: accuracy sweep, architecture restructure, two ADRs, review skill 2026-06-13 22:05:34 +08:00
.github/workflows ci(windows): run the observational gate wrapper in pwsh — an MSYS parent leaks into the suite 2026-07-15 18:09:38 +08:00
docs fix: satisfy doc gates after the examples/ relocation 2026-07-15 16:46:05 +08:00
examples refactor: relocate demo app bundles to packages/examples/*-demo 2026-07-15 16:46:05 +08:00
packages fix: satisfy doc gates after the examples/ relocation 2026-07-15 16:46:05 +08:00
python fix: point node-mode launcher at the renamed dsh-jsonrpc-demo package 2026-07-15 16:46:05 +08:00
scripts fix: satisfy doc gates after the examples/ relocation 2026-07-15 16:46:05 +08:00
vendor pkg: update vendor dep 2026-07-15 11:28:45 +08:00
.editorconfig Declare LF and final-newline conventions in .editorconfig 2026-07-15 16:09:12 +08:00
.gitattributes Pin LF working trees via .gitattributes 2026-07-15 16:09:12 +08:00
.gitignore single-exe: closure manifest, build pipeline, and CI workflow 2026-07-13 15:50:09 +08:00
.gitlab-ci.yml python: derive release version from repository 2026-07-13 17:49:01 +08:00
.jscpd.json chore: tighten TypeScript duplication lint 2026-07-14 00:24:04 +08:00
AGENTS.md fix: satisfy doc gates after the examples/ relocation 2026-07-15 16:46:05 +08:00
CLAUDE.md Initialize repo with README, AGENTS.md, and CLAUDE.md symlink 2026-06-10 22:58:56 +08:00
eslint.config.mjs Merge remote-tracking branch 'origin/master' into codex/trim-ai-prose 2026-07-14 00:47:30 +08:00
knip.json refactor: relocate demo app bundles to packages/examples/*-demo 2026-07-15 16:46:05 +08:00
lefthook.yml Merge parallel pre-push gates into CI scheduler 2026-07-06 01:47:13 +08:00
LICENSE Initialize repo with README, AGENTS.md, and CLAUDE.md symlink 2026-06-10 22:58:56 +08:00
package.json refactor: relocate demo app bundles to packages/examples/*-demo 2026-07-15 16:46:05 +08:00
pnpm-lock.yaml refactor: relocate demo app bundles to packages/examples/*-demo 2026-07-15 16:46:05 +08:00
pnpm-workspace.yaml pkg: update vendor dep 2026-07-15 11:28:45 +08:00
pytest.ini Merge remote-tracking branch 'origin/master' into codex/trim-ai-prose 2026-07-14 00:40:36 +08:00
README.i18n.yaml docs(i18n): reconcile gold pairs with master's EN-side drift 2026-07-12 21:14:47 -07:00
README.md docs: revise graph docs from review 2026-07-05 01:25:58 +08:00
README.zh.md docs(i18n): reconcile gold pairs with master's EN-side drift 2026-07-12 21:14:47 -07:00
tsconfig.base.json fix: register the examples/ group in the tsconfig paths map 2026-07-15 16:46:05 +08:00
tsconfig.build.json refactor: relocate demo app bundles to packages/examples/*-demo 2026-07-15 16:46:05 +08:00
tsconfig.json refactor: relocate demo app bundles to packages/examples/*-demo 2026-07-15 16:46:05 +08:00
tsdown.config.ts docs: align prose with runtime contracts 2026-07-14 16:21:41 +08:00
vitest.config.ts docs: rebalance prose cleanup and add trimming skill 2026-07-13 23:27:00 +08:00
vitest.e2e.config.ts docs: rebalance prose cleanup and add trimming skill 2026-07-13 23:27:00 +08:00
vitest.snapshot.config.ts docs: rebalance prose cleanup and add trimming skill 2026-07-13 23:27:00 +08:00

DeepSeek Harness

English | 中文

The DeepSeek Harness SDK is a plugin-based SDK for building agent harnesses.

Development

This monorepo is built on the Cordis framework (vendored as source under vendor/), microkernel-style: everything is a plugin.

pnpm install
pnpm run test          # vitest
pnpm run demo:repl     # REPL agent demo (needs DEEPSEEK_API_KEY)
pnpm run demo:acp      # ACP server agent demo (needs DEEPSEEK_API_KEY)

For humans, start with the development guide for local setup, hooks, environment variables, and quality gates, then read the architecture design and documentation graph index before package work. Local context lives in packages/ and vendor/.

For agents, follow AGENTS.md.