dsh-plugin-prompt-tool 0.8.1 → 1.0.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.
Files changed (72) hide show
  1. package/README.md +58 -50
  2. package/engine/character-tools.mjs +3 -6
  3. package/engine/compositions/library/agent-instructions.yml +1 -1
  4. package/engine/compositions/library/command-goal.yml +1 -1
  5. package/engine/compositions/library/compaction.yml +1 -1
  6. package/engine/compositions/library/delegation-ptc.yml +1 -1
  7. package/engine/compositions/library/delegation.yml +1 -1
  8. package/engine/compositions/library/persistent-shell.yml +1 -1
  9. package/engine/compositions/library/planning.yml +1 -1
  10. package/engine/compositions/library/skill-filesystem-cordis.yml +1 -1
  11. package/engine/compositions/library/skill-filesystem.yml +1 -1
  12. package/engine/compositions/library/tool-ask-user.yml +1 -1
  13. package/engine/compositions/library/tool-bash.yml +1 -1
  14. package/engine/compositions/library/tool-cordis.yml +1 -1
  15. package/engine/compositions/library/tool-fs-search.yml +1 -1
  16. package/engine/compositions/library/tool-fs.yml +1 -1
  17. package/engine/compositions/library/tool-goal.yml +1 -1
  18. package/engine/compositions/library/tool-jobs.yml +1 -1
  19. package/engine/compositions/library/tool-plugin-manager-disabled.yml +1 -1
  20. package/engine/compositions/library/tool-plugin-manager.yml +1 -1
  21. package/engine/compositions/library/tool-present.yml +1 -1
  22. package/engine/compositions/library/tool-presentation.yml +1 -1
  23. package/engine/compositions/library/tool-pwsh.yml +1 -1
  24. package/engine/compositions/library/tool-skill.yml +1 -1
  25. package/engine/compositions/library/tool-todo.yml +1 -1
  26. package/engine/compositions/library/tool-web.yml +1 -1
  27. package/engine/compositions/source/local/prompt-config-engine.yml +1 -1
  28. package/engine/executor.mjs +39 -26
  29. package/engine/instruction-hint.mjs +6 -2
  30. package/engine/layers.mjs +38 -30
  31. package/engine/order.mjs +17 -0
  32. package/engine/schema.mjs +16 -6
  33. package/engine/session-var-tools.mjs +3 -6
  34. package/engine/st-render.mjs +8 -4
  35. package/engine/subagent-tool-policy.mjs +25 -10
  36. package/engine/world-book-tools.mjs +3 -6
  37. package/lib/client.js +3451 -3519
  38. package/lib/client.js.map +1 -1
  39. package/lib/index.d.mts +233 -272
  40. package/lib/index.mjs +1020 -1226
  41. package/lib/{preset-package-BnJqrU4R.mjs → module-package-Cm3fHHlp.mjs} +997 -594
  42. package/lib/{paths-CY5psBqE.d.mts → paths-BgL42sSM.d.mts} +191 -149
  43. package/lib/preset-transfer.d.mts +2 -2
  44. package/lib/preset-transfer.mjs +2 -2
  45. package/modules/ponytail/configs/0000-ponytail-rules.yml +102 -0
  46. package/modules/ponytail/configs/0010-ponytail-level-full.yml +19 -0
  47. package/modules/ponytail/configs/0020-ponytail-level-lite.yml +19 -0
  48. package/modules/ponytail/configs/0030-ponytail-level-ultra.yml +19 -0
  49. package/modules/ponytail/module.yml +172 -0
  50. package/package.json +46 -80
  51. package/templates/20-system-section.yml +4 -1
  52. package/templates/70-subagent-maintenance.yml +1 -1
  53. package/templates/tools/50-delegate-worldbook.yml +1 -1
  54. package/preset/pt-cordis/preset.yml +0 -43
  55. package/preset/pt-cordis/skills/cordis-composition-reference/SKILL.md +0 -29
  56. package/preset/pt-cordis/skills/cordis-composition-reference/references/packages.md +0 -501
  57. package/preset/pt-cordis/skills/cordis-plugin-development/SKILL.md +0 -38
  58. package/preset/pt-cordis/skills/cordis-plugin-development/references/host-plugin.md +0 -60
  59. package/preset/pt-cordis/skills/cordis-plugin-development/references/mcp-bundle.md +0 -5
  60. package/preset/pt-cordis/skills/cordis-plugin-development/references/ui-plugin.md +0 -13
  61. package/preset/pt-cordis/skills/cordis-plugin-development/references/verification.md +0 -5
  62. package/preset/pt-cordis/skills/cordis-plugin-development/templates/decoration/client.js +0 -22
  63. package/preset/pt-cordis/skills/cordis-plugin-development/templates/decoration/cordis.patch.yml +0 -3
  64. package/preset/pt-cordis/skills/cordis-plugin-development/templates/decoration/index.js +0 -2
  65. package/preset/pt-cordis/skills/cordis-plugin-development/templates/decoration/package.json +0 -15
  66. package/preset/pt-cordis/skills/cordis-plugin-development/templates/mcp/cordis.patch.yml +0 -8
  67. package/preset/pt-cordis/skills/cordis-plugin-development/templates/mcp/package.json +0 -7
  68. package/preset/pt-cordis/skills/editing-cordis-compositions/SKILL.md +0 -84
  69. package/preset/pt-custom/preset.yml +0 -15
  70. package/preset/pt-minimal/preset.yml +0 -27
  71. package/preset/pt-ptc/preset.yml +0 -45
  72. package/preset/pt-standard/preset.yml +0 -43
package/README.md CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  > 一切皆可注入:把 DSH 官方开放的全部注入层级收敛为一个可配置提示词注入引擎——注入什么、注入到哪一层、何时注入,全由提示词配置决定。
4
4
 
5
- DSH 生态的提示词注入标准层:一个 `prompt-config-engine.mjs` 接线官方六个插入点(`agent/pre-step`、`systemPrompt.section`、`systemPrompt.context`、`agent/request`、`llm/stream`、`tools/*`),内置五个预设(四个官方基型 + 自定义空白,默认 `pt-standard`),开箱即用。
5
+ DSH 生态的提示词注入层:`prompt-config-engine.mjs` 对接九个官方插入点,把可叠加的注入方案保存在各自模块中。包内模块库提供复制起点;模块不注册为官方会话预设。
6
6
 
