dsh-plugin-prompt-tool 0.4.2 → 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/README.md +131 -222
- package/engine/anchor-match.mjs +117 -0
- package/engine/compaction-epoch.mjs +139 -0
- package/engine/compositions/library/bootstrap-filesystem.yml +19 -0
- package/engine/compositions/library/compaction.yml +52 -0
- package/engine/compositions/library/context-gate.yml +40 -0
- package/engine/compositions/library/custom-bash.yml +14 -0
- package/engine/compositions/library/delegation.yml +85 -0
- package/engine/compositions/library/official-agent-instructions.yml +17 -0
- package/engine/compositions/library/official-persistent-shell.yml +56 -0
- package/engine/compositions/library/official-skill-filesystem-cordis.yml +10 -0
- package/engine/compositions/library/official-tool-bash.yml +6 -0
- package/engine/compositions/library/official-tool-cordis.yml +13 -0
- package/engine/compositions/library/official-tool-presentation.yml +7 -0
- package/engine/compositions/library/official-tool-skill.yml +14 -0
- package/engine/compositions/library/persistent-shell.yml +36 -0
- package/engine/compositions/library/persona.yml +9 -0
- package/engine/compositions/library/planning.yml +41 -0
- package/engine/compositions/library/prompt-config-engine.yml +16 -0
- package/engine/compositions/library/run-code-env.yml +15 -0
- package/engine/compositions/library/skill-filesystem.yml +13 -0
- package/engine/compositions/library/skill-search.yml +14 -0
- package/engine/compositions/library/str-replace-editor.yml +10 -0
- package/engine/compositions/library/tool-ask-user.yml +8 -0
- package/engine/compositions/library/tool-bash.yml +16 -0
- package/engine/compositions/library/tool-bootstrap.yml +16 -0
- package/engine/compositions/library/tool-filter.yml +12 -0
- package/engine/compositions/library/tool-fs-search.yml +18 -0
- package/engine/compositions/library/tool-fs.yml +10 -0
- package/engine/compositions/library/tool-goal.yml +19 -0
- package/engine/compositions/library/tool-jobs.yml +23 -0
- package/engine/compositions/library/tool-pwsh.yml +12 -0
- package/engine/compositions/library/tool-todo.yml +11 -0
- package/engine/compositions/library/tool-web.yml +9 -0
- package/engine/compositions/source/local/context-gate.yml +37 -0
- package/engine/compositions/source/local/custom-bash.yml +11 -0
- package/engine/compositions/source/local/prompt-config-engine.yml +13 -0
- package/engine/compositions/source/local/run-code-env.yml +12 -0
- package/engine/compositions/source/local/skill-search.yml +11 -0
- package/engine/compositions/source/local/tool-bootstrap.yml +13 -0
- package/engine/context-gate.mjs +305 -0
- package/{preset → engine}/custom-bash.mjs +243 -243
- package/engine/executor.mjs +278 -0
- package/engine/fillers.mjs +273 -0
- package/engine/interpolate.mjs +66 -0
- package/engine/layers.mjs +224 -0
- package/engine/prompt-config-engine.mjs +49 -0
- package/engine/run-code-env.mjs +208 -0
- package/engine/schema.mjs +312 -0
- package/engine/session-vars.mjs +52 -0
- package/{preset → engine}/shared.mjs +35 -0
- package/engine/strategies.mjs +213 -0
- package/{preset → engine}/tool-bootstrap.mjs +350 -282
- package/engine/tool-filter.mjs +80 -0
- package/engine/vendor/yaml/LICENSE +13 -0
- package/engine/vendor/yaml/dist/compose/compose-collection.js +88 -0
- package/engine/vendor/yaml/dist/compose/compose-doc.js +43 -0
- package/engine/vendor/yaml/dist/compose/compose-node.js +109 -0
- package/engine/vendor/yaml/dist/compose/compose-scalar.js +86 -0
- package/engine/vendor/yaml/dist/compose/composer.js +219 -0
- package/engine/vendor/yaml/dist/compose/resolve-block-map.js +115 -0
- package/engine/vendor/yaml/dist/compose/resolve-block-scalar.js +198 -0
- package/engine/vendor/yaml/dist/compose/resolve-block-seq.js +49 -0
- package/engine/vendor/yaml/dist/compose/resolve-end.js +37 -0
- package/engine/vendor/yaml/dist/compose/resolve-flow-collection.js +207 -0
- package/engine/vendor/yaml/dist/compose/resolve-flow-scalar.js +225 -0
- package/engine/vendor/yaml/dist/compose/resolve-props.js +146 -0
- package/engine/vendor/yaml/dist/compose/util-contains-newline.js +34 -0
- package/engine/vendor/yaml/dist/compose/util-empty-scalar-position.js +26 -0
- package/engine/vendor/yaml/dist/compose/util-flow-indent-check.js +15 -0
- package/engine/vendor/yaml/dist/compose/util-map-includes.js +13 -0
- package/engine/vendor/yaml/dist/doc/Document.js +335 -0
- package/engine/vendor/yaml/dist/doc/anchors.js +71 -0
- package/engine/vendor/yaml/dist/doc/applyReviver.js +55 -0
- package/engine/vendor/yaml/dist/doc/createNode.js +88 -0
- package/engine/vendor/yaml/dist/doc/directives.js +176 -0
- package/engine/vendor/yaml/dist/errors.js +57 -0
- package/engine/vendor/yaml/dist/index.js +17 -0
- package/engine/vendor/yaml/dist/log.js +11 -0
- package/engine/vendor/yaml/dist/nodes/Alias.js +116 -0
- package/engine/vendor/yaml/dist/nodes/Collection.js +147 -0
- package/engine/vendor/yaml/dist/nodes/Node.js +38 -0
- package/engine/vendor/yaml/dist/nodes/Pair.js +36 -0
- package/engine/vendor/yaml/dist/nodes/Scalar.js +24 -0
- package/engine/vendor/yaml/dist/nodes/YAMLMap.js +144 -0
- package/engine/vendor/yaml/dist/nodes/YAMLSeq.js +113 -0
- package/engine/vendor/yaml/dist/nodes/addPairToJSMap.js +63 -0
- package/engine/vendor/yaml/dist/nodes/identity.js +36 -0
- package/engine/vendor/yaml/dist/nodes/toJS.js +37 -0
- package/engine/vendor/yaml/dist/parse/cst-scalar.js +214 -0
- package/engine/vendor/yaml/dist/parse/cst-stringify.js +61 -0
- package/engine/vendor/yaml/dist/parse/cst-visit.js +97 -0
- package/engine/vendor/yaml/dist/parse/cst.js +98 -0
- package/engine/vendor/yaml/dist/parse/lexer.js +721 -0
- package/engine/vendor/yaml/dist/parse/line-counter.js +39 -0
- package/engine/vendor/yaml/dist/parse/parser.js +975 -0
- package/engine/vendor/yaml/dist/public-api.js +102 -0
- package/engine/vendor/yaml/dist/schema/Schema.js +37 -0
- package/engine/vendor/yaml/dist/schema/common/map.js +17 -0
- package/engine/vendor/yaml/dist/schema/common/null.js +15 -0
- package/engine/vendor/yaml/dist/schema/common/seq.js +17 -0
- package/engine/vendor/yaml/dist/schema/common/string.js +14 -0
- package/engine/vendor/yaml/dist/schema/core/bool.js +19 -0
- package/engine/vendor/yaml/dist/schema/core/float.js +43 -0
- package/engine/vendor/yaml/dist/schema/core/int.js +38 -0
- package/engine/vendor/yaml/dist/schema/core/schema.js +23 -0
- package/engine/vendor/yaml/dist/schema/json/schema.js +62 -0
- package/engine/vendor/yaml/dist/schema/tags.js +96 -0
- package/engine/vendor/yaml/dist/schema/yaml-1.1/binary.js +58 -0
- package/engine/vendor/yaml/dist/schema/yaml-1.1/bool.js +26 -0
- package/engine/vendor/yaml/dist/schema/yaml-1.1/float.js +46 -0
- package/engine/vendor/yaml/dist/schema/yaml-1.1/int.js +71 -0
- package/engine/vendor/yaml/dist/schema/yaml-1.1/merge.js +67 -0
- package/engine/vendor/yaml/dist/schema/yaml-1.1/omap.js +74 -0
- package/engine/vendor/yaml/dist/schema/yaml-1.1/pairs.js +78 -0
- package/engine/vendor/yaml/dist/schema/yaml-1.1/schema.js +39 -0
- package/engine/vendor/yaml/dist/schema/yaml-1.1/set.js +93 -0
- package/engine/vendor/yaml/dist/schema/yaml-1.1/timestamp.js +101 -0
- package/engine/vendor/yaml/dist/stringify/foldFlowLines.js +146 -0
- package/engine/vendor/yaml/dist/stringify/stringify.js +129 -0
- package/engine/vendor/yaml/dist/stringify/stringifyCollection.js +153 -0
- package/engine/vendor/yaml/dist/stringify/stringifyComment.js +20 -0
- package/engine/vendor/yaml/dist/stringify/stringifyDocument.js +85 -0
- package/engine/vendor/yaml/dist/stringify/stringifyNumber.js +25 -0
- package/engine/vendor/yaml/dist/stringify/stringifyPair.js +150 -0
- package/engine/vendor/yaml/dist/stringify/stringifyString.js +336 -0
- package/engine/vendor/yaml/dist/util.js +11 -0
- package/engine/vendor/yaml/dist/visit.js +233 -0
- package/engine/vendor/yaml/index.js +5 -0
- package/engine/vendor/yaml/package.json +11 -0
- package/lib/client.js +4724 -775
- package/lib/client.js.map +1 -1
- package/lib/index.d.mts +530 -51
- package/lib/index.mjs +4164 -740
- package/lib/preset-core.d.mts +7 -37
- package/lib/preset-core.mjs +43 -285
- package/lib/prompt-configs-B4vH09wx.d.mts +100 -0
- package/lib/prompt-configs-ThS4iXPg.mjs +771 -0
- package/package.json +36 -29
- package/preset/anchored/preset.yml +342 -0
- package/preset/creative/preset.yml +65 -0
- package/preset/creative/skills/cordis-plugin-development/SKILL.md +420 -0
- package/preset/creative/skills/editing-cordis-compositions/SKILL.md +165 -0
- package/preset/custom/preset.yml +13 -0
- package/preset/liangshen/preset.yml +72 -0
- package/preset/minimal/preset.yml +44 -0
- package/preset/ptc/preset.yml +56 -0
- package/preset/standard/preset.yml +55 -0
- package/skills/manifest.json +7 -0
- package/skills/sandboxmod/SKILL.md +49 -49
- package/skills/web ui/SKILL.md +42 -0
- package/templates/10-pre-step.yml +28 -0
- package/templates/11-merged-a.yml +11 -0
- package/templates/13-anchor.yml +19 -0
- package/templates/14-first-turn-anchor.yml +27 -0
- package/templates/15-guide-auto.yml +25 -0
- package/templates/16-custom-fallback.yml +21 -0
- package/templates/17-instruction-hint.yml +23 -0
- package/templates/18-placeholder-env-facts.yml +11 -0
- package/templates/19-placeholder-skill-catalog.yml +19 -0
- package/templates/20-system-section.yml +19 -0
- package/templates/30-runtime-context.yml +10 -0
- package/templates/31-runtime-context-placeholder.yml +18 -0
- package/templates/40-agent-request.yml +11 -0
- package/templates/50-llm-stream.yml +9 -0
- package/templates/60-tool-pipeline.yml +12 -0
- package/AGENTS.md +0 -4
- package/plan.md +0 -312
- package/preset/agent.cordis.yml +0 -443
- package/preset/compaction-epoch.mjs +0 -81
- package/preset/context-gate.mjs +0 -165
- package/preset/instruction-hint.mjs +0 -217
- package/preset/near-anchor.mjs +0 -101
- package/preset/preset.yml +0 -3
- package/preset/prompt-injector.mjs +0 -112
- package/preset/router-first-turn.mjs +0 -73
- package/preset/router-guide.mjs +0 -79
- package/preset.md +0 -115
- package/upstream/dsh-anchored-standard/LICENSE +0 -22
- package/upstream/dsh-anchored-standard/NOTICE +0 -19
- package/upstream/dsh-anchored-standard/REVISION +0 -1
- package/upstream/dsh-anchored-standard/preset/agent.cordis.yml +0 -440
- package/upstream/dsh-anchored-standard/preset/compaction-epoch.mjs +0 -81
- package/upstream/dsh-anchored-standard/preset/context-gate.mjs +0 -202
- package/upstream/dsh-anchored-standard/preset/custom-bash.mjs +0 -219
- package/upstream/dsh-anchored-standard/preset/dev-tool-search.mjs +0 -131
- package/upstream/dsh-anchored-standard/preset/instruction-hint.mjs +0 -231
- package/upstream/dsh-anchored-standard/preset/preset.yml +0 -3
- package/upstream/dsh-anchored-standard/preset/skill-search.mjs +0 -142
- package/upstream/dsh-anchored-standard/preset/tool-bootstrap.mjs +0 -301
- /package/{preset → engine}/skill-search.mjs +0 -0
package/lib/index.d.mts
CHANGED
|
@@ -1,45 +1,38 @@
|
|
|
1
|
+
import { n as PromptConfigFile, r as PromptConfigSpec } from "./prompt-configs-B4vH09wx.mjs";
|
|
2
|
+
import { SettingsNamespace } from "@deepseek-ai/dsh-settings";
|
|
1
3
|
import z from "@deepseek-ai/schemastery";
|
|
2
4
|
import { Context } from "@deepseek-ai/cordis";
|
|
3
|
-
//#region src/
|
|
4
|
-
|
|
5
|
-
|
|
5
|
+
//#region src/shared/param-keys.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* 引擎行为参数键(按预设存储:激活预设 preset.yml 的 params + promptConfigs)。
|
|
8
|
+
* 不进 Config schema、不进 settings namespace——每预设一份,随预设走(官方范式:
|
|
9
|
+
* Config = 部署轴,引擎行为在预设文件)。
|
|
10
|
+
*
|
|
11
|
+
* 这些键在 UI 有专门编辑入口(模型设置 / 工具与深度 / 开关),writePreset 把
|
|
12
|
+
* 预设级 params 合并进每条 promptConfig 的 params 时排除——「params(高级参数
|
|
13
|
+
* JSON)」框只保留内容变量与配置自身策略参数,避免 UI 已管理的参数冗余回写。
|
|
14
|
+
* 放 shared:host(write-preset)与 config/settings-bridge 共用,单一来源。
|
|
15
|
+
*/
|
|
16
|
+
declare const PARAM_KEYS: ReadonlySet<string>;
|
|
17
|
+
//#endregion
|
|
18
|
+
//#region src/config.d.ts
|
|
6
19
|
interface Config {
|
|
7
|
-
/** 可选:覆盖 preset.md 文本(默认读文件)。 */
|
|
8
|
-
text: string;
|
|
9
|
-
/** 可选:覆盖 AGENTS.md 文本(默认读文件)。 */
|
|
10
|
-
agentsText: string;
|
|
11
20
|
/** 是否用 AGENTS.md 内容替换本地 instruction-hint 的默认提示文本(默认关闭)。 */
|
|
12
21
|
injectAgentsPrompt: boolean;
|
|
13
22
|
/** 是否写 ~/.dsh/AGENTS.md(默认 true)。 */
|
|
14
23
|
writeAgents: boolean;
|
|
15
24
|
/** 是否生成锚定注入 preset(默认 true)。 */
|
|
16
25
|
writePreset: boolean;
|
|
17
|
-
/**
|
|
18
|
-
|
|
26
|
+
/** 预设模板名(默认 anchored;其他模板时 anchored 专属 UI 可隐藏)。 */
|
|
27
|
+
presetTemplate: string;
|
|
19
28
|
/** 以技能目录名为键的逐技能开关,缺省视为 true。 */
|
|
20
29
|
skillSwitches: Record<string, boolean>;
|
|
21
|
-
/**
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
|
|
27
|
-
/** 自定义每轮引导文本;guideCustom=true 时固定使用。 */
|
|
28
|
-
guideText: string;
|
|
29
|
-
/** 自定义每轮引导开关:true 固定使用 guideText;false 按任务自动选择。 */
|
|
30
|
-
guideCustom: boolean;
|
|
31
|
-
/** 子代理固定 Flash 模型:开启时给 subagent/subagent_fork 行加固定 Flash 路由;关闭时子代理继承主会话路由,目录全量放行。 */
|
|
32
|
-
subagentFlash: boolean;
|
|
33
|
-
/** 子代理 Flash 路由 provider(默认 deepseek-official)。 */
|
|
34
|
-
subagentFlashProvider: string;
|
|
35
|
-
/** 子代理 Flash 模型名(默认 deepseek-v4-flash)。 */
|
|
36
|
-
subagentFlashModel: string;
|
|
37
|
-
/** 首轮输出封顶;0 或未设置 = 不设封顶(本项目默认),正整数 = 请求 #1 的 maxTokens。 */
|
|
38
|
-
bootstrapMaxTokens: number;
|
|
39
|
-
/** 使用 PTC 模式:默认开启——晋升后把 wire 切换为 Code Mode(单一 run_code,完整插件工具经生成 SDK 调用);关闭时晋升后恢复原生完整工具目录。 */
|
|
40
|
-
usePtcMode: boolean;
|
|
41
|
-
/** 用户自定义技能目录;空 = 自动使用当前 profile 下的 skills/ 副本。 */
|
|
42
|
-
skillsDir: string;
|
|
30
|
+
/** 技能展示顺序(目录名数组):排前面的技能 rank 更小,模型最先看到。 */
|
|
31
|
+
skillOrder: string[];
|
|
32
|
+
/** 用户自定义技能目录列表(按添加顺序,首个目录优先级最高);空 = 自动使用当前 profile 下的 skills/ 副本。 */
|
|
33
|
+
skillsDirs: string[];
|
|
34
|
+
/** 旧版单值技能目录(仅读取迁移用,新版本统一写回 skillsDirs)。 */
|
|
35
|
+
skillsDir?: string;
|
|
43
36
|
/** 技能候选排序基数,技能目录内按下标递增。 */
|
|
44
37
|
skillRankBase: number;
|
|
45
38
|
/** 常驻规则文件目标路径。 */
|
|
@@ -52,37 +45,523 @@ interface Config {
|
|
|
52
45
|
fallbackText: string;
|
|
53
46
|
}
|
|
54
47
|
declare const Config: z<Config>;
|
|
48
|
+
interface SkillEntry {
|
|
49
|
+
/** 来源技能目录的绝对路径(多目录合并后用于修复定位与归属展示)。 */
|
|
50
|
+
dir: string;
|
|
51
|
+
folder: string;
|
|
52
|
+
file: string;
|
|
53
|
+
name: string;
|
|
54
|
+
description: string;
|
|
55
|
+
whenToUse?: string;
|
|
56
|
+
metadata?: Record<string, unknown>;
|
|
57
|
+
body: string;
|
|
58
|
+
/** 是否通过官方 dsh-skill 候选校验;false 时只进管理界面,不注册给模型。 */
|
|
59
|
+
valid: boolean;
|
|
60
|
+
/** invalid 条目的原因(可为空)。 */
|
|
61
|
+
issue?: string;
|
|
62
|
+
/** 通过符号链接/junction 挂入的目录(删除类操作需谨慎)。 */
|
|
63
|
+
linked?: boolean;
|
|
64
|
+
/** 官方调用策略:disable-model-invocation: true 时模型不可调用。 */
|
|
65
|
+
modelInvocable: boolean;
|
|
66
|
+
/** 官方调用策略:user-invocable: false 时用户不可调用。 */
|
|
67
|
+
userInvocable: boolean;
|
|
68
|
+
}
|
|
55
69
|
interface SkillCatalogEntry {
|
|
56
70
|
folder: string;
|
|
57
71
|
name: string;
|
|
58
72
|
description: string;
|
|
73
|
+
/** 是否通过官方 dsh-skill 候选校验;false 时 UI 灰显并展示 issue。 */
|
|
74
|
+
valid: boolean;
|
|
75
|
+
/** 来源技能目录绝对路径(多目录管理:修复定位 / 归属展示 / 目录计数)。 */
|
|
76
|
+
dir?: string;
|
|
77
|
+
/** 同名标记:多个目录存在相同 folder 时全部保留,UI 标注同名。 */
|
|
78
|
+
duplicate?: boolean;
|
|
79
|
+
/** invalid 条目的原因。 */
|
|
80
|
+
issue?: string;
|
|
81
|
+
/** 通过符号链接/junction 挂入的目录(删除类操作需谨慎)。 */
|
|
82
|
+
linked?: boolean;
|
|
83
|
+
modelInvocable: boolean;
|
|
84
|
+
userInvocable: boolean;
|
|
59
85
|
}
|
|
60
86
|
interface PromptSettings {
|
|
61
|
-
promptText: string;
|
|
62
|
-
promptPath: string;
|
|
63
|
-
agentsText: string;
|
|
64
|
-
agentsPath: string;
|
|
65
87
|
injectAgentsPrompt: boolean;
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
88
|
+
/** 运行时检测:是否检测到任何模型服务商(不写入 settings)。 */
|
|
89
|
+
modelsAvailable: boolean;
|
|
90
|
+
skillSwitches: Record<string, boolean>;
|
|
91
|
+
/** 技能展示顺序(目录名数组)。 */
|
|
92
|
+
skillOrder: string[];
|
|
93
|
+
skillCatalog: SkillCatalogEntry[];
|
|
94
|
+
/** 用户自定义技能目录列表(按添加顺序);空 = 自动使用 profile skills 副本。 */
|
|
95
|
+
skillsDirs: string[];
|
|
96
|
+
/** 当前实际生效的技能目录列表(空配置 = [profile 副本路径])。 */
|
|
97
|
+
activeSkillsDirs: string[];
|
|
98
|
+
/** 生效目录存在性(path → 目录是否存在,供 UI 状态徽章)。 */
|
|
99
|
+
skillsDirExists: Record<string, boolean>;
|
|
100
|
+
/** 技能候选排序基数。 */
|
|
101
|
+
skillRankBase: number;
|
|
102
|
+
/** 常驻规则文件目标路径。 */
|
|
103
|
+
residentAgentsPath: string;
|
|
104
|
+
/** 生成的 agent preset 目录。 */
|
|
105
|
+
presetDir: string;
|
|
106
|
+
/** 生成 preset 的显示顺序。 */
|
|
107
|
+
presetOrder: number;
|
|
108
|
+
/** preset.md 缺失或不可读时使用的文本。 */
|
|
109
|
+
fallbackText: string;
|
|
110
|
+
writeAgents: boolean;
|
|
111
|
+
writePreset: boolean;
|
|
112
|
+
presetTemplate: string;
|
|
113
|
+
}
|
|
114
|
+
declare const PromptSettingsSchema: z<PromptSettings>;
|
|
115
|
+
//#endregion
|
|
116
|
+
//#region src/host/write-preset.d.ts
|
|
117
|
+
interface WritePresetOptions {
|
|
118
|
+
firstTurnAnchor: boolean;
|
|
119
|
+
firstTurnText: string;
|
|
120
|
+
firstTurnCustom: boolean;
|
|
69
121
|
guideText: string;
|
|
70
122
|
guideCustom: boolean;
|
|
71
|
-
|
|
123
|
+
injectPrompt: boolean;
|
|
124
|
+
modelProvider: string;
|
|
125
|
+
modelName: string;
|
|
126
|
+
/** 子代理固定模型路由 provider(agentOptions 注入 tool-subagent)。 */
|
|
127
|
+
subagentModelProvider: string;
|
|
128
|
+
/** 子代理固定模型名。 */
|
|
129
|
+
subagentModelName: string;
|
|
130
|
+
/** 主对话思维程度(agent-request patch reasoningEffort;''=不设置,官方档位 off/low/high/max)。 */
|
|
131
|
+
modelReasoningEffort?: string;
|
|
132
|
+
/** 主对话采样温度(agent-request patch temperature;''=不设置)。 */
|
|
133
|
+
modelTemperature?: string;
|
|
134
|
+
/** 主对话输出上限(agent-request patch maxTokens;''=不设置)。 */
|
|
135
|
+
modelMaxTokens?: string;
|
|
136
|
+
/** 子代理思维程度(agent-request patch,audience=subagent;''=不设置)。 */
|
|
137
|
+
subagentReasoningEffort?: string;
|
|
138
|
+
/** 子代理采样温度(agent-request patch,audience=subagent;''=不设置)。 */
|
|
139
|
+
subagentTemperature?: string;
|
|
140
|
+
/** 子代理输出上限(agent-request patch,audience=subagent;''=不设置)。 */
|
|
141
|
+
subagentMaxTokens?: string;
|
|
142
|
+
/** 子代理自定义模型人设(per-child shadow;缺省 = 经 scope 链继承主会话 persona 模块)。 */
|
|
143
|
+
subagentPersona?: string;
|
|
144
|
+
/** 委派工具集白名单(toolFilter.allow;支持数组或逗号/空格分隔字符串)。 */
|
|
145
|
+
toolFilterAllow?: string[] | string;
|
|
146
|
+
/** 委派工具集黑名单(toolFilter.deny)。 */
|
|
147
|
+
toolFilterDeny?: string[] | string;
|
|
148
|
+
/** 委派递归深度上限(0 禁止委派 / provider-managed / 正整数)。 */
|
|
149
|
+
maxDepth?: number | 'provider-managed' | string;
|
|
150
|
+
/** 注入 kind 白名单(context-gate allowKinds;数组或逗号分隔字符串)。 */
|
|
151
|
+
allowKinds?: string[] | string;
|
|
152
|
+
/** custom-fallback 锚定词(prompt-injector params.firstTurnWord)。 */
|
|
153
|
+
firstTurnWord?: string;
|
|
154
|
+
/** 是否注入 agents.md 内容到 instruction-hint(false 时 instruction-hint 走引擎默认提示/动态探测)。 */
|
|
155
|
+
injectAgentsPrompt?: boolean;
|
|
72
156
|
bootstrapMaxTokens: number;
|
|
73
157
|
usePtcMode: boolean;
|
|
74
|
-
/**
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
158
|
+
/** 写入 agents-instruction.txt 供 instruction-hint 配置读取;不传则使用本地默认 hint。 */
|
|
159
|
+
agentsInstructionText?: string;
|
|
160
|
+
presetDir: string;
|
|
161
|
+
presetOrder: number;
|
|
162
|
+
/** settings 层用户自定义提示词配置(优先级最高)。 */
|
|
163
|
+
promptConfigs: PromptConfigSpec[];
|
|
164
|
+
/** 预设模板名(preset/<name>);默认 anchored(兼容期)。 */
|
|
165
|
+
presetTemplate?: string;
|
|
166
|
+
/** 目录加载失败等非致命告警回调。 */
|
|
167
|
+
warn?: (message: string) => void;
|
|
168
|
+
}
|
|
169
|
+
/** 把任意单一参数预设模板物化到生成目录;全部失败 fail loud。 */
|
|
170
|
+
declare function writePreset(prompt: string, options: WritePresetOptions): void;
|
|
171
|
+
//#endregion
|
|
172
|
+
//#region src/host/manifest.d.ts
|
|
173
|
+
/**
|
|
174
|
+
* manifest — 预设模板单一参数 YAML(preset.yml)的加载与引擎参数解析。
|
|
175
|
+
*
|
|
176
|
+
* 一个预设 = 一个 preset.yml:
|
|
177
|
+
* - modules/params/content/meta 全部是直读参数,无模板语法;
|
|
178
|
+
* - 默认提示词配置由引擎按 params 生成(见 write-preset),promptConfigs 仅为可选覆盖;
|
|
179
|
+
* - 组合模块中的 __TOKEN__ 由引擎内部 renderEngineTokens 按 params 生成,
|
|
180
|
+
* 不再暴露到参数文件。
|
|
181
|
+
* 本模块负责参数归一化与引擎 token 渲染;所有 anchored 专属行为都在引擎内部。
|
|
182
|
+
*/
|
|
183
|
+
interface PresetSpec {
|
|
184
|
+
id: string;
|
|
185
|
+
name: string;
|
|
186
|
+
/** 预设说明(官方用户预设格式元数据;列表展示用,可选)。 */
|
|
187
|
+
description?: string;
|
|
188
|
+
version: string;
|
|
189
|
+
engineCompat: string;
|
|
190
|
+
meta?: Record<string, unknown>;
|
|
191
|
+
content?: {
|
|
192
|
+
presetText?: string;
|
|
193
|
+
agentsText?: string;
|
|
194
|
+
};
|
|
195
|
+
/** 模块清单(参数文件决定组合内容):按序装配 engine/compositions/library/<name>.yml。 */
|
|
196
|
+
modules?: string[];
|
|
197
|
+
/** 兼容字段:内联组合文本或组合清单名。 */
|
|
198
|
+
composition?: string;
|
|
199
|
+
/** 扁平参数:全部直读(true/false、数字、字符串),on/off 作为兼容写法。 */
|
|
200
|
+
params?: Record<string, unknown>;
|
|
201
|
+
/** 预设级模板变量({{key}} 插值源;与引擎行为参数 params 分离,顶层 variables 段)。 */
|
|
202
|
+
variables?: Record<string, string>;
|
|
203
|
+
/** 模板变量插值开关(缺省 true = 启用;false = 停用,writePreset 不生成变量文件)。 */
|
|
204
|
+
variablesEnabled?: boolean;
|
|
205
|
+
/** 宿主层默认值(唯一入口):apply 时合并进 Config,settings 仍可覆盖。 */
|
|
206
|
+
hostDefaults?: Record<string, unknown>;
|
|
207
|
+
/** 可选:模板自定义提示词配置覆盖(纯数据,不使用模板语法)。 */
|
|
208
|
+
promptConfigs?: unknown[];
|
|
209
|
+
/** 可选:引擎组合模块行参数覆盖(行级 map config 浅合并,preset 优先)。 */
|
|
210
|
+
moduleConfigs?: Record<string, Record<string, unknown>>;
|
|
211
|
+
/** 世界书(独立存储段,不进 promptConfigs):injectMode + 条目。 */
|
|
212
|
+
worldBook?: {
|
|
213
|
+
injectMode?: 'full' | 'keyword';
|
|
214
|
+
entries: Array<Record<string, unknown>>;
|
|
215
|
+
};
|
|
216
|
+
legacyCleanup?: string[];
|
|
217
|
+
upstream?: Record<string, unknown>;
|
|
218
|
+
}
|
|
219
|
+
/** 加载某个预设模板的单一参数文件 preset/<name>/preset.yml。 */
|
|
220
|
+
declare function loadPresetSpec(dir: string): PresetSpec;
|
|
221
|
+
/** 预设根:官方 USER_PRESET_DIR(~/.dsh/.agent-presets),导入/新建/种子化的预设都放这里。 */
|
|
222
|
+
declare function userPresetsDir(): string;
|
|
223
|
+
/**
|
|
224
|
+
* 解析预设模板目录:用户自定义优先,包内模板回退。
|
|
225
|
+
* 目录名与 preset.yml id 双匹配(UI 切换值=目录名;旧 settings 存量值=id 也兼容)。
|
|
226
|
+
*/
|
|
227
|
+
declare function resolvePresetDir(template: string): string;
|
|
228
|
+
/** 可用预设清单:全部来自预设根 ~/.dsh/.agent-presets(官方预设目录,含 agent.cordis.yml
|
|
229
|
+
* 即被宿主挂载;点前缀目录与无 preset.yml 的官方目录跳过,不占本插件列表)。 */
|
|
230
|
+
declare function listPresets(): Array<{
|
|
231
|
+
id: string;
|
|
232
|
+
name: string;
|
|
233
|
+
user: boolean;
|
|
234
|
+
description?: string;
|
|
235
|
+
meta?: Record<string, unknown>;
|
|
236
|
+
}>;
|
|
237
|
+
/** 插件目录模板清单(「新建」选择器与首次种子化数据源;不直接出现在预设列表)。 */
|
|
238
|
+
declare function listBuiltinTemplates(): Array<{
|
|
239
|
+
id: string;
|
|
240
|
+
name: string;
|
|
241
|
+
}>;
|
|
242
|
+
interface PromptToolState {
|
|
243
|
+
seeded?: boolean;
|
|
244
|
+
paramsMigrated?: boolean;
|
|
245
|
+
}
|
|
246
|
+
/** 读插件状态;文件缺失/损坏返回空对象(按未标记处理,触发首次动作)。 */
|
|
247
|
+
declare function readPluginState(): PromptToolState;
|
|
248
|
+
/** 原子写插件状态(tmp+rename)。 */
|
|
249
|
+
declare function writePluginState(state: PromptToolState): void;
|
|
250
|
+
/** 首次启动种子化:把插件目录全部内置模板复制到预设根(state.seeded 后不再自动补)。
|
|
251
|
+
* 用户删除的预设不会自动复活;升级新增的模板用「新建」按需复制。
|
|
252
|
+
* 兼容旧版预设根内 .pt-seeded 标记:存在即视为已种子化,并迁入状态文件后删除。 */
|
|
253
|
+
declare function ensurePresetSeed(): {
|
|
254
|
+
created: string[];
|
|
255
|
+
};
|
|
256
|
+
/** 从插件目录复制内置预设到预设根(新建/还原)。
|
|
257
|
+
* autoSuffix=true(自定义预设入口)时同名自动递增(custom → custom-2 → …);否则同名拒绝。 */
|
|
258
|
+
declare function cloneBuiltinPreset(id: string, autoSuffix?: boolean): {
|
|
259
|
+
ok: true;
|
|
260
|
+
id: string;
|
|
261
|
+
} | {
|
|
262
|
+
ok: false;
|
|
263
|
+
message: string;
|
|
264
|
+
};
|
|
265
|
+
/**
|
|
266
|
+
* 保存预设参数:写激活预设目录 preset.yml 的 params(merge)/ promptConfigs(整体替换)。
|
|
267
|
+
* parseDocument 保留注释与未知键(preset.yml 模板含大量注释);空值键跳过
|
|
268
|
+
* (保留 preset.yml 模板默认)。写入后删除 prompt-tool.overrides.yml(旧参数覆盖
|
|
269
|
+
* 通道残留——参数已并入 preset.yml,避免旧值覆盖新值)。
|
|
270
|
+
*/
|
|
271
|
+
declare function savePresetParams(presetRoot: string, templateName: string, params: Record<string, unknown> | undefined, promptConfigs: unknown[] | undefined, variables?: Record<string, string>, variablesEnabled?: boolean): void;
|
|
272
|
+
/** 删除预设目录(预设根/<id>;含同名导入的 .bak-* 备份目录)。
|
|
273
|
+
* 仅作用于预设根(官方 USER_PRESET_DIR),包内置模板天然不受影响;路径越界与非法 id 拒绝。
|
|
274
|
+
* 删除后宿主 agent-presets 目录列表自然不再出现该预设(官方 roster 即目录列表)。 */
|
|
275
|
+
declare function removeUserPreset(id: string, presetRoot?: string): {
|
|
276
|
+
ok: true;
|
|
277
|
+
} | {
|
|
278
|
+
ok: false;
|
|
279
|
+
message: string;
|
|
280
|
+
};
|
|
281
|
+
/** 预设 params(默认参数)与运行时 settings 合并;settings 值优先。 */
|
|
282
|
+
declare function resolvePresetParams(spec: PresetSpec, runtime: Record<string, unknown>): Record<string, unknown>;
|
|
283
|
+
/**
|
|
284
|
+
* 加载预设声明的组合:
|
|
285
|
+
* 1. `modules:` 清单 → 引擎模块库按序装配(最终形态);
|
|
286
|
+
* 2. 兼容 `composition:` 内联文本或组合清单名。
|
|
287
|
+
*/
|
|
288
|
+
/**
|
|
289
|
+
* 行级 config 合并(moduleConfigs):仅支持 map 型 config 浅合并;
|
|
290
|
+
* 数组型 config(如 compaction)与未声明模块原样保留。
|
|
291
|
+
* 未声明 moduleConfigs 时返回原文(零开销);parseDocument 往返保留注释与 __TOKEN__。
|
|
292
|
+
*/
|
|
293
|
+
declare function applyModuleConfigs(raw: string, configs: Record<string, Record<string, unknown>> | undefined): string;
|
|
294
|
+
//#endregion
|
|
295
|
+
//#region src/host/sillytavern.d.ts
|
|
296
|
+
/** ST 导入预设 id:必须是官方 agent-presets 可发现的目录名(PRESET_ID =
|
|
297
|
+
* /^[a-z0-9][a-z0-9-]*$/——含中文的目录会被宿主 discovery 静默跳过,会话
|
|
298
|
+
* resume 报 preset not found)。文件名 slug 化(去中文);纯中文名退化为
|
|
299
|
+
* st-<文件名短哈希>(唯一且合法);显示名 name 仍保留中文原名。 */
|
|
300
|
+
declare function stPresetId(baseName: string): string;
|
|
301
|
+
//#endregion
|
|
302
|
+
//#region src/web-surface.d.ts
|
|
303
|
+
/** 从 loader 根 Include 的 baseUrl 推导 profile 目录。 */
|
|
304
|
+
declare function resolveProfileDir(ctx: Context): string | undefined;
|
|
305
|
+
/**
|
|
306
|
+
* 每次启动:
|
|
307
|
+
* 1. 只处理当前 profile:缺 webServer 时补 web-app 并提示重启;
|
|
308
|
+
* 2. 不修改同级 profile,不主动退出进程。
|
|
309
|
+
*/
|
|
310
|
+
declare function ensureWebSurface(ctx: Context, warn: (message: string) => void): void;
|
|
311
|
+
//#endregion
|
|
312
|
+
//#region src/profile-skills.d.ts
|
|
313
|
+
/**
|
|
314
|
+
* 返回本插件应使用的 skills 目录:
|
|
315
|
+
* 优先本插件 profile(prompt-tool)下的 `skills/` 副本;无法确定 profile
|
|
316
|
+
* 或复制失败时回退到 sourceDir(默认包内 `skills/`)。
|
|
317
|
+
*/
|
|
318
|
+
declare function resolveProfileSkillsDir(ctx: Context, sourceDir: string, warn: (message: string) => void): string;
|
|
319
|
+
//#endregion
|
|
320
|
+
//#region src/host/migration.d.ts
|
|
321
|
+
declare function migrateLegacyLayout(presetRoot: string, legacyUserPresets: string): boolean;
|
|
322
|
+
/** 旧版 presetDir 配置值(容器根/旧用户目录)归一化为预设根;其余原样。 */
|
|
323
|
+
declare function normalizePresetRootDir(presetDir: string, presetRoot: string, legacyContainer: string): string;
|
|
324
|
+
//#endregion
|
|
325
|
+
//#region src/runtime/models.d.ts
|
|
326
|
+
/** 模型服务商检测结果(含诊断信息,供 Web/TUI 展示)。 */
|
|
327
|
+
interface ModelDetection {
|
|
328
|
+
/** 是否检测到任何已注册/可配置的服务商路由。 */
|
|
329
|
+
available: boolean;
|
|
330
|
+
/** 已检测到(live 注册)的模型服务商 id——状态提示用。 */
|
|
331
|
+
providers: string[];
|
|
332
|
+
error?: string;
|
|
333
|
+
}
|
|
334
|
+
/** 检测模型服务商:只统计 live 注册路由(状态提示与下拉共用同一来源)。 */
|
|
335
|
+
declare function detectModels(ctx: Context): ModelDetection;
|
|
336
|
+
/** 查询各已注册服务商公布的模型 id(对齐官方 web 选择器 buildModelCatalog:只遍历 listProviders() live 路由,单点失败/超时不拖垮整体;仅作展示,不构成路由白名单)。并行查询 + 10min 缓存 + 单点超时。 */
|
|
337
|
+
declare function listAdvertisedModels(ctx: Context): Promise<Record<string, string[]>>;
|
|
338
|
+
/**
|
|
339
|
+
* 主对话默认模型控制:modelProvider + modelName 同时非空时,经官方
|
|
340
|
+
* `agentDefaultModel.saveSelection` 写入新会话默认模型(对齐官方 web 切换模型的
|
|
341
|
+
* 默认级持久化;只影响新创建的 Agent,不干预已有会话)。任一为空 = 不干预
|
|
342
|
+
* (继承用户在宿主 web 的选择);agent-default-model 服务未装配时静默跳过。
|
|
343
|
+
*/
|
|
344
|
+
declare function installDefaultModelRoute(ctx: Context, isEnabled: () => boolean, provider: () => string, model: () => string, getReasoningEffort?: () => string): () => void;
|
|
345
|
+
//#endregion
|
|
346
|
+
//#region src/runtime/configs-validate.d.ts
|
|
347
|
+
interface PromptConfigValidationError {
|
|
348
|
+
/** 数组下标;结构层整组错误为 -1。 */
|
|
349
|
+
index: number;
|
|
350
|
+
/** 该条配置的 id(缺失或非字符串时为空串)。 */
|
|
351
|
+
id: string;
|
|
352
|
+
/** 引擎或结构层错误消息(保留 configs[i] 前缀)。 */
|
|
353
|
+
message: string;
|
|
354
|
+
}
|
|
355
|
+
interface PromptConfigValidationResult {
|
|
356
|
+
valid: boolean;
|
|
357
|
+
errors: PromptConfigValidationError[];
|
|
358
|
+
/** valid=true 时回显归一化前的输入数组(调用方预览用)。 */
|
|
359
|
+
configs?: PromptConfigSpec[];
|
|
360
|
+
/** valid=true 时逐条渲染的 yml 模块预览(与生成目录同构)。 */
|
|
361
|
+
files?: PromptConfigFile[];
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* 逐条调用引擎权威校验并渲染预览文件。
|
|
365
|
+
* 逐条(而非整组一次)校验保证一条坏配置不吞掉其余错误,且 index 可直接映射。
|
|
366
|
+
*/
|
|
367
|
+
declare function validatePromptConfigs(value: unknown, options?: {
|
|
368
|
+
strategyDir?: string;
|
|
369
|
+
}): Promise<PromptConfigValidationResult>;
|
|
370
|
+
//#endregion
|
|
371
|
+
//#region src/runtime/settings-bridge.d.ts
|
|
372
|
+
interface SkillsBridgeState {
|
|
373
|
+
activeSkillsDirs: string[];
|
|
78
374
|
skillCatalog: SkillCatalogEntry[];
|
|
79
|
-
/** 用户自定义技能目录;空 = 自动使用 profile skills 副本。 */
|
|
80
|
-
skillsDir: string;
|
|
81
|
-
/** 当前实际生效的技能目录(profile 副本或用户自定义路径)。 */
|
|
82
|
-
activeSkillsDir: string;
|
|
83
|
-
writeAgents: boolean;
|
|
84
|
-
writePreset: boolean;
|
|
85
375
|
}
|
|
86
|
-
|
|
376
|
+
/** 自建 loopback settings bridge:替代 registerConfigurableProviders,避免模型设置区出现插件条目。 */
|
|
377
|
+
declare function registerSettingsBridge(ctx: Context, ns: SettingsNamespace, getModelsState: () => ModelDetection, getSkillsState: () => SkillsBridgeState, getEngineStrategyDir: () => string, ensureRegistered: (sctx: Context) => boolean, afterSkillFix?: () => void,
|
|
378
|
+
/** 生成目录(presetDir):读取实际生效的提示词配置(引擎加载源)。 */
|
|
379
|
+
getPresetConfigsDir?: () => string,
|
|
380
|
+
/** 内容导入完成回调(更新运行时文本并重建预设)。 */
|
|
381
|
+
afterPresetImport?: (scope: 'preset' | 'agents') => void,
|
|
382
|
+
/** 参数覆盖写入回调(重建预设使参数生效)。 */
|
|
383
|
+
afterOverridesChange?: () => void,
|
|
384
|
+
/** 预设包导入完成回调(物化导入预设:组合/配置目录/共享引擎落盘,宿主 discovery 可见)。 */
|
|
385
|
+
afterPresetPackageImport?: (id: string) => void): void;
|
|
386
|
+
//#endregion
|
|
387
|
+
//#region src/runtime/character-tools.d.ts
|
|
388
|
+
/** 工具执行所需的运行时宿主能力(index.ts 闭包提供)。 */
|
|
389
|
+
interface CharacterToolHost {
|
|
390
|
+
/** 预设根目录(presetDir)。 */
|
|
391
|
+
presetRoot: () => string;
|
|
392
|
+
/** 当前激活预设模板名。 */
|
|
393
|
+
templateName: () => string;
|
|
394
|
+
/** 应用/移除后重建生成目录(写 preset.yml 后使参数生效)。 */
|
|
395
|
+
rebuild: () => void;
|
|
396
|
+
}
|
|
397
|
+
declare function registerCharacterTools(ctx: Context, host: CharacterToolHost): void;
|
|
398
|
+
//#endregion
|
|
399
|
+
//#region src/runtime/world-book-tools.d.ts
|
|
400
|
+
interface WorldBookToolHost {
|
|
401
|
+
/** 当前激活预设目录(preset.yml 所在目录)。 */
|
|
402
|
+
activeDir: () => string;
|
|
403
|
+
/** 预设根目录(角色卡库 .characters/<id> 所在根)。 */
|
|
404
|
+
presetRoot: () => string;
|
|
405
|
+
/** 写盘后重建生成目录。 */
|
|
406
|
+
rebuild: () => void;
|
|
407
|
+
}
|
|
408
|
+
declare function registerWorldBookTools(ctx: Context, host: WorldBookToolHost): void;
|
|
409
|
+
//#endregion
|
|
410
|
+
//#region src/host/templates.d.ts
|
|
411
|
+
interface PromptConfigTemplate {
|
|
412
|
+
/** 模板文件名(数字前缀决定展示顺序)。 */
|
|
413
|
+
file: string;
|
|
414
|
+
/** 模板原文(编辑器源码模式可直接展示)。 */
|
|
415
|
+
content: string;
|
|
416
|
+
/** 解析后的单条提示词配置。 */
|
|
417
|
+
spec: PromptConfigSpec;
|
|
418
|
+
}
|
|
419
|
+
/** 扫描包内 templates/*.yml,按文件名排序返回(文件损坏时抛出,由调用方决定呈现)。 */
|
|
420
|
+
declare function loadPromptTemplates(): PromptConfigTemplate[];
|
|
421
|
+
//#endregion
|
|
422
|
+
//#region src/runtime/tui.d.ts
|
|
423
|
+
/** 通过 DSH 命令注册表暴露 /prompt-tool,Web 与 dsh-tui 都能执行。 */
|
|
424
|
+
declare function registerTuiCommand(ctx: Context, ns: SettingsNamespace, getSource: () => PromptSettings, getModelsState: () => ModelDetection, getModelCatalog: () => Promise<Record<string, string[]>>, getPresetConfigsDir?: () => string,
|
|
425
|
+
/** 参数保存回调(写激活预设 preset.yml;key='promptConfigs' 时 value 为数组)。 */
|
|
426
|
+
savePresetParam?: (key: string, value: unknown) => void): void;
|
|
427
|
+
//#endregion
|
|
428
|
+
//#region src/runtime/settings-registration.d.ts
|
|
429
|
+
interface SettingsRegistrationHooks<T> {
|
|
430
|
+
/** 注册时的 composition base(每次尝试注册都取最新值)。 */
|
|
431
|
+
base: () => T;
|
|
432
|
+
/** 注册成功后接线:setSource / watch / 初始 onChange。 */
|
|
433
|
+
onRegistered: (scope: {
|
|
434
|
+
get: () => T;
|
|
435
|
+
watch: (callback: (next: T, prev: T) => void) => void;
|
|
436
|
+
}) => void;
|
|
437
|
+
/** 注册失败(schema 校验或重复注册竞态)时的日志出口。 */
|
|
438
|
+
onError: (message: string) => void;
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* 确保 `ns` 已注册:已注册(describe 命中)直接返回 true;未注册时补注册。
|
|
442
|
+
* 官方 installSettingsSection 的 inject 回调只在 settings 服务首次可用时跑一次,
|
|
443
|
+
* settings 服务实例被替换(provider fiber reload)后注册丢失且不自动重建;
|
|
444
|
+
* 本函数由 Web bridge 每次请求前调用兜底。
|
|
445
|
+
*/
|
|
446
|
+
declare function ensureSettingsRegistered<T>(sctx: Context, ns: SettingsNamespace, schema: unknown, hooks: SettingsRegistrationHooks<T>): boolean;
|
|
447
|
+
//#endregion
|
|
448
|
+
//#region src/runtime/skills-provider.d.ts
|
|
449
|
+
/** 官方 dsh-skill 的 SkillName 契约:kebab-case。 */
|
|
450
|
+
declare const SKILL_NAME_RE: RegExp;
|
|
451
|
+
interface SkillFolder {
|
|
452
|
+
name: string;
|
|
453
|
+
/** 通过符号链接/junction 挂入的目录(删除类操作需谨慎)。 */
|
|
454
|
+
linked: boolean;
|
|
455
|
+
}
|
|
456
|
+
declare function listSkillFolders(skillsDir: string): SkillFolder[];
|
|
457
|
+
/** 只有 valid=true 的条目才能进入 ctx.skills 注册表。 */
|
|
458
|
+
declare function isValidSkill(entry: SkillEntry): boolean;
|
|
459
|
+
/** 供 provider 使用的合法条目集合(坏条目逐条跳过,绝不拖垮整批列表)。 */
|
|
460
|
+
declare function validSkills(entries: SkillEntry[]): SkillEntry[];
|
|
461
|
+
/**
|
|
462
|
+
* 读取技能目录树的全部条目(含坏条目与嵌套子技能)。
|
|
463
|
+
* - 递归语义:任意层级含 SKILL.md 的目录都是技能(folder = 相对路径,嵌套用 / 分隔);
|
|
464
|
+
* 不含 SKILL.md 的目录(含多层空文件夹)不产生条目,继续下探其子目录。
|
|
465
|
+
* - 链接(junction/symlink)目录作为技能叶子:含 SKILL.md 则注册,不递归进入(防环)。
|
|
466
|
+
* - frontmatter 无 name 时回退目录名;name(frontmatter 或目录名)必须 kebab-case 才 valid;
|
|
467
|
+
* - warn 仅用于日志,不再决定条目去留。
|
|
468
|
+
*/
|
|
469
|
+
declare function readSkills(skillsDir: string, warn?: (message: string) => void): SkillEntry[];
|
|
470
|
+
/** 多目录全量合并:条目全部保留(同名不跳过,UI 层再做 duplicate 标注)。 */
|
|
471
|
+
declare function mergeSkillDirs(dirs: string[], read: (dir: string, warn?: (message: string) => void) => SkillEntry[], warn?: (message: string) => void): SkillEntry[];
|
|
472
|
+
/**
|
|
473
|
+
* 进程内技能扫描缓存:按目录 + 每个 SKILL.md 的 mtime/size 签名失效。
|
|
474
|
+
* 同一目录在内容未变化时,list/get 可复用同一次扫描结果。
|
|
475
|
+
*/
|
|
476
|
+
interface CachedSkillsReader {
|
|
477
|
+
read: (skillsDir: string, warn?: (message: string) => void) => SkillEntry[];
|
|
478
|
+
invalidate: (skillsDir?: string) => void;
|
|
479
|
+
}
|
|
480
|
+
declare function createCachedSkillsReader(): CachedSkillsReader;
|
|
481
|
+
//#endregion
|
|
482
|
+
//#region src/runtime/skill-fix.d.ts
|
|
483
|
+
interface SkillFixResult {
|
|
484
|
+
fixed: boolean;
|
|
485
|
+
/** 修复前目录名。 */
|
|
486
|
+
folder: string;
|
|
487
|
+
/** 修复后目录名。 */
|
|
488
|
+
fixedFolder: string;
|
|
489
|
+
/** 修复后注册名(与目录一致)。 */
|
|
490
|
+
name: string;
|
|
491
|
+
/** 实际执行的动作描述(写文件/重命名/剥 BOM/补 name)。 */
|
|
492
|
+
actions: string[];
|
|
493
|
+
error?: string;
|
|
494
|
+
}
|
|
495
|
+
/** 任意字符串 → kebab-case;空结果回退 'skill'。 */
|
|
496
|
+
declare function toKebabName(value: string): string;
|
|
497
|
+
/**
|
|
498
|
+
* 修复一个无效技能条目。
|
|
499
|
+
* @param skillsDir - activeSkillsDir(绝对路径)。
|
|
500
|
+
* @param folder - 要修复的目录名(不允许含路径分隔符)。
|
|
501
|
+
*/
|
|
502
|
+
declare function fixSkillEntry(skillsDir: string, folder: string): SkillFixResult;
|
|
503
|
+
//#endregion
|
|
504
|
+
//#region src/shared/bridge-contract.d.ts
|
|
505
|
+
/**
|
|
506
|
+
* settings bridge 跨端契约(host 注册 / client 消费的唯一来源)。
|
|
507
|
+
* 铁律:11 端点载荷统一成功 `{ ok: true, value }`、失败 `{ ok: false, code?, message? }`;
|
|
508
|
+
* 端点附加字段只能以 value 旁的可选扩展字段出现(describe)。
|
|
509
|
+
* 改路径或载荷形状必须同步更新 test/shared/bridge-contract.test.mjs。
|
|
510
|
+
*/
|
|
511
|
+
declare const SETTINGS_BRIDGE_PREFIX = "/api/prompt-tool/settings";
|
|
512
|
+
/** 22 个桥端点路径(相对前缀)。新增端点必须同时登记到契约测试。 */
|
|
513
|
+
declare const BRIDGE_ENDPOINTS: {
|
|
514
|
+
readonly meta: "/meta";
|
|
515
|
+
readonly describe: "/describe";
|
|
516
|
+
readonly models: "/models";
|
|
517
|
+
readonly mutate: "/mutate";
|
|
518
|
+
readonly configsValidate: "/configs-validate";
|
|
519
|
+
readonly skillFix: "/skill-fix";
|
|
520
|
+
readonly templates: "/templates";
|
|
521
|
+
readonly promptConfigs: "/prompt-configs";
|
|
522
|
+
readonly presetContent: "/preset-content";
|
|
523
|
+
readonly importPreset: "/import-preset";
|
|
524
|
+
readonly paramOverrides: "/param-overrides";
|
|
525
|
+
readonly presetVariables: "/preset-variables";
|
|
526
|
+
readonly importPresetPackage: "/import-preset-package";
|
|
527
|
+
readonly exportPreset: "/export-preset";
|
|
528
|
+
readonly presetDelete: "/preset-delete";
|
|
529
|
+
readonly presetClone: "/preset-clone";
|
|
530
|
+
readonly presetDuplicate: "/preset-duplicate";
|
|
531
|
+
readonly presetOpen: "/preset-open";
|
|
532
|
+
readonly charactersImport: "/characters-import";
|
|
533
|
+
readonly charactersList: "/characters-list";
|
|
534
|
+
readonly charactersDelete: "/characters-delete";
|
|
535
|
+
readonly charactersApply: "/characters-apply";
|
|
536
|
+
readonly charactersRemove: "/characters-remove";
|
|
537
|
+
};
|
|
538
|
+
type BridgeEndpoint = (typeof BRIDGE_ENDPOINTS)[keyof typeof BRIDGE_ENDPOINTS];
|
|
539
|
+
/** 失败载荷:两端共用。 */
|
|
540
|
+
type BridgeErrorPayload = {
|
|
541
|
+
ok: false;
|
|
542
|
+
code?: string;
|
|
543
|
+
message?: string;
|
|
544
|
+
};
|
|
545
|
+
//#endregion
|
|
546
|
+
//#region src/runtime/skills-parse.d.ts
|
|
547
|
+
interface SkillFrontmatter {
|
|
548
|
+
name?: string;
|
|
549
|
+
description?: string;
|
|
550
|
+
whenToUse?: string;
|
|
551
|
+
metadata?: Record<string, unknown>;
|
|
552
|
+
/** 官方调用策略:true 时模型不可发现/不可加载(默认 false = 可调用)。 */
|
|
553
|
+
disableModelInvocation?: boolean;
|
|
554
|
+
/** 官方调用策略:false 时用户命令不可加载(默认 true)。 */
|
|
555
|
+
userInvocable?: boolean;
|
|
556
|
+
}
|
|
557
|
+
declare function parseFrontmatter(text: string): {
|
|
558
|
+
data: SkillFrontmatter;
|
|
559
|
+
body: string;
|
|
560
|
+
};
|
|
561
|
+
//#endregion
|
|
562
|
+
//#region src/index.d.ts
|
|
563
|
+
declare const name = "prompt-tool";
|
|
564
|
+
declare const inject: string[];
|
|
565
|
+
declare function apply(ctx: Context, configIn: Config): void;
|
|
87
566
|
//#endregion
|
|
88
|
-
export { Config,
|
|
567
|
+
export { BRIDGE_ENDPOINTS, type BridgeEndpoint, type BridgeErrorPayload, type CachedSkillsReader, Config, PARAM_KEYS, type PresetSpec, type PromptConfigTemplate, type PromptConfigValidationError, type PromptConfigValidationResult, PromptSettingsSchema, SETTINGS_BRIDGE_PREFIX, SKILL_NAME_RE, type SettingsRegistrationHooks, type SkillCatalogEntry, type SkillEntry, type SkillFixResult, type SkillFrontmatter, type WritePresetOptions, apply, applyModuleConfigs, cloneBuiltinPreset, createCachedSkillsReader, detectModels, ensurePresetSeed, ensureSettingsRegistered, ensureWebSurface, fixSkillEntry, inject, installDefaultModelRoute, isValidSkill, listAdvertisedModels, listBuiltinTemplates, listPresets, listSkillFolders, loadPresetSpec, loadPromptTemplates, mergeSkillDirs, migrateLegacyLayout, name, normalizePresetRootDir, parseFrontmatter, readPluginState, readSkills, registerCharacterTools, registerSettingsBridge, registerTuiCommand, registerWorldBookTools, removeUserPreset, resolvePresetDir, resolvePresetParams, resolveProfileDir, resolveProfileSkillsDir, savePresetParams, stPresetId, toKebabName, userPresetsDir, validSkills, validatePromptConfigs, writePluginState, writePreset };
|