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.
- package/README.md +58 -50
- package/engine/character-tools.mjs +3 -6
- package/engine/compositions/library/agent-instructions.yml +1 -1
- package/engine/compositions/library/command-goal.yml +1 -1
- package/engine/compositions/library/compaction.yml +1 -1
- package/engine/compositions/library/delegation-ptc.yml +1 -1
- package/engine/compositions/library/delegation.yml +1 -1
- package/engine/compositions/library/persistent-shell.yml +1 -1
- package/engine/compositions/library/planning.yml +1 -1
- package/engine/compositions/library/skill-filesystem-cordis.yml +1 -1
- package/engine/compositions/library/skill-filesystem.yml +1 -1
- package/engine/compositions/library/tool-ask-user.yml +1 -1
- package/engine/compositions/library/tool-bash.yml +1 -1
- package/engine/compositions/library/tool-cordis.yml +1 -1
- package/engine/compositions/library/tool-fs-search.yml +1 -1
- package/engine/compositions/library/tool-fs.yml +1 -1
- package/engine/compositions/library/tool-goal.yml +1 -1
- package/engine/compositions/library/tool-jobs.yml +1 -1
- package/engine/compositions/library/tool-plugin-manager-disabled.yml +1 -1
- package/engine/compositions/library/tool-plugin-manager.yml +1 -1
- package/engine/compositions/library/tool-present.yml +1 -1
- package/engine/compositions/library/tool-presentation.yml +1 -1
- package/engine/compositions/library/tool-pwsh.yml +1 -1
- package/engine/compositions/library/tool-skill.yml +1 -1
- package/engine/compositions/library/tool-todo.yml +1 -1
- package/engine/compositions/library/tool-web.yml +1 -1
- package/engine/compositions/source/local/prompt-config-engine.yml +1 -1
- package/engine/executor.mjs +39 -26
- package/engine/instruction-hint.mjs +6 -2
- package/engine/layers.mjs +38 -30
- package/engine/order.mjs +17 -0
- package/engine/schema.mjs +16 -6
- package/engine/session-var-tools.mjs +3 -6
- package/engine/st-render.mjs +8 -4
- package/engine/subagent-tool-policy.mjs +25 -10
- package/engine/world-book-tools.mjs +3 -6
- package/lib/client.js +3451 -3519
- package/lib/client.js.map +1 -1
- package/lib/index.d.mts +233 -272
- package/lib/index.mjs +1020 -1226
- package/lib/{preset-package-BnJqrU4R.mjs → module-package-Cm3fHHlp.mjs} +997 -594
- package/lib/{paths-CY5psBqE.d.mts → paths-BgL42sSM.d.mts} +191 -149
- package/lib/preset-transfer.d.mts +2 -2
- package/lib/preset-transfer.mjs +2 -2
- package/modules/ponytail/configs/0000-ponytail-rules.yml +102 -0
- package/modules/ponytail/configs/0010-ponytail-level-full.yml +19 -0
- package/modules/ponytail/configs/0020-ponytail-level-lite.yml +19 -0
- package/modules/ponytail/configs/0030-ponytail-level-ultra.yml +19 -0
- package/modules/ponytail/module.yml +172 -0
- package/package.json +46 -80
- package/templates/20-system-section.yml +4 -1
- package/templates/70-subagent-maintenance.yml +1 -1
- package/templates/tools/50-delegate-worldbook.yml +1 -1
- package/preset/pt-cordis/preset.yml +0 -43
- package/preset/pt-cordis/skills/cordis-composition-reference/SKILL.md +0 -29
- package/preset/pt-cordis/skills/cordis-composition-reference/references/packages.md +0 -501
- package/preset/pt-cordis/skills/cordis-plugin-development/SKILL.md +0 -38
- package/preset/pt-cordis/skills/cordis-plugin-development/references/host-plugin.md +0 -60
- package/preset/pt-cordis/skills/cordis-plugin-development/references/mcp-bundle.md +0 -5
- package/preset/pt-cordis/skills/cordis-plugin-development/references/ui-plugin.md +0 -13
- package/preset/pt-cordis/skills/cordis-plugin-development/references/verification.md +0 -5
- package/preset/pt-cordis/skills/cordis-plugin-development/templates/decoration/client.js +0 -22
- package/preset/pt-cordis/skills/cordis-plugin-development/templates/decoration/cordis.patch.yml +0 -3
- package/preset/pt-cordis/skills/cordis-plugin-development/templates/decoration/index.js +0 -2
- package/preset/pt-cordis/skills/cordis-plugin-development/templates/decoration/package.json +0 -15
- package/preset/pt-cordis/skills/cordis-plugin-development/templates/mcp/cordis.patch.yml +0 -8
- package/preset/pt-cordis/skills/cordis-plugin-development/templates/mcp/package.json +0 -7
- package/preset/pt-cordis/skills/editing-cordis-compositions/SKILL.md +0 -84
- package/preset/pt-custom/preset.yml +0 -15
- package/preset/pt-minimal/preset.yml +0 -27
- package/preset/pt-ptc/preset.yml +0 -45
- package/preset/pt-standard/preset.yml +0 -43
|
@@ -1,11 +1,80 @@
|
|
|
1
1
|
import { parseDocument } from "yaml";
|
|
2
|
+
//#region src/shared/engine-capabilities.d.ts
|
|
3
|
+
type ModuleSourceMode = 'explicit' | 'composition' | 'official' | 'unknown';
|
|
4
|
+
/** 官方九个注入层:与 engine/schema.mjs 的 LAYER_ORDER 同源,改一处必须同步另一处。 */
|
|
5
|
+
type EngineLayer = 'pre-step' | 'system-section' | 'runtime-context' | 'agent-request' | 'llm-stream' | 'tool-pipeline' | 'turn-stop' | 'subagent-start' | 'subagent-end';
|
|
6
|
+
interface ModuleFacts {
|
|
7
|
+
declaredModules: string[] | null;
|
|
8
|
+
effectiveModules: string[] | null;
|
|
9
|
+
rowIds: string[];
|
|
10
|
+
sourceMode: ModuleSourceMode;
|
|
11
|
+
editable: boolean;
|
|
12
|
+
effectiveConfigs?: Record<string, Record<string, unknown>>;
|
|
13
|
+
/** 策略段真实存在;能力声明仍在并不代表策略已开启。 */
|
|
14
|
+
subagentToolPolicyEnabled?: boolean;
|
|
15
|
+
}
|
|
16
|
+
interface EngineCapability {
|
|
17
|
+
id: string;
|
|
18
|
+
moduleKeys: readonly string[];
|
|
19
|
+
rowIds: readonly string[];
|
|
20
|
+
displayLayer: EngineLayer;
|
|
21
|
+
/** 真实跨层影响的相关层(只在确有第二通道时登记,避免把归属铺满九层)。 */
|
|
22
|
+
relatedLayers?: readonly EngineLayer[];
|
|
23
|
+
/**
|
|
24
|
+
* 该能力拥有的 preset 顶层数据段(不是行级 config)。
|
|
25
|
+
* 创建时若段缺失则写入 `skeleton`(保证"模块在 ⇒ 数据在");删除时一并移除该段。
|
|
26
|
+
*/
|
|
27
|
+
ownSection?: {
|
|
28
|
+
/** preset.yml 顶层键名。 */
|
|
29
|
+
key: string;
|
|
30
|
+
/** 启用时写入的可用骨架(必须能通过该段的校验)。 */
|
|
31
|
+
skeleton: Readonly<Record<string, unknown>>;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/** 首期只登记已有 typed editor 的能力,避免万能 key/value 表单。 */
|
|
35
|
+
declare const ENGINE_CAPABILITIES: readonly EngineCapability[];
|
|
36
|
+
/**
|
|
37
|
+
* 编辑组 = 前端一张可编辑卡(能力卡或专用卡)的主归属层。
|
|
38
|
+
* id 必须是代码里真实存在的 card / 展开键名,不新增臆造 id。
|
|
39
|
+
*/
|
|
40
|
+
interface EngineEditorGroup {
|
|
41
|
+
id: string;
|
|
42
|
+
displayLayer: EngineLayer;
|
|
43
|
+
/** 真实跨层影响的相关层(只有确有第二通道时才写)。 */
|
|
44
|
+
relatedLayers?: readonly EngineLayer[];
|
|
45
|
+
/** 真实生效通道的只读说明键(如 'agent-request' / 'system-section'):供 UI 显示「实际生效通道」,
|
|
46
|
+
* 只写代码里可核对的事实,不承诺未验证的通道。 */
|
|
47
|
+
hook: string;
|
|
48
|
+
}
|
|
49
|
+
interface EngineRecipe {
|
|
50
|
+
id: string;
|
|
51
|
+
capabilities: readonly string[];
|
|
52
|
+
initialParams?: Readonly<Record<string, unknown>>;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* 只保留已有真实工作流的一键组合;recipe 本身不写入 preset.yml。
|
|
56
|
+
*
|
|
57
|
+
* B7 T3 清空:三条 recipe 的成员都是随本轮退场的专用能力(phase-control /
|
|
58
|
+
* phase-control-ptc / deliberation),没有任何一条还能组成合法能力集合。
|
|
59
|
+
* export 与 `engineRecipe()` 保留——调用点(创建菜单、bridge 校验)不必跟着改,
|
|
60
|
+
* 空表天然让组合项整个消失。
|
|
61
|
+
*/
|
|
62
|
+
declare const ENGINE_RECIPES: readonly EngineRecipe[];
|
|
63
|
+
declare function engineCapability(id: string): EngineCapability | undefined;
|
|
64
|
+
declare function engineRecipe(id: string): EngineRecipe | undefined;
|
|
65
|
+
/** 显式模块声明中的实际能力;包含当前参数与顶层策略所需的装配。
|
|
66
|
+
* 创建补声明由 host 单独检查 declaredModules;官方组合行不伪装成可编辑能力。 */
|
|
67
|
+
declare function isEngineCapabilityPresent(id: string, facts: ModuleFacts | undefined): boolean;
|
|
68
|
+
/** custom tool 的运行时名称缺省回落 id;保存前拒绝会导致同层注册失败的重复项。 */
|
|
69
|
+
declare function validateCustomToolIdentities(tools: readonly unknown[]): string[];
|
|
70
|
+
//#endregion
|
|
2
71
|
//#region src/shared/instructions.d.ts
|
|
3
72
|
/**
|
|
4
73
|
* 指令文件(AGENTS.md / CLAUDE.md 等)跨 host/client 的最小契约。
|
|
5
74
|
* 只放两端都要理解的形状:读取快照、工作区上下文与写入结果;
|
|
6
75
|
* 引擎侧的位置/晋升/受众算法不在这里复制。
|
|
7
76
|
*/
|
|
8
|
-
/**
|
|
77
|
+
/** 文件卡正文读写上限;官方注入的读取与渲染预算由官方配置决定。 */
|
|
9
78
|
declare const MAX_INSTRUCTION_FILE_BYTES: number;
|
|
10
79
|
declare const INSTRUCTION_FILE_STATUSES: readonly ["ready", "missing", "unreadable", "too-large"];
|
|
11
80
|
/**
|
|
@@ -53,8 +122,7 @@ interface InstructionsSnapshot {
|
|
|
53
122
|
}
|
|
54
123
|
/**
|
|
55
124
|
* 指令负责人事实:本会话实际装配里是否仍挂着官方指令加载行。
|
|
56
|
-
* `true`
|
|
57
|
-
* 的独立来源负责;`null` 表示本次请求还没有该会话的装配观察结果(不猜)。
|
|
125
|
+
* `true` 表示官方负责注入;`false` 表示模块未装配官方来源;`null` 表示尚未观察到。
|
|
58
126
|
*/
|
|
59
127
|
interface InstructionsOwnerView {
|
|
60
128
|
officialInstructions: boolean | null;
|
|
@@ -65,37 +133,23 @@ interface InstructionFileWriteResult {
|
|
|
65
133
|
revision: string;
|
|
66
134
|
}
|
|
67
135
|
/**
|
|
68
|
-
*
|
|
136
|
+
* 指令文件卡策略(独立于模块与 settings 的本插件自有状态)。
|
|
69
137
|
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
* 切换验收,再由用户显式开启。
|
|
138
|
+
* 只承载逐文件开关与展示名;正文、读取版本、会话 ID 和路径不进入策略。
|
|
139
|
+
* 默认放行官方注入,关闭只过滤后续消息,不撤回已持久历史。
|
|
73
140
|
*/
|
|
74
|
-
interface
|
|
75
|
-
|
|
76
|
-
position: string;
|
|
77
|
-
promotion: string;
|
|
78
|
-
audience: string | null;
|
|
79
|
-
modelScope: string;
|
|
80
|
-
}
|
|
81
|
-
interface InstructionPolicyFileOverride extends Partial<InstructionPolicyValues> {
|
|
82
|
-
/** 每文件可关闭注入(默认开启);部署级 enabled 为 false 时整体不注入。 */
|
|
141
|
+
interface InstructionPolicyFileOverride {
|
|
142
|
+
/** 缺省开启;false 拦截该文件后续的官方注入。 */
|
|
83
143
|
enabled?: boolean;
|
|
84
144
|
/** 可选显示名(只影响 UI 标题)。 */
|
|
85
145
|
name?: string;
|
|
86
146
|
}
|
|
87
147
|
interface InstructionPolicy {
|
|
88
|
-
/**
|
|
89
|
-
enabled: boolean;
|
|
90
|
-
/** 未单独覆盖的文件使用这些值。 */
|
|
91
|
-
defaults: InstructionPolicyValues;
|
|
92
|
-
/** 按 fileId 的覆盖;缺省即用 defaults,删除覆盖恢复默认。 */
|
|
148
|
+
/** 按 fileId 的覆盖;删除覆盖恢复默认放行。 */
|
|
93
149
|
files: Record<string, InstructionPolicyFileOverride>;
|
|
94
150
|
}
|
|
95
151
|
/** 局部更新:只写传入的键;files[fileId] = null 表示删除该覆盖。 */
|
|
96
152
|
interface InstructionPolicyPatch {
|
|
97
|
-
enabled?: boolean;
|
|
98
|
-
defaults?: Partial<InstructionPolicyValues>;
|
|
99
153
|
files?: Record<string, InstructionPolicyFileOverride | null>;
|
|
100
154
|
}
|
|
101
155
|
//#endregion
|
|
@@ -122,6 +176,28 @@ interface PersonaSpec {
|
|
|
122
176
|
includeRuntimeContext?: boolean;
|
|
123
177
|
}
|
|
124
178
|
//#endregion
|
|
179
|
+
//#region src/shared/module-config-order.d.ts
|
|
180
|
+
/** 配置卡身份与排序快照;序号归模块定义,正文不进入排序载荷。 */
|
|
181
|
+
interface ModuleConfigIdentity {
|
|
182
|
+
moduleId: string;
|
|
183
|
+
configId: string;
|
|
184
|
+
}
|
|
185
|
+
interface ModuleConfigOrderEntry extends ModuleConfigIdentity {
|
|
186
|
+
name: string;
|
|
187
|
+
layer: string;
|
|
188
|
+
position: string;
|
|
189
|
+
sequence: number;
|
|
190
|
+
enabled: boolean;
|
|
191
|
+
audience?: 'main' | 'subagent' | null;
|
|
192
|
+
strategy?: string;
|
|
193
|
+
/** 官方文本层的定位档位;其他层不使用。 */
|
|
194
|
+
order?: number;
|
|
195
|
+
}
|
|
196
|
+
interface ModuleConfigOrderSnapshot {
|
|
197
|
+
revision: string;
|
|
198
|
+
entries: ModuleConfigOrderEntry[];
|
|
199
|
+
}
|
|
200
|
+
//#endregion
|
|
125
201
|
//#region src/shared/asset-transfer.d.ts
|
|
126
202
|
/** 资产传输使用显式编码;省略编码仅兼容旧文本请求。 */
|
|
127
203
|
interface AssetFile {
|
|
@@ -184,73 +260,6 @@ interface PresetExportResult {
|
|
|
184
260
|
excludedMemoryCount?: number;
|
|
185
261
|
}
|
|
186
262
|
//#endregion
|
|
187
|
-
//#region src/shared/engine-capabilities.d.ts
|
|
188
|
-
type ModuleSourceMode = 'explicit' | 'composition' | 'official' | 'unknown';
|
|
189
|
-
/** 官方九个注入层:与 engine/schema.mjs 的 LAYER_ORDER 同源,改一处必须同步另一处。 */
|
|
190
|
-
type EngineLayer = 'pre-step' | 'system-section' | 'runtime-context' | 'agent-request' | 'llm-stream' | 'tool-pipeline' | 'turn-stop' | 'subagent-start' | 'subagent-end';
|
|
191
|
-
interface PresetModuleFacts {
|
|
192
|
-
declaredModules: string[] | null;
|
|
193
|
-
effectiveModules: string[] | null;
|
|
194
|
-
rowIds: string[];
|
|
195
|
-
sourceMode: ModuleSourceMode;
|
|
196
|
-
editable: boolean;
|
|
197
|
-
effectiveConfigs?: Record<string, Record<string, unknown>>;
|
|
198
|
-
}
|
|
199
|
-
interface EngineCapability {
|
|
200
|
-
id: string;
|
|
201
|
-
moduleKeys: readonly string[];
|
|
202
|
-
rowIds: readonly string[];
|
|
203
|
-
displayLayer: EngineLayer;
|
|
204
|
-
/** 真实跨层影响的相关层(只在确有第二通道时登记,避免把归属铺满九层)。 */
|
|
205
|
-
relatedLayers?: readonly EngineLayer[];
|
|
206
|
-
/**
|
|
207
|
-
* 该能力拥有的 preset 顶层数据段(不是行级 config)。
|
|
208
|
-
* 创建时若段缺失则写入 `skeleton`(保证"模块在 ⇒ 数据在");删除时一并移除该段。
|
|
209
|
-
*/
|
|
210
|
-
ownSection?: {
|
|
211
|
-
/** preset.yml 顶层键名。 */
|
|
212
|
-
key: string;
|
|
213
|
-
/** 启用时写入的可用骨架(必须能通过该段的校验)。 */
|
|
214
|
-
skeleton: Readonly<Record<string, unknown>>;
|
|
215
|
-
};
|
|
216
|
-
}
|
|
217
|
-
/** 首期只登记已有 typed editor 的能力,避免万能 key/value 表单。 */
|
|
218
|
-
declare const ENGINE_CAPABILITIES: readonly EngineCapability[];
|
|
219
|
-
/**
|
|
220
|
-
* 编辑组 = 前端一张可编辑卡(能力卡或专用卡)的主归属层。
|
|
221
|
-
* id 必须是代码里真实存在的 card / 展开键名,不新增臆造 id。
|
|
222
|
-
*/
|
|
223
|
-
interface EngineEditorGroup {
|
|
224
|
-
id: string;
|
|
225
|
-
displayLayer: EngineLayer;
|
|
226
|
-
/** 真实跨层影响的相关层(只有确有第二通道时才写)。 */
|
|
227
|
-
relatedLayers?: readonly EngineLayer[];
|
|
228
|
-
/** 真实生效通道的只读说明键(如 'agent-request' / 'system-section'):供 UI 显示「实际生效通道」,
|
|
229
|
-
* 只写代码里可核对的事实,不承诺未验证的通道。 */
|
|
230
|
-
hook: string;
|
|
231
|
-
}
|
|
232
|
-
interface EngineRecipe {
|
|
233
|
-
id: string;
|
|
234
|
-
capabilities: readonly string[];
|
|
235
|
-
initialParams?: Readonly<Record<string, unknown>>;
|
|
236
|
-
}
|
|
237
|
-
/**
|
|
238
|
-
* 只保留已有真实工作流的一键组合;recipe 本身不写入 preset.yml。
|
|
239
|
-
*
|
|
240
|
-
* B7 T3 清空:三条 recipe 的成员都是随本轮退场的专用能力(phase-control /
|
|
241
|
-
* phase-control-ptc / deliberation),没有任何一条还能组成合法能力集合。
|
|
242
|
-
* export 与 `engineRecipe()` 保留——调用点(创建菜单、bridge 校验)不必跟着改,
|
|
243
|
-
* 空表天然让组合项整个消失。
|
|
244
|
-
*/
|
|
245
|
-
declare const ENGINE_RECIPES: readonly EngineRecipe[];
|
|
246
|
-
declare function engineCapability(id: string): EngineCapability | undefined;
|
|
247
|
-
declare function engineRecipe(id: string): EngineRecipe | undefined;
|
|
248
|
-
/** 显式模块预设中的实际能力;包含当前参数与顶层策略所需的装配。
|
|
249
|
-
* 创建补声明由 host 单独检查 declaredModules;官方组合行不伪装成可编辑能力。 */
|
|
250
|
-
declare function isEngineCapabilityPresent(id: string, facts: PresetModuleFacts | undefined): boolean;
|
|
251
|
-
/** custom tool 的运行时名称缺省回落 id;保存前拒绝会导致同层注册失败的重复项。 */
|
|
252
|
-
declare function validateCustomToolIdentities(tools: readonly unknown[]): string[];
|
|
253
|
-
//#endregion
|
|
254
263
|
//#region src/shared/managed-config-fields.d.ts
|
|
255
264
|
interface ConfigFieldSources {
|
|
256
265
|
configId: string;
|
|
@@ -388,10 +397,12 @@ declare const BRIDGE_ENDPOINTS: {
|
|
|
388
397
|
readonly assetUpload: "/asset-upload";
|
|
389
398
|
readonly assetRelease: "/asset-release";
|
|
390
399
|
readonly exportPreset: "/export-preset";
|
|
391
|
-
readonly
|
|
392
|
-
readonly
|
|
393
|
-
readonly
|
|
394
|
-
readonly
|
|
400
|
+
readonly moduleDelete: "/module-delete";
|
|
401
|
+
readonly moduleClone: "/module-clone";
|
|
402
|
+
readonly moduleDuplicate: "/module-duplicate";
|
|
403
|
+
readonly moduleOpen: "/module-open";
|
|
404
|
+
readonly moduleEnable: "/module-enable";
|
|
405
|
+
readonly moduleConfigOrder: "/module-config-order";
|
|
395
406
|
readonly charactersImport: "/characters-import";
|
|
396
407
|
readonly charactersImportStream: "/characters-import-stream";
|
|
397
408
|
readonly charactersList: "/characters-list";
|
|
@@ -513,6 +524,7 @@ interface BridgeRequestMap {
|
|
|
513
524
|
* 指令文件卡策略(独立存储,默认禁用):省略 `policy` = 读取;
|
|
514
525
|
* 写入必须带读取时的 `expectedRevision`(文件缺失为 null)。
|
|
515
526
|
*/
|
|
527
|
+
/** 逐文件启停/名称;无 policy 时读取,写入仍校验原始字节版本。 */
|
|
516
528
|
instructionsPolicy: {
|
|
517
529
|
policy?: InstructionPolicyPatch;
|
|
518
530
|
expectedRevision?: string | null;
|
|
@@ -552,7 +564,7 @@ interface BridgeRequestMap {
|
|
|
552
564
|
expectedPresetId?: string;
|
|
553
565
|
} | undefined;
|
|
554
566
|
/**
|
|
555
|
-
*
|
|
567
|
+
* 模块包导入(原生/ST/PNG/ZIP)。`preview: true` 只转换并返回报告,不写目标;
|
|
556
568
|
* 提交必须携带 expectedSourceDigest 和 expectedPreviewRevision,服务端重算并拒绝过期预览。
|
|
557
569
|
* `expectedPreviewRevision` 是预览返回的版本凭据:绑定文件、实际选组、转换器版本与
|
|
558
570
|
* 目标身份(含目标当前内容),服务端提交时重算,不符返回 409 且零写盘。
|
|
@@ -566,19 +578,30 @@ interface BridgeRequestMap {
|
|
|
566
578
|
sourceId: string;
|
|
567
579
|
};
|
|
568
580
|
exportPreset: PresetExportRequest;
|
|
569
|
-
|
|
581
|
+
moduleDelete: {
|
|
570
582
|
id: string;
|
|
571
583
|
};
|
|
572
|
-
|
|
584
|
+
moduleClone: {
|
|
573
585
|
id: string;
|
|
574
586
|
autoSuffix?: boolean;
|
|
575
587
|
};
|
|
576
|
-
|
|
588
|
+
moduleDuplicate: {
|
|
577
589
|
id: string;
|
|
578
590
|
};
|
|
579
|
-
|
|
591
|
+
moduleOpen: {
|
|
580
592
|
id: string;
|
|
581
593
|
};
|
|
594
|
+
moduleEnable: {
|
|
595
|
+
id: string;
|
|
596
|
+
enabled: boolean;
|
|
597
|
+
};
|
|
598
|
+
moduleConfigOrder: {
|
|
599
|
+
moduleId: string;
|
|
600
|
+
} | {
|
|
601
|
+
moduleId?: string;
|
|
602
|
+
entries: ModuleConfigIdentity[];
|
|
603
|
+
expectedRevision: string;
|
|
604
|
+
} | undefined;
|
|
582
605
|
/** 角色卡 PNG/JSON/YAML 导入;预览不写角色库,提交必验版本,目标和选组均绑定预览。 */
|
|
583
606
|
charactersImport: AssetImportRequest;
|
|
584
607
|
charactersImportStream: undefined;
|
|
@@ -780,6 +803,8 @@ interface EngineMetaLayerContract {
|
|
|
780
803
|
/** 物化配置的只读来源;与配置一同读回,不能作为写入字段或授权。 */
|
|
781
804
|
interface PromptConfigSourceView {
|
|
782
805
|
fieldSources?: ConfigFieldSources;
|
|
806
|
+
/** 只读排序投影;不能作为客户端提供的写盘序号。 */
|
|
807
|
+
sequence?: number;
|
|
783
808
|
}
|
|
784
809
|
/** 端点级响应 value 契约(value 字段形状;扩展字段仍以 value 旁可选字段出现)。 */
|
|
785
810
|
interface BridgeValueMap {
|
|
@@ -861,7 +886,7 @@ interface BridgeValueMap {
|
|
|
861
886
|
importPreset: {
|
|
862
887
|
scopes: Array<'preset' | 'agents'>;
|
|
863
888
|
};
|
|
864
|
-
/**
|
|
889
|
+
/** 参数/提示词配置只保存当前模块,不同步宿主全局默认模型。 */
|
|
865
890
|
paramOverrides: {
|
|
866
891
|
overrides?: Record<string, unknown>;
|
|
867
892
|
promptConfigs?: unknown[];
|
|
@@ -894,7 +919,6 @@ interface BridgeValueMap {
|
|
|
894
919
|
report?: StConversionReport;
|
|
895
920
|
summary?: AssetSummary;
|
|
896
921
|
kinds?: ImportKind[];
|
|
897
|
-
refreshWarning?: string;
|
|
898
922
|
};
|
|
899
923
|
assetUpload: {
|
|
900
924
|
sourceId: string;
|
|
@@ -905,18 +929,22 @@ interface BridgeValueMap {
|
|
|
905
929
|
released: boolean;
|
|
906
930
|
};
|
|
907
931
|
exportPreset: PresetExportResult;
|
|
908
|
-
|
|
932
|
+
moduleDelete: {
|
|
909
933
|
id: string;
|
|
910
934
|
};
|
|
911
|
-
|
|
935
|
+
moduleClone: {
|
|
912
936
|
id: string;
|
|
913
937
|
};
|
|
914
|
-
|
|
938
|
+
moduleDuplicate: {
|
|
915
939
|
id: string;
|
|
916
940
|
};
|
|
917
|
-
|
|
941
|
+
moduleOpen: {
|
|
918
942
|
path: string;
|
|
919
943
|
};
|
|
944
|
+
moduleEnable: {
|
|
945
|
+
enabled: string[];
|
|
946
|
+
};
|
|
947
|
+
moduleConfigOrder: ModuleConfigOrderSnapshot;
|
|
920
948
|
charactersImport: {
|
|
921
949
|
id?: string;
|
|
922
950
|
name?: string;
|
|
@@ -987,7 +1015,14 @@ interface BridgeValueMap {
|
|
|
987
1015
|
}
|
|
988
1016
|
//#endregion
|
|
989
1017
|
//#region src/host/manifest.d.ts
|
|
990
|
-
|
|
1018
|
+
/**
|
|
1019
|
+
* 模块目录确实存在于本插件存储根(身份判定与官方登记状态无关)。
|
|
1020
|
+
*
|
|
1021
|
+
* 启用表过滤、工具写入目标、TUI 目标共用这一条判据:本插件管理的模块 = 存储根里含
|
|
1022
|
+
* `module.yml` 的目录,与「宿主有没有把它登记成官方预设」是两回事。
|
|
1023
|
+
*/
|
|
1024
|
+
declare function moduleDirExists(root: string, id: string): boolean;
|
|
1025
|
+
interface ModuleSpec {
|
|
991
1026
|
id: string;
|
|
992
1027
|
name: string;
|
|
993
1028
|
/** 官方预设列表顺序;省略时由宿主排序。 */
|
|
@@ -1009,9 +1044,11 @@ interface PresetSpec {
|
|
|
1009
1044
|
params?: Record<string, unknown>;
|
|
1010
1045
|
/** 共享引擎参数按编辑组的主归属插入点存储;规则实例仍拥有各自 params。 */
|
|
1011
1046
|
layerSettings?: Record<string, Record<string, unknown>>;
|
|
1047
|
+
/** 兼容读取诊断,不写回模块定义。 */
|
|
1048
|
+
legacyParamWarnings?: string[];
|
|
1012
1049
|
/** 顶层人设段(官方 @deepseek-ai/dsh-persona 行同构):prefix/suffix/complete/includeRuntimeContext。 */
|
|
1013
1050
|
persona?: PersonaSpec;
|
|
1014
|
-
/**
|
|
1051
|
+
/** 模块级模板变量({{key}} 插值源;与 layerSettings 分离,顶层 variables 段)。 */
|
|
1015
1052
|
variables?: Record<string, string>;
|
|
1016
1053
|
/** 自定义工具定义(tool-config-engine 渲染进 custom-tools/ 后运行时注册)。 */
|
|
1017
1054
|
customTools?: unknown[];
|
|
@@ -1019,7 +1056,7 @@ interface PresetSpec {
|
|
|
1019
1056
|
subagentToolPolicy?: Record<string, unknown>;
|
|
1020
1057
|
/**
|
|
1021
1058
|
* 触发器声明(`triggers` 顶层段):`{ id, channel, when?, do, … }` 的数组。
|
|
1022
|
-
*
|
|
1059
|
+
* 声明**由模块提供**(引擎不带默认),物化为 `triggers.yml` 后由 `declared-triggers`
|
|
1023
1060
|
* 运行时模块读入并注册;形状与校验归 `engine/trigger-spec.mjs` 的声明编译器。
|
|
1024
1061
|
*/
|
|
1025
1062
|
triggers?: unknown[];
|
|
@@ -1027,26 +1064,30 @@ interface PresetSpec {
|
|
|
1027
1064
|
variablesEnabled?: boolean;
|
|
1028
1065
|
/** 可选:模板自定义提示词配置覆盖(纯数据,不使用模板语法)。 */
|
|
1029
1066
|
promptConfigs?: unknown[];
|
|
1067
|
+
/** 配置卡的持久文件序号;跨模块UI排序只改此轻量元数据。 */
|
|
1068
|
+
configOrder?: Record<string, number>;
|
|
1030
1069
|
/** 可选:引擎组合模块行参数直写(行级 map config 浅合并;参数桥未覆盖的键生效,参数桥优先)。 */
|
|
1031
1070
|
moduleConfigs?: Record<string, Record<string, unknown>>;
|
|
1032
1071
|
upstream?: Record<string, unknown>;
|
|
1033
1072
|
}
|
|
1034
1073
|
/**
|
|
1035
|
-
*
|
|
1074
|
+
* 从模块 module.yml 的 modules 清单移除一个模块 id(YAML Document 保留注释
|
|
1036
1075
|
* 与其余字段)。返回是否发生修改;文件缺失或没有该模块时返回 false。
|
|
1037
1076
|
*/
|
|
1038
1077
|
declare function removePresetModule(dir: string, moduleId: string): boolean;
|
|
1039
|
-
/**
|
|
1040
|
-
declare function
|
|
1041
|
-
|
|
1042
|
-
|
|
1078
|
+
/** 加载某个模块模板的单一参数文件 modules/<name>/module.yml。 */
|
|
1079
|
+
declare function loadModuleSpec(dir: string, options?: {
|
|
1080
|
+
legacyParams?: boolean;
|
|
1081
|
+
}): ModuleSpec;
|
|
1082
|
+
/** 模块根:本插件的存储根(~/.dsh/.prompt-tool),导入/新建/种子化的模块都放这里。 */
|
|
1083
|
+
declare function userModulesDir(): string;
|
|
1043
1084
|
/**
|
|
1044
|
-
*
|
|
1085
|
+
* 解析模块模板目录:当前模块根优先,包内模板回退;不读取其他部署根的同名模块。
|
|
1045
1086
|
* 目录名与声明的 preset.yml id 一致;不扫描其他目录的 id 别名。
|
|
1046
1087
|
*/
|
|
1047
|
-
declare function
|
|
1048
|
-
/**
|
|
1049
|
-
declare function
|
|
1088
|
+
declare function resolveModuleDir(template: string, moduleRoot?: string): string;
|
|
1089
|
+
/** 本插件模块清单;所有目录按同一身份与组合源规则列举。 */
|
|
1090
|
+
declare function listModules(moduleRoot?: string): Array<{
|
|
1050
1091
|
id: string;
|
|
1051
1092
|
name: string;
|
|
1052
1093
|
user: boolean;
|
|
@@ -1054,17 +1095,17 @@ declare function listPresets(presetRoot?: string): Array<{
|
|
|
1054
1095
|
description?: string;
|
|
1055
1096
|
meta?: Record<string, unknown>;
|
|
1056
1097
|
}>;
|
|
1057
|
-
/**
|
|
1098
|
+
/** 插件目录模板清单(「新建」选择器与首次种子化数据源;不直接出现在模块列表)。 */
|
|
1058
1099
|
declare function listBuiltinTemplates(): Array<{
|
|
1059
1100
|
id: string;
|
|
1060
1101
|
name: string;
|
|
1061
1102
|
}>;
|
|
1062
|
-
/**
|
|
1103
|
+
/** 按包内同名目录补建缺失的内置模块;已有目录的定义、生成物和资源保持原样。 */
|
|
1063
1104
|
declare function ensurePresetSeed(root?: string): {
|
|
1064
1105
|
created: string[];
|
|
1065
1106
|
};
|
|
1066
|
-
/**
|
|
1067
|
-
declare function cloneBuiltinPreset(id: string, autoSuffix?: boolean,
|
|
1107
|
+
/** 从包内同名目录复制模块;autoSuffix=true 时递增目录名并同步定义身份。 */
|
|
1108
|
+
declare function cloneBuiltinPreset(id: string, autoSuffix?: boolean, moduleRoot?: string): {
|
|
1068
1109
|
ok: true;
|
|
1069
1110
|
id: string;
|
|
1070
1111
|
} | {
|
|
@@ -1072,27 +1113,27 @@ declare function cloneBuiltinPreset(id: string, autoSuffix?: boolean, presetRoot
|
|
|
1072
1113
|
message: string;
|
|
1073
1114
|
};
|
|
1074
1115
|
/**
|
|
1075
|
-
*
|
|
1116
|
+
* 保存模块参数:写 layerSettings(merge)/ promptConfigs(整体替换)。
|
|
1076
1117
|
* parseDocument 保留注释与未知键(preset.yml 模板含大量注释);空值键删除('' / [],
|
|
1077
1118
|
* 回落模板/引擎默认;0 与 false 照常写入——语义与函数内注释、docs §3 一致)。
|
|
1078
1119
|
*/
|
|
1079
|
-
declare function
|
|
1120
|
+
declare function saveModuleParams(moduleRoot: string, templateName: string, params: Record<string, unknown> | undefined, promptConfigs: unknown[] | undefined, variables?: Record<string, string>, variablesEnabled?: boolean): void;
|
|
1080
1121
|
/**
|
|
1081
|
-
*
|
|
1122
|
+
* 保存激活模块的顶层 persona 段(官方 `@deepseek-ai/dsh-persona` 行 config 同构)。
|
|
1082
1123
|
* null = 删除该段(回落宿主部署人设);默认值不落键(见 personaRowConfig)。
|
|
1083
1124
|
*/
|
|
1084
|
-
declare function savePresetPersona(
|
|
1085
|
-
/**
|
|
1086
|
-
*
|
|
1087
|
-
*
|
|
1088
|
-
declare function removeUserPreset(id: string,
|
|
1125
|
+
declare function savePresetPersona(moduleRoot: string, templateName: string, persona: PersonaSpec | null): void;
|
|
1126
|
+
/** 删除具有合法身份的模块目录(模块根/<id>);隐藏备份不经公共接口删除。
|
|
1127
|
+
* 仅作用于插件自有模块根,包内置模板不受影响;路径越界与非法 id 拒绝。
|
|
1128
|
+
* 模块不在宿主预设注册表里,删除后无需撤销官方登记;调用方按需重建当前模块。 */
|
|
1129
|
+
declare function removeUserPreset(id: string, moduleRoot?: string): {
|
|
1089
1130
|
ok: true;
|
|
1090
1131
|
} | {
|
|
1091
1132
|
ok: false;
|
|
1092
1133
|
message: string;
|
|
1093
1134
|
};
|
|
1094
1135
|
/** 当前 layerSettings 与显式运行参数合并;不从旧磁盘 params 段回退取值。 */
|
|
1095
|
-
declare function resolvePresetParams(spec:
|
|
1136
|
+
declare function resolvePresetParams(spec: ModuleSpec, runtime: Record<string, unknown>): Record<string, unknown>;
|
|
1096
1137
|
/**
|
|
1097
1138
|
* 参数桥:params 扁平键 → 引擎模块行 config 对象(取代旧 __TOKEN__ 文本渲染)。
|
|
1098
1139
|
*
|
|
@@ -1110,14 +1151,14 @@ declare function buildModuleConfigsFromParams(params: Record<string, unknown>, o
|
|
|
1110
1151
|
* 行级 config 合并:仅支持 map 型 config 浅合并;
|
|
1111
1152
|
* 数组型 config(如 delegation 组)按子行 id 嵌套合并;未声明模块原样保留。
|
|
1112
1153
|
* 未声明 configs 时返回原文(零开销);parseDocument 往返保留注释。
|
|
1113
|
-
* 本函数是参数桥产物落位组合行的唯一机制(含 delegation 组子行嵌套)
|
|
1154
|
+
* 本函数是参数桥产物落位组合行的唯一机制(含 delegation 组子行嵌套),不是模块覆盖通道。
|
|
1114
1155
|
*/
|
|
1115
1156
|
declare function applyModuleConfigs(raw: string, configs: Record<string, Record<string, unknown>> | undefined): string;
|
|
1116
1157
|
/**
|
|
1117
|
-
*
|
|
1158
|
+
* 解析模块的模块事实,供 UI 卡片存在性和受控创建共用。
|
|
1118
1159
|
* 显式模块及当前参数/策略所需的装配是可编辑插件能力;官方组合 row 仅保留为运行事实。
|
|
1119
1160
|
*/
|
|
1120
|
-
declare function
|
|
1161
|
+
declare function resolveModuleFacts(spec: ModuleSpec, templateDir?: string, editable?: boolean): ModuleFacts;
|
|
1121
1162
|
type EngineCapabilityCreateRequest = {
|
|
1122
1163
|
action: 'create';
|
|
1123
1164
|
capabilityId: string;
|
|
@@ -1135,19 +1176,19 @@ interface EngineCapabilityRemoveResult {
|
|
|
1135
1176
|
removedModules: string[];
|
|
1136
1177
|
capabilityIds: string[];
|
|
1137
1178
|
}
|
|
1138
|
-
/** 在内存候选文档中展开能力/recipe,校验成功后一次原子替换
|
|
1139
|
-
declare function createEngineCapabilityInPreset(
|
|
1179
|
+
/** 在内存候选文档中展开能力/recipe,校验成功后一次原子替换 module.yml。 */
|
|
1180
|
+
declare function createEngineCapabilityInPreset(moduleDir: string, request: EngineCapabilityCreateRequest): EngineCapabilityCreateResult;
|
|
1140
1181
|
/** 删除能力:模块声明、顶层数据段,以及该能力的**显式参数与行配置**一起移除。
|
|
1141
1182
|
* 参数在 ⇒ 装配在(见 impliedModulesFromParams):留下参数会让移除立刻被隐含装配拉回来,
|
|
1142
1183
|
* 所以"移除能力"必须是完整移除。未登记参数、其他能力的数据与未知字段一律不动。 */
|
|
1143
|
-
declare function removeEngineCapabilityFromPreset(
|
|
1184
|
+
declare function removeEngineCapabilityFromPreset(moduleDir: string, capabilityId: string): EngineCapabilityRemoveResult;
|
|
1144
1185
|
/**
|
|
1145
|
-
*
|
|
1186
|
+
* 模块组合渲染完整链路:模块装配 → 参数桥(moduleConfigs + params)行级合并。
|
|
1146
1187
|
* 合并优先级:参数桥(params/UI 基础层) > moduleConfigs(模板/ST 行级直写) > 行默认。
|
|
1147
1188
|
* moduleConfigs 仅补充参数桥未覆盖的行级 config(如 ST 导入的 tool-web.fetch),
|
|
1148
1189
|
* 不再锁定覆盖 UI 可管理参数(旧作者锁定语义已移除)。
|
|
1149
1190
|
*/
|
|
1150
|
-
declare function renderComposition(spec:
|
|
1191
|
+
declare function renderComposition(spec: ModuleSpec, runtime: Record<string, unknown>, templateDir?: string): string;
|
|
1151
1192
|
//#endregion
|
|
1152
1193
|
//#region src/host/sillytavern.d.ts
|
|
1153
1194
|
/** ST marker prompts(marker: true):content 不发送给模型(仅标记注入位置,ST
|
|
@@ -1157,7 +1198,7 @@ declare function renderComposition(spec: PresetSpec, runtime: Record<string, unk
|
|
|
1157
1198
|
/** 显式文本求值工具;导入本身仅 prepare,避免执行禁用卡的副作用。 */
|
|
1158
1199
|
declare function processStText(text: string, cardName: string, variables: Record<string, string | number>): string;
|
|
1159
1200
|
/** 合并多个转换结果为一个预设(角色卡 × 响应预设 → 单预设)。 */
|
|
1160
|
-
declare function mergeStPresets(specs:
|
|
1201
|
+
declare function mergeStPresets(specs: ModuleSpec[]): ModuleSpec;
|
|
1161
1202
|
/** 转换选项:多 prompt_order 分组时显式选择来源角色,避免照搬「默认任取首组」。 */
|
|
1162
1203
|
interface StConversionOptions {
|
|
1163
1204
|
characterId?: string;
|
|
@@ -1167,8 +1208,8 @@ interface StOrderGroupSummary {
|
|
|
1167
1208
|
characterId: string;
|
|
1168
1209
|
entries: number;
|
|
1169
1210
|
}
|
|
1170
|
-
/** SillyTavern JSON 预设卡片 → 本项目
|
|
1171
|
-
declare function convertStToPreset(card: unknown, baseName: string, options?: StConversionOptions):
|
|
1211
|
+
/** SillyTavern JSON 预设卡片 → 本项目 ModuleSpec(导入端点直接消费)。 */
|
|
1212
|
+
declare function convertStToPreset(card: unknown, baseName: string, options?: StConversionOptions): ModuleSpec;
|
|
1172
1213
|
/** ST 导入预设 id:必须是官方 agent-presets 可发现的目录名(PRESET_ID =
|
|
1173
1214
|
* /^[a-z0-9][a-z0-9-]*$/——含中文的目录会被宿主 discovery 静默跳过,会话
|
|
1174
1215
|
* resume 报 preset not found)。文件名 slug 化(去中文);纯中文名退化为
|
|
@@ -1179,7 +1220,7 @@ declare function stPresetId(baseName: string): string;
|
|
|
1179
1220
|
type PreparedImport = {
|
|
1180
1221
|
state: 'ready';
|
|
1181
1222
|
kind: ImportKind;
|
|
1182
|
-
spec:
|
|
1223
|
+
spec: ModuleSpec;
|
|
1183
1224
|
yaml: string;
|
|
1184
1225
|
files: AssetFile[];
|
|
1185
1226
|
sourceName: string;
|
|
@@ -1199,7 +1240,7 @@ type PreparedImport = {
|
|
|
1199
1240
|
/** 字节集合 → 同一规范化候选;没有目标写入和静默的未知 JSON 回退。 */
|
|
1200
1241
|
declare function prepareImport(input: AssetFile[], target: 'preset' | 'character', choices?: ImportChoices): PreparedImport;
|
|
1201
1242
|
//#endregion
|
|
1202
|
-
//#region src/host/
|
|
1243
|
+
//#region src/host/module-package.d.ts
|
|
1203
1244
|
declare function expandPresetSource(input: AssetFile[]): Promise<AssetFile[]>;
|
|
1204
1245
|
type ReadyImport = Extract<ReturnType<typeof prepareImport>, {
|
|
1205
1246
|
state: 'ready';
|
|
@@ -1223,11 +1264,12 @@ declare function exportPresetPackage(root: string, request: PresetExportRequest)
|
|
|
1223
1264
|
* 插件不再内置任何技能:包内没有 skills 目录,也不再有安装副本与内容账本。 */
|
|
1224
1265
|
declare const USER_SKILLS_DIR: string;
|
|
1225
1266
|
/**
|
|
1226
|
-
*
|
|
1227
|
-
*
|
|
1228
|
-
*
|
|
1229
|
-
*
|
|
1267
|
+
* 存储根下的**模块根**:一个模块一个目录(`modules/<id>/`),定义与物化产物都在其内。
|
|
1268
|
+
*
|
|
1269
|
+
* 这是 `resolveModuleDir` / `assertModuleDirectory` / `listModules` 的扫描根,
|
|
1270
|
+
* 也是「本插件管理的模块」身份判定的基准。模块目录必须是它的**直接子目录**
|
|
1271
|
+
* (`assertModuleDirectory` 的一层深度契约由此成立)。
|
|
1230
1272
|
*/
|
|
1231
|
-
declare const
|
|
1273
|
+
declare const MODULES_DIR: string;
|
|
1232
1274
|
//#endregion
|
|
1233
|
-
export {
|
|
1275
|
+
export { AssetFile as $, resolveModuleFacts as A, MAX_BRIDGE_BODY_BYTES as B, loadModuleSpec as C, removeUserPreset as D, removePresetModule as E, BRIDGE_ENDPOINTS as F, SkillInvocation as G, SETTINGS_BRIDGE_PREFIX as H, BridgeEndpoint as I, SkillSourceKind as J, SkillPolicyChange as K, BridgeErrorPayload as L, saveModuleParams as M, savePresetPersona as N, renderComposition as O, userModulesDir as P, scopeOfInvocation as Q, BridgeRequestMap as R, listModules as S, removeEngineCapabilityFromPreset as T, SkillCatalogEntry as U, MAX_CHARACTER_CARD_STREAM_BYTES as V, SkillContentSnapshot as W, SkillsState as X, SkillsCatalogSnapshot as Y, invocationForScope as Z, buildModuleConfigsFromParams as _, installPresetPackage as a, MAX_INSTRUCTION_FILE_BYTES as at, ensurePresetSeed as b, convertStToPreset as c, EngineCapability as ct, stPresetId as d, engineCapability as dt, ImportChoices as et, EngineCapabilityCreateRequest as f, engineRecipe as ft, applyModuleConfigs as g, ModuleSpec as h, exportPresetPackage as i, InstructionFileStatus as it, resolvePresetParams as j, resolveModuleDir as k, mergeStPresets as l, ModuleFacts as lt, EngineCapabilityRemoveResult as m, validateCustomToolIdentities as mt, USER_SKILLS_DIR as n, InstructionContextView as nt, presetImportPreview as o, ENGINE_CAPABILITIES as ot, EngineCapabilityCreateResult as p, isEngineCapabilityPresent as pt, SkillPolicyScope as q, expandPresetSource as r, InstructionFileSnapshot as rt, StConversionOptions as s, ENGINE_RECIPES as st, MODULES_DIR as t, INSTRUCTION_FILE_STATUSES as tt, processStText as u, ModuleSourceMode as ut, cloneBuiltinPreset as v, moduleDirExists as w, listBuiltinTemplates as x, createEngineCapabilityInPreset as y, BridgeValueMap as z };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as exportPresetPackage, r as expandPresetSource, t as
|
|
2
|
-
export {
|
|
1
|
+
import { i as exportPresetPackage, r as expandPresetSource, t as MODULES_DIR } from "./paths-BgL42sSM.mjs";
|
|
2
|
+
export { MODULES_DIR, expandPresetSource, exportPresetPackage };
|
package/lib/preset-transfer.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export {
|
|
1
|
+
import { n as exportPresetPackage, rn as MODULES_DIR, t as expandPresetSource } from "./module-package-Cm3fHHlp.mjs";
|
|
2
|
+
export { MODULES_DIR, expandPresetSource, exportPresetPackage };
|