7
- > 能力来源:工具目录锚定与晋升门控移植自 [dsh-anchored-standard](https://github.com/xiaobright/dsh-anchored-standard)(MIT,上游已于 2026-09-10 冻结),近距离引导参考 [dsh-router-standard](https://github.com/yjh051108/dsh-router-standard),缓存铁律参考 [dsh-super-injector](https://github.com/yjh051108/dsh-super-injector)。**本项目只移植引擎能力,不再分发上游预设**:锚定/深思链路以引擎模块与参数开关提供,由使用者在自己的预设里按需装配。
7
+ > 能力来源:工具目录锚定与晋升门控移植自 [dsh-anchored-standard](https://github.com/xiaobright/dsh-anchored-standard)(MIT,上游已于 2026-09-10 冻结),近距离引导参考 [dsh-router-standard](https://github.com/yjh051108/dsh-router-standard),缓存铁律参考 [dsh-super-injector](https://github.com/yjh051108/dsh-super-injector)。**本项目只移植引擎能力,不再分发上游预设**:锚定/深思链路由模块与规则按需声明。
8
8
 
9
9
  ## 安装
10
10
 
@@ -28,38 +28,40 @@ dsh --profile prompt-tool
28
28
 
29
29
  ### 当前格式与宿主要求
30
30
 
31
- 预设参数只认 `preset.yml` 的当前字段,没有运行时兼容层。
31
+ 模块行为存于 `module.yml`。当前公开共享参数与旧规则快捷参数分开管理:旧快捷参数只经统一适配器投影到规则,保存规则时清理已有承接的旧键;无承接的值保留并告警。
32
32
 
33
33
  技能调用策略只接受官方 frontmatter 键,状态文件只接受 v4;不提供旧布局迁移、回滚或备份脚本。
34
34
 
35
- 旧的 base-only profile(只有 `dsh-base`)首次启动时,插件会把 `@deepseek-ai/dsh-web-app` 补进该 profile 的 `dsh.profile.bundles`(写前留 `.bak`,幂等),并提示重启;需要重启 DSH 服务后生效,插件不会替你重启运行中的服务。
35
+ 只有 `dsh-base` 的 profile 缺少 Web 能力时,插件仅报告诊断;所需 bundle 由官方插件管理流程装配,插件不改写 profile 或重启服务。
36
36
 
37
- 需要 DSH `0.1.7-alpha.1+`(Cordis `4.0.3`):设置接入 ConfigForms,插件持有的预设通过官方 agent-preset-registry 注册;宿主不再自动扫描 `.agent-presets`。本插件继续管理该目录里的定义与物化文件。官方组合模块跟随核验过的最新 master(`pnpm rebuild:composition`),记录实际提交并以当前快照离线复验。Node 需要 `^22.19.0 || >=24.0.0`,与官方宿主一致。升级后需要用户重启 DSH 服务。
37
+ 需要 DSH `0.2.0-rc.1+`(Cordis `4.0.4`):设置接入 ConfigForms,模块定义与物化文件保存在插件自己的存储根 `$DSH_HOME/.prompt-tool/`(宿主从不扫描该目录),运行时装配由插件的配装通道在每个 Agent 的 scope 里完成,**按存储根 `config.yml` 的启用表逐模块装配**。官方组合模块快照随包分发(`engine/compositions/library/`),不再从官方预设同步——那套生成器已随内置预设目录退场。Node 需要 `^22.19.0 || >=24.0.0`,与官方宿主一致。升级后需要用户重启 DSH 服务。
38
+
39
+ `peerDependencies` 里的 `@deepseek-ai/dsh-*` 声明为 `>=0.2.0-rc.1`(无上界):宿主在加载插件时会逐条校验这些 peer,范围写死到某个次版本会让每次宿主升版都判为不兼容;这个范围覆盖 0.2.0 及以上,同时把已知不兼容的更早版本挡在外面。实际锁定的版本以 `pnpm-lock.yaml` 为准。`minimumReleaseAgeExclude` 由 pnpm 维护——安装时 pnpm 会把 lockfile 拿去比对供应链策略,因此升级 DSH 后跑一次 `pnpm install` 即可,不要手工逐条增删。
38
40
 
39
41
  ## 特性
40
42
 
41
- - 🔌 **六个官方插入点一次接线**:一个引擎注册全部可注入层级,共享同一套过滤与降级语义
43
+ - 🔌 **九个官方插入点按需接线**:一个引擎接入声明所需的插入点,共享同一套过滤与降级语义
42
44
  - ✍️ **一切皆可配置**:`layer / strategy / position / promotion / audience / modelScope / mergeMode / order / text / texts / fill / variables / params` 全开放
43
45
  - 🧑‍🤝‍🧑 **消息受众三态**:`audience: main / subagent`,省略 `audience` 表示公用;身份类提示词可只注入子代理
44
- - 🗂️ **内容与执行分离**:每条提示词配置渲染为 `~/.dsh/.agent-presets/<预设>/prompt-configs/` 下的 yml,引擎按文件名数字前缀顺序扫描
46
+ - 🗂️ **内容与执行分离**:每条提示词配置物化为 `~/.dsh/.prompt-tool/modules/<模块>/configs/` 下的 yml;`module.yml.configOrder` 保存轻量序号,文件名前缀由它生成
45
47
  - 🧩 **三层合并**:引擎默认(按 params 生成)< 模板默认 promptConfigs < 预设 promptConfigs,同名 `id` 覆盖
46
- - 🖥️ **可拖动悬浮工作台入口**:工作台经官方 `shell.overlay` 渲染悬浮触发器与 body portal 抽屉;按钮可拖动、位置存插件自己的 localStorage、窗口变化自动夹回可见区(不读宿主布局树,已移除 `sidebar.footer.action` 几何探针);六页(主会话/子代理/工具预览/技能设置/预设配置/角色管理)在抽屉内渲染,抽屉用 fixed + z-index 置顶,不被宿主导航栏遮挡
48
+ - 🖥️ **可拖动悬浮工作台入口**:工作台经官方 `shell.overlay` 渲染悬浮触发器与 body portal 抽屉;按钮可拖动、位置存插件自己的 localStorage、窗口变化自动夹回可见区(不读宿主布局树,已移除 `sidebar.footer.action` 几何探针);五页(主会话/子代理/工具预览/技能设置/模块)在抽屉内渲染,抽屉用 fixed + z-index 置顶,不被宿主导航栏遮挡
47
49
  - 🧪 **六种内容策略**:`static / first-turn-anchor / guide-auto / custom-fallback / placeholder / world-book`(world-book 支持 ST selectiveLogic 选择性触发:任一/副键全中/排除)
48
50
  - 🛡️ **失败不伤会话**:单条失败跳过 + `warnOnce`;配置错误挂载时 fail loud;`dedupe: session` 持久幂等
49
- - 🧭 **通用 instruction-hint 引擎**:所有预设都可通过 `strategy: placeholder` 与 `fill: instruction-hint` 提示指令文件存在;实现位于 `engine/instruction-hint.mjs`,不绑定任何预设;它的 plugin 形态(挂 `instruction-hint` 行并 `enabled: true`,即参数桥 `params.instructionHint`)按模型可见 surface 去重,重挂不重复,被压缩遮蔽后才再次提示
51
+ - 🧭 **通用 instruction-hint 引擎**:模块可通过 `strategy: placeholder` 与 `fill: instruction-hint` 提示指令文件存在;实现位于 `engine/instruction-hint.mjs`。`layerSettings.pre-step.instructionHint` 可启用该能力,按模型可见 surface 去重,重挂不重复,被压缩遮蔽后才再次提示
50
52
  - 📦 **Bridge 载荷**:JSON 请求统一 32 MiB 硬上限并明确返回 413;角色卡原始图片走 64 MiB 流式通道,按 PNG 魔数识别。
51
53
  - 📂 **技能管理**:官方发现与会话快照统一技能来源、生效和遮蔽状态;单端开关写回技能文件。支持目录包与直属 Markdown 技能、创建、两种复制导入,以及用户根和引用根的可恢复删除;技能局部刷新保留其他页面草稿。
52
54
  - 🎭 **SillyTavern 导入**:JSON 预设、角色卡和独立世界书转换为本地预设——按官方顺序表保留启停,赋值模板运行时求值;不等价能力明确报告,采样参数由宿主管理
53
55
  - 🎴 **角色卡库**:PNG/JSON/YAML 角色卡与原生角色片段经统一预览后逐张入库;PNG 保留原图,更新保留角色记忆,按需应用到当前预设。
54
56
  - 📦 **预设交换**:文件夹、ZIP、原生 JSON/YAML 与 ST 来源共用识别、预览和完整候选安装;导出可选完整 ZIP 或仅定义 YAML。资源、覆盖及分享边界见 [资产交换文档](docs/asset-transfer.md)。
55
57
  - 📚 **世界书**:`character_book` 转 world-book 策略配置(`keys` 命中触发 / `constant` 常驻 / 正则键自动检测 / `selectiveLogic` 组合逻辑),与模块卡片同一存储与编辑(模块列表「世界书」过滤 + 批量启用/禁用)
56
- - 🛠️ **自定义工具**:preset.yml `customTools` 段声明式定义模型工具(执行器 shell/http/delegate/fs/ask-user,`{{args.x}}` 参数插值);参数与输出经官方 `dsh-tools` 转换器物化为标准 JSON Schema,非法参数产生标准工具错误,delegate 经 `ctx.tools.execute` 嵌套调度走完整官方工具管线;`customTools.scope` 暂不支持(显式拒绝)
57
- - 🛡️ **子代理工具策略**:preset.yml 顶层 `subagentToolPolicy` 段(opt-in)声明 ceiling、profiles、角色卡绑定、有序任务规则与受控模型扩权;`subagent` 固定走 spawn、`subagent_fork` 固定走 fork,按官方 `SubagentRun`/continuable 契约创建并在窗口内冻结 toolFilter;模型选择器和扩权参数在工具 body 前校验,模型路由经过 LLM preflight;UI 从官方 sessions snapshot 读取当前会话,并可编辑、停用、预览策略及查询存活 Agent 工具面
58
+ - 🛠️ **自定义工具**:module.yml `customTools` 段声明式定义模型工具(执行器 shell/http/delegate/fs/ask-user,`{{args.x}}` 参数插值);参数与输出经官方 `dsh-tools` 转换器物化为标准 JSON Schema,非法参数产生标准工具错误,delegate 经 `ctx.tools.execute` 嵌套调度走完整官方工具管线;`customTools.scope` 暂不支持(显式拒绝)
59
+ - 🛡️ **子代理工具策略**:module.yml 顶层 `subagentToolPolicy` 段(opt-in)声明 ceiling、profiles、角色卡绑定、有序任务规则与受控模型扩权;`subagent` 固定走 spawn、`subagent_fork` 固定走 fork,按官方 `SubagentRun`/continuable 契约创建并在窗口内冻结 toolFilter;模型选择器和扩权参数在工具 body 前校验,模型路由经过 LLM preflight;UI 从官方 sessions snapshot 读取当前会话,并可编辑、停用、预览策略及查询存活 Agent 工具面
58
60
  - ♻️ **Session 日志读取**:引擎冷启动与幂等扫描统一走官方 `session.snapshotEvents()`(DSH `0.1.2-alpha.4+`),不再读取已移除的 `session.events` 数组。
59
61
  - 🧩 **模板变量**:仅从预设顶层 `variables` 段提供 `{{key}}` 插值默认值,单条提示词配置的 `variables` 可局部覆盖——模块列表顶部「模板变量」卡片统一编辑(可折叠/清空/停用/失焦自动保存)。`params` 中的旧内容变量及 `params.variables` 不再读取,也不自动迁移;旧预设需自行整理到顶层后重新物化。锚定匹配引擎(anchor-match)统一 custom-fallback 与 world-book 的匹配语义
60
62
  - 💬 **会话变量工具**:`session_var`(list/get/set/clear)——模型维护角色状态(`{{心情}}` 等),会话级覆盖预设默认;ST 运行时宏(`{{lastusermessage}}` / `{{lastcharmessage}}`)从会话事件提取
61
63
  - 🧩 **工具按模块装配**:角色卡、世界书、会话变量、自定义工具分别由 `character-tools` / `world-book-tools` / `session-var-tools` / `tool-config-engine` 模块提供;不再维护重复的顶层工具开关
62
- - 📐 **显式按需装配**:`modules: []` 保持空组合;四个官方基型的人设直接由顶层 `persona` 段生成官方行,不再经模块库;不附加其他增强模块。Minimal 保持官方单 shell 基型;带隔离文件系统的本地 `filesystem-editor` 模块(`fs-local` + `str-replace-editor` 同隔离域)只由显式声明它的预设装配。首轮窄化/门控、来源过滤、工具名单、锚句、深思门与进度节拍**不再有专用能力模块**:它们由预设顶层 `triggers` 段的声明按需表达(`writePreset` 物化为 `triggers.yml`,`declared-triggers` 行读入注册;未声明 = 无该行为,不预装 ST 管理工具,也不内置可配置默认值);声明写错在挂载期响亮失败
64
+ - 📐 **显式按需装配**:空模块不自动附加增强能力;模块人设来自顶层 `persona`,官方工具与普通委派仍由会话原有预设提供。首轮门控、来源过滤、工具名单、深思门与进度节拍可由模块顶层 `triggers` 按需声明,物化为 `triggers.yml` 后由 `declared-triggers` 读入;声明错误在保存或挂载期明确报告。
63
65
 
64
66
  ## Web 客户端结构
65
67
 
@@ -71,25 +73,27 @@ Web 客户端按四层组织:
71
73
 
72
74
  ```text
73
75
  src/client/
74
- ├─ app/ # SlotRegistry owner、工作台壳与六页组合
76
+ ├─ app/ # SlotRegistry owner、工作台壳与五页组合
75
77
  ├─ data/ # typed bridge、Fields、状态 facade、保存与脏检测纯逻辑
76
78
  ├─ features/ # prompts / tools / subagents / skills / presets / characters
77
79
  └─ ui/ # 仅 props/callback 的共享交互与 CSS Modules
78
80
  ```
79
81
 
80
- 依赖方向固定为 `app → features → data/ui → shared contract`:跨领域组合只在 `app/workspace/pages/`,feature 不导入其他 feature 内部实现;标准控件优先复用 `@deepseek-ai/dsh-client-ui-primitives`。Client bridge 通过 `src/shared/bridge-contract.ts` 的 endpoint key 与 request/value map 调用,业务代码不拼接路径。样式按 owner 拆分,使用 DSH `--dsw-*` 语义 token,不定义插件级全局主题。
82
+ 依赖方向固定为 `app → features → data/ui → shared contract`:跨领域组合只在 `app/workspace/pages/`,feature 不导入其他 feature 内部实现。控件由插件持有,不运行时加载 Harness Client 包;官方能力通过 Cordis 服务与 slot 接入,类型依赖保留。Client bridge 使用 `src/shared/bridge-contract.ts` 的 endpoint key 与 request/value map。样式按 owner 拆分,只共享 `--dsw-alias-*` 主题颜色,安装和释放随插件生命周期。
83
+
84
+ 角色卡与世界书模型工具写入**该执行 Agent 实际配装的提示词层**(启用表 ∩ 磁盘,多个时取启用表第一个),不查询会话绑定的官方预设。保存等待物化完成;已保存但未生效会明确返回失败。失败定义保留诊断,方便修复。
81
85
  完整的当前目录、slot 生命周期、状态边界、可访问性和维护约束见 [Web 客户端 UI 结构框架](docs/ui-architecture.md)。
82
86
 
83
87
  ### 配置卡与工具预览
84
88
 
85
- - 六页工作台保留搜索、展开和滚动位置;工具、人设、策略以及非法 JSON/数字输入可跨页继续编辑。存在未保存草稿时,预设切换会提示先处理,不会无声覆盖。
89
+ - 五页工作台保留搜索、展开和滚动位置;工具、人设、策略以及非法 JSON/数字输入可跨页继续编辑。存在未保存草稿时,模块切换会提示先处理,不会无声覆盖。
86
90
  - 配置保存与校验位于长列表操作区,失败就近显示;低频卡片操作收进菜单,删除和丢弃文件草稿需明确确认。窄容器自动换行,键盘操作、明暗主题和减弱动效均沿用宿主规范。
87
91
 
88
92
  - 参数在模块列表的配置卡内编辑。引擎能力按实际 `modules` 装配显示,一项已装配能力一张卡,直接编辑自身参数;删除只移除该能力的模块声明。共享参数定义继续拥有字段、校验、默认草稿、保存快照和组合行映射。主/子代理模型保留专用配置卡。
89
93
  - 「指令提示」统一通过「前置步骤 → 内容策略:动态填充 → 填充来源:指令提示」编辑,不再作为独立策略入口。指令文件正文和授权保存仍归独立文件通道,不复制进预设。
90
- - AGENTS.md / CLAUDE.md 这类指令文件复用普通配置卡呈现(与 `example-pre-step` 同一个卡片组件、同一套展开表单分区),不做独立卡片或新的置顶卡;来源固定的绑定项(标识、注入层、内容策略、填充来源、配置类型、消息角色、合并方式、去重方式、来源类型、消息形式)置灰只读,名称/顺序/拼接位置/晋升范围/消息受众/模型范围可写(落独立指令策略),正文就地编辑、**焦点离开卡片时自动写回原文件**(版本冲突保留草稿并提供「重新读取」,没有单独的保存按钮)。
94
+ - AGENTS.md / CLAUDE.md 这类指令文件复用普通配置卡组件,保留名称、路径、正文和后续官方注入的启停;位置、顺序、晋升、受众与模型范围由官方负责,不提供文件卡控制项。名称和启停落独立指令策略,正文就地编辑、**焦点离开卡片时自动写回原文件**(版本冲突保留草稿并提供「重新读取」,没有单独的保存按钮)。
91
95
  - 创建菜单始终提供全部层级模板、工具和可添加能力,不受当前列表筛选限制。创建后只展开目标卡片(当它落在当前筛选视野内),不改动层级筛选与搜索词;同一提示词模板可重复创建,自动分配不重复标识。空内容不等于删除,保存和后台刷新保留未完成草稿;工具草稿在层级/世界书筛选往返时不丢失。
92
- - 工具也按模块装配,例如本地 `filesystem-editor` 同域提供文件系统与编辑工具。`library` 只放原样官方模块,本地适配归 `source/local`;模块旧名不兼容、不迁移。自定义模型工具经「添加能力 / 工具模块 → 添加工具模板 / 新建空白工具」配置名称、描述、参数、输出与执行器,保存前完整校验;不安装、连接或管理外部 MCP/DSH 插件。
96
+ - 插件装配自身工具能力,官方文件系统与编辑工具仍由宿主预设提供。自定义模型工具经「添加能力 / 工具模块 → 添加工具模板 / 新建空白工具」配置名称、描述、参数、输出与执行器,保存前完整校验;不安装、连接或管理外部 MCP/DSH 插件。
93
97
  - 「工具预览」是独立顶层页,参照官方插件目录:顶部统一搜索、可折叠分组、右侧预设选择、双列展开详情卡,窄屏单列。卡片显示「模型可见」,不伪造插件运行状态。当前会话与所选预设分别读取:既有会话仍使用冻结 generation,修改预设只影响后续 generation;不会隐藏同名自定义工具或自动恢复会话。
94
98
  - 在工具链的 `tool-config-engine` 能力卡中配置哪些自定义执行器需要用户批准;缺少批准服务时拒绝执行。生成目录保持只读,仍由预设重建产生。
95
99
 
@@ -104,40 +108,45 @@ src/client/
104
108
  `v2` 已按当前 `app / data / features / ui` 客户端结构更新,并通过 showcase 9/9 校验;无 `v2` 后缀的文件保留为首轮构图记录。本轮已使用 Microsoft Edge 完成 visual-check:containment/captures 均通过,保留 1440×900 与 2048×1320 的明暗截图及联系页;自动收据的 `visualReview` 仍为 `pending`,仅表示需要人工查看截图,不代表渲染失败。
105
109
 
106
110
 
107
- ## 预设参数体系
111
+ ## 模块参数体系
108
112
 
109
- 包内目录及定义 id 统一为 `pt-standard` / `pt-ptc` / `pt-minimal` / `pt-cordis` / `pt-custom`,默认 `pt-standard`。
110
- 初始化直接按同名复制:缺哪个目录只补哪个,已有目录不覆盖,也不运行时探测官方名称或重命名。
111
- 用户保存时以当前预设自身的 `preset.yml` 生成运行产物;现有用户预设不自动改名。
113
+ 初始化从包内 `modules/` 补建缺失的同名模块,已有目录不覆盖。保存与重建统一通过 `materializeModule` 读取目标模块自己的定义和正文,不借用工作台另一个模块的运行时副本。
112
114
 
113
- 预设行为由一份 `preset.yml` 单一配置源下发,参数所有者各自独立:
115
+ 部署 Config 只保留 `writePreset`,含义是模块运行总闸:关闭仅撤回运行贡献,不清空文件。`presetOrder`、`fallbackText` 和 `presetTemplate` 不再是部署设置;编辑目标通过请求头 `x-module-id` 传递,不切换或跟随官方会话预设。
116
+
117
+ 模块行为由一份 `module.yml` 下发,参数所有者各自独立:
114
118
 
115
119
  | 层 | 职责 |
116
120
  |---|---|
117
- | `layerSettings.<层名>` | 同层共享的引擎行为参数(锚定/引导/PTC/门控/模型/工具),经参数桥落位组合行;UI 内嵌真实配置卡,优先级最高 |
121
+ | `layerSettings.<层名>` | 模块共享参数;磁盘归属由参数目录的 `storageLayer` 固定,不随 UI 分组改变 |
118
122
  | `moduleConfigs` | 行级 config 直写通道(参数桥未覆盖的键:超时/环境白名单/ST 导入等),不锁定覆盖 UI 可管理参数 |
119
123
  | `promptConfigs` | 独立命名的注入规则,`params` 仅属于该规则;与预设默认及生成配置按 id 合并 |
124
+ | `configOrder` | 配置 ID 到序号的轻量映射;正文仍属于各自配置,文件名前缀由此物化 |
120
125
 
121
126
  ### 共享参数一览(全部可选,缺省按对应模块解释)
122
127
 
123
128
  | 分类 | 键 |
124
129
  |---|---|
125
- | 锚定 | `firstTurnAnchor` `firstTurnCustom` `firstTurnText` `firstTurnWord`(空 = 自动从锚句派生确认词)`firstTurnBuild` `firstTurnInspect` `firstTurnDeep` |
126
- | 引导 | `guideCustom` `guideText` `guideWeak` `guideDeep`(复杂判定 fallback 复用锚定的 `complexPattern`) |
127
- | 指令 | `instructionHint`(挂 `instruction-hint` 行并 `enabled: true`,晋升后只发一次文件路径提示) |
128
- | 人设 | preset.yml 顶层 `persona` 段(官方 `@deepseek-ai/dsh-persona` 行 config 同构):`prefix`(必填)/ `suffix` / `complete` / `includeRuntimeContext`;`complete` 独占 system prompt,与提示词配置的「独占」互斥;子代理独立人设走 `moduleConfigs.tool-subagent.persona`(官方 per-child persona,不继承主会话) |
129
- | 深度 | `maxDepth`(0 禁止委派 / `provider-managed` / 正整数) |
130
+ | 主模型 | `modelProvider` `modelName` `modelReasoningEffort` `modelTemperature` `modelMaxTokens` |
131
+ | 子模型 | `subagentModelProvider` `subagentModelName` `subagentReasoningEffort` `subagentTemperature` `subagentMaxTokens` |
132
+ | 策略深度 | `maxDepth`,只约束已启用的插件子代理工具策略;普通官方委派由宿主管理 |
133
+ | 指令提示 | `instructionHint`,默认关闭 |
134
+ | 工具 | `toolGitBashEnabled` `customToolRequireApproval` |
135
+
136
+ 以上共 14 个公开共享参数。锚定、引导及正文注入的 15 个旧快捷键由 `host/legacy-prompt-params.ts` 读取兼容,投影到 `near-anchor`、`router-guide`、`prompt-injector` 规则;新编辑器直接编辑规则。成功保存规则时清理已有承接的旧键,无承接的旧值保留并告警,旧 `fieldSources` 不再锁住这些规则字段。编辑器输出上限 `strReplaceEditorMaxOutputChars` 已退出插件参数面,由宿主工具配置负责。
130
137
 
131
138
  > 首轮工具面与输出封顶、`stages` 式阶段窄化、pre-step 来源名单、常驻工具白/黑名单、锚句、深思门与进度节拍都没有共享参数键:它们改由预设顶层 `triggers` 段声明(示例见 [engine 复用指南](docs/engine-reuse.md))。其中 `stages` 阶段窄化与「晋升后才切 PTC 呈现」是本轮的两项净损失;子代理工具面只能由 `subagentToolPolicy` 实例策略授权。
132
139
 
133
- > 注:`injectPrompt`(params)= 锚定确认后注入 preset.md 的开关。AGENTS.md 走「文件即真相」:文件集合、正文与版本**不再物化进生成目录**,而是由宿主按**本会话工作区**现场解析(`$DSH_HOME/AGENTS.md` + 工作区 cwd→项目根链的 AGENTS.md/CLAUDE.md/AGENTS.local.md/CLAUDE.local.md);工作台里的文件卡就是该文件,编辑框里的内容保存后直接写回原文件,卡片定义与正文都不进 preset.yml。插件不写常驻受管块。
140
+ AGENTS.md 走「文件即真相」:文件集合、正文与版本不物化进生成目录,而是由宿主按本会话工作区现场解析(`$DSH_HOME/AGENTS.md` + 工作区 cwd→项目根链的 AGENTS.md/CLAUDE.md/AGENTS.local.md/CLAUDE.local.md);工作台中的文件卡指向原文件,卡片定义与正文都不进 `module.yml`。插件不写常驻受管块。
134
141
 
135
- 独立指令来源与指令策略(2026-09-14 起):
142
+ 官方指令注入与逐文件开关:
136
143
 
137
- - 注入由宿主侧 pre-step 协调器统一执行(预设卡 + 独立指令文件卡同一批算法、每个 scope 只有一个执行器);正文以 `Instructions from: <路径>` 头 literal 注入,不经过预设变量插值。
138
- - 行为开关在 `$DSH_HOME/.prompt-tool/instructions.yml`:启停、层内序号、位置、晋升、受众、模型范围。**默认 `enabled: false`**(安全缺省:键缺失即视为关闭,只有显式 `enabled: true` 才参战;策略文件不因读取自动创建),需在工作台模块列表工具栏的「独立指令文件来源」总开关里显式开启;与官方 `@deepseek-ai/dsh-agent-instructions` 同装时由负责人冲突规则让位(同一正文只由一方注入)。`preset.yml#agentsHints` 已不再生效(旧字段不迁移、不删除)。
139
- - 同一文件同版本在可见上下文里只注入一次;文件内容变化会在下一个合适时机注入新版本;成功压缩后同版本会重新注入一次;已注入过的文件被清空/删除只发一次失效通知,历史正文不撤回。
140
- - 负责人冲突:预设里仍挂着官方 `@deepseek-ai/dsh-agent-instructions` 行时,独立来源**不注入**(同一正文只由一方注入),工作台会显示该状态;要用插件来源请先在预设里去掉官方指令行/模块再开启策略。
144
+ - 官方 `@deepseek-ai/dsh-agent-instructions` 负责发现、读取、预算、更新与压缩恢复,预设须保留官方指令行;插件只在消息进入会话前过滤,不再自行注入文件正文。文件可读不代表已经注入。
145
+ - 指令文件卡保留名称、正文编辑和启停;关闭只拦截该文件**后续**的官方注入,历史正文不撤回,重新开启不强制重放。首次请求前关闭即可阻止可识别文件进入新历史;开关不阻止官方读取文件。
146
+ - `$DSH_HOME/.prompt-tool/instructions.yml` 只保存 `files[fileId].enabled` 与 `name`,跨预设共享,**默认放行**。不再提供「独立指令文件来源」总开关或文件级位置、顺序、晋升、受众、模型范围;自定义消息仍用普通前置步骤配置。
147
+ - 旧策略顶层 `enabled` / `defaults` 及文件级注入参数读取时忽略、下一次成功保存时清理;旧顶层关闭不会转换为逐文件关闭。`module.yml#agentsHints` 仍不生效,策略缺失不因读取自动创建。
148
+ - 过滤覆盖官方基线、附加、更新和移除消息,并同步对应 `source.changes`。无法可靠分段的官方内容原样放行并诊断;不识别的文件身份也保持官方内容,不新增远程来源管理。已被官方预算省略的内容不由插件补回。
149
+ - 预设级 `instructionHint` 保持可选、默认关闭;启用后先过滤,再把剩余符合条件的官方全文转换为路径提示。它不替换已经进入历史的全文。决策边界见 [ADR-0004](docs/adr/0004-official-instruction-filter.md)。
141
150
 
142
151
  指令文件正文属于用户自己的文件,不受预设生命周期管辖。工作台按**打开时解析出的会话工作区**读取文件快照(正文 + 文件身份 + 字节版本 + 读取状态一次取回),正文在**焦点离开卡片**(或列表「保存」)时写回原文件:
143
152
 
@@ -146,14 +155,14 @@ src/client/
146
155
  - 读取失败(不可读/超限/文件消失)与「读取成功的空文件」严格区分:前者不可编辑、不可保存,不用空正文掩盖错误。
147
156
  - 原子写入(tmp + rename,保留原权限),失败保留原文件并清理临时文件;正文不受预设变量插值影响。
148
157
 
149
- 模型参数按预设与所属层独立保存。主模型路由和采样参数只覆盖该预设的模型请求,不自动回写宿主全局默认;子代理路由继续由该预设的委派参数提供。
158
+ 模型参数按模块独立保存,不自动回写宿主全局默认。主模型参数作用于主会话请求;子模型 provider/name 与采样参数作用于本地子代理的实际请求,不改写普通官方委派的 spawn 预检。
150
159
 
151
160
  | 段 | 键 |
152
161
  |---|---|
153
162
  | `layerSettings.agent-request`(主对话) | `modelProvider` `modelName` `modelReasoningEffort` `modelTemperature` `modelMaxTokens` |
154
163
  | `layerSettings.subagent-start`(子代理) | `subagentModelProvider` `subagentModelName` `subagentReasoningEffort` `subagentTemperature` `subagentMaxTokens` `maxDepth` |
155
164
 
156
- 读取当前结构后展平到内部 EngineParams;保存只更新所属层。预设与代码同步维护当前格式,不提供旧 `params` / 模型段的兼容读取、离线迁移或迁移备份,字段归属见[参数框架](docs/architecture-params.md)。人设仍统一写顶层 `persona` 段;子代理独立人设由 `moduleConfigs.tool-subagent.persona` 声明。示例:
165
+ 读取当前结构后展平到内部 EngineParams,保存只更新 `storageLayer` 指定的层。旧顶层 `params` / 模型段不参与运行参数,规则快捷键的兼容范围见[参数框架](docs/architecture-params.md)。人设独立写在顶层 `persona` 段,由模块配装通道在 Agent scope 注册。示例:
157
166
 
158
167
  ```yaml
159
168
  persona:
@@ -165,9 +174,9 @@ persona:
165
174
 
166
175
  工作台「模型路由」卡顶部另有**当前会话**区(仅主对话作用域):显示活动会话的模型/思维程度(会话 `modelSelection` 投影,缺省回退宿主默认),模型下拉展示全部可用模型并按服务商分组,选择模型时自动回写对应服务商;切换走官方 `session.selectModel`——对当前会话立即生效并被宿主持久化为新会话默认,与官方模型选择器双向同源;子代理会话与宿主默认场景不支持会话级切换。预设参数非空时按请求覆盖会话选择(参数桥优先级不变)。
167
176
 
168
- 预设事实同样跟随官方会话:官方「新建会话」旁的预设选择器走**会话级**切换(只改那个空白会话,不改宿主默认预设),插件读会话投影 `agentPreset` 后自动把工作台切到该预设——跟随只写同一份插件预设事实(不重复切换会话),官方侧选完,主会话页的配置、参数与工具预览即刻对应该预设。目标预设不在插件管理目录(例如官方随包预设)时**不跟随**并提示;当前预设仍有未保存草稿时保持不动,等草稿处理完再跟随。
177
+ 模块编辑选择与官方会话预设独立。切换编辑模块只改变请求目标;未指定目标时由服务端解析默认目录,bootstrap 的模块身份、参数、变量与配置卡来自同一目录。启用哪些模块由 `config.yml.enabled` 决定。
169
178
 
170
- > 根目录 [preset.yml](preset.yml) 覆盖全部 30 个共享参数与九层规则。`pnpm rebuild:preset-template` 从权威契约重建;规则默认关闭,共享参数按需取消注释。
179
+ > 根目录 [module.yml](module.yml) 覆盖 14 个公开共享参数与九层规则。`pnpm rebuild:preset-template` 从权威契约重建;规则默认关闭,共享参数按需取消注释。
171
180
 
172
181
  ## 提示词配置(九个官方插入点)
173
182
 
@@ -183,20 +192,20 @@ persona:
183
192
  | `subagent-start` | `subagent/start` + `Agent.inject` | 子代理事件匹配与注入文本;模型/深度在卡内共享设置 |
184
193
  | `subagent-end` | `subagent/end` + 可选 `Agent.inject` | `params.action=observe\|inject-main`,后者投递到所属主会话 |
185
194
 
186
- 九个插入点彼此独立,没有跨层全局运行顺序;`order` 只在同一插入点内生效。
195
+ 九个插入点彼此独立,没有跨层全局运行顺序。模块配置在同一插入点、位置内按 `configOrder` 序号排列;`system-section` 与 `runtime-context` 的 `order` 保留官方定位语义。
187
196
  UI / 写盘按上表分组;这是展示顺序,不是模型提示词优先级。详细支持字段、限制与官方依据见[九层对照](docs/injection-point-contracts.md)。
188
197
  模型实际收到的提示词文本顺序更接近 `system-section → runtime-context → pre-step`;`agent-request` / `llm-stream` / `tool-pipeline` 是控制通道。
189
198
 
190
- 默认四条:`00-near-anchor`(首句锚点)、`10-router-guide`(每轮引导)、`20-prompt-injector`(we 确认后注入 preset.md 一次)、`30-instruction-hint`(指令文件提示)。
199
+ 主会话与子代理的配置列表沿用原模块页的拖拽按钮样式,也可聚焦按钮后用上下方向键移动。“当前模块”范围保留配置编辑与本模块排序;点击“跨模块排序”后,同一列表显示已启用模块中符合当前受众和筛选的配置摘要,支持跨模块拖拽和上下移,隐藏配置保留原有槽位。进入前保存当前模块配置草稿,字段等草稿未完成时拒绝切换;返回当前模块时重新读取。模块页不再另设排序区。服务端按模块 ID+配置 ID 写回轻量序号,拒绝未知、重复身份和过期版本,不接收正文或任意序号。新启用模块的未编号或冲突配置接在尾部,重复启用保序,详见 [排序决策](docs/adr/0006-module-config-order.md)。
191
200
 
192
201
  - `mergeMode`:`separate`(默认)同位置多条为独立消息;`merged` 同位置拼接为一条
193
- - `order`:数值小者更靠近插入锚点,同时决定 `merged` 组内拼接顺序
202
+ - `order`:官方 system/context 位置、无模块来源的独立引擎与触发器、ST 世界书预算仍保留各自语义,不由排序界面改写
194
203
  - 文本插值:`{{key}}` 全层支持——配置/预设 `variables` 优先,ST 运行时宏(lastusermessage 等)次之,内置 `{{DSH_HOME}}/{{WORKSPACE}}/{{CWD}}` 兜底,未注册保留字面(system-section 注册期无会话时运行时宏替换为空,不残留)
195
204
 
196
205
 
197
206
  ## SillyTavern 导入
198
207
 
199
- 工作台「预设配置」页按内容识别原生预设与 SillyTavern 来源;ST JSON/YAML 预设卡片经预览确认后,按注入层级映射为本地预设:
208
+ 工作台「模块」页按内容识别原生模块与 SillyTavern 来源;ST JSON/YAML 预设卡片经预览确认后,按注入层级映射为本地模块:
200
209
 
201
210
  - `prompts[]` → `promptConfigs`:system 角色进入 `system-section`,其余进入 `pre-step`;官方 `prompt_order[].order[]` 决定启停与相对顺序,深度位置保留来源并报告降级
202
211
  - 采样参数(`temperature` / `openai_max_tokens` / `reasoning_effort`)**剥离**——模型参数统一由「模型设置」UI / 宿主默认管理
@@ -209,11 +218,11 @@ UI / 写盘按上表分组;这是展示顺序,不是模型提示词优先级
209
218
  - 角色卡 `extensions.depth_prompt` 保留为一条**默认禁用**的 pre-step 配置(ST 只在群聊自动注入),可在工作台手动启用
210
219
  - `modules` 按需装配:`prompt-config-engine` 与上述 ST 管理工具始终存在;含 system-section 时补 `persona`(`complete: false` 允许 system 段生效);含有效世界书条目时补 `world-book-tools`
211
220
 
212
- 转换结果是一个普通预设(id 由文件名生成),可在工作台预设切换器中直接使用。字段级参数对照与完整示例见 [SillyTavern.md](docs/SillyTavern.md)。
221
+ 转换结果是一个普通模块(id 由文件名生成),可在工作台「模块」页的模块列表中直接启用。字段级参数对照与完整示例见 [SillyTavern.md](docs/SillyTavern.md)。
213
222
 
214
223
  ### 角色卡(PNG / JSON)与角色卡库
215
224
 
216
- 工作台「角色管理」页导入角色卡到**角色卡库**(`~/.dsh/.agent-presets/.characters/<id>/`):
225
+ 工作台「模块」页的角色卡素材区把角色卡导入**角色卡库**(`~/.dsh/.prompt-tool/.characters/<id>/`):
217
226
 
218
227
  - **PNG**:`ccv3` 优先 / `chara` 兜底;按魔数识别并受限解码,原始文件先暂存、预览确认后入库,保留原图。
219
228
  - **JSON/YAML**:支持 ST 角色数据和自包含原生角色片段。批次逐张预览,不把多份来源合并成一张角色卡;所有大小的文件都先预览再提交。
@@ -243,20 +252,19 @@ UI / 写盘按上表分组;这是展示顺序,不是模型提示词优先级
243
252
  pnpm install && pnpm build
244
253
  pnpm test # 全量契约与行为测试(隔离 cwd 运行):参数契约/注入装配/六插入点/生成链路/引擎语义/组合重建/模型路由/UI 契约/安全边界
245
254
  pnpm typecheck && pnpm lint
246
- pnpm verify:host # 官方包基线:声明范围、安装版本、解析目标(拒绝源码 link)、缺失声明与 inject peer
255
+ pnpm verify:host # 官方包范围、安装版本、解析目标、类型/运行时依赖与 Client 模块边界
247
256
  pnpm sync:yaml # 刷新 engine/vendor/yaml(生成目录运行时 YAML 解析器)
248
- pnpm rebuild:composition # 只生成官方切块/变体;source/local 本地源不复制(失败安全)
249
257
  ```
250
258
 
251
259
  测试由 `scripts/run-tests.mjs` 启动:先跑 build,再以独立临时 cwd 与 TEMP/TMP 启动 Node 内置 test runner,用例路径为绝对路径,避免相对 cwd 的测试污染仓库。
252
260
 
253
261
  依赖升级后的验证顺序:`pnpm install` → `pnpm verify:host` → `pnpm typecheck && pnpm lint` → `pnpm test`。官方源码联调请使用不入库的显式本地 override,不要恢复 `pnpm-workspace.yaml` 里的 `link:` 默认配置。
254
262
 
255
- 发布类型声明通过 `deps.dts.neverBundle` 引用官方 SDK,不内联其品牌类型与相对模块扩充;公开类型引用的包须声明为生产或 peer 依赖,不能仅存在于 devDependencies。`deps.onlyBundle` 显式约束内联依赖(服务端为空,客户端仅 `clsx`),新增依赖需重新核对打包边界。`test/host-publish-contract.test.mjs` 直接校验 `lib/*.d.mts` 与官方 SDK 的类型兼容性;客户端仍保留宿主 loader 要求的 CJS 协议,不为消除通用 ESM 建议而切换格式。
263
+ 发布类型声明通过 `deps.dts.neverBundle` 引用官方 SDK,不内联其品牌类型与相对模块扩充;公开类型引用的包须声明为生产或 peer 依赖,不能仅存在于 devDependencies。`deps.onlyBundle` 显式约束内联依赖(服务端为空,客户端仅 `clsx`),新增依赖需重新核对打包边界。客户端仍保留宿主 loader 要求的 CJS 协议,不为消除通用 ESM 建议而切换格式。
256
264
 
257
265
  ## 排障:插件未加载时
258
266
 
259
- 启动日志出现 `dsh: skipping profile bundle "dsh-plugin-prompt-tool"` 时,插件**整体未加载**——dsh 在包解析阶段就跳过了它,插件自己的自愈层(web 表层补装配、预设种子补建)也不会运行。按顺序查三步:
267
+ 启动日志出现 `dsh: skipping profile bundle "dsh-plugin-prompt-tool"` 时,插件整体未加载,预设种子补建也不会运行。插件启动只诊断缺失 Web 能力,不写 profile manifest 或修复包链接。按顺序检查:
260
268
 
261
269
  1. **看 bundles 列表**:`<DSH_HOME>/profiles/<name>/package.json` 的 `dsh.profile.bundles` 是否含 `dsh-plugin-prompt-tool`。
262
270
  2. **体检依赖链接**(只读、零写入):
@@ -266,13 +274,13 @@ pnpm rebuild:composition # 只生成官方切块/变体;source/local 本地源
266
274
  ```
267
275
 
268
276
  它按 dsh 同一口径(`createRequire(<profile>/package.json).resolve.paths`)逐项判定,并额外报出**链接目标是否存在**——「链接在、目标不在」的悬空链接正是最常见的失败形态(例如相对深度算错一层)。
269
- 3. **修复**:去掉 `--dry-run` 重跑即可自动重建悬空或缺失的链接(只写 profile 私有层,真实文件与目录绝不删除,不改动 `profiles/node_modules` 兜底层)。若脚本报告需人工处理、或依赖本身缺失,走官方通道:
277
+ 3. **修复**:体检命令始终只读。缺失依赖或链接交给官方插件管理器;在 Harness 中使用 `plugin_manager` 安装或管理 bundle,CLI 的依赖修复入口为:
270
278
 
271
279
  ```powershell
272
280
  dsh plugin --profile web install
273
281
  ```
274
282
 
275
- 修复后需**重启 DSH** 生效。
283
+ 替换已安装包后需要用户重启 DSH;插件不自动重启服务。
276
284
 
277
285
  ## 许可
278
286
 
@@ -2,10 +2,7 @@
2
2
  export const name = "character-tools"
3
3
 
4
4
  export function apply(ctx) {
5
- const service = ctx.get("pt-character-tools")
6
- if (service === null || service === undefined || typeof service.mount !== "function") {
7
- ctx.logger?.warn(name + ": service unavailable; character tools not mounted for this preset")
8
- return
9
- }
10
- ctx.effect(() => service.mount(ctx), name + ": mount")
5
+ ctx.inject(["pt-character-tools"], (scopeCtx) => {
6
+ scopeCtx.effect(() => scopeCtx.get("pt-character-tools").mount(scopeCtx), name + ": mount")
7
+ })
11
8
  }
@@ -1,6 +1,6 @@
1
1
  # module: agent-instructions
2
2
  # source: master/packages/bundle/web-app/presets/standard.patch.yml
3
- # commit: c36a83ff6bb95e3f82cf79f9be7c724270a8aa61
3
+ # commit: 4878cdabd87d4041bdaff61d04c966883b9fd07a
4
4
  # local patches: 0
5
5
 
6
6
  - id: agent-instructions
@@ -1,6 +1,6 @@
1
1
  # module: command-goal
2
2
  # source: master/packages/bundle/web-app/presets/standard.patch.yml
3
- # commit: c36a83ff6bb95e3f82cf79f9be7c724270a8aa61
3
+ # commit: 4878cdabd87d4041bdaff61d04c966883b9fd07a
4
4
  # local patches: 0
5
5
 
6
6
  - id: command-goal
@@ -1,6 +1,6 @@
1
1
  # module: compaction
2
2
  # source: master/packages/bundle/web-app/presets/standard.patch.yml
3
- # commit: c36a83ff6bb95e3f82cf79f9be7c724270a8aa61
3
+ # commit: 4878cdabd87d4041bdaff61d04c966883b9fd07a
4
4
  # local patches: 0
5
5
 
6
6
  - id: compaction
@@ -1,6 +1,6 @@
1
1
  # module: delegation-ptc
2
2
  # source: master/packages/bundle/web-app/presets/ptc.patch.yml
3
- # commit: c36a83ff6bb95e3f82cf79f9be7c724270a8aa61
3
+ # commit: 4878cdabd87d4041bdaff61d04c966883b9fd07a
4
4
  # local patches: 0
5
5
 
6
6
  - id: delegation
@@ -1,6 +1,6 @@
1
1
  # module: delegation
2
2
  # source: master/packages/bundle/web-app/presets/standard.patch.yml
3
- # commit: c36a83ff6bb95e3f82cf79f9be7c724270a8aa61
3
+ # commit: 4878cdabd87d4041bdaff61d04c966883b9fd07a
4
4
  # local patches: 0
5
5
 
6
6
  - id: delegation
@@ -1,6 +1,6 @@
1
1
  # module: persistent-shell
2
2
  # source: master/packages/bundle/web-app/presets/minimal.patch.yml
3
- # commit: c36a83ff6bb95e3f82cf79f9be7c724270a8aa61
3
+ # commit: 4878cdabd87d4041bdaff61d04c966883b9fd07a
4
4
  # local patches: 0
5
5
 
6
6
  - id: persistent-shell
@@ -1,6 +1,6 @@
1
1
  # module: planning
2
2
  # source: master/packages/bundle/web-app/presets/standard.patch.yml
3
- # commit: c36a83ff6bb95e3f82cf79f9be7c724270a8aa61
3
+ # commit: 4878cdabd87d4041bdaff61d04c966883b9fd07a
4
4
  # local patches: 0
5
5
 
6
6
  - id: planning
@@ -1,6 +1,6 @@
1
1
  # module: skill-filesystem-cordis
2
2
  # source: master/packages/bundle/web-app/presets/cordis.patch.yml
3
- # commit: c36a83ff6bb95e3f82cf79f9be7c724270a8aa61
3
+ # commit: 4878cdabd87d4041bdaff61d04c966883b9fd07a
4
4
  # local patches: 0
5
5
 
6
6
  - id: skill-filesystem
@@ -1,6 +1,6 @@
1
1
  # module: skill-filesystem
2
2
  # source: master/packages/bundle/web-app/presets/standard.patch.yml
3
- # commit: c36a83ff6bb95e3f82cf79f9be7c724270a8aa61
3
+ # commit: 4878cdabd87d4041bdaff61d04c966883b9fd07a
4
4
  # local patches: 0
5
5
 
6
6
  - id: skill-filesystem
@@ -1,6 +1,6 @@
1
1
  # module: tool-ask-user
2
2
  # source: master/packages/bundle/web-app/presets/standard.patch.yml
3
- # commit: c36a83ff6bb95e3f82cf79f9be7c724270a8aa61
3
+ # commit: 4878cdabd87d4041bdaff61d04c966883b9fd07a
4
4
  # local patches: 0
5
5
 
6
6
  - id: tool-ask-user
@@ -1,6 +1,6 @@
1
1
  # module: tool-bash
2
2
  # source: master/packages/bundle/web-app/presets/standard.patch.yml
3
- # commit: c36a83ff6bb95e3f82cf79f9be7c724270a8aa61
3
+ # commit: 4878cdabd87d4041bdaff61d04c966883b9fd07a
4
4
  # local patches: 0
5
5
 
6
6
  - id: tool-bash
@@ -1,6 +1,6 @@
1
1
  # module: tool-cordis
2
2
  # source: master/packages/bundle/web-app/presets/cordis.patch.yml
3
- # commit: c36a83ff6bb95e3f82cf79f9be7c724270a8aa61
3
+ # commit: 4878cdabd87d4041bdaff61d04c966883b9fd07a
4
4
  # local patches: 0
5
5
 
6
6
  - id: tool-cordis
@@ -1,6 +1,6 @@
1
1
  # module: tool-fs-search
2
2
  # source: master/packages/bundle/web-app/presets/standard.patch.yml
3
- # commit: c36a83ff6bb95e3f82cf79f9be7c724270a8aa61
3
+ # commit: 4878cdabd87d4041bdaff61d04c966883b9fd07a
4
4
  # local patches: 0
5
5
 
6
6
  - id: tool-fs-search
@@ -1,6 +1,6 @@
1
1
  # module: tool-fs
2
2
  # source: master/packages/bundle/web-app/presets/standard.patch.yml
3
- # commit: c36a83ff6bb95e3f82cf79f9be7c724270a8aa61
3
+ # commit: 4878cdabd87d4041bdaff61d04c966883b9fd07a
4
4
  # local patches: 0
5
5
 
6
6
  - id: tool-fs
@@ -1,6 +1,6 @@
1
1
  # module: tool-goal
2
2
  # source: master/packages/bundle/web-app/presets/standard.patch.yml
3
- # commit: c36a83ff6bb95e3f82cf79f9be7c724270a8aa61
3
+ # commit: 4878cdabd87d4041bdaff61d04c966883b9fd07a
4
4
  # local patches: 0
5
5
 
6
6
  - id: tool-goal
@@ -1,6 +1,6 @@
1
1
  # module: tool-jobs
2
2
  # source: master/packages/bundle/web-app/presets/standard.patch.yml
3
- # commit: c36a83ff6bb95e3f82cf79f9be7c724270a8aa61
3
+ # commit: 4878cdabd87d4041bdaff61d04c966883b9fd07a
4
4
  # local patches: 0
5
5
 
6
6
  - id: tool-jobs
@@ -1,6 +1,6 @@
1
1
  # module: tool-plugin-manager-disabled
2
2
  # source: master/packages/bundle/web-app/presets/standard.patch.yml
3
- # commit: c36a83ff6bb95e3f82cf79f9be7c724270a8aa61
3
+ # commit: 4878cdabd87d4041bdaff61d04c966883b9fd07a
4
4
  # local patches: 0
5
5
 
6
6
  - id: tool-plugin-manager
@@ -1,6 +1,6 @@
1
1
  # module: tool-plugin-manager
2
2
  # source: master/packages/bundle/web-app/presets/cordis.patch.yml
3
- # commit: c36a83ff6bb95e3f82cf79f9be7c724270a8aa61
3
+ # commit: 4878cdabd87d4041bdaff61d04c966883b9fd07a
4
4
  # local patches: 0
5
5
 
6
6
  - id: tool-plugin-manager
@@ -1,6 +1,6 @@
1
1
  # module: tool-present
2
2
  # source: master/packages/bundle/web-app/presets/standard.patch.yml
3
- # commit: c36a83ff6bb95e3f82cf79f9be7c724270a8aa61
3
+ # commit: 4878cdabd87d4041bdaff61d04c966883b9fd07a
4
4
  # local patches: 0
5
5
 
6
6
  - id: present
@@ -1,6 +1,6 @@
1
1
  # module: tool-presentation
2
2
  # source: master/packages/bundle/web-app/presets/ptc.patch.yml
3
- # commit: c36a83ff6bb95e3f82cf79f9be7c724270a8aa61
3
+ # commit: 4878cdabd87d4041bdaff61d04c966883b9fd07a
4
4
  # local patches: 0
5
5
 
6
6
  - id: tool-presentation
@@ -1,6 +1,6 @@
1
1
  # module: tool-pwsh
2
2
  # source: master/packages/bundle/web-app/presets/standard.patch.yml
3
- # commit: c36a83ff6bb95e3f82cf79f9be7c724270a8aa61
3
+ # commit: 4878cdabd87d4041bdaff61d04c966883b9fd07a
4
4
  # local patches: 0
5
5
 
6
6
  - id: tool-pwsh
@@ -1,6 +1,6 @@
1
1
  # module: tool-skill
2
2
  # source: master/packages/bundle/web-app/presets/standard.patch.yml
3
- # commit: c36a83ff6bb95e3f82cf79f9be7c724270a8aa61
3
+ # commit: 4878cdabd87d4041bdaff61d04c966883b9fd07a
4
4
  # local patches: 0
5
5
 
6
6
  - id: tool-skill
@@ -1,6 +1,6 @@
1
1
  # module: tool-todo
2
2
  # source: master/packages/bundle/web-app/presets/standard.patch.yml
3
- # commit: c36a83ff6bb95e3f82cf79f9be7c724270a8aa61
3
+ # commit: 4878cdabd87d4041bdaff61d04c966883b9fd07a
4
4
  # local patches: 0
5
5
 
6
6
  - id: tool-todo
@@ -1,6 +1,6 @@
1
1
  # module: tool-web
2
2
  # source: master/packages/bundle/web-app/presets/standard.patch.yml
3
- # commit: c36a83ff6bb95e3f82cf79f9be7c724270a8aa61
3
+ # commit: 4878cdabd87d4041bdaff61d04c966883b9fd07a
4
4
  # local patches: 0
5
5
 
6
6
  - id: tool-web
@@ -4,4 +4,4 @@
4
4
  - id: prompt-config-engine
5
5
  name: ./engine/prompt-config-engine.mjs
6
6
  config:
7
- configsDir: ../prompt-configs
7
+ configsDir: ../configs