@qing3a/flow-rpa-engine 0.5.2 → 0.5.7

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/dist/record.js CHANGED
@@ -14,6 +14,11 @@ export function fromFlowResult(runId, flowId, flowVersion, r, startedAt, keyword
14
14
  ...(owner ? { owner } : {}),
15
15
  startedAt,
16
16
  steps: r.steps.map((s) => stepToRecord(s, keywords)),
17
+ ...(r.status === 'paused' && r.pausedAt ? { pausedAt: r.pausedAt } : {}),
18
+ ...(r.status === 'paused' && r.pauseReason ? { pauseReason: r.pauseReason } : {}),
19
+ ...(r.status === 'paused' && r.resumeStepIndex !== undefined ? { resumeStepIndex: r.resumeStepIndex } : {}),
20
+ ...(r.status === 'paused' && r.resumeLoopIter !== undefined ? { resumeLoopIter: r.resumeLoopIter } : {}),
21
+ ...(r.status === 'paused' && r.resumeLoopSub !== undefined ? { resumeLoopSub: r.resumeLoopSub } : {}),
17
22
  };
18
23
  }
19
24
  /**
@@ -34,6 +39,12 @@ export function fromEvents(runId, flowId, flowVersion, events, meta) {
34
39
  ...(meta.owner ? { owner: meta.owner } : {}),
35
40
  startedAt: meta.startedAt,
36
41
  steps,
42
+ ...(meta.pausedAt ? { pausedAt: meta.pausedAt } : {}),
43
+ ...(meta.pauseReason ? { pauseReason: meta.pauseReason } : {}),
44
+ ...(meta.resumeStepIndex !== undefined ? { resumeStepIndex: meta.resumeStepIndex } : {}),
45
+ ...(meta.resumeLoopIter !== undefined ? { resumeLoopIter: meta.resumeLoopIter } : {}),
46
+ ...(meta.resumeLoopSub !== undefined ? { resumeLoopSub: meta.resumeLoopSub } : {}),
47
+ ...(meta.vars && Object.keys(meta.vars).length > 0 ? { vars: meta.vars } : {}),
37
48
  };
38
49
  }
39
50
  function stepToRecord(s, keywords) {
@@ -50,6 +61,7 @@ function stepToRecord(s, keywords) {
50
61
  count: s.count,
51
62
  selectorHit: s.selectorHit,
52
63
  cooldownKey: s.cooldownKey,
64
+ region: s.region,
53
65
  };
54
66
  }
55
67
  function verifyToRecord(v, keywords) {
@@ -1 +1 @@
1
- {"version":3,"file":"record.js","sourceRoot":"","sources":["../src/record.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"record.js","sourceRoot":"","sources":["../src/record.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * 区域模块(T014 P0-2 统一登录判定 + 区域置信度门槛)。
3
+ *
4
+ * 职责:
5
+ * - 登录区判定「双重特征」统一实现(路由特征 + 页面文本强标记),供 executor 每步前置检查
6
+ * 与 CdpPage 点击后突变检查共用——避免 isLoginRoute 双实现漂移(T013 §3.3 / §5b)。
7
+ * - 区域置信度门槛(region seen ≥3 才参与寻址;行为档案 regions 统计消费)。
8
+ * - 引擎核心模块(无 cdp 依赖);isLoginRoute 从 cdp/page.ts 上移至此(page.ts 再导出保兼容)。
9
+ */
10
+ /** 登录路由特征(T005 P0-2 定案:/login /passport /captcha /web/user/ 等平台无关特征词)。
11
+ * 与 cdp/page.ts 原实现逐字一致(上移统一,测试断言依赖原文案)。 */
12
+ export declare function isLoginRoute(route: string): boolean;
13
+ /**
14
+ * 登录页强文本标记(T013 §3.3 双重特征第二信号;2026-08-29 实探校准):
15
+ * 只在登录页表单出现的短语(「验证码登录」「安全登录」「手机号登录」等)。
16
+ * 正常页头部「登录/注册」按钮、详情面板「微信扫码分享」等不含这些短语——防误报
17
+ * (zhipin 求职页未登录也可浏览职位列表与详情,实测 1548 字文本无任一强标记)。
18
+ */
19
+ export declare const LOGIN_TEXT_MARKERS: readonly ["验证码登录", "手机号登录", "密码登录", "安全登录", "扫描二维码登录", "注册并登录"];
20
+ /** 页面文本是否登录页形态(含任一强标记) */
21
+ export declare function isLoginLikeText(text: string): boolean;
22
+ /**
23
+ * 登录区判定(双重特征统一实现):路由特征 OR 页面文本强标记,任一命中即登录区。
24
+ * 输入由调用方提供(currentUrl + pageText),本函数纯逻辑(可单测,无页面依赖)。
25
+ */
26
+ export declare function isLoginSignal(url: string, text: string): boolean;
27
+ /** 区域置信度门槛:行为档案 regions seen ≥3 才参与寻址(监督层预审 ④;T013 §6.3 决策点 4 落地) */
28
+ export declare const REGION_MIN_SEEN = 3;
29
+ /** 登录区标签(区域框架统一表达:P0-1 步骤区域判定/run.json region 字段用) */
30
+ export declare const REGION_LOGIN_LABEL = "\u767B\u5F55\u533A";
package/dist/region.js ADDED
@@ -0,0 +1,39 @@
1
+ /**
2
+ * 区域模块(T014 P0-2 统一登录判定 + 区域置信度门槛)。
3
+ *
4
+ * 职责:
5
+ * - 登录区判定「双重特征」统一实现(路由特征 + 页面文本强标记),供 executor 每步前置检查
6
+ * 与 CdpPage 点击后突变检查共用——避免 isLoginRoute 双实现漂移(T013 §3.3 / §5b)。
7
+ * - 区域置信度门槛(region seen ≥3 才参与寻址;行为档案 regions 统计消费)。
8
+ * - 引擎核心模块(无 cdp 依赖);isLoginRoute 从 cdp/page.ts 上移至此(page.ts 再导出保兼容)。
9
+ */
10
+ /** 登录路由特征(T005 P0-2 定案:/login /passport /captcha /web/user/ 等平台无关特征词)。
11
+ * 与 cdp/page.ts 原实现逐字一致(上移统一,测试断言依赖原文案)。 */
12
+ export function isLoginRoute(route) {
13
+ const slash = route.indexOf('/');
14
+ const path = slash >= 0 ? route.slice(slash) : route;
15
+ return /\/login|\/passport|\/captcha|\/web\/user\//i.test(path);
16
+ }
17
+ /**
18
+ * 登录页强文本标记(T013 §3.3 双重特征第二信号;2026-08-29 实探校准):
19
+ * 只在登录页表单出现的短语(「验证码登录」「安全登录」「手机号登录」等)。
20
+ * 正常页头部「登录/注册」按钮、详情面板「微信扫码分享」等不含这些短语——防误报
21
+ * (zhipin 求职页未登录也可浏览职位列表与详情,实测 1548 字文本无任一强标记)。
22
+ */
23
+ export const LOGIN_TEXT_MARKERS = ['验证码登录', '手机号登录', '密码登录', '安全登录', '扫描二维码登录', '注册并登录'];
24
+ /** 页面文本是否登录页形态(含任一强标记) */
25
+ export function isLoginLikeText(text) {
26
+ return LOGIN_TEXT_MARKERS.some((m) => text.includes(m));
27
+ }
28
+ /**
29
+ * 登录区判定(双重特征统一实现):路由特征 OR 页面文本强标记,任一命中即登录区。
30
+ * 输入由调用方提供(currentUrl + pageText),本函数纯逻辑(可单测,无页面依赖)。
31
+ */
32
+ export function isLoginSignal(url, text) {
33
+ return isLoginRoute(url) || isLoginLikeText(text);
34
+ }
35
+ /** 区域置信度门槛:行为档案 regions seen ≥3 才参与寻址(监督层预审 ④;T013 §6.3 决策点 4 落地) */
36
+ export const REGION_MIN_SEEN = 3;
37
+ /** 登录区标签(区域框架统一表达:P0-1 步骤区域判定/run.json region 字段用) */
38
+ export const REGION_LOGIN_LABEL = '登录区';
39
+ //# sourceMappingURL=region.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"region.js","sourceRoot":"","sources":["../src/region.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;6CAC6C;AAC7C,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAChC,MAAM,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IACpD,OAAO,6CAA6C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACjE,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAU,CAAA;AAEjG,0BAA0B;AAC1B,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AACzD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,IAAY;IACrD,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,CAAA;AACnD,CAAC;AAED,qEAAqE;AACrE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAA;AAEhC,sDAAsD;AACtD,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAA"}
package/dist/validate.js CHANGED
@@ -70,6 +70,29 @@ export function validate(flow) {
70
70
  return flowInvalidError('嵌套 loop 暂不支持');
71
71
  }
