dsh-plugin-prompt-tool 0.8.0 → 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 (75) 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/character-tools.yml +4 -4
  28. package/engine/compositions/source/local/prompt-config-engine.yml +1 -1
  29. package/engine/compositions/source/local/session-var-tools.yml +4 -4
  30. package/engine/compositions/source/local/world-book-tools.yml +4 -4
  31. package/engine/executor.mjs +39 -26
  32. package/engine/instruction-hint.mjs +6 -2
  33. package/engine/layers.mjs +38 -30
  34. package/engine/order.mjs +17 -0
  35. package/engine/schema.mjs +16 -6
  36. package/engine/session-var-tools.mjs +3 -6
  37. package/engine/st-render.mjs +8 -4
  38. package/engine/subagent-tool-policy.mjs +25 -10
  39. package/engine/world-book-tools.mjs +3 -6
  40. package/lib/client.js +3451 -3519
  41. package/lib/client.js.map +1 -1
  42. package/lib/index.d.mts +233 -272
  43. package/lib/index.mjs +1020 -1226
  44. package/lib/{preset-package-BnJqrU4R.mjs → module-package-Cm3fHHlp.mjs} +997 -594
  45. package/lib/{paths-CY5psBqE.d.mts → paths-BgL42sSM.d.mts} +191 -149
  46. package/lib/preset-transfer.d.mts +2 -2
  47. package/lib/preset-transfer.mjs +2 -2
  48. package/modules/ponytail/configs/0000-ponytail-rules.yml +102 -0
  49. package/modules/ponytail/configs/0010-ponytail-level-full.yml +19 -0
  50. package/modules/ponytail/configs/0020-ponytail-level-lite.yml +19 -0
  51. package/modules/ponytail/configs/0030-ponytail-level-ultra.yml +19 -0
  52. package/modules/ponytail/module.yml +172 -0
  53. package/package.json +46 -80
  54. package/templates/20-system-section.yml +4 -1
  55. package/templates/70-subagent-maintenance.yml +1 -1
  56. package/templates/tools/50-delegate-worldbook.yml +1 -1
  57. package/preset/pt-cordis/preset.yml +0 -43
  58. package/preset/pt-cordis/skills/cordis-composition-reference/SKILL.md +0 -29
  59. package/preset/pt-cordis/skills/cordis-composition-reference/references/packages.md +0 -501
  60. package/preset/pt-cordis/skills/cordis-plugin-development/SKILL.md +0 -38
  61. package/preset/pt-cordis/skills/cordis-plugin-development/references/host-plugin.md +0 -60
  62. package/preset/pt-cordis/skills/cordis-plugin-development/references/mcp-bundle.md +0 -5
  63. package/preset/pt-cordis/skills/cordis-plugin-development/references/ui-plugin.md +0 -13
  64. package/preset/pt-cordis/skills/cordis-plugin-development/references/verification.md +0 -5
  65. package/preset/pt-cordis/skills/cordis-plugin-development/templates/decoration/client.js +0 -22
  66. package/preset/pt-cordis/skills/cordis-plugin-development/templates/decoration/cordis.patch.yml +0 -3
  67. package/preset/pt-cordis/skills/cordis-plugin-development/templates/decoration/index.js +0 -2
  68. package/preset/pt-cordis/skills/cordis-plugin-development/templates/decoration/package.json +0 -15
  69. package/preset/pt-cordis/skills/cordis-plugin-development/templates/mcp/cordis.patch.yml +0 -8
  70. package/preset/pt-cordis/skills/cordis-plugin-development/templates/mcp/package.json +0 -7
  71. package/preset/pt-cordis/skills/editing-cordis-compositions/SKILL.md +0 -84
  72. package/preset/pt-custom/preset.yml +0 -15
  73. package/preset/pt-minimal/preset.yml +0 -27
  74. package/preset/pt-ptc/preset.yml +0 -45
  75. package/preset/pt-standard/preset.yml +0 -43
package/lib/index.d.mts CHANGED
@@ -1,10 +1,162 @@
1
- import { $ as ENGINE_RECIPES, A as resolvePresetParams, B as MAX_CHARACTER_CARD_STREAM_BYTES, C as loadPresetSpec, D as renderComposition, E as removeUserPreset, F as BridgeEndpoint, G as SkillPolicyChange, H as SkillCatalogEntry, I as BridgeErrorPayload, J as SkillsCatalogSnapshot, K as SkillPolicyScope, L as BridgeRequestMap, M as savePresetPersona, N as userPresetsDir, O as resolvePresetDir, P as BRIDGE_ENDPOINTS, Q as ENGINE_CAPABILITIES, R as BridgeValueMap, S as listPresets, T as removePresetModule, U as SkillContentSnapshot, V as SETTINGS_BRIDGE_PREFIX, W as SkillInvocation, X as invocationForScope, Y as SkillsState, Z as scopeOfInvocation, _ as buildModuleConfigsFromParams, a as installPresetPackage, at as isEngineCapabilityPresent, b as ensurePresetSeed, c as convertStToPreset, ct as ImportChoices, d as stPresetId, dt as InstructionFileSnapshot, et as EngineCapability, f as EngineCapabilityCreateRequest, ft as InstructionFileStatus, g as applyModuleConfigs, h as PresetSpec, i as exportPresetPackage, it as engineRecipe, j as savePresetParams, k as resolvePresetModuleFacts, l as mergeStPresets, lt as INSTRUCTION_FILE_STATUSES, m as EngineCapabilityRemoveResult, n as USER_SKILLS_DIR, nt as PresetModuleFacts, o as presetImportPreview, ot as validateCustomToolIdentities, p as EngineCapabilityCreateResult, pt as MAX_INSTRUCTION_FILE_BYTES, q as SkillSourceKind, r as expandPresetSource, rt as engineCapability, s as StConversionOptions, st as AssetFile, tt as ModuleSourceMode, u as processStText, ut as InstructionContextView, v as cloneBuiltinPreset, w as removeEngineCapabilityFromPreset, x as listBuiltinTemplates, y as createEngineCapabilityInPreset, z as MAX_BRIDGE_BODY_BYTES } from "./paths-CY5psBqE.mjs";
1
+ import { $ as AssetFile, A as resolveModuleFacts, B as MAX_BRIDGE_BODY_BYTES, C as loadModuleSpec, D as removeUserPreset, E as removePresetModule, F as BRIDGE_ENDPOINTS, G as SkillInvocation, H as SETTINGS_BRIDGE_PREFIX, I as BridgeEndpoint, J as SkillSourceKind, K as SkillPolicyChange, L as BridgeErrorPayload, M as saveModuleParams, N as savePresetPersona, O as renderComposition, P as userModulesDir, Q as scopeOfInvocation, R as BridgeRequestMap, S as listModules, T as removeEngineCapabilityFromPreset, U as SkillCatalogEntry, V as MAX_CHARACTER_CARD_STREAM_BYTES, W as SkillContentSnapshot, X as SkillsState, Y as SkillsCatalogSnapshot, Z as invocationForScope, _ as buildModuleConfigsFromParams, a as installPresetPackage, at as MAX_INSTRUCTION_FILE_BYTES, b as ensurePresetSeed, c as convertStToPreset, ct as EngineCapability, d as stPresetId, dt as engineCapability, et as ImportChoices, f as EngineCapabilityCreateRequest, ft as engineRecipe, g as applyModuleConfigs, h as ModuleSpec, i as exportPresetPackage, it as InstructionFileStatus, j as resolvePresetParams, k as resolveModuleDir, l as mergeStPresets, lt as ModuleFacts, m as EngineCapabilityRemoveResult, mt as validateCustomToolIdentities, n as USER_SKILLS_DIR, nt as InstructionContextView, o as presetImportPreview, ot as ENGINE_CAPABILITIES, p as EngineCapabilityCreateResult, pt as isEngineCapabilityPresent, q as SkillPolicyScope, r as expandPresetSource, rt as InstructionFileSnapshot, s as StConversionOptions, st as ENGINE_RECIPES, tt as INSTRUCTION_FILE_STATUSES, u as processStText, ut as ModuleSourceMode, v as cloneBuiltinPreset, w as moduleDirExists, x as listBuiltinTemplates, y as createEngineCapabilityInPreset, z as BridgeValueMap } from "./paths-BgL42sSM.mjs";
2
2
  import { parseDocument } from "yaml";
