@qing3a/flow-rpa-app 0.4.3 → 0.4.5

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 CHANGED
@@ -2,43 +2,71 @@
2
2
 
3
3
  flow-rpa 是本地 RPA 引擎:解释执行**流程定义**(JSON 数据),拟人化操作用户本地的浏览器(CDP),
4
4
  产生结构化执行记录。**使用者是用户的 Agent**:用户只给一句话 + 本包名,Agent 按下面序列自举,
5
- 人工只做「引擎浏览器登录一次」。
5
+ 人工只做「首次跑流程时在引擎弹出的浏览器里登录目标平台一次」。
6
6
 
7
- ## 安装与自举(Agent 按序执行)
7
+ ## 给用户的一句话引导语(复制即用)
8
8
 
9
- ```bash
10
- # 1. 安装(公共 npm;镜像同步延迟时加 --registry=https://registry.npmjs.org
11
- npm i -g @qing3a/flow-rpa-app
9
+ > 帮我 [一句话任务]。用本地 RPA 引擎 `@qing3a/flow-rpa-app` 执行:如果没装,先
10
+ > `npm i -g @qing3a/flow-rpa-app --registry=https://registry.npmjs.org`,装完读包内 README 和
11
+ > `skill/flow-rpa-engine.md` 自举;首次跑流程时引擎会自动弹出专用浏览器,我会在里面登录一次目标平台。
12
12
 
13
- # 2. 初始化(创建数据/流程目录 + 引导)
13
+ > 说明:不要用 npmjs.com 网页 URL 抓取文档(网页抓取常失败);直接执行上面的安装命令,
14
+ > 装完后从**包内**读 README 与 skill(`node_modules/@qing3a/flow-rpa-app/` 下,或用 `flow-app install-skill`)。
15
+
16
+ ## 安装与自举(Agent 按序执行,Windows PowerShell 环境默认)
17
+
18
+ ```powershell
19
+ # 1. 安装(公共 npm;成功标志 = 输出 "added N packages";npm 的 stderr 升级通知可忽略)
20
+ npm i -g @qing3a/flow-rpa-app --registry=https://registry.npmjs.org
21
+
22
+ # 2. 初始化(创建数据/流程目录 + 引导;**装完自带 1 个 starter 流程 boss_search_jobs**,init 自动复制到 flows/)
14
23
  flow-app init
15
24
 
16
- # 3. 体检(目录/流程解析/Edge/锁)——必须通过项:目录、流程解析、无警告、锁;
17
- # 平台未配置项可忽略(仅影响观察/流程同步,本地模式正常使用)
18
- flow-app doctor
25
+ # 3. 体检(✅ 通过 / ⚠️ 可忽略 / ❌ 阻断;仅 ❌ 退出码非 0)
26
+ # 可先单独体检 Edge 项:
27
+ flow-app doctor --edge "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
28
+ # 平台未配置/空流程/Edge 未配置均属 ⚠️ 可忽略(本地模式正常)
19
29
 
20
- # 4. 启动常驻服务(--http-port 可改;--edge 必填:从零环境无 9222 调试实例时引擎靠它拉起专用浏览器)
21
- flow-app --http --http-port 3111 --flows <流程目录> --data <数据目录> --edge "<Edge 可执行文件路径>"
22
- # Windows 默认路径示例:C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe
23
- # 替代:外部已用 --remote-debugging-port=9222 拉起 Edge 时可省略 --edge(引擎复用调试实例)
30
+ # 4. 启动常驻服务(--edge 必填:从零环境无 9222 调试实例时引擎靠它拉起专用浏览器)
31
+ # PowerShell 专属写法(引号内的空格/括号不会被拆坏):
32
+ $edge = "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
33
+ flow-app --http --http-port 3111 --flows <流程目录> --data <数据目录> --edge $edge
34
+ # 或外部已用 --remote-debugging-port=9222 拉起 Edge 时可省略 --edge(引擎复用调试实例)
24
35
 
25
- # 5. 挂引擎级 skill 到 Agent 平台的 skills 目录(幂等,带版本标注)
36
+ # 5. 挂引擎级 skill 到 Agent 平台的 skills 目录(幂等,带版本标注 + SKILL.md 结构)
26
37
  flow-app install-skill <你的 skills 目录>
27
38
  ```
