@onefl666/dsh-great-plan 0.0.0-stage → 0.6.0

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 onefl666
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,103 @@
1
- # Temporary Holding Version
1
+ # Great Plan
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ **English** | [简体中文](README.zh-CN.md)
4
+
5
+ [![License: MIT](https://img.shields.io/badge/license-MIT-blue)](LICENSE)
6
+ [![GitHub Stars](https://img.shields.io/github/stars/onefl666/dsh-great-plan)](https://github.com/onefl666/dsh-great-plan/stargazers)
7
+ [![GitHub Issues](https://img.shields.io/github/issues/onefl666/dsh-great-plan)](https://github.com/onefl666/dsh-great-plan/issues)
8
+
9
+ A DSH Web plugin: choose the model and reasoning effort, then execute a reviewed plan in place, after compaction, or in a fresh session.
10
+
11
+ ## Features
12
+
13
+ - **Execute plan** — approve the plan and continue in the current session with the selected model.
14
+ - **Compact and execute** — compact the history before the plan, then approve it in place.
15
+ - **Start fresh and execute…** — stop the current turn and run the plan as the first message of a new session in the same workspace, with a selectable agent preset. The message also carries the instructions the user sent during the current plan-mode session, in chronological order, and ends with the canonical native approval handoff: `Plan approved — plan mode exited; carry out the plan starting with your next step.` The old session is kept.
16
+ - **Fresh-session context in Minimal mode** — when the new session uses the built-in **Minimal mode** preset, the first message also carries the workspace directory, system platform, current time/time zone, and a note that the previous context was cleared. This compensates for the Minimal preset's suppressed runtime context. Turn this off on the plugin's Settings page.
17
+ - **Brainstorming-guided plans** — the planner acts as Team Lead: `spawn_teammate` creates at least two parallel exploration teammates with distinct concrete scopes, plus one separate planning teammate that drafts the candidate final plan; the planner verifies the evidence itself, asks one short question at a time only when ambiguity could change the approach, and summarizes key rationale, tradeoffs, and assumptions (advisory only). Turn this off on the plugin's Settings page; the evidence and handoff guidance stays.
18
+ - **Unlimited-token-budget plans** — in plan mode and fresh-session execution, remind the model that its token budget is unlimited and not to cut investigation, tool calls, or necessary questions to save tokens (advisory only). Turn this off on the plugin's Settings page.
19
+ - **Great Plan settings page** — a page in the native Settings panel with four switches: **Inject brainstorming prompt**, **Inject unlimited token budget prompt**, **Include original user instructions**, and **Include runtime context in Minimal mode** (all on by default). The plan-prompt switches apply to the next plan without restarting DSH; the fresh-session switches apply to the next execution.
20
+ - **Evidence-first plans** — in plan mode, the planner is asked to include background, an evidence chain, and a handoff for the executor (advisory only).
21
+ - **English-only, compact model prompts** — everything the plugin adds to the model's context (the plan-mode guidance and the fresh-session first message) is short, fixed English text regardless of the UI language, and it does not repeat rules the native plan-mode policy already states. Your own messages and the plan are carried unchanged.
22
+ - **First-message preview and this-run switches** — before **Start fresh and execute…** confirms, the dialog previews exactly what the new session's first message will contain: the execution intro, the optional budget reminder, the optional Minimal runtime context, the original user instructions (with count and size), the approved plan, and the canonical approval handoff, plus total size and an approximate token count. Budget, instructions, and runtime context can be toggled for this run only; global Settings stay unchanged. An oversized hint appears above ~32,000 characters, and instructions are never truncated.
23
+ - **Recoverable compaction failure** — if compaction cannot run (unavailable backend, no compactable history, a failed request, or cancellation), the plan is no longer approved automatically: the dialog explains the cause and offers **Retry compaction**, **Execute anyway**, or **Cancel**. Failure copy is localized in the dialog.
24
+ - **Plan inside the dialog and Back to editing** — expand the complete reviewed plan without closing the dialog, and use **Back to editing** (the native Discuss behavior: the card is hidden and the review stays pending) to return to the composer. The backdrop now dims the page behind the dialog.
25
+ - **Model search and provider-default effort** — filter the model list by provider or model name, and clear an explicit reasoning-effort override back to the provider default in the effort list.
26
+ - **Reset to default** — every Settings row whose switch is off offers a reset control that restores its default (on).
27
+
28
+ The native **Approve**, **Request changes**, and **View full plan** controls are unchanged; the plugin only adds one **Execution options** entry to the plan-review card.
29
+
30
+ ## Requirements
31
+
32
+ - DSH with the Web client, version 0.2.1-rc.3 or newer (verified on 0.2.1-rc.5).
33
+ - **Compact and execute** needs a compaction backend in the DSH composition. Without one, the dialog shows the failure and lets you retry, execute the plan anyway, or cancel.
34
+
35
+ ## Installation
36
+
37
+ npm package name: `@onefl666/dsh-great-plan`. Install the published package with `plugin_manager` `install_bundle`, using the package spec as the target (for example `@onefl666/dsh-great-plan@0.6.0`). For a local checkout, use the absolute package directory as the target instead. The plugin then appears in the Plugins list as **Great Plan**.
38
+
39
+ ## Usage
40
+
41
+ 1. Enter plan mode with `/plan` and ask the agent for a plan.
42
+ 2. When the review card appears, click **Execution options**.
43
+ 3. Optionally pick a model and reasoning effort. The change applies to the session immediately and matches the Composer model selector.
44
+ 4. Pick an execution method:
45
+ - **Execute plan** — approves the plan.
46
+ - **Compact and execute** — compacts first. If compaction is unavailable, empty, fails, or is cancelled, the plan is not approved: choose **Retry compaction**, **Execute anyway**, or **Cancel**. Closing the dialog while it runs cancels the wait.
47
+ - **Start fresh and execute…** — review the first-message preview and this-run switches, choose an agent preset, then confirm. The new session opens with the approved plan (plus the instructions and, for Minimal mode, the runtime context you kept enabled) and the canonical approval handoff at the end; the old session is stopped after the new message is sent and is kept.
48
+ 5. **Back to editing** hides the review card and returns to the composer for change requests, exactly like the native Discuss action; **Execute plan** is the native Approve.
49
+
50
+ ## Settings
51
+
52
+ Open **Settings** from the sidebar and choose **Great Plan**. **Inject brainstorming prompt** controls whether the plan-mode prompt asks for clarification, Team-Lead exploration via `spawn_teammate` (at least two parallel exploration teammates plus a separate planning teammate), and a teammate-drafted candidate plan; turning it off keeps the evidence-chain and executor-handoff requirements. **Inject unlimited token budget prompt** controls the unlimited-budget reminder in the plan prompt and in the **Start fresh and execute…** first message; turning it off removes only that reminder. **Include original user instructions** controls whether the plan-mode user texts are carried into the fresh session. **Include runtime context in Minimal mode** controls whether the workspace directory, system platform, time, and cleared-context note are added for the Minimal preset. All four are on by default, stored by the Host, and survive reloads. A row whose switch is off also offers **Reset to default**, which writes the default (on) value back through the same configuration form.
53
+
54
+ ## Command
55
+
56
+ `/great-plan-compact` compacts the history before the pending plan. **Compact and execute** calls it for you; it also appears in the command menu and takes no arguments.
57
+
58
+ ## Known limitations
59
+
60
+ - The model list now has a simple substring search; the Composer model control remains the full picker, and the two never share state.
61
+ - Selecting a model is also saved as the default model (existing DSH behavior).
62
+ - Compaction makes one summary model request.
63
+ - The new-session title prefix and stopping the old session are best-effort.
64
+ - The native **Approve** / **Request changes** buttons sit behind the dialog while it is open. Close the dialog (or use **Back to editing**, which equals Request changes) before using them; **Execute plan** is the in-dialog Approve.
65
+ - The conversation's command result cards stay English even in a Chinese UI (the Host command contract has no locale); the dialog's compaction failure text is localized.
66
+ - The budget, brainstorming, and evidence guidance is advisory; the plugin does not validate model compliance or verify that teammates were actually spawned. Command descriptions are not localized. The Settings switches need the DSH settings services; without them the page is not registered and all four switches default to on.
67
+ - The unlimited-budget reminder is added only to the plan-mode prompt and the **Start fresh and execute…** first message; **Compact and execute** does not add it. The Client reads the fresh-session switches from the configuration mirror and defaults to on when the settings UI is unavailable.
68
+ - The canonical approval handoff (`Plan approved — plan mode exited; carry out the plan starting with your next step.`) is always appended at the end of the fresh-session first message, is intentionally English, and is not controlled by the three this-run switches. **Compact and execute** does not add a second copy: the native approval result already carries it. The clear-view preview counts it in the total size.
69
+ - Plan-mode instructions are read from the old session's loaded event window; the plugin looks back up to eight history pages for the current plan-mode start, then falls back to the current turn or the latest user text. The preview reuses that read for execution. Instructions are never truncated: the preview shows the total size, an approximate token count, and an oversized hint above ~32,000 characters, but a very long conversation still produces a large first message.
70
+ - The preview's Minimal runtime context is read when the clear view opens; execution reads the time again, so the previewed time can differ.
71
+ - The Minimal-mode runtime context is read from the browser (platform, local time, and IANA zone). In a remote Web deployment it describes the browser, not necessarily the Host; the workspace directory still comes from the Host-side workspace.
72
+ - A fresh session starts with the deployment's default permissions and sandbox context; the old session's permission or sandbox state is not inherited.
73
+ - **Start fresh and execute…** re-checks the pending review right before prompting and stops the old session after the message is sent. Another client can still approve that same review in the brief window before the stop, so the residual multi-client race is not eliminated. If the dialog was already closed by the settled review, a later failure is logged to the browser console only.
74
+
75
+ ## Development
76
+
77
+ There is no build step or installed dependency. The Host half imports a few DSH packages (`@deepseek-ai/schemastery`, `@deepseek-ai/dsh-compaction`) that the running installation supplies, declared as peer dependencies. Run the gate (syntax check + offline tests); it finds DSH's bundled Node when none is on `PATH`:
78
+
79
+ ```bash
80
+ bash tools/gate.sh
81
+ ```
82
+
83
+ A green gate proves parsing and the offline tests only, not GUI behavior. The same gate runs in CI (`.github/workflows/gate.yml`, Node 24) on push and pull requests. Restart DSH after Host changes; touch `lib/client.js` and reload the page after Client changes. Architecture, the manual GUI checklist, and conventions are in [AGENTS.md](https://github.com/onefl666/dsh-great-plan/blob/main/AGENTS.md).
84
+
85
+ ## Project structure
86
+
87
+ | Path | Role |
88
+ |---|---|
89
+ | `lib/index.js`, `lib/host/` | Host half: the `/great-plan-compact` command and the plan-mode prompt section |
90
+ | `lib/client.js`, `lib/client.<name>.js` | Client half: entry plus `ui`, `settings`, `model`, `preset`, `actions`, `panel` chunks |
91
+ | `locale/` | Plugins-list title and description |
92
+ | `test/manifest.test.js`, `test/host/`, `test/client/` | Offline tests: package manifest, then Host and Client suites |
93
+ | `docs/promo/` | Promo video sources; repository-only, rendered frames are git-ignored |
94
+ | `tools/gate.sh` | Verification gate |
95
+ | `.github/workflows/gate.yml` | CI: runs the gate on push and pull requests |
96
+
97
+ The npm package ships only `lib/index.js`, `lib/host/`, `lib/client*.js`, `cordis.patch.yml`, `locale/`, `icon.svg`, the READMEs, and `LICENSE`; `test/`, `tools/`, `.github/`, `docs/`, and `AGENTS.md` are repository-only.
98
+
99
+ See the Module Map in [AGENTS.md](https://github.com/onefl666/dsh-great-plan/blob/main/AGENTS.md) for details.
100
+
101
+ ## License
102
+
103
+ [MIT](LICENSE) © 2026 onefl666. npm package name: `@onefl666/dsh-great-plan`.
@@ -0,0 +1,103 @@
1
+ # 卓越计划(Great Plan)
2
+
3
+ [English](README.md) | **简体中文**
4
+
5
+ [![License: MIT](https://img.shields.io/badge/license-MIT-blue)](LICENSE)
6
+ [![GitHub Stars](https://img.shields.io/github/stars/onefl666/dsh-great-plan)](https://github.com/onefl666/dsh-great-plan/stargazers)
7
+ [![GitHub Issues](https://img.shields.io/github/issues/onefl666/dsh-great-plan)](https://github.com/onefl666/dsh-great-plan/issues)
8
+
9
+ 一个 DSH Web 插件:在执行计划前选择模型与思考强度,并支持直接执行、压缩上下文后执行,或在新会话中清空上下文执行。
10
+
11
+ ## 功能
12
+
13
+ - **执行计划**:批准计划,在当前会话中按所选模型继续执行。
14
+ - **压缩上下文并执行**:先压缩计划之前的历史,再原地批准。
15
+ - **清空上下文并执行…**:停止当前回合,在同一工作区新建会话,把本次 plan 模式期间的用户指令与已批准计划作为首条消息执行;消息末尾会追加原生批准提示 `Plan approved — plan mode exited; carry out the plan starting with your next step.`。可选择 Agent 模式,旧会话保留。
16
+ - **极简模式运行环境**:新会话选择内置 **极简模式** 时,首条消息还会附带工作区目录、系统平台、当前时间/时区,并注明旧上下文已清空,用于弥补极简预设被抑制的运行时上下文。可在插件设置页关闭。
17
+ - **头脑风暴式计划**:规划者作为 Team Lead,用 `spawn_teammate` 并行派出至少两个各有明确探索范围的探索队友,再由单独的规划队友起草候选最终计划,并由规划者亲自核验证据;需求有会改变方案的歧义时逐轮提出一个简短问题,信息足够后给出简要依据、重要权衡和明确假设(建议性约束)。可在插件的设置页关闭,证据链与交接提示仍保留。
18
+ - **无限 Token 预算提示**:plan 模式与新会话执行时,提示模型 token 预算无上限,不要为节省用量而减少调研、工具调用或必要提问(建议性约束)。可在插件的设置页关闭。
19
+ - **卓越计划设置页**:在原生「设置」面板中增加一页,提供 **注入头脑风暴提示词**、**注入 token 预算无上限提示词**、**携带原始用户指令** 与 **极简模式下附带运行环境** 四个开关(默认开启)。计划提示词开关在下次生成计划时生效,新会话开关在下次执行时生效。
20
+ - **证据优先的计划**:plan 模式下要求计划包含背景、证据链和交接说明(建议性约束)。
21
+ - **英文、精简的模型提示词**:插件注入模型上下文的内容(plan 模式提示词段与新会话首条消息)始终是固定的精简英文,与界面语言无关,也不重复原生 plan 模式策略已有的规则。你自己发送的消息与计划内容原样携带。
22
+ - **首条消息预览与本次执行开关**:「清空上下文并执行…」确认前,浮层会预览新会话首条消息的实际内容:执行说明、可选的预算提醒、可选的极简运行环境、原始用户指令(含条数与字符数)、已批准计划以及原生批准提示,并显示总字符数与估算 tokens。预算、指令、运行环境三个开关只影响本次执行,不修改全局设置。超过约 32,000 字符会显示超大提示,指令永不截断。
23
+ - **可恢复的压缩失败**:压缩无法进行(后端不可用、无可压缩历史、请求失败或取消)时不再自动批准计划,浮层会说明原因并提供 **重试压缩**、**仍然执行**、**取消**。浮层内的失败文案已本地化。
24
+ - **浮层内查看计划与返回修改**:无需关闭浮层即可展开完整计划;「返回修改」等价原生 Discuss(隐藏审核卡、计划仍待审)。遮罩会压暗页面。
25
+ - **模型搜索与提供商默认强度**:模型列表可按提供商或模型名过滤;思考强度列表可随时清除显式覆盖,回到「提供商默认」。
26
+ - **恢复默认**:设置页中处于关闭状态的开关会提供「恢复默认」按钮,写回默认值(开启)。
27
+
28
+ 原生的 **Approve**、**Request changes**、**View full plan** 保持不变;插件只在计划审核卡上增加一个 **执行选项** 入口。
29
+
30
+ ## 要求
31
+
32
+ - 带 Web 客户端的 DSH,0.2.1-rc.3 或更新版本(已在 0.2.1-rc.5 验证)。
33
+ - **压缩上下文并执行** 需要 DSH 组合中有 compaction 后端;没有时浮层会显示失败,可选择重试、仍然执行或取消。
34
+
35
+ ## 安装
36
+
37
+ npm 包名为 `@onefl666/dsh-great-plan`。通过 `plugin_manager` 的 `install_bundle` 安装已发布版本,target 用包 spec(例如 `@onefl666/dsh-great-plan@0.6.0`);本地开发时改用包目录的绝对路径。安装后插件在 Plugins 列表中显示为 **卓越计划**。
38
+
39
+ ## 使用
40
+
41
+ 1. 用 `/plan` 进入 plan 模式,让 Agent 提交计划。
42
+ 2. 审核卡出现后,点击 **执行选项**。
43
+ 3. 可选:选择模型与思考强度。选择会立即应用到当前会话,并与 Composer 模型选择器一致。
44
+ 4. 选择执行方式:
45
+ - **执行计划**:直接批准。
46
+ - **压缩上下文并执行**:先压缩。压缩不可用、无可压缩历史、请求失败或被取消时不再批准计划:选择 **重试压缩**、**仍然执行** 或 **取消**。运行中关闭浮层会取消等待。
47
+ - **清空上下文并执行…**:查看首条消息预览与本次执行开关、选择 Agent 模式后确认。新会话会携带已批准计划(以及你保留的原始指令与极简运行环境),并在末尾追加原生批准提示;消息发送后旧会话停止但保留。
48
+ 5. **返回修改** 隐藏审核卡并回到输入框提出修改,行为与原生 Discuss 一致;**执行计划** 等价原生 Approve。
49
+
50
+ ## 设置
51
+
52
+ 在侧边栏打开 **设置**,选择 **卓越计划**。**注入头脑风暴提示词** 控制 plan 模式提示词是否要求澄清、以 Team Lead 身份用 `spawn_teammate` 派出至少两个并行探索队友加一个规划队友的深入探索,以及由队友起草候选计划;关闭后仍保留证据链与执行交接要求。**注入 token 预算无上限提示词** 控制 plan 提示词与「清空上下文并执行…」首条消息中的预算提醒;关闭后只移除该提醒。**携带原始用户指令** 控制是否把 plan 模式期间的用户文本按时间顺序带入新会话。**极简模式下附带运行环境** 控制极简预设的新会话是否附带工作区目录、系统平台、时间与清空说明。四个开关默认开启,由 Host 保存,刷新后保持。处于关闭状态的开关还会显示 **恢复默认**,通过同一配置表单写回默认值(开启)。
53
+
54
+ ## 命令
55
+
56
+ `/great-plan-compact` 压缩待审核计划之前的历史。**压缩上下文并执行** 会自动调用它;它也会出现在命令菜单中,不接受参数。
57
+
58
+ ## 已知限制
59
+
60
+ - 模型列表已提供简单子串搜索;完整选择仍用 Composer 的模型控件,两者不共享状态。
61
+ - 选择模型会按 DSH 既有行为同时保存为默认模型。
62
+ - 压缩会产生一次摘要模型请求。
63
+ - 新会话标题前缀与旧会话停止均为 best-effort。
64
+ - 浮层打开时,原生 **Approve** / **Request changes** 位于浮层之后;请先关闭浮层(或使用「返回修改」,等价 Request changes)再操作原生按钮;浮层内的「执行计划」就是 Approve。
65
+ - 中文界面下,对话中的命令结果卡片仍为英文(Host 命令契约没有 locale);浮层内的压缩失败文案已本地化。
66
+ - 预算、头脑风暴与证据提示均为建议性约束,插件不校验模型是否遵循,也不核实队友是否真的被派出;命令描述不支持多语言。设置开关依赖 DSH 的 settings 服务;不可用时该页不会注册,四个开关均按默认开启处理。
67
+ - 无限预算提醒只加入 plan 模式提示词与「清空上下文并执行…」首条消息;「压缩上下文并执行」不会添加该提醒。设置界面不可用时,客户端按默认开启处理新会话开关。
68
+ - 原生批准提示(`Plan approved — plan mode exited; carry out the plan starting with your next step.`)始终追加在「清空上下文并执行…」首条消息末尾,固定英文,不受三个本次执行开关控制;「压缩上下文并执行」不重复追加,原生审批结果已携带同一句。预览会计入总字符数。
69
+ - plan 模式用户指令从旧会话已加载的事件窗口读取;插件最多回看 8 个历史页寻找当前 plan 模式起点,找不到时回退当前回合或最后一条用户文本。预览读取的结果会复用于执行。指令永不截断:预览会显示总字符数、估算 tokens,超过约 32,000 字符给出超大提示,但极长的对话仍会产生很大的首条消息。
70
+ - 预览中的极简运行环境在进入清空视图时读取;执行时会重新读取时间,因此预览时间可能与实际不同。
71
+ - 极简模式运行环境从浏览器读取(平台、本地时间与 IANA 时区)。远端 Web 部署中它描述的是浏览器环境,不一定等于 Host;工作区目录仍来自 Host 侧工作区。
72
+ - 新会话使用部署默认的权限与沙箱上下文,不继承旧会话的权限或沙箱状态。
73
+ - 「清空上下文并执行…」在发送提示词前会复核审核是否仍待处理,并在消息发送后停止旧会话。其他客户端仍可能在这段短暂窗口内批准同一审核,因此多客户端残余竞态未完全消除;若审核结算已导致浮层关闭,后续失败只会写入浏览器控制台。
74
+
75
+ ## 开发
76
+
77
+ 无构建步骤、无安装依赖。Host 半会导入几个由运行中的 DSH 安装提供的包(`@deepseek-ai/schemastery`、`@deepseek-ai/dsh-compaction`),已在 `peerDependencies` 中声明。运行 gate(语法检查 + 离线测试);`PATH` 中没有 node 时会自动使用 DSH 自带的 Node:
78
+
79
+ ```bash
80
+ bash tools/gate.sh
81
+ ```
82
+
83
+ gate 通过只说明语法与离线测试正常,不代表 GUI 行为正确。同一 gate 在 CI(`.github/workflows/gate.yml`,Node 24)中随 push 与 pull request 运行。修改 Host 后需重启 DSH;修改 Client 后 touch `lib/client.js` 并刷新页面。架构、GUI 手工清单与约定见 [AGENTS.md](https://github.com/onefl666/dsh-great-plan/blob/main/AGENTS.md)。
84
+
85
+ ## 项目结构
86
+
87
+ | 路径 | 作用 |
88
+ |---|---|
89
+ | `lib/index.js`、`lib/host/` | Host 半:`/great-plan-compact` 命令与 plan 模式提示词段 |
90
+ | `lib/client.js`、`lib/client.<name>.js` | Client 半:入口及 `ui`、`settings`、`model`、`preset`、`actions`、`panel` chunk |
91
+ | `locale/` | Plugins 列表的标题与描述 |
92
+ | `test/manifest.test.js`、`test/host/`、`test/client/` | 离线测试:包清单,以及 Host 与 Client 两套用例 |
93
+ | `docs/promo/` | 宣传视频源文件;仅存在于仓库,渲染帧目录被 git 忽略 |
94
+ | `tools/gate.sh` | 验证 gate |
95
+ | `.github/workflows/gate.yml` | CI:push 与 pull request 时运行 gate |
96
+
97
+ npm 包只包含 `lib/index.js`、`lib/host/`、`lib/client*.js`、`cordis.patch.yml`、`locale/`、`icon.svg`、两个 README 与 `LICENSE`;`test/`、`tools/`、`.github/`、`docs/`、`AGENTS.md` 仅存在于仓库。
98
+
99
+ 详见 [AGENTS.md](https://github.com/onefl666/dsh-great-plan/blob/main/AGENTS.md) 的 Module Map。
100
+
101
+ ## 许可
102
+
103
+ [MIT](LICENSE) © 2026 onefl666。npm 包名:`@onefl666/dsh-great-plan`。
@@ -0,0 +1,3 @@
1
+ - insert:
2
+ - id: great-plan
3
+ name: '@onefl666/dsh-great-plan'
package/icon.svg ADDED
@@ -0,0 +1,19 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64">
2
+ <defs>
3
+ <linearGradient id="gpFlowBg" x1="8" y1="8" x2="56" y2="56" gradientUnits="userSpaceOnUse">
4
+ <stop offset="0" stop-color="#2f81f7"/>
5
+ <stop offset="1" stop-color="#1b4fbf"/>
6
+ </linearGradient>
7
+ <linearGradient id="gpFlowDone" x1="39" y1="18" x2="54" y2="45" gradientUnits="userSpaceOnUse">
8
+ <stop offset="0" stop-color="#ffd66b"/>
9
+ <stop offset="1" stop-color="#ff9f43"/>
10
+ </linearGradient>
11
+ </defs>
12
+ <rect x="4" y="4" width="56" height="56" rx="16" fill="url(#gpFlowBg)"/>
13
+ <path d="M18 42V34c0-5.5 4.5-10 10-10h9" fill="none" stroke="#ffffff" stroke-width="5" stroke-linecap="round"/>
14
+ <path d="M33 24h8l-4.5-4.5M41 24l-4.5 4.5" fill="none" stroke="#ffffff" stroke-width="4.5" stroke-linecap="round" stroke-linejoin="round"/>
15
+ <rect x="12" y="36" width="12" height="12" rx="3.5" fill="#ffffff"/>
16
+ <rect x="22" y="18" width="12" height="12" rx="3.5" fill="#ffffff" opacity="0.96"/>
17
+ <circle cx="46" cy="40" r="10" fill="url(#gpFlowDone)"/>
18
+ <path d="m40.5 40 3.6 3.6 7.3-8" fill="none" stroke="#ffffff" stroke-width="3.5" stroke-linecap="round" stroke-linejoin="round"/>
19
+ </svg>