3
3
  import z from "@deepseek-ai/schemastery";
4
+ import { ToolExecution } from "@deepseek-ai/dsh-tools";
4
5
  import { Context, Volatile } from "@deepseek-ai/cordis";
5
6
  import { SkillViewOptions } from "@deepseek-ai/dsh-skill";
6
7
  import { AgentOptions } from "@deepseek-ai/dsh-agent";
7
8
  import { SubagentRuntime } from "@deepseek-ai/dsh-subagent";
9
+ //#region src/shared/param-keys.d.ts
10
+ declare const PARAM_KEYS: ReadonlySet<string>;
11
+ //#endregion
12
+ //#region src/config.d.ts
13
+ interface Config {
14
+ /** 模块运行总闸;保留既有持久键,关闭只撤回运行贡献。 */
15
+ writePreset: Volatile<boolean>;
16
+ }
17
+ declare const Config: z<Schemastery.ObjectS<NoInfer<{
18
+ writePreset: z<boolean, boolean, "volatile-defined">;
19
+ }>>, Schemastery.ObjectT<NoInfer<{
20
+ writePreset: z<boolean, boolean, "volatile-defined">;
21
+ }>>, "plain">;
22
+ interface PromptSettings {
23
+ /** 运行时检测:是否检测到任何模型服务商(不写入 settings)。 */
24
+ modelsAvailable: boolean;
25
+ writePreset: boolean;
26
+ }
27
+ //#endregion
28
+ //#region src/shared/legacy-prompt-params.d.ts
29
+ /** 旧规则快捷参数只用于读取与旧 API 兼容;新编辑器直接保存规则实例。 */
30
+ declare const LEGACY_PROMPT_PARAM_DEFINITIONS: {
31
+ readonly firstTurnAnchor: {
32
+ readonly kind: "boolean";
33
+ readonly targets: readonly ["near-anchor"];
34
+ };
35
+ readonly firstTurnText: {
36
+ readonly kind: "string";
37
+ readonly targets: readonly ["near-anchor", "prompt-injector"];
38
+ };
39
+ readonly firstTurnCustom: {
40
+ readonly kind: "boolean";
41
+ readonly targets: readonly ["near-anchor"];
42
+ };
43
+ readonly guideText: {
44
+ readonly kind: "string";
45
+ readonly targets: readonly ["router-guide"];
46
+ };
47
+ readonly guideCustom: {
48
+ readonly kind: "boolean";
49
+ readonly targets: readonly ["router-guide"];
50
+ };
51
+ readonly guideEnabled: {
52
+ readonly kind: "boolean";
53
+ readonly targets: readonly ["router-guide"];
54
+ };
55
+ readonly injectPrompt: {
56
+ readonly kind: "boolean";
57
+ readonly targets: readonly ["prompt-injector"];
58
+ };
59
+ readonly firstTurnWord: {
60
+ readonly kind: "string";
61
+ readonly targets: readonly ["prompt-injector"];
62
+ };
63
+ readonly buildPattern: {
64
+ readonly kind: "pattern";
65
+ readonly targets: readonly ["near-anchor"];
66
+ };
67
+ readonly complexPattern: {
68
+ readonly kind: "pattern";
69
+ readonly targets: readonly ["near-anchor", "router-guide"];
70
+ };
71
+ readonly firstTurnBuild: {
72
+ readonly kind: "string";
73
+ readonly targets: readonly ["near-anchor", "prompt-injector"];
74
+ };
75
+ readonly firstTurnInspect: {
76
+ readonly kind: "string";
77
+ readonly targets: readonly ["near-anchor", "prompt-injector"];
78
+ };
79
+ readonly firstTurnDeep: {
80
+ readonly kind: "string";
81
+ readonly targets: readonly ["near-anchor", "prompt-injector"];
82
+ };
83
+ readonly guideWeak: {
84
+ readonly kind: "string";
85
+ readonly targets: readonly ["router-guide"];
86
+ };
87
+ readonly guideDeep: {
88
+ readonly kind: "string";
89
+ readonly targets: readonly ["router-guide"];
90
+ };
91
+ };
92
+ type LegacyPromptParamKey = keyof typeof LEGACY_PROMPT_PARAM_DEFINITIONS;
93
+ type LegacyPromptParams = { [K in LegacyPromptParamKey]?: typeof LEGACY_PROMPT_PARAM_DEFINITIONS[K]['kind'] extends 'boolean' ? boolean : string; };
94
+ //#endregion
95
+ //#region src/shared/engine-params.d.ts
96
+ interface EngineParams {
97
+ /** 主会话请求路由 provider;与模型名同时非空时生效。 */
98
+ modelProvider?: string;
99
+ /** 模型名;与 provider 同时非空时生效。 */
100
+ modelName?: string;
101
+ /** 本地子代理请求路由 provider;不改写普通官方委派的创建参数。 */
102
+ subagentModelProvider?: string;
103
+ /** 子代理固定模型名。 */
104
+ subagentModelName?: string;
105
+ /** 主对话思维程度(agent-request patch reasoningEffort;''=不设置,官方档位 off/low/high/max)。 */
106
+ modelReasoningEffort?: string;
107
+ /** 主对话采样温度(agent-request patch temperature;''=不设置)。 */
108
+ modelTemperature?: string;
109
+ /** 主对话输出上限(agent-request patch maxTokens;''=不设置)。 */
110
+ modelMaxTokens?: string;
111
+ /** 子代理思维程度(agent-request patch,audience=subagent;''=不设置)。 */
112
+ subagentReasoningEffort?: string;
113
+ /** 子代理采样温度(agent-request patch,audience=subagent;''=不设置)。 */
114
+ subagentTemperature?: string;
115
+ /** 子代理输出上限(agent-request patch,audience=subagent;''=不设置)。 */
116
+ subagentMaxTokens?: string;
117
+ /** 已启用子代理工具策略的递归深度上限;普通官方委派由宿主管理。 */
118
+ maxDepth?: number | 'provider-managed' | string;
119
+ /** 晋升后 agent-instructions 全文 → 一次性 hint。 */
120
+ instructionHint?: boolean;
121
+ /** tool-git-bash 行的能力开关(B2 T3 补;此前该行只能靠「在不在组合里」决定启停)。 */
122
+ toolGitBashEnabled?: boolean;
123
+ /** 自定义模型工具在执行前需用户批准的执行器种类。 */
124
+ customToolRequireApproval?: string[] | string;
125
+ }
126
+ type EngineParamKey = keyof EngineParams;
127
+ /**
128
+ * writePreset.runtimeOf 实际透传进运行时 params 的引擎参数子集。
129
+ * RuntimeOptions(装配态)与 WritePresetOptions(写入态)都从这里派生,
130
+ * 防止「加参数只改一处、writePreset 忘透传」的静默漂移(如 stageAdvanceDescription 历史事故)。
131
+ */
132
+ type PresetWriterParams = Partial<EngineParams & LegacyPromptParams>;
133
+ /**
134
+ * 数值型引擎参数保存前校验(与 write-preset.modelRequestConfigs 消费规则同源)。
135
+ * 保存层响亮失败(400 逐字段错误),渲染层保持宽容(never-brick):
136
+ * - 布尔键:必须是 boolean;
137
+ * - 数值键(temperature / maxTokens / 字符数):'' = 合法(删键回落默认);
138
+ * 非空必须可解析为数字并满足各自约束(有限数 / 正整数);
139
+ * - 字符串键:必须是 string('' = 删键回落默认);
140
+ * - 列表键(执行器种类等):必须是 string 或 string[];
141
+ * - maxDepth:'' / 'provider-managed' / 非负安全整数及其数字字符串。
142
+ * 未知键(旧内容别名等不兼容键)在保存期响亮失败,不做运行时自动兼容。
143
+ * 注意:内容占位变量(variables)的空字符串是合理设计(世界书动态引用),
144
+ * 本函数只校验引擎行为参数,绝不碰 variables 通道。
145
+ */
146
+ interface EngineParamValueError {
147
+ key: string;
148
+ message: string;
149
+ }
150
+ declare const ENGINE_PARAM_KEYS: EngineParamKey[];
151
+ /** writePreset.runtimeOf 实际透传键:全部引擎参数可直接进入 writer。 */
152
+ declare const WRITER_PARAM_KEYS: ("firstTurnAnchor" | "firstTurnText" | "firstTurnCustom" | "guideText" | "guideCustom" | "guideEnabled" | "injectPrompt" | "firstTurnWord" | "buildPattern" | "complexPattern" | "firstTurnBuild" | "firstTurnInspect" | "firstTurnDeep" | "guideWeak" | "guideDeep" | keyof EngineParams)[];
153
+ /**
154
+ * 校验参数键值(键集合合法性由调用方白名单先行校验,本函数同样拒绝未知键)。
155
+ * 返回逐字段错误;空数组 = 通过。类型收窄:布尔/字符串/数值/列表各按 canonical
156
+ * 规则校验;'' 是合法删键值,其余非法类型与越界值在保存层响亮失败。
157
+ */
158
+ declare function validateEngineParamValues(overrides: Record<string, unknown>): EngineParamValueError[];
159
+ //#endregion
8
160
  //#region src/host/prompt-configs.d.ts
