Commit Graph
18711 Commits
Author SHA1 Message Date
imccyu 4ebd9fad79 test(web): avoid unstable subagent hover 2026-08-23 16:16:05 +08:00
imccyu 24a610db74 fix(api): preserve migrated transport semantics 2026-08-23 16:16:05 +08:00
imccyu 3728c0b13e test(client): cover reconnect and question scope paths 2026-08-23 16:16:05 +08:00
imccyu 18cf84d133 fix(client): materialize Agent scopes before list baseline 2026-08-23 16:16:05 +08:00
imccyu d319a0773b docs: refresh module graph after rebase 2026-08-23 16:16:05 +08:00
imccyu ddcab34c0e test(api): close stream transport coverage gaps 2026-08-23 16:16:05 +08:00
imccyu 6a3f35e248 docs: refresh generated client metadata 2026-08-23 16:16:04 +08:00
imccyu f494caca45 refactor(client): move pending interactions out of Session state 2026-08-23 16:16:04 +08:00
imccyu 003fc024c2 docs: refresh module graph 2026-08-23 16:16:04 +08:00
imccyu 30f43b9870 test(api-session): bind history probes to follow cursors 2026-08-23 16:16:04 +08:00
imccyu 7d21611391 test(api-gateway): cover clientless Remote event replay 2026-08-23 16:16:04 +08:00
imccyu a49b265f88 docs: synchronize controller transport documentation 2026-08-23 16:16:04 +08:00
imccyu e38982adc8 fix(client): satisfy stream lifecycle contracts 2026-08-23 16:16:04 +08:00
imccyu 9eb3747ffc fix(user-questions): bridge scoped request events 2026-08-23 16:16:03 +08:00
imccyu 016be7d533 fix(interaction): type Agent-scoped request events 2026-08-23 16:16:03 +08:00
imccyu 9ff067dfbd fix(client-runtime): close journals with session scopes 2026-08-23 16:16:03 +08:00
imccyu 2b2a45f30c fix(client-connection): release stream ownership on unload 2026-08-23 16:16:03 +08:00
imccyu 5d17b6798d fix(api-gateway): retry journal pages after reconnect 2026-08-23 16:16:03 +08:00
imccyu 1e0e827425 refactor(client-runtime): remove Session interaction consumers 2026-08-23 16:16:03 +08:00
imccyu 7f908c1bb4 fix(user-questions): normalize in-flight aborts 2026-08-23 16:16:03 +08:00
imccyu 639dcef5d8 refactor(api-session): remove interaction transport 2026-08-23 16:16:03 +08:00
imccyu e8ede58603 fix(api-session): bind history pages to follow cursor 2026-08-23 16:16:03 +08:00
imccyu 9b1069c234 docs: document controller Remote transport 2026-08-23 16:16:03 +08:00
imccyu 54d739cf53 chore(api): align controller assembly and package graph 2026-08-23 16:16:02 +08:00
imccyu dcddaa1a6e refactor(client): replace legacy Host event carriers 2026-08-23 16:16:02 +08:00
imccyu ae25df3ac6 refactor(workspace): move APIs into Workspace Controller 2026-08-23 16:16:02 +08:00
imccyu d26acfa2e3 refactor(session): move APIs into Session Controller 2026-08-23 16:16:02 +08:00
imccyu 3d6d595d79 feat(api-gateway): unify Remote streams and events 2026-08-23 16:16:01 +08:00
Tianyi Cui 4ba47e665b Merge pull request #2119 from deepseek-harness/worktree/gate-package-subsystem-pages
Require package groups to declare subsystem documentation
2026-08-23 16:14:47 +08:00
Tianyi Cui 5e0fd757e1 Merge pull request #2460 from deepseek-harness/test/translation-prompt-snapshot-fixtures
test: decouple the translation prompt snapshot from live documents
2026-08-23 16:13:58 +08:00
Tianyi Cui 1d46946963 test(docs): use a block cleanup callback 2026-08-23 16:02:32 +08:00
Tianyi Cui 97938582e5 test(docs): avoid duplicate fixture cleanup 2026-08-23 15:55:46 +08:00
Tianyi Cui 4bc6f4bdf7 Merge origin/master into worktree/gate-package-subsystem-pages 2026-08-23 15:47:32 +08:00
Tianyi Cui ce2de363dd Merge latest master into test/translation-prompt-snapshot-fixtures 2026-08-23 15:41:54 +08:00
Tianyi Cui 947205fb80 Merge pull request #2956 from deepseek-harness/worktree/win32-utf16-nul-truncation-20260823
fix(directory-picker-native): stop truncating Win32 UTF-16 paths at U+XX00
2026-08-23 14:28:53 +08:00
Tianyi Cui 56f0297321 docs(agent-notes): record the Win32 UTF-16 NUL-scan fix 2026-08-23 14:22:03 +08:00
ericcaiwx-star 9a2217b74a test(directory-picker-win32): use a synthetic path in the UTF-16 fixture
The U+5F00 case only needs that code unit in the buffer. A real-looking user desktop path does not belong in a public fixture.
2026-08-23 14:08:39 +08:00
ericcaiwx-star 51c242749a fix(directory-picker-native): stop truncating Win32 UTF-16 paths at U+XX00
readUtf16 treated any zero low byte as NUL, so BMP characters such as 开 (U+5F00) cut the folder-picker path in half.
2026-08-23 13:56:48 +08:00
Tianyi Cui b7e16fdaeb Merge pull request #2954 from deepseek-harness/worktree/remove-openai-yml
chore: remove openai.yaml files
2026-08-23 13:22:09 +08:00
Tianyi Cui 8c420de301 chore: remove OpenAI skill metadata 2026-08-23 13:14:41 +08:00
Turtle cc8ea70dc0 Merge pull request #2560 from deepseek-harness/codex/add-security-policy
docs: add bilingual experimental safety notice
2026-08-23 11:10:52 +08:00
Tianyi Cui 92f8fb6c4a Merge pull request #2948 from deepseek-harness/worktree/unify-dsh-launch-profiles-reviewable-20260823
feat: unify application launch under dsh profiles
2026-08-23 11:10:27 +08:00
Tianyi Cui fd814589fb refactor(profiles): make module HMR opt-in
Move the shared module-reload policy into dsh-base by inserting its HMR row disabled, then remove the redundant disabled overrides from Web, headless, SDK, and ACP. No shipped profile enables server module reload; live profile patch watching continues through the launcher-owned config-only fallback, and browser client HMR remains a separate mechanism.

