12410 Commits

Author SHA1 Message Date
Tianyi Cui
7e445c3a67 refactor(session): fold the session family into packages/session/
git mv the 12 packages from session-persistence/, session-projection/,
session-title/, and telemetry/ into one session/ group per the
regrouping RFC; merge the four group READMEs into one bilingual
triplet; rewrite the group segment in tsconfig references (intra-group
references shorten to ../<pkg>), tsconfig.base.json paths/globs,
knip.json keys, vitest include, gate scripts, and authored doc/note
citations; regenerate module graph, doc graphs, catalogs, and the
lockfile importer keys. No npm names change.

Full unit suite: 8779 passed; the 18 reported failures reproduce as
env flakes (ambient-proxy IPv6 tunneling, watched-dir inotify
timeouts under parallel load) — each passes in isolation with
NO_PROXY set, matching their known pre-existing behavior on master.
2026-08-09 01:21:11 +08:00
Tianyi Cui
645fcf5713 docs(agent-note): propose packages/ regrouping by measured clustering
RFC settling the target group map: fold the session family into one
session/ group, dissolve ui/ into interaction/ (+tui), boot/, and the
scaffold/ developer-tooling family (absorbing jsonrpc as server),
merge timeout/ into guard/, and rename cordis/ to self-modification/.
Zero npm renames now; five FIXME-tracked intended renames. Squash of
the reviewed RFC iterations (turtle1999 map corrections applied).
2026-08-09 01:21:10 +08:00
Yichen Jiang
bf31797e95 polish(web): one intro tip naming both ways a preset is created
Copying an existing preset — or drafting one in Creator mode — replaces
the copy-minimal skeleton hint: the creator entry exists now, so the intro
names the two real paths instead of steering everyone at one source.
2026-08-09 01:14:35 +08:00
Tianyi Cui
f3b76e1afa Merge pull request #2072 from deepseek-harness/worktree/fix-e2b-pty-sandbox-policy-test
test(e2b): mount sandbox policy in live PTY composition
2026-08-09 01:13:07 +08:00
Tianyi Cui
047348300a Merge pull request #2069 from deepseek-harness/worktree/auto-i18n-merge-driver
feat(i18n): compose pairing records during merges
2026-08-09 01:12:05 +08:00
Yichen Jiang
236fe9759d test(client): cover the fixture noteAgentPreset write-back; refresh the module graph
The stub's confirmed-switch write-back landed with the header-label work
but nothing exercised it, and the module graph regen after the master
merge had been swallowed by a silenced generator run.
2026-08-09 00:52:38 +08:00
Tianyi Cui
f34b2bb634 ci(e2b): add manual live sandbox workflow 2026-08-09 00:51:56 +08:00
Yichen Jiang
6451ea0ea2 Merge branch 'stack/agent-profiles-5-web-ui' of github.com:deepseek-harness/deepseek-harness into stack/agent-profiles-8-authoring 2026-08-09 00:50:20 +08:00
Tianyi Cui
58b89fb6b4 test(i18n): align merge failure fixtures 2026-08-09 00:50:13 +08:00
Yichen Jiang
9d20922e53 chore(docs): refresh the module graph after the master merge 2026-08-09 00:49:05 +08:00
Yichen Jiang
90d6dbb146 Merge branch 'mergefwd-3-wire' into mergefwd-5-web-ui 2026-08-09 00:48:48 +08:00
Tianyi Cui
9e724dcad7 test(windows): close final native coverage gaps 2026-08-09 00:48:46 +08:00
Yichen Jiang
be01ae9bf4 Merge branch 'stack/agent-profiles-1-seam' into stack/agent-profiles-3-wire 2026-08-09 00:47:42 +08:00
Yichen Jiang
859b5b0396 test(agent-presets): cover the direct mountPreset boundary; refresh the module graph
The exported mountPreset carries its own unscoped-context guard beside the
service's, and the per-file gate wants it exercised where it lives. The
module graph regen after the master merge had been swallowed by a silenced
generator run.
2026-08-09 00:44:27 +08:00
Tianyi Cui
9c13a62702 fix(i18n): preserve merge conflicts without runtime 2026-08-09 00:37:46 +08:00
Tianyi Cui
2f3e8974ec docs(schedule): correct reminder receipt contract 2026-08-09 00:35:40 +08:00
Yichen Jiang
b6bdfc1426 Merge branch 'stack/agent-profiles-5-web-ui' of github.com:deepseek-harness/deepseek-harness into stack/agent-profiles-8-authoring 2026-08-09 00:32:14 +08:00
Yichen Jiang
fb268e0006 Merge branch 'stack/agent-profiles-3-wire' into stack/agent-profiles-5-web-ui 2026-08-09 00:31:05 +08:00
Huanqi Cao
97a62fa639 Merge remote-tracking branch 'origin/feat/windows-pwsh-default' into feat/windows-acl-sandbox
# Conflicts:
#	docs/module-graph.md
#	knip.json
#	packages/pty/pty-local/tests/index.spec.ts
#	scripts/check-workspace-constraints.ts
2026-08-09 00:29:55 +08:00
Yichen Jiang
7507697c92 Merge branch 'mergefwd-1-seam' into mergefwd-3-wire 2026-08-09 00:27:40 +08:00
Yichen Jiang
b5a8a1f722 chore(docs): re-record the packages pairing after the master merge 2026-08-09 00:24:06 +08:00
Yichen Jiang
dbd2d75cad Merge remote-tracking branch 'origin/master' into stack/agent-profiles-1-seam 2026-08-09 00:23:11 +08:00
Huanqi Cao
544290f3b6 Merge remote-tracking branch 'origin/master' into HEAD 2026-08-09 00:22:50 +08:00
Yichen Jiang
43e93c6a67 feat(web): draft a custom preset in a creator-mode session
The settings section gains the conversational authoring entry beside
copying: a dashed add-card (the Models page's affordance) that stages the
self-referential cordis preset and starts a new session on it, closing the
settings panel through the shell's new section owner-prop `close` — the
one shell affordance a section receives, for flows that leave settings.

The seat learns the difference between picking and staging: `select()`'s
immediate apply meets the still-current running session and drops the
stage as unservable, so the entry uses `stage()` and leaves the apply to
the list-change applier that fires when the started session becomes
current. `load()` stops regressing the display when its reply lands after
an applied stage was consumed — staged pick first, then the composition
the current session already carries, then the deployment default.

The authoring lane connects a workspace and drives the gesture to a
composed host session; the section goldens gain the entry.
2026-08-09 00:19:18 +08:00
Yichen Jiang
564337997a feat(ui-primitives): outline-weight folder-open icon
The duotone folder_open_16 reads a rung heavier than the …Outline16 family
— its 20%-opacity inner fill looks filled beside pure-outline neighbors —
so an icon-button row mixing them looks mismatched. Same geometry, outline
layer only; the workspace surfaces keep the duotone original.
2026-08-09 00:15:10 +08:00
Huanqi Cao
db7bcbdf91 test(sandbox): cover the durable-record typeof guards and the empty-workspace branch 2026-08-09 00:06:50 +08:00
Tianyi Cui
b77dbf8ad8 fix(e2b): mount sandbox policy in live PTY test 2026-08-09 00:06:26 +08:00
Tianyi Cui
3d6498e91b test(schedule): provide raw Web session zone 2026-08-09 00:01:59 +08:00
Yichen Jiang
37a75f9b7f docs: regenerate the module graph for client-ui-task
The new package and its dependency edges changed the generated graph;
`verify-module-graph` runs in the CI static gate rather than doc-sync,
so the stale file only surfaced after the push.
2026-08-09 00:00:33 +08:00
Tianyi Cui
35b98fc251 fix(schedule): remove unreachable init guard 2026-08-09 00:00:09 +08:00
Huanqi Cao
18859c408c fix(sandbox): record the dsh-session dependency in the lockfile 2026-08-08 23:59:52 +08:00
Tianyi Cui
d2928584e7 Merge branch 'worktree/ci-native-windows-20260808' into worktree/ci-native-windows-coverage-20260808 2026-08-08 23:57:11 +08:00
Tianyi Cui
e2b7d8ed31 Merge remote-tracking branch 'origin/master' into worktree/ci-native-windows-20260808 2026-08-08 23:57:01 +08:00
Tianyi Cui
176e4c6bbb fix(subagent-codex): verify 0.147 on native Windows 2026-08-08 23:56:39 +08:00
Tianyi Cui
3a518021f6 fix(windows): drain native coverage lifecycles 2026-08-08 23:56:00 +08:00
Yichen Jiang
1d50b2bd26 chore: untrack the local .claude/launch.json and ignore it 2026-08-08 23:45:38 +08:00
Yichen Jiang
e24877e6c8 test(web): keep the layer-4 label rendering in the merged-lane goldens 2026-08-08 23:38:26 +08:00
Yichen Jiang
7313dba2b4 Merge branch 'stack/agent-profiles-5-web-ui' into stack/agent-profiles-8-authoring 2026-08-08 23:37:34 +08:00
Yichen Jiang
d58d3c9747 test(web): re-record the master-lane goldens with the header preset label 2026-08-08 23:35:16 +08:00
Yichen Jiang
9d6342a596 Merge branch 'mergefwd-3-wire' into mergefwd-5-web-ui 2026-08-08 23:34:04 +08:00
Yichen Jiang
921fcc1341 fix(cli): patch the agent-preset roots for every dsh launcher
The roots are an assembly fact (the shipped set beside this app's config,
the user's own under $DSH_HOME) but only `dsh web` patched them in, so the
merged `dsh run` booted the roster with no roots and failed resolving
`standard`. The shared profile boot now owns the patch for every launcher,
and master's interrupt_agent tool joins the standard composition's exact
catalog. The roster helpers the wire layer added (standingKeyFor,
serviceForAgent's chain guards, the direct mountPreset boundary) gain the
unit coverage the per-file gate requires.
2026-08-08 23:33:17 +08:00
Yichen Jiang
eab0aeb9db feat(web): list background tasks in the session header
The task registry has run every background bash, pwsh, pty-send, and
one-shot subagent since it landed, but only the model could read it: a
human at the Web client could not see that a build was running, tell a
finished task from a stuck one, or find its outcome anywhere but the
`run_in_background` tool card that printed an id and never updated.

Task state now reaches the browser as one whole-snapshot `session/tasks`
mux frame per session, pushed at every registry commit that changes what
that session can see. `TaskService` gains `onTasksChanged`, which is
owner-granular because owner-disposal removal is a change no per-task
record can express. The carrier reads the exact owner the listener hands
it, so a push stays correct while that scope tears down, and reads the
baseline through the non-resuming `ctx.agents.get` so listing never
revives a cold session. The client keeps a last-wins mirror on
`SessionListState`, and a new `dsh-client-ui-task` package renders it
beside the subagent catalog — rendering nothing at all until the session
has a task, so an ordinary conversation grows no new chrome.

Streamed per-task output and human-initiated cancellation are separate
phases; the note records why neither has to undo this channel, and why
no Web path may call the consuming `ctx.tasks.read()`.
2026-08-08 23:29:41 +08:00
Tianyi Cui
3fa4c012b1 fix(schedule): reconcile cron stack layer 2026-08-08 23:25:04 +08:00
Tianyi Cui
9f2a6d6fff Merge pull request #1978 from deepseek-harness/worktree/unify-github-label-taxonomy
cleanup: unify GitHub label taxonomy
2026-08-08 23:24:38 +08:00
Huanqi Cao
6478da61e3 fix(sandbox): harden the per-session record and the ACL runner failure paths (review round v6)
Durable record: bound to the owning session id and validated at the fold (orphan-SID shape, temp path inside the host temp root) — a fork's copied parent record no longer provisions the child, and a tampered record fails loud. Private temp dir: random unguessable name persisted in the record, created exclusively (pre-existing entries and reparse points fail EEXIST). Persistence: a fresh provision kicks an immediate flush (no write-behind debounce), narrowing the crash window to the flush latency — documented as the one self-healing gap. Runner-failure rules: exit-gated on 127 so a confined command that prints the signature on a non-127 exit is never misclassified. Spawn: AssignProcessToJobObject failure terminates the suspended child (no hanging orphans). SandboxExecutionPolicy.sessionId is the branded SessionId. Boundary docs: qualifying clause on the absolutist sentences, NULL-DACL Known Limitation, 'full' scoped to the supported NTFS surface, CLM gate comment.
2026-08-08 23:23:38 +08:00
Yichen Jiang
7dad06b771 fix(cli): patch the agent-preset roots for every dsh launcher
The roots are an assembly fact (the shipped set beside this app's config,
the user's own under $DSH_HOME) but only `dsh web` patched them in, so the
merged `dsh run` booted the roster with no roots and failed resolving
`standard`. The shared profile boot now owns the patch for every launcher;
the one-shot transcript header consequently records its composing preset,
and master's interrupt_agent tool joins the standard composition's exact
catalog.
2026-08-08 23:20:55 +08:00
Tianyi Cui
33312c6a89 Merge pull request #796 from deepseek-harness/worktree/e2b-poc-20260727
feat(e2b): add one-sandbox FS/subprocess POC
2026-08-08 23:15:49 +08:00
Tianyi Cui
75f550c5c8 docs(schedule): restore package index contract 2026-08-08 23:12:15 +08:00
Yichen Jiang
deb7344383 test(web): re-record the skill-user-invoke golden with the header preset label 2026-08-08 23:08:04 +08:00
Tianyi Cui
364e6fae0f fix(schedule): reconcile absolute-time stack layer 2026-08-08 22:59:28 +08:00