9
161
  /**
10
162
  * `PromptConfigSpec` 各枚举字段的**运行期值清单**。
@@ -96,185 +248,32 @@ interface PromptConfigMatch {
96
248
  useRegex?: boolean;
97
249
  }
98
250
  //#endregion
99
- //#region src/shared/engine-params.d.ts
100
- /**
101
- * 引擎行为参数契约(单一来源)。
102
- *
103
- * 这是「可配置引擎参数」的类型唯一权威:所有消费引擎参数的接口(RuntimeOptions /
104
- * WritePresetOptions)从这里派生,不再各自手写一遍字段
105
- * (此前多处重复声明导致同字段签名漂移,如 maxDepth / modelTemperature)。
106
- *
107
- * 分层约定:
108
- * - 本文件 = 引擎参数「契约层」(类型):参数桥/模板/UI 可配置的键与类型;
109
- * - ENGINE_PARAM_DEFINITIONS 统一键、校验、卡片、默认草稿与组合映射;
110
- * Record<keyof EngineParams, ...> 强制完整覆盖,ENGINE_PARAM_KEYS 与 PARAM_KEYS 从其派生;
111
- * - layerSettings ↔ 运行时平铺键:loadPresetSpec 展平 / savePresetParams 按层写入。
112
- *
113
- * 全部字段可选:缺省 = 模板 preset.yml layerSettings / 引擎默认,符合「一切皆可自定义」。
114
- */
115
- interface EngineParams {
116
- /** 首轮近距离锚定:首条真实用户消息后追加一次性首句锚点。 */
117
- firstTurnAnchor?: boolean;
118
- /** 自定义锚点文本;firstTurnCustom=true 时固定使用。 */
119
- firstTurnText?: string;
120
- /** 自定义锚点开关:true 固定使用 firstTurnText;false 按任务自动选择。 */
121
- firstTurnCustom?: boolean;
122
- /** 自定义每轮引导文本;guideCustom=true 时固定使用。 */
123
- guideText?: string;
124
- /** 自定义每轮引导开关:true 固定使用 guideText;false 按任务自动选择。 */
125
- guideCustom?: boolean;
126
- /** 每轮引导独立开关;缺省关闭。 */
127
- guideEnabled?: boolean;
128
- /** 锚定确认后注入 preset.md;关闭时仍保留工具引导,但不生成 prompt-injector 提示词配置内容。 */
129
- injectPrompt?: boolean;
130
- /** 模型路由 provider;与模型名同时非空时给 subagent/subagent_fork 行加 agentOptions(主对话直派子代理与委派子代理通用)。 */
131
- modelProvider?: string;
132
- /** 模型名;与 provider 同时非空时生效。 */
133
- modelName?: string;
134
- /** 子代理固定模型路由 provider(agentOptions 注入 tool-subagent)。 */
135
- subagentModelProvider?: string;
136
- /** 子代理固定模型名。 */
137
- subagentModelName?: string;
138
- /** 主对话思维程度(agent-request patch reasoningEffort;''=不设置,官方档位 off/low/high/max)。 */
139
- modelReasoningEffort?: string;
140
- /** 主对话采样温度(agent-request patch temperature;''=不设置)。 */
141
- modelTemperature?: string;
142
- /** 主对话输出上限(agent-request patch maxTokens;''=不设置)。 */
143
- modelMaxTokens?: string;
144
- /** 子代理思维程度(agent-request patch,audience=subagent;''=不设置)。 */
145
- subagentReasoningEffort?: string;
146
- /** 子代理采样温度(agent-request patch,audience=subagent;''=不设置)。 */
147
- subagentTemperature?: string;
148
- /** 子代理输出上限(agent-request patch,audience=subagent;''=不设置)。 */
149
- subagentMaxTokens?: string;
150
- /** 委派递归深度上限(0 禁止委派 / provider-managed / 正整数;数字字符串同义)。 */
151
- maxDepth?: number | 'provider-managed' | string;
152
- /** custom-fallback 锚定词(prompt-injector params.firstTurnWord)。 */
153
- firstTurnWord?: string;
154
- /**
155
- * 锚定/引导内容键:writePreset 把它们映射进 near-anchor / router-guide 的
156
- * promptConfig params(由对应策略消费)。此前只在 PARAM_KEYS 旁路白名单里,
157
- * 保存链接受键名却被值校验拒绝,形成「白名单通过、写盘前报未知键」的断层。
158
- */
159
- /** 构建任务正则(锚定三档分类的 build 档;编译规则与 engine/classify-task.mjs 同源,flags=i)。 */
160
- buildPattern?: string;
161
- /** 复杂任务正则(锚定 complex 档与引导深度判定共用)。 */
162
- complexPattern?: string;
163
- /** 构建档锚句。 */
164
- firstTurnBuild?: string;
165
- /** 排查档锚句。 */
166
- firstTurnInspect?: string;
167
- /** 深度档锚句。 */
168
- firstTurnDeep?: string;
169
- /** 引导-简短档正文。 */
170
- guideWeak?: string;
171
- /** 引导-深度档正文。 */
172
- guideDeep?: string;
173
- /** 晋升后 agent-instructions 全文 → 一次性 hint。 */
174
- instructionHint?: boolean;
175
- /** str-replace-editor 最大输出字符数(参数桥默认官方值 16000;由引擎能力卡编辑)。 */
176
- strReplaceEditorMaxOutputChars?: number;
177
- /** tool-git-bash 行的能力开关(B2 T3 补;此前该行只能靠「在不在组合里」决定启停)。 */
178
- toolGitBashEnabled?: boolean;
179
- /** 自定义模型工具在执行前需用户批准的执行器种类。 */
180
- customToolRequireApproval?: string[] | string;
181
- }
182
- type EngineParamKey = keyof EngineParams;
183
- /**
184
- * writePreset.runtimeOf 实际透传进运行时 params 的引擎参数子集。
185
- * RuntimeOptions(装配态)与 WritePresetOptions(写入态)都从这里派生,
186
- * 防止「加参数只改一处、writePreset 忘透传」的静默漂移(如 stageAdvanceDescription 历史事故)。
187
- */
188
- type PresetWriterParams = Partial<EngineParams>;
189
- /**
190
- * 数值型引擎参数保存前校验(与 write-preset.modelRequestConfigs 消费规则同源)。
191
- * 保存层响亮失败(400 逐字段错误),渲染层保持宽容(never-brick):
192
- * - 布尔键:必须是 boolean;
193
- * - 数值键(temperature / maxTokens / 字符数):'' = 合法(删键回落默认);
194
- * 非空必须可解析为数字并满足各自约束(有限数 / 正整数);
195
- * - 字符串键:必须是 string('' = 删键回落默认);
196
- * - 列表键(执行器种类等):必须是 string 或 string[];
197
- * - maxDepth:'' / 'provider-managed' / 非负安全整数及其数字字符串。
198
- * 未知键(旧内容别名等不兼容键)在保存期响亮失败,不做运行时自动兼容。
199
- * 注意:内容占位变量(variables)的空字符串是合理设计(世界书动态引用),
200
- * 本函数只校验引擎行为参数,绝不碰 variables 通道。
201
- */
202
- interface EngineParamValueError {
203
- key: string;
204
- message: string;
205
- }
206
- declare const ENGINE_PARAM_KEYS: EngineParamKey[];
207
- /** writePreset.runtimeOf 实际透传键:全部引擎参数可直接进入 writer。 */
208
- declare const WRITER_PARAM_KEYS: (keyof EngineParams)[];
209
- /**
210
- * 校验参数键值(键集合合法性由调用方白名单先行校验,本函数同样拒绝未知键)。
211
- * 返回逐字段错误;空数组 = 通过。类型收窄:布尔/字符串/数值/列表各按 canonical
212
- * 规则校验;'' 是合法删键值,其余非法类型与越界值在保存层响亮失败。
213
- */
214
- declare function validateEngineParamValues(overrides: Record<string, unknown>): EngineParamValueError[];
215
- //#endregion
216
- //#region src/shared/param-keys.d.ts
217
- declare const PARAM_KEYS: ReadonlySet<string>;
218
- //#endregion
219
- //#region src/config.d.ts
220
- interface Config {
221
- /** 是否生成注入预设(默认 true)。 */
222
- writePreset: Volatile<boolean>;
223
- /** 预设模板名(默认 pt-standard:与宿主内置 standard 同名的用户目录会被遮蔽)。 */
224
- presetTemplate: Volatile<string>;
225
- /** 生成 preset 的显示顺序。 */
226
- presetOrder: Volatile<number>;
227
- /** preset.md 缺失或不可读时使用的文本。 */
228
- fallbackText: Volatile<string>;
229
- }
230
- declare const Config: z<Schemastery.ObjectS<NoInfer<{
231
- writePreset: z<boolean, boolean, "volatile-defined">;
232
- presetTemplate: z<string, string, "volatile-defined">;
233
- presetOrder: z<number, number, "volatile-defined">;
234
- fallbackText: z<string, string, "volatile-defined">;
235
- }>>, Schemastery.ObjectT<NoInfer<{
236
- writePreset: z<boolean, boolean, "volatile-defined">;
237
- presetTemplate: z<string, string, "volatile-defined">;
238
- presetOrder: z<number, number, "volatile-defined">;
239
- fallbackText: z<string, string, "volatile-defined">;
240
- }>>, "plain">;
241
- interface PromptSettings {
242
- /** 运行时检测:是否检测到任何模型服务商(不写入 settings)。 */
243
- modelsAvailable: boolean;
244
- /** 生成 preset 的显示顺序。 */
245
- presetOrder: number;
246
- /** preset.md 缺失或不可读时使用的文本。 */
247
- fallbackText: string;
248
- writePreset: boolean;
249
- presetTemplate: string;
250
- }
251
- declare const PromptSettingsSchema: z<PromptSettings>;
252
- //#endregion
253
251
  //#region src/host/write-preset.d.ts
