@dyyz1993/agent-browser 0.9.2

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 (187) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +907 -0
  3. package/bin/agent-browser-darwin-arm64 +0 -0
  4. package/bin/agent-browser.js +120 -0
  5. package/dist/__tests__/e2e/utils/test-helpers.d.ts +5 -0
  6. package/dist/__tests__/e2e/utils/test-helpers.d.ts.map +1 -0
  7. package/dist/__tests__/e2e/utils/test-helpers.js +22 -0
  8. package/dist/__tests__/e2e/utils/test-helpers.js.map +1 -0
  9. package/dist/__tests__/test-iframe.d.ts +2 -0
  10. package/dist/__tests__/test-iframe.d.ts.map +1 -0
  11. package/dist/__tests__/test-iframe.js +52 -0
  12. package/dist/__tests__/test-iframe.js.map +1 -0
  13. package/dist/__tests__/utils/parseCli.d.ts +20 -0
  14. package/dist/__tests__/utils/parseCli.d.ts.map +1 -0
  15. package/dist/__tests__/utils/parseCli.js +1086 -0
  16. package/dist/__tests__/utils/parseCli.js.map +1 -0
  17. package/dist/actions.d.ts +50 -0
  18. package/dist/actions.d.ts.map +1 -0
  19. package/dist/actions.js +2164 -0
  20. package/dist/actions.js.map +1 -0
  21. package/dist/browser.d.ts +556 -0
  22. package/dist/browser.d.ts.map +1 -0
  23. package/dist/browser.js +2599 -0
  24. package/dist/browser.js.map +1 -0
  25. package/dist/cli/commands.d.ts +8 -0
  26. package/dist/cli/commands.d.ts.map +1 -0
  27. package/dist/cli/commands.js +1038 -0
  28. package/dist/cli/commands.js.map +1 -0
  29. package/dist/cli/connection.d.ts +50 -0
  30. package/dist/cli/connection.d.ts.map +1 -0
  31. package/dist/cli/connection.js +595 -0
  32. package/dist/cli/connection.js.map +1 -0
  33. package/dist/cli/flags.d.ts +36 -0
  34. package/dist/cli/flags.d.ts.map +1 -0
  35. package/dist/cli/flags.js +206 -0
  36. package/dist/cli/flags.js.map +1 -0
  37. package/dist/cli/help.d.ts +4 -0
  38. package/dist/cli/help.d.ts.map +1 -0
  39. package/dist/cli/help.js +1024 -0
  40. package/dist/cli/help.js.map +1 -0
  41. package/dist/cli/output.d.ts +14 -0
  42. package/dist/cli/output.d.ts.map +1 -0
  43. package/dist/cli/output.js +456 -0
  44. package/dist/cli/output.js.map +1 -0
  45. package/dist/cli-new.d.ts +3 -0
  46. package/dist/cli-new.d.ts.map +1 -0
  47. package/dist/cli-new.js +308 -0
  48. package/dist/cli-new.js.map +1 -0
  49. package/dist/cli-old.d.ts +3 -0
  50. package/dist/cli-old.d.ts.map +1 -0
  51. package/dist/cli-old.js +1101 -0
  52. package/dist/cli-old.js.map +1 -0
  53. package/dist/cli.d.ts +3 -0
  54. package/dist/cli.d.ts.map +1 -0
  55. package/dist/cli.js +403 -0
  56. package/dist/cli.js.map +1 -0
  57. package/dist/content-detection.d.ts +18 -0
  58. package/dist/content-detection.d.ts.map +1 -0
  59. package/dist/content-detection.js +68 -0
  60. package/dist/content-detection.js.map +1 -0
  61. package/dist/daemon.d.ts +55 -0
  62. package/dist/daemon.d.ts.map +1 -0
  63. package/dist/daemon.js +426 -0
  64. package/dist/daemon.js.map +1 -0
  65. package/dist/diff.d.ts +42 -0
  66. package/dist/diff.d.ts.map +1 -0
  67. package/dist/diff.js +166 -0
  68. package/dist/diff.js.map +1 -0
  69. package/dist/human-mouse.d.ts +31 -0
  70. package/dist/human-mouse.d.ts.map +1 -0
  71. package/dist/human-mouse.js +184 -0
  72. package/dist/human-mouse.js.map +1 -0
  73. package/dist/ios-actions.d.ts +11 -0
  74. package/dist/ios-actions.d.ts.map +1 -0
  75. package/dist/ios-actions.js +228 -0
  76. package/dist/ios-actions.js.map +1 -0
  77. package/dist/ios-manager.d.ts +266 -0
  78. package/dist/ios-manager.d.ts.map +1 -0
  79. package/dist/ios-manager.js +1076 -0
  80. package/dist/ios-manager.js.map +1 -0
  81. package/dist/message-bridge.d.ts +10 -0
  82. package/dist/message-bridge.d.ts.map +1 -0
  83. package/dist/message-bridge.js +60 -0
  84. package/dist/message-bridge.js.map +1 -0
  85. package/dist/protocol.d.ts +26 -0
  86. package/dist/protocol.d.ts.map +1 -0
  87. package/dist/protocol.js +912 -0
  88. package/dist/protocol.js.map +1 -0
  89. package/dist/recorder/binding.d.ts +24 -0
  90. package/dist/recorder/binding.d.ts.map +1 -0
  91. package/dist/recorder/binding.js +215 -0
  92. package/dist/recorder/binding.js.map +1 -0
  93. package/dist/recorder/index.d.ts +4 -0
  94. package/dist/recorder/index.d.ts.map +1 -0
  95. package/dist/recorder/index.js +4 -0
  96. package/dist/recorder/index.js.map +1 -0
  97. package/dist/recorder/inject.js +1913 -0
  98. package/dist/recorder/recorder.d.ts +19 -0
  99. package/dist/recorder/recorder.d.ts.map +1 -0
  100. package/dist/recorder/recorder.js +101 -0
  101. package/dist/recorder/recorder.js.map +1 -0
  102. package/dist/recorder/store.d.ts +22 -0
  103. package/dist/recorder/store.d.ts.map +1 -0
  104. package/dist/recorder/store.js +150 -0
  105. package/dist/recorder/store.js.map +1 -0
  106. package/dist/recorder/types.d.ts +73 -0
  107. package/dist/recorder/types.d.ts.map +1 -0
  108. package/dist/recorder/types.js +5 -0
  109. package/dist/recorder/types.js.map +1 -0
  110. package/dist/snapshot.d.ts +81 -0
  111. package/dist/snapshot.d.ts.map +1 -0
  112. package/dist/snapshot.js +1348 -0
  113. package/dist/snapshot.js.map +1 -0
  114. package/dist/stream-server-standalone.d.ts +38 -0
  115. package/dist/stream-server-standalone.d.ts.map +1 -0
  116. package/dist/stream-server-standalone.js +494 -0
  117. package/dist/stream-server-standalone.js.map +1 -0
  118. package/dist/stream-server.d.ts +214 -0
  119. package/dist/stream-server.d.ts.map +1 -0
  120. package/dist/stream-server.js +811 -0
  121. package/dist/stream-server.js.map +1 -0
  122. package/dist/types.d.ts +914 -0
  123. package/dist/types.d.ts.map +1 -0
  124. package/dist/types.js +4 -0
  125. package/dist/types.js.map +1 -0
  126. package/dist/viewer-html.d.ts +2 -0
  127. package/dist/viewer-html.d.ts.map +1 -0
  128. package/dist/viewer-html.js +185 -0
  129. package/dist/viewer-html.js.map +1 -0
  130. package/dist/viewer-script.d.ts +47 -0
  131. package/dist/viewer-script.d.ts.map +1 -0
  132. package/dist/viewer-script.js +586 -0
  133. package/dist/viewer-script.js.map +1 -0
  134. package/package.json +86 -0
  135. package/scripts/build-all-platforms.sh +68 -0
  136. package/scripts/check-version-sync.js +39 -0
  137. package/scripts/check_goods_container.js +35 -0
  138. package/scripts/check_page_content.js +36 -0
  139. package/scripts/click_applause_rate.js +30 -0
  140. package/scripts/copy-native.js +36 -0
  141. package/scripts/copy-recorder.js +21 -0
  142. package/scripts/e2e-test-recorder.ts +584 -0
  143. package/scripts/explore_jd_page.js +31 -0
  144. package/scripts/extract_all_jd_data.js +80 -0
  145. package/scripts/extract_jd_product_detail.js +62 -0
  146. package/scripts/extract_jd_products_correct_links.js +78 -0
  147. package/scripts/extract_jd_products_final.js +80 -0
  148. package/scripts/extract_jd_reviews.js +48 -0
  149. package/scripts/extract_jd_seafood_final.js +78 -0
  150. package/scripts/extract_multiple_products.js +77 -0
  151. package/scripts/extract_products_no_scroll.js +68 -0
  152. package/scripts/extract_products_simple.js +68 -0
  153. package/scripts/find_applause_rate.js +26 -0
  154. package/scripts/find_jd_links.js +28 -0
  155. package/scripts/find_main_content.js +20 -0
  156. package/scripts/find_product_cards.js +38 -0
  157. package/scripts/find_root_content.js +26 -0
  158. package/scripts/find_unique_products.js +55 -0
  159. package/scripts/get_jd_product_detail.js +16 -0
  160. package/scripts/get_jd_products.js +23 -0
  161. package/scripts/get_jd_seafood_products.js +44 -0
  162. package/scripts/get_product_details_from_images.js +54 -0
  163. package/scripts/postinstall.js +235 -0
  164. package/scripts/scroll_and_get_products.js +47 -0
  165. package/scripts/scroll_deep_and_find.js +45 -0
  166. package/scripts/sync-version.js +69 -0
  167. package/scripts/verify-baidu-enter.ts +116 -0
  168. package/skills/agent-browser/SKILL.md +310 -0
  169. package/skills/agent-browser/references/authentication.md +198 -0
  170. package/skills/agent-browser/references/commands.md +471 -0
  171. package/skills/agent-browser/references/data-extraction.md +377 -0
  172. package/skills/agent-browser/references/proxy-support.md +188 -0
  173. package/skills/agent-browser/references/session-management.md +197 -0
  174. package/skills/agent-browser/references/snapshot-refs.md +379 -0
  175. package/skills/agent-browser/references/video-recording.md +173 -0
  176. package/skills/agent-browser/templates/api-interception.sh +53 -0
  177. package/skills/agent-browser/templates/authenticated-session.sh +97 -0
  178. package/skills/agent-browser/templates/capture-workflow.sh +69 -0
  179. package/skills/agent-browser/templates/data-extraction.sh +210 -0
  180. package/skills/agent-browser/templates/form-automation.sh +62 -0
  181. package/skills/skill-creator/LICENSE.txt +202 -0
  182. package/skills/skill-creator/SKILL.md +356 -0
  183. package/skills/skill-creator/references/output-patterns.md +82 -0
  184. package/skills/skill-creator/references/workflows.md +28 -0
  185. package/skills/skill-creator/scripts/init_skill.py +303 -0
  186. package/skills/skill-creator/scripts/package_skill.py +113 -0
  187. package/skills/skill-creator/scripts/quick_validate.py +95 -0