28
39
 
29
40
  - **MCP 地址**:`http://127.0.0.1:3111/mcp`(`--http-port` 可改)
30
- - **状态页**:`http://127.0.0.1:3111/status.json`(只读:版本/浏览器连接/队列/锁/流程列表)
31
- - 已装好/已连上的:直接跳过安装,用 `get_status` 预检后跑流程(详见包内 skill)
41
+ - **健康检查**:`GET http://127.0.0.1:3111/status.json`(不需要 Accept 头)
42
+ - **MCP 握手**:POST /mcp 需带 `Accept: application/json, text/event-stream`(缺头返回 406 及说明体)
43
+ - **正常初始状态**:未跑流程前 `status.json` 的 `browser.connected=false`、`flows=[]` 均为正常——
44
+ 浏览器是懒加载的(首次 `run_flow` 才弹出),流程需先获取(见下节)
45
+ - **要求 Node ≥ 20**(package.json engines 声明)
46
+
47
+ ## 流程包获取
48
+
49
+ 本包**内置 1 个 starter 流程**:`boss_search_jobs`(v6,BOSS 搜索职位)——`flow-app init` 首次初始化自动复制到 `flows/`(同名已存在则跳过,不覆盖用户/`pkg_update` 版本)。更多流程从协作平台 md-forge 获取:
50
+
51
+ - **发布源**:`https://md-forge-3774306-1256846151.ap-shanghai.run.tcloudbase.com`
52
+ - **示例**:`boss_search_jobs`(v6,BOSS 搜索职位)
53
+ - **方式**:配置平台后 `flow-app` 的 `pkg_update` 工具自动拉取(manifest → 版本比对 → 下载 → 哈希校验 → 替换本地 `flows/<name>/`)
54
+ - **平台凭据**:`--platform-url <url> --platform-token <token>`(token 由 owner 提供,**不写死在包内/文档**)
55
+ - **手工**:也可把流程包直接放入 `flows/` 目录(结构见 `flow-app validate <flow.json>`)
32
56
 
33
57
  ## Skill 位置
34
58
 
35
59
  - 包内:`skill/flow-rpa-engine.md`(引擎能力说明书:13 个 MCP 工具签名、调用规则、失败处理)
36
- - `flow-app install-skill <dir>` 自动拷贝到目标目录并标注版本;也可直接从 npm 包目录读
60
+ - `flow-app install-skill <dir>` 写入 `<dir>/flow-rpa-engine/SKILL.md`(SKILL.md 子目录结构,主流平台自动发现)
61
+ + 平铺 `<dir>/flow-rpa-engine.md`(兼容);若平台不识别子目录,按平铺路径引用
62
+ - 也可直接从 npm 包目录读:`node_modules/@qing3a/flow-rpa-app/skill/flow-rpa-engine.md`
37
63
 
38
- ## 首次使用(唯一人工步骤)
64
+ ## 首次登录(唯一人工步骤)
39
65
 
40
- 引擎用**专用浏览器(独立 profile)**:第一次跑流程前需人工登录目标平台一次。
41
- **用户日常浏览器登录 引擎已登录**(profile 隔离);未登录时报「登录页/未登录」,人工登录后再跑。
66
+ - 引擎用**专用浏览器(独立 profile)**,**懒加载**:`run_flow` 首次需要开页面时才弹出浏览器窗口
67
+ - **登录时机**:首次跑流程 引擎弹出浏览器并导航到目标平台 → **在弹窗里登录一次**
68
+ (不是启动服务时登录——启动后不会有窗口弹出)
69
+ - **用户日常浏览器登录 ≠ 引擎已登录**(profile 隔离);未登录时报「登录页/未登录」,登录后重跑
42
70
 
43
71
  ## 安全边界
44
72
 
@@ -54,3 +82,9 @@ flow-app install-skill <你的 skills 目录>
54
82
  (核心执行)+ `list_suggestions` / `apply_suggestion` / `dismiss_suggestion`(学习与建议)