254
252
  /**
255
- * 把任意单一参数预设模板物化到生成目录(writePreset)的写入态选项。
253
+ * 把任意单一参数模块模板物化到生成目录(writePreset)的写入态选项。
256
254
  * 引擎参数契约来自 shared/engine-params.ts(PresetWriterParams:runtimeOf 透传子集),
257
255
  * 此处只保留 writePreset 专属字段——加引擎参数只需改一处契约,漏透传变成编译错误。
258
256
  */
259
257
  interface WritePresetOptions extends PresetWriterParams {
260
258
  /** AGENTS.md 内容资产(写生成目录 agents.md):常驻层写盘的唯一来源,不再注入提示词。 */
261
259
  agentsInstructionText?: string;
262
- presetDir: string;
263
- presetOrder: number;
260
+ moduleDir: string;
261
+ /** @deprecated 模块排序归模块定义;该旧输入已不再覆盖顶层 order。 */
262
+ presetOrder?: number;
264
263
  /** settings 层用户自定义提示词配置(优先级最高)。 */
265
264
  promptConfigs: PromptConfigSpec[];
266
- /** 当前预设目录名;默认 pt-standard。 */
265
+ /** 当前模块目录名;默认 pt-standard。 */
267
266
  presetTemplate?: string;
268
- /** 输出目录/预设 id 覆盖;缺省 = presetTemplate 同名输出。 */
267
+ /** 输出目录/模块 id 覆盖;缺省 = presetTemplate 同名输出。 */
269
268
  outputId?: string;
270
- /** 隔离的定义/资源来源;与最终 outputId 分离,不回退同名已安装预设。 */
269
+ /** 隔离的定义/资源来源;与最终 outputId 分离,不回退同名已安装模块。 */
271
270
  sourceDir?: string;
272
271
  /** 只生成并返回暂存目录;调用方负责安装或清理,不更新共享引擎及目标目录。 */
273
272
  materializeOnly?: boolean;
274
273
  /** 目录加载失败等非致命告警回调。 */
275
274
  warn?: (message: string) => void;
276
275
  }
277
- /** 把任意单一参数预设模板物化到生成目录;全部失败 fail loud。 */
276
+ /** 把任意单一参数模块模板物化到生成目录;全部失败 fail loud。 */
278
277
  declare function writePreset(prompt: string, options: WritePresetOptions): string;
279
278
  //#endregion
280
279
  //#region src/host/agents-cards.d.ts
@@ -344,16 +343,15 @@ declare function writeAgentsFileChecked(options: {
344
343
  }): Promise<AgentsFileWriteOutcome>;