72
72
  }
73
+ // T014 P0-3/阶段 2:click/wait/extract 的 region 与 selector/ms/coolMs 互斥(都缺省=报错、都提供=fail-loud)
74
+ if (s.type === 'click' || s.type === 'wait' || s.type === 'extract') {
75
+ const p = (s.params ?? {});
76
+ const hasRegion = typeof p.region === 'string' && p.region.length > 0;
77
+ if (s.type === 'wait') {
78
+ const hasMs = typeof p.ms === 'number' || p.coolMs !== undefined;
79
+ if (hasRegion && hasMs) {
80
+ return flowInvalidError(`wait 步骤 ${s.id} 的 region 与 ms/coolMs 互斥(只提供一个)`);
81
+ }
82
+ if (!hasRegion && !hasMs && p.coolKey === undefined) {
83
+ return flowInvalidError(`wait 步骤 ${s.id} 缺少参数(region 或 ms/coolMs)`);
84
+ }
85
+ }
86
+ else {
87
+ const hasSelector = typeof p.selector === 'string' || Array.isArray(p.selector);
88
+ if (hasRegion && hasSelector) {
89
+ return flowInvalidError(`${s.type} 步骤 ${s.id} 的 region 与 selector 互斥(只提供一个)`);
90
+ }
91
+ if (!hasRegion && !hasSelector) {
92
+ return flowInvalidError(`${s.type} 步骤 ${s.id} 缺少参数(selector 或 region)`);
93
+ }
94
+ }
95
+ }
73
96
  }
74
97
  return null;
75
98
  }
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qing3a/flow-rpa-engine",
3
- "version": "0.5.2",
3
+ "version": "0.5.7",
4
4
  "engines": {
5
5
  "node": ">=20"
6
6
  },
@@ -39,3 +39,4 @@
39
39
  "@types/ws": "^8.18.1"
40
40
  }
41
41
  }
42
+