dsh-creator-mode-plus 0.3.8 → 0.3.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/AGENTS.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # Creator Mode+ repository orders
2
2
 
3
+ ## 不可跨越:只开发插件,不改 DSH 源码
4
+
5
+ DSHX 与 Creator Mode+ 只用于独立外部插件。官方 Harness 源码、内置插件、内置预设、官方包及其构建产物均为只读;本机工作树、临时副本、Git worktree、node_modules 链接和安装目录遵守同一规则。
6
+
7
+ 禁止为插件补 Host 接口、改核心实现、替换官方文件、应用 Host 源码补丁,或让插件构建重新编译官方子项目。需要“先改 Host 才能完成”的方案不成立:先找公开扩展点,在插件内实现;接口确实缺失时报告具体能力缺口,并完成其余插件工作。不要把核心修改包装成兼容修复、临时验收或交付前提。
8
+
9
+ 插件开发授权、用户确认接管、自动审批、交接包中的“必要时补 Host”、`--force` 都不能解除此规则。外部监督者同样受约束。不要为此请求一次性豁免。用户自己的 profile 的 watched `cordis.patch.yml` 是配置扩展,与修改官方源码的 `.patch` 完全不同;插件包、插件自己的构建目录、用户预设和正式插件安装配置仍可按已授权流程操作。
10
+
11
+ 看到 `CORE_SOURCE_IMMUTABLE` 就调整插件方案;不得换 shell、脚本、路径、复制目录或其他 Agent 绕过。只能读取官方实现和公开 API,所有插件构建输出都留在插件目录。
12
+
13
+
3
14
  This repository contains only the DSH-side fixed bridge and its user preset. DSHX outside the Host is the supervisor. Official DeepSeek Harness runtime source outranks this repository when contracts disagree.
4
15
 
5
16
  Read [docs/bridge-contract.md](docs/bridge-contract.md) and [docs/dshx-v0.7-alignment.md](docs/dshx-v0.7-alignment.md) before changing tool arguments, lifecycle behavior, compatibility ranges, installation, migration, or Harness-update guidance.
