@qing3a/flow-rpa-engine 0.1.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.
Files changed (55) hide show
  1. package/dist/atomic.d.ts +9 -0
  2. package/dist/atomic.js +32 -0
  3. package/dist/atomic.js.map +1 -0
  4. package/dist/bench.d.ts +57 -0
  5. package/dist/bench.js +112 -0
  6. package/dist/bench.js.map +1 -0
  7. package/dist/cdp/client.d.ts +70 -0
  8. package/dist/cdp/client.js +272 -0
  9. package/dist/cdp/client.js.map +1 -0
  10. package/dist/cdp/page.d.ts +93 -0
  11. package/dist/cdp/page.js +411 -0
  12. package/dist/cdp/page.js.map +1 -0
  13. package/dist/executor.d.ts +122 -0
  14. package/dist/executor.js +399 -0
  15. package/dist/executor.js.map +1 -0
  16. package/dist/export.d.ts +128 -0
  17. package/dist/export.js +234 -0
  18. package/dist/export.js.map +1 -0
  19. package/dist/gate.d.ts +56 -0
  20. package/dist/gate.js +144 -0
  21. package/dist/gate.js.map +1 -0
  22. package/dist/hello.d.ts +5 -0
  23. package/dist/hello.js +13 -0
  24. package/dist/hello.js.map +1 -0
  25. package/dist/human.d.ts +162 -0
  26. package/dist/human.js +506 -0
  27. package/dist/human.js.map +1 -0
  28. package/dist/index.d.ts +20 -0
  29. package/dist/index.js +16 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/learning.d.ts +82 -0
  32. package/dist/learning.js +240 -0
  33. package/dist/learning.js.map +1 -0
  34. package/dist/mask.d.ts +32 -0
  35. package/dist/mask.js +70 -0
  36. package/dist/mask.js.map +1 -0
  37. package/dist/platform.d.ts +66 -0
  38. package/dist/platform.js +215 -0
  39. package/dist/platform.js.map +1 -0
  40. package/dist/record.d.ts +48 -0
  41. package/dist/record.js +42 -0
  42. package/dist/record.js.map +1 -0
  43. package/dist/schema.d.ts +130 -0
  44. package/dist/schema.js +93 -0
  45. package/dist/schema.js.map +1 -0
  46. package/dist/simprofile.d.ts +94 -0
  47. package/dist/simprofile.js +247 -0
  48. package/dist/simprofile.js.map +1 -0
  49. package/dist/storage.d.ts +63 -0
  50. package/dist/storage.js +138 -0
  51. package/dist/storage.js.map +1 -0
  52. package/dist/validate.d.ts +37 -0
  53. package/dist/validate.js +108 -0
  54. package/dist/validate.js.map +1 -0
  55. package/package.json +32 -0
