imperium-crawl 1.5.3 → 2.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 (125) hide show
  1. package/README.md +49 -34
  2. package/dist/constants.d.ts +2 -1
  3. package/dist/constants.d.ts.map +1 -1
  4. package/dist/constants.js +3 -1
  5. package/dist/constants.js.map +1 -1
  6. package/dist/network/interceptor.d.ts +19 -0
  7. package/dist/network/interceptor.d.ts.map +1 -0
  8. package/dist/network/interceptor.js +82 -0
  9. package/dist/network/interceptor.js.map +1 -0
  10. package/dist/network/types.d.ts +27 -0
  11. package/dist/network/types.d.ts.map +1 -0
  12. package/dist/network/types.js +2 -0
  13. package/dist/network/types.js.map +1 -0
  14. package/dist/recipes/index.d.ts.map +1 -1
  15. package/dist/recipes/index.js +6 -0
  16. package/dist/recipes/index.js.map +1 -1
  17. package/dist/recipes/influencer-competitor-spy.json +14 -0
  18. package/dist/recipes/influencer-hashtag-scout.json +14 -0
  19. package/dist/recipes/influencer-niche-discovery.json +14 -0
  20. package/dist/security/action-policy.d.ts +26 -0
  21. package/dist/security/action-policy.d.ts.map +1 -0
  22. package/dist/security/action-policy.js +136 -0
  23. package/dist/security/action-policy.js.map +1 -0
  24. package/dist/security/auth-vault.d.ts +49 -0
  25. package/dist/security/auth-vault.d.ts.map +1 -0
  26. package/dist/security/auth-vault.js +133 -0
  27. package/dist/security/auth-vault.js.map +1 -0
  28. package/dist/security/domain-filter.d.ts +19 -0
  29. package/dist/security/domain-filter.d.ts.map +1 -0
  30. package/dist/security/domain-filter.js +114 -0
  31. package/dist/security/domain-filter.js.map +1 -0
  32. package/dist/security/types.d.ts +19 -0
  33. package/dist/security/types.d.ts.map +1 -0
  34. package/dist/security/types.js +2 -0
  35. package/dist/security/types.js.map +1 -0
  36. package/dist/sessions/encryption.d.ts +37 -0
  37. package/dist/sessions/encryption.d.ts.map +1 -0
  38. package/dist/sessions/encryption.js +108 -0
  39. package/dist/sessions/encryption.js.map +1 -0
  40. package/dist/sessions/index.d.ts +1 -0
  41. package/dist/sessions/index.d.ts.map +1 -1
  42. package/dist/sessions/index.js +1 -0
  43. package/dist/sessions/index.js.map +1 -1
  44. package/dist/sessions/manager.d.ts +3 -0
  45. package/dist/sessions/manager.d.ts.map +1 -1
  46. package/dist/sessions/manager.js +28 -2
  47. package/dist/sessions/manager.js.map +1 -1
  48. package/dist/skills/manager.d.ts +11 -2
  49. package/dist/skills/manager.d.ts.map +1 -1
  50. package/dist/skills/manager.js.map +1 -1
  51. package/dist/snapshot/annotator.d.ts +21 -0
  52. package/dist/snapshot/annotator.d.ts.map +1 -0
  53. package/dist/snapshot/annotator.js +152 -0
  54. package/dist/snapshot/annotator.js.map +1 -0
  55. package/dist/snapshot/boundary.d.ts +7 -0
  56. package/dist/snapshot/boundary.d.ts.map +1 -0
  57. package/dist/snapshot/boundary.js +12 -0
  58. package/dist/snapshot/boundary.js.map +1 -0
  59. package/dist/snapshot/differ.d.ts +40 -0
  60. package/dist/snapshot/differ.d.ts.map +1 -0
  61. package/dist/snapshot/differ.js +194 -0
  62. package/dist/snapshot/differ.js.map +1 -0
  63. package/dist/snapshot/extractor.d.ts +27 -0
  64. package/dist/snapshot/extractor.d.ts.map +1 -0
  65. package/dist/snapshot/extractor.js +265 -0
  66. package/dist/snapshot/extractor.js.map +1 -0
  67. package/dist/snapshot/index.d.ts +8 -0
  68. package/dist/snapshot/index.d.ts.map +1 -0
  69. package/dist/snapshot/index.js +6 -0
  70. package/dist/snapshot/index.js.map +1 -0
  71. package/dist/snapshot/store.d.ts +28 -0
  72. package/dist/snapshot/store.d.ts.map +1 -0
  73. package/dist/snapshot/store.js +65 -0
  74. package/dist/snapshot/store.js.map +1 -0
  75. package/dist/snapshot/types.d.ts +42 -0
  76. package/dist/snapshot/types.d.ts.map +1 -0
  77. package/dist/snapshot/types.js +2 -0
  78. package/dist/snapshot/types.js.map +1 -0
  79. package/dist/social/ai-fallback.d.ts +22 -0
  80. package/dist/social/ai-fallback.d.ts.map +1 -0
  81. package/dist/social/ai-fallback.js +137 -0
  82. package/dist/social/ai-fallback.js.map +1 -0
  83. package/dist/social/parsers.d.ts +28 -0
  84. package/dist/social/parsers.d.ts.map +1 -0
  85. package/dist/social/parsers.js +146 -0
  86. package/dist/social/parsers.js.map +1 -0
  87. package/dist/social/types.d.ts +55 -0
  88. package/dist/social/types.d.ts.map +1 -0
  89. package/dist/social/types.js +5 -0
  90. package/dist/social/types.js.map +1 -0
  91. package/dist/social/whisper.d.ts +29 -0
  92. package/dist/social/whisper.d.ts.map +1 -0
  93. package/dist/social/whisper.js +88 -0
  94. package/dist/social/whisper.js.map +1 -0
  95. package/dist/tools/index.d.ts.map +1 -1
  96. package/dist/tools/index.js +7 -0
  97. package/dist/tools/index.js.map +1 -1
  98. package/dist/tools/interact.d.ts +194 -5
  99. package/dist/tools/interact.d.ts.map +1 -1
  100. package/dist/tools/interact.js +355 -20
  101. package/dist/tools/interact.js.map +1 -1
  102. package/dist/tools/manifest.d.ts.map +1 -1
  103. package/dist/tools/manifest.js +9 -0
  104. package/dist/tools/manifest.js.map +1 -1
  105. package/dist/tools/reddit.d.ts +36 -0
  106. package/dist/tools/reddit.d.ts.map +1 -0
  107. package/dist/tools/reddit.js +190 -0
  108. package/dist/tools/reddit.js.map +1 -0
  109. package/dist/tools/run-skill.d.ts +18 -0
  110. package/dist/tools/run-skill.d.ts.map +1 -1
  111. package/dist/tools/run-skill.js +681 -0
  112. package/dist/tools/run-skill.js.map +1 -1
  113. package/dist/tools/snapshot.d.ts +53 -0
  114. package/dist/tools/snapshot.d.ts.map +1 -0
  115. package/dist/tools/snapshot.js +160 -0
  116. package/dist/tools/snapshot.js.map +1 -0
  117. package/dist/tools/tiktok.d.ts +30 -0
  118. package/dist/tools/tiktok.d.ts.map +1 -0
  119. package/dist/tools/tiktok.js +246 -0
  120. package/dist/tools/tiktok.js.map +1 -0
  121. package/dist/tools/youtube.d.ts +33 -0
  122. package/dist/tools/youtube.d.ts.map +1 -0
  123. package/dist/tools/youtube.js +489 -0
  124. package/dist/tools/youtube.js.map +1 -0
  125. package/package.json +1 -1