@@ -8,21 +19,22 @@ Read [docs/bridge-contract.md](docs/bridge-contract.md) and [docs/dshx-v0.7-alig
8
19
 
9
20
  - Keep the model-facing surface to the ten named tools, including `dshx_hot_reload` and the session-bound `dshx_browser_open`. Every argument must remain schema-bounded and independently allowlisted in `src/runner.js`. Test the exact argv behind all ten tools; a registration-only test is insufficient.
10
21
  - `dshx_hot_reload` accepts only a claimed plugin id. Derive Host/profile/port and session provenance inside the bridge. Require checked same-PID replacement and disposal evidence; it grants no shell, arbitrary path, or process-control authority. Module replacement never proves feature behavior.
11
- - Require the complete stable DSHX `>=0.7.8 <0.8.0` contract, not only a matching version string. Atomic same-Home Host discovery/attach, identity-bound start/restart/update gates, isolated verification Home, Creator, watched-plugin removal, external safe profile-bundle removal, proactive Guardian integrity quarantine, RC2 boot-manifest activation, managed-shell, Harness Update Assistant, and their knowledge contracts must be present before the bridge or installer mutates anything.
22
+ - Require the complete stable DSHX `>=0.9.1 <0.10.0` contract, not only a matching version string. The desk pin is official `dsh-v0.2.0-rc.2` at `639ed015397290b3745d163aafe02ffee4aa3f84`. DSHX 0.9.0 and 0.7.9 stay outside this gate. Atomic same-Home Host discovery/attach, identity-bound start/restart/update gates, isolated verification Home, Creator, watched-plugin removal, external safe profile-bundle removal, proactive Guardian integrity quarantine, RC2 profile/manifest activation, managed-shell, Harness Update Assistant, and their knowledge contracts must be present before the bridge or installer mutates anything.
12
23
  - Preserve bridge-v2 provenance: session id comes from `exec.agent.id`, not model input. Claim one plugin per session before any named operation; different plugins may run concurrently, while the same plugin fails closed for a second owner.
13
24
  - Preserve workspace provenance: scaffold destination comes from `exec.agent.session.header.cwd`, never model input. If the Harness plugin path is outside that workspace, DSHX owns the atomic source-plus-symlink transaction.
14
- - Preserve automatic session-start Guardian arm, agent-dispose claim release, adopted-launcher lifetime tracking, exact-session recovery steering, and incident acknowledgement. Never register or wrap Host signal handlers.
25
+ - Preserve automatic `agent/created` Guardian arm (the replacement for the removed `agent/session-start`), agent-dispose claim release, adopted-launcher lifetime tracking, exact-session recovery steering, and incident acknowledgement. Recovery stays fire-and-forget so a failure cannot reject session creation. Never register or wrap Host signal handlers.
15
26
  - Keep Host start, stop, restart, arbitrary shell, arbitrary argv, paths, profile selection, and ports outside model input.
16
27
  - Treat App, direct CLI, and dshx as launchers for one long-lived Web Host per `DSH_HOME`. Duplicate/unknown Host visibility fails closed; isolated verification must never be retained.
17
28
  - Keep Harness `update prepare`, `verify`, `apply`, and `rollback` outside the Creator session. DSHX v0.7 permits only read-only `update plan` from a managed shell; this does not become a bridge update tool.
18
29
  - Preserve the ordered `activate-new-client` DSHX operation; profile linking and resolution happen before watched-patch mutation.
19
30
  - Preserve the `dshx_remove_plugin` order: quarantine/remove the watched Host row, prove same-PID absence, use the official profile remover while the dependency exists, prove dependency/link absence, and detach only target-verified plugin-owned symlinks. Partial attempts resume from durable quarantine without rerunning package removal for an already-absent dependency. Preserve source and never expose recursive source deletion.
20
31
  - Keep boot-captured bundle removal outside the ten-tool bridge. Creator Mode+ may hand it to external `dshx plugin remove`, but must never expose that command through the managed shell or reinterpret it as `dshx_remove_plugin` watched-row success.
21
- - Keep the preset-scoped bash guard narrow: block claimed plugin-root, Harness-link, and active-profile teardown while allowing ordinary file/component cleanup inside a plugin. Guardian must independently quarantine a claimed watched row when its profile link disappears.
32
+ - Keep the teardown guard narrow, alongside the independent core-source write guard: block claimed plugin-root, Harness-link, and active-profile teardown while allowing ordinary file/component cleanup inside a plugin. Guardian must independently quarantine a claimed watched row when its profile link disappears.
22
33
  - Keep Host recovery outside DSH and bounded to one restart plus a crash-loop fuse. Official client-Loader recovery must remain same-origin, Host-stamped, uniquely attributed, quarantined before reload, and separate from arbitrary render/visual/function failures. Never expose internal `creator watch/release/disarm/client-failure/recovery` argv as model inputs.
23
34
  - Treat preset generations as concurrent. Any process-global route or resource must use a Host-scoped lease shared across independently loaded module generations, and must have a regression test that mounts two generations before either is disposed.
24
35
  - A managed upgrade that does not change `agent.cordis.yml` bytes must preserve that file's exact filesystem stamp. Do not retrigger preset generation for skill, metadata, or bundled-asset-only changes.
25
36
  - Route structured outcomes by scope. A checked server with only module-HMR evidence pending returns HOT_RELOAD_READY and its next fixed action. Browser-adapter failures block browser verification, not independent activation. Real source, ownership, authentication and Host-identity failures block their dependent operation.
37
+ - Keep the undeployed sealed-executor integration explicitly opt-in with developmentExecution; the shipped preset uses the established fixed bridge and existing Host approval stack. An opted-in integration retains all of its provenance, cancellation and fail-closed behavior.
26
38
  - Edit only this package and user-owned presets. Never patch Harness core or shipped presets.
27
39
  - Retain source, Host, client-manifest, page-load, and visual evidence internally. User-facing updates state plugin completion, verified features and remaining work; expose operational details only for a user question or required user action.
28
40
 
@@ -38,3 +50,7 @@ boolean is not confirmation. A Host-lifetime, durable ownership fence blocks
38
50
  all tools in revoked old sessions except status and a new takeover request;
39
51
  this is separate from the narrow destructive-shell guard. It persists across
40
52
  preset generations, and never deletes session locks or restarts the Host.
53
+
54
+ ## Release and local synchronization
55
+
56
+ A formal release includes matching main/tag/GitHub Release and npm version/dist-tag, downloaded artifact verification, and intended local plugin/preset installation. Verify DSHX CLI/skill targets and Creator bridge compatibility. Preserve unchanged preset composition stamps and running Hosts; new skill bytes require existing Agent conversations to re-read their guidance.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,46 @@
1
+ # Unreleased
2
+
3
+ ## 0.3.12 — 2026-09-30
4
+
5
+ - Align Creator+ guidance with DSHX 0.9.5 and RC2 profile/client graph HMR.
6
+ - Explain local bundle installation without npm and preserve the claimed plain-plugin fixed-tool path for Web/Desktop.
7
+ - Keep bridge arguments, claims, Desktop tickets and Guardian recovery unchanged; verify the existing fixed tools against DSHX 0.9.5.
8
+
9
+
10
+ ## Unreleased
11
+
12
+ - Align the desk pin with Harness `dsh-v0.2.0-rc.1` (SHA `4878cdabd87d4041bdaff61d04c966883b9fd07a`). Keep DSHX `>=0.9.1 <0.10.0`; 0.9.2 fits, and 0.9.0 and 0.7.9 stay rejected.
13
+ - Set `@deepseek-ai/dsh`, `@deepseek-ai/dsh-app-boot`, and `@deepseek-ai/dsh-plugin-manager` peers to `>=0.2.0-rc.1 <0.2.1`. That range accepts `0.2.0-rc.1` and stable `0.2.0`, rejects `0.2.0` alphas, and rejects `0.1.7-rc.2`.
14
+ - Keep the ten fixed tools and the runner allowlist. Package version stays 0.3.10 until a release.
15
+ - Fix Creator shell guards reading sandbox policy and shell capabilities through undeclared Agent contexts. Resolve them through live injected service scopes and keep failing closed when dependencies disappear.
16
+ - Report `CREATOR_SANDBOX_UNAVAILABLE` for unavailable policy wiring instead of mislabeling normal plugin commands as official-source writes.
17
+ - Add native Agent + real sandbox Git commit/tag/push regression tests, including protected core writes, policy changes and dependency replacement.
18
+
19
+ - Add user-confirmed plugin takeover in the current conversation, durable old-session fencing, owned job/terminal draining, and atomic DSHX ownership transfer.
20
+
1
21
  # Changelog
2
22
 
23
+ ## 0.3.10 - 2026-09-24
24
+
25
+ - Align Creator Mode+ with Harness `dsh-v0.1.7-rc.2` (SHA `477b4f420553e8a52c2fbccc464d7561b239c443`) and DSHX `>=0.9.1 <0.10.0`. Reject DSHX 0.9.0 and 0.7.9; those pins stay on `dsh-v0.1.7-rc.1`.
26
+ - Keep the optional peer `@deepseek-ai/dsh` at `>=0.1.7-rc.1 <0.1.8`. That range accepts `0.1.7-rc.2`.
27
+ - Keep the ten fixed tools. Read-only `dshx update plan` passes `--target dsh-v0.1.7-rc.2`. An omitted target on DSHX 0.9.1 stays on that tag and does not follow a later alpha.
28
+ - Attest `DESK_HARNESS_TAG` and `DESK_HARNESS_SHA` before the bridge or installer mutates anything.
29
+
30
+ ## 0.3.9 - 2026-09-23
31
+
32
+ - Align Creator Mode+ with Harness `dsh-v0.1.7-rc.1` and DSHX `>=0.7.9 <0.8.0`. Declare optional peer `@deepseek-ai/dsh` `>=0.1.7-rc.1 <0.1.8`.
33
+ - Deliver recovery on `agent/created`. The listener stays fire-and-forget so a recovery failure cannot reject session creation. `agent/session-start` is gone.
34
+ - Install the user preset as a Web profile include of an `@deepseek-ai/dsh-agent-preset` declaration derived from `packages/bundle/web-app/presets/standard.patch.yml`. Leave the shipped patch unchanged. `$DSH_HOME/.agent-presets` is no longer the install target.
35
+ - Keep managed upgrades stamp-stable when `agent.cordis.yml` bytes do not change. Read-only `dshx update plan` passes `--target dsh-v0.1.7-rc.1`.
36
+ - Address background jobs by session id. Harness 0.1.7-rc.1 lists, kills, and waits with a session id, and a job view names its owner as `owner`.
37
+ - Replace the official empty `[]` web profile patch with the Creator Mode+ include. A sequence item after that array is not a patch entry.
38
+ ## Unreleased — plugin-only boundary
39
+
40
+ - Treat official DSH source, installed packages, worktrees and artifacts as read-only. Reject core targets, symlink escapes, Host patches and compiler output outside the plugin.
41
+ - Enforce Creator filesystem/shell write guards after approval and add the rule to the runtime prompt. Keep normal plugin writes and read-only Host inspection.
42
+ - Keep `update plan`; disable source-changing Harness update stages inside and outside DSHX.
43
+
3
44
  ## 0.3.8 - 2026-09-21
4
45
 
5
46
  - Add `dshx_request_takeover`: show the actual claim owner in the current conversation and transfer only after an explicit answer through the native user-question service. Cancellation is the default.
@@ -17,7 +58,7 @@
17
58
  - Continue checked server activation through an explicit HOT_RELOAD_READY state and fixed next action; preserve the original CLI code for old evidence-only plans.
18
59
  - Scope browser-adapter failures to verification and retain independent activation actions.
19
60
  - Rewrite the Agent workflow with branch references, persistent installation authorization and concrete feature acceptance.
20
- - Preserve the established fixed bridge and native approval guards for ordinary Creator sessions.
61
+ - Keep the undeployed sealed execution integration opt-in while preserving the existing fixed bridge and native approval guards for ordinary Creator sessions.
21
62
 
22
63
  ## 0.3.6 - 2026-09-11
23
64
 
package/README.en.md CHANGED
@@ -2,9 +2,11 @@
2
2
 
3
3
  [中文](README.md)
4
4
 
5
+ **Plugin-only boundary:** official DSH source and artifacts are read-only, including copies and worktrees. Use public extension points; missing APIs never authorize a Host patch. Takeover, approval and `--force` cannot override `CORE_SOURCE_IMMUTABLE`.
6
+
5
7
  Pick Creator Mode+ in a normal DeepSeek Harness Web session. Ten fixed tools scaffold, check, mount, and uninstall a file-backed plugin in a safe order.
6
8
 
7
- Creator Mode+ 0.3.8 is paired with DSHX 0.7.8 and adds user-confirmed claim takeover in the current conversation. New-client activation, server hot reload within the same conversation, and removal have been verified on DSH `dsh-v0.1.5-rc.2`. The bridge compatibility range remains [DSHX](https://github.com/aa2246740/dsh-external-plugin-devkit) `>=0.7.8 <0.8.0`; both the version range and the human-confirmed takeover capability are checked before use.
9
+ This source is paired with Harness `dsh-v0.2.0-rc.2` (SHA `639ed015397290b3745d163aafe02ffee4aa3f84`). The plugin peer range is `>=0.2.0-rc.1 <0.2.1`. It accepts `0.2.0-rc.2` and stable `0.2.0`, rejects `0.2.0` alphas, and rejects `0.1.7-rc.2`. The bridge compatibility range stays [DSHX](https://github.com/aa2246740/dsh-external-plugin-devkit) `>=0.9.1 <0.10.0`; 0.9.2 fits, and 0.9.0 and 0.7.9 are rejected. The desk pin, peer range, and human-confirmed takeover capability are checked before use. Session recovery listens on `agent/created`. The ten fixed tools are unchanged.
8
10
 
9
11
  ![Open Creator Mode+ in the official WebUI](docs/screenshots/mode-picker.gif)
10
12
 
@@ -22,7 +24,29 @@ The Agent creates source, builds, checks, selects activation and continues. Serv
22
24
 
23
25
  ## Install
24
26
 
25
- Do this outside an Agent session, in your Harness checkout:
27
+ ### DSH Studio desktop app (recommended)
28
+
29
+ Open **Settings → Plugins → Add plugin** and enter this in “Package name or address”:
30
+
31
+ ```text
32
+ github:aa2246740/dsh-creator-mode-plus#v0.3.10
33
+ ```
34
+
35
+ The desktop plugin manager owns the Desktop profile and bundled package manager. This release includes built artifacts; normal use needs no clone, build, or DSHX installation. Follow the app if it asks you to reload or reopen after installation. Then choose Creator Mode+ in a new session.
36
+
37
+ ### Web CLI
38
+
39
+ ```sh
40
+ dsh plugin --profile web add github:aa2246740/dsh-creator-mode-plus#v0.3.10
41
+ ```
42
+
43
+ This official CLI command writes only the `web` profile; it cannot modify the Desktop App profile. For an already-running Web Host, reopen that Host once and reload the page.
44
+
45
+ Creator Mode+ uses DSHX inside a conversation to develop, check, and activate **the user's own plugins**. That capability is not a prerequisite to install Creator Mode+, and it never permits modifying official DSH source.
46
+
47
+ ### Source-development install
48
+
49
+ Only when editing this repository, use a local link and installer in a separate Harness checkout:
26
50
 
27
51
  ```sh
28
52
  cd /path/to/deepseek-harness
@@ -31,7 +55,7 @@ pnpm dsh plugin --profile web add link:./tools/dsh-creator-mode-plus
31
55
  node tools/dsh-creator-mode-plus/scripts/install.mjs --harness "$PWD"
32
56
  ```
33
57
 
34
- The installer writes a user preset. It leaves the shipped Standard and Creator presets alone. Open the official WebUI, confirm Creator Mode+ is in the mode list, and try it in a new session. Adding a profile dependency is not by itself a reason to restart the Host.
58
+ The installer derives a user preset from the shipped Standard patch, writes `profiles/web/creator-mode-plus/agent.cordis.yml`, and includes that file from the Web profile `cordis.patch.yml`. It leaves the shipped Standard and Creator presets alone and does not write `.agent-presets`. Open the official WebUI, confirm Creator Mode+ is in the mode list, and try it in a new session. Adding a profile dependency is not by itself a reason to restart the Host.
35
59
 
36
60
  Contracts: [Bridge v2](docs/bridge-contract.md) and [DSHX v0.7 alignment](docs/dshx-v0.7-alignment.md).
37
61
 
@@ -55,9 +79,9 @@ Whole-plugin removal goes through `dshx_remove_plugin` only. Running the install
55
79
 
56
80
  ![Duplicate install refused](docs/screenshots/already-installed.png)
57
81
 
58
- Harness `update prepare` / `verify` / `apply` / `rollback` are not among the ten tools. They stay with an external DSHX supervisor. Inside the session, managed shell may only read `update plan`.
82
+ Harness inventory is read-only through `update plan`. DSHX disables `prepare`, `verify`, `apply` and `rollback` for every caller, including the external supervisor.
59
83
 
60
- ## Upgrade
84
+ ## Source-development upgrade
61
85
 
62
86
  ```sh
63
87
  cd /path/to/deepseek-harness/tools/dsh-creator-mode-plus
package/README.md CHANGED
@@ -2,9 +2,11 @@
2
2
 
3
3
  [English](README.en.md)
4
4
 
5
+ **插件开发红线:DSH 官方源码只读。** 不为插件修改 Host、内置包或官方构建产物,临时副本和 worktree 也不例外。缺少公开接口时调整插件方案;`CORE_SOURCE_IMMUTABLE` 不可通过接管、审批或 `--force` 绕过。
6
+
5
7
  在 DeepSeek Harness 的普通 Web 会话里选 Creator Mode+,用十个固定工具把一个文件化插件搭起来、检查、挂载,也能按安全顺序卸载。
6
8
 
7
- Creator Mode+ 0.3.8 配套 DSHX 0.7.8,新增当前对话内的用户确认接管。此前已在 DSH `dsh-v0.1.5-rc.2` 上验证新插件加载、同一会话内服务端热更新和卸载。底层桥接兼容范围为 [DSHX](https://github.com/aa2246740/dsh-external-plugin-devkit) `>=0.7.8 <0.8.0`,并在使用前核对用户确认接管能力。
9
+ 当前源码配套 Harness `dsh-v0.2.0-rc.2`(SHA `639ed015397290b3745d163aafe02ffee4aa3f84`)。插件 peer 范围是 `>=0.2.0-rc.1 <0.2.1`,接受 `0.2.0-rc.2` 和稳定版 `0.2.0`,拒绝 `0.2.0` alpha,也拒绝 `0.1.7-rc.2`。底层桥接兼容范围仍是 [DSHX](https://github.com/aa2246740/dsh-external-plugin-devkit) `>=0.9.1 <0.10.0`;0.9.2 落在这个范围内,0.9.0 和 0.7.9 被拒绝。使用前核对桌面钉、peer 范围和用户确认接管能力。会话恢复挂在 `agent/created` 上。十个固定工具不变。
8
10
 
9
11
  ![在官方 WebUI 里打开 Creator Mode+](docs/screenshots/mode-picker.gif)
10
12
 
@@ -22,7 +24,29 @@ Agent 会创建源码、构建检查、选择激活方式并继续执行。服
22
24
 
23
25
  ## 安装
24
26
 
25
- 在 Agent 会话外面做。进你的 Harness 仓库:
27
+ ### DSH Studio 桌面 App(推荐)
28
+
29
+ 打开 **设置 → 插件 → 添加插件**,在“包名或地址”中输入:
30
+
31
+ ```text
32
+ github:aa2246740/dsh-creator-mode-plus#v0.3.10
33
+ ```
34
+
35
+ 桌面端插件管理器负责 Desktop profile 和内置包管理器。本发布已包含编译产物;普通使用不需要 clone、构建或安装 DSHX。若应用提示刷新或重新打开,请按提示完成。安装后在新会话中选择 Creator Mode+。
36
+
37
+ ### Web CLI
38
+
39
+ ```sh
40
+ dsh plugin --profile web add github:aa2246740/dsh-creator-mode-plus#v0.3.10
41
+ ```
42
+
43
+ 这条官方 CLI 命令只写入 `web` profile,不能修改 Desktop App 的 profile。对于已经运行的 Web Host,请重新打开该 Host 一次,再刷新网页。
44
+
45
+ Creator Mode+ 在对话中调用 DSHX 来开发、检查和激活**用户自己的插件**;这项功能不是安装 Creator Mode+ 的前置条件,也不允许它修改 DSH 官方源码。
46
+
47
+ ### 源码开发安装
48
+
49
+ 只有在编辑本仓库源码时,才在独立 Harness checkout 中使用本地链接和安装器:
26
50
 
27
51
  ```sh
28
52
  cd /path/to/deepseek-harness
@@ -31,7 +55,7 @@ pnpm dsh plugin --profile web add link:./tools/dsh-creator-mode-plus
31
55
  node tools/dsh-creator-mode-plus/scripts/install.mjs --harness "$PWD"
32
56
  ```
33
57
 
34
- 安装器只写用户 preset,不动随仓库带的 Standard / Creator。打开官方 WebUI,检查 Creator Mode+ 是否出现在模式列表,并在新会话验收。不要仅因增加 profile 依赖就重启 Host。
58
+ 安装器从仓库自带的 Standard patch 派生用户 preset,写入 `profiles/web/creator-mode-plus/agent.cordis.yml`,并在 Web profile 的 `cordis.patch.yml` 里 include 它。它不改随仓库带的 Standard / Creator,也不再写 `.agent-presets`。打开官方 WebUI,检查 Creator Mode+ 是否出现在模式列表,并在新会话验收。不要仅因增加 profile 依赖就重启 Host。
35
59
 
36
60
  合同见 [Bridge v2](docs/bridge-contract.md) 和 [DSHX v0.7 alignment](docs/dshx-v0.7-alignment.md)。
37
61
 
@@ -56,9 +80,9 @@ node tools/dsh-creator-mode-plus/scripts/install.mjs --harness "$PWD"
56
80
 
57
81
  ![重复安装被拒绝](docs/screenshots/already-installed.png)
58
82
 
59
- Harness 更新的 `prepare` / `verify` / `apply` / `rollback` 不在这十个工具里,交给外部 DSHX supervisor。会话内只允许通过 managed shell 读 `update plan`。
83
+ Harness 更新只保留只读 `update plan`。`prepare` / `verify` / `apply` / `rollback` 已由 DSHX 禁用,外部 supervisor 也不能通过插件工具修改官方源码。
60
84
 
61
- ## 升级
85
+ ## 源码开发升级
62
86
 
63
87
  ```sh
64
88
  cd /path/to/deepseek-harness/tools/dsh-creator-mode-plus
@@ -0,0 +1,3 @@
1
+ - insert:
2
+ - id: dsh-creator-mode-plus
3
+ name: dsh-creator-mode-plus
@@ -1,12 +1,15 @@
1
1
  # Creator Bridge v2
2
2
 
3
+ > 当前强制规则:DSH 官方源码与构建产物只读。插件工作不允许 Host patch、修改临时官方副本或重建官方子项目。`update prepare/verify/apply/rollback` 已禁用,仅保留 `update plan`;后文历史版本说明不解除该规则。
4
+
5
+
3
6
  Creator Mode+ is a user preset plus one DSH plugin. It brings ten fixed DSHX
4
7
  operations into an ordinary DSH session without giving that session control of
5
- its Host process. Stable DSHX `>=0.7.8 <0.8.0` supplies atomic single-Home Host
8
+ its Host process. Stable DSHX `>=0.9.1 <0.10.0` supplies atomic single-Home Host
6
9
  discovery/attachment, temporary-Home cold-boot verification, workspace-aware
7
10
  scaffolding, source-preserving watched-plugin removal, external safe profile-bundle
8
11
  removal, proactive integrity quarantine, the external Guardian, durable recovery state, the seven-surface
9
- activation contract, and the transactional Harness Update Assistant.
12
+ activation contract, and the read-only Harness version inventory and plugin-only source boundary.
10
13
 
11
14
  ## Roles
12
15
 
@@ -56,14 +59,7 @@ pull, and recovery acknowledgement argv. Tests must execute every row and every
56
59
  internal lifecycle shape through the allowlist; registering a tool name does not
57
60
  prove its child argv is reachable.
58
61
 
59
- DSHX v0.7.2 adds `dshx_remove_plugin` as the seventh Creator tool. `update prepare`, `verify`,
60
- `apply`, and `rollback` remain outside the bridge because they can replace or restore the process that owns the session,
61
- so the fixed bridge cannot expose them. Read-only `update plan` is available only
62
- through DSHX's managed-shell gate and remains inventory rather than activation.
63
- DSHX v0.7.3 adds the external `dshx plugin remove` transaction for boot-captured
64
- profile bundles. It also stays outside the fixed bridge: it requires current
65
- profile/port authority and may own a tombstone across App boots, so Creator
66
- sessions may hand off to it but never execute it as a bridge tool or raw shell.
62
+ `dshx_remove_plugin` provides bounded source-preserving removal. Harness version inventory is read-only; source-changing update stages are disabled for every caller.
67
63
 
68
64
  DSHX v0.7.4 makes App, direct CLI, and dshx launchers for one long-lived Web
69
65
  Host per real `DSH_HOME`. `start` attaches to one existing Host, while duplicate
@@ -101,7 +97,7 @@ exec.agent.id + callId + rootCallId
101
97
  + Host pid + Host parent pid + current Web port + bridge version
102
98
  ```
103
99
 
104
- At `agent/session-start`, the bridge arms Guardian and pulls recovery incidents
100
+ At `agent/created` (the session-start event; `agent/session-start` is gone), the bridge arms Guardian and pulls recovery incidents. The listener does not return that promise, so a recovery failure cannot reject serial session creation.
105
101
  for that exact persisted session. Once a plugin id is known, the session calls
106
102
  `dshx_claim_plugin`; every other named-plugin operation refreshes the claim.
107
103
 
@@ -119,7 +115,7 @@ The standalone package does not accept `0.7.x` by string alone. Before any fixed
119
115
  operation or installer mutation it requires:
120
116
 
121
117
  - package identity `dsh-external-plugin-devkit` and stable version
122
- `>=0.7.8 <0.8.0`;
118
+ `>=0.9.1 <0.10.0` (0.9.0 and 0.7.9 are rejected; 0.9.2 fits; the desk pin must be `dsh-v0.2.0-rc.2`, SHA `639ed015397290b3745d163aafe02ffee4aa3f84`);
123
119
  - same-Home Web Host discovery/attach, three-state PID/port probes, and
124
120
  temporary-Home verification teardown;
125
121
  - Creator claim/scaffold commands and Bridge v2 context validation;
@@ -127,7 +123,7 @@ operation or installer mutation it requires:
127
123
  removal, and proactive claimed-link integrity quarantine;
128
124
  - external Guardian and official Loader-failure recovery implementation;
129
125
  - check, activation-plan, and bounded new-client command surfaces;
130
- - the managed-shell gate and the transactional Harness Update Assistant;
126
+ - the managed-shell gate and the read-only Harness version inventory and plugin-only source boundary;
131
127
  - Creator+, Guardian, live-activation, and Harness-update knowledge contracts.
132
128
 
133
129
  Missing or prerelease surfaces fail closed. Release verification also probes the
@@ -167,7 +163,8 @@ scaffold -> implement/build -> dshx check / SOURCE_BUILT
167
163
  -> insert or semantically retrigger one watched-patch row
168
164
  -> poll the current Host manifest and served client.js
169
165
  -> HOST_TREE_ACTIVE + CLIENT_MANIFEST_PRESENT
170
- -> browser reload remains separate
166
+ -> observe RC2 client graph sync on the current page
167
+ -> verify actual behavior; reload only if graph transport is unavailable
171
168
  ```
172
169
 
173
170
  The order is invariant. A failed new row is rolled back by DSHX. A nonzero
@@ -289,7 +286,7 @@ A stale Host identity, unknown id, or multiple candidates is ambiguous and
289
286
  changes no plugin row. After quarantine, the bridge waits for the current Host
290
287
  manifest to prove the id absent. Only then does the browser reload once. The
291
288
  incident remains durable and is steered to its owning session. A failed report
292
- gets one delayed retry to cover session-start/Guardian arm races; the browser
289
+ gets one delayed retry to cover `agent/created`/Guardian arm races; the browser
293
290
  fuse prevents an unbounded reload loop.
294
291
 
295
292
  The POST route is a Host-scoped leased resource, not a generation-scoped side
@@ -301,34 +298,15 @@ generation, and only the last lease unregisters the route. The installer also
301
298
  preserves the exact composition-file stamp when its bytes are unchanged so
302
299
  metadata-only upgrades do not manufacture a new generation.
303
300
 
304
- ## Harness Update Assistant boundary
305
-
306
- The v0.7 update state machine is `plan → prepare → verify → apply`; `rollback`
307
- requires an existing apply transaction. Creator Mode+ may inspect `plan` from a
308
- managed shell after `dshx_status` proves one checkout. All later stages are
309
- external-supervisor work.
310
-
311
- The evidence labels are deliberately non-transitive:
312
-
313
- - `plan` inventories tag/SHA, dirty state, and plugins; it proves no build.
314
- - `prepare` proves an isolated candidate installed and built; it does not update
315
- the current checkout.
316
- - `verify` proves candidate static/cold-boot gates; it does not activate the
317
- production Host or page.
318
- - `apply` updates local source and artifacts transactionally; it does not restart
319
- or establish user-visible acceptance.
320
- - `rollback` restores the recorded checkout, dependencies, and artifacts; it
321
- does not promise reversal of product-data migrations outside this contract.
301
+ ## Harness version inventory boundary
322
302
 
323
- The update assistant never silently stops or restarts a production Host. Creator
324
- Mode+ must report candidate verified, applied locally, real runtime accepted, and
325
- production activated as separate states.
303
+ Only `update plan` is available. It inventories versions, dirty state and plugins without proving a build or runtime behavior. DSHX rejects `prepare`, `verify`, `apply` and `rollback` with `CORE_SOURCE_IMMUTABLE` for every caller. The external supervisor has no exception. A plugin requiring a new Host API must report that capability gap or use another public extension point.
326
304
 
327
305
  ## Compatibility and evidence boundary
328
306
 
329
307
  Supported: the official DSH browser WebUI, public Cordis plugin forms, public
330
308
  client runtime, and public UI slots across the RC8 Creator/Guardian contract and
331
- the RC2 package/update line and the authenticated Web line through 0.1.5-rc.2.
309
+ the RC2 package/update line and the authenticated Web line through `dsh-v0.2.0-rc.2` (SHA `639ed015397290b3745d163aafe02ffee4aa3f84`). The plugin peer range is `>=0.2.0-rc.1 <0.2.1`. It accepts `0.2.0-rc.2` and stable `0.2.0`, rejects `0.2.0` alphas, and rejects `0.1.7-rc.2`. User presets are profile includes of an `@deepseek-ai/dsh-agent-preset` declaration derived from the shipped Standard patch; `$DSH_HOME/.agent-presets` is not read.
332
310
 
333
311
  Outside acceptance: native menus, window chrome, App IPC, desktop bridges, and
334
312
  shell-specific refresh behavior. A wrapper may work when it embeds the same
@@ -415,8 +393,11 @@ action. Current-Host authentication errors still block dependent live proof.
415
393
  An already-authenticated, task-authorized UI or a plugin command/service can
416
394
  supply feature evidence without configuring this optional browser adapter.
417
395
 
418
- This release uses the ten fixed tools and the native approval/guard stack.
419
- Separate local sealed-executor experiments are not part of this package.
396
+ The sealed executor code is a development integration, enabled only by an
397
+ explicit `developmentExecution: true` composition. The ordinary preset keeps
398
+ the established ten fixed tools and native approval/guard stack. Enabling the
399
+ experimental path retains its strict executor/provenance requirements; absence
400
+ of that optional service is not a default-mode prerequisite.
420
401
 
421
402
  ## 用户确认后接管
422
403
 
@@ -429,3 +410,10 @@ Separate local sealed-executor experiments are not part of this package.
429
410
  正在激活、持有者状态无法核实、停止失败、确认取消或超时,都不会授予新会话权限。已开始的停止操作不会被自动恢复。可用外部 `dshx creator inspect <plugin> --json` 查看原认领及待处理交接;不要手删 claims 或 session.lock。`creator takeover` 是固定桥内部提交协议,缺少一次性凭据会拒绝,不能通过 `--force` 调用。
430
411
 
431
412
  租约到期只表示认领需要重新核验,不再自动授权第二个写入者。正常 `agent/disposed` 仍释放认领;移交中的 dispose 不得破坏正在比较的原认领。
413
+
414
+
415
+ ## Official Desktop profile support (local compatibility update)
416
+
417
+ The fixed bridge derives `desktop`, its port, Home, and runtime root from the public `profileContext`; none becomes model input. The CLI preserves Web behavior. For Desktop, a per-invocation private capability returns only config entry identities, or authorizes one install/remove for the current claimed plain plugin. The owning Host calls the public `@deepseek-ai/dsh-plugin-manager/operations` `runPluginCommand` with its bundled package manager and official profile lock. New bundle activation is disabled; the existing checked watched-patch transaction still owns activation and removal. Capabilities expire, are revoked at operation completion and generation disposal, and are never returned in tool text.
418
+
419
+ Guardian validates the Electron child identity and monitors the Desktop Host. It may quarantine an attributed plugin failure, but never stops, replaces, or restarts the Desktop Host. Electron owns that recovery and normal quit. Desktop HMR binds the discovered application root independently of the plugin-development checkout. Package imports, checked artifacts, claims, same-PID proof, and feature acceptance remain required.
@@ -0,0 +1,100 @@
1
+ # 私有编译输入:固定登记目标(source-only)
2
+
3
+ 2026-09-14。`src/development-target.js` 的增量只提供受限数据,不提供来源证明、人工授权、通用 Loader 解析或执行能力。`src/index.js`、manifest 和 Host 未接线/未激活。
4
+
5
+ ## API
6
+
7
+ ```js
8
+ createDevelopmentTargetResolver({
9
+ getHarnessRoot, // 原有 Host 私有读源
10
+ readRegisteredTarget, // opaqueLease -> 固定物理登记描述,严格同步
11
+ readCompilationSignals, // 原 exec -> { ownerSignal, policySignal },严格同步
12
+ producerSignal, // C producer 的私有生命周期
13
+ compilationTtlMs: 300000, // 可更短,不可超过五分钟
14
+ compilationNow: () => performance.now(), // 单调时钟;另有真实到期 timer
15
+ })
16
+
17
+ captureCompilation(exec, opaqueLease) // -> 冻结空 opaque handle
18
+ compilationSnapshot(handle, exec) // -> 冻结公开 metadata,无 code
19
+ compilationInput(handle, exec) // -> 私有冻结输入(再次安全重验)
20
+ releaseCompilation(handle) // -> boolean;幂等、立即清缓存
21
+ dispose() // 停止编译捕获、清全部待办;原观察 API 不改变
22
+ ```
23
+
24
+ 原 `capture(exec, pluginId)` / `revalidate(snapshot, exec)` 不依赖三个新增生命周期/registry 配置,不增加代码或 Loader 推断。编译 snapshot 也可以交给 `revalidate(snapshot, exec)`,但会走其更严格的原 exec/登记 lease/生命周期校验。
25
+
26
+ 新增 callback 不存在于任何模型参数或 HTTP 接口。构造器未提供它们,编译入口直接关闭。不得把它们包装成可选模型字段。
27
+
28
+ ### 可信接线形态
29
+
30
+ ```js
31
+ // 仅在真实 C execute 中 authority.enter + policy.capture 后写入。
32
+ const invocations = new WeakMap() // exact original exec -> { owner, policyHandle }
33
+ const lifetime = new AbortController()
34
+ ctx.effect(() => () => lifetime.abort())
35
+ const targets = createDevelopmentTargetResolver({
36
+ getHarnessRoot: trustedHarnessRoot,
37
+ readRegisteredTarget: lease => preparedExecutor.readRegisteredTarget(lease),
38
+ readCompilationSignals(exec) {
39
+ const call = invocations.get(exec)
40
+ if (!call) return undefined
41
+ return {
42
+ ownerSignal: authority.inspect(call.owner).signal,
43
+ policySignal: policy.inspect(call.policyHandle).signal,
44
+ }
45
+ },
46
+ producerSignal: lifetime.signal,
47
+ })
48
+ ctx.effect(() => () => targets.dispose())
49
+ ```
50
+
51
+ 不得按 agent.id/sessionId 选择最新 owner。读取方法始终还检查原 `exec.signal`;owner signal 应来自同一 exec 已 enter 的 C owner,包含 caller/body timeout。旧调用、换 Agent/Session/token/参数对象、换 body/owner/policy signal、取消、异步/缺失读源,均不能借用代码句柄。
52
+
53
+ ## 登记目标与 binding
54
+
55
+ `readRegisteredTarget(opaqueLease)` 返回冻结的物理描述:
56
+
57
+ ```js
58
+ { harnessRoot, sourceRoot, pluginId, sourceDirectoryIdentity: { dev, ino }, runtimeEntry }
59
+ ```
60
+
61
+ - 只信任私有 registry reader 对原 opaque lease 的回答,不读 lease 自带的 JSON 字段。
62
+ - `runtimeEntry` 是已经外部固定登记的精确包内 JS/CJS/MJS 路径;不是模型参数,不根据 package.main/exports、Node resolver 或项目脚本推断。
63
+ - 每遍读取都校验实际 `locate()` 的物理目标与登记描述完全相符;lease 撤销、目标/runtimeEntry 改变、依赖信号变更时失效,不切换到新目标。外部 registry 应按不可复活 lease 管理代际。
64
+ - 登记物理描述 **没有 workspaceRoot**。实际 workspaceRoot 仍从原 Agent 的真实 Session cwd 取得。
65
+ - 私有 input 返回完整冻结 `binding`(engine/harnessRoot/workspaceRoot/sourceRoot/pluginId/sourceDirectoryIdentity)。该 binding 与本次编译 snapshot 的 binding 是**同一个对象**,来自同一次双遍 locate;不能之后另做一次普通 capture 拼入另一个时刻的 binding。
66
+
67
+ 外部候选 `PreparedExecutor.readRegisteredTarget()` 的字段已按用户指定源码只读核对;这不是对生产 registry 挂载或执行的验证。当前执行候选仅支持明确登记且真实 ACTIVE 的 fixed-entry managed hot-reload,其它目标继续关闭。
68
+
69
+ ## 读取和代码边界
70
+
71
+ - 保留既有 no-follow / nonblocking FD、regular-file、inode/size/time/trail、目录身份、目标保护和两遍一致性检查。
72
+ - 编译要求 manifest 显式 `hotReload.artifacts` JS 闭包。原 `declaredEntry` 与登记 `resolvedRuntimeEntry` 分开记录;实际入口即使未列在 artifacts 中,也加入两遍读取、hash、预算和 metadata 文件清单。
73
+ - 项目 TS/JSX、隐式依赖、Node loader 绑定或 build 脚本不在本轮读取/编译支持范围。该模块不运行源码;实际编译器仍必须拒绝未列相对依赖、动态 require 和不支持的环境绑定。
74
+ - `compilationInput` 形态:
75
+
76
+ ```js
77
+ {
78
+ binding,
79
+ declaredEntry,
80
+ resolvedRuntimeEntry,
81
+ files: [{ path, code, sha256, bytes }],
82
+ evidenceBoundary: 'parent-observation-only',
83
+ }
84
+ ```
85
+
86
+ - `code` 只在批准前双遍 FD 读取时生成并保存于私有 WeakMap。后续 input/revalidate 会重新安全核对文件和登记状态,但**不重新生成或替换已保存字符串**;变更即拒绝。
87
+ - UTF-8 code 解码使用 `fatal:true, ignoreBOM:true`,明确保留原 BOM、CRLF 和多字节字符;sha256/bytes 仍是原始文件字节,不把去 BOM 字符串冒充原文件。无效 UTF-8 拒绝。
88
+ - 公开 snapshot 不含 code,且保留 `parent-observation-only` 标签。所有这些对象都不是 grant 或 sourceVerified 证据。
89
+
90
+ ## 生命周期与预算
91
+
92
+ - 每遍仍最多 16 MiB 总读取,单 artifact 4 MiB、metadata 256 KiB;32 个运行文件包括新增实际入口。
93
+ - 每个 resolver/producer 最多 64 个待办,并额外保守限制聚合保留代码为 16 MiB(按原 UTF-8 字节计数)。拒绝重入捕获/重入校验。
94
+ - TTL 不超过五分钟,单调时钟校验加真实 `unref` timer;系统时钟回退/无效时关闭。timer 从最初捕获期限扣除已用时间,不因读取耗时额外延长。
95
+ - 原 exec、owner、policy、producer 任一取消,即删除待办/代码/真实对象关联,只留轻量失效 tombstone。release/dispose/过期也清除;超容量不会挤出或复活旧句柄。
96
+ - 这只能回收 resolver 持有的引用,不能擦除已交给可信编译器的 JS 字符串副本。外部 compiled capsule/prepared ticket/消费端仍须绑定其独立生命周期;该数据 API 不能保证一个拿到明文的同进程调用者忘记内容。
97
+
98
+ ## 回归范围
99
+
100
+ `tests/development-compilation.spec.mjs` 使用真实临时文件和实际安全 FD 读取器,验证原字节/实际入口、登记匹配、exec 身份、信号换代、取消、双遍变更、symlink、预算、64 待办、回收和真实 TTL。其 exec/registry/lifetime 是明确测试夹具,不冒充真实 C 来源或外部生产挂载。真实 Native source、policy、task 生命周期由相应独立回归覆盖;跨组件生产接线仍待验证。