@framers/agentos-ext-stealth-browser 1.0.0 → 1.0.1

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 (39) hide show
  1. package/LICENSE +96 -21
  2. package/dist/StealthBrowserService.d.ts +101 -0
  3. package/dist/StealthBrowserService.d.ts.map +1 -0
  4. package/dist/StealthBrowserService.js +558 -0
  5. package/dist/StealthBrowserService.js.map +1 -0
  6. package/dist/index.d.ts +115 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +139 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/tools/click.d.ts +39 -0
  11. package/dist/tools/click.d.ts.map +1 -0
  12. package/dist/tools/click.js +72 -0
  13. package/dist/tools/click.js.map +1 -0
  14. package/dist/tools/navigate.d.ts +43 -0
  15. package/dist/tools/navigate.d.ts.map +1 -0
  16. package/dist/tools/navigate.js +142 -0
  17. package/dist/tools/navigate.js.map +1 -0
  18. package/dist/tools/scrape.d.ts +40 -0
  19. package/dist/tools/scrape.d.ts.map +1 -0
  20. package/dist/tools/scrape.js +88 -0
  21. package/dist/tools/scrape.js.map +1 -0
  22. package/dist/tools/screenshot.d.ts +41 -0
  23. package/dist/tools/screenshot.d.ts.map +1 -0
  24. package/dist/tools/screenshot.js +85 -0
  25. package/dist/tools/screenshot.js.map +1 -0
  26. package/dist/tools/snapshot.d.ts +39 -0
  27. package/dist/tools/snapshot.d.ts.map +1 -0
  28. package/dist/tools/snapshot.js +68 -0
  29. package/dist/tools/snapshot.js.map +1 -0
  30. package/dist/tools/type.d.ts +41 -0
  31. package/dist/tools/type.d.ts.map +1 -0
  32. package/dist/tools/type.js +88 -0
  33. package/dist/tools/type.js.map +1 -0
  34. package/dist/types.d.ts +175 -0
  35. package/dist/types.d.ts.map +1 -0
  36. package/dist/types.js +7 -0
  37. package/dist/types.js.map +1 -0
  38. package/manifest.json +3 -3
  39. package/package.json +10 -6