55
83
  + `export_observation` / `sync_pending_uploads` / `get_perf` / `pkg_update`(运维,仅 owner)。
56
84
  签名与调用规则见包内 `skill/flow-rpa-engine.md`。
85
+
86
+ ## 其它 CLI
87
+
88
+ - `flow-app --help` / `--version`:用法 / 版本
89
+ - `flow-app unlock`:清理过期/残留单实例锁(pid 已死的死锁;存活实例的锁不动)
90
+ - `flow-app list` / `validate <flow.json>`:流程查看 / 校验
package/dist/cli.d.ts CHANGED
@@ -38,19 +38,33 @@ export declare function parseCli(argv: string[]): CliOptions;
38
38
  /** 从 CLI 选项构造 RunConfig(含环境变量兜底 + 平台配置持久化自动加载) */
39
39
  export declare function configFromCli(opts: CliOptions): RunConfig;
40
40
  /**
41
- * `flow-app init`:首启引导——创建 flows/data 目录 + 提示下一步(USAGE-ISSUES #1 教训:装完 list 空无引导)。
42
- * 幂等:目录已存在则跳过创建,只提示。
41
+ * `flow-app init`:首启引导——创建 flows/data 目录 + 复制内置 starter 流程 + 提示下一步
42
+ * (USAGE-ISSUES #1 教训:装完 list 空无引导;T004 P1-5:内置 starter 流程)。
43
+ * 幂等:目录已存在则跳过创建;starter 复制同名跳过(不覆盖用户/pkg_update 版本)。
43
44
  */
44
45
  export declare function runInit(opts: CliOptions): void;
46
+ /** 体检报告行(T002 #3 三级口径:✅ 通过 / ⚠️ 可忽略 / ❌ 阻断) */
47
+ export interface DoctorLine {
48
+ mark: '✅' | '⚠️' | '❌';
49
+ label: string;
50
+ detail: string;
51
+ }
52
+ /** doctor 体检(纯函数,可单测):返回报告行 + 退出码(仅 ❌ 令退出码非 0) */
53
+ export declare function doctorReport(opts: CliOptions): {
54
+ lines: DoctorLine[];
55
+ exitCode: number;
56
+ };
45
57
  /**
46
58
  * `flow-app doctor`:体检——flows/data 目录、流程可解析、平台配置、Edge 路径、单实例锁。
47
- * 输出 ✅/❌/⚠️ 清单;发现严重问题退出码 1(供脚本/Agent 判断)。
59
+ * 三级口径(T002 #3):✅ 通过 / ⚠️ 可忽略(不阻塞)/ ❌ 阻断(令退出码非 0)。
48
60
  */
49
61
  export declare function runDoctor(opts: CliOptions): void;
50
62
  /**
51
63
  * M11c D-K2:install-skill —— 拷贝引擎级 skill 到 Agent 平台的 skills 目录。
52
64
  * skill 内容来自包内 skill/flow-rpa-engine.md(构建时从 docs/SKILL-ENGINE.md 复制,唯一真源)。
53
65
  * D-K3:拷贝时在文件头写引擎版本(v<version>),供 Agent 侧判断是否需要更新。
66
+ * T002 #8:主流平台 skills 目录为「每技能一个子目录 + SKILL.md」——默认写 <dir>/flow-rpa-engine/SKILL.md
67
+ * (含 YAML frontmatter:name/description),同时保留 <dir>/flow-rpa-engine.md 平铺(向后兼容,不破坏既有用法)。
54
68
  * 幂等:直接覆盖(重复安装安全)。
55
69
  */
56
70
  export declare function installSkill(targetDir: string): void;
package/dist/cli.js CHANGED
@@ -1,11 +1,12 @@
1
1
  import { parseArgs } from 'node:util';
2
- import { readFileSync, existsSync, mkdirSync, copyFileSync, writeFileSync } from 'node:fs';
2
+ import { readFileSync, existsSync, mkdirSync, copyFileSync, writeFileSync, readdirSync, statSync } from 'node:fs';
3
3
  import { homedir } from 'node:os';
4
4
  import { join, dirname } from 'node:path';
5
5
  import { fileURLToPath } from 'node:url';
