imperium-crawl 2.3.1 → 2.4.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 (117) hide show
  1. package/README.md +69 -11
  2. package/dist/cli-explore.d.ts +30 -0
  3. package/dist/cli-explore.d.ts.map +1 -0
  4. package/dist/cli-explore.js +427 -0
  5. package/dist/cli-explore.js.map +1 -0
  6. package/dist/cli-recorder.d.ts +44 -0
  7. package/dist/cli-recorder.d.ts.map +1 -0
  8. package/dist/cli-recorder.js +67 -0
  9. package/dist/cli-recorder.js.map +1 -0
  10. package/dist/cli.d.ts.map +1 -1
  11. package/dist/cli.js +28 -0
  12. package/dist/cli.js.map +1 -1
  13. package/dist/config.d.ts.map +1 -1
  14. package/dist/config.js +3 -0
  15. package/dist/config.js.map +1 -1
  16. package/dist/knowledge/index.d.ts +1 -0
  17. package/dist/knowledge/index.d.ts.map +1 -1
  18. package/dist/knowledge/index.js +1 -0
  19. package/dist/knowledge/index.js.map +1 -1
  20. package/dist/knowledge/record-browser.d.ts +17 -0
  21. package/dist/knowledge/record-browser.d.ts.map +1 -0
  22. package/dist/knowledge/record-browser.js +29 -0
  23. package/dist/knowledge/record-browser.js.map +1 -0
  24. package/dist/llm/retry.d.ts +4 -2
  25. package/dist/llm/retry.d.ts.map +1 -1
  26. package/dist/llm/retry.js +15 -4
  27. package/dist/llm/retry.js.map +1 -1
  28. package/dist/sessions/index.d.ts +1 -1
  29. package/dist/sessions/index.d.ts.map +1 -1
  30. package/dist/sessions/index.js +1 -1
  31. package/dist/sessions/index.js.map +1 -1
  32. package/dist/sessions/manager.d.ts +20 -0
  33. package/dist/sessions/manager.d.ts.map +1 -1
  34. package/dist/sessions/manager.js +57 -0
  35. package/dist/sessions/manager.js.map +1 -1
  36. package/dist/sessions/types.d.ts +2 -0
  37. package/dist/sessions/types.d.ts.map +1 -1
  38. package/dist/skills/chain.d.ts +61 -0
  39. package/dist/skills/chain.d.ts.map +1 -0
  40. package/dist/skills/chain.js +182 -0
  41. package/dist/skills/chain.js.map +1 -0
  42. package/dist/skills/conditions.d.ts +14 -0
  43. package/dist/skills/conditions.d.ts.map +1 -0
  44. package/dist/skills/conditions.js +208 -0
  45. package/dist/skills/conditions.js.map +1 -0
  46. package/dist/skills/manager.d.ts +47 -2
  47. package/dist/skills/manager.d.ts.map +1 -1
  48. package/dist/skills/manager.js.map +1 -1
  49. package/dist/skills/parameters.d.ts +49 -0
  50. package/dist/skills/parameters.d.ts.map +1 -0
  51. package/dist/skills/parameters.js +157 -0
  52. package/dist/skills/parameters.js.map +1 -0
  53. package/dist/stealth/index.d.ts +1 -0
  54. package/dist/stealth/index.d.ts.map +1 -1
  55. package/dist/stealth/index.js +61 -13
  56. package/dist/stealth/index.js.map +1 -1
  57. package/dist/tools/action-executor.d.ts +64 -0
  58. package/dist/tools/action-executor.d.ts.map +1 -0
  59. package/dist/tools/action-executor.js +365 -0
  60. package/dist/tools/action-executor.js.map +1 -0
  61. package/dist/tools/batch-scrape.d.ts +2 -2
  62. package/dist/tools/crawl.d.ts +2 -2
  63. package/dist/tools/create-skill.d.ts +2 -2
  64. package/dist/tools/discover-apis.d.ts +1 -1
  65. package/dist/tools/discover-apis.d.ts.map +1 -1
  66. package/dist/tools/discover-apis.js +3 -0
  67. package/dist/tools/discover-apis.js.map +1 -1
  68. package/dist/tools/download.d.ts +4 -4
  69. package/dist/tools/download.d.ts.map +1 -1
  70. package/dist/tools/download.js +3 -0
  71. package/dist/tools/download.js.map +1 -1
  72. package/dist/tools/extract.d.ts +1 -1
  73. package/dist/tools/image-search.d.ts +1 -1
  74. package/dist/tools/index.d.ts.map +1 -1
  75. package/dist/tools/index.js +3 -0
  76. package/dist/tools/index.js.map +1 -1
  77. package/dist/tools/instagram.d.ts +2 -2
  78. package/dist/tools/interact.d.ts +72 -44
  79. package/dist/tools/interact.d.ts.map +1 -1
  80. package/dist/tools/interact.js +33 -299
  81. package/dist/tools/interact.js.map +1 -1
  82. package/dist/tools/knowledge.d.ts +24 -0
  83. package/dist/tools/knowledge.d.ts.map +1 -0
  84. package/dist/tools/knowledge.js +99 -0
  85. package/dist/tools/knowledge.js.map +1 -0
  86. package/dist/tools/list-skills.js +1 -1
  87. package/dist/tools/list-skills.js.map +1 -1
  88. package/dist/tools/manifest.d.ts.map +1 -1
  89. package/dist/tools/manifest.js +5 -0
  90. package/dist/tools/manifest.js.map +1 -1
  91. package/dist/tools/monitor-websocket.d.ts +1 -1
  92. package/dist/tools/news-search.d.ts +1 -1
  93. package/dist/tools/query-api.d.ts +6 -6
  94. package/dist/tools/readability.d.ts +2 -2
  95. package/dist/tools/reddit.d.ts +4 -4
  96. package/dist/tools/run-skill.d.ts +14 -4
  97. package/dist/tools/run-skill.d.ts.map +1 -1
  98. package/dist/tools/run-skill.js +73 -0
  99. package/dist/tools/run-skill.js.map +1 -1
  100. package/dist/tools/scrape.d.ts +9 -6
  101. package/dist/tools/scrape.d.ts.map +1 -1
  102. package/dist/tools/scrape.js +2 -0
  103. package/dist/tools/scrape.js.map +1 -1
  104. package/dist/tools/screenshot.d.ts.map +1 -1
  105. package/dist/tools/screenshot.js +6 -0
  106. package/dist/tools/screenshot.js.map +1 -1
  107. package/dist/tools/search.d.ts +1 -1
  108. package/dist/tools/snapshot.d.ts +5 -5
  109. package/dist/tools/snapshot.d.ts.map +1 -1
  110. package/dist/tools/snapshot.js +3 -0
  111. package/dist/tools/snapshot.js.map +1 -1
  112. package/dist/tools/video-search.d.ts +1 -1
  113. package/dist/tools/youtube.d.ts +2 -2
  114. package/dist/utils/fetcher.d.ts.map +1 -1
  115. package/dist/utils/fetcher.js +33 -0
  116. package/dist/utils/fetcher.js.map +1 -1
  117. package/package.json +5 -2
