Commit Graph
13379 Commits
Author SHA1 Message Date
imccyu 64bb0427f9 feat(util): add workspace path helpers 2026-08-23 23:01:48 +08:00
Tianyi Cui 11b69490bf Merge pull request #2964 from deepseek-harness/worktree/localize-ui-strings-gate
fix(client): localize UI copy and gate regressions
2026-08-23 22:56:29 +08:00
Tianyi Cui 2a72de67d1 fix(ci): preserve cross-platform lint suppressions 2026-08-23 21:48:32 +08:00
Tianyi Cui ac4ade3aaa fix(client): address localization review findings 2026-08-23 21:22:41 +08:00
Tianyi Cui 174c672f45 Merge remote-tracking branch 'origin/master' into worktree/localize-ui-strings-gate 2026-08-23 20:15:02 +08:00
Tianyi Cui e1a5942c9a fix(client): satisfy UI localization CI gates 2026-08-23 20:14:53 +08:00
Tianyi Cui c9b1c1b0b0 Merge pull request #2960 from deepseek-harness/worktree/fix-master-sandbox-ci-20260823
fix(ci): restore Sandbox master checks
2026-08-23 19:50:25 +08:00
Tianyi Cui b6b08beb0d test(sandbox): derive packed workspace closure
The Landlock packed-install rehearsal packed a hand-maintained list of
workspace tarballs. When dsh-llm gained the dsh-util-crypto runtime
dependency, the list stayed stale and npm tried to fetch the unpublished
release candidate from the public registry, failing both Linux master jobs
with E404 before confinement ran.

Read the current pnpm workspace inventory and traverse dependencies,
optionalDependencies, and required peerDependencies from the packed test
roots. Verify package identities, fail loudly on unresolved workspace names,
sort the closure deterministically, and leave native-family packages to the
existing mode-preserving native packer.

Cover runtime traversal, optional-peer exclusion, native filtering, and
invalid workspace metadata. Remove the obsolete vendoring exact edit for the
deleted manual list so future runtime workspace additions are included by
their manifests instead of becoming post-merge CI failures.
2026-08-23 19:24:50 +08:00
Tianyi Cui 4f3a47d792 fix(terminal-bash): handle terminal protocol replies
Unix PowerShell emits cursor-position requests while PSReadLine starts and
redraws prompts. The subprocess PTY is only a transport, so those requests
went unanswered. Startup could then accept the dsh> literal echoed from its
setup source as a rendered prompt, and later sends were lost or clipped.

Feed raw PTY output into a zero-scrollback @xterm/headless state machine and
write generated replies through the provider-owned terminal handle. Drain
replies before caller input, repeat foreground inspection when terminal
activity races the sample, and retain send ownership until parser and reply
work quiesce. Coalesce raw chunks behind one active parser write so large
Windows output cannot create thousands of queued parse callbacks.

