Commit Graph
2834 Commits
Author SHA1 Message Date
imccyu 47399764c5 fix(release): order publication by every installed dependency section
Publish order exists to make a partial publication self-consistent: an
interrupted run should leave a prefix whose packages never point at a version
absent from the registry. It read only dependencies and optionalDependencies, so
peer declarations — how sibling harness packages reference each other, 1088 edges
in the dsh family — constrained nothing.

Peer edges now order the publication too. devDependencies still do not: a dev
dependency is absent from the published package.

Peers cannot constrain it absolutely. Sibling packages declare each other as
peers, which is what closes the two cycles here, and npm treats an unmet peer as
a warning rather than a resolution failure. Install edges therefore win: a peer
edge is dropped where the peer installs the member declaring it, or where
following it would revisit a member already being visited. One peer edge is
dropped in the dsh family and two in the vendored family; every install edge is
honoured.

A cycle among install edges stays a defect rather than something to order
around, and release:verify now reports it before the build instead of letting it
surface once pack is already writing tarballs. Install-edge acyclicity is checked
on its own graph, because a peer edge leading into an install edge otherwise
reads as a cycle where the install edges are perfectly orderable.
2026-08-14 16:10:06 +08:00
pku-xht b4366e711d feat(subagent): make Claude Code provider directly installable 2026-08-14 16:05:48 +08:00
pku-xht 61ef3d8423 Merge commit '24887eea2e6734f054c997ff6a06357686afa5e2' into codex/installable-product-subagents 2026-08-14 15:24:02 +08:00
fz a6d7ac7438 fix(ci): avoid implied eval in config verification 2026-08-14 14:12:23 +08:00
fz acd8dd43fa fix(python-sdk): satisfy runtime packaging gates 2026-08-14 14:00:42 +08:00
fz e20f560992 feat(python-sdk): support bundled preset runtime dependencies 2026-08-14 13:06:21 +08:00
Yichen Jiang f33f8583b5 fix(docs): point source links at public master 2026-08-13 21:20:28 +08:00
imccyu 8c1e8d9890 build(release): publish the dsh family publicly
Every release member now declares publishConfig.access: public, so the scope no
longer mixes levels: the 221 packages/*/* and apps/* manifests join the vendored
framework and the native packages.

check-workspace-constraints drops the per-sequence expectation and holds every
release member to public, which is what stops a member from drifting back.

Access is a property of the package, not of a version: the dsh packages already
published as restricted become world-readable at their next publication.
2026-08-13 18:49:32 +08:00
Shigma 0ae8f27b93 docs: add link to preview paper 2026-08-13 18:37:45 +08:00
_Kerman b11b5359f9 ci: use pnpm node-gyp for manylinux rebuild 2026-08-13 18:13:03 +08:00
_Kerman a785eb80f7 fix(python-runtime): fall back to node-pty prebuild 2026-08-13 18:12:36 +08:00
_Kerman 1106b0b03d ci: rebuild node-pty for manylinux 2026-08-13 18:06:36 +08:00
Chinesezjc 65f679b33a ci: split failover switch into per-platform Linux and Windows variables
Replace the single DSH_CI_FAILOVER variable with two independent
switches so an outage on one platform no longer retargets the other:

- DSH_CI_FAILOVER_LINUX: the three required Linux workers (node-24,
  node-24-coverage, node-24-consumers) and the all-checks-passed verdict,
  which resolves its pool to vm-backup and keeps its concurrency and
  cache-restore branches.
- DSH_CI_FAILOVER_WINDOWS: the non-blocking windows-native job, which
  resolves to the dsh-win-ci pool.

all-checks-passed rides the Linux switch because it aggregates the
required Linux workers and runs on the vm-backup pool. The Dependabot
exclusion is preserved on both switches. The failover runbook (EN/ZH)
and its translation pairing, plus the docs that referenced the old
variable, are updated in the same change.
2026-08-13 16:54:57 +08:00
pku-xht 7de660305a Merge commit '5ccacf0fb452ec8fecd7fda4b61eb16fd8da8f64' into codex/installable-product-subagents 2026-08-13 16:54:39 +08:00
pku-xht 208f37157a fix(subagent): simplify optional provider delivery 2026-08-13 16:41:25 +08:00
Tianyi Cui 3161ef4e59 Merge latest master into test/translation-prompt-snapshot-fixtures 2026-08-13 16:26:21 +08:00
imccyu df9ea1681f fix: snapshot 2026-08-13 16:20:19 +08:00
pku-xht 22152e39be Merge commit 'f2685aa648d9d7239ae553ff42f3811ced59d393' into codex/installable-product-subagents
# Conflicts:
#	.agents/notes/implemented/architecture/2026-08-05-profile-plugin-bundles.i18n.yaml
#	.agents/notes/implemented/architecture/2026-08-05-profile-plugin-bundles.zh.md
#	.agents/notes/implemented/simplification/2026-08-12-production-dsh-excludes-product-subagent-providers.i18n.yaml
#	.agents/notes/implemented/simplification/2026-08-12-production-dsh-excludes-product-subagent-providers.md
#	.agents/notes/implemented/simplification/2026-08-12-production-dsh-excludes-product-subagent-providers.zh.md
#	apps/cli/composition.md
#	apps/cli/tests/web-agent-presets.e2e.ts
#	docs/module-graph.i18n.yaml
#	docs/module-graph.md
#	docs/module-graph.zh.md
#	packages/bundle/base/README.i18n.yaml
#	packages/bundle/base/README.zh.md
#	packages/bundle/base/package.json
#	packages/subagent/subagent-claude-code/package.json
#	packages/subagent/subagent-codex/package.json
#	pnpm-lock.yaml
2026-08-13 15:58:24 +08:00
imccyu 8d6f5164ab fix(release): make publication retry, space out, and skip what landed
A landlock publication failed with `E409 Failed to save packument` on the
second of three packages. The registry answers a write it could not commit that
way, and publishing several packages back to back is what provokes it.

Neither publish path could recover. The native sequence published from a shell
loop of bare `npm publish` calls: no retry, and no way to resume, because the
registry rejects a repeat of an existing version permanently — so a failure
partway through left the release stuck. publish.ts skipped versions already
present, which made a re-run safe, but had no retry either.

Both paths now attempt a tarball up to four times, space writes at least two
seconds apart, and back off 2s/4s/8s between attempts. Every retry re-reads the
registry first, because a reported failure can answer a write that landed
anyway: a version that now exists with this tarball's integrity counts as
published rather than as one to place again. That same re-read is what turns a
mid-run `E403 cannot publish over the previously published versions` into a
skip when the bytes match, and leaves it a hard failure when they do not.

The native sequence gets the registry comparison publish.ts already had, through
its own script rather than shared code — the two sequences keep separate
publication paths. Its publish job now checks out the repository, which the
shell loop did not need.

Verified against a scripted registry: a clean publish, one E409 then success, an
E409 whose write landed anyway, E409 on every attempt (fails after four), and a
version already present with matching integrity (publishes nothing).
2026-08-13 15:31:09 +08:00
Chinesezjc fc4405723f Merge pull request #2299 from deepseek-harness/fix/windows-native-ci-local-validation
fix: Windows-native CI findings on latest master (local gate reproduction)
2026-08-13 15:30:47 +08:00
Chinesezjc b5a130063d fix(scripts): widen fixture-cleanup EPERM retry window
The failover Windows pool releases child-process and antivirus file
handles slower than the hosted pool; a 1-second window (10 x 100 ms)
still exhausts before release under load, so install-lefthook fixture
cleanup threw EPERM in rmSync. A 10-second window (50 x 200 ms) covers
the slower release without pinning afterEach cleanup, since a
terminated child's handles drain once rather than reacquire.
2026-08-13 15:16:12 +08:00
Huanqi Cao 4ed036da1c fix: Windows-native CI findings on latest master
Local run of check:ci:windows-complete (the windows-native gate) on
latest master surfaced five Windows-only failures, all unreachable by
current CI because the native windows job is disabled and the wine gate
only covers build+site.

- install-lefthook/translation-pairing-merge specs junctioned the real
  scripts/ and tsx package into fixtures; Windows recursive deletion
  (Node rmSync and git worktree remove) follows MOUNT_POINT junctions and
  deleted the repository's own directories mid-run. Fixtures now unlink
  their reparse points before any recursive removal (shared helper in
  scripts/test-fixture-cleanup.ts).
- workflow-workerthread spawned its worker with an empty env; on Windows
  os.tmpdir() then degrades to the literal relative path undefined\temp,
  so tsx wrote its transform cache into a cwd-relative undefined/
  directory inside the repo. The worker env now injects the host temp
  path on win32 (workerSpawnEnv, platform-parameterized and unit-tested
  on both arms).
- workspace-context spec did not stub USERPROFILE (win32 homedir) or a
  set DSH_HOME, leaking the developer machine's real ~/.dsh/AGENTS.md
  into discovery.
- ui-trajectory client-bundle spec mounted the built artifact without the
  remote/settingsScope provides the locale plugin needs, so the plugin
  never activated and no view registered.
- subagent temp-fixture cleanup lacked the maxRetries Windows handle
  release needs under load (EPERM); added retries to the three affected
  specs and the fixture-cleanup helper.
2026-08-13 15:16:11 +08:00
Turtle 3a1a4e2cd8 docs: address fragment review feedback 2026-08-13 14:30:17 +08:00
Turtle 62080d49c2 docs: fix release smoke test failures 2026-08-13 14:20:09 +08:00
imccyu a213befd0f build(release): publish the vendored framework and the native packages publicly
The three release sequences shipped with publishConfig.access: restricted, so
nothing in the @deepseek-ai scope was installable from outside the organization.

A restricted dependency is what actually blocks a public consumer: every harness
package declares the vendored framework as a peerDependency, and
dsh-sandbox-local declares the Landlock entry as a dependency. Those two
sequences therefore go public first — the nine vendor/* packages and the three
native/landlock-run packages — while the dsh family stays restricted until its
own sequence is opened deliberately. No public package requires a restricted one
in this arrangement.

Access is now per sequence, so no publish path can pass --access: one flag
cannot express two levels and would override the manifest that owns the fact.
publish.ts stops passing it, matching the native workflow, and
check-workspace-constraints holds each manifest to its own sequence's level,
which is what stops the scope from drifting one package at a time.

Harness consumers reference the Landlock entry as workspace:^ instead of
workspace:*, so a published harness package accepts the entry's patch and minor
releases. The entry keeps workspace:* for its platform packages, where the
binary must match the entry version exactly.

Two rationales that named a private registry no longer describe the vendored
sequence; they now state the durable reason, which is that the verification must
not depend on the registry already carrying matching versions.
2026-08-13 14:05:48 +08:00
Tianyi Cui 36cca40281 test: make the product translation fixture generic 2026-08-13 13:58:03 +08:00
Tianyi Cui 9d0ef6f5bb test: make the Agent Note translation fixture generic 2026-08-13 13:48:09 +08:00
Tianyi Cui c1f368b493 Merge latest master into test/translation-prompt-snapshot-fixtures 2026-08-13 13:44:39 +08:00
Turtle 1540e76598 docs: capitalize Service Provider across repository 2026-08-13 13:31:30 +08:00
Tianyi Cui 16d86cfba7 test: decouple the translation prompt snapshot from live documents
The snapshot embedded five live bilingual document pairs as reviewed
examples, so editing any of them (README, development guide, i18n docs)
churned the snapshot. Replace them with three synthetic fixture pairs
(product, rules, agent-note shapes) under scripts/fixtures; the prompt
examples stay representative without tracking real document content.
2026-08-13 13:07:57 +08:00
Tianyi Cui c905c4694e Adopt MIT for DSH packages 2026-08-13 13:07:24 +08:00
Tianyi Cui d3f69e20ad test: refresh translation prompt snapshot for the new root README
The snapshot embeds the root README pair as a reviewed example; regenerate
it so the example reflects the finalized English README and its Chinese
counterpart.
2026-08-13 12:51:06 +08:00
Huanqi Cao f5c0d7e522 merge: bring master's rc.5 release and cordis tool renames into feat/pwsh-persistent-pty 2026-08-13 11:54:16 +08:00
j-xiang 715bcce739 Merge remote-tracking branch 'origin/master' into docs/readme-human-polish-2
# Conflicts:
#	apps/cli/README.i18n.yaml
#	apps/cli/README.zh.md
#	packages/core/tools/README.i18n.yaml
#	packages/core/tools/README.zh.md
#	python/sdk/README.i18n.yaml
#	python/sdk/README.zh.md
#	scripts/snapshots/translation-prompt-v4/request-response.expected.json
2026-08-13 10:44:52 +08:00
Huanqi Cao d6010c2d88 refactor(pty): follow the naming-contract renames across the persistent pwsh stack 2026-08-13 09:52:56 +08:00
imccyu 38bc7ddc33 fix: vendor prerelease 2026-08-13 06:06:45 +08:00
imccyu c92ff246d7 fix(release): bump the complete vendor family 2026-08-13 05:55:17 +08:00
imccyu 34dd480ae5 fix(session-query): rename session log export package 2026-08-13 05:02:00 +08:00
imccyu db6b14eb5b fix: rebase 4 2026-08-13 02:38:16 +08:00
imccyu 1ff62760d1 fix: rebase 3 2026-08-13 02:29:17 +08:00
imccyu 39f55a049f fix: rebase 2026-08-13 01:59:32 +08:00
Huanqi Cao 1ae9df33eb merge: bring master's naming-contract refactor into feat/pwsh-persistent-pty 2026-08-13 01:52:47 +08:00
imccyu 5a0283b04f fix: ci and static 2026-08-13 01:34:55 +08:00
imccyu a7d4cd8e1b fix: ci 2026-08-13 01:33:31 +08:00
Huanqi Cao 828532682e merge: bring the #2299 Windows-native CI fix series into feat/pwsh-persistent-pty 2026-08-13 01:33:27 +08:00
Huanqi Cao bc319d0a3b merge: bring master into feat/pwsh-persistent-pty 2026-08-13 01:33:16 +08:00
imccyu 978e573605 fix: test/docs 2026-08-13 01:30:49 +08:00
imccyu 4064198560 • feat(self-modification): add dynamic Cordis plugin runtime and UI 2026-08-13 01:29:36 +08:00
Huanqi Cao d05351a270 docs(pty): register the persistent pwsh tool in the catalogs
Adds tool-pwsh-persistent to the tool-catalog manifest, regenerates
docs/tool-catalog.md and docs/config-catalog.md (the pty-local
shellDialect config), and fixes the persistent-pty note's cross-link
level to the implemented pwsh note.
2026-08-13 01:27:41 +08:00
Tianyi Cui a2d0f7f411 refactor: apply repository naming contract
Apply the accepted pre-release package, service, type, directory, and role renames as one repository-wide change.
2026-08-13 00:54:38 +08:00