@@ -0,0 +1,115 @@
1
+ /**
2
+ * AgentOS Stealth Browser Extension
3
+ *
4
+ * Provides stealth browser automation using puppeteer-extra with the stealth plugin
5
+ * to bypass anti-bot detection on sites like Amazon, eBay, LinkedIn, and Cloudflare-
6
+ * protected pages.
7
+ *
8
+ * Key differences from web-browser extension:
9
+ * - Uses puppeteer-extra instead of puppeteer-core
10
+ * - Applies stealth plugin for comprehensive anti-fingerprinting
11
+ * - Extra anti-detection Chromium launch args
12
+ * - Realistic user agent rotation (Chrome 120+ on macOS/Windows)
13
+ * - WebDriver property removal and chrome.runtime injection
14
+ * - Human-like typing delay defaults (50ms between keystrokes)
15
+ *
16
+ * @module @framers/agentos-ext-stealth-browser
17
+ * @version 1.0.0
18
+ * @license MIT
19
+ */
20
+ import { StealthNavigateTool } from './tools/navigate.js';
21
+ import { StealthScrapeTool } from './tools/scrape.js';
22
+ import { StealthClickTool } from './tools/click.js';
23
+ import { StealthTypeTool } from './tools/type.js';
24
+ import { StealthScreenshotTool } from './tools/screenshot.js';
25
+ import { StealthSnapshotTool } from './tools/snapshot.js';
26
+ import type { StealthBrowserConfig } from './types.js';
27
+ /**
28
+ * Extension configuration options
29
+ */
30
+ export interface StealthBrowserExtensionOptions extends StealthBrowserConfig {
31
+ /** Extension priority in the stack */
32
+ priority?: number;
33
+ }
34
+ /**
35
+ * Creates the stealth browser extension pack
36
+ *
37
+ * @param context - The extension context
38
+ * @returns The configured extension pack
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * import { createExtensionPack } from '@framers/agentos-ext-stealth-browser';
43
+ *
44
+ * const pack = createExtensionPack({
45
+ * options: {
46
+ * headless: true,
47
+ * timeout: 30000,
48
+ * viewport: { width: 1920, height: 1080 }
49
+ * },
50
+ * logger: console
51
+ * });
52
+ * ```
53
+ */
54
+ export declare function createExtensionPack(context: {
55
+ options?: Record<string, unknown>;
56
+ secrets?: Record<string, string>;
57
+ logger?: {
58
+ info: (...args: unknown[]) => void;
59
+ };
60
+ onActivate?: () => Promise<void>;
61
+ onDeactivate?: () => Promise<void>;
62
+ [key: string]: unknown;
63
+ }): {
64
+ name: string;
65
+ version: string;
66
+ descriptors: ({
67
+ id: string;
68
+ kind: string;
69
+ priority: number;
70
+ payload: StealthNavigateTool;
71
+ } | {
72
+ id: string;
73
+ kind: string;
74
+ priority: number;
75
+ payload: StealthScrapeTool;
76
+ } | {
77
+ id: string;
78
+ kind: string;
79
+ priority: number;
80
+ payload: StealthClickTool;
81
+ } | {
82
+ id: string;
83
+ kind: string;
84
+ priority: number;
85
+ payload: StealthTypeTool;
86
+ } | {
87
+ id: string;
88
+ kind: string;
89
+ priority: number;
90
+ payload: StealthScreenshotTool;
91
+ } | {
92
+ id: string;
93
+ kind: string;
94
+ priority: number;
95
+ payload: StealthSnapshotTool;
96
+ })[];
97
+ /**
98
+ * Called when extension is activated
99
+ */
100
+ onActivate: () => Promise<void>;
101
+ /**
102
+ * Called when extension is deactivated
103
+ */
104
+ onDeactivate: () => Promise<void>;
105
+ };
106
+ export { StealthBrowserService } from './StealthBrowserService.js';
107
+ export { StealthNavigateTool } from './tools/navigate.js';
108
+ export { StealthScrapeTool } from './tools/scrape.js';
109
+ export { StealthClickTool } from './tools/click.js';
110
+ export { StealthTypeTool } from './tools/type.js';
111
+ export { StealthScreenshotTool } from './tools/screenshot.js';
112
+ export { StealthSnapshotTool } from './tools/snapshot.js';
113
+ export * from './types.js';
114
+ export default createExtensionPack;
115
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,8BAA+B,SAAQ,oBAAoB;IAC1E,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;KAAE,CAAC;IAChD,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA+DG;;OAEG;;IAQH;;OAEG;;EASN;AAGD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,cAAc,YAAY,CAAC;AAG3B,eAAe,mBAAmB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,139 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * AgentOS Stealth Browser Extension
4
+ *
5
+ * Provides stealth browser automation using puppeteer-extra with the stealth plugin
6
+ * to bypass anti-bot detection on sites like Amazon, eBay, LinkedIn, and Cloudflare-
7
+ * protected pages.
8
+ *
9
+ * Key differences from web-browser extension:
10
+ * - Uses puppeteer-extra instead of puppeteer-core
11
+ * - Applies stealth plugin for comprehensive anti-fingerprinting
12
+ * - Extra anti-detection Chromium launch args
13
+ * - Realistic user agent rotation (Chrome 120+ on macOS/Windows)
14
+ * - WebDriver property removal and chrome.runtime injection
15
+ * - Human-like typing delay defaults (50ms between keystrokes)
16
+ *
17
+ * @module @framers/agentos-ext-stealth-browser
18
+ * @version 1.0.0
19
+ * @license MIT
20
+ */
21
+ import { StealthBrowserService } from './StealthBrowserService.js';
22
+ import { StealthNavigateTool } from './tools/navigate.js';
23
+ import { StealthScrapeTool } from './tools/scrape.js';
24
+ import { StealthClickTool } from './tools/click.js';
25
+ import { StealthTypeTool } from './tools/type.js';
26
+ import { StealthScreenshotTool } from './tools/screenshot.js';
27
+ import { StealthSnapshotTool } from './tools/snapshot.js';
28
+ /**
29
+ * Creates the stealth browser extension pack
30
+ *
31
+ * @param context - The extension context
32
+ * @returns The configured extension pack
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * import { createExtensionPack } from '@framers/agentos-ext-stealth-browser';
37
+ *
38
+ * const pack = createExtensionPack({
39
+ * options: {
40
+ * headless: true,
41
+ * timeout: 30000,
42
+ * viewport: { width: 1920, height: 1080 }
43
+ * },
44
+ * logger: console
45
+ * });
46
+ * ```
47
+ */
48
+ export function createExtensionPack(context) {
49
+ const options = context.options || {};
50
+ // Initialize stealth browser service with configuration
51
+ const browserService = new StealthBrowserService({
52
+ headless: options.headless,
53
+ timeout: options.timeout,
54
+ userAgent: options.userAgent,
55
+ viewport: options.viewport,
56
+ executablePath: options.executablePath,
57
+ enableEvasions: options.enableEvasions,
58
+ });
59
+ // Create tool instances
60
+ const navigateTool = new StealthNavigateTool(browserService);
61
+ const scrapeTool = new StealthScrapeTool(browserService);
62
+ const clickTool = new StealthClickTool(browserService);
63
+ const typeTool = new StealthTypeTool(browserService);
64
+ const screenshotTool = new StealthScreenshotTool(browserService);
65
+ const snapshotTool = new StealthSnapshotTool(browserService);
66
+ return {
67
+ name: '@framers/agentos-ext-stealth-browser',
68
+ version: '1.0.0',
69
+ descriptors: [
70
+ {
71
+ id: navigateTool.name,
72
+ kind: 'tool',
73
+ priority: options.priority || 50,
74
+ payload: navigateTool,
75
+ },
76
+ {
77
+ id: scrapeTool.name,
78
+ kind: 'tool',
79
+ priority: options.priority || 50,
80
+ payload: scrapeTool,
81
+ },
82
+ {
83
+ id: clickTool.name,
84
+ kind: 'tool',
85
+ priority: options.priority || 50,
86
+ payload: clickTool,
87
+ },
88
+ {
89
+ id: typeTool.name,
90
+ kind: 'tool',
91
+ priority: options.priority || 50,
92
+ payload: typeTool,
93
+ },
94
+ {
95
+ id: screenshotTool.name,
96
+ kind: 'tool',
97
+ priority: options.priority || 50,
98
+ payload: screenshotTool,
99
+ },
100
+ {
101
+ id: snapshotTool.name,
102
+ kind: 'tool',
103
+ priority: options.priority || 50,
104
+ payload: snapshotTool,
105
+ },
106
+ ],
107
+ /**
108
+ * Called when extension is activated
109
+ */
110
+ onActivate: async () => {
111
+ if (context.onActivate) {
112
+ await context.onActivate();
113
+ }
114
+ context.logger?.info('Stealth Browser Extension activated');
115
+ },
116
+ /**
117
+ * Called when extension is deactivated
118
+ */
119
+ onDeactivate: async () => {
120
+ await browserService.close();
121
+ if (context.onDeactivate) {
122
+ await context.onDeactivate();
123
+ }
124
+ context.logger?.info('Stealth Browser Extension deactivated');
125
+ },
126
+ };
127
+ }
128
+ // Export types and classes for consumers
129
+ export { StealthBrowserService } from './StealthBrowserService.js';
130
+ export { StealthNavigateTool } from './tools/navigate.js';
131
+ export { StealthScrapeTool } from './tools/scrape.js';
132
+ export { StealthClickTool } from './tools/click.js';
133
+ export { StealthTypeTool } from './tools/type.js';
134
+ export { StealthScreenshotTool } from './tools/screenshot.js';
135
+ export { StealthSnapshotTool } from './tools/snapshot.js';
136
+ export * from './types.js';
137
+ // Default export for convenience
138
+ export default createExtensionPack;
139
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Stealth Click Tool
3
+ * Click on elements in bot-protected pages with human-like behavior.
4
+ *
5
+ * @module @framers/agentos-ext-stealth-browser
6
+ */
7
+ import type { ITool, JSONSchemaObject, ToolExecutionContext, ToolExecutionResult } from '@framers/agentos';
8
+ import type { StealthBrowserService } from '../StealthBrowserService.js';
9
+ import type { ClickResult } from '../types.js';
10
+ /**
11
+ * Tool for clicking elements in stealth browser
12
+ */
13
+ export declare class StealthClickTool implements ITool {
14
+ private browserService;
15
+ readonly id = "stealth-browser-click-v1";
16
+ /** Tool call name used by the LLM / ToolExecutor. */
17
+ readonly name = "stealth_click";
18
+ readonly displayName = "Stealth Click";
19
+ readonly description: string;
20
+ readonly category = "research";
21
+ readonly hasSideEffects = true;
22
+ readonly inputSchema: JSONSchemaObject;
23
+ constructor(browserService: StealthBrowserService);
24
+ /**
25
+ * Execute stealth click
26
+ */
27
+ execute(input: {
28
+ selector: string;
29
+ waitForNavigation?: boolean;
30
+ }, _context: ToolExecutionContext): Promise<ToolExecutionResult<ClickResult>>;
31
+ /**
32
+ * Validate input
33
+ */
34
+ validateArgs(input: Record<string, any>): {
35
+ isValid: boolean;
36
+ errors?: any[];
37
+ };
38
+ }
39
+ //# sourceMappingURL=click.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"click.d.ts","sourceRoot":"","sources":["../../src/tools/click.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC3G,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;GAEG;AACH,qBAAa,gBAAiB,YAAW,KAAK;IA4BhC,OAAO,CAAC,cAAc;IA3BlC,SAAgB,EAAE,8BAA8B;IAChD,qDAAqD;IACrD,SAAgB,IAAI,mBAAmB;IACvC,SAAgB,WAAW,mBAAmB;IAC9C,SAAgB,WAAW,SAEoD;IAC/E,SAAgB,QAAQ,cAAc;IACtC,SAAgB,cAAc,QAAQ;IAEtC,SAAgB,WAAW,EAAE,gBAAgB,CAe3C;gBAEkB,cAAc,EAAE,qBAAqB;IAEzD;;OAEG;IACG,OAAO,CACX,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,EACxD,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAgB5C;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAA;KAAE;CAW/E"}
@@ -0,0 +1,72 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * Stealth Click Tool
4
+ * Click on elements in bot-protected pages with human-like behavior.
5
+ *
6
+ * @module @framers/agentos-ext-stealth-browser
7
+ */
8
+ /**
9
+ * Tool for clicking elements in stealth browser
10
+ */
11
+ export class StealthClickTool {
12
+ browserService;
13
+ id = 'stealth-browser-click-v1';
14
+ /** Tool call name used by the LLM / ToolExecutor. */
15
+ name = 'stealth_click';
16
+ displayName = 'Stealth Click';
17
+ description = 'Click an element in the stealth browser using a CSS selector. ' +
18
+ 'Waits for element visibility before clicking. Use for bot-protected sites.';
19
+ category = 'research';
20
+ hasSideEffects = true;
21
+ inputSchema = {
22
+ type: 'object',
23
+ required: ['selector'],
24
+ properties: {
25
+ selector: {
26
+ type: 'string',
27
+ description: 'CSS selector for the element to click',
28
+ },
29
+ waitForNavigation: {
30
+ type: 'boolean',
31
+ default: false,
32
+ description: 'Wait for page navigation after click',
33
+ },
34
+ },
35
+ additionalProperties: false,
36
+ };
37
+ constructor(browserService) {
38
+ this.browserService = browserService;
39
+ }
40
+ /**
41
+ * Execute stealth click
42
+ */
43
+ async execute(input, _context) {
44
+ try {
45
+ const result = await this.browserService.click(input.selector, {
46
+ waitForNavigation: input.waitForNavigation,
47
+ });
48
+ return {
49
+ success: result.success,
50
+ output: result,
51
+ error: result.success ? undefined : 'Click failed',
52
+ };
53
+ }
54
+ catch (error) {
55
+ return { success: false, error: error.message };
56
+ }
57
+ }
58
+ /**
59
+ * Validate input
60
+ */
61
+ validateArgs(input) {
62
+ const errors = [];
63
+ if (!input.selector) {
64
+ errors.push('Selector is required');
65
+ }
66
+ else if (typeof input.selector !== 'string') {
67
+ errors.push('Selector must be a string');
68
+ }
69
+ return errors.length === 0 ? { isValid: true } : { isValid: false, errors };
70
+ }
71
+ }
72
+ //# sourceMappingURL=click.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"click.js","sourceRoot":"","sources":["../../src/tools/click.ts"],"names":[],"mappings":"AAAA,cAAc;AACd;;;;;GAKG;AAMH;;GAEG;AACH,MAAM,OAAO,gBAAgB;IA4BP;IA3BJ,EAAE,GAAG,0BAA0B,CAAC;IAChD,qDAAqD;IACrC,IAAI,GAAG,eAAe,CAAC;IACvB,WAAW,GAAG,eAAe,CAAC;IAC9B,WAAW,GACzB,gEAAgE;QAChE,4EAA4E,CAAC;IAC/D,QAAQ,GAAG,UAAU,CAAC;IACtB,cAAc,GAAG,IAAI,CAAC;IAEtB,WAAW,GAAqB;QAC9C,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,CAAC,UAAU,CAAC;QACtB,UAAU,EAAE;YACV,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,uCAAuC;aACrD;YACD,iBAAiB,EAAE;gBACjB,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,KAAK;gBACd,WAAW,EAAE,sCAAsC;aACpD;SACF;QACD,oBAAoB,EAAE,KAAK;KAC5B,CAAC;IAEF,YAAoB,cAAqC;QAArC,mBAAc,GAAd,cAAc,CAAuB;IAAG,CAAC;IAE7D;;OAEG;IACH,KAAK,CAAC,OAAO,CACX,KAAwD,EACxD,QAA8B;QAE9B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE;gBAC7D,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;aAC3C,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc;aACnD,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QAClD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,KAA0B;QACrC,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACtC,CAAC;aAAM,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC9E,CAAC;CACF"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Stealth Navigate Tool
3
+ * Navigate stealth browser to a URL with anti-detection, bypassing bot protection.
4
+ *
5
+ * @module @framers/agentos-ext-stealth-browser
6
+ */
7
+ import type { ITool, JSONSchemaObject, ToolExecutionContext, ToolExecutionResult } from '@framers/agentos';
8
+ import type { StealthBrowserService } from '../StealthBrowserService.js';
9
+ import type { NavigationResult } from '../types.js';
10
+ /**
11
+ * Tool for stealth navigation to URLs on bot-protected sites
12
+ */
13
+ export declare class StealthNavigateTool implements ITool {
14
+ private browserService;
15
+ readonly id = "stealth-browser-navigate-v1";
16
+ /** Tool call name used by the LLM / ToolExecutor. */
17
+ readonly name = "stealth_navigate";
18
+ readonly displayName = "Stealth Navigate";
19
+ readonly description: string;
20
+ readonly category = "research";
21
+ readonly hasSideEffects = false;
22
+ readonly inputSchema: JSONSchemaObject;
23
+ constructor(browserService: StealthBrowserService);
24
+ /**
25
+ * Execute stealth navigation
26
+ */
27
+ execute(input: {
28
+ url: string;
29
+ waitFor?: 'load' | 'domcontentloaded' | 'networkidle0' | 'networkidle2';
30
+ returnHtml?: boolean;
31
+ returnText?: boolean;
32
+ returnLinks?: boolean;
33
+ maxTextLength?: number;
34
+ }, _context: ToolExecutionContext): Promise<ToolExecutionResult<NavigationResult>>;
35
+ /**
36
+ * Validate input
37
+ */
38
+ validateArgs(input: Record<string, any>): {
39
+ isValid: boolean;
40
+ errors?: any[];
41
+ };
42
+ }
43
+ //# sourceMappingURL=navigate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigate.d.ts","sourceRoot":"","sources":["../../src/tools/navigate.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC3G,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD;;GAEG;AACH,qBAAa,mBAAoB,YAAW,KAAK;IAmDnC,OAAO,CAAC,cAAc;IAlDlC,SAAgB,EAAE,iCAAiC;IACnD,qDAAqD;IACrD,SAAgB,IAAI,sBAAsB;IAC1C,SAAgB,WAAW,sBAAsB;IACjD,SAAgB,WAAW,SAIiC;IAC5D,SAAgB,QAAQ,cAAc;IACtC,SAAgB,cAAc,SAAS;IAEvC,SAAgB,WAAW,EAAE,gBAAgB,CAoC3C;gBAEkB,cAAc,EAAE,qBAAqB;IAEzD;;OAEG;IACG,OAAO,CACX,KAAK,EAAE;QACL,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,GAAG,kBAAkB,GAAG,cAAc,GAAG,cAAc,CAAC;QACxE,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,EACD,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IA8DjD;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAA;KAAE;CAiB/E"}
@@ -0,0 +1,142 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * Stealth Navigate Tool
4
+ * Navigate stealth browser to a URL with anti-detection, bypassing bot protection.
5
+ *
6
+ * @module @framers/agentos-ext-stealth-browser
7
+ */
8
+ /**
9
+ * Tool for stealth navigation to URLs on bot-protected sites
10
+ */
11
+ export class StealthNavigateTool {
12
+ browserService;
13
+ id = 'stealth-browser-navigate-v1';
14
+ /** Tool call name used by the LLM / ToolExecutor. */
15
+ name = 'stealth_navigate';
16
+ displayName = 'Stealth Navigate';
17
+ description = 'Navigate stealth browser to a URL with anti-bot-detection enabled. ' +
18
+ 'Use this instead of browser_navigate for sites that block headless browsers ' +
19
+ '(Amazon, eBay, LinkedIn, Cloudflare-protected sites, etc.). ' +
20
+ 'Returns full page text, links, and optionally raw HTML.';
21
+ category = 'research';
22
+ hasSideEffects = false;
23
+ inputSchema = {
24
+ type: 'object',
25
+ required: ['url'],
26
+ properties: {
27
+ url: {
28
+ type: 'string',
29
+ description: 'The URL to navigate to',
30
+ },
31
+ waitFor: {
32
+ type: 'string',
33
+ enum: ['load', 'domcontentloaded', 'networkidle0', 'networkidle2'],
34
+ default: 'networkidle2',
35
+ description: 'When to consider navigation complete',
36
+ },
37
+ returnHtml: {
38
+ type: 'boolean',
39
+ default: false,
40
+ description: 'Include full HTML in response',
41
+ },
42
+ returnText: {
43
+ type: 'boolean',
44
+ default: true,
45
+ description: 'Include extracted text in response',
46
+ },
47
+ returnLinks: {
48
+ type: 'boolean',
49
+ default: true,
50
+ description: 'Include all links found on the page (text + href)',
51
+ },
52
+ maxTextLength: {
53
+ type: 'number',
54
+ default: 50000,
55
+ description: 'Maximum characters of page text to return (default 50000)',
56
+ },
57
+ },
58
+ additionalProperties: false,
59
+ };
60
+ constructor(browserService) {
61
+ this.browserService = browserService;
62
+ }
63
+ /**
64
+ * Execute stealth navigation
65
+ */
66
+ async execute(input, _context) {
67
+ try {
68
+ const result = await this.browserService.navigate(input.url, {
69
+ waitFor: input.waitFor,
70
+ });
71
+ const maxLen = typeof input.maxTextLength === 'number' && input.maxTextLength > 0
72
+ ? input.maxTextLength
73
+ : 50000;
74
+ const output = {
75
+ url: result.url,
76
+ status: result.status,
77
+ title: result.title,
78
+ loadTime: result.loadTime,
79
+ consoleMessages: result.consoleMessages,
80
+ };
81
+ if (input.returnHtml) {
82
+ output.html = result.html;
83
+ }
84
+ if (input.returnText !== false) {
85
+ const fullLen = result.text?.length || 0;
86
+ if (fullLen > maxLen) {
87
+ output.text = result.text.slice(0, maxLen);
88
+ output.textTruncated = true;
89
+ output.fullTextLength = fullLen;
90
+ output.truncationNote =
91
+ `Page text was ${fullLen.toLocaleString()} characters, truncated to ${maxLen.toLocaleString()}. ` +
92
+ `To get content from specific sections, use stealth_scrape with a CSS selector (e.g. 'footer', 'main', '#content'). ` +
93
+ `Or increase maxTextLength parameter.`;
94
+ }
95
+ else {
96
+ output.text = result.text;
97
+ }
98
+ }
99
+ // Extract and return all links from the page (default: on)
100
+ if (input.returnLinks !== false) {
101
+ try {
102
+ const links = await this.browserService.evaluate(() => Array.from(document.querySelectorAll('a[href]'))
103
+ .map((a) => ({
104
+ text: (a.textContent || '').trim().slice(0, 200),
105
+ href: a.href,
106
+ }))
107
+ .filter((l) => l.href && l.text));
108
+ output.links = links;
109
+ }
110
+ catch {
111
+ // Non-fatal — page may have restrictive CSP
112
+ }
113
+ }
114
+ return { success: true, output };
115
+ }
116
+ catch (error) {
117
+ return { success: false, error: error.message };
118
+ }
119
+ }
120
+ /**
121
+ * Validate input
122
+ */
123
+ validateArgs(input) {
124
+ const errors = [];
125
+ if (!input.url) {
126
+ errors.push('URL is required');
127
+ }
128
+ else if (typeof input.url !== 'string') {
129
+ errors.push('URL must be a string');
130
+ }
131
+ else {
132
+ try {
133
+ new URL(input.url);
134
+ }
135
+ catch {
136
+ errors.push('Invalid URL format');
137
+ }
138
+ }
139
+ return errors.length === 0 ? { isValid: true } : { isValid: false, errors };
140
+ }
141
+ }
142
+ //# sourceMappingURL=navigate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigate.js","sourceRoot":"","sources":["../../src/tools/navigate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Stealth Scrape Tool
3
+ * Extract content from bot-protected pages using CSS selectors with stealth browser.
4
+ *
5
+ * @module @framers/agentos-ext-stealth-browser
6
+ */
7
+ import type { ITool, JSONSchemaObject, ToolExecutionContext, ToolExecutionResult } from '@framers/agentos';
8
+ import type { StealthBrowserService } from '../StealthBrowserService.js';
9
+ import type { ScrapeResult } from '../types.js';
10
+ /**
11
+ * Tool for scraping content from bot-protected pages
12
+ */
13
+ export declare class StealthScrapeTool implements ITool {
14
+ private browserService;
15
+ readonly id = "stealth-browser-scrape-v1";
16
+ /** Tool call name used by the LLM / ToolExecutor. */
17
+ readonly name = "stealth_scrape";
18
+ readonly displayName = "Stealth Scrape";
19
+ readonly description: string;
20
+ readonly category = "research";
21
+ readonly hasSideEffects = false;
22
+ readonly inputSchema: JSONSchemaObject;
23
+ constructor(browserService: StealthBrowserService);
24
+ /**
25
+ * Execute stealth scraping
26
+ */
27
+ execute(input: {
28
+ selector: string;
29
+ limit?: number;
30
+ attributes?: string[];
31
+ }, _context: ToolExecutionContext): Promise<ToolExecutionResult<ScrapeResult>>;
32
+ /**
33
+ * Validate input
34
+ */
35
+ validateArgs(input: Record<string, any>): {
36
+ isValid: boolean;
37
+ errors?: any[];
38
+ };
39
+ }
40
+ //# sourceMappingURL=scrape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scrape.d.ts","sourceRoot":"","sources":["../../src/tools/scrape.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC3G,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;;GAEG;AACH,qBAAa,iBAAkB,YAAW,KAAK;IAiCjC,OAAO,CAAC,cAAc;IAhClC,SAAgB,EAAE,+BAA+B;IACjD,qDAAqD;IACrD,SAAgB,IAAI,oBAAoB;IACxC,SAAgB,WAAW,oBAAoB;IAC/C,SAAgB,WAAW,SAEiD;IAC5E,SAAgB,QAAQ,cAAc;IACtC,SAAgB,cAAc,SAAS;IAEvC,SAAgB,WAAW,EAAE,gBAAgB,CAoB3C;gBAEkB,cAAc,EAAE,qBAAqB;IAEzD;;OAEG;IACG,OAAO,CACX,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,EAClE,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;IA4B7C;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAA;KAAE;CAiB/E"}