A later profile layer can opt into source-module reload explicitly with disabled: false while retaining the base root configuration. Composition tests cover every shipped mode and the explicit enable path, and the bundle references plus launcher Agent Notes document the resulting ownership and safety rationale.
2026-08-23 10:59:01 +08:00
Tianyi Cui 2eea02dae3 ci: bound profile e2e subprocess fan-out
Set DSH_E2E_MAX_WORKERS=4 for the credentialed e2e workflow and pin that environment contract in the workflow test. Profile-launched SDK and ACP scenarios each boot a complete subprocess tree, so the previous file-level fan-out could multiply process and provider pressure far beyond the runner's useful concurrency.

The bound changes scheduling only: every e2e file still runs, the Vitest configuration retains its explicit override knob, and local callers can choose a different positive worker count when their resources allow it.
2026-08-23 10:59:01 +08:00
Tianyi Cui fdac6cffcb test: refresh profile migration catalogs and built smokes
Regenerate the configuration catalog and module graph after replacing standalone application packages with dsh profile bundles and renaming the private Python carrier. Update built-bin coverage to launch the shipped sdk and acp profiles, assert retired bins stay absent, and keep the Web golden text aligned with the same assembled runtime.

Clarify that headless is a startup profile whose patches freeze after boot. This commit is projection and verification work: it contains no application implementation, and every generated document is produced from source committed earlier in the series.
2026-08-23 10:59:01 +08:00
Tianyi Cui 32c32932f9 chore(repo): wire profile apps and the renamed runtime through builds
Update workspace manifests, the lockfile, Host project references, Knip inputs, package constraints, vendoring rewrites, and Python runtime build/smoke scripts for sdk-app, acp-app, and @deepseek-ai/dsh-sdk-python-runtime. Add the ACP hook packages to the dsh dependency closure so installed profile materialization resolves the same plugins as source workspaces.

