Yichen Jiang
f3f1c7a87d
Merge branch 'feat/plugin-mgmt-3-settings' into feat/plugin-mgmt-4-web
...
# Conflicts:
# packages/bundle/web-app/package.json
# packages/client/ui-agent-preset/README.i18n.yaml
# packages/client/ui-agent-preset/README.md
# packages/client/ui-agent-preset/README.zh.md
# packages/client/ui-settings-plugin-inventory/README.md
# packages/client/ui-settings-plugin-inventory/README.zh.md
# packages/client/ui-settings-plugin-manager/README.i18n.yaml
# packages/client/ui-settings-plugin-manager/package.json
# packages/client/ui-settings-plugins/README.i18n.yaml
# packages/client/ui-settings-plugins/README.md
# packages/client/ui-settings-plugins/README.zh.md
2026-09-08 17:02:09 +08:00
Yichen Jiang
6d67daf7df
Merge branch 'feat/plugin-mgmt-2-manager' into feat/plugin-mgmt-3-settings
2026-09-08 16:56:55 +08:00
Yichen Jiang
ca291b0100
docs(plugin-manager): keep the package summaries within the summary budget
...
master now bounds a README Summary at 100 words; the boot group, the plugin
manager, and its host face say the same in fewer. The zh config catalog gains
the paragraph break the merge dropped.
2026-09-08 16:55:27 +08:00
Yichen Jiang
bb408abe28
Merge branch 'feat/plugin-mgmt-1-boot' into feat/plugin-mgmt-2-manager
...
# Conflicts:
# apps/cli/src/bin.ts
# docs/config-catalog.i18n.yaml
# docs/config-catalog.md
# docs/config-catalog.zh.md
# packages/api/remotes/src/client/index.ts
# packages/boot/app-boot/src/index.ts
# packages/boot/app-boot/src/profile.ts
# packages/host/README.i18n.yaml
# packages/host/README.md
# packages/host/README.zh.md
# scripts/verify-package-readme-model-experience.ts
2026-09-08 16:52:09 +08:00
Yichen Jiang
5a9e1760fd
Merge remote-tracking branch 'origin/master' into feat/plugin-mgmt-1-boot
...
# Conflicts:
# apps/cli/src/dump-config.ts
# apps/cli/src/profile-boot.ts
# docs/capability-seams.i18n.yaml
# docs/capability-seams.md
# docs/capability-seams.zh.md
# packages/boot/app-boot/src/profile.ts
# packages/util/launch-environment/tests/launch-environment.spec.ts
# scripts/check-workspace-constraints.ts
# scripts/gen-cordis-catalog.ts
2026-09-08 16:42:34 +08:00
Yichen Jiang
dcbac5ebf2
Merge branch 'feat/plugin-mgmt-3-settings' into feat/plugin-mgmt-4-web
...
# Conflicts:
# packages/boot/app-boot/src/probe.ts
# packages/boot/app-boot/tests/probe.spec.ts
2026-09-08 16:25:29 +08:00
Yichen Jiang
16464f5147
Merge branch 'feat/plugin-mgmt-2-manager' into feat/plugin-mgmt-3-settings
2026-09-08 16:23:34 +08:00
Yichen Jiang
731804affc
Merge branch 'feat/plugin-mgmt-1-boot' into feat/plugin-mgmt-2-manager
...
# Conflicts:
# packages/boot/app-boot/README.i18n.yaml
# packages/boot/app-boot/README.md
# packages/boot/app-boot/README.zh.md
2026-09-08 16:23:03 +08:00
Yichen Jiang
c73d88e4e5
fix(boot): answer user-disabled entries from the profile runtime
...
The inventory keeps dsh-app-boot an optional, type-only peer, so the walk
over an entry's owning groups moves behind ProfileRuntime.userDisables(): a
consumer with the runtime asks it, one without reports composition as before.
The module graph and the cordis catalog follow.
2026-09-08 16:19:42 +08:00
Yichen Jiang
20102bcd52
fix(boot): commit user-disabled rows with the composition and name a user row's trust
...
The runtime's user-disabled row ids now come from the committed composition —
composeProfileStack collects them from the user layers it composed — so a
rejected or half-written patch file no longer makes the list disagree with the
running tree or fail to parse. The inventory attributes a row disabled through
a group the user disabled to the user, through the shared userDisablesEntry
walk, and lists a user-layer row the composition left out under the new user
trust instead of builtin.
2026-09-08 16:13:03 +08:00
Turtle
a04bffb7ed
feat: rank review owners by changed LOC
2026-09-08 15:35:53 +08:00
lsdsjy
0707f4af3e
Merge pull request #3700 from deepseek-harness/fix/open-in-app-ssh
...
fix(open-in-app): hide workspace app actions over SSH
2026-09-08 14:11:41 +08:00
Yichen Jiang
eb2ee55f83
Merge branch 'feat/plugin-mgmt-3-settings' into feat/plugin-mgmt-4-web
2026-09-08 13:16:06 +08:00
Yichen Jiang
cbd835f13e
Merge branch 'feat/plugin-mgmt-2-manager' into feat/plugin-mgmt-3-settings
2026-09-08 13:16:04 +08:00
Yichen Jiang
6605c4de48
feat(plugin-manager): name the profile directory on install-log chunks
...
Every chunk now carries the directory pnpm ran in beside its argv, so a
renderer can say where the install lands. The generated event graph and the
cordis API catalog follow the chunk type.
2026-09-08 13:16:03 +08:00
mektpoy
0dc6ce26d7
Merge remote-tracking branch 'upstream/master' into issue-1424-goal-resume-activation
2026-09-08 12:48:51 +08:00
Turtle
dfae5f0351
Merge pull request #3686 from deepseek-harness/turtle/from-default-profile
...
feat(cli): create custom profiles from shipped templates
2026-09-08 12:45:58 +08:00
Turtle
371dce2469
Merge pull request #3523 from deepseek-harness/turtle/issue-2421-reject-empty-prompt
...
fix(session-controller): reject empty prompts
2026-09-08 11:48:49 +08:00
Yichen Jiang
b327f58108
Merge branch 'feat/plugin-mgmt-3-settings' into feat/plugin-mgmt-4-web
2026-09-08 11:43:11 +08:00
Yichen Jiang
e5892dc40a
Merge branch 'feat/plugin-mgmt-2-manager' into feat/plugin-mgmt-3-settings
2026-09-08 11:41:44 +08:00
Yichen Jiang
43ba51d585
docs(graphs): list app-boot among the consumers of internal/status
...
The contained group now listens for fiber activation, and the generated
event graph names it.
2026-09-08 11:41:17 +08:00
lsdsjy
a8d960ecb6
Merge master into fix/open-in-app-ssh
2026-09-08 11:37:46 +08:00
lsdsjy
7f47954cad
fix(open-in-app,directory-picker): share inherited SSH detection
2026-09-08 11:32:36 +08:00
mektpoy
514f92ba53
Merge remote-tracking branch 'upstream/master' into issue-1424-goal-resume-activation
...
# Conflicts:
# packages/goal/goal/tests/projection.spec.ts
2026-09-08 11:23:08 +08:00
Turtle
a56619d9f7
fix(session): reject empty queue edits
2026-09-08 10:48:32 +08:00
Turtle
ae19d9383b
fix(session-controller): reject empty prompts
2026-09-08 10:47:36 +08:00
HYD@OVERTON
76235ecfb7
docs: align Chinese WSL use cases with English
2026-09-08 09:36:19 +08:00
HYD@OVERTON
a5a9746277
docs: explain Windows and WSL development environments
2026-09-08 00:57:15 +08:00
imccyu
08cfbd8970
chore(api): remove stale session controller file dependencies
2026-09-07 23:13:10 +08:00
imccyu
77690644b5
fix(sidebar): show full file paths and refine split and fullscreen controls
2026-09-07 22:37:45 +08:00
imccyu
4fef2786a9
chore: regenerate catalogs, dependency lock, and translation hashes
2026-09-07 21:29:49 +08:00
imccyu
508831624f
chore(web): assemble Sidebar domains and register workspace packages
2026-09-07 21:29:41 +08:00
imccyu
b67e0a838c
feat(sidebar): add tab navigation, injected information, and fullscreen shell
2026-09-07 21:29:40 +08:00
imccyu
3a85ac6d81
feat(resources): add Client resource registry and retained subscriptions
2026-09-07 21:29:39 +08:00
_Kerman
b0a7d2ce3b
Merge pull request #2672 from deepseek-harness/xtr/durable-inbox-recovery
...
refactor(agent): keep projection-backed Inbox loop-internal
2026-09-07 21:24:32 +08:00
Turtle
267d2f8eb9
Merge remote-tracking branch 'origin/master' into turtle/from-default-profile
...
# Conflicts:
# apps/cli/README.i18n.yaml
# apps/cli/README.md
# apps/cli/README.zh.md
# packages/boot/app-boot/README.i18n.yaml
# packages/boot/app-boot/README.md
# packages/boot/app-boot/README.zh.md
2026-09-07 20:53:53 +08:00
_Kerman
0348599f04
Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2672
...
# Conflicts:
# docs/event-producer-consumer.i18n.yaml
# docs/event-producer-consumer.md
# docs/event-producer-consumer.zh.md
# packages/acp/acp/tests/harness.ts
# packages/api/session-controller/README.i18n.yaml
# packages/api/session-controller/README.md
# packages/api/session-controller/README.zh.md
# packages/api/session-controller/tests/commands-queue-attachment.host.spec.ts
# packages/context/agent-instructions/tests/agent-instructions.e2e.ts
# packages/fs/tool-fs/tests/harness.ts
# packages/preset/agent-presets/tests/invariant.spec.ts
# packages/preset/agent-presets/tests/mount.spec.ts
# packages/preset/agent-presets/tests/remote.spec.ts
# packages/test-support/agent-loop-testkit/package.json
2026-09-07 20:22:24 +08:00
Turtle
dd25e1e6b3
feat(cli): create profiles from shipped templates
2026-09-07 19:58:41 +08:00
07akioni
8d0d729091
Merge master native containment updates into feat/electron
2026-09-07 19:45:55 +08:00
Yichen Jiang
0eff068ec4
Merge branch 'feat/plugin-mgmt-3-settings' into feat/plugin-mgmt-4-web
2026-09-07 18:06:52 +08:00
Yichen Jiang
bff6719fca
Merge branch 'feat/plugin-mgmt-2-manager' into feat/plugin-mgmt-3-settings
...
# Conflicts:
# docs/config-catalog.i18n.yaml
# docs/module-graph.i18n.yaml
2026-09-07 18:06:21 +08:00
Yichen Jiang
7af9c25737
refactor(app-boot): fold the patch-file parser and writer into app-boot
...
The `cordis.patch.yml` parser and the comment-preserving writer are the
Loader's format, not a mechanical primitive: they build on the include
plugin's dialect and the Loader's row types, which no other `util` package
does. They now live in `app-boot` as `src/patch-file.ts`, exported as
`@deepseek-ai/dsh-app-boot/patch-file` with its own bundle entry, so the
agent-preset roster and the plugin manager load them without the boot entry.
`dsh-patch-file` goes, with its README and catalog entries; `yaml` moves into
app-boot's dependencies.
A dozen plugin packages already depend on `dsh-app-boot`, so the roster
joining them costs nothing; the note records why the separate package was
tried and folded back.
2026-09-07 18:05:06 +08:00
pku-xht
0f83a2cdc0
Merge remote-tracking branch 'origin/master' into codex/subprocess-native-containment
2026-09-07 18:02:44 +08:00
ihsiang
9292dd8a2d
feat(workspace): open the workspace in local apps from the web UI ( #3409 )
...
Add the first-party open-in-app host and client packages with a localized Open In menu in the Web Session header.
Resolve installed applications on macOS, Windows, and Linux, launch workspace directories through platform-specific adapters, and remember the selected application.
Closes #1500 .
Co-authored-by: ihsiang <[email protected] >
2026-09-07 17:58:11 +08:00
Yichen Jiang
3af0c5f7fd
Merge branch 'feat/plugin-mgmt-3-settings' into feat/plugin-mgmt-4-web
...
# Conflicts:
# .agents/notes/implemented/architecture/2026-09-04-plugin-manager-over-the-profile-runtime.i18n.yaml
# .agents/notes/implemented/architecture/2026-09-04-plugin-manager-over-the-profile-runtime.md
# .agents/notes/implemented/architecture/2026-09-04-plugin-manager-over-the-profile-runtime.zh.md
# packages/host/plugin-manager/README.i18n.yaml
# packages/host/plugin-manager/README.md
# packages/host/plugin-manager/README.zh.md
# packages/host/plugin-manager/src/index.ts
# packages/host/plugin-manager/tests/plugin-manager.spec.ts
2026-09-07 17:53:20 +08:00
Yichen Jiang
2db66f10f4
Merge branch 'feat/plugin-mgmt-2-manager' into feat/plugin-mgmt-3-settings
...
# Conflicts:
# docs/config-catalog.i18n.yaml
# docs/event-producer-consumer.i18n.yaml
# docs/module-graph.i18n.yaml
2026-09-07 17:48:46 +08:00
Yichen Jiang
7b713ca83b
refactor(plugin-manager): move plugin management out of the Web host
...
What plugin management does now lives in `dsh-plugin-manager`, a boot-group
package beside `app-boot`: `PluginInstaller` runs pnpm, probes, and judges new
packages over the profile on disk, and `PluginManager` adds every operation
over the booted tree, each refusal a `PluginOperationError` with a `plugins/*`
code and no Remote protocol attached. The manager reads the profile runtime,
the preset roster, and the running-agent count through per-call readers, and
the roster only as `PresetLayers`, so the package depends on neither the
roster nor the agent registry.
`dsh-host-plugin-manager` keeps `pluginManager` and the `plugins` Remote as a
relay: one Remote method per manager method, and one exhaustive switch
turning a failure into the Remote error of the same code (`plugins/bad-request`
into `gateway/bad-request`). Its `./types` re-exports the manager's types, so
`api-remotes` and the client import one vocabulary unchanged.
`dsh plugin add` and `remove` now run the installer instead of a bare pnpm
forwarder: every new package is probed, a package that declares neither a
bundle nor a plugin module is removed again with its reason, and newly
installed bundles are enabled as before. Other pnpm verbs still forward.
2026-09-07 17:47:08 +08:00
pku-xht
e9f1b6c53e
Merge remote-tracking branch 'origin/master' into codex/subprocess-native-containment
...
# Conflicts:
# .agents/notes/implemented/architecture/2026-07-16-explicit-turn-cancellation.i18n.yaml
# .agents/notes/implemented/architecture/2026-07-16-explicit-turn-cancellation.md
# .agents/notes/implemented/architecture/2026-07-16-explicit-turn-cancellation.zh.md
# .agents/notes/implemented/architecture/2026-09-05-canonical-feedback-log.i18n.yaml
# .agents/notes/implemented/architecture/2026-09-05-nonofficial-feedback-otel.i18n.yaml
# .agents/notes/implemented/architecture/2026-09-06-embedded-stream-record-readers.i18n.yaml
# .agents/notes/implemented/bug-fix/2026-09-03-normalized-unread-fs-tool-diagnostic.i18n.yaml
# .agents/notes/implemented/bug-fix/2026-09-06-windows-python-console-spawn-wait.i18n.yaml
# .agents/notes/implemented/feature/2026-08-26-generic-file-upload.i18n.yaml
# .agents/notes/implemented/feature/2026-09-07-model-switch-notice.i18n.yaml
# .agents/notes/implemented/process/2026-09-03-semantic-issue-templates-and-policy.i18n.yaml
# packages/shell/bash-local/tests/executor.spec.ts
# packages/subprocess/subprocess-local/README.i18n.yaml
# packages/subprocess/subprocess-local/README.md
# packages/subprocess/subprocess-local/README.zh.md
# packages/subprocess/subprocess-local/src/spawn.ts
# packages/subprocess/subprocess-local/tests/spawn.spec.ts
# packages/subprocess/win32-process/package.json
2026-09-07 17:43:45 +08:00
Yichen Jiang
6a3582fe93
Merge branch 'feat/plugin-mgmt-3-settings' into feat/plugin-mgmt-4-web
2026-09-07 16:32:08 +08:00
Yichen Jiang
89fb3ef083
Merge branch 'feat/plugin-mgmt-2-manager' into feat/plugin-mgmt-3-settings
...
# Conflicts:
# docs/config-catalog.i18n.yaml
# docs/module-graph.i18n.yaml
2026-09-07 16:31:43 +08:00