345
344
  //#endregion
346
345
  //#region src/runtime/pre-step-coordinator.d.ts
347
- /** 协调服务名:引擎行通过 ctx.get 解析本服务决定走管理路径还是独立路径。 */
348
346
  declare const PRE_STEP_COORDINATOR_SERVICE = "promptToolPreStep";
349
- /** 服务契约版本:引擎与协调器不同步时按「不认识就不接管」处理。 */
350
347
  declare const PRE_STEP_COORDINATOR_VERSION = 1;
351
- /** 批执行算法消费的提示词配置(与 engine/schema.mjs 产出的形状同源)。 */
352
348
  interface PreStepPromptConfig {
353
349
  id: string;
354
350
  layer: string;
355
351
  enabled?: boolean;
356
352
  order: number;
353
+ sequence?: number;
354
+ sourceModuleId?: string;
357
355
  position: string;
358
356
  promotion: string;
359
357
  audience: string | null;
@@ -372,58 +370,21 @@ interface PreStepPromptConfig {
372
370
  };
373
371
  resolve: (input: Record<string, unknown>) => unknown;
374
372
  }
375
- /** 一个预设 mount 注册进来的来源:提示词配置 + 装配事实(晋升/去重由协调器统一持有)。 */
376
373
  interface PreStepSource {
377
374
  configs: readonly PreStepPromptConfig[];
378
375
  officialInstructions?: boolean;
379
376
  }
380
- /**
381
- * 文件来源每次 pre-step 编译出的最小候选。
382
- * `available: false` 表示读取失败/超限/空内容:只在「该文件曾经注入过」时转成
383
- * 一次性失效通知,不冒充空正文。
384
- */
385
- interface PreStepFileContribution {
386
- fileId: string;
387
- displayPath: string;
388
- revision: string;
389
- text: string;
390
- available: boolean;
391
- reason?: string;
392
- order: number;
393
- position: string;
394
- promotion: string;
395
- audience: string | null;
396
- modelScope: string;
397
- }
398
377
  interface PreStepCoordinatorOptions {
399
- /** 每次 pre-step 现读指令文件;缺省实现走 host 探测 + 独立策略。测试可注入。 */
400
- collectFiles?: (agent: unknown, session: unknown) => PreStepFileContribution[];
401
- /** 策略文件位置覆盖(测试隔离用)。 */
402
378
  policyFile?: string;
403
- /** 用户级指令文件根(DSH_HOME)覆盖(测试隔离用)。 */
404
379
  home?: string;
405
380
  }
406
381
  interface PreStepCoordinatorService {
407
382
  readonly version: number;
408
- /**
409
- * 把 preset mount 的 pre-step 配置登记进协调器。
410
- * 同一 scope 内同一个 `sourceId` 再次登记时后来者接管:先撤销旧登记再插入新登记。
411
- * 宿主重挂同一个 preset(或其引擎行的旧 fiber 尚未释放)时这是正常路径,不是配置错误,
412
- * 因此不抛错——抛错会让整行未激活,进而让 preset 挂载整体失败(无法切换预设)。
413
- * @param sourceCtx 注册 ctx:同时决定来源作用域与释放时机(挂在这个 fiber 上)。
414
- * @param sourceId 来源 id(同一 scope 内唯一:同名登记以最新一次为准)。
415
- * @returns 幂等的撤销函数;登记已被后来者顶替时调用它是空操作。
416
- */
417
383
  registerPreset(sourceCtx: Context, sourceId: string, source: PreStepSource): () => void;
418
- /** 该会话最近一次 pre-step 观察到的负责人事实;未知返回 undefined。 */
419
384
  officialOwnerOf(sessionId: string): boolean | undefined;
385
+ /** hint 转换前也调用同一过滤器,保证监听器重挂顺序不让已关闭正文变成 hint。 */
386
+ filterInstructions(agent: unknown, messages: unknown[]): unknown[];
420
387
  }
421
- /**
422
- * 安装协调器:发布 `promptToolPreStep` 服务并注册唯一的 pre-step 监听器。
423
- * 普通监听器留在 prepend 门控内侧;来源监听器只登记后交出执行权。
424
- * 即使服务迟到或重挂,下游的 pre-step 过滤(声明式触发器的 `pre-step-filter` 动作)
425
- * 仍能在本监听器交出执行权之后过滤最终消息批。
426
- */
427
388
  declare function installPreStepCoordinator(ctx: Context, options?: PreStepCoordinatorOptions): PreStepCoordinatorService;
428
389
  //#endregion
429
390
  //#region src/runtime/models.d.ts
@@ -544,25 +505,31 @@ interface SkillsBridgeState {
544
505
  patchSkillFolders: (folders: string[]) => SkillsStateRead | Promise<SkillsStateRead>;
545
506
  }
546
507
  /**
547
- * 两类卡合并:预设卡原样保留,文件卡换成本次工作区的文件快照。
508
+ * 两类卡合并:模块卡原样保留,文件卡换成本次工作区的文件快照。
548
509
  * 生成目录里属于其他工作区的文件卡不再展示(写盘白名单也不含它们);
549
510
  * 当前工作区里没有对应生成卡的文件按默认文件卡补齐。
550
511
  */
551
512
  declare function mergeInstructionCards(presetCards: readonly unknown[], files: readonly InstructionFileSnapshot[]): unknown[];
552
513
  /** 自建 loopback settings bridge:替代 registerConfigurableProviders,避免模型设置区出现插件条目。 */
553
514
  declare function registerSettingsBridge(ctx: Context, ns: string, getModelsState: () => ModelDetection, getSkillsState: () => SkillsBridgeState, getEngineStrategyDir: () => string, afterSkillsChange?: () => void,
554
- /** 生成目录(presetDir):读取实际生效的提示词配置(引擎加载源)。 */
555
- getPresetConfigsDir?: () => string,
556
- /** 内容导入完成回调:批量 scope 只触发一次重建(更新运行时文本并重建预设)。 */
557
- afterPresetImport?: (scopes: Array<'preset' | 'agents'>) => void,
558
- /** 参数覆盖写入后重建当前预设。 */
559
- afterOverridesChange?: () => void | Promise<void>,
560
- /** 预设已完整安装后的刷新回调;失败只返回 refreshWarning,不再物化或撤销安装。 */
515
+ /**
516
+ * 生成目录(模块目录):读取/写入哪一份提示词配置。
517
+ *
518
+ * 参数是**请求声明的编辑目标**(`x-module-id` 头解析而来):给了就定位那个模块,
519
+ * 没给则由 host 回退启用表首项。编辑器因此不必依赖某个全局单选——配置卡自己的
520
+ * 模块身份决定写哪里。
521
+ */
522
+ getPresetConfigsDir?: (moduleId?: string) => string,
523
+ /** 内容导入完成回调:批量 scope 只触发一次重建(更新运行时文本并重建模块)。 */
524
+ afterPresetImport?: (scopes: Array<'preset' | 'agents'>, moduleId?: string) => void | Promise<void>,
525
+ /** 参数写入后重建指定模块;省略身份表示启用表变化,刷新全部运行实例。 */
526
+ afterOverridesChange?: (moduleId?: string) => void | Promise<void>,
527
+ /** 模块已完整安装后的刷新回调;失败返回未生效诊断,不再物化或撤销安装。 */
561
528
  afterPresetPackageImport?: (id: string) => void | Promise<void>,
562
529
  /** 能力/recipe 原子创建后重建回调;抛错时调用方恢复 preset.yml。 */
563
- afterCapabilityChange?: () => void,
564
- /** 新建、复制或删除预设后刷新官方注册。 */
565
- afterPresetListChange?: () => void | Promise<void>): {
530
+ afterCapabilityChange?: (moduleId?: string) => void | Promise<void>,
531
+ /** 新建、复制或删除模块后重建当前模块。 */
532
+ afterPresetListChange?: (id: string) => void | Promise<void>): {
566
533
  invalidateDescriptor: () => void;
567
534
  };