Keep Python distribution outputs deliberately unchanged: the wheel modules, executable names, and smoke targets retain their public identities even though their private npm carrier moved. Constraint fixtures pin the new package locations and catch missing application dependencies on every platform.
2026-08-23 10:59:01 +08:00
Tianyi Cui 3b33ca058f chore(repo): enforce dsh as the only Node application launcher
Add verify-application-entrypoints to the top-level gate graph. It inventories executable sources and package bins across apps, packages, and examples; rejects unclassified launchers including root-level js/mjs/cjs/ts files; and permits only the dsh CLI plus the explicitly private Python runtime carrier exception.

Update repository, architecture, CLI, and naming records to state the same rule: Node consumers select a dsh profile instead of invoking application-package bins, and no compatibility aliases remain. Fixtures prove both allowed classifications and representative escape attempts, making the architectural rule mechanically enforceable.
2026-08-23 10:59:01 +08:00
Tianyi Cui a6447db01c refactor(sdk): name the private Python runtime carrier explicitly
Rename the relocated npm workspace to @deepseek-ai/dsh-sdk-python-runtime and the runnable example to python-sdk-agent, then update every owning English/Chinese document, test, and packaged-runtime reference. Remove the obsolete standalone bin while retaining the carrier entrypoints used to assemble the wheel runtime.

This is intentionally a naming and ownership change, not a Python SDK migration. The public deepseek_harness_sdk and deepseek_harness_runtime module, wheel, executable, environment, and wire behavior remain unchanged. Documentation records that this private carrier is the temporary sole non-dsh application exception and will move to profile launch later.
2026-08-23 10:59:01 +08:00
Tianyi Cui 189e7b84e8 test(sdk): refresh dsh-profile SDK transcripts
Regenerate the four TypeScript SDK replay scenarios after switching their subprocess to dsh --profile sdk. The fixtures now project profile-owned runtime context, tool composition, nested-child persistence, and the opt-in DeepSeek session-log acceptance event while preserving each scenario's final response and file assertions.

This commit contains only committed snapshot outputs. Separating them from the SDK implementation keeps protocol/API review focused and makes the model-visible consequences auditable as generated evidence.
2026-08-23 10:59:00 +08:00
Tianyi Cui 3368ddc0ab feat(sdk): launch TypeScript clients through dsh profiles
Replace the TypeScript SDK's public arbitrary command/argv launch surface with the same-version dsh CLI, a named profile, ordered per-launch patches, optional process cwd, and explicit Harness home selection. Installed consumers use the built CLI; clean source checkouts use the package's src/bin.ts through an absolute tsx/esm loader and a source-only patch that omits build-generated Typert loading.

Materialize explicit or inherited environments at spawn time, keep profile-internal patches below caller patches, and resolve every caller-relative path before the child starts. The SDK subagent provider validates its optional CLI and patch files at plugin load and requires an isolated absolute child home.

Treat JSON-RPC initialize as the Loader-owned readiness point: Loader settlement joins entry imports, fiber lifecycle work, and synchronous effect registration, so the server needs no scheduler tick. A delayed profile entry registers a private adapter before initialize resolves, proving caller-supplied plugin routes are visible without fallback.

Update sdk-app ownership, server diagnostics, TypeScript SDK examples, nested-loader coverage, and session-upload replay layering together. The following commit contains only the regenerated SDK transcripts, keeping this API and lifecycle change directly reviewable.
2026-08-23 10:59:00 +08:00