package/dist/human.js ADDED
@@ -0,0 +1,506 @@
1
+ import { BASE_SIM, XorShift32 } from './simprofile.js';
2
+ export const point = (x, y) => ({ x, y });
3
+ /** 拟人操作错误 */
4
+ export class HumanError extends Error {
5
+ kind;
6
+ constructor(kind, message) {
7
+ super(message);
8
+ this.kind = kind;
9
+ this.name = 'HumanError';
10
+ }
11
+ static sink(msg) {
12
+ return new HumanError('sink', `CDP 命令失败: ${msg}`);
13
+ }
14
+ static timeout(op) {
15
+ return new HumanError('timeout', `${op} 超时`);
16
+ }
17
+ static stopped() {
18
+ return new HumanError('stopped', '操作已停止');
19
+ }
20
+ }
21
+ /* ---------------- 基础随机/数学(插件同款) ---------------- */
22
+ /** 插件: clamp(e,t,s){return Math.max(t,Math.min(s,e))} */
23
+ export function clamp(v, min, max) {
24
+ if (v < min)
25
+ return min;
26
+ if (v > max)
27
+ return max;
28
+ return v;
29
+ }
30
+ /** 插件: randBetween(e,t,s=Math.random){return e+s()*(t-e)} */
31
+ export function randBetween(a, b, rng) {
32
+ return a + rng() * (b - a);
33
+ }
34
+ /** 插件: sampleLogNormal —— Box-Muller 对数正态,clamp 8~600ms */
35
+ export function sampleLogNormal(median, sigma, rng) {
36
+ const mu = Math.log(Math.max(1, median));
37
+ let u1 = rng();
38
+ if (u1 === 0)
39
+ u1 = 1e-6; // JS `rng() || 1e-6`
40
+ let u2 = rng();
41
+ if (u2 === 0)
42
+ u2 = 1e-6;
43
+ const gauss = Math.sqrt(-2 * Math.log(u1)) * Math.cos(2 * Math.PI * u2);
44
+ const v = Math.exp(mu + sigma * gauss);
45
+ return clamp(Math.round(v), 8, 600);
46
+ }
47
+ /** 插件: easeInOut(e){return e*e*(3-2*e)} */
48
+ export function easeInOut(t) {
49
+ return t * t * (3 - 2 * t);
50
+ }
51
+ const sleep = (ms) => new Promise((r) => setTimeout(r, Math.max(0, Math.round(ms))));
52
+ /* ---------------- 键盘辅助 ---------------- */
53
+ /** 插件 getRandomErrorChar:键盘邻近错键表(1:1 复刻) */
54
+ const ERROR_MAP = {
55
+ a: ['q', 'w', 's', 'z'], b: ['v', 'g', 'h', 'n'], c: ['x', 'd', 'f', 'v'],
56
+ d: ['s', 'e', 'r', 'f', 'c', 'x'], e: ['w', 's', 'd', 'r'], f: ['d', 'r', 't', 'g', 'v', 'c'],
57
+ g: ['f', 't', 'y', 'h', 'b', 'v'], h: ['g', 'y', 'u', 'j', 'n', 'b'], i: ['u', 'j', 'k', 'o'],
58
+ j: ['h', 'u', 'i', 'k', 'm', 'n'], k: ['j', 'i', 'o', 'l', 'm'], l: ['k', 'o', 'p'],
59
+ m: ['n', 'j', 'k'], n: ['b', 'h', 'j', 'm'], o: ['i', 'k', 'l', 'p'],
60
+ p: ['o', 'l'], q: ['w', 'a'], r: ['e', 'd', 'f', 't'],
61
+ s: ['a', 'w', 'e', 'd', 'x', 'z'], t: ['r', 'f', 'g', 'y'], u: ['y', 'h', 'j', 'i'],
62
+ v: ['c', 'f', 'g', 'b'], w: ['q', 'a', 's', 'e'], x: ['z', 's', 'd', 'c'],
63
+ y: ['t', 'g', 'h', 'u'], z: ['a', 's', 'x'],
64
+ };
65
+ export function getRandomErrorChar(ch, rng) {
66
+ const lower = ch.toLowerCase();
67
+ const cands = ERROR_MAP[lower];
68
+ let pick;
69
+ if (cands) {
70
+ pick = cands[Math.floor(rng() * cands.length)];
71
+ }
72
+ else {
73
+ const fallback = ['x', 'v', 'n', 'm'];
74
+ pick = fallback[Math.floor(rng() * fallback.length)];
75
+ }
76
+ if (ch === ch.toUpperCase() && ch.toLowerCase() !== ch)
77
+ return pick.toUpperCase();
78
+ return pick;
79
+ }
80
+ /** 拟人操作器:持有 InputSink,行为参数来自 SimProfile(机器差异化) */
81
+ export class Human {
82
+ sink;
83
+ lastPos;
84
+ sim;
85
+ constructor(sink, sim) {
86
+ this.sink = sink;
87
+ this.sim = sim;
88
+ }
89
+ static withDefaultSim(sink) {
90
+ return new Human(sink, BASE_SIM);
91
+ }
92
+ /** 插件 assertPageOk 前置校验(forbidden scheme 检查) */
93
+ async assertPageOk() {
94
+ const url = String(await this.sink.evaluate('location.href').catch(() => '')).toLowerCase();
95
+ const forbidden = ['chrome://', 'edge://', 'about:', 'chrome-extension://', 'devtools://'];
96
+ if (forbidden.some((p) => url.startsWith(p))) {
97
+ throw HumanError.sink(`当前页面(${url})不支持调试协议 (forbidden scheme)`);
98
+ }
99
+ }
100
+ /** 插件 getViewport:Page.getLayoutMetrics.visualViewport,fallback 1440x900 */
101
+ async getViewport() {
102
+ try {
103
+ return await this.sink.viewport();
104
+ }
105
+ catch {
106
+ return [1440, 900];
107
+ }
108
+ }
109
+ /** 插件 U:坐标 clamp 到视口(输出四舍五入) */
110
+ static clampToViewport(p, w, h) {
111
+ return point(clamp(Math.round(p.x), 0, w), clamp(Math.round(p.y), 0, h));
112
+ }
113
+ checkStop(stop) {
114
+ if (stop?.stopped)
115
+ throw HumanError.stopped();
116
+ }
117
+ /** mouseMove 核心实现 */
118
+ async implMove(to, opts) {
119
+ const [w, h] = await this.getViewport();
120
+ const jitter = opts.jitter ?? this.sim.jitter;
121
+ const rng = opts.seed !== undefined ? seededRng(opts.seed) : rngTime();
122
+ let f = opts.from ?? this.lastPos;
123
+ if (!f) {
124
+ // 无起点:从目标偏移 startOffset 随机方向(插件行为)
125
+ const sx = randBetween(this.sim.startOffsetRange[0], this.sim.startOffsetRange[1], rng);
126
+ const sy = randBetween(this.sim.startOffsetRange[0], this.sim.startOffsetRange[1], rng);
127
+ const ox = (rng() < 0.5 ? -1 : 1) * sx;
128
+ const oy = (rng() < 0.5 ? -1 : 1) * sy;
129
+ f = point(to.x + ox, to.y + oy);
130
+ }
131
+ f = opts.clamp === false ? f : Human.clampToViewport(f, w, h);
132
+ const t = opts.clamp === false ? to : Human.clampToViewport(to, w, h);
133
+ const dx = t.x - f.x;
134
+ const dy = t.y - f.y;
135
+ const dist = Math.hypot(dx, dy);
136
+ const steps = clamp(Math.ceil(dist / 10), 6, 100);
137
+ for (let i = 1; i <= steps; i++) {
138
+ this.checkStop(opts.stop);
139
+ const wt = easeInOut(i / steps);
140
+ const x = f.x + dx * wt + randBetween(-jitter, jitter, rng);
141
+ const y = f.y + dy * wt + randBetween(-jitter, jitter, rng);
142
+ const [rx, ry] = [Math.round(x), Math.round(y)];
143
+ await this.sink.send('Input.dispatchMouseEvent', {
144
+ type: 'mouseMoved', x: rx, y: ry, pointerType: 'mouse', buttons: 0,
145
+ });
146
+ await sleep(sampleLogNormal(this.sim.moveMedianMs, this.sim.moveSigma, rng));
147
+ }
148
+ this.lastPos = t;
149
+ return t;
150
+ }
151
+ /** 插件 mouseMove(公共入口:可选超时) */
152
+ async mouseMove(to, opts = {}) {
153
+ const run = async () => this.implMove(to, opts);
154
+ if (opts.timeoutMs !== undefined) {
155
+ return withTimeout(run(), opts.timeoutMs, 'mouseMove');
156
+ }
157
+ return run();
158
+ }
159
+ /** mouseClick 核心 */
160
+ async implClick(at, opts) {
161
+ const [w, h] = await this.getViewport();
162
+ const target = opts.clamp === false ? at : Human.clampToViewport(at, w, h);
163
+ // 预移动:lastPos 距离 > 6px → 先移动(jitter 用 clickJitter)
164
+ const last = this.lastPos;
165
+ if (last === undefined || Math.hypot(last.x - target.x, last.y - target.y) > 6) {
166
+ this.checkStop(opts.stop);
167
+ await this.implMove(target, {
168
+ from: last, clamp: opts.clamp, jitter: this.sim.clickJitter, seed: opts.seed, stop: opts.stop,
169
+ });
170
+ }
171
+ // 悬停(插件 hoverRangeMs [150,400])
172
+ const [hMin, hMax] = opts.hoverRangeMs ?? this.sim.hoverRangeMs;
173
+ const rng = opts.seed !== undefined ? seededRng(opts.seed) : rngTime();
174
+ await sleep(randBetween(hMin, hMax, rng));
175
+ this.checkStop(opts.stop);
176
+ // 过冲(30% 概率,2~6px,随机方向)
177
+ const ovProb = opts.overshootProbability ?? this.sim.overshootProbability;
178
+ if (rng() < ovProb) {
179
+ const [oMin, oMax] = opts.overshootPx ?? this.sim.overshootPx;
180
+ const jx = (rng() < 0.5 ? -1 : 1) * randBetween(oMin, oMax, rng);
181
+ const jy = (rng() < 0.5 ? -1 : 1) * randBetween(oMin, oMax, rng);
182
+ const r = opts.clamp === false ? point(target.x + jx, target.y + jy) : Human.clampToViewport(point(target.x + jx, target.y + jy), w, h);
183
+ await this.sink.send('Input.dispatchMouseEvent', {
184
+ type: 'mouseMoved', x: Math.round(r.x), y: Math.round(r.y), pointerType: 'mouse', buttons: 0,
185
+ });
186
+ await sleep(sampleLogNormal(this.sim.overshootMedianMs, this.sim.overshootSigma, rng));
187
+ this.checkStop(opts.stop);
188
+ }
189
+ const [tx, ty] = [Math.round(target.x), Math.round(target.y)];
190
+ await this.sink.send('Input.dispatchMouseEvent', {
191
+ type: 'mouseMoved', x: tx, y: ty, pointerType: 'mouse', buttons: 0,
192
+ });
193
+ // 修饰键(插件 modBits:alt1/ctrl2/meta4/shift8)
194
+ const modBits = [['alt', 1], ['ctrl', 2], ['meta', 4], ['shift', 8]];
195
+ const modifiers = (opts.keyboard ?? []).reduce((sum, k) => {
196
+ const bit = modBits.find(([n]) => n === k)?.[1];
197
+ return bit === undefined ? sum : sum + bit;
198
+ }, 0);
199
+ // 按下→抬起(插件 pressMedianMs 120, σ.45)
200
+ const pm = opts.pressMedianMs ?? this.sim.pressMedianMs;
201
+ await this.sink.send('Input.dispatchMouseEvent', {
202
+ type: 'mousePressed', button: 'left', buttons: 1, clickCount: 1, x: tx, y: ty, pointerType: 'mouse', modifiers,
203
+ });
204
+ await sleep(sampleLogNormal(pm, this.sim.pressSigma, rng));
205
+ this.checkStop(opts.stop);
206
+ await this.sink.send('Input.dispatchMouseEvent', {
207
+ type: 'mouseReleased', button: 'left', buttons: 0, clickCount: 1, x: tx, y: ty, pointerType: 'mouse', modifiers,
208
+ });
209
+ // 双击(插件可选)
210
+ if (opts.doubleClick || rng() < (opts.doubleClickProbability ?? 0)) {
211
+ const [dMin, dMax] = this.sim.doubleClickRangeMs;
212
+ await sleep(randBetween(dMin, dMax, rng));
213
+ this.checkStop(opts.stop);
214
+ await this.sink.send('Input.dispatchMouseEvent', {
215
+ type: 'mousePressed', button: 'left', buttons: 1, clickCount: 2, x: tx, y: ty, pointerType: 'mouse', modifiers,
216
+ });
217
+ await sleep(sampleLogNormal(pm * 0.85, this.sim.pressSigma, rng));
218
+ this.checkStop(opts.stop);
219
+ await this.sink.send('Input.dispatchMouseEvent', {
220
+ type: 'mouseReleased', button: 'left', buttons: 0, clickCount: 2, x: tx, y: ty, pointerType: 'mouse', modifiers,
221
+ });
222
+ }
223
+ this.lastPos = target;
224
+ return target;
225
+ }
226
+ /** 插件 mouseClick(公共入口) */
227
+ async mouseClick(at, opts = {}) {
228
+ const run = async () => this.implClick(at, opts);
229
+ if (opts.timeoutMs !== undefined)
230
+ return withTimeout(run(), opts.timeoutMs, 'mouseClick');
231
+ return run();
232
+ }
233
+ /** 插件 mouseWheel:惯性递减或均匀,段间 20~60ms,±1px */
234
+ async mouseWheel(delta, opts = {}) {
235
+ const run = async () => {
236
+ const [w, h] = await this.getViewport();
237
+ const rng = opts.seed !== undefined ? seededRng(opts.seed) : rngTime();
238
+ const pos = point(opts.x ?? this.lastPos?.x ?? w / 2, opts.y ?? this.lastPos?.y ?? h / 2);
239
+ const origin = Human.clampToViewport(pos, w, h);
240
+ const dx0 = delta.x;
241
+ const dy0 = delta.y;
242
+ let weights;
243
+ if (opts.inertia !== false) {
244
+ const p = randBetween(this.sim.wheelRatioRange[0], this.sim.wheelRatioRange[1], rng);
245
+ const k = opts.steps !== undefined ? clamp(opts.steps, 4, 16) : Math.round(randBetween(this.sim.wheelInertiaStepsRange[0], this.sim.wheelInertiaStepsRange[1], rng));
246
+ const raw = Array.from({ length: k }, (_, i) => Math.pow(p, i));
247
+ const sum = raw.reduce((a, b) => a + b, 0);
248
+ weights = raw.map((v) => v / sum);
249
+ }
250
+ else {
251
+ const k = opts.steps !== undefined ? clamp(opts.steps, 3, 10) : Math.round(randBetween(this.sim.wheelUniformStepsRange[0], this.sim.wheelUniformStepsRange[1], rng));
252
+ weights = Array.from({ length: k }, () => 1 / k);
253
+ }
254
+ for (const wt of weights) {
255
+ this.checkStop(opts.stop);
256
+ const ddx = dx0 * wt + randBetween(-1, 1, rng);
257
+ const ddy = dy0 * wt + randBetween(-1, 1, rng);
258
+ await this.sink.send('Input.dispatchMouseEvent', {
259
+ type: 'mouseWheel', x: Math.round(origin.x), y: Math.round(origin.y), deltaX: ddx, deltaY: ddy, pointerType: 'mouse',
260
+ });
261
+ await sleep(randBetween(this.sim.wheelIntervalMs[0], this.sim.wheelIntervalMs[1], rng));
262
+ }
263
+ this.lastPos = origin;
264
+ return origin;
265
+ };
266
+ if (opts.timeoutMs !== undefined)
267
+ return withTimeout(run(), opts.timeoutMs, 'mouseWheel');
268
+ return run();
269
+ }
270
+ /** 插件 mx:矩形内按 padding 收缩后随机取点 */
271
+ static randomPointIn(rect, padding, rng) {
272
+ const [pl, pt, pr, pb] = padding;
273
+ const x = rect.x + pl;
274
+ const y = rect.y + pt;
275
+ const s = rect.x + rect.w - pr;
276
+ const r = rect.y + rect.h - pb;
277
+ if (s < x || r < y) {
278
+ // 边距收缩后无空间 → 元素中心
279
+ return point(Math.round(rect.x + rect.w / 2), Math.round(rect.y + rect.h / 2));
280
+ }
281
+ return point(Math.round(x + rng() * (s - x)), Math.round(y + rng() * (r - y)));
282
+ }
283
+ /** 插件 mouseDrag(content_to_bg_mouse_drag,1:1 复刻) */
284
+ async mouseDrag(from, to, opts = {}) {
285
+ const run = async () => {
286
+ const [vw, vh] = await this.getViewport();
287
+ const rng = opts.seed !== undefined ? seededRng(opts.seed) : rngTime();
288
+ const p = opts.clamp === false ? from : Human.clampToViewport(from, vw, vh);
289
+ const k = opts.clamp === false ? to : Human.clampToViewport(to, vw, vh);
290
+ this.checkStop(opts.stop);
291
+ // 预移动:从 lastPos(或起点偏移 100px)到 p
292
+ const lp = this.lastPos ?? point(p.x + 100, p.y + 100);
293
+ const pre = Math.max(3, Math.ceil(Math.hypot(p.x - lp.x, p.y - lp.y) / 20));
294
+ const jitter = opts.jitter ?? this.sim.dragJitter;
295
+ for (let i = 0; i <= pre; i++) {
296
+ this.checkStop(opts.stop);
297
+ const t = easeInOut(i / pre);
298
+ const x = lp.x + (p.x - lp.x) * t + (rng() - 0.5) * jitter;
299
+ const y = lp.y + (p.y - lp.y) * t + (rng() - 0.5) * jitter;
300
+ const pt = opts.clamp === false ? point(x, y) : Human.clampToViewport(point(x, y), vw, vh);
301
+ await this.sink.send('Input.dispatchMouseEvent', { type: 'mouseMoved', x: Math.round(pt.x), y: Math.round(pt.y) });
302
+ await sleep(sampleLogNormal(this.sim.dragPreMedianMs, this.sim.dragPreSigma, rng));
303
+ }
304
+ this.lastPos = p;
305
+ this.checkStop(opts.stop);
306
+ // 按下
307
+ await this.sink.send('Input.dispatchMouseEvent', {
308
+ type: 'mousePressed', x: Math.round(p.x), y: Math.round(p.y), button: 'left', clickCount: 1,
309
+ });
310
+ const [pd0, pd1] = opts.pressDelayMs ?? this.sim.pressDelayMs;
311
+ await sleep(randBetween(pd0, pd1, rng));
312
+ this.checkStop(opts.stop);
313
+ // 按住拖动(mouseMoved 携带 button:"left")
314
+ const n = opts.steps ?? Math.max(5, Math.ceil(Math.hypot(k.x - p.x, k.y - p.y) / 15));
315
+ for (let i = 1; i <= n; i++) {
316
+ this.checkStop(opts.stop);
317
+ const t = easeInOut(i / n);
318
+ const x = p.x + (k.x - p.x) * t + (rng() - 0.5) * jitter;
319
+ const y = p.y + (k.y - p.y) * t + (rng() - 0.5) * jitter;
320
+ const pt = opts.clamp === false ? point(x, y) : Human.clampToViewport(point(x, y), vw, vh);
321
+ await this.sink.send('Input.dispatchMouseEvent', { type: 'mouseMoved', x: Math.round(pt.x), y: Math.round(pt.y), button: 'left' });
322
+ await sleep(sampleLogNormal(this.sim.dragMoveMedianMs, this.sim.dragMoveSigma, rng));
323
+ }
324
+ const [rd0, rd1] = opts.releaseDelayMs ?? this.sim.releaseDelayMs;
325
+ await sleep(randBetween(rd0, rd1, rng));
326
+ this.checkStop(opts.stop);
327
+ // 释放
328
+ await this.sink.send('Input.dispatchMouseEvent', {
329
+ type: 'mouseReleased', x: Math.round(k.x), y: Math.round(k.y), button: 'left', clickCount: 1,
330
+ });
331
+ this.lastPos = k;
332
+ return [p, k];
333
+ };
334
+ if (opts.timeoutMs !== undefined)
335
+ return withTimeout(run(), opts.timeoutMs, 'mouseDrag');
336
+ return run();
337
+ }
338
+ /**
339
+ * 插件 randomClickIn:随机选元素在其可见矩形内随机点后 mouseClick,1~2 次。
340
+ * 需要页面已注入 DOM_SOURCE(window.__rpaDom.getBySels)。
341
+ */
342
+ async randomClickIn(selector, maxClicks, intervalMs) {
343
+ const rng = rngTime();
344
+ const sel = JSON.stringify(selector);
345
+ const expr = `(() => {
346
+ const d = window.__rpaDom;
347
+ const nodes = d && d.getBySels ? d.getBySels(${sel}) : [];
348
+ const vw = innerWidth || document.documentElement.clientWidth;
349
+ const vh = innerHeight || document.documentElement.clientHeight;
350
+ const out = [];
351
+ for (const el of nodes) {
352
+ const t = el.getBoundingClientRect();
353
+ const x = Math.max(t.left, 0);
354
+ const y = Math.max(t.top, 0);
355
+ const w = Math.max(0, Math.min(t.right, vw) - x);
356
+ const h = Math.max(0, Math.min(t.bottom, vh) - y);
357
+ if (w > 0 && h > 0) out.push({ x, y, w, h });
358
+ }
359
+ return out;
360
+ })()`;
361
+ let rects = [];
362
+ try {
363
+ const v = await this.sink.evaluate(expr);
364
+ if (Array.isArray(v)) {
365
+ rects = v
366
+ .filter((r) => !!r && typeof r === 'object' &&
367
+ typeof r.x === 'number' && typeof r.y === 'number' &&
368
+ typeof r.w === 'number' && typeof r.h === 'number')
369
+ .map((r) => ({ x: r.x, y: r.y, w: r.w, h: r.h }));
370
+ }
371
+ }
372
+ catch {
373
+ rects = [];
374
+ }
375
+ if (rects.length === 0) {
376
+ throw HumanError.sink(`randomClickIn 未找到元素: ${selector}`);
377
+ }
378
+ // 插件:Math.floor(Math.random()*2)+1 次(1~2)
379
+ const times = Math.floor(rng() * Math.max(1, maxClicks ?? this.sim.randomClickMaxClicks)) + 1;
380
+ let clicked = 0;
381
+ for (let i = 0; i < times; i++) {
382
+ const rect = rects[Math.floor(rng() * rects.length)];
383
+ const at = Human.randomPointIn(rect, [2, 2, 2, 2], rng);
384
+ try {
385
+ await this.implClick(at, {});
386
+ clicked++;
387
+ }
388
+ catch {
389
+ // 单次点击失败不中断
390
+ }
391
+ if (i < times - 1) {
392
+ await sleep(intervalMs ?? this.sim.randomClickIntervalMs);
393
+ }
394
+ }
395
+ return [clicked, times];
396
+ }
397
+ /** 插件 typeCharacter */
398
+ async typeCharacter(ch) {
399
+ await this.sink.send('Input.dispatchKeyEvent', { type: 'char', text: ch, unmodifiedText: ch });
400
+ }
401
+ /** 插件 typeBackspace */
402
+ async typeBackspace() {
403
+ await this.sink.send('Input.dispatchKeyEvent', { type: 'keyDown', windowsVirtualKeyCode: 8 });
404
+ await this.sink.send('Input.dispatchKeyEvent', { type: 'keyUp', windowsVirtualKeyCode: 8 });
405
+ }
406
+ /** 按回车(真实 CDP 键盘事件,isTrusted=true) */
407
+ async pressEnter() {
408
+ await this.sink.send('Input.dispatchKeyEvent', {
409
+ type: 'keyDown', key: 'Enter', code: 'Enter', windowsVirtualKeyCode: 13, nativeVirtualKeyCode: 13,
410
+ });
411
+ await this.sink.send('Input.dispatchKeyEvent', {
412
+ type: 'keyUp', key: 'Enter', code: 'Enter', windowsVirtualKeyCode: 13, nativeVirtualKeyCode: 13,
413
+ });
414
+ }
415
+ /** 插件 isThinkingTrigger:标点后思考停顿 */
416
+ static isThinkingTrigger(ch) {
417
+ return ['.', '。', ',', ',', '!', '!', '?', '?', ';', ';', ':', ':'].includes(ch);
418
+ }
419
+ /** 插件 calculateTypingInterval:相邻字符间隔加权,clamp 30~500ms */
420
+ calculateTypingInterval(prev, next, baseMs, rng) {
421
+ let v = sampleLogNormal(baseMs, this.sim.typeSigma, rng);
422
+ if (prev === ' ')
423
+ v *= 1.2;
424
+ if (next === ' ')
425
+ v *= 0.9;
426
+ if (next === next.toUpperCase() && next.toLowerCase() !== next)
427
+ v *= 1.15;
428
+ if (/[0-9!@#$%^&*()_+\-=[\]{}|,.<>?]/.test(next))
429
+ v *= 1.1;
430
+ return clamp(v, 30, 500);
431
+ }
432
+ /** 插件 keyboardInput:WPM 180~280 · 2% 打错重打 · 5% 思考停顿 · 收尾 200ms */
433
+ async keyboardInput(text, opts = {}) {
434
+ const run = async () => {
435
+ const [lo, hi] = opts.wpmRange ?? this.sim.wpmRange;
436
+ const errRate = opts.errorRate ?? this.sim.errorRate;
437
+ const pauseChance = opts.thinkPauseChance ?? this.sim.thinkPauseChance;
438
+ const [pLo, pHi] = opts.thinkPauseRangeMs ?? this.sim.thinkPauseRangeMs;
439
+ const finalPause = opts.finalPauseMs ?? this.sim.finalPauseMs;
440
+ const baseInterval = 60_000 / (((lo + hi) / 2) * 5);
441
+ const rng = opts.seed !== undefined ? seededRng(opts.seed) : rngTime();
442
+ const chars = [...text];
443
+ let typed = 0;
444
+ for (let p = 0; p < chars.length; p++) {
445
+ this.checkStop(opts.stop);
446
+ const ch = chars[p];
447
+ if (rng() < errRate) {
448
+ const wrong = getRandomErrorChar(ch, rng);
449
+ await this.typeCharacter(wrong);
450
+ typed++;
451
+ await sleep(sampleLogNormal(baseInterval * 1.5, this.sim.typeErrSigma, rng));
452
+ this.checkStop(opts.stop);
453
+ await this.typeBackspace();
454
+ await sleep(sampleLogNormal(baseInterval * 0.8, this.sim.typeBackspaceSigma, rng));
455
+ this.checkStop(opts.stop);
456
+ }
457
+ await this.typeCharacter(ch);
458
+ typed++;
459
+ const last = p === chars.length - 1;
460
+ if (!last && (Human.isThinkingTrigger(ch) || rng() < pauseChance)) {
461
+ await sleep(randBetween(pLo, pHi, rng));
462
+ this.checkStop(opts.stop);
463
+ }
464
+ if (!last) {
465
+ const iv = this.calculateTypingInterval(ch, chars[p + 1], baseInterval, rng);
466
+ await sleep(iv);
467
+ }
468
+ }
469
+ if (finalPause > 0)
470
+ await sleep(finalPause);
471
+ return typed;
472
+ };
473
+ if (opts.timeoutMs !== undefined)
474
+ return withTimeout(run(), opts.timeoutMs, 'keyboardInput');
475
+ return run();
476
+ }
477
+ }
478
+ /* ---------------- 工具 ---------------- */
479
+ /** 时间种子 RNG(不可复现;等价 XorShift32::time_seeded) */
480
+ function rngTime() {
481
+ const s = Number(process.hrtime.bigint() & 0xffffffffn);
482
+ const r = new XorShift32((s ^ 0x5bd1e995) >>> 0);
483
+ return () => r.next();
484
+ }
485
+ /** 种子 RNG(可复现) */
486
+ function seededRng(seed) {
487
+ const r = new XorShift32(seed);
488
+ return () => r.next();
489
+ }
490
+ /** 带超时执行(超时 → HumanError.timeout) */
491
+ async function withTimeout(p, ms, op) {
492
+ let timer;
493
+ try {
494
+ return await Promise.race([
495
+ p,
496
+ new Promise((_, reject) => {
497
+ timer = setTimeout(() => reject(HumanError.timeout(op)), ms);
498
+ }),
499
+ ]);
500
+ }
501
+ finally {
502
+ if (timer)
503
+ clearTimeout(timer);
504
+ }
505
+ }
506
+ //# sourceMappingURL=human.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"human.js","sourceRoot":"","sources":["../src/human.ts"],"names":[],"mappings":"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CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAC7F,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACnF,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACpE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACrD,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACnF,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACzE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @qing3a/flow-rpa-engine 公共出口(npm 包入口;D-N2)。
3
+ * 外部消费者从 "." 导入;内部(app/测试)仍走子路径 @qing3a/flow-rpa-engine/src/*.js。
4
+ */
5
+ export { parseFlowJson, FlowSchema, StepSchema, VerifySchema, STEP_TYPES } from './schema.js';
6
+ export type { Flow, Step, StepType, Verify, FlowInput, EnvCheck } from './schema.js';
7
+ export { parseFlow, validate, FlowError, flowParseError, flowInvalidError } from './validate.js';
8
+ export { runFlow, ExecError } from './executor.js';
9
+ export type { PageOps, FlowResult, StepResult, ExtractResult, RunFlowOptions } from './executor.js';
10
+ export { fromFlowResult } from './record.js';
11
+ export type { RunRecord } from './record.js';
12
+ export { RunStore, nowIso } from './storage.js';
13
+ export { SuggestionStore, learnFromRun } from './learning.js';
14
+ export { LocalPlatform, MIN_SAMPLE_THRESHOLD } from './export.js';
15
+ export { PerfGate } from './bench.js';
16
+ export { CooldownGate, SiteGate, hostOf, GLOBAL_INTER_MIN_SECS, waitDurationLabel } from './gate.js';
17
+ export { PlatformClient, pkgUpdate, localFlowVersion, verifyHash } from './platform.js';
18
+ export type { PkgManifest } from './platform.js';
19
+ export { defaultProfileFile, loadSimProfile } from './simprofile.js';
20
+ export type { SimProfile } from './simprofile.js';
package/dist/index.js ADDED
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @qing3a/flow-rpa-engine 公共出口(npm 包入口;D-N2)。
3
+ * 外部消费者从 "." 导入;内部(app/测试)仍走子路径 @qing3a/flow-rpa-engine/src/*.js。
4
+ */
5
+ export { parseFlowJson, FlowSchema, StepSchema, VerifySchema, STEP_TYPES } from './schema.js';
6
+ export { parseFlow, validate, FlowError, flowParseError, flowInvalidError } from './validate.js';
7
+ export { runFlow, ExecError } from './executor.js';
8
+ export { fromFlowResult } from './record.js';
9
+ export { RunStore, nowIso } from './storage.js';
10
+ export { SuggestionStore, learnFromRun } from './learning.js';
11
+ export { LocalPlatform, MIN_SAMPLE_THRESHOLD } from './export.js';
12
+ export { PerfGate } from './bench.js';
13
+ export { CooldownGate, SiteGate, hostOf, GLOBAL_INTER_MIN_SECS, waitDurationLabel } from './gate.js';
14
+ export { PlatformClient, pkgUpdate, localFlowVersion, verifyHash } from './platform.js';
15
+ export { defaultProfileFile, loadSimProfile } from './simprofile.js';
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE7F,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChG,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AACpG,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAEvF,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA"}