6
6
  import { parseFlow } from '@qing3a/flow-rpa-engine/src/validate.js';
7
7
  import { FlowRegistry } from './registry.js';
8
8
  import { defaultRunConfig, resolvePlatformConfig } from './config.js';
9
+ import { forceUnlock, lockState } from './runner.js';
9
10
  /** D-N3:缺省目录(本地开发 → 仓库根;全局 → ~/.flow-rpa) */
10
11
  export function defaultDirs() {
11
12
  const home = process.env.FLOW_RPA_HOME;
@@ -75,8 +76,9 @@ export function configFromCli(opts) {
75
76
  return config;
76
77
  }
77
78
  /**
78
- * `flow-app init`:首启引导——创建 flows/data 目录 + 提示下一步(USAGE-ISSUES #1 教训:装完 list 空无引导)。
79
- * 幂等:目录已存在则跳过创建,只提示。
79
+ * `flow-app init`:首启引导——创建 flows/data 目录 + 复制内置 starter 流程 + 提示下一步
80
+ * (USAGE-ISSUES #1 教训:装完 list 空无引导;T004 P1-5:内置 starter 流程)。
81
+ * 幂等:目录已存在则跳过创建;starter 复制同名跳过(不覆盖用户/pkg_update 版本)。
80
82
  */
81
83
  export function runInit(opts) {
82
84
  const { flowsDir, dataDir } = opts;
@@ -88,59 +90,134 @@ export function runInit(opts) {
88
90
  console.error(`✗ 创建目录失败: ${e instanceof Error ? e.message : String(e)}`);
89
91
  process.exit(1);
90
92
  }
93
+ // T004 P1-5:内置 starter 流程复制(包根 starter/ → flows/,同名已存在则跳过)
94
+ try {
95
+ const starterDir = join(dirname(fileURLToPath(import.meta.url)), '..', 'starter'); // dist/ → 包根/starter
96
+ if (existsSync(starterDir)) {
97
+ for (const sub of readdirSync(starterDir)) {
98
+ const src = join(starterDir, sub);
99
+ if (!statSync(src).isDirectory())
100
+ continue;
101
+ const dst = join(flowsDir, sub);
102
+ if (existsSync(dst)) {
103
+ console.log(`⏭ 已存在流程 ${sub}(保留现有版本,不覆盖)`);
104
+ continue;
105
+ }
106
+ mkdirSync(dst, { recursive: true });
107
+ for (const f of readdirSync(src)) {
108
+ copyFileSync(join(src, f), join(dst, f));
109
+ }
110
+ console.log(`✓ 已内置流程: ${sub}(starter 快照)`);
111
+ }
112
+ }
113
+ }
114
+ catch (e) {
115
+ console.log(`⚠️ 内置流程复制跳过: ${e instanceof Error ? e.message : String(e)}`);
116
+ }
91
117
  console.log(`✓ 已就绪: flows 目录 ${flowsDir}`);
92
118
  console.log(`✓ 已就绪: data 目录 ${dataDir}`);
93
119
  console.log('');
94
120
  console.log('flow-rpa 已初始化。下一步:');
95
- console.log(' 1. 安装流程包:把流程包放入 flows/ 目录(或配置 platform-url 后自动同步)');
96
- console.log(' 2. 查看流程:flow-app list');
97
- console.log(' 3. 启动 MCP 服务:flow-app --http --http-port 3111(Agent 通过 MCP 调用)');
98
- console.log(' 4. 体检:flow-app doctor');
121
+ console.log(' 1. 查看流程:flow-app list(装完自带 1 starter 流程 boss_search_jobs)');
122
+ console.log(' 2. 体检:flow-app doctor --edge "<Edge 可执行文件路径>"');
123
+ console.log(' 3. 启动 MCP 服务:flow-app --http --http-port 3111 --edge "<Edge 可执行文件路径>"');
124
+ console.log(' (--edge 必填:从零环境引擎靠它拉起专用浏览器;Windows 默认路径示例:');
125
+ console.log(' C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe)');
126
+ console.log(' 4. 安装更多流程包:配置 platform-url 后 pkg_update,或把流程包放入 flows/ 目录');
99
127
  }
100
- /**
101
- * `flow-app doctor`:体检——flows/data 目录、流程可解析、平台配置、Edge 路径、单实例锁。
102
- * 输出 ✅/❌/⚠️ 清单;发现严重问题退出码 1(供脚本/Agent 判断)。
103
- */
104
- export function runDoctor(opts) {
128
+ /** doctor 体检(纯函数,可单测):返回报告行 + 退出码(仅 ❌ 令退出码非 0) */
129
+ export function doctorReport(opts) {
130
+ const lines = [];
105
131
  let exitCode = 0;
106
- const check = (ok, label, detail = '') => {
107
- const mark = ok ? '✅' : '❌';
108
- console.log(`${mark} ${label}${detail ? '' + detail : ''}`);
109
- if (!ok)
132
+ const line = (mark, label, detail = '') => {
133
+ lines.push({ mark, label, detail });
134
+ if (mark === '')
110
135
  exitCode = 1;
111
136
  };
112
- console.log(`== flow-app doctor(${process.version})==`);
113
- check(existsSync(opts.flowsDir), `flows 目录存在`, opts.flowsDir);
114
- check(existsSync(opts.dataDir), `data 目录存在`, opts.dataDir);
137
+ // 阻断项:目录缺失
138
+ if (!existsSync(opts.flowsDir)) {
139
+ line('❌', 'flows 目录存在', `${opts.flowsDir} 不存在(先 flow-app init)`);
140
+ }
141
+ else {
142
+ line('✅', 'flows 目录存在', opts.flowsDir);
143
+ }
144
+ if (!existsSync(opts.dataDir)) {
145
+ line('❌', 'data 目录存在', `${opts.dataDir} 不存在(先 flow-app init)`);
146
+ }
147
+ else {
148
+ line('✅', 'data 目录存在', opts.dataDir);
149
+ }
150
+ // 流程:空 = 正常初始态(⚠️ 提示流程包获取)
115
151
  if (existsSync(opts.flowsDir)) {
116
152
  const reg = new FlowRegistry(opts.flowsDir);
117
153
  const flows = reg.list();
118
- check(flows.length > 0, `流程可解析(${flows.length} 个)`, flows.length > 0 ? flows.map((f) => f.id).join(', ') : 'flows/ 下无 flow.json');
154
+ if (flows.length === 0) {
155
+ line('⚠️', '流程可解析(0 个)', '正常初始状态——安装流程包或配置 platform-url 后 pkg_update(README「流程包获取」)');
156
+ }
157
+ else {
158
+ line('✅', `流程可解析(${flows.length} 个)`, flows.map((f) => f.id).join(', '));
159
+ }
119
160
  const warnings = reg.warnings();
120
- check(warnings.length === 0, '流程定义无警告', warnings.length > 0 ? warnings.join('; ') : '');
161
+ if (warnings.length > 0) {
162
+ line('⚠️', '流程定义有警告', warnings.join('; '));
163
+ }
164
+ else if (flows.length > 0) {
165
+ line('✅', '流程定义无警告');
166
+ }
121
167
  }
168
+ // 平台:未配置 = 可忽略(本地模式)
122
169
  try {
123
170
  const resolved = resolvePlatformConfig(opts.dataDir, opts.platformUrl ?? '', opts.platformToken ?? '');
124
- check(resolved.url.length > 0, '平台已配置', resolved.url.length > 0 ? resolved.url : '未配置(观察/流程同步需 platform-url)');
171
+ if (resolved.url.length > 0) {
172
+ line('✅', '平台已配置', resolved.url);
173
+ }
174
+ else {
175
+ line('⚠️', '平台已配置', '未配置——本地模式正常使用(观察/流程同步需 platform-url + platform-token)');
176
+ }
125
177
  }
126
178
  catch {
127
- check(false, '平台配置解析', 'platform.json 损坏');
179
+ line('⚠️', '平台配置解析', 'platform.json 损坏(可忽略,本地模式正常)');
128
180
  }
129
- check(!!opts.edgePath, 'Edge 可执行文件', opts.edgePath || '未配置(--edge)');
181
+ // Edge:显式配置 ✅;未配置 ⚠️(外部 9222 复用可跑;从零自举建议 --edge)
182
+ if (opts.edgePath) {
183
+ line('✅', 'Edge 可执行文件', opts.edgePath);
184
+ }
185
+ else {
186
+ line('⚠️', 'Edge 可执行文件', '未配置(--edge)——从零自举建议显式指定;若外部已开 9222 调试实例可省略');
187
+ }
188
+ // 单实例锁:held = 阻断;死锁/损坏 = ⚠️(可 unlock 清理)
130
189
  try {
131
- const lockFile = join(opts.dataDir, '.lock');
132
- const locked = existsSync(lockFile);
133
- check(!locked, '单实例锁', locked ? 'data/.lock 存在(引擎可能正在运行,或残留需清理)' : '无锁(可启动引擎)');
190
+ const st = lockState(opts.dataDir);
191
+ if (st === 'held') {
192
+ line('❌', '单实例锁', 'data/.lock 被另一存活实例持有——先退出该实例再启动');
193
+ }
194
+ else if (st === 'free') {
195
+ line('✅', '单实例锁', '无锁(可启动引擎)');
196
+ }
197
+ else {
198
+ line('⚠️', '单实例锁', 'data/.lock 损坏——可 flow-app unlock 清理');
199
+ }
134
200
  }
135
201
  catch {
136
- check(false, '单实例锁检查', '无法读取 data 目录');
202
+ line('❌', '单实例锁检查', '无法读取 data 目录');
137
203
  }
204
+ return { lines, exitCode };
205
+ }
206
+ /**
207
+ * `flow-app doctor`:体检——flows/data 目录、流程可解析、平台配置、Edge 路径、单实例锁。
208
+ * 三级口径(T002 #3):✅ 通过 / ⚠️ 可忽略(不阻塞)/ ❌ 阻断(令退出码非 0)。
209
+ */
210
+ export function runDoctor(opts) {
211
+ console.log(`== flow-app doctor(${process.version})==`);
212
+ const { lines, exitCode } = doctorReport(opts);
213
+ for (const l of lines)
214
+ console.log(`${l.mark} ${l.label}${l.detail ? ' — ' + l.detail : ''}`);
138
215
  console.log('');
139
216
  if (exitCode === 0) {
140
- console.log('✓ 体检通过——flow-rpa 可正常使用');
217
+ console.log('✓ 体检通过——flow-rpa 可正常使用(⚠️ 项为可选项,不影响使用)');
141
218
  }
142
219
  else {
143
- console.log('✗ 发现上述问题,按提示修复后重跑 flow-app doctor');
220
+ console.log('✗ 发现阻断项(❌),修复后重跑 flow-app doctor;⚠️ 项可忽略');
144
221
  }
145
222
  if (exitCode !== 0)
146
223
  process.exit(exitCode);
@@ -149,6 +226,8 @@ export function runDoctor(opts) {
149
226
  * M11c D-K2:install-skill —— 拷贝引擎级 skill 到 Agent 平台的 skills 目录。
150
227
  * skill 内容来自包内 skill/flow-rpa-engine.md(构建时从 docs/SKILL-ENGINE.md 复制,唯一真源)。
151
228
  * D-K3:拷贝时在文件头写引擎版本(v<version>),供 Agent 侧判断是否需要更新。
229
+ * T002 #8:主流平台 skills 目录为「每技能一个子目录 + SKILL.md」——默认写 <dir>/flow-rpa-engine/SKILL.md
230
+ * (含 YAML frontmatter:name/description),同时保留 <dir>/flow-rpa-engine.md 平铺(向后兼容,不破坏既有用法)。
152
231
  * 幂等:直接覆盖(重复安装安全)。
153
232
  */
154
233
  export function installSkill(targetDir) {
@@ -168,13 +247,20 @@ export function installSkill(targetDir) {
168
247
  const header = `<!-- flow-rpa-engine skill v${version} · 由 flow-app install-skill 安装 · 覆盖安装幂等 -->\n`;
169
248
  // 幂等:已含本版本头部则跳过写头(覆盖内容)
170
249
  const final = body.startsWith('<!-- flow-rpa-engine skill v') ? body.replace(/^<!-- [^\n]*\n/, header) : header + body;
171
- mkdirSync(targetDir, { recursive: true });
172
- const dest = join(targetDir, 'flow-rpa-engine.md');
173
- writeFileSync(dest, final, 'utf8');
174
- console.log(`✓ 已安装 skill: ${dest}`);
250
+ // T002 #8:SKILL.md 结构(子目录 + YAML frontmatter,主流 Agent 平台自动发现)
251
+ const skillDir = join(targetDir, 'flow-rpa-engine');
252
+ mkdirSync(skillDir, { recursive: true });
253
+ const skillBody = final.replace(/^<!--[\s\S]*?-->\n?/, ''); // 去掉版本注释头(frontmatter 取代它)
254
+ const frontmatter = `---\nname: flow-rpa-engine\ndescription: flow-rpa 本地 RPA 引擎——MCP 13 工具调用说明书(流程执行/结果查询/建议处置)。首次使用/自举见「〇、首次使用/自举」。安装版本 v${version}。\nversion: ${version}\n---\n`;
255
+ const skMd = frontmatter + skillBody;
256
+ writeFileSync(join(skillDir, 'SKILL.md'), skMd, 'utf8');
257
+ // 平铺兼容(不破坏既有用法)
258
+ writeFileSync(join(targetDir, 'flow-rpa-engine.md'), final, 'utf8');
259
+ console.log(`✓ 已安装 skill: ${join(skillDir, 'SKILL.md')}`);
260
+ console.log(` (平铺兼容: ${join(targetDir, 'flow-rpa-engine.md')})`);
175
261
  console.log(` 引擎版本: v${version}`);
176
- console.log(' 说明:把引擎级 skill 放到 Agent 平台的 skills 目录(WorkBuddy ~/.agents/skills/、Claude ~/.claude/skills/),');
177
- console.log(' 或引用该文件路径。skill 内容真源是 docs/SKILL-ENGINE.md,随包版本更新。');
262
+ console.log(' 说明:主流平台按「技能子目录/SKILL.md」自动发现(WorkBuddy ~/.agents/skills/、Claude ~/.claude/skills/);');
263
+ console.log(' 若平台不识别子目录结构,请按平铺文件路径引用。skill 内容真源是 docs/SKILL-ENGINE.md,随包版本更新。');
178
264
  }
179
265
  /** CLI 子命令:list / validate / install-skill / init / doctor;返回 true 表示已处理(退出) */
180
266
  export function runCliCommand(opts) {
@@ -201,6 +287,11 @@ export function runCliCommand(opts) {
201
287
  runDoctor(opts);
202
288
  return true;
203
289
  }
290
+ if (cmd === 'unlock') {
291
+ // T002 #2:显式清锁(仅死锁/过期/损坏;held 不动,不破坏 D-R2)
292
+ console.log(forceUnlock(opts.dataDir));
293
+ return true;
294
+ }
204
295
  if (cmd === 'install-skill') {
205
296
  const target = opts.positionals?.[1];
206
297
  if (!target) {
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/http.js CHANGED
@@ -46,13 +46,13 @@ export async function serveHttp(opts) {
46
46
  const httpServer = createServer(async (req, res) => {
47
47
  // 可选 token 校验(非 /health)
48
48
  if (opts.token && req.url !== '/health' && !checkToken(req, opts.token)) {
49
- res.writeHead(401, { 'Content-Type': 'application/json' });
49
+ res.writeHead(401, { 'Content-Type': 'application/json; charset=utf-8' });
50
50
  res.end(JSON.stringify({ error: 'unauthorized' }));
51
51
  return;
52
52
  }
53
53
  // D-H3:健康检查(M11e 状态页复用)
54
54
  if (req.method === 'GET' && req.url === '/health') {
55
- res.writeHead(200, { 'Content-Type': 'application/json' });
55
+ res.writeHead(200, { 'Content-Type': 'application/json; charset=utf-8' });
56
56
  res.end(JSON.stringify({ ok: true, mode: 'http', port }));
57
57
  return;
58
58
  }
@@ -71,6 +71,47 @@ export async function serveHttp(opts) {
71
71
  // MCP 端点:stateless 模式(sessionIdGenerator: undefined)
72
72
  // SDK 约束:stateless 下每请求新建 Server + transport(不能共享 Server 连接多 transport)
73
73
  if (req.url === '/mcp' && (req.method === 'POST' || req.method === 'GET')) {
74
+ // P0-1(T004):SDK 的 JSON/SSE 响应头无 charset(application/json / text/event-stream),
75
+ // 中文可能被客户端按非 UTF-8 解析成乱码。这里给 res 打补丁:writeHead/setHeader 统一追加 charset=utf-8。
76
+ const origWriteHead = res.writeHead.bind(res);
77
+ const origSetHeader = res.setHeader.bind(res);
78
+ const ensureCharset = (ct) => {
79
+ if ((ct.startsWith('application/json') || ct.startsWith('text/event-stream') || ct.startsWith('text/plain')) && !ct.includes('charset')) {
80
+ return `${ct}; charset=utf-8`;
81
+ }
82
+ return ct;
83
+ };
84
+ res.writeHead = ((statusCode, statusMessage, headers) => {
85
+ // 大小写不敏感找 Content-Type(hono/Node 可能传 'content-type' 小写键)
86
+ const patchCt = (h) => {
87
+ const key = Object.keys(h).find((k) => k.toLowerCase() === 'content-type');
88
+ if (key && typeof h[key] === 'string')
89
+ h[key] = ensureCharset(h[key]);
90
+ };
91
+ if (typeof statusMessage === 'object' && statusMessage !== null) {
92
+ patchCt(statusMessage);
93
+ return origWriteHead(statusCode, statusMessage);
94
+ }
95
+ if (headers && typeof headers === 'object') {
96
+ patchCt(headers);
97
+ }
98
+ return origWriteHead(statusCode, headers);
99
+ });
100
+ res.setHeader = ((name, value) => {
101
+ if (String(name).toLowerCase() === 'content-type' && typeof value === 'string') {
102
+ return origSetHeader(name, ensureCharset(value));
103
+ }
104
+ return origSetHeader(name, value);
105
+ });
106
+ // T002 #13:Accept 头检查——MCP StreamableHTTP 要求 Accept: application/json, text/event-stream;
107
+ // 缺头时 SDK 返回 406 但响应体无可读信息(Agent 误判服务没起)。这里先拦截给可读说明。
108
+ const accept = String(req.headers.accept ?? '');
109
+ if (!accept.includes('application/json') && !accept.includes('text/event-stream')) {
110
+ res.writeHead(406, { 'Content-Type': 'text/plain; charset=utf-8' });
111
+ res.end('MCP StreamableHTTP 端点:请求需带 Accept: application/json, text/event-stream(如 POST http://127.0.0.1:3111/mcp)。' +
112
+ '服务健康检查请用 GET /status.json(不需要此头)。');
113
+ return;
114
+ }
74
115
  const transport = new StreamableHTTPServerTransport({
75
116
  sessionIdGenerator: undefined,
76
117
  });
@@ -101,7 +142,7 @@ export async function serveHttp(opts) {
101
142
  await transport.handleRequest(req, res, body);
102
143
  return;
103
144
  }
104
- res.writeHead(404, { 'Content-Type': 'text/plain' });
145
+ res.writeHead(404, { 'Content-Type': 'text/plain; charset=utf-8' });
105
146
  res.end('not found');
106
147
  });
107
148
  // 优雅退出:Ctrl-C / SIGTERM → 等待当前 run 落盘(D6 阶段5:中断不丢数据)→ 释放锁(D-H2 断言 3)
package/dist/http.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
package/dist/main.d.ts CHANGED
@@ -1,2 +1,6 @@
1
1
  #!/usr/bin/env node
2
- export {};
2
+ /** #1 前置参数识别(纯函数,可单测):--help/--version/未知参数 判定 */
3
+ export declare function detectPrelude(argv: string[]): {
4
+ kind: 'help' | 'version' | 'unknown' | 'none';
5
+ unknown: string[];
6
+ };