@@ -0,0 +1,365 @@
1
+ /**
2
+ * Action Executor — extracted from interact.ts.
3
+ *
4
+ * Shared between:
5
+ * - interact tool (automated action sequences)
6
+ * - explore REPL (interactive CLI browser session)
7
+ *
8
+ * All browser action handlers live here. interact.ts and cli-explore.ts
9
+ * import executeAction from this module.
10
+ *
11
+ * Note: evaluate and paginate actions use new Function() intentionally —
12
+ * the user explicitly provides JS scripts for browser-side execution.
13
+ * This is the same pattern used in the original interact.ts.
14
+ */
15
+ import { HUMAN_DELAY_MIN_MS, HUMAN_DELAY_MAX_MS, } from "../constants.js";
16
+ import { getSnapshotStore } from "../snapshot/index.js";
17
+ import { getAuthProfile, updateLastLogin } from "../security/auth-vault.js";
18
+ // ── Helpers ──
19
+ export function humanDelay() {
20
+ return (HUMAN_DELAY_MIN_MS +
21
+ Math.floor(Math.random() * (HUMAN_DELAY_MAX_MS - HUMAN_DELAY_MIN_MS)));
22
+ }
23
+ export function resolveRefToLocator(page, refEntry) {
24
+ const locator = refEntry.name
25
+ ? page.getByRole(refEntry.role, {
26
+ name: refEntry.name,
27
+ exact: true,
28
+ })
29
+ : page.getByRole(refEntry.role);
30
+ return refEntry.nth !== undefined ? locator.nth(refEntry.nth) : locator;
31
+ }
32
+ export function getTargetSelector(action, sessionId) {
33
+ if (action.ref && action.selector) {
34
+ return { error: "ref and selector are mutually exclusive — provide one, not both" };
35
+ }
36
+ if (action.ref && sessionId) {
37
+ const entry = getSnapshotStore().resolveRef(sessionId, action.ref);
38
+ if (!entry) {
39
+ return { error: `ref '${action.ref}' not found. Take a snapshot first to get valid refs.` };
40
+ }
41
+ return { refEntry: entry };
42
+ }
43
+ if (action.ref && !sessionId) {
44
+ return { error: "ref requires session_id to resolve. Provide session_id or use selector instead." };
45
+ }
46
+ return { selector: action.selector };
47
+ }
48
+ export function buildCssSelectorFromRef(refEntry) {
49
+ const roleMap = {
50
+ button: "button",
51
+ link: "a",
52
+ textbox: "input",
53
+ searchbox: "input[type=search]",
54
+ checkbox: "input[type=checkbox]",
55
+ radio: "input[type=radio]",
56
+ };
57
+ const tag = roleMap[refEntry.role] ?? `[role="${refEntry.role}"]`;
58
+ return refEntry.name ? `${tag}:has-text("${refEntry.name.replace(/"/g, '\\"')}")` : tag;
59
+ }
60
+ // ── Core Action Executor ──
61
+ export async function executeAction(page, action, screenshots, timeout, sessionId) {
62
+ try {
63
+ const needsTarget = ["click", "type", "hover", "select", "press", "wait", "drag", "upload"].includes(action.type);
64
+ let refEntry;
65
+ let cssSelector;
66
+ if (needsTarget && (action.ref || action.selector)) {
67
+ const target = getTargetSelector(action, sessionId);
68
+ if (target.error)
69
+ return { type: action.type, success: false, error: target.error };
70
+ refEntry = target.refEntry;
71
+ cssSelector = target.selector;
72
+ }
73
+ switch (action.type) {
74
+ case "click": {
75
+ if (!refEntry && !cssSelector)
76
+ return { type: "click", success: false, error: "selector or ref required" };
77
+ if (refEntry) {
78
+ await resolveRefToLocator(page, refEntry).click({ timeout });
79
+ }
80
+ else {
81
+ await page.click(cssSelector, { timeout });
82
+ }
83
+ await page.waitForLoadState("networkidle", { timeout: 5000 }).catch(() => { });
84
+ return { type: "click", success: true };
85
+ }
86
+ case "type": {
87
+ if (!refEntry && !cssSelector)
88
+ return { type: "type", success: false, error: "selector or ref required" };
89
+ if (action.text === undefined)
90
+ return { type: "type", success: false, error: "text required" };
91
+ if (refEntry) {
92
+ await resolveRefToLocator(page, refEntry).fill(action.text, { timeout });
93
+ }
94
+ else {
95
+ await page.fill(cssSelector, action.text, { timeout });
96
+ }
97
+ return { type: "type", success: true };
98
+ }
99
+ case "scroll": {
100
+ const x = action.x ?? 0;
101
+ const y = action.y ?? 500;
102
+ await page.evaluate(({ dx, dy }) => window.scrollBy(dx, dy), { dx: x, dy: y });
103
+ return { type: "scroll", success: true };
104
+ }
105
+ case "wait": {
106
+ if (refEntry) {
107
+ await resolveRefToLocator(page, refEntry).waitFor({ timeout });
108
+ }
109
+ else if (cssSelector) {
110
+ await page.waitForSelector(cssSelector, { timeout });
111
+ }
112
+ else {
113
+ await page.waitForTimeout(action.duration ?? 1000);
114
+ }
115
+ return { type: "wait", success: true };
116
+ }
117
+ case "screenshot": {
118
+ const buf = await page.screenshot({ fullPage: false });
119
+ screenshots.push(buf.toString("base64"));
120
+ return { type: "screenshot", success: true };
121
+ }
122
+ case "evaluate": {
123
+ if (!action.script)
124
+ return { type: "evaluate", success: false, error: "script required" };
125
+ const evalFn = new Function(action.script);
126
+ const result = await page.evaluate(evalFn);
127
+ return { type: "evaluate", success: true, result };
128
+ }
129
+ case "select": {
130
+ if (!refEntry && !cssSelector)
131
+ return { type: "select", success: false, error: "selector or ref required" };
132
+ if (action.value === undefined)
133
+ return { type: "select", success: false, error: "value required" };
134
+ if (refEntry) {
135
+ await resolveRefToLocator(page, refEntry).selectOption(action.value, { timeout });
136
+ }
137
+ else {
138
+ await page.selectOption(cssSelector, action.value, { timeout });
139
+ }
140
+ return { type: "select", success: true };
141
+ }
142
+ case "hover": {
143
+ if (!refEntry && !cssSelector)
144
+ return { type: "hover", success: false, error: "selector or ref required" };
145
+ if (refEntry) {
146
+ await resolveRefToLocator(page, refEntry).hover({ timeout });
147
+ }
148
+ else {
149
+ await page.hover(cssSelector, { timeout });
150
+ }
151
+ return { type: "hover", success: true };
152
+ }
153
+ case "press": {
154
+ if (!action.key)
155
+ return { type: "press", success: false, error: "key required" };
156
+ if (refEntry) {
157
+ await resolveRefToLocator(page, refEntry).press(action.key, { timeout });
158
+ }
159
+ else if (cssSelector) {
160
+ await page.press(cssSelector, action.key, { timeout });
161
+ }
162
+ else {
163
+ await page.keyboard.press(action.key);
164
+ }
165
+ return { type: "press", success: true };
166
+ }
167
+ case "navigate": {
168
+ if (!action.url)
169
+ return { type: "navigate", success: false, error: "url required" };
170
+ await page.goto(action.url, { waitUntil: "load", timeout });
171
+ return { type: "navigate", success: true };
172
+ }
173
+ case "drag": {
174
+ if (!refEntry && !cssSelector)
175
+ return { type: "drag", success: false, error: "selector or ref required for source" };
176
+ if (!action.target_selector && !action.target_ref)
177
+ return { type: "drag", success: false, error: "target_selector or target_ref required" };
178
+ const sourceSelector = refEntry ? buildCssSelectorFromRef(refEntry) : cssSelector;
179
+ let targetSelector;
180
+ if (action.target_ref && sessionId) {
181
+ const targetEntry = getSnapshotStore().resolveRef(sessionId, action.target_ref);
182
+ if (!targetEntry)
183
+ return { type: "drag", success: false, error: `target ref '${action.target_ref}' not found` };
184
+ targetSelector = buildCssSelectorFromRef(targetEntry);
185
+ }
186
+ else if (action.target_selector) {
187
+ targetSelector = action.target_selector;
188
+ }
189
+ else {
190
+ return { type: "drag", success: false, error: "target_selector or target_ref required" };
191
+ }
192
+ await page.dragAndDrop(sourceSelector, targetSelector, { timeout });
193
+ return { type: "drag", success: true };
194
+ }
195
+ case "upload": {
196
+ if (!refEntry && !cssSelector)
197
+ return { type: "upload", success: false, error: "selector or ref required" };
198
+ if (!action.file_paths?.length)
199
+ return { type: "upload", success: false, error: "file_paths required" };
200
+ if (refEntry) {
201
+ await resolveRefToLocator(page, refEntry).setInputFiles(action.file_paths, { timeout });
202
+ }
203
+ else {
204
+ await page.setInputFiles(cssSelector, action.file_paths, { timeout });
205
+ }
206
+ return { type: "upload", success: true };
207
+ }
208
+ case "storage_get": {
209
+ if (!action.storage)
210
+ return { type: "storage_get", success: false, error: "storage type required (local or session)" };
211
+ const storageObj = action.storage === "local" ? "localStorage" : "sessionStorage";
212
+ const storageKey = action.key;
213
+ const storageResult = await page.evaluate(({ obj, k }) => {
214
+ const storage = obj === "localStorage" ? localStorage : sessionStorage;
215
+ if (k)
216
+ return storage.getItem(k);
217
+ const all = {};
218
+ for (let i = 0; i < storage.length; i++) {
219
+ const key = storage.key(i);
220
+ if (key)
221
+ all[key] = storage.getItem(key);
222
+ }
223
+ return all;
224
+ }, { obj: storageObj, k: storageKey });
225
+ return { type: "storage_get", success: true, result: storageResult };
226
+ }
227
+ case "storage_set": {
228
+ if (!action.storage)
229
+ return { type: "storage_set", success: false, error: "storage type required" };
230
+ if (!action.key)
231
+ return { type: "storage_set", success: false, error: "key required" };
232
+ if (action.value === undefined)
233
+ return { type: "storage_set", success: false, error: "value required" };
234
+ const storageTarget = action.storage === "local" ? "localStorage" : "sessionStorage";
235
+ await page.evaluate(({ obj, k, v }) => {
236
+ const storage = obj === "localStorage" ? localStorage : sessionStorage;
237
+ storage.setItem(k, v);
238
+ }, { obj: storageTarget, k: action.key, v: action.value });
239
+ return { type: "storage_set", success: true };
240
+ }
241
+ case "cookie_get": {
242
+ const allCookies = await page.context().cookies();
243
+ const filtered = action.key ? allCookies.filter((c) => c.name === action.key) : allCookies;
244
+ return { type: "cookie_get", success: true, result: filtered };
245
+ }
246
+ case "cookie_set": {
247
+ if (!action.cookies?.length)
248
+ return { type: "cookie_set", success: false, error: "cookies array required" };
249
+ const pageUrl = page.url();
250
+ const cookiesToSet = action.cookies.map((c) => ({ ...c, url: c.domain ? undefined : pageUrl }));
251
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
252
+ await page.context().addCookies(cookiesToSet);
253
+ return { type: "cookie_set", success: true };
254
+ }
255
+ case "pdf": {
256
+ const pdfBuf = await page.pdf();
257
+ screenshots.push(pdfBuf.toString("base64"));
258
+ return { type: "pdf", success: true, result: "PDF saved to screenshots array as base64" };
259
+ }
260
+ case "refresh": {
261
+ await page.reload({ waitUntil: "load", timeout });
262
+ return { type: "refresh", success: true };
263
+ }
264
+ case "paginate": {
265
+ if (!action.extract_script)
266
+ return { type: "paginate", success: false, error: "extract_script required" };
267
+ if (!action.next_selector && !action.next_ref)
268
+ return { type: "paginate", success: false, error: "next_selector or next_ref required" };
269
+ const maxPages = action.max_pages ?? 10;
270
+ const waitMs = action.wait_after_click ?? 2000;
271
+ const allData = [];
272
+ let nextRefEntry;
273
+ let nextCss;
274
+ if (action.next_ref && sessionId) {
275
+ const entry = getSnapshotStore().resolveRef(sessionId, action.next_ref);
276
+ if (!entry)
277
+ return { type: "paginate", success: false, error: `next_ref '${action.next_ref}' not found` };
278
+ nextRefEntry = entry;
279
+ }
280
+ else {
281
+ nextCss = action.next_selector;
282
+ }
283
+ const extractFn = action.extract_script;
284
+ for (let pg = 0; pg < maxPages; pg++) {
285
+ const extracted = await page.evaluate((script) => (new Function(script))(), extractFn);
286
+ if (extracted !== null && extracted !== undefined) {
287
+ if (Array.isArray(extracted)) {
288
+ allData.push(...extracted);
289
+ }
290
+ else if (typeof extracted === "string") {
291
+ try {
292
+ const parsed = JSON.parse(extracted);
293
+ Array.isArray(parsed) ? allData.push(...parsed) : allData.push(parsed);
294
+ }
295
+ catch {
296
+ allData.push(extracted);
297
+ }
298
+ }
299
+ else {
300
+ allData.push(extracted);
301
+ }
302
+ }
303
+ if (pg >= maxPages - 1)
304
+ break;
305
+ try {
306
+ if (nextRefEntry) {
307
+ const loc = resolveRefToLocator(page, nextRefEntry);
308
+ if (!await loc.isVisible().catch(() => false))
309
+ break;
310
+ await loc.click({ timeout });
311
+ }
312
+ else if (nextCss) {
313
+ const el = page.locator(nextCss);
314
+ if (!await el.isVisible().catch(() => false))
315
+ break;
316
+ const isDisabled = await el.evaluate((node) => {
317
+ const htmlEl = node;
318
+ return htmlEl.classList.contains("disabled") ||
319
+ htmlEl.getAttribute("aria-disabled") === "true" ||
320
+ htmlEl.disabled === true;
321
+ }).catch(() => false);
322
+ if (isDisabled)
323
+ break;
324
+ await el.click({ timeout });
325
+ }
326
+ }
327
+ catch {
328
+ break;
329
+ }
330
+ await page.waitForTimeout(waitMs);
331
+ await page.waitForLoadState("networkidle", { timeout: 5000 }).catch(() => { });
332
+ }
333
+ return { type: "paginate", success: true, result: allData };
334
+ }
335
+ case "auth_login": {
336
+ if (!action.auth_profile)
337
+ return { type: "auth_login", success: false, error: "auth_profile name required" };
338
+ const profile = await getAuthProfile(action.auth_profile);
339
+ if (!profile)
340
+ return { type: "auth_login", success: false, error: `Auth profile '${action.auth_profile}' not found` };
341
+ if (profile.url) {
342
+ await page.goto(profile.url, { waitUntil: "load", timeout });
343
+ }
344
+ await page.fill(profile.selectors.username, profile.username, { timeout });
345
+ await page.waitForTimeout(humanDelay());
346
+ await page.fill(profile.selectors.password, profile.password, { timeout });
347
+ await page.waitForTimeout(humanDelay());
348
+ await page.click(profile.selectors.submit, { timeout });
349
+ await page.waitForLoadState("networkidle", { timeout: 10000 }).catch(() => { });
350
+ await updateLastLogin(action.auth_profile);
351
+ return { type: "auth_login", success: true, result: `Logged in as ${profile.username}` };
352
+ }
353
+ default:
354
+ return { type: action.type, success: false, error: "unknown action type" };
355
+ }
356
+ }
357
+ catch (err) {
358
+ return {
359
+ type: action.type,
360
+ success: false,
361
+ error: err instanceof Error ? err.message : String(err),
362
+ };
363
+ }
364
+ }
365
+ //# sourceMappingURL=action-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-executor.js","sourceRoot":"","sources":["../../src/tools/action-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACL,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AA6C5E,gBAAgB;AAEhB,MAAM,UAAU,UAAU;IACxB,OAAO,CACL,kBAAkB;QAClB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,kBAAkB,GAAG,kBAAkB,CAAC,CAAC,CACtE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,IAAyC,EACzC,QAAkB;IAElB,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI;QAC3B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAA4C,EAAE;YACpE,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,KAAK,EAAE,IAAI;SACZ,CAAC;QACJ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAA4C,CAAC,CAAC;IAE1E,OAAO,QAAQ,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,MAAmB,EACnB,SAA6B;IAE7B,IAAI,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QAClC,OAAO,EAAE,KAAK,EAAE,iEAAiE,EAAE,CAAC;IACtF,CAAC;IACD,IAAI,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QACnE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,KAAK,EAAE,QAAQ,MAAM,CAAC,GAAG,uDAAuD,EAAE,CAAC;QAC9F,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC7B,CAAC;IACD,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC7B,OAAO,EAAE,KAAK,EAAE,iFAAiF,EAAE,CAAC;IACtG,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,QAAkB;IACxD,MAAM,OAAO,GAA2B;QACtC,MAAM,EAAE,QAAQ;QAChB,IAAI,EAAE,GAAG;QACT,OAAO,EAAE,OAAO;QAChB,SAAS,EAAE,oBAAoB;QAC/B,QAAQ,EAAE,sBAAsB;QAChC,KAAK,EAAE,mBAAmB;KAC3B,CAAC;IACF,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,QAAQ,CAAC,IAAI,IAAI,CAAC;IAClE,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,cAAc,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;AAC1F,CAAC;AAED,6BAA6B;AAE7B,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAyC,EACzC,MAAmB,EACnB,WAAqB,EACrB,OAAe,EACf,SAAkB;IAElB,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClH,IAAI,QAA8B,CAAC;QACnC,IAAI,WAA+B,CAAC;QAEpC,IAAI,WAAW,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnD,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACpD,IAAI,MAAM,CAAC,KAAK;gBAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;YACpF,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YAC3B,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,CAAC;QAED,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,IAAI,CAAC,QAAQ,IAAI,CAAC,WAAW;oBAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC;gBAC3G,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC/D,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,CAAC,KAAK,CAAC,WAAY,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC9C,CAAC;gBACD,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBAC9E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC1C,CAAC;YAED,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,IAAI,CAAC,QAAQ,IAAI,CAAC,WAAW;oBAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC;gBAC1G,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;oBAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;gBAC/F,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC3E,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,CAAC,IAAI,CAAC,WAAY,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC1D,CAAC;gBACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACzC,CAAC;YAED,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;gBACxB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC;gBAC1B,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC/E,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC3C,CAAC;YAED,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;gBACjE,CAAC;qBAAM,IAAI,WAAW,EAAE,CAAC;oBACvB,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;gBACvD,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC;gBACrD,CAAC;gBACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACzC,CAAC;YAED,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;gBACvD,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACzC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC/C,CAAC;YAED,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,MAAM;oBAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;gBAC1F,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAkB,CAAC;gBAC5D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC3C,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YACrD,CAAC;YAED,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,IAAI,CAAC,QAAQ,IAAI,CAAC,WAAW;oBAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC;gBAC5G,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;oBAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;gBACnG,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;gBACpF,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,CAAC,YAAY,CAAC,WAAY,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;gBACnE,CAAC;gBACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC3C,CAAC;YAED,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,IAAI,CAAC,QAAQ,IAAI,CAAC,WAAW;oBAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC;gBAC3G,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC/D,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,CAAC,KAAK,CAAC,WAAY,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC9C,CAAC;gBACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC1C,CAAC;YAED,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,GAAG;oBAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;gBACjF,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC3E,CAAC;qBAAM,IAAI,WAAW,EAAE,CAAC;oBACvB,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;gBACzD,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACxC,CAAC;gBACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC1C,CAAC;YAED,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,GAAG;oBAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;gBACpF,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC5D,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC7C,CAAC;YAED,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,IAAI,CAAC,QAAQ,IAAI,CAAC,WAAW;oBAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,qCAAqC,EAAE,CAAC;gBACrH,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,UAAU;oBAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,wCAAwC,EAAE,CAAC;gBAC5I,MAAM,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAY,CAAC;gBACnF,IAAI,cAAsB,CAAC;gBAC3B,IAAI,MAAM,CAAC,UAAU,IAAI,SAAS,EAAE,CAAC;oBACnC,MAAM,WAAW,GAAG,gBAAgB,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;oBAChF,IAAI,CAAC,WAAW;wBAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,MAAM,CAAC,UAAU,aAAa,EAAE,CAAC;oBAChH,cAAc,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAC;gBACxD,CAAC;qBAAM,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;oBAClC,cAAc,GAAG,MAAM,CAAC,eAAe,CAAC;gBAC1C,CAAC;qBAAM,CAAC;oBACN,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,wCAAwC,EAAE,CAAC;gBAC3F,CAAC;gBACD,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;gBACpE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACzC,CAAC;YAED,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,IAAI,CAAC,QAAQ,IAAI,CAAC,WAAW;oBAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC;gBAC5G,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM;oBAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;gBACxG,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC1F,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,CAAC,aAAa,CAAC,WAAY,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;gBACzE,CAAC;gBACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC3C,CAAC;YAED,KAAK,aAAa,CAAC,CAAC,CAAC;gBACnB,IAAI,CAAC,MAAM,CAAC,OAAO;oBAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,0CAA0C,EAAE,CAAC;gBACvH,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC;gBAClF,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC;gBAC9B,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE;oBACvD,MAAM,OAAO,GAAG,GAAG,KAAK,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC;oBACvE,IAAI,CAAC;wBAAE,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBACjC,MAAM,GAAG,GAAkC,EAAE,CAAC;oBAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACxC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBAC3B,IAAI,GAAG;4BAAE,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBAC3C,CAAC;oBACD,OAAO,GAAG,CAAC;gBACb,CAAC,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;gBACvC,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;YACvE,CAAC;YAED,KAAK,aAAa,CAAC,CAAC,CAAC;gBACnB,IAAI,CAAC,MAAM,CAAC,OAAO;oBAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC;gBACpG,IAAI,CAAC,MAAM,CAAC,GAAG;oBAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;gBACvF,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;oBAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;gBACxG,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC;gBACrF,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;oBACpC,MAAM,OAAO,GAAG,GAAG,KAAK,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC;oBACvE,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACxB,CAAC,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC3D,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAChD,CAAC;YAED,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC;gBAClD,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;gBAC3F,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;YACjE,CAAC;YAED,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM;oBAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;gBAC5G,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC3B,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAChG,8DAA8D;gBAC9D,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,YAAmB,CAAC,CAAC;gBACrD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC/C,CAAC;YAED,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;gBAChC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC5C,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,0CAA0C,EAAE,CAAC;YAC5F,CAAC;YAED,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;gBAClD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC5C,CAAC;YAED,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,cAAc;oBAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;gBAC1G,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,QAAQ;oBAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,oCAAoC,EAAE,CAAC;gBAExI,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;gBACxC,MAAM,MAAM,GAAG,MAAM,CAAC,gBAAgB,IAAI,IAAI,CAAC;gBAC/C,MAAM,OAAO,GAAc,EAAE,CAAC;gBAE9B,IAAI,YAAkC,CAAC;gBACvC,IAAI,OAA2B,CAAC;gBAChC,IAAI,MAAM,CAAC,QAAQ,IAAI,SAAS,EAAE,CAAC;oBACjC,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;oBACxE,IAAI,CAAC,KAAK;wBAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,MAAM,CAAC,QAAQ,aAAa,EAAE,CAAC;oBAC1G,YAAY,GAAG,KAAK,CAAC;gBACvB,CAAC;qBAAM,CAAC;oBACN,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC;gBACjC,CAAC;gBAED,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;gBAExC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC;oBACrC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;oBACvF,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;wBAClD,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;4BAC7B,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;wBAC7B,CAAC;6BAAM,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;4BACzC,IAAI,CAAC;gCAAC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gCAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;4BAAC,CAAC;4BACrH,MAAM,CAAC;gCAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;4BAAC,CAAC;wBACpC,CAAC;6BAAM,CAAC;4BACN,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wBAC1B,CAAC;oBACH,CAAC;oBAED,IAAI,EAAE,IAAI,QAAQ,GAAG,CAAC;wBAAE,MAAM;oBAE9B,IAAI,CAAC;wBACH,IAAI,YAAY,EAAE,CAAC;4BACjB,MAAM,GAAG,GAAG,mBAAmB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;4BACpD,IAAI,CAAC,MAAM,GAAG,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;gCAAE,MAAM;4BACrD,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;wBAC/B,CAAC;6BAAM,IAAI,OAAO,EAAE,CAAC;4BACnB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;4BACjC,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;gCAAE,MAAM;4BACpD,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE;gCAC5C,MAAM,MAAM,GAAG,IAAmB,CAAC;gCACnC,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC;oCAC1C,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,MAAM;oCAC9C,MAA4B,CAAC,QAAQ,KAAK,IAAI,CAAC;4BACpD,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;4BACtB,IAAI,UAAU;gCAAE,MAAM;4BACtB,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;wBAC9B,CAAC;oBACH,CAAC;oBAAC,MAAM,CAAC;wBAAC,MAAM;oBAAC,CAAC;oBAElB,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;oBAClC,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBAChF,CAAC;gBAED,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;YAC9D,CAAC;YAED,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,IAAI,CAAC,MAAM,CAAC,YAAY;oBAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC;gBAC7G,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBAC1D,IAAI,CAAC,OAAO;oBAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,MAAM,CAAC,YAAY,aAAa,EAAE,CAAC;gBAEtH,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;oBAChB,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC/D,CAAC;gBAED,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC3E,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC,CAAC;gBACxC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC3E,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC,CAAC;gBACxC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;gBACxD,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBAC/E,MAAM,eAAe,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBAE3C,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC3F,CAAC;YAED;gBACE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;QAC/E,CAAC;IACH,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACxD,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -10,8 +10,8 @@ export declare const schema: z.ZodObject<{
10
10
  job_id: z.ZodOptional<z.ZodString>;