@@ -6,6 +6,11 @@ import { normalizeUrl } from "../utils/url.js";
6
6
  import { htmlToMarkdown } from "../utils/markdown.js";
7
7
  import { getSessionManager } from "../sessions/index.js";
8
8
  import { MAX_URL_LENGTH, MAX_TIMEOUT_MS, HUMAN_DELAY_MIN_MS, HUMAN_DELAY_MAX_MS, } from "../constants.js";
9
+ import { getSnapshotStore, getEnhancedSnapshot } from "../snapshot/index.js";
10
+ import { checkPolicy } from "../security/action-policy.js";
11
+ import { installDomainFilter } from "../security/domain-filter.js";
12
+ import { setupInterception, getRequestLog } from "../network/interceptor.js";
13
+ import { getAuthProfile, updateLastLogin } from "../security/auth-vault.js";
9
14
  export const name = "interact";
10
15
  export const description = "Open a browser, execute a sequence of actions (click, type, scroll, screenshot, evaluate JS, etc.) and optionally persist browser sessions (cookies) between calls. Enables multi-step web automation: login flows, form fills, paginated scraping.";
11
16
  const actionSchema = z.object({
@@ -20,8 +25,17 @@ const actionSchema = z.object({
20
25
  "hover",
21
26
  "press",
22
27
  "navigate",
28
+ "drag",
29
+ "upload",
30
+ "storage_get",
31
+ "storage_set",
32
+ "cookie_get",
33
+ "cookie_set",
34
+ "pdf",
35
+ "auth_login",
23
36
  ]),
24
- selector: z.string().max(500).optional().describe("CSS selector (for click, type, hover, select, press, wait)"),
37
+ selector: z.string().max(500).optional().describe("CSS selector (for click, type, hover, select, press, wait). Mutually exclusive with ref."),
38
+ ref: z.string().regex(/^@?e\d+$/).optional().describe("Ref from snapshot (e.g. 'e5' or '@e5'). Resolves to semantic locator. Mutually exclusive with selector."),
25
39
  text: z.string().max(10000).optional().describe("Text to type (for type action)"),
26
40
  value: z.string().max(1000).optional().describe("Option value to select (for select action)"),
27
41
  script: z.string().max(50000).optional().describe("JS to evaluate in page context (for evaluate action)"),
@@ -30,6 +44,21 @@ const actionSchema = z.object({
30
44
  duration: z.number().min(0).max(30000).optional().describe("Wait duration in ms (for wait action without selector)"),
31
45
  x: z.number().optional().describe("Horizontal scroll delta in px (for scroll, default 0)"),
32
46
  y: z.number().optional().describe("Vertical scroll delta in px (for scroll, default 500)"),
47
+ target_selector: z.string().max(500).optional().describe("Target CSS selector for drag action"),
48
+ target_ref: z.string().regex(/^@?e\d+$/).optional().describe("Target ref for drag action"),
49
+ file_paths: z.array(z.string().max(1000)).max(10).optional().describe("File paths to upload (for upload action)"),
50
+ storage: z.enum(["local", "session"]).optional().describe("Storage type (for storage_get/storage_set)"),
51
+ auth_profile: z.string().max(200).optional().describe("Auth vault profile name (for auth_login action)"),
52
+ cookies: z.array(z.object({
53
+ name: z.string(),
54
+ value: z.string(),
55
+ domain: z.string().optional(),
56
+ path: z.string().optional(),
57
+ expires: z.number().optional(),
58
+ httpOnly: z.boolean().optional(),
59
+ secure: z.boolean().optional(),
60
+ sameSite: z.enum(["Strict", "Lax", "None"]).optional(),
61
+ })).max(50).optional().describe("Cookies to set (for cookie_set action)"),
33
62
  });
34
63
  export const schema = z.object({
35
64
  url: z.string().max(MAX_URL_LENGTH).describe("Starting URL to navigate to"),
@@ -66,28 +95,141 @@ export const schema = z.object({
66
95
  .max(1000)
67
96
  .optional()
68
97
  .describe("Path to Chrome user data directory for authenticated sessions. Overrides CHROME_PROFILE_PATH env var."),
98
+ return_snapshot: z
99
+ .boolean()
100
+ .default(false)
101
+ .describe("Take a fresh ARIA snapshot after all actions and include in output. Useful for verifying results."),
102
+ action_policy_path: z
103
+ .string()
104
+ .max(1000)
105
+ .optional()
106
+ .describe("Path to action policy JSON file. Controls which action categories are allowed/denied/need confirmation."),
107
+ allowed_domains: z
108
+ .array(z.string().max(500))
109
+ .max(100)
110
+ .optional()
111
+ .describe("Domain whitelist. Blocks requests to non-allowed domains. Supports wildcards (e.g. '*.example.com')."),
112
+ intercept_rules: z
113
+ .array(z.object({
114
+ url_pattern: z.string().max(500),
115
+ action: z.enum(["block", "mock", "modify", "log"]),
116
+ response: z.object({
117
+ status: z.number().optional(),
118
+ body: z.string().max(100_000).optional(),
119
+ headers: z.record(z.string()).optional(),
120
+ contentType: z.string().optional(),
121
+ }).optional(),
122
+ }))
123
+ .max(50)
124
+ .optional()
125
+ .describe("Network interception rules. Block, mock, modify, or log requests matching URL patterns."),
126
+ return_network_log: z
127
+ .boolean()
128
+ .default(false)
129
+ .describe("Include captured network request log in output"),
130
+ device: z
131
+ .string()
132
+ .max(100)
133
+ .optional()
134
+ .describe("Device name for emulation (e.g. 'iPhone 14', 'Pixel 5'). Uses Playwright's device descriptors."),
135
+ geolocation: z
136
+ .object({
137
+ latitude: z.number().min(-90).max(90),
138
+ longitude: z.number().min(-180).max(180),
139
+ })
140
+ .optional()
141
+ .describe("Geolocation override"),
69
142
  });
70
143
  function humanDelay() {
71
144
  return (HUMAN_DELAY_MIN_MS +
72
145
  Math.floor(Math.random() * (HUMAN_DELAY_MAX_MS - HUMAN_DELAY_MIN_MS)));
73
146
  }
74
- async function executeAction(page, action, screenshots, timeout) {
147
+ /**
148
+ * Resolve a ref to a Playwright locator using semantic selectors.
149
+ * Returns the locator from getByRole() — much more robust than CSS paths.
150
+ */
151
+ function resolveRefToLocator(page, refEntry) {
152
+ const locator = refEntry.name
153
+ ? page.getByRole(refEntry.role, {
154
+ name: refEntry.name,
155
+ exact: true,
156
+ })
157
+ : page.getByRole(refEntry.role);
158
+ return refEntry.nth !== undefined ? locator.nth(refEntry.nth) : locator;
159
+ }
160
+ /**
161
+ * Get the effective selector or locator for an action.
162
+ * If ref is provided, resolve it. If selector, use CSS. Otherwise null.
163
+ */
164
+ function getTargetSelector(action, sessionId) {
165
+ if (action.ref && action.selector) {
166
+ return { error: "ref and selector are mutually exclusive — provide one, not both" };
167
+ }
168
+ if (action.ref && sessionId) {
169
+ const entry = getSnapshotStore().resolveRef(sessionId, action.ref);
170
+ if (!entry) {
171
+ return { error: `ref '${action.ref}' not found. Take a snapshot first to get valid refs.` };
172
+ }
173
+ return { refEntry: entry };
174
+ }
175
+ if (action.ref && !sessionId) {
176
+ return { error: "ref requires session_id to resolve. Provide session_id or use selector instead." };
177
+ }
178
+ return { selector: action.selector };
179
+ }
180
+ /**
181
+ * Build a CSS-like selector string from a ref entry for APIs
182
+ * that require string selectors (e.g. dragAndDrop).
183
+ */
184
+ function buildCssSelectorFromRef(refEntry) {
185
+ const roleMap = {
186
+ button: "button",
187
+ link: "a",
188
+ textbox: "input",
189
+ searchbox: "input[type=search]",
190
+ checkbox: "input[type=checkbox]",
191
+ radio: "input[type=radio]",
192
+ };
193
+ const tag = roleMap[refEntry.role] ?? `[role="${refEntry.role}"]`;
194
+ return refEntry.name ? `${tag}:has-text("${refEntry.name.replace(/"/g, '\\"')}")` : tag;
195
+ }
196
+ async function executeAction(page, action, screenshots, timeout, sessionId) {
75
197
  try {
198
+ // Resolve ref or selector for actions that need a target
199
+ const needsTarget = ["click", "type", "hover", "select", "press", "wait", "drag", "upload"].includes(action.type);
200
+ let refEntry;
201
+ let cssSelector;
202
+ if (needsTarget && (action.ref || action.selector)) {
203
+ const target = getTargetSelector(action, sessionId);
204
+ if (target.error)
205
+ return { type: action.type, success: false, error: target.error };
206
+ refEntry = target.refEntry;
207
+ cssSelector = target.selector;
208
+ }
76
209
  switch (action.type) {
77
210
  case "click": {
78
- if (!action.selector)
79
- return { type: "click", success: false, error: "selector required" };
80
- await page.click(action.selector, { timeout });
81
- // Wait for potential navigation/re-render — ignore if none happens
211
+ if (!refEntry && !cssSelector)
212
+ return { type: "click", success: false, error: "selector or ref required" };
213
+ if (refEntry) {
214
+ await resolveRefToLocator(page, refEntry).click({ timeout });
215
+ }
216
+ else {
217
+ await page.click(cssSelector, { timeout });
218
+ }
82
219
  await page.waitForLoadState("networkidle", { timeout: 5000 }).catch(() => { });
83
220
  return { type: "click", success: true };
84
221
  }
85
222
  case "type": {
86
- if (!action.selector)
87
- return { type: "type", success: false, error: "selector required" };
223
+ if (!refEntry && !cssSelector)
224
+ return { type: "type", success: false, error: "selector or ref required" };
88
225
  if (action.text === undefined)
89
226
  return { type: "type", success: false, error: "text required" };
90
- await page.fill(action.selector, action.text, { timeout });
227
+ if (refEntry) {
228
+ await resolveRefToLocator(page, refEntry).fill(action.text, { timeout });
229
+ }
230
+ else {
231
+ await page.fill(cssSelector, action.text, { timeout });
232
+ }
91
233
  return { type: "type", success: true };
92
234
  }
93
235
  case "scroll": {
@@ -97,8 +239,11 @@ async function executeAction(page, action, screenshots, timeout) {
97
239
  return { type: "scroll", success: true };
98
240
  }
99
241
  case "wait": {
100
- if (action.selector) {
101
- await page.waitForSelector(action.selector, { timeout });
242
+ if (refEntry) {
243
+ await resolveRefToLocator(page, refEntry).waitFor({ timeout });
244
+ }
245
+ else if (cssSelector) {
246
+ await page.waitForSelector(cssSelector, { timeout });
102
247
  }
103
248
  else {
104
249
  await page.waitForTimeout(action.duration ?? 1000);
@@ -118,24 +263,37 @@ async function executeAction(page, action, screenshots, timeout) {
118
263
  return { type: "evaluate", success: true, result };
119
264
  }
120
265
  case "select": {
121
- if (!action.selector)
122
- return { type: "select", success: false, error: "selector required" };
266
+ if (!refEntry && !cssSelector)
267
+ return { type: "select", success: false, error: "selector or ref required" };
123
268
  if (action.value === undefined)
124
269
  return { type: "select", success: false, error: "value required" };
125
- await page.selectOption(action.selector, action.value, { timeout });
270
+ if (refEntry) {
271
+ await resolveRefToLocator(page, refEntry).selectOption(action.value, { timeout });
272
+ }
273
+ else {
274
+ await page.selectOption(cssSelector, action.value, { timeout });
275
+ }
126
276
  return { type: "select", success: true };
127
277
  }
128
278
  case "hover": {
129
- if (!action.selector)
130
- return { type: "hover", success: false, error: "selector required" };
131
- await page.hover(action.selector, { timeout });
279
+ if (!refEntry && !cssSelector)
280
+ return { type: "hover", success: false, error: "selector or ref required" };
281
+ if (refEntry) {
282
+ await resolveRefToLocator(page, refEntry).hover({ timeout });
283
+ }
284
+ else {
285
+ await page.hover(cssSelector, { timeout });
286
+ }
132
287
  return { type: "hover", success: true };
133
288
  }
134
289
  case "press": {
135
290
  if (!action.key)
136
291
  return { type: "press", success: false, error: "key required" };
137
- if (action.selector) {
138
- await page.press(action.selector, action.key, { timeout });
292
+ if (refEntry) {
293
+ await resolveRefToLocator(page, refEntry).press(action.key, { timeout });
294
+ }
295
+ else if (cssSelector) {
296
+ await page.press(cssSelector, action.key, { timeout });
139
297
  }
140
298
  else {
141
299
  await page.keyboard.press(action.key);
@@ -148,6 +306,125 @@ async function executeAction(page, action, screenshots, timeout) {
148
306
  await page.goto(action.url, { waitUntil: "load", timeout });
149
307
  return { type: "navigate", success: true };
150
308
  }
309
+ case "drag": {
310
+ if (!refEntry && !cssSelector)
311
+ return { type: "drag", success: false, error: "selector or ref required for source" };
312
+ if (!action.target_selector && !action.target_ref)
313
+ return { type: "drag", success: false, error: "target_selector or target_ref required" };
314
+ // Resolve source
315
+ const sourceSelector = refEntry
316
+ ? buildCssSelectorFromRef(refEntry)
317
+ : cssSelector;
318
+ // Resolve target
319
+ let targetSelector;
320
+ if (action.target_ref && sessionId) {
321
+ const targetEntry = getSnapshotStore().resolveRef(sessionId, action.target_ref);
322
+ if (!targetEntry)
323
+ return { type: "drag", success: false, error: `target ref '${action.target_ref}' not found` };
324
+ targetSelector = buildCssSelectorFromRef(targetEntry);
325
+ }
326
+ else if (action.target_selector) {
327
+ targetSelector = action.target_selector;
328
+ }
329
+ else {
330
+ return { type: "drag", success: false, error: "target_selector or target_ref required" };
331
+ }
332
+ await page.dragAndDrop(sourceSelector, targetSelector, { timeout });
333
+ return { type: "drag", success: true };
334
+ }
335
+ case "upload": {
336
+ if (!refEntry && !cssSelector)
337
+ return { type: "upload", success: false, error: "selector or ref required" };
338
+ if (!action.file_paths?.length)
339
+ return { type: "upload", success: false, error: "file_paths required" };
340
+ if (refEntry) {
341
+ await resolveRefToLocator(page, refEntry).setInputFiles(action.file_paths, { timeout });
342
+ }
343
+ else {
344
+ await page.setInputFiles(cssSelector, action.file_paths, { timeout });
345
+ }
346
+ return { type: "upload", success: true };
347
+ }
348
+ case "storage_get": {
349
+ if (!action.storage)
350
+ return { type: "storage_get", success: false, error: "storage type required (local or session)" };
351
+ const storageObj = action.storage === "local" ? "localStorage" : "sessionStorage";
352
+ const storageKey = action.key;
353
+ const storageResult = await page.evaluate(({ obj, k }) => {
354
+ const storage = obj === "localStorage" ? localStorage : sessionStorage;
355
+ if (k)
356
+ return storage.getItem(k);
357
+ const all = {};
358
+ for (let i = 0; i < storage.length; i++) {
359
+ const key = storage.key(i);
360
+ if (key)
361
+ all[key] = storage.getItem(key);
362
+ }
363
+ return all;
364
+ }, { obj: storageObj, k: storageKey });
365
+ return { type: "storage_get", success: true, result: storageResult };
366
+ }
367
+ case "storage_set": {
368
+ if (!action.storage)
369
+ return { type: "storage_set", success: false, error: "storage type required" };
370
+ if (!action.key)
371
+ return { type: "storage_set", success: false, error: "key required" };
372
+ if (action.value === undefined)
373
+ return { type: "storage_set", success: false, error: "value required" };
374
+ const storageTarget = action.storage === "local" ? "localStorage" : "sessionStorage";
375
+ await page.evaluate(({ obj, k, v }) => {
376
+ const storage = obj === "localStorage" ? localStorage : sessionStorage;
377
+ storage.setItem(k, v);
378
+ }, { obj: storageTarget, k: action.key, v: action.value });
379
+ return { type: "storage_set", success: true };
380
+ }
381
+ case "cookie_get": {
382
+ const allCookies = await page.context().cookies();
383
+ let filtered = allCookies;
384
+ if (action.key) {
385
+ filtered = allCookies.filter((c) => c.name === action.key);
386
+ }
387
+ return { type: "cookie_get", success: true, result: filtered };
388
+ }
389
+ case "cookie_set": {
390
+ if (!action.cookies?.length)
391
+ return { type: "cookie_set", success: false, error: "cookies array required" };
392
+ const url = page.url();
393
+ const cookiesToSet = action.cookies.map((c) => ({
394
+ ...c,
395
+ url: c.domain ? undefined : url,
396
+ }));
397
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
398
+ await page.context().addCookies(cookiesToSet);
399
+ return { type: "cookie_set", success: true };
400
+ }
401
+ case "pdf": {
402
+ const pdfBuf = await page.pdf();
403
+ screenshots.push(pdfBuf.toString("base64"));
404
+ return { type: "pdf", success: true, result: "PDF saved to screenshots array as base64" };
405
+ }
406
+ case "auth_login": {
407
+ if (!action.auth_profile)
408
+ return { type: "auth_login", success: false, error: "auth_profile name required" };
409
+ const profile = await getAuthProfile(action.auth_profile);
410
+ if (!profile)
411
+ return { type: "auth_login", success: false, error: `Auth profile '${action.auth_profile}' not found` };
412
+ // Navigate to login page if needed
413
+ if (profile.url) {
414
+ await page.goto(profile.url, { waitUntil: "load", timeout });
415
+ }
416
+ // Fill credentials
417
+ await page.fill(profile.selectors.username, profile.username, { timeout });
418
+ await page.waitForTimeout(humanDelay());
419
+ await page.fill(profile.selectors.password, profile.password, { timeout });
420
+ await page.waitForTimeout(humanDelay());
421
+ // Submit
422
+ await page.click(profile.selectors.submit, { timeout });
423
+ await page.waitForLoadState("networkidle", { timeout: 10000 }).catch(() => { });
424
+ // Update last login
425
+ await updateLastLogin(action.auth_profile);
426
+ return { type: "auth_login", success: true, result: `Logged in as ${profile.username}` };
427
+ }
151
428
  default:
152
429
  return { type: action.type, success: false, error: "unknown action type" };
153
430
  }
@@ -181,6 +458,34 @@ export async function execute(input) {
181
458
  });
182
459
  try {
183
460
  const { page } = handle;
461
+ // ── Install domain filter ──
462
+ if (input.allowed_domains?.length) {
463
+ await installDomainFilter(page.context(), input.allowed_domains);
464
+ }
465
+ // ── Set up network interception ──
466
+ if (input.intercept_rules?.length) {
467
+ await setupInterception(page, input.intercept_rules);
468
+ }
469
+ // ── Device emulation ──
470
+ if (input.device || input.geolocation) {
471
+ try {
472
+ if (input.device) {
473
+ const { devices } = await import("rebrowser-playwright");
474
+ const descriptor = devices[input.device];
475
+ if (descriptor) {
476
+ await page.setViewportSize(descriptor.viewport);
477
+ // User agent is set at context level — emit note
478
+ }
479
+ }
480
+ if (input.geolocation) {
481
+ await page.context().grantPermissions(["geolocation"]);
482
+ await page.context().setGeolocation(input.geolocation);
483
+ }
484
+ }
485
+ catch {
486
+ // Non-critical — continue without emulation
487
+ }
488
+ }
184
489
  // ── Restore session cookies ──
185
490
  if (input.session_id) {
186
491
  const session = await getSessionManager().load(input.session_id);
@@ -194,9 +499,18 @@ export async function execute(input) {
194
499
  const actionResults = [];
195
500
  const midScreenshots = [];
196
501
  for (const action of input.actions) {
502
+ // Check action policy if configured
503
+ if (input.action_policy_path) {
504
+ const decision = await checkPolicy(action.type, input.action_policy_path);
505
+ if (decision === "deny") {
506
+ actionResults.push({ type: action.type, success: false, error: `Action '${action.type}' denied by policy` });
507
+ continue;
508
+ }
509
+ // "confirm" is treated as "allow" in MCP context (no interactive prompt available)
510
+ }
197
511
  // Human-like delay between actions
198
512
  await page.waitForTimeout(humanDelay());
199
- const result = await executeAction(page, action, midScreenshots, input.timeout);
513
+ const result = await executeAction(page, action, midScreenshots, input.timeout, input.session_id);
200
514
  actionResults.push(result);
201
515
  }
202
516
  // ── Save session ──
@@ -239,6 +553,27 @@ export async function execute(input) {
239
553
  const html = await page.content();
240
554
  output.content = htmlToMarkdown(html);
241
555
  }
556
+ // Network log
557
+ if (input.return_network_log) {
558
+ output.network_log = getRequestLog(page);
559
+ }
560
+ // Post-action snapshot
561
+ if (input.return_snapshot && input.session_id) {
562
+ try {
563
+ const snapshot = await getEnhancedSnapshot(page, { interactive: true, compact: true });
564
+ getSnapshotStore().save(input.session_id, snapshot.refs, page.url());
565
+ output.snapshot = {
566
+ tree: snapshot.tree,
567
+ stats: {
568
+ ...snapshot.stats,
569
+ refCount: Object.keys(snapshot.refs).length,
570
+ },
571
+ };
572
+ }
573
+ catch {
574
+ output.snapshot_error = "Failed to generate post-action snapshot";
575
+ }
576
+ }
242
577
  const content = [
243
578
  { type: "text", text: JSON.stringify(output, null, 2) },
244
579
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"interact.js","sourceRoot":"","sources":["../../src/tools/interact.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interact.js","sourceRoot":"","sources":["../../src/tools/interact.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/tools/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,aAAa;IAC5B,6EAA6E;IAC7E,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,aAAa,EAAE,aAAa,EA+GxC,CAAC"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/tools/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,aAAa;IAC5B,6EAA6E;IAC7E,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,aAAa,EAAE,aAAa,EA0HxC,CAAC"}
@@ -106,5 +106,14 @@ export const TOOL_MANIFEST = [
106
106
  cmd: "delete-job",
107
107
  description: "Delete a batch scrape job and its stored results by job_id.",
108
108
  },
109
+ // Social media
110
+ {
111
+ cmd: "youtube",
112
+ description: "Search YouTube videos, get video details, comments, transcripts, and channel info. No API key needed.",
113
+ },
114
+ {
115
+ cmd: "reddit",
116
+ description: "Search Reddit, browse subreddits, get posts and comments. No API key needed.",
117
+ },
109
118
  ];
110
119
  //# sourceMappingURL=manifest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/tools/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,MAAM,CAAC,MAAM,aAAa,GAAoB;IAC5C,WAAW;IACX;QACE,GAAG,EAAE,QAAQ;QACb,WAAW,EACT,sKAAsK;KACzK;IACD;QACE,GAAG,EAAE,OAAO;QACZ,WAAW,EACT,qKAAqK;KACxK;IACD;QACE,GAAG,EAAE,KAAK;QACV,WAAW,EACT,8GAA8G;KACjH;IACD;QACE,GAAG,EAAE,SAAS;QACd,WAAW,EACT,6JAA6J;KAChK;IACD;QACE,GAAG,EAAE,aAAa;QAClB,WAAW,EACT,+HAA+H;KAClI;IACD;QACE,GAAG,EAAE,YAAY;QACjB,WAAW,EACT,iFAAiF;KACpF;IACD,SAAS;IACT;QACE,GAAG,EAAE,QAAQ;QACb,WAAW,EACT,qFAAqF;KACxF;IACD;QACE,GAAG,EAAE,aAAa;QAClB,WAAW,EAAE,0EAA0E;KACxF;IACD;QACE,GAAG,EAAE,cAAc;QACnB,WAAW,EAAE,mEAAmE;KACjF;IACD;QACE,GAAG,EAAE,cAAc;QACnB,WAAW,EAAE,mEAAmE;KACjF;IACD,SAAS;IACT;QACE,GAAG,EAAE,cAAc;QACnB,WAAW,EACT,4IAA4I;KAC/I;IACD;QACE,GAAG,EAAE,WAAW;QAChB,WAAW,EAAE,+EAA+E;KAC7F;IACD;QACE,GAAG,EAAE,aAAa;QAClB,WAAW,EAAE,yDAAyD;KACvE;IACD,gBAAgB;IAChB;QACE,GAAG,EAAE,eAAe;QACpB,WAAW,EACT,mKAAmK;KACtK;IACD;QACE,GAAG,EAAE,WAAW;QAChB,WAAW,EACT,+GAA+G;KAClH;IACD;QACE,GAAG,EAAE,mBAAmB;QACxB,WAAW,EACT,4GAA4G;KAC/G;IACD,KAAK;IACL;QACE,GAAG,EAAE,YAAY;QACjB,WAAW,EACT,oJAAoJ;KACvJ;IACD,cAAc;IACd;QACE,GAAG,EAAE,UAAU;QACf,WAAW,EACT,6IAA6I;KAChJ;IACD,QAAQ;IACR;QACE,GAAG,EAAE,cAAc;QACnB,WAAW,EACT,qGAAqG;KACxG;IACD;QACE,GAAG,EAAE,WAAW;QAChB,WAAW,EACT,4DAA4D;KAC/D;IACD;QACE,GAAG,EAAE,YAAY;QACjB,WAAW,EAAE,wEAAwE;KACtF;IACD;QACE,GAAG,EAAE,YAAY;QACjB,WAAW,EAAE,6DAA6D;KAC3E;CACF,CAAC"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/tools/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,MAAM,CAAC,MAAM,aAAa,GAAoB;IAC5C,WAAW;IACX;QACE,GAAG,EAAE,QAAQ;QACb,WAAW,EACT,sKAAsK;KACzK;IACD;QACE,GAAG,EAAE,OAAO;QACZ,WAAW,EACT,qKAAqK;KACxK;IACD;QACE,GAAG,EAAE,KAAK;QACV,WAAW,EACT,8GAA8G;KACjH;IACD;QACE,GAAG,EAAE,SAAS;QACd,WAAW,EACT,6JAA6J;KAChK;IACD;QACE,GAAG,EAAE,aAAa;QAClB,WAAW,EACT,+HAA+H;KAClI;IACD;QACE,GAAG,EAAE,YAAY;QACjB,WAAW,EACT,iFAAiF;KACpF;IACD,SAAS;IACT;QACE,GAAG,EAAE,QAAQ;QACb,WAAW,EACT,qFAAqF;KACxF;IACD;QACE,GAAG,EAAE,aAAa;QAClB,WAAW,EAAE,0EAA0E;KACxF;IACD;QACE,GAAG,EAAE,cAAc;QACnB,WAAW,EAAE,mEAAmE;KACjF;IACD;QACE,GAAG,EAAE,cAAc;QACnB,WAAW,EAAE,mEAAmE;KACjF;IACD,SAAS;IACT;QACE,GAAG,EAAE,cAAc;QACnB,WAAW,EACT,4IAA4I;KAC/I;IACD;QACE,GAAG,EAAE,WAAW;QAChB,WAAW,EAAE,+EAA+E;KAC7F;IACD;QACE,GAAG,EAAE,aAAa;QAClB,WAAW,EAAE,yDAAyD;KACvE;IACD,gBAAgB;IAChB;QACE,GAAG,EAAE,eAAe;QACpB,WAAW,EACT,mKAAmK;KACtK;IACD;QACE,GAAG,EAAE,WAAW;QAChB,WAAW,EACT,+GAA+G;KAClH;IACD;QACE,GAAG,EAAE,mBAAmB;QACxB,WAAW,EACT,4GAA4G;KAC/G;IACD,KAAK;IACL;QACE,GAAG,EAAE,YAAY;QACjB,WAAW,EACT,oJAAoJ;KACvJ;IACD,cAAc;IACd;QACE,GAAG,EAAE,UAAU;QACf,WAAW,EACT,6IAA6I;KAChJ;IACD,QAAQ;IACR;QACE,GAAG,EAAE,cAAc;QACnB,WAAW,EACT,qGAAqG;KACxG;IACD;QACE,GAAG,EAAE,WAAW;QAChB,WAAW,EACT,4DAA4D;KAC/D;IACD;QACE,GAAG,EAAE,YAAY;QACjB,WAAW,EAAE,wEAAwE;KACtF;IACD;QACE,GAAG,EAAE,YAAY;QACjB,WAAW,EAAE,6DAA6D;KAC3E;IACD,eAAe;IACf;QACE,GAAG,EAAE,SAAS;QACd,WAAW,EACT,uGAAuG;KAC1G;IACD;QACE,GAAG,EAAE,QAAQ;QACb,WAAW,EACT,8EAA8E;KACjF;CACF,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { z } from "zod";
2
+ export declare const name = "reddit";
3
+ export declare const description = "Search Reddit, browse subreddits, get posts and comments. No API key needed.";
4
+ export declare const schema: z.ZodObject<{
5
+ action: z.ZodEnum<["search", "posts", "comments", "subreddit"]>;
6
+ query: z.ZodOptional<z.ZodString>;
7
+ subreddit: z.ZodOptional<z.ZodString>;
8
+ post_url: z.ZodOptional<z.ZodString>;
9
+ sort: z.ZodDefault<z.ZodEnum<["hot", "new", "top", "rising"]>>;
10
+ time: z.ZodDefault<z.ZodEnum<["hour", "day", "week", "month", "year", "all"]>>;
11
+ limit: z.ZodDefault<z.ZodNumber>;
12
+ }, "strip", z.ZodTypeAny, {
13
+ action: "search" | "posts" | "subreddit" | "comments";
14
+ time: "hour" | "day" | "week" | "month" | "year" | "all";
15
+ sort: "hot" | "new" | "top" | "rising";
16
+ limit: number;
17
+ query?: string | undefined;
18
+ subreddit?: string | undefined;
19
+ post_url?: string | undefined;
20
+ }, {
21
+ action: "search" | "posts" | "subreddit" | "comments";
22
+ time?: "hour" | "day" | "week" | "month" | "year" | "all" | undefined;
23
+ sort?: "hot" | "new" | "top" | "rising" | undefined;
24
+ query?: string | undefined;
25
+ subreddit?: string | undefined;
26
+ limit?: number | undefined;
27
+ post_url?: string | undefined;
28
+ }>;
29
+ export type RedditInput = z.infer<typeof schema>;
30
+ export declare function execute(input: RedditInput): Promise<{
31
+ content: {
32
+ type: "text";
33
+ text: string;
34
+ }[];
35
+ }>;
36
+ //# sourceMappingURL=reddit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reddit.d.ts","sourceRoot":"","sources":["../../src/tools/reddit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,IAAI,WAAW,CAAC;AAE7B,eAAO,MAAM,WAAW,iFACwD,CAAC;AAIjF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;EAQjB,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AAqIjD,wBAAsB,OAAO,CAAC,KAAK,EAAE,WAAW;;;;;GA4C/C"}