@dsh-plus/agent-preset-rea 0.1.0 → 0.1.2
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/lib/client.js +870 -52
- package/lib/index.d.ts +402 -9
- package/lib/index.js +1319 -203
- package/package.json +4 -3
- package/src/client/api.ts +77 -0
- package/src/client/card.tsx +39 -10
- package/src/client/client.ts +3 -3
- package/src/client/draft.ts +52 -6
- package/src/client/i18n.ts +135 -4
- package/src/client/install.tsx +373 -0
- package/src/client/styles.ts +27 -2
- package/src/client/toggles.tsx +57 -0
- package/src/config.ts +54 -14
- package/src/definition.ts +193 -136
- package/src/dto.ts +113 -0
- package/src/exec.ts +177 -0
- package/src/index.ts +115 -4
- package/src/jobs.ts +145 -0
- package/src/manager.ts +424 -0
- package/src/mcp.ts +47 -6
- package/src/reverse.ts +335 -0
- package/src/routes.ts +223 -0
- package/src/skill.ts +32 -7
package/lib/index.d.ts
CHANGED
|
@@ -11,9 +11,16 @@ declare const Config: z<Schemastery.ObjectS<NoInfer<{
|
|
|
11
11
|
description: z<string, string, "defined">;
|
|
12
12
|
order: z<number, number, "defined">;
|
|
13
13
|
personaPrefix: z<string, string, "volatile-defined">;
|
|
14
|
-
mcpEnabled: z<boolean, boolean, "defined">;
|
|
14
|
+
mcpEnabled: z<boolean, boolean, "volatile-defined">;
|
|
15
|
+
skillEnabled: z<boolean, boolean, "volatile-defined">;
|
|
16
|
+
reverseSkillEnabled: z<boolean, boolean, "volatile-defined">;
|
|
17
|
+
reverseSkillRepo: z<string, string, "defined">;
|
|
18
|
+
reverseSkillRef: z<string, string, "defined">;
|
|
19
|
+
reverseSkillGroups: z<string[], string[], "defined">;
|
|
15
20
|
mcpServerName: z<string, string, "defined">;
|
|
16
21
|
reaVersion: z<string, string, "defined">;
|
|
22
|
+
installRoot: z<string, string, "defined">;
|
|
23
|
+
proxyPort: z<number, number, "volatile-defined">;
|
|
17
24
|
mcpCommand: z<string, string, "defined">;
|
|
18
25
|
mcpArgs: z<string[], string[], "defined">;
|
|
19
26
|
inputSchemaProfile: z<"compact" | "full", "compact" | "full", "defined">;
|
|
@@ -27,9 +34,16 @@ declare const Config: z<Schemastery.ObjectS<NoInfer<{
|
|
|
27
34
|
description: z<string, string, "defined">;
|
|
28
35
|
order: z<number, number, "defined">;
|
|
29
36
|
personaPrefix: z<string, string, "volatile-defined">;
|
|
30
|
-
mcpEnabled: z<boolean, boolean, "defined">;
|
|
37
|
+
mcpEnabled: z<boolean, boolean, "volatile-defined">;
|
|
38
|
+
skillEnabled: z<boolean, boolean, "volatile-defined">;
|
|
39
|
+
reverseSkillEnabled: z<boolean, boolean, "volatile-defined">;
|
|
40
|
+
reverseSkillRepo: z<string, string, "defined">;
|
|
41
|
+
reverseSkillRef: z<string, string, "defined">;
|
|
42
|
+
reverseSkillGroups: z<string[], string[], "defined">;
|
|
31
43
|
mcpServerName: z<string, string, "defined">;
|
|
32
44
|
reaVersion: z<string, string, "defined">;
|
|
45
|
+
installRoot: z<string, string, "defined">;
|
|
46
|
+
proxyPort: z<number, number, "volatile-defined">;
|
|
33
47
|
mcpCommand: z<string, string, "defined">;
|
|
34
48
|
mcpArgs: z<string[], string[], "defined">;
|
|
35
49
|
inputSchemaProfile: z<"compact" | "full", "compact" | "full", "defined">;
|
|
@@ -43,6 +57,208 @@ type AgentPresetReaConfigFields = Schemastery.TypeT<typeof Config>;
|
|
|
43
57
|
/** 平面配置形态(消费面的读取形态,由活动引用解包得到)。 */
|
|
44
58
|
type AgentPresetReaConfig = UnwrapVolatile<AgentPresetReaConfigFields>;
|
|
45
59
|
//#endregion
|
|
60
|
+
//#region src/exec.d.ts
|
|
61
|
+
/** npm 命令名(Windows 经 shell 执行,见 {@link spawnRunner} 注释)。 */
|
|
62
|
+
declare const NPM = "npm";
|
|
63
|
+
/** 作业取消(AbortSignal 触发后由 runner 抛出)。 */
|
|
64
|
+
declare class JobCancelled extends Error {
|
|
65
|
+
constructor();
|
|
66
|
+
}
|
|
67
|
+
/** 外部命令执行面。 */
|
|
68
|
+
interface CommandRunner {
|
|
69
|
+
run(command: string, args: string[], options: {
|
|
70
|
+
env: Record<string, string>;
|
|
71
|
+
signal: AbortSignal;
|
|
72
|
+
onLine(line: string): void;
|
|
73
|
+
}): Promise<{
|
|
74
|
+
code: number;
|
|
75
|
+
}>;
|
|
76
|
+
}
|
|
77
|
+
/** 作业执行上下文(阶段推进 + 日志 + 取消信号)。 */
|
|
78
|
+
interface JobTaskContext {
|
|
79
|
+
/** 进入第 step 个阶段(从 0 起,与 {@link JobOperation.phases} 对应)。 */
|
|
80
|
+
phase(step: number): void;
|
|
81
|
+
log(line: string): void;
|
|
82
|
+
signal: AbortSignal;
|
|
83
|
+
}
|
|
84
|
+
/** 一类作业:阶段名 + 实现。 */
|
|
85
|
+
interface JobOperation {
|
|
86
|
+
phases: string[];
|
|
87
|
+
run(ctx: JobTaskContext): Promise<string>;
|
|
88
|
+
}
|
|
89
|
+
/** 作业依赖:生效配置、命令执行面、作业完成后的现探刷新。 */
|
|
90
|
+
interface JobDeps {
|
|
91
|
+
config: AgentPresetReaConfig;
|
|
92
|
+
runner: CommandRunner;
|
|
93
|
+
refresh(): void;
|
|
94
|
+
}
|
|
95
|
+
/** 实际 runner:spawn 子进程、逐行回调、AbortSignal 触发即杀。 */
|
|
96
|
+
declare const spawnRunner: CommandRunner;
|
|
97
|
+
/** npm 子进程环境({@link commandEnv} 的 npm 形态)。 */
|
|
98
|
+
declare function npmEnv(config: AgentPresetReaConfig): Record<string, string>;
|
|
99
|
+
/** 版本收窄:进命令前把配置里的钉版校验成纯版本号。 */
|
|
100
|
+
declare function safeVersion(version: string): string;
|
|
101
|
+
//#endregion
|
|
102
|
+
//#region src/reverse.d.ts
|
|
103
|
+
/** 本技能源在插件数据目录下的子目录名。 */
|
|
104
|
+
declare const REVERSE_DIR = "reverse-skill";
|
|
105
|
+
/** 仓库树目录名(换目录作业的替换单元是它的父目录)。 */
|
|
106
|
+
declare const REVERSE_TREE_DIR = "repo";
|
|
107
|
+
/** 默认仓库。 */
|
|
108
|
+
declare const REVERSE_DEFAULT_REPO = "zhaoxuya520/reverse-skill";
|
|
109
|
+
/** 手动更新作业阶段名。 */
|
|
110
|
+
declare const REVERSE_PHASES: string[];
|
|
111
|
+
/** 受管路径。 */
|
|
112
|
+
interface ReversePaths {
|
|
113
|
+
/** 技能源根(`repo/` 与 `manifest.json` 的父目录)。 */
|
|
114
|
+
root: string;
|
|
115
|
+
/** 仓库树根。 */
|
|
116
|
+
tree: string;
|
|
117
|
+
}
|
|
118
|
+
/** 清单(溯源事实;sha 已是内容级溯源,故不再逐文件复算哈希)。 */
|
|
119
|
+
interface ReverseManifest {
|
|
120
|
+
source: string;
|
|
121
|
+
repo: string;
|
|
122
|
+
/** 配置里的 ref(空串 = 仓库默认分支)。 */
|
|
123
|
+
ref: string;
|
|
124
|
+
/** GitHub 机构 API 解析到的提交 sha。 */
|
|
125
|
+
sha: string;
|
|
126
|
+
/** 仓库 `VERSION` 文件内容(无则 null)。 */
|
|
127
|
+
version: string | null;
|
|
128
|
+
/** 树内文件数。 */
|
|
129
|
+
files: number;
|
|
130
|
+
/** 树内发现的技能组(相对路径)。 */
|
|
131
|
+
groups: string[];
|
|
132
|
+
updatedAt: string;
|
|
133
|
+
}
|
|
134
|
+
/** 技能源现状。 */
|
|
135
|
+
interface ReverseState {
|
|
136
|
+
installed: boolean;
|
|
137
|
+
repo: string;
|
|
138
|
+
ref: string | null;
|
|
139
|
+
sha: string | null;
|
|
140
|
+
version: string | null;
|
|
141
|
+
files: number;
|
|
142
|
+
/** 树内发现的全部技能组(相对路径)。 */
|
|
143
|
+
groups: string[];
|
|
144
|
+
updatedAt: string | null;
|
|
145
|
+
}
|
|
146
|
+
/** 受管路径(固定落插件数据目录,无部署方可调项)。 */
|
|
147
|
+
declare function reversePaths(): ReversePaths;
|
|
148
|
+
/** 发现树内的技能组:直接子目录带 SKILL.md 的目录(排除树根与 SKIP_DIRS)。 */
|
|
149
|
+
declare function discoverSkillGroups(tree: string): string[];
|
|
150
|
+
/** 现探技能源(清单可读 + 树在 + 至少一个技能组才算可用)。 */
|
|
151
|
+
declare function probeReverse(config: AgentPresetReaConfig, repo?: string): ReverseState;
|
|
152
|
+
/**
|
|
153
|
+
* 挂进本预设的技能组目录:配置选中 ∩ 树内发现。
|
|
154
|
+
*
|
|
155
|
+
* 组是否真实存在由现探的 {@link discoverSkillGroups} 负责(发现即存在),这里不再
|
|
156
|
+
* 二次查盘——否则「未安装/组缺席」两种语义会在两处各判一遍。
|
|
157
|
+
* @param config - 插件配置。
|
|
158
|
+
* @param state - 现探现状。
|
|
159
|
+
*/
|
|
160
|
+
declare function reverseSkillDirs(config: AgentPresetReaConfig, state: ReverseState): string[];
|
|
161
|
+
/** 作业依赖(与 manager 的作业同形:配置 + 命令执行面 + 现探刷新)。 */
|
|
162
|
+
type ReverseDeps = JobDeps;
|
|
163
|
+
/** 手动更新作业:拉默认分支/指定 ref 的最新提交,解包后换目录并写清单。 */
|
|
164
|
+
declare function runReverseSkillJob(deps: ReverseDeps, ctx: JobTaskContext): Promise<string>;
|
|
165
|
+
//#endregion
|
|
166
|
+
//#region src/manager.d.ts
|
|
167
|
+
/** npm 包名。 */
|
|
168
|
+
declare const REA_PACKAGE = "rea-agents";
|
|
169
|
+
/** 受管安装树目录名。 */
|
|
170
|
+
declare const REA_INSTALL_DIR = "rea-agent";
|
|
171
|
+
/** 手动更新 skill 的目录名。 */
|
|
172
|
+
declare const REA_SKILL_DIR = "skills";
|
|
173
|
+
/** REA 随包 skill 名(tar 包内路径与目录名同此)。 */
|
|
174
|
+
declare const REA_SKILL_NAME = "reverse-engineer-anything";
|
|
175
|
+
/** 已安装的 REA 事实。 */
|
|
176
|
+
interface ReaInstall {
|
|
177
|
+
version: string;
|
|
178
|
+
root: string;
|
|
179
|
+
/** spawn 用的可执行文件(`process.execPath`,即当前 node)。 */
|
|
180
|
+
command: string;
|
|
181
|
+
/** 入口脚本绝对路径(`scripts/rea.mjs`)。 */
|
|
182
|
+
entry: string;
|
|
183
|
+
}
|
|
184
|
+
/** skill 来源事实。 */
|
|
185
|
+
interface SkillState {
|
|
186
|
+
/** `bundled` = 随包副本;`updated` = 插件数据目录里的手动更新副本。 */
|
|
187
|
+
source: 'bundled' | 'updated';
|
|
188
|
+
/** 来源版本(从清单 source 解析;解析不出为 null)。 */
|
|
189
|
+
version: string | null;
|
|
190
|
+
root: string;
|
|
191
|
+
files: number;
|
|
192
|
+
updatedAt: string | null;
|
|
193
|
+
}
|
|
194
|
+
/** 运行期事实快照(现探,不进配置;声明组装按它决定 mcp 行与 skill 根)。 */
|
|
195
|
+
interface RuntimeSnapshot {
|
|
196
|
+
install: ReaInstall | null;
|
|
197
|
+
skill: SkillState;
|
|
198
|
+
/** GitHub 技能源(zhaoxuya520/reverse-skill)现状。 */
|
|
199
|
+
reverse: ReverseState;
|
|
200
|
+
}
|
|
201
|
+
/** skill 清单(与随包夹具同形;更新副本多写入 updatedAt)。 */
|
|
202
|
+
interface SkillManifest {
|
|
203
|
+
source: string;
|
|
204
|
+
files: {
|
|
205
|
+
path: string;
|
|
206
|
+
sha256: string;
|
|
207
|
+
bytes: number;
|
|
208
|
+
}[];
|
|
209
|
+
updatedAt?: string;
|
|
210
|
+
}
|
|
211
|
+
/** 受管路径。 */
|
|
212
|
+
interface ManagerPaths {
|
|
213
|
+
installRoot: string;
|
|
214
|
+
skillRoot: string;
|
|
215
|
+
}
|
|
216
|
+
/** 作业可一次性覆盖的配置项(卡片未保存的代理端口即时生效用)。 */
|
|
217
|
+
interface JobOverrides {
|
|
218
|
+
proxyPort?: number;
|
|
219
|
+
}
|
|
220
|
+
/** REA 管理面。 */
|
|
221
|
+
interface ReaManager {
|
|
222
|
+
paths(): ManagerPaths;
|
|
223
|
+
/** 现探运行期事实(同步;声明组装在 `apply` 期就要读到)。 */
|
|
224
|
+
snapshot(): RuntimeSnapshot;
|
|
225
|
+
/** 重新现探并更新快照(作业完成、volatile 变更后调用)。 */
|
|
226
|
+
refresh(): RuntimeSnapshot;
|
|
227
|
+
/** 受管作业(安装/更新 REA 包、更新 REA skill、更新 reverse-skill)。 */
|
|
228
|
+
operations(overrides?: JobOverrides): {
|
|
229
|
+
install: JobOperation;
|
|
230
|
+
skill: JobOperation;
|
|
231
|
+
reverse: JobOperation;
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
/** 安装作业阶段名。 */
|
|
235
|
+
declare const INSTALL_PHASES: string[];
|
|
236
|
+
/** skill 作业阶段名。 */
|
|
237
|
+
declare const SKILL_PHASES: string[];
|
|
238
|
+
/**
|
|
239
|
+
* 解析受管路径:`installRoot` 非空即运维指定位置(部署方平面),
|
|
240
|
+
* 否则落插件数据目录;skill 更新副本固定落插件数据目录。
|
|
241
|
+
*/
|
|
242
|
+
declare function managerPaths(config: AgentPresetReaConfig): ManagerPaths;
|
|
243
|
+
/**
|
|
244
|
+
* 探测已安装 REA:包版本可读 **且** 入口脚本存在才算安装完整
|
|
245
|
+
* (只有一半的安装树、或换目录中断留下的 staging 都不算)。
|
|
246
|
+
*/
|
|
247
|
+
declare function probeInstall(paths: ManagerPaths): ReaInstall | null;
|
|
248
|
+
/** 探测 skill 来源:数据目录里清单完整且技能文件在位才认更新副本。 */
|
|
249
|
+
declare function probeSkill(paths: ManagerPaths, bundledRoot: string, bundledVersion: string): SkillState;
|
|
250
|
+
/** 现探运行期事实。 */
|
|
251
|
+
declare function probeRuntime(config: AgentPresetReaConfig, bundledRoot: string, bundledVersion: string): RuntimeSnapshot;
|
|
252
|
+
/** 生效配置:作业可带一次性覆盖(卡片未保存的代理端口即时可用)。 */
|
|
253
|
+
declare function configWith(base: AgentPresetReaConfig, overrides?: JobOverrides): AgentPresetReaConfig;
|
|
254
|
+
/** 建一个 REA 管理器。 */
|
|
255
|
+
declare function createManager(options: {
|
|
256
|
+
config: () => AgentPresetReaConfig;
|
|
257
|
+
bundledRoot: string;
|
|
258
|
+
bundledVersion: string;
|
|
259
|
+
runner?: CommandRunner;
|
|
260
|
+
}): ReaManager;
|
|
261
|
+
//#endregion
|
|
46
262
|
//#region src/definition.d.ts
|
|
47
263
|
/** 预设注册表身份(改 id 等于换预设,default 等引用都会落空)。 */
|
|
48
264
|
declare const REA_PRESET_ID = "rea";
|
|
@@ -53,24 +269,175 @@ declare const ADDED_ROWS: readonly string[];
|
|
|
53
269
|
* 删除某条等于把该行改回上游原文;改动上游不存在的字段会被测试拦下。
|
|
54
270
|
*/
|
|
55
271
|
declare const CONFIG_DELTAS: Readonly<Record<string, readonly string[]>>;
|
|
272
|
+
/** 未安装、随包 skill 的运行期事实(默认值:测试与无 manager 场景)。 */
|
|
273
|
+
declare function emptyRuntime(): RuntimeSnapshot;
|
|
56
274
|
/**
|
|
57
|
-
*
|
|
275
|
+
* 由配置 + 运行期事实拼出注册表声明。
|
|
58
276
|
* @param config - 已验证的插件配置。
|
|
277
|
+
* @param runtime - 受管安装与 skill 来源事实(默认「未安装 + 随包 skill」)。
|
|
59
278
|
* @returns id 固定为 `rea` 的预设声明。
|
|
60
279
|
*/
|
|
61
|
-
declare function reaPresetDefinition(config: AgentPresetReaConfig): PresetDefinition;
|
|
280
|
+
declare function reaPresetDefinition(config: AgentPresetReaConfig, runtime?: RuntimeSnapshot): PresetDefinition;
|
|
281
|
+
//#endregion
|
|
282
|
+
//#region src/dto.d.ts
|
|
283
|
+
/**
|
|
284
|
+
* 宿主半与浏览器半之间的 wire 数据门面(纯类型 + 纯函数,零 node 依赖)。
|
|
285
|
+
*
|
|
286
|
+
* 浏览器半只 `import type` 消费本文件(编译期擦除,不进 client bundle),
|
|
287
|
+
* 两端共用同一份字段定义,避免「宿主改了字段、卡片还在读老名字」的静默漂移。
|
|
288
|
+
* @module @dsh-plus/agent-preset-rea/dto
|
|
289
|
+
*/
|
|
290
|
+
/** 作业种类:REA 包安装/更新、REA skill 更新、reverse-skill 更新。 */
|
|
291
|
+
type JobKind = 'install' | 'skill' | 'reverse';
|
|
292
|
+
/** 作业状态。 */
|
|
293
|
+
type JobState = 'running' | 'ok' | 'error' | 'cancelled';
|
|
294
|
+
/** 作业进度(按阶段推进;percent 为进入该阶段时的完成度)。 */
|
|
295
|
+
interface JobProgressDto {
|
|
296
|
+
step: number;
|
|
297
|
+
steps: number;
|
|
298
|
+
phase: string;
|
|
299
|
+
percent: number;
|
|
300
|
+
}
|
|
301
|
+
/** 作业快照。 */
|
|
302
|
+
interface JobDto {
|
|
303
|
+
id: number;
|
|
304
|
+
kind: JobKind;
|
|
305
|
+
state: JobState;
|
|
306
|
+
progress: JobProgressDto;
|
|
307
|
+
/** 日志尾部(宿主已有界)。 */
|
|
308
|
+
log: string[];
|
|
309
|
+
startedAt: string;
|
|
310
|
+
finishedAt: string | null;
|
|
311
|
+
version: string | null;
|
|
312
|
+
error: string | null;
|
|
313
|
+
}
|
|
314
|
+
/** 受管安装事实。 */
|
|
315
|
+
interface InstallDto {
|
|
316
|
+
installed: boolean;
|
|
317
|
+
/** 已安装版本(未安装为 null)。 */
|
|
318
|
+
version: string | null;
|
|
319
|
+
/** 受管安装树位置(无论是否已安装都有值,便于用户核对)。 */
|
|
320
|
+
root: string;
|
|
321
|
+
/** 入口脚本(未安装为 null)。 */
|
|
322
|
+
entry: string | null;
|
|
323
|
+
}
|
|
324
|
+
/** skill 来源事实。 */
|
|
325
|
+
interface SkillDto {
|
|
326
|
+
source: 'bundled' | 'updated';
|
|
327
|
+
version: string | null;
|
|
328
|
+
root: string;
|
|
329
|
+
files: number;
|
|
330
|
+
updatedAt: string | null;
|
|
331
|
+
}
|
|
332
|
+
/** MCP 行形态。 */
|
|
333
|
+
interface McpDto {
|
|
334
|
+
/** `installed` = 用受管安装入口;`custom` = 用显式 mcpCommand;`missing` = 未安装且无显式命令(行禁用)。 */
|
|
335
|
+
mode: 'installed' | 'custom' | 'missing';
|
|
336
|
+
/** 行是否启用(mcpEnabled && 有启动方式)。 */
|
|
337
|
+
enabled: boolean;
|
|
338
|
+
command: string | null;
|
|
339
|
+
args: string[];
|
|
340
|
+
}
|
|
341
|
+
/** GitHub 技能源(zhaoxuya520/reverse-skill)事实。 */
|
|
342
|
+
interface ReverseSkillDto {
|
|
343
|
+
installed: boolean;
|
|
344
|
+
repo: string;
|
|
345
|
+
/** 清单记录的 ref(空串 = 安装时取的默认分支)。 */
|
|
346
|
+
ref: string | null;
|
|
347
|
+
/** 提交 sha(内容级溯源)。 */
|
|
348
|
+
sha: string | null;
|
|
349
|
+
/** 仓库 VERSION 文件内容。 */
|
|
350
|
+
version: string | null;
|
|
351
|
+
root: string;
|
|
352
|
+
tree: string;
|
|
353
|
+
files: number;
|
|
354
|
+
/** 树内发现的全部技能组(相对安装树根)。 */
|
|
355
|
+
groups: string[];
|
|
356
|
+
/** 配置选中且实际挂进预设的组。 */
|
|
357
|
+
activeGroups: string[];
|
|
358
|
+
updatedAt: string | null;
|
|
359
|
+
}
|
|
360
|
+
/** `GET /status` 响应。 */
|
|
361
|
+
interface StatusDto {
|
|
362
|
+
config: {
|
|
363
|
+
reaVersion: string;
|
|
364
|
+
proxyPort: number;
|
|
365
|
+
mcpEnabled: boolean;
|
|
366
|
+
skillEnabled: boolean;
|
|
367
|
+
reverseSkillEnabled: boolean;
|
|
368
|
+
reverseSkillRepo: string;
|
|
369
|
+
reverseSkillRef: string;
|
|
370
|
+
reverseSkillGroups: string[];
|
|
371
|
+
installRoot: string;
|
|
372
|
+
};
|
|
373
|
+
install: InstallDto;
|
|
374
|
+
skill: SkillDto;
|
|
375
|
+
reverse: ReverseSkillDto;
|
|
376
|
+
mcp: McpDto;
|
|
377
|
+
paths: {
|
|
378
|
+
installRoot: string;
|
|
379
|
+
skillRoot: string;
|
|
380
|
+
reverseRoot: string;
|
|
381
|
+
};
|
|
382
|
+
job: JobDto | null;
|
|
383
|
+
}
|
|
384
|
+
/** 作业类响应(启动/取消)。 */
|
|
385
|
+
interface JobActionDto {
|
|
386
|
+
job: JobDto | null;
|
|
387
|
+
/** 拒绝原因(409/400 时给出人话)。 */
|
|
388
|
+
error?: string;
|
|
389
|
+
}
|
|
390
|
+
//#endregion
|
|
391
|
+
//#region src/jobs.d.ts
|
|
392
|
+
/** 作业快照(与 wire DTO 同形,HTTP 直接回传)。 */
|
|
393
|
+
type JobSnapshot = JobDto;
|
|
394
|
+
/** 作业板。 */
|
|
395
|
+
interface JobBoard {
|
|
396
|
+
/** 启动作业;已有作业在跑时返回 null(调用方回 409)。 */
|
|
397
|
+
start(kind: JobKind, operation: JobOperation): JobSnapshot | null;
|
|
398
|
+
/** 取消当前作业(返回是否真的发出取消)。 */
|
|
399
|
+
cancel(): boolean;
|
|
400
|
+
/** 当前/最近一次作业快照。 */
|
|
401
|
+
snapshot(): JobSnapshot | null;
|
|
402
|
+
/** 订阅作业完成(返回退订函数)。 */
|
|
403
|
+
onSettled(listener: (snapshot: JobSnapshot) => void): () => void;
|
|
404
|
+
}
|
|
405
|
+
/** 建一个作业板。 */
|
|
406
|
+
declare function createJobBoard(): JobBoard;
|
|
62
407
|
//#endregion
|
|
63
408
|
//#region src/mcp.d.ts
|
|
64
409
|
/** 钉版基线:`rea-agents@6.5.0`(升级时同步测试断言、tests 清单与包文档)。 */
|
|
65
410
|
declare const REA_PINNED_VERSION = "6.5.0";
|
|
66
|
-
/**
|
|
411
|
+
/** 显式命令配 npx 时的参数配方基准值(`mcpArgs` 留空即按它派生)。 */
|
|
67
412
|
declare const DEFAULT_MCP_COMMAND = "npx";
|
|
68
413
|
/** REA 工具入参 schema 广告档位:`compact` 压请求前缀体积,`full` 与上游默认一致。 */
|
|
69
414
|
declare const INPUT_SCHEMA_PROFILES: readonly ['compact', 'full'];
|
|
70
415
|
/** REA 工具出参 schema 广告档位:`off` 不下发(结果仍由 REA 侧校验),`full` 与上游默认一致。 */
|
|
71
416
|
declare const OUTPUT_SCHEMA_PROFILES: readonly ['off', 'full'];
|
|
72
|
-
/**
|
|
417
|
+
/** 受管安装的入口事实(结构上由 manager 的 ReaInstall 满足)。 */
|
|
418
|
+
interface InstalledEntry {
|
|
419
|
+
/** spawn 用的可执行文件。 */
|
|
420
|
+
command: string;
|
|
421
|
+
/** 入口脚本绝对路径。 */
|
|
422
|
+
entry: string;
|
|
423
|
+
}
|
|
424
|
+
/** MCP 行的启动方式。 */
|
|
425
|
+
interface McpLaunch {
|
|
426
|
+
command: string;
|
|
427
|
+
args: string[];
|
|
428
|
+
}
|
|
429
|
+
/**
|
|
430
|
+
* 显式命令(`mcpCommand` 非空)时的参数:`mcpArgs` 优先;
|
|
431
|
+
* 留空时 npx 走 `-y rea-agents@<钉版> mcp`,其他可执行文件只补 `mcp`。
|
|
432
|
+
*/
|
|
73
433
|
declare function reaMcpArgs(config: AgentPresetReaConfig): string[];
|
|
434
|
+
/**
|
|
435
|
+
* 本预设 MCP 行的启动方式:
|
|
436
|
+
* 1. `mcpCommand` 显式配置 → 用用户命令(Windows 配方、全局安装场景);
|
|
437
|
+
* 2. 受管安装存在 → 用当前 node 直接跑安装树里的入口脚本(跨平台、不经 shell shim);
|
|
438
|
+
* 3. 都没有 → `null`,调用方把该行置 `disabled`(未安装,等卡片上的安装动作)。
|
|
439
|
+
*/
|
|
440
|
+
declare function reaMcpLaunch(config: AgentPresetReaConfig, installed: InstalledEntry | null): McpLaunch | null;
|
|
74
441
|
/**
|
|
75
442
|
* 传给 REA 子进程的环境变量(并入被清洗过的宿主环境之上)。
|
|
76
443
|
*
|
|
@@ -117,6 +484,20 @@ interface PresetRegistrar {
|
|
|
117
484
|
*/
|
|
118
485
|
declare function createPresetRegistrar(options: PresetRegistrarOptions): PresetRegistrar;
|
|
119
486
|
//#endregion
|
|
487
|
+
//#region src/routes.d.ts
|
|
488
|
+
/** 路由前缀。 */
|
|
489
|
+
declare const ROUTE_BASE = "/dsh-plus/agent-preset-rea";
|
|
490
|
+
/** 路由依赖。 */
|
|
491
|
+
interface ReaRoutesOptions {
|
|
492
|
+
manager: ReaManager;
|
|
493
|
+
board: JobBoard;
|
|
494
|
+
config: () => AgentPresetReaConfig;
|
|
495
|
+
}
|
|
496
|
+
/** 组装状态响应(纯函数,可直接单测)。 */
|
|
497
|
+
declare function statusPayload(options: ReaRoutesOptions): StatusDto;
|
|
498
|
+
/** 注册全部路由。 */
|
|
499
|
+
declare function registerReaRoutes(ctx: Context, options: ReaRoutesOptions): void;
|
|
500
|
+
//#endregion
|
|
120
501
|
//#region src/skill.d.ts
|
|
121
502
|
/**
|
|
122
503
|
* 随包 REA 官方 skill 根(包内 `skills/`)。
|
|
@@ -125,8 +506,20 @@ declare function createPresetRegistrar(options: PresetRegistrarOptions): PresetR
|
|
|
125
506
|
* 运行产物两种位置下解析到同一目录。
|
|
126
507
|
*/
|
|
127
508
|
declare const BUNDLED_SKILL_ROOT: string;
|
|
128
|
-
/**
|
|
129
|
-
|
|
509
|
+
/**
|
|
510
|
+
* REA skill 根(随包副本,或手动更新副本——后者存在即替代前者)。
|
|
511
|
+
* @param updatedRoot - 手动更新副本根(来自 manager 现探)。
|
|
512
|
+
*/
|
|
513
|
+
declare function reaSkillDirs(updatedRoot?: string | null): string[];
|
|
514
|
+
/**
|
|
515
|
+
* 本预设 `skill-filesystem` 行的完整追加根清单,按三个开关裁剪:
|
|
516
|
+
* - `skillEnabled=false` → 不挂 REA 官方 skill(安装副本仍留在磁盘);
|
|
517
|
+
* - `reverseSkillEnabled=false` → 不挂 reverse-skill 的技能组;
|
|
518
|
+
* - `extraSkillDirs` 是部署方追加项,不受开关影响(关掉的是本插件自带的两个源)。
|
|
519
|
+
* @param config - 插件配置。
|
|
520
|
+
* @param runtime - 现探运行期事实。
|
|
521
|
+
*/
|
|
522
|
+
declare function presetSkillDirs(config: AgentPresetReaConfig, runtime: RuntimeSnapshot): string[];
|
|
130
523
|
//#endregion
|
|
131
524
|
//#region src/index.d.ts
|
|
132
525
|
declare const name = "dsh-plus-agent-preset-rea";
|
|
@@ -142,4 +535,4 @@ declare const inject: readonly [];
|
|
|
142
535
|
*/
|
|
143
536
|
declare function apply(ctx: Context, config: AgentPresetReaConfigFields): void;
|
|
144
537
|
//#endregion
|
|
145
|
-
export { ADDED_ROWS, type AgentPresetReaConfig, type AgentPresetReaConfigFields, BUNDLED_SKILL_ROOT, CONFIG_DELTAS, Config, DEFAULT_MCP_COMMAND, INPUT_SCHEMA_PROFILES, OUTPUT_SCHEMA_PROFILES, PLAN_MODE_SECTION, type PresetRegistrar, REA_PINNED_VERSION, REA_PRESET_ID, SETTINGS_NS, type Unregister, apply, createPresetRegistrar, inject, name, reaMcpArgs, reaMcpEnv, reaPresetDefinition, reaSkillDirs };
|
|
538
|
+
export { ADDED_ROWS, type AgentPresetReaConfig, type AgentPresetReaConfigFields, BUNDLED_SKILL_ROOT, CONFIG_DELTAS, type CommandRunner, Config, DEFAULT_MCP_COMMAND, INPUT_SCHEMA_PROFILES, INSTALL_PHASES, type InstallDto, type InstalledEntry, type JobActionDto, type JobBoard, JobCancelled, type JobDeps, type JobDto, type JobKind, type JobOperation, type JobOverrides, type JobProgressDto, type JobSnapshot, type JobState, type JobTaskContext, type ManagerPaths, type McpDto, type McpLaunch, NPM, OUTPUT_SCHEMA_PROFILES, PLAN_MODE_SECTION, type PresetRegistrar, REA_INSTALL_DIR, REA_PACKAGE, REA_PINNED_VERSION, REA_PRESET_ID, REA_SKILL_DIR, REA_SKILL_NAME, REVERSE_DEFAULT_REPO, REVERSE_DIR, REVERSE_PHASES, REVERSE_TREE_DIR, ROUTE_BASE, type ReaInstall, type ReaManager, type ReverseManifest, type ReversePaths, type ReverseSkillDto, type ReverseState, type RuntimeSnapshot, SETTINGS_NS, SKILL_PHASES, type SkillDto, type SkillManifest, type SkillState, type StatusDto, type Unregister, apply, configWith, createJobBoard, createManager, createPresetRegistrar, discoverSkillGroups, emptyRuntime, inject, managerPaths, name, npmEnv, presetSkillDirs, probeInstall, probeReverse, probeRuntime, probeSkill, reaMcpArgs, reaMcpEnv, reaMcpLaunch, reaPresetDefinition, reaSkillDirs, registerReaRoutes, reversePaths, reverseSkillDirs, runReverseSkillJob, safeVersion, spawnRunner, statusPayload };
|