568
535
  //#endregion
@@ -593,25 +560,20 @@ interface WorldBookEntryInput {
593
560
  * 与模型工具(world_book_upsert)共用,不再各自手写条目结构。
594
561
  */
595
562
  declare function buildWorldBookEntry(input: WorldBookEntryInput): WorldBookEntry;
596
- /** 当前预设全部世界书条目(保持文件顺序)。 */
597
- declare function listWorldBookEntries(presetDir: string): WorldBookEntry[];
563
+ /** 当前模块全部世界书条目(保持文件顺序)。 */
564
+ declare function listWorldBookEntries(moduleDir: string): WorldBookEntry[];
598
565
  /** 新增或更新一条世界书条目(按 id 定位;不存在则追加)。返回写入后条目总数。 */
599
- declare function upsertWorldBookEntry(presetDir: string, entry: WorldBookEntry): number;
566
+ declare function upsertWorldBookEntry(moduleDir: string, entry: WorldBookEntry): number;
600
567
  /** 删除一条世界书条目;不存在抛错。返回删除后条目总数。 */
601
- declare function deleteWorldBookEntry(presetDir: string, id: string): number;
568
+ declare function deleteWorldBookEntry(moduleDir: string, id: string): number;
602
569
  //#endregion
603
570
  //#region src/web-surface.d.ts
604
571
  /** 从 loader 根 Include 的 baseUrl 推导 profile 目录。 */
605
572
  declare function resolveProfileDir(ctx: Context): string | undefined;
606
- /**
607
- * 每次启动:
608
- * 1. 只处理当前 profile:缺 webServer 时补 web-app 并提示重启;
609
- * 2. 不修改同级 profile,不主动退出进程。
610
- */
573
+ /** 只读诊断;安装与 profile 变更交给官方 plugin_manager。 */
611
574
  declare function ensureWebSurface(ctx: Context, warn: (message: string) => void): void;
612
575
  /**
613
- * 把首次启动自愈挂到插件生命周期上:延迟到本轮装配结束后执行,
614
- * 插件卸载会取消计时器,卸载后不再异步补写 profile。
576
+ * 延迟到本轮装配结束后诊断;插件卸载取消尚未执行的任务。
615
577
  */
616
578
  declare function scheduleWebSurfaceRepair(ctx: Context, warn: (message: string) => void): void;
617
579
  //#endregion
@@ -658,33 +620,27 @@ interface PromptConfigValidationResult {
658
620
  */
659
621
  declare function validatePromptConfigs(value: unknown, options?: {
660
622
  strategyDir?: string;
661
- presetDir?: string;
623
+ moduleDir?: string;
662
624
  }): Promise<PromptConfigValidationResult>;
663
625
  //#endregion
664
- //#region src/runtime/character-tools.d.ts
665
- /** 工具执行所需的运行时宿主能力(index.ts 闭包提供)。 */
666
- interface CharacterToolHost {
667
- /** 预设根目录(presetDir)。 */
668
- presetRoot: () => string;
669
- /** 当前激活预设模板名。 */
670
- templateName: () => string;
671
- /** 应用/移除后重建生成目录(写 preset.yml 后使参数生效)。 */
672
- rebuild: () => void;
626
+ //#region src/host/module-tool-target.d.ts
627
+ interface ModuleToolTarget {
628
+ id: string;
629
+ root: string;
630
+ dir: string;
631
+ }
632
+ interface ModuleToolHost {
633
+ target: (exec: ToolExecution) => ModuleToolTarget;
634
+ rebuild: (id: string) => Promise<void>;
673
635
  }
674
- /** 注册角色卡库模型工具;返回 disposer,随 character-tools 预设模块生命周期清理。 */
675
- declare function registerCharacterTools(ctx: Context, host: CharacterToolHost): () => void;
636
+ //#endregion
637
+ //#region src/runtime/character-tools.d.ts
638
+ /** 注册角色卡库模型工具;返回 disposer,随 character-tools 模块生命周期清理。 */
639
+ declare function registerCharacterTools(ctx: Context, host: ModuleToolHost): () => void;
676
640
  //#endregion
677
641
  //#region src/runtime/world-book-tools.d.ts
678
- interface WorldBookToolHost {
679
- /** 当前激活预设目录(preset.yml 所在目录)。 */
680
- activeDir: () => string;
681
- /** 预设根目录(角色卡库 .characters/<id> 所在根)。 */
682
- presetRoot: () => string;
683
- /** 写盘后重建生成目录。 */
684
- rebuild: () => void;
685
- }
686
- /** 注册世界书条目级模型工具;返回 disposer,随 world-book-tools 预设模块生命周期清理。 */
687
- declare function registerWorldBookTools(ctx: Context, host: WorldBookToolHost): () => void;
642
+ /** 注册世界书条目级模型工具;返回 disposer,随 world-book-tools 模块生命周期清理。 */
643
+ declare function registerWorldBookTools(ctx: Context, host: ModuleToolHost): () => void;
688
644
  //#endregion
689
645
  //#region src/host/characters.d.ts
690
646
  /** meta 下记录「每张卡引入了哪些模块」的键;来源保留到模块不再被消费并完成回退。 */
@@ -693,38 +649,38 @@ declare const CHARACTER_MODULES_KEY = "characterModules";
693
649
  declare function recordedCharacterModules(meta: unknown): Record<string, string[]>;
694
650
  /** 卡自身声明的模块(声明优先:ST 转换产物自带六件套声明,行为因此不变)。
695
651
  * 只丢弃非字符串与空串;模块名合法性仍由 appendPresetModules 校验(非法名 fail loud)。 */
696
- declare function declaredCharacterModules(spec: PresetSpec): string[];
652
+ declare function declaredCharacterModules(spec: ModuleSpec): string[];
697
653
  /** 必需模块:`prompt-config-engine` 缺失会让 promptConfigs 静默失效,因此始终补齐;
698
654
  * 卡内含 world-book 策略配置时另需 `world-book-tools`(与旧实现同判据)。 */
699
655
  declare function requiredCharacterModules(configs: readonly unknown[]): string[];
700
- /** 移除一张卡之后,某个模块是否仍被预设内容或其他卡需要(需要则不回退)。 */
656
+ /** 移除一张卡之后,某个模块是否仍被模块内容或其他卡需要(需要则不回退)。 */
701
657
  interface CharacterModuleContext {
702
658
  /** 移除本卡前缀配置之后的提示词配置。 */
703
659
  configs: readonly Record<string, unknown>[];
704
- /** 移除本卡声明的 params 键之后的预设参数。 */
660
+ /** 移除本卡声明的 params 键之后的模块参数。 */
705
661
  params: Record<string, unknown>;
706
- /** 预设顶层是否仍有自定义工具。 */
662
+ /** 模块顶层是否仍有自定义工具。 */
707
663
  customTools: boolean;
708
664
  /** 移除本卡之后仍标记为已导入的角色卡 id。 */
709
665
  importedCharacters: readonly string[];
710
666
  }
711
667
  /** 模块的消费者判据。未知模块保守保留:宁可留一个无消费者的模块,也不误删用户或引擎要用的装配。 */
712
668
  declare function characterModuleStillNeeded(module: string, context: CharacterModuleContext): boolean;
713
- /** 角色卡记忆变更后同步已导入预设的 chara-<id>-memory 注入条目
714
- * (world_book note 写入卡记忆后调用;未导入当前预设的卡返回 synced=false)。 */
715
- declare function syncImportedCharacterMemory(presetRoot: string, templateName: string, cardId: string): {
669
+ /** 角色卡记忆变更后同步已导入模块的 chara-<id>-memory 注入条目
670
+ * (world_book note 写入卡记忆后调用;未导入当前模块的卡返回 synced=false)。 */
671
+ declare function syncImportedCharacterMemory(moduleRoot: string, templateName: string, cardId: string): {
716
672
  ok: true;
717
673
  synced: boolean;
718
674
  } | {
719
675
  ok: false;
720
676
  message: string;
721
677
  };
722
- /** 追加角色卡本地记忆(.characters/<id>/memory.md,跟随角色卡跨预设)。 */
723
- declare function appendCharacterMemory(presetRoot: string, cardId: string, note: string): void;
678
+ /** 追加角色卡本地记忆(.characters/<id>/memory.md,跟随角色卡跨模块)。 */
679
+ declare function appendCharacterMemory(moduleRoot: string, cardId: string, note: string): void;
724
680
  /** 追加记忆文件(时间戳列表格式;header 标注文件类型)。世界书工具与角色卡共用。 */
725
681
  declare function appendMemoryFile(file: string, note: string, header?: string): void;
726
682
  /** 读角色卡本地记忆文本(无记忆返回空串)。 */
727
- declare function readCharacterMemory(presetRoot: string, cardId: string): string;
683
+ declare function readCharacterMemory(moduleRoot: string, cardId: string): string;
728
684
  type CharacterImportOptions = StConversionOptions & ImportChoices;
729
685
  type CharacterImportResult = {
730
686
  ok: true;
@@ -736,29 +692,29 @@ type CharacterImportResult = {
736
692
  message: string;
737
693
  };
738
694
  /** 角色卡入库:PNG 原图(可选)+ 角色卡 JSON → 转换参数存 converted.yml。 */
739
- declare function importCharacterCard(presetRoot: string, files: AssetFile[], options?: CharacterImportOptions): CharacterImportResult;
695
+ declare function importCharacterCard(moduleRoot: string, files: AssetFile[], options?: CharacterImportOptions): CharacterImportResult;
740
696
  /** 原始文件流导入:识别 PNG 魔数后在 host 侧提取角色卡,避免客户端 base64 膨胀 JSON。 */
741
- declare function importCharacterCardFile(presetRoot: string, filePath: string, fileName?: string, options?: CharacterImportOptions): CharacterImportResult;
697
+ declare function importCharacterCardFile(moduleRoot: string, filePath: string, fileName?: string, options?: CharacterImportOptions): CharacterImportResult;
742
698
  interface CharacterCardListItem {
743
699
  id: string;
744
700
  name: string;
745
701
  description?: string;
746
702
  hasAvatar: boolean;
747
- /** 是否已导入当前预设(激活预设 meta.importedCharacters 含该 id)。 */
703
+ /** 是否已导入当前模块(激活模块 meta.importedCharacters 含该 id)。 */
748
704
  imported: boolean;
749
705
  }
750
- /** 角色卡库清单 + 各卡在当前预设的导入状态。 */
751
- declare function listCharacterCards(presetRoot: string, activeTemplate: string | undefined): CharacterCardListItem[];
706
+ /** 角色卡库清单 + 各卡在当前模块的导入状态。 */
707
+ declare function listCharacterCards(moduleRoot: string, activeTemplate: string | undefined): CharacterCardListItem[];
752
708
  /** 删除角色卡库条目。 */
753
- declare function deleteCharacterCard(presetRoot: string, id: string): {
709
+ declare function deleteCharacterCard(moduleRoot: string, id: string): {
754
710
  ok: true;
755
711
  } | {
756
712
  ok: false;
757
713
  message: string;
758
714
  };
759
- /** 角色卡参数导入当前预设:promptConfigs 合并(chara-<id>- 前缀防冲突)、
715
+ /** 角色卡参数导入当前模块:promptConfigs 合并(chara-<id>- 前缀防冲突)、
760
716
  * params 合并(角色卡覆盖同键)、meta.importedCharacters 记录来源。 */
761
- declare function applyCharacterToPreset(presetRoot: string, templateName: string, cardId: string): {
717
+ declare function applyCharacterToPreset(moduleRoot: string, templateName: string, cardId: string): {
762
718
  ok: true;
763
719
  count: number;
764
720
  personaOpened?: boolean;
@@ -766,9 +722,9 @@ declare function applyCharacterToPreset(presetRoot: string, templateName: string
766
722
  ok: false;
767
723
  message: string;
768
724
  };
769
- /** 从当前预设移除角色卡参数:删前缀 promptConfigs、删该卡声明的 params 键、
725
+ /** 从当前模块移除角色卡参数:删前缀 promptConfigs、删该卡声明的 params 键、
770
726
  * meta.importedCharacters 除名。 */
771
- declare function removeCharacterFromPreset(presetRoot: string, templateName: string, cardId: string): {
727
+ declare function removeCharacterFromPreset(moduleRoot: string, templateName: string, cardId: string): {
772
728
  ok: true;
773
729
  count: number;
774
730
  } | {
@@ -802,7 +758,7 @@ type TuiSource = PromptSettings & {
802
758
  skillCatalog: SkillCatalogEntry[];
803
759
  activeSkillsDirs: string[];
804
760
  };
805
- /** 参数保存回调:写激活预设 preset.yml;失败必须抛给命令层渲染为错误。 */
761
+ /** 参数保存回调:写激活模块 preset.yml;失败必须抛给命令层渲染为错误。 */
806
762
  type SavePresetParam = (key: string, value: unknown) => void | Promise<void>;
807
763
  /** 技能启停回调:切换受管实体的根链接。 */
808
764
  type ToggleSkillState = (folder: string, enabled: boolean) => {
@@ -891,12 +847,17 @@ declare function parseFrontmatter(text: string): {
891
847
  };
892
848
  //#endregion
893
849
  //#region src/shared/preset-ids.d.ts
894
- /** 包内模板、用户副本与当前预设共用同名 ID;避免与宿主官方预设重名。 */
895
- declare const DEFAULT_PRESET_ID = "pt-standard";
850
+ /**
851
+ * 包内模块与用户副本共用同名 ID;避免与宿主官方预设重名。
852
+ *
853
+ * 内置模块随包分发在仓库根的 `modules/`。旧的内置预设 `pt-*` 已整体退场——它们是官方
854
+ * 预设形态的遗留,重构后不再读取也不再维护;这里指向当前随包分发的内置模块作为兜底。
855
+ */
856
+ declare const DEFAULT_MODULE_ID = "ponytail";
896
857
  //#endregion
897
858
  //#region src/index.d.ts
898
859
  declare const name = "prompt-tool";
899
860
  declare const inject: string[];
900
861
  declare function apply(ctx: Context, configIn: Config): void;
901
862
  //#endregion
902
- export { BRIDGE_ENDPOINTS, type BridgeEndpoint, type BridgeErrorPayload, type BridgeRequestMap, type BridgeValueMap, CHARACTER_MODULES_KEY, type CharacterModuleContext, Config, DEFAULT_PRESET_ID, ENGINE_CAPABILITIES, ENGINE_PARAM_KEYS, ENGINE_RECIPES, type EngineCapability, type EngineCapabilityCreateRequest, type EngineCapabilityCreateResult, type EngineCapabilityRemoveResult, INSTRUCTION_FILE_STATUSES, type InstructionContextView, type InstructionFileSnapshot, type InstructionFileStatus, MAX_BRIDGE_BODY_BYTES, MAX_CHARACTER_CARD_STREAM_BYTES, MAX_INSTRUCTION_FILE_BYTES, type ModuleSourceMode, PARAM_KEYS, PRE_STEP_COORDINATOR_SERVICE, PRE_STEP_COORDINATOR_VERSION, type PluginSubagentSeam, type PreStepCoordinatorOptions, type PreStepCoordinatorService, type PreStepFileContribution, type PreStepPromptConfig, type PreStepSource, type PresetModuleFacts, type PresetSpec, type PromptConfigTemplate, type PromptConfigValidationError, type PromptConfigValidationResult, PromptSettingsSchema, SETTINGS_BRIDGE_PREFIX, SKILL_NAME_PATTERN, type SkillCatalogEntry, type SkillFrontmatter, type SkillPolicyChange, type SkillPolicyRead, type SkillPolicyScope, type SkillPolicyWrite, type SkillsCatalogSnapshot, type SkillsRuntime, type SkillsState, type ToolTemplate, USER_SKILLS_DIR, WRITER_PARAM_KEYS, type WritePresetOptions, agentsFileCardSpecs, agentsFileId, appendCharacterMemory, appendMemoryFile, apply, applyCharacterToPreset, applyModuleConfigs, assertSafeConfigId, buildModuleConfigsFromParams, buildWorldBookEntry, catalogFromScan, characterModuleStillNeeded, cloneBuiltinPreset, configFileName, convertStToPreset, createEngineCapabilityInPreset, createSkillsReloader, createSkillsRuntime, declaredCharacterModules, deleteCharacterCard, deleteWorldBookEntry, detectAgentsFileSnapshots, detectAgentsFiles, detectModels, engineCapability, engineRecipe, ensurePresetSeed, ensureWebSurface, expandPresetSource, exportPresetPackage, importCharacterCard, importCharacterCardFile, importSkillsPackage, inject, installPreStepCoordinator, installPresetPackage, invalidateModelCatalog, invocationForScope, isEngineCapabilityPresent, listAdvertisedModels, listBuiltinTemplates, listCharacterCards, listPresets, listWorldBookEntries, loadPresetSpec, loadPromptTemplates, loadToolTemplates, mergeInstructionCards, mergeStPresets, name, parseFrontmatter, peekModelCatalog, presetImportPreview, processStText, readAgentsFileSnapshot, readCharacterMemory, readSkillInvocation, readSkillsState, recordedCharacterModules, registerCharacterTools, registerSettingsBridge, registerTuiCommand, registerWorldBookTools, removeCharacterFromPreset, removeEngineCapabilityFromPreset, removePresetModule, removeUserPreset, renderComposition, requiredCharacterModules, resolvePresetDir, resolvePresetModuleFacts, resolvePresetParams, resolveProfileDir, resolveProjectRoot, resolveSubagentStartOptions, savePresetParams, savePresetPersona, scanRoot, scanRoots, scheduleWebSurfaceRepair, scopeOfInvocation, setSkillInvocation, skillRoots, skillsStatePath, stPresetId, syncImportedCharacterMemory, upsertWorldBookEntry, userPresetsDir, validateCustomToolIdentities, validateEngineParamValues, validatePromptConfigs, writeAgentsFile, writeAgentsFileChecked, writePreset, writeSkillsState };
863
+ export { BRIDGE_ENDPOINTS, type BridgeEndpoint, type BridgeErrorPayload, type BridgeRequestMap, type BridgeValueMap, CHARACTER_MODULES_KEY, type CharacterModuleContext, Config, DEFAULT_MODULE_ID, ENGINE_CAPABILITIES, ENGINE_PARAM_KEYS, ENGINE_RECIPES, type EngineCapability, type EngineCapabilityCreateRequest, type EngineCapabilityCreateResult, type EngineCapabilityRemoveResult, INSTRUCTION_FILE_STATUSES, type InstructionContextView, type InstructionFileSnapshot, type InstructionFileStatus, MAX_BRIDGE_BODY_BYTES, MAX_CHARACTER_CARD_STREAM_BYTES, MAX_INSTRUCTION_FILE_BYTES, type ModuleFacts, type ModuleSourceMode, type ModuleSpec, PARAM_KEYS, PRE_STEP_COORDINATOR_SERVICE, PRE_STEP_COORDINATOR_VERSION, type PluginSubagentSeam, type PreStepCoordinatorOptions, type PreStepCoordinatorService, type PreStepPromptConfig, type PreStepSource, type PromptConfigTemplate, type PromptConfigValidationError, type PromptConfigValidationResult, SETTINGS_BRIDGE_PREFIX, SKILL_NAME_PATTERN, type SkillCatalogEntry, type SkillFrontmatter, type SkillPolicyChange, type SkillPolicyRead, type SkillPolicyScope, type SkillPolicyWrite, type SkillsCatalogSnapshot, type SkillsRuntime, type SkillsState, type ToolTemplate, USER_SKILLS_DIR, WRITER_PARAM_KEYS, type WritePresetOptions, agentsFileCardSpecs, agentsFileId, appendCharacterMemory, appendMemoryFile, apply, applyCharacterToPreset, applyModuleConfigs, assertSafeConfigId, buildModuleConfigsFromParams, buildWorldBookEntry, catalogFromScan, characterModuleStillNeeded, cloneBuiltinPreset, configFileName, convertStToPreset, createEngineCapabilityInPreset, createSkillsReloader, createSkillsRuntime, declaredCharacterModules, deleteCharacterCard, deleteWorldBookEntry, detectAgentsFileSnapshots, detectAgentsFiles, detectModels, engineCapability, engineRecipe, ensurePresetSeed, ensureWebSurface, expandPresetSource, exportPresetPackage, importCharacterCard, importCharacterCardFile, importSkillsPackage, inject, installPreStepCoordinator, installPresetPackage, invalidateModelCatalog, invocationForScope, isEngineCapabilityPresent, listAdvertisedModels, listBuiltinTemplates, listCharacterCards, listModules, listWorldBookEntries, loadModuleSpec, loadPromptTemplates, loadToolTemplates, mergeInstructionCards, mergeStPresets, moduleDirExists, name, parseFrontmatter, peekModelCatalog, presetImportPreview, processStText, readAgentsFileSnapshot, readCharacterMemory, readSkillInvocation, readSkillsState, recordedCharacterModules, registerCharacterTools, registerSettingsBridge, registerTuiCommand, registerWorldBookTools, removeCharacterFromPreset, removeEngineCapabilityFromPreset, removePresetModule, removeUserPreset, renderComposition, requiredCharacterModules, resolveModuleDir, resolveModuleFacts, resolvePresetParams, resolveProfileDir, resolveProjectRoot, resolveSubagentStartOptions, saveModuleParams, savePresetPersona, scanRoot, scanRoots, scheduleWebSurfaceRepair, scopeOfInvocation, setSkillInvocation, skillRoots, skillsStatePath, stPresetId, syncImportedCharacterMemory, upsertWorldBookEntry, userModulesDir, validateCustomToolIdentities, validateEngineParamValues, validatePromptConfigs, writeAgentsFile, writeAgentsFileChecked, writePreset, writeSkillsState };