deepseek-harness/packages/bundle
Huanqi Cao d8acd2b656 fix(ci): pass the pwsh-less self-hosted Linux runners
The self-hosted Linux runners ship no pwsh, and the pwshAvailable probes used spawnSync('where.exe'), which reports a missing binary as status null instead of throwing — the suites never skipped and failed with spawn pwsh ENOENT. Probe with resolvePwshPath() status instead, the same gate the coverage exemption uses. Exempt pwsh-sandbox src from coverage on pwsh-less hosts (its remaining helpers branch and the invariant companion ride the executor suites' real pwsh runs); pwsh-ful hosts keep the full 100% bar. Cover the windows-acl probe case and the runner-entry resolution in sandbox-local on Linux (chain-seam tests plus a windowsAclRunnerEntry seam) — the package's POSIX-only suites are Linux's only chance to cover the new lines. Static gate fixes: declare dsh-pwsh-sandbox in the base bundle, register the runner files entry in constraints, knip entries for the e2e suite and where.exe, regenerate the module graph. Verified in WSL (no-pwsh Linux): pwsh-sandbox 5 pass/13 skip with the exemption active, sandbox-local coverage 100%.
2026-08-08 11:46:05 +08:00
..
base fix(ci): pass the pwsh-less self-hosted Linux runners 2026-08-08 11:46:05 +08:00
headless Merge remote-tracking branch 'origin/master' into feat/profile-plugin-management 2026-08-06 20:03:22 +08:00
web-app Merge remote-tracking branch 'origin/master' into feat/web-workspace-file-links 2026-08-07 16:49:20 +08:00
README.i18n.yaml refactor(cli)!: namespace the profile and bundle manifests under dsh.profile and dsh.bundle 2026-08-06 17:28:30 +08:00
README.md refactor(cli)!: namespace the profile and bundle manifests under dsh.profile and dsh.bundle 2026-08-06 17:28:30 +08:00
README.zh.md refactor(cli)!: namespace the profile and bundle manifests under dsh.profile and dsh.bundle 2026-08-06 17:28:30 +08:00

bundle/ — profile plugin bundles

English | 中文

Profile bundles: npm packages whose manifest declares "dsh": { "bundle": { "patch": "./cordis.patch.yml" } }, making them installable patch layers for dsh --profile compositions (profile contract). A bundle's substance is its patch list; some also ship runtime glue plugins their patch mounts.

Package Role ctx key
base/ The shared dsh core every profile applies first — (patch only)
web-app/ Browser surface: web patch layer + runtime glue plugin mounts rows
headless/ One-shot task mode over base + web-app mounts headless-runner

In-box bundles resolve from the dsh installation; out-of-tree bundles install into a profile through dsh plugin --profile <name> add <package>.