Binary file
@@ -0,0 +1,120 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Cross-platform CLI wrapper for agent-browser
5
+ *
6
+ * This wrapper automatically selects the best CLI implementation:
7
+ * 1. Native Rust CLI (if available) - faster, more robust
8
+ * 2. TypeScript CLI (fallback) - full feature parity
9
+ *
10
+ * You can force a specific CLI using:
11
+ * - AGENT_BROWSER_CLI=native - Force native Rust CLI
12
+ * - AGENT_BROWSER_CLI=typescript - Force TypeScript CLI
13
+ */
14
+
15
+ import { spawn } from 'child_process';
16
+ import { existsSync } from 'fs';
17
+ import { dirname, join } from 'path';
18
+ import { platform, arch } from 'os';
19
+ import { fileURLToPath } from 'url';
20
+
21
+ const __dirname = dirname(fileURLToPath(import.meta.url));
22
+ const projectRoot = join(__dirname, '..');
23
+
24
+ function getNativeBinaryPath() {
25
+ const platformKey = platform() + '-' + arch();
26
+ const ext = platform() === 'win32' ? '.exe' : '';
27
+
28
+ const candidates = [
29
+ join(projectRoot, 'bin', 'agent-browser-' + platformKey + ext),
30
+ join(projectRoot, 'bin', 'agent-browser' + ext),
31
+ ];
32
+
33
+ for (let i = 0; i < candidates.length; i++) {
34
+ if (existsSync(candidates[i])) {
35
+ return candidates[i];
36
+ }
37
+ }
38
+
39
+ return null;
40
+ }
41
+
42
+ function getTypeScriptCliPath() {
43
+ return join(projectRoot, 'dist', 'cli.js');
44
+ }
45
+
46
+ function runCli(cliPath, isNative) {
47
+ const args = process.argv.slice(2);
48
+
49
+ if (isNative) {
50
+ const child = spawn(cliPath, args, {
51
+ stdio: 'inherit',
52
+ windowsHide: false,
53
+ });
54
+
55
+ child.on('error', function(err) {
56
+ console.error('Error executing native CLI: ' + err.message);
57
+ console.error('Falling back to TypeScript CLI...');
58
+ runCli(getTypeScriptCliPath(), false);
59
+ });
60
+
61
+ child.on('close', function(code) {
62
+ process.exit(code || 0);
63
+ });
64
+ } else {
65
+ const child = spawn('node', [cliPath].concat(args), {
66
+ stdio: 'inherit',
67
+ windowsHide: false,
68
+ });
69
+
70
+ child.on('error', function(err) {
71
+ console.error('Error executing CLI: ' + err.message);
72
+ process.exit(1);
73
+ });
74
+
75
+ child.on('close', function(code) {
76
+ process.exit(code || 0);
77
+ });
78
+ }
79
+ }
80
+
81
+ function main() {
82
+ const cliPreference = (process.env.AGENT_BROWSER_CLI || '').toLowerCase();
83
+ const nativePath = getNativeBinaryPath();
84
+ const tsPath = getTypeScriptCliPath();
85
+
86
+ if (cliPreference === 'typescript' || cliPreference === 'ts') {
87
+ if (!existsSync(tsPath)) {
88
+ console.error('Error: TypeScript CLI not found. Run "npm run build" first.');
89
+ process.exit(1);
90
+ }
91
+ runCli(tsPath, false);
92
+ return;
93
+ }
94
+
95
+ if (cliPreference === 'native' || cliPreference === 'rust') {
96
+ if (!nativePath) {
97
+ console.error('Error: Native CLI not found. Run "npm run build:native" first.');
98
+ process.exit(1);
99
+ }
100
+ runCli(nativePath, true);
101
+ return;
102
+ }
103
+
104
+ if (nativePath) {
105
+ runCli(nativePath, true);
106
+ return;
107
+ }
108
+
109
+ if (!existsSync(tsPath)) {
110
+ console.error('Error: No CLI found.');
111
+ console.error('');
112
+ console.error('To use TypeScript CLI: Run "npm run build"');
113
+ console.error('To use Native CLI: Run "npm run build:native"');
114
+ process.exit(1);
115
+ }
116
+
117
+ runCli(tsPath, false);
118
+ }
119
+
120
+ main();
@@ -0,0 +1,5 @@
1
+ import { BrowserManager } from '../../../browser.js';
2
+ export declare function getFixturePath(filename: string): string;
3
+ export declare function createBrowser(headless?: boolean): Promise<BrowserManager>;
4
+ export declare function closeBrowser(browser: BrowserManager | null): Promise<void>;
5
+ //# sourceMappingURL=test-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-helpers.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/e2e/utils/test-helpers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAIrD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAsB,aAAa,CAAC,QAAQ,GAAE,OAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAQrF;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAIhF"}
@@ -0,0 +1,22 @@
1
+ import path from 'path';
2
+ import { fileURLToPath } from 'url';
3
+ import { BrowserManager } from '../../../browser.js';
4
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
5
+ export function getFixturePath(filename) {
6
+ return `file://${path.join(__dirname, '../fixtures', filename)}`;
7
+ }
8
+ export async function createBrowser(headless = true) {
9
+ const browser = new BrowserManager();
10
+ await browser.launch({
11
+ action: 'launch',
12
+ id: 'test-browser',
13
+ headless
14
+ });
15
+ return browser;
16
+ }
17
+ export async function closeBrowser(browser) {
18
+ if (browser) {
19
+ await browser.close();
20
+ }
21
+ }
22
+ //# sourceMappingURL=test-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-helpers.js","sourceRoot":"","sources":["../../../../src/__tests__/e2e/utils/test-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,OAAO,UAAU,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,CAAC;AACnE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,WAAoB,IAAI;IAC1D,MAAM,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;IACrC,MAAM,OAAO,CAAC,MAAM,CAAC;QACnB,MAAM,EAAE,QAAQ;QAChB,EAAE,EAAE,cAAc;QAClB,QAAQ;KACT,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAA8B;IAC/D,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=test-iframe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-iframe.d.ts","sourceRoot":"","sources":["../../src/__tests__/test-iframe.ts"],"names":[],"mappings":""}
@@ -0,0 +1,52 @@
1
+ import { chromium } from 'playwright-core';
2
+ async function test() {
3
+ const browser = await chromium.launch({ headless: true });
4
+ const context = await browser.newContext();
5
+ const page = await context.newPage();
6
+ // Listen for frame navigated events
7
+ page.on('framenavigated', (frame) => {
8
+ console.log('Frame navigated:', frame.url());
9
+ });
10
+ // Listen for console events
11
+ page.on('console', (msg) => {
12
+ console.log('Console:', msg.type(), msg.text());
13
+ });
14
+ // Listen for page errors
15
+ page.on('pageerror', (error) => {
16
+ console.log('Page error:', error.message);
17
+ });
18
+ // Listen for request failed
19
+ page.on('requestfailed', (request) => {
20
+ console.log('Request failed:', request.url(), request.failure()?.errorText);
21
+ });
22
+ await page.goto('https://www.example.com');
23
+ // Check CSP headers
24
+ const response = await page.evaluate(() => {
25
+ return {
26
+ csp: document.querySelector('meta[http-equiv="Content-Security-Policy"]')?.getAttribute('content'),
27
+ xFrameOptions: document.querySelector('meta[http-equiv="X-Frame-Options"]')?.getAttribute('content'),
28
+ };
29
+ });
30
+ console.log('CSP info:', response);
31
+ // Create iframe using DOM methods
32
+ await page.evaluate(() => {
33
+ const iframe = document.createElement('iframe');
34
+ iframe.id = 'cross-frame';
35
+ iframe.src = 'https://www.iana.org/domains/example';
36
+ iframe.width = '800';
37
+ iframe.height = '400';
38
+ document.body.appendChild(iframe);
39
+ });
40
+ // Wait for frame to be attached
41
+ await page.waitForSelector('#cross-frame');
42
+ // Wait longer
43
+ await page.waitForTimeout(5000);
44
+ // Check all frames
45
+ console.log('\n=== All frames ===');
46
+ const mainFrame = page.mainFrame();
47
+ console.log('Main frame URL:', mainFrame.url());
48
+ console.log('Child frames:', mainFrame.childFrames().map(f => ({ url: f.url(), name: f.name() })));
49
+ await browser.close();
50
+ }
51
+ test().catch(console.error);
52
+ //# sourceMappingURL=test-iframe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-iframe.js","sourceRoot":"","sources":["../../src/__tests__/test-iframe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { LooseCommand } from '../../types.js';
2
+ export type Command = LooseCommand;
3
+ export declare class CliError extends Error {
4
+ usage?: string | undefined;
5
+ constructor(message: string, usage?: string | undefined);
6
+ }
7
+ export declare function error(message: string, usage?: string): never;
8
+ export declare function parseInFrame(args: string[]): {
9
+ inFrame?: string;
10
+ remaining: string[];
11
+ };
12
+ type DiffScope = number | 'full' | string;
13
+ export declare function parseDiff(args: string[]): {
14
+ diffScope?: DiffScope;
15
+ remaining: string[];
16
+ };
17
+ export declare function genId(): string;
18
+ export declare function parseCliArgs(args: string[]): Command;
19
+ export {};
20
+ //# sourceMappingURL=parseCli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseCli.d.ts","sourceRoot":"","sources":["../../../src/__tests__/utils/parseCli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,MAAM,OAAO,GAAG,YAAY,CAAC;AAEnC,qBAAa,QAAS,SAAQ,KAAK;IAGxB,KAAK,CAAC,EAAE,MAAM;gBADrB,OAAO,EAAE,MAAM,EACR,KAAK,CAAC,EAAE,MAAM,YAAA;CAKxB;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAE5D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CActF;AAED,KAAK,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1C,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;IAAE,SAAS,CAAC,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CA0BxF;AAED,wBAAgB,KAAK,IAAI,MAAM,CAE9B;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAirCpD"}