Publish pwsh only from backend stdin_read evidence and start one timeoutMs
deadline before the complete startup retry loop, so inferred-idle follow-ups
cannot reset the bound. Dispose the emulator when the
terminal or cleanup fails. Document the fail-loud ConstrainedLanguage path
and add focused coverage for split queries, reply ordering, foreground
resampling, failure containment, batching, timeout, and disposal.
2026-08-23 19:24:50 +08:00
Tianyi Cui 9ebda8755e Merge remote-tracking branch 'origin/master' into worktree/localize-ui-strings-gate
# Conflicts:
#	packages/client/ui-chat/src/client/chat/AssistantMarkdown.tsx
#	packages/client/ui-chat/src/client/chat/CompactionItem.tsx
#	packages/client/ui-conversation/src/client/locales.ts
#	packages/client/ui-renderer/src/client/app.tsx
#	packages/client/ui-renderer/src/client/index.ts
#	packages/client/ui-renderer/tests/ui-renderer.client.spec.tsx
#	packages/client/ui-tool/src/client/tool/models/tool-call-model.ts
#	packages/client/ui-trajectory/src/client/trajectory-record.ts
#	packages/client/ui-trajectory/src/client/trajectory-snapshot-builder.ts
#	packages/client/ui-trajectory/tests/views.client.spec.tsx
#	packages/client/ui-workspace/src/client/tree.ts
2026-08-23 18:34:42 +08:00
Tianyi Cui 3c10f5d2d3 fix(client): route UI copy through locale 2026-08-23 17:31:37 +08:00
Tianyi Cui 3c1c6a89b1 test(python): gate installed runtime wheels across release targets (#2953)
* test(python): exercise installed wheels as black boxes

Add an installed-wheel mode that refuses source/editable imports, repository working directories, mismatched SDK/runtime versions, unpinned runtime dependencies, and executables outside the installed runtime distribution. The mode resolves the wheel-owned executable itself, so callers cannot accidentally prove an explicit checkout artifact.

Add a real-API scenario that drives two tool-using turns through the public synchronous SDK, verifies the file bytes outside the agent, checks completed turn/tool events and persistence, and projects provider failures without retaining credential-bearing error text. The existing deterministic scenario set remains the keyless behavior oracle.

Refs #2952.

* ci(python): require installed-wheel checks on every release target

Move the complete deterministic runtime scenarios behind construction and clean installation of the SDK and matching runtime wheels. Each native leg runs outside the checkout with source-resolution environment variables removed; Linux manylinux smokes assert the same installed provenance.

Expand the required pull-request call from Linux x64 to Linux x64, Linux arm64, and macOS arm64. Trusted heads receive only DEEPSEEK_API_KEY_EXTERNAL for a fail-loud live two-turn smoke on each carrier, while fork and Dependabot heads retain the full keyless path without exposing secrets.

Pin the reusable secret declaration, matrix call, aggregate dependency, untrusted-head condition, and live/keyless commands in the workflow contract test.

Refs #2952.

* docs(testing): make installed wheels the Python CI authority

Record the clean-wheel provenance boundary, complete keyless scenario set, trusted real-API contract, secret handling, and three-target required topology in a new implemented testing decision. Update the SEA distribution and portable-CI authorities plus the Python contributor reference to describe the same current state.

Archive the fully superseded Linux-x64-only decision after consolidating its rationale and alternatives into the new owner. Preserve its bilingual triplet as a sealed historical snapshot and redirect every active current-state reference.

Refs #2952.
2026-08-23 16:53:55 +08:00
imccyu 9f9f160854 Merge pull request #2911 from deepseek-harness/client-session-conversation-chat
refactor(client): split Session Conversation and Chat ownership
2026-08-23 16:36:08 +08:00
imccyu e4fb885f3e chore(client): mark mirrored interaction lifecycle 2026-08-23 16:28:20 +08:00
imccyu 7402ce3fc7 fix(client): settle interactions during plugin teardown 2026-08-23 16:28:20 +08:00
imccyu 61ee176973 docs(client): align split ownership contracts 2026-08-23 16:28:20 +08:00
imccyu 689644463d fix(client): keep conversation updates incremental 2026-08-23 16:28:20 +08:00
imccyu a40f30a4a2 fix(client): preserve scoped UI lifecycles 2026-08-23 16:28:20 +08:00
imccyu 956a72ffe0 fix(client): restore injected workspace dependencies 2026-08-23 16:28:19 +08:00
imccyu 7ddccac0d4 fix(client): remove unused workspace dev dependencies 2026-08-23 16:28:19 +08:00
imccyu 0b6269b50c fixup! refactor(interaction): move Approval and Question into UI owners 2026-08-23 16:28:19 +08:00
imccyu 828cd3f7b1 fix(client): avoid cyclic UI service type imports 2026-08-23 16:28:19 +08:00
imccyu dc92793f10 fix(client): align domain split with repository gates 2026-08-23 16:28:19 +08:00
imccyu f5767ba15e fixup! docs(client): document split ownership 2026-08-23 16:28:18 +08:00
imccyu 55dd6320d2 fixup! refactor(interaction): move Approval and Question into UI owners 2026-08-23 16:28:18 +08:00
imccyu f13fb4daeb docs(client): document split ownership 2026-08-23 16:28:18 +08:00
imccyu 3a23185edb chore(client): align split package graph 2026-08-23 16:28:18 +08:00
imccyu be531688f3 refactor(client): migrate consumers and remove Runtime 2026-08-23 16:28:18 +08:00
imccyu 049170c6d0 refactor(interaction): move Approval and Question into UI owners 2026-08-23 16:28:17 +08:00
imccyu c7d8e32aec refactor(conversation): separate Conversation, Chat, and Trajectory owners 2026-08-23 16:28:17 +08:00
imccyu d231c8777a refactor(ui): add Session and Workspace React adapters 2026-08-23 16:28:16 +08:00
imccyu 1b535f611c refactor(client): extract Store and renderer Slot infrastructure 2026-08-23 16:28:16 +08:00
imccyu 0ea9a456c0 refactor(workspace): move Client ownership into Workspace Controller 2026-08-23 16:28:16 +08:00
imccyu 956730a5fb refactor(session): move Client ownership into Session Controller 2026-08-23 16:28:16 +08:00
imccyu 291a43819a test(web): tolerate responsive transcript reflow 2026-08-23 16:27:09 +08:00
imccyu 8f919cb9ac test: ignore defensive Remote branches 2026-08-23 16:16:06 +08:00
imccyu c5efa5ce9c docs(typert): sync Gateway type excerpt 2026-08-23 16:16:06 +08:00
imccyu d020f60911 docs(typert): refresh Remote output contract 2026-08-23 16:16:06 +08:00
imccyu 2d974b187e perf(api-gateway): skip Remote output decoding 2026-08-23 16:16:06 +08:00
imccyu 4326dd4bca fix(api-session): preserve presenter fast path 2026-08-23 16:16:06 +08:00
imccyu d34be03f7b fix: skip get proxy 2026-08-23 16:16:05 +08:00
imccyu 08d6a215c9 perf(api-session): reuse live tool call arguments 2026-08-23 16:16:05 +08:00
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