feat(dsh-plugin): DeepSeek Harness (DSH) 原生插件 (Issue #393) - #394
Conversation
XP-Gate Quality ReportQuality Gate Status: success Quality checks have completed for this pull request. ✅ All quality gates have passed. Ready for review! |
XP-Gate Quality ReportQuality Gate Status: success Quality checks have completed for this pull request. ✅ All quality gates have passed. Ready for review! |
|
Rebasing onto latest main to resolve merge conflicts. |
0cf0a45 to
8b9c72a
Compare
XP-Gate Quality ReportQuality Gate Status: failure Quality checks have completed for this pull request. |
8b9c72a to
646c007
Compare
XP-Gate Quality ReportQuality Gate Status: success Quality checks have completed for this pull request. ✅ All quality gates have passed. Ready for review! |
…ls (Issue #393) Slice 1+2: DSH-native plugin package (@boyingliu01/dsh-plugin-xp-gate) with dsh.bundle.patch + cordis.patch.yml, three ctx.tools tools (gate-check, gate-principles, gate-arch) shelling to the global xp-gate CLI with shq() command-injection guard, graceful fallback, and abort/timeout split. TDD: 25 unit tests green; tsc check + build + node ESM import smoke pass.
Slice 3: prepack.cjs mirrors plugins/opencode to bundle the 12 repo skills into plugins/dsh/skills/ (gitignored, populated at pack time). Adds a skills frontmatter contract test (name kebab-case + non-empty description, per parseSkillFile) and prepack runs build + skills copy. 27 unit tests green; npm pack yields lib/index.js + cordis.patch.yml + 12 SKILL.md.
…ssue #393) - Rename spec ids to REQ-DSH-XXX / AC-DSH-XXX-01 and nest acceptance_criteria under requirements so test-specification-alignment parses them; root specification.yaml now reflects this sprint's approved design. - Move test annotations to per-it() JSDoc (full REQ/AC coverage) and add a packaging-contract test; alignment HARD-GATE passes at score 100. - Enforce the gates whitelist inside buildCommand (isGateAllowed is live code) and fully optional-chain the session cwd lookup. Add exports default condition + top-level types per dsh package convention. - 30 unit tests green; tsc typecheck + emit green.
- build-plugin.mjs: support --platform dsh (tsc build + skills prepack), extracted into buildDshPlugin() so buildPlugin complexity is unchanged. - test-plugins.mjs: validate dsh dir, package.json, cordis.patch.yml, version. - sync-version.cjs: sync plugins/dsh/package.json (source + npm-package mirror). - sync-package-content.js: add 'dsh' to PLUGINS + gitignored-skills set. - package.json: add build:dsh-plugin and include it in build:plugins. Also refresh .architecture-baseline.json (root + src/npm-package): the prior snapshots predate v0.18.5 upstream drift, and Gate 6 (archlint) had not been running (tool not installed), so the ratchet flagged pre-existing smells as new. Re-snapshot brings both baselines current so archlint enforces net-new violations.
VERSION 0.18.5.0 -> 0.19.0.0; sync package.json + plugin manifests (@boyingliu01/dsh-plugin-xp-gate, opencode, claude-code, qoder) and refresh AGENTS.md mirrors via scripts/sync-version.cjs. CHANGELOG entry added.
Add publish-dsh-plugin job (mirrors publish-opencode-plugin, plus npm install + tsc build before bundling skills) so @boyingliu01/dsh-plugin-xp-gate is published when a versioned release lands on main. Wire it into create-release needs and the tag/release titles.
646c007 to
83ccf54
Compare
XP-Gate Quality ReportQuality Gate Status: success Quality checks have completed for this pull request. ✅ All quality gates have passed. Ready for review! |
Summary
Implements Issue #393 — XP-Gate 作为 DeepSeek Harness (DSH) 原生插件 (
@boyingliu01/dsh-plugin-xp-gate)。What changed
plugins/dsh/— native DSH plugin (name/inject/applycontract):gate-check,gate-principles,gate-archgates.filter(isGateAllowed)), exec cwd viactx.agent.session.header.cwdSKILL.mdskills copied at prepack (prepack.cjs)cordis.patch.ymlauto-insertstool-xp-gateinto DSH runtime (package.jsondsh.bundle.patch)dshadded to build/version/test/package-content sync:scripts/build-plugin.mjs(--platform dsh→buildDshPlugin())scripts/sync-version.cjs,scripts/test-plugins.mjs,src/npm-package/scripts/sync-package-content.jspackage.json(build:dsh-plugin+build:plugins)src/npm-package/) so Gate 6 (archlint ratchet) enforces net-new violations.0.18.5.0 → 0.19.0.0(MINOR), CHANGELOG + AGENTS.md mirrors synced.Verification (Sprint Flow)
tsc --noEmitclean.Closes #393