Commit Graph
234 Commits
Author SHA1 Message Date
Yichen Jiang 6d65c12ef2 Merge remote-tracking branch 'origin/master' into worktree/process-plugin-streaming-72f9b3
# Conflicts:
#	packages/client/ui-jobs/package.json
2026-09-03 11:30:41 +08:00
imccyu a66e470204 release(dsh): 0.1.2-rc.1 2026-09-03 02:27:19 +08:00
Yichen Jiang 7ec142a325 refactor(jobs): move job observation into api-job-controller
Review asked for the observation wire and its client service to leave
session-controller: a job should reach the Host only through its own
Remote namespace, and the session plugin's apply had to materialize
{ $stream, session } for a service that is not session state.

@deepseek-ai/dsh-api-job-controller now owns the Host JobController
(job.observe over ctx.jobs, requiring the agent and job registries) and
the client ClientJobOutput (ctx.jobOutput) over ClientJobOutputModel,
resolving both Remote faces in its own apply. The remotes assembly
mounts the job namespace; ui-jobs injects the new package; the wire
types drop their Session prefix and spell the status union out so the
client face pulls no Host declaration merges into browser programs.
session-controller keeps the jobsBySession roster and loses observe-job,
job-output, and the observe cadence config.

ui-chat's slots and snapshot-builder import CommandNode and friends from
the declaring package: the typert analyzer's cross-package rule trips on
the snapshot re-export as soon as another client face joins the root
Client program (the new controller does), which is why this branch
carried the change before. JobPumpSource documents why it is an offset
snapshot reader rather than a Node.js Readable.
2026-09-02 22:53:36 +08:00
Yichen Jiang 4db24c642d Merge remote-tracking branch 'origin/master' into worktree/process-plugin-streaming-72f9b3
# Conflicts:
#	docs/config-catalog.i18n.yaml
#	docs/config-catalog.md
#	docs/config-catalog.zh.md
#	packages/client/ui-chat/src/client/contract/slots.ts
#	packages/client/ui-chat/src/client/conversation-nodes/chat-snapshot-builder.ts
#	packages/client/ui-jobs/package.json
#	packages/extensions/cordis-client-runner/src/client/slot-catalog.ts
2026-09-02 22:04:03 +08:00
imccyu db6bdc3576 release(dsh): 0.1.2-alpha.5 2026-09-02 15:48:33 +08:00
imccyu a9e185f205 release(dsh): 0.1.2-alpha.4 2026-09-01 23:19:57 +08:00
Yichen Jiang 891b45bf7f Merge branch 'master' into worktree/process-plugin-streaming-72f9b3
Absorbs the repo-wide no-op invariant companion removal (ui-jobs loses its
placeholder companion, export, and devDep), the 0.1.2-alpha.3 release bump,
and the tool-subagent-report package retirement; regenerates the client slot
catalog for the shifted contract line numbers.
2026-09-01 20:22:52 +08:00
Yichen Jiang 0dca00b425 refactor(api,client)!: delete the activity plane; one job roster with record observation
packages/activity/* and packages/api/activity-controller are removed. The
web roster is the session control stream's jobs frames alone; per-job output
observation rides session.observeJob and the client ctx.jobOutput service.
ui-activity returns to its upstream name ui-jobs and renders the single
roster — a row is expandable exactly when its job declared a record
(outputTotal present). Composition rows, dependency-policy exemptions,
tsconfig aliases and references, generated catalogs, and the docs pages
follow; the activity subsystem page is deleted and the jobs page gains the
record contract. The superseding Agent Note records the decision and points
the three prior notes at it.
2026-09-01 18:22:04 +08:00
Dudu-0223 4093ce465b Merge remote-tracking branch 'origin/master' into feat/3220-steer-service 2026-09-01 13:46:35 +08:00
Turtle d68ff7e66f Merge remote-tracking branch 'origin/master' into turtle/omit-unneeded-invariants
# Conflicts:
#	docs/module-graph.i18n.yaml
#	docs/module-graph.md
#	docs/module-graph.zh.md
#	packages/session/session-projection/src/invariant.ts
#	tsconfig.base.json
2026-09-01 11:18:11 +08:00
imccyu 14bab4422b release(dsh): 0.1.2-alpha.3 2026-08-31 23:39:37 +08:00
Yichen Jiang 7e2eacb1fe feat(session-turn-outline): whole-log turn outline projection
New turnOutline projection unit serving every started turn's number,
turn/start seq, and bounded first-prompt preview through the
session-projection seam, mounted in the web-app bundle for the chat
turn rail. Entries stay strictly increasing; previews mirror the rail's
loaded-turn preview budget.
2026-08-31 19:46:53 +08:00
Turtle b8e3b32fcf Merge master into codex/omit-unneeded-invariants 2026-08-31 14:38:55 +08:00
Yichen Jiang 6b2cc74984 Merge remote-tracking branch 'origin/master' into worktree/process-plugin-streaming-72f9b3
# Conflicts:
#	docs/config-catalog.i18n.yaml
#	docs/config-catalog.md
#	docs/config-catalog.zh.md
#	docs/event-producer-consumer.i18n.yaml
#	docs/module-graph.i18n.yaml
#	docs/module-graph.md
#	docs/module-graph.zh.md
#	packages/api/remotes/package.json
#	packages/client/ui-activity/package.json
#	packages/workflow/tool-workflow/src/index.ts
2026-08-31 11:18:10 +08:00
imccyu 3f1b46a5db release(dsh): 0.1.2-alpha.2 2026-08-30 21:19:29 +08:00
Dudu-0223 b91e7ce366 Unify adjacent Agent messaging 2026-08-30 14:14:46 +08:00
imccyu 9135a13a8b refactor(consumers): remove cross-package runtime relays 2026-08-30 02:29:52 +08:00
Yichen Jiang 70311bc517 Merge remote-tracking branch 'origin/master' into worktree/process-plugin-streaming-72f9b3
# Conflicts:
#	docs/architecture.i18n.yaml
#	docs/config-catalog.i18n.yaml
#	docs/event-producer-consumer.i18n.yaml
#	docs/module-graph.i18n.yaml
#	docs/module-graph.md
#	docs/module-graph.zh.md
#	knip.json
#	packages/bundle/web-app/cordis.patch.yml
#	packages/bundle/web-app/package.json
#	packages/client/README.i18n.yaml
#	packages/client/README.md
#	packages/client/README.zh.md
#	packages/extensions/cordis-client-runner/src/client/slot-catalog.ts
#	packages/shell/tool-bash/package.json
#	packages/shell/tool-pwsh/package.json
#	packages/workflow/tool-workflow/package.json
#	scripts/verify-package-readme-model-experience.ts
#	tsconfig.base.json
#	tsconfig.client.json
2026-08-28 17:29:41 +08:00
Turtle 15f2997bcb cleanup: omit unneeded invariant companions 2026-08-28 13:12:52 +08:00
Yichen Jiang d4683d5552 Merge remote-tracking branch 'origin/master' into worktree/process-plugin-streaming-72f9b3
# Conflicts:
#	docs/capability-seams.i18n.yaml
#	docs/capability-seams.md
#	docs/capability-seams.zh.md
#	docs/config-catalog.i18n.yaml
#	docs/event-producer-consumer.i18n.yaml
#	docs/module-graph.i18n.yaml
#	docs/module-graph.md
#	docs/module-graph.zh.md
#	packages/bundle/web-app/cordis.patch.yml
#	packages/bundle/web-app/package.json
#	packages/client/ui-activity/package.json
#	packages/workflow/tool-workflow/README.i18n.yaml
2026-08-28 10:14:49 +08:00
pku-xht 1a5d004524 Merge commit 'bc954280ae67e349291e51e5787c6987e767fa40' into schedule-web-catalog
# Conflicts:
#	packages/client/ui-workspace/src/client/rows/Rows.tsx
#	tsconfig.base.json
2026-08-28 07:24:24 +08:00
imccyu 6c705be1ce release(dsh): 0.1.2-alpha.1 2026-08-28 00:50:12 +08:00
Tianyi Cui 409f9ee304 fix: repair merged README remnants and note links after the master rebase
Apply the rename pass to READMEs and docs the master sweep rewrote, fix
PTC mode anchors and the renamed-note links in the spill READMEs, and
regenerate the doc graphs.
2026-08-27 23:14:33 +08:00
Tianyi Cui 3ca9c7d489 rename code-mode to ptc (PTC mode), except session-persistent vocabulary
Rename the tool-presentation transport from code-mode to ptc everywhere
that is not written into session logs: the mode config value becomes 'ptc',
the preset directory/id becomes ptc, the demo becomes demo:ptc, the
dispatch waterfall becomes tools/ptc-dispatch-log (types PtcDispatch*), the
prompt rule becomes tools:ptc-only, source/test files become ptc.ts etc.,
and prose says PTC mode / PTC 模式. The session-persistent vocabulary
(durable events tool/code-dispatch*, logged plugin name tools-code-mode,
sub-call id segment :code:) intentionally stays and moves in the stacked
persistence PR, which is blocked until the SESSION_FORMAT_VERSION v0→v1
migration lands with it. run_code, its code parameter, CodeSdkLanguage,
CodeRunFailedError, the dsh-code-runtime family, third-party codex names,
and frozen archived notes keep their names.
2026-08-27 23:14:31 +08:00
imccyu 4f00a8b82a refactor(api): remove ApiProxy package 2026-08-27 22:26:29 +08:00
Yichen Jiang ab75fe2bb6 Merge remote-tracking branch 'origin/master' into worktree/process-plugin-streaming-72f9b3
# Conflicts:
#	docs/capability-seams.i18n.yaml
#	docs/capability-seams.md
#	docs/capability-seams.zh.md
#	docs/config-catalog.i18n.yaml
#	docs/config-catalog.md
#	docs/config-catalog.zh.md
#	docs/event-producer-consumer.i18n.yaml
#	docs/module-graph.i18n.yaml
#	docs/module-graph.md
#	docs/module-graph.zh.md
#	knip.json
#	packages/api/remotes/src/client/index.ts
#	packages/api/remotes/tsconfig.client.json
#	packages/bundle/web-app/package.json
#	packages/client/ui-chat/src/client/contract/slots.ts
#	packages/client/ui-chat/src/client/conversation-nodes/chat-snapshot-builder.ts
#	packages/client/ui-primitives/README.i18n.yaml
#	packages/client/ui-subagent/README.i18n.yaml
#	packages/extensions/cordis-client-runner/src/client/slot-catalog.ts
#	scripts/gen-doc-graphs.ts
#	tsconfig.client.json
#	tsconfig.host.json
2026-08-27 20:03:20 +08:00
Dudu-0223 f887a8f907 fix(web): move subagent model switch to Plugins 2026-08-27 12:00:01 +08:00
pku-xht 86fa9f512b Merge origin/master into schedule-web-catalog 2026-08-27 05:26:09 +08:00
imccyu dd70c0c88d feat(api): serve settings through Remote controllers 2026-08-27 03:00:49 +08:00
Yichen Jiang c8c3540f15 Merge remote-tracking branch 'origin/master' into worktree/process-plugin-streaming-72f9b3
# Conflicts:
#	docs/capability-seams.i18n.yaml
#	docs/capability-seams.md
#	docs/capability-seams.zh.md
#	packages/bundle/web-app/package.json
#	packages/client/README.i18n.yaml
#	packages/client/README.md
#	packages/client/README.zh.md
#	packages/client/ui-activity/README.i18n.yaml
#	packages/client/ui-chat/src/client/conversation-nodes/retry.ts
#	packages/client/ui-jobs/README.md
#	packages/client/ui-jobs/README.zh.md
#	packages/client/ui-primitives/README.i18n.yaml
#	packages/client/ui-primitives/README.md
#	packages/client/ui-primitives/README.zh.md
#	packages/client/ui-subagent/README.i18n.yaml
#	packages/client/ui-subagent/README.md
#	packages/client/ui-subagent/README.zh.md
#	packages/jobs/jobs/README.i18n.yaml
#	packages/jobs/jobs/README.md
#	packages/jobs/jobs/README.zh.md
#	packages/shell/shell/README.i18n.yaml
#	packages/shell/shell/README.md
#	packages/shell/shell/README.zh.md
#	packages/shell/tool-bash/README.i18n.yaml
#	packages/shell/tool-bash/README.md
#	packages/shell/tool-bash/README.zh.md
#	packages/shell/tool-pwsh/README.i18n.yaml
#	packages/shell/tool-pwsh/README.md
#	packages/shell/tool-pwsh/README.zh.md
#	packages/workflow/tool-workflow/README.i18n.yaml
#	packages/workflow/tool-workflow/README.md
#	packages/workflow/tool-workflow/README.zh.md
2026-08-26 10:17:30 +08:00
pku-xht 673aeb65af Merge commit 'a75a281deadcd90a3841bdd2efebbbbfd68696fc' into schedule-web-catalog
# Conflicts:
#	docs/config-catalog.i18n.yaml
#	docs/config-catalog.md
#	docs/config-catalog.zh.md
#	docs/subsystems/session-projection.i18n.yaml
#	docs/subsystems/session-projection.md
#	docs/subsystems/session-projection.zh.md
#	packages/client/README.i18n.yaml
#	packages/client/README.md
#	packages/client/README.zh.md
#	packages/extensions/tool-cordis/src/api-catalog.ts
#	packages/schedule/README.i18n.yaml
#	packages/schedule/README.md
#	packages/schedule/README.zh.md
#	packages/schedule/schedule/README.i18n.yaml
#	packages/schedule/schedule/README.md
#	packages/schedule/schedule/README.zh.md
#	packages/session/session-projection-cache/README.i18n.yaml
#	packages/session/session-projection-cache/README.md
#	packages/session/session-projection-cache/README.zh.md
#	packages/session/session-projection-cache/src/index.ts
#	packages/session/session-projection-cache/src/spec.ts
#	packages/session/session-projection-cache/tests/cache.spec.ts
#	packages/session/session-projection/README.i18n.yaml
#	packages/session/session-projection/README.md
#	packages/session/session-projection/README.zh.md
2026-08-26 00:51:57 +08:00
Magolor 0b5eba0c8d docs: rebuild the documentation skill and standards (#2983) 2026-08-25 23:47:20 +08:00
pku-xht 907457580f Merge origin/master into schedule-web-catalog 2026-08-25 20:46:07 +08:00
pku-xht 2a9b940ef5 feat(web): list active reminders in the session header 2026-08-25 18:50:50 +08:00
Yichen Jiang 5ee10b3ebd Merge remote-tracking branch 'origin/master' into worktree/process-plugin-streaming-72f9b3
# Conflicts:
#	packages/client/ui-chat/src/client/chat/ContextInjectionRow.tsx
2026-08-25 16:50:24 +08:00
_Kerman 38355623a2 Merge remote-tracking branch 'origin/master' into xtr/projection-per-session-cache
# Conflicts:
#	packages/bundle/web-app/README.i18n.yaml
#	packages/bundle/web-app/README.md
#	packages/bundle/web-app/README.zh.md
2026-08-25 14:45:03 +08:00
_Kerman b588675ccf Merge remote-tracking branch 'origin/master' into xtr/projection-per-session-cache
# Conflicts:
#	pnpm-lock.yaml
2026-08-25 14:40:22 +08:00
Yichen Jiang 5cd435e917 Merge remote-tracking branch 'origin/master' into worktree/process-plugin-streaming-72f9b3
# Conflicts:
#	docs/config-catalog.i18n.yaml
#	docs/config-catalog.md
#	docs/module-graph.i18n.yaml
#	docs/module-graph.md
#	docs/module-graph.zh.md
#	packages/client/ui-chat/src/client/contract/slots.ts
#	packages/shell/tool-pwsh/package.json
#	packages/workflow/tool-workflow/src/index.ts
#	python/sdk-runtime/package.json
2026-08-25 14:36:33 +08:00
Tianyi Cui 9c964848cd fix(web): keep browser authentication synchronous 2026-08-25 14:23:47 +08:00
Tianyi Cui 3b3b493a96 fix(web): retain launch token across reloads 2026-08-25 14:23:46 +08:00
Tianyi Cui ce031ddd16 fix(web): cover authenticated host runtimes 2026-08-25 14:23:46 +08:00
Tianyi Cui 3e24087bfa fix(web): authenticate the browser Host API 2026-08-25 14:23:45 +08:00
Yichen Jiang 8020f6386d docs(system-prompt): sync first-party order references 2026-08-25 12:05:38 +08:00
Yichen Jiang 61aadb3abf feat(activity): one session-header task list joining jobs with their activities
Browser acceptance of the activity panel surfaced the product problem: a
background bash registers in both planes, so the header grew two near-
identical popovers — "background jobs" with lifecycle and duration,
"activities" with live output — listing the same work twice.

The service planes stay orthogonal (jobs: model-visible control with a
consuming read cursor; activities: transient non-consuming observation).
The join happens per row in the UI projection instead:

- dsh-client-ui-activity renders the single merged "tasks" list. Each
  jobsBySession row joins the activity carrying its correlation.jobId —
  the job supplies identity, lifecycle (stopping exists only there),
  duration, and the model-visible detail; the activity supplies the
  expandable live-output panel. Standalone activities (workflow runs)
  keep their own rows; without the activity registry, job rows still
  render and the control degrades to the old job list exactly.
- dsh-client-ui-jobs is deleted (pre-release, no shim); the merged entry
  takes its slot order. The job locale namespace folds into activity.
- User-facing copy says "task" (任务): N tasks running / N 个任务进行中.
- Hierarchy: live rows first as two lines (label over kind badge and
  status, ticking duration), a Finished divider when both sections
  exist, settled rows compacted to one de-emphasized line, and the
  output panel hangs behind a spine under its row.

Deliberately not joined: subagent rows stay bare (the subagent panel is
their surface) and foreground commands stay in tool cards.

Both web e2e scenarios now assert one Tasks list; the background-job
scenario's row gained a live-output panel, proving the join end to end.
Agent Note: 2026-08-25-unified-task-list.
2026-08-25 11:58:43 +08:00
Yichen Jiang 43ac97b554 fix(system-prompt): centralize sparse section orders 2026-08-25 11:06:01 +08:00
_Kerman 3c8b5a26a4 Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2781
# Conflicts:
#	docs/config-catalog.i18n.yaml
#	docs/config-catalog.md
#	docs/config-catalog.zh.md
#	docs/event-producer-consumer.i18n.yaml
#	docs/event-producer-consumer.md
#	docs/event-producer-consumer.zh.md
#	docs/subsystems/session-projection.i18n.yaml
#	docs/subsystems/session-projection.md
#	docs/subsystems/session-projection.zh.md
#	packages/api/session-controller/src/history.ts
#	packages/api/session-controller/tests/session-cold.host.spec.ts
#	packages/extensions/tool-cordis/src/api-catalog.ts
#	packages/session/session-projection-cache/src/index.ts
#	packages/session/session-projection-cache/tests/cache.spec.ts
#	packages/session/session-projection/src/index.ts
#	scripts/run-gates.ts
2026-08-25 10:52:45 +08:00
imccyu 08ed5a54a8 refactor(webserver): minimize HTTP gzip integration 2026-08-25 06:43:24 +08:00
Yichen Jiang 4a79310339 feat(activity): optional live-output observation seam with a web viewer
Add the activity capability seam: ctx.activities is a pure observation
plane where long-running work (background bash/pwsh, workflow runs) opens a
handle, appends transient output into a byte-offset ring buffer, and settles
exactly once. Nothing model-visible changes: reads are non-consuming and
lossy-by-design (absolute UTF-8 offsets survive eviction and report gaps),
correlation carries {callId, jobId}, and visibility is owner-fenced like jobs.

The seam is strictly optional. Producers tap it through ctx.get('activities')
and contain every observation failure, so an unregistered or broken registry
never affects the underlying job (proven by broken-registry tests).

Ship the full path in one change:
- @deepseek-ai/dsh-activity: Service Definition, pumpActivityOutput pull
  substrate, invariant companion; dsh-activity-local: ring-buffer provider
  with retention config and owner cleanup.
- shell: ShellProcess.observed exposes non-consuming stdout/stderr readers;
  tool-bash/tool-pwsh mirror background jobs into activities.
- tool-workflow: phase/log/agent lines mirrored as a workflow activity.
- api-activity-controller: Typert Remote control (roster baseline+buckets)
  and observe (opened/output/status frames, coalesced and byte-capped)
  streams plus the client feed service with reference-counted observation.
- ui-activity: session-header action rendering live output through
  TerminalBlock, which now shows output while a command is still running.

Docs: activity subsystem page, architecture row, regenerated catalogs, and
the Agent Note (2026-08-24-activity-observation-seam), all bilingual. A
keyless web e2e replays a real run_in_background stream to ARIA goldens.
2026-08-24 22:40:14 +08:00
Dudu-0223 f76a225a7d Merge pull request #2663 from deepseek-harness/feat/subagent-provider
让 subagent 按需发现并选择子 Agent 模型
2026-08-24 18:23:42 +08:00
_Kerman 334dd53c92 Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2781
# Conflicts:
#	.agents/notes/proposed/architecture/2026-07-28-storage-root-and-derived-medium-recovery.i18n.yaml
#	.agents/notes/proposed/architecture/2026-07-28-storage-root-and-derived-medium-recovery.md
#	.agents/notes/proposed/architecture/2026-07-28-storage-root-and-derived-medium-recovery.zh.md
#	docs/event-producer-consumer.i18n.yaml
#	docs/event-producer-consumer.md
#	docs/event-producer-consumer.zh.md
#	packages/api/session-controller/tests/session-cold.host.spec.ts
#	packages/bundle/web-app/package.json
#	packages/host/apiproxy/src/api-proxy.ts
#	packages/session/session-projection-cache/package.json
2026-08-24 15:13:10 +08:00