11
11
  proxy: z.ZodOptional<z.ZodString>;
12
12
  }, "strip", z.ZodTypeAny, {
13
- urls: string[];
14
13
  timeout: number;
14
+ urls: string[];
15
15
  concurrency: number;
16
16
  return_content: boolean;
17
17
  proxy?: string | undefined;
@@ -19,8 +19,8 @@ export declare const schema: z.ZodObject<{
19
19
  job_id?: string | undefined;
20
20
  }, {
21
21
  urls: string[];
22
- proxy?: string | undefined;
23
22
  timeout?: number | undefined;
23
+ proxy?: string | undefined;
24
24
  concurrency?: number | undefined;
25
25
  return_content?: boolean | undefined;
26
26
  extraction_schema?: string | Record<string, unknown> | undefined;
@@ -10,17 +10,17 @@ export declare const schema: z.ZodObject<{
10
10
  chrome_profile: z.ZodOptional<z.ZodString>;
11
11
  }, "strip", z.ZodTypeAny, {
12
12
  url: string;
13
- max_depth: number;
14
13
  max_pages: number;
14
+ max_depth: number;
15
15
  concurrency: number;
16
16
  proxy?: string | undefined;
17
17
  chrome_profile?: string | undefined;
18
18
  }, {
19
19
  url: string;
20
+ max_pages?: number | undefined;
20
21
  proxy?: string | undefined;
21
22
  chrome_profile?: string | undefined;
22
23
  max_depth?: number | undefined;
23
- max_pages?: number | undefined;
24
24
  concurrency?: number | undefined;
25
25
  }>;
26
26
  export type CrawlInput = z.infer<typeof schema>;
@@ -8,13 +8,13 @@ export declare const schema: z.ZodObject<{
8
8
  max_pages: z.ZodDefault<z.ZodNumber>;
9
9
  }, "strip", z.ZodTypeAny, {
10
10
  name: string;
11
- description: string;
12
11
  url: string;
13
12
  max_pages: number;
13
+ description: string;
14
14
  }, {
15
15
  name: string;
16
- description: string;
17
16
  url: string;
17
+ description: string;
18
18
  max_pages?: number | undefined;
19
19
  }>;
20
20
  export type CreateSkillInput = z.infer<typeof schema>;
@@ -19,8 +19,8 @@ export declare const schema: z.ZodObject<{
19
19
  filter_content_type?: string | undefined;
20
20
  }, {
21
21
  url: string;
22
- proxy?: string | undefined;
23
22
  timeout?: number | undefined;
23
+ proxy?: string | undefined;
24
24
  chrome_profile?: string | undefined;
25
25
  wait_seconds?: number | undefined;
26
26
  include_headers?: boolean | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"discover-apis.d.ts","sourceRoot":"","sources":["../../src/tools/discover-apis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,IAAI,kBAAkB,CAAC;AAEpC,eAAO,MAAM,WAAW,sKAC6I,CAAC;AAEtK,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;EAYjB,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AAoEvD,wBAAsB,OAAO,CAAC,KAAK,EAAE,iBAAiB;;;;;GAgJrD"}
1
+ {"version":3,"file":"discover-apis.d.ts","sourceRoot":"","sources":["../../src/tools/discover-apis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,IAAI,kBAAkB,CAAC;AAEpC,eAAO,MAAM,WAAW,sKAC6I,CAAC;AAEtK,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;EAYjB,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AAoEvD,wBAAsB,OAAO,CAAC,KAAK,EAAE,iBAAiB;;;;;GAkJrD"}
@@ -3,6 +3,7 @@ import { isPlaywrightAvailable } from "../stealth/browser.js";
3
3
  import { acquirePage } from "../stealth/chrome-profile.js";
4
4
  import { resolveProxy } from "../stealth/proxy.js";
5
5
  import { normalizeUrl } from "../utils/url.js";
6
+ import { recordBrowserOutcome } from "../knowledge/index.js";
6
7
  import { DEFAULT_TIMEOUT_MS, MAX_URL_LENGTH, MAX_WAIT_SECONDS, MAX_TIMEOUT_MS } from "../constants.js";
7
8
  export const name = "discover_apis";
8
9
  export const description = "Navigate to a page and capture all API calls (XHR/fetch) from network traffic. Discovers REST and GraphQL endpoints automatically. Requires rebrowser-playwright.";
@@ -87,6 +88,7 @@ export async function execute(input) {
87
88
  }
88
89
  const url = normalizeUrl(input.url);
89
90
  const proxyUrl = resolveProxy(input.proxy);
91
+ const fetchStart = Date.now();
90
92
  const handle = await acquirePage({
91
93
  chromeProfile: input.chrome_profile,
92
94
  proxyUrl,
@@ -175,6 +177,7 @@ export async function execute(input) {
175
177
  waitUntil: "load",
176
178
  timeout: input.timeout,
177
179
  });
180
+ recordBrowserOutcome({ url, success: true, responseTimeMs: Date.now() - fetchStart, proxyUsed: !!proxyUrl });
178
181
  // Wait additional time for lazy-loaded API calls
179
182
  if (input.wait_seconds > 0) {
180
183
  await page.waitForTimeout(input.wait_seconds * 1000);
@@ -1 +1 @@
1
- {"version":3,"file":"discover-apis.js","sourceRoot":"","sources":["../../src/tools/discover-apis.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discover-apis.js","sourceRoot":"","sources":["../../src/tools/discover-apis.ts"],"names":[],"mappings":"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"}
@@ -11,20 +11,20 @@ export declare const schema: z.ZodObject<{
11
11
  video: z.ZodDefault<z.ZodBoolean>;
12
12
  all: z.ZodDefault<z.ZodBoolean>;
13
13
  }, "strip", z.ZodTypeAny, {
14
- images: boolean;
15
14
  output: string;
16
15
  video: boolean;
16
+ images: boolean;
17
17
  all: boolean;
18
18
  og_only: boolean;
19
- urls?: string | undefined;
20
19
  url?: string | undefined;
20
+ urls?: string | undefined;
21
21
  file?: string | undefined;
22
22
  }, {
23
23
  output: string;
24
+ video?: boolean | undefined;
25
+ url?: string | undefined;
24
26
  urls?: string | undefined;
25
27
  images?: boolean | undefined;
26
- url?: string | undefined;
27
- video?: boolean | undefined;
28
28
  all?: boolean | undefined;
29
29
  file?: string | undefined;
30
30
  og_only?: boolean | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../src/tools/download.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,eAAO,MAAM,IAAI,aAAa,CAAC;AAE/B,eAAO,MAAM,WAAW,wIAC+G,CAAC;AAExI,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;EASjB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AA2RnD,wBAAsB,OAAO,CAAC,KAAK,EAAE,aAAa;;;;;GA8GjD"}
1
+ {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../src/tools/download.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,eAAO,MAAM,IAAI,aAAa,CAAC;AAE/B,eAAO,MAAM,WAAW,wIAC+G,CAAC;AAExI,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;EASjB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AA6RnD,wBAAsB,OAAO,CAAC,KAAK,EAAE,aAAa;;;;;GA8GjD"}
@@ -5,6 +5,7 @@ import { MAX_URL_LENGTH } from "../constants.js";
5
5
  import { smartFetch } from "../stealth/index.js";
6
6
  import { isPlaywrightAvailable } from "../stealth/browser.js";
7
7
  import { acquirePage } from "../stealth/chrome-profile.js";
8
+ import { recordBrowserOutcome } from "../knowledge/index.js";
8
9
  import { toolResult, errorResult } from "../utils/tool-response.js";
9
10
  import { debugLog } from "../utils/debug.js";
10
11
  import * as cheerio from "cheerio";
@@ -207,7 +208,9 @@ async function downloadTikTok(url, outputDir) {
207
208
  const handle = await acquirePage();
208
209
  try {
209
210
  const { page } = handle;
211
+ const fetchStart = Date.now();
210
212
  await page.goto(url, { waitUntil: "load", timeout: 30_000 });
213
+ recordBrowserOutcome({ url, success: true, responseTimeMs: Date.now() - fetchStart });
211
214
  await page.waitForTimeout(3000);
212
215
  // Extract video src from the page
213
216
  const videoSrc = await page.evaluate(() => {