@cogitator-ai/browser 0.1.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.
- package/README.md +329 -0
- package/dist/__tests__/browser-tools.test.d.ts +2 -0
- package/dist/__tests__/browser-tools.test.d.ts.map +1 -0
- package/dist/__tests__/browser-tools.test.js +120 -0
- package/dist/__tests__/browser-tools.test.js.map +1 -0
- package/dist/__tests__/extraction.test.d.ts +2 -0
- package/dist/__tests__/extraction.test.d.ts.map +1 -0
- package/dist/__tests__/extraction.test.js +267 -0
- package/dist/__tests__/extraction.test.js.map +1 -0
- package/dist/__tests__/interaction.test.d.ts +2 -0
- package/dist/__tests__/interaction.test.d.ts.map +1 -0
- package/dist/__tests__/interaction.test.js +376 -0
- package/dist/__tests__/interaction.test.js.map +1 -0
- package/dist/__tests__/navigation.test.d.ts +2 -0
- package/dist/__tests__/navigation.test.d.ts.map +1 -0
- package/dist/__tests__/navigation.test.js +235 -0
- package/dist/__tests__/navigation.test.js.map +1 -0
- package/dist/__tests__/network.test.d.ts +2 -0
- package/dist/__tests__/network.test.d.ts.map +1 -0
- package/dist/__tests__/network.test.js +508 -0
- package/dist/__tests__/network.test.js.map +1 -0
- package/dist/__tests__/page-helpers.test.d.ts +2 -0
- package/dist/__tests__/page-helpers.test.d.ts.map +1 -0
- package/dist/__tests__/page-helpers.test.js +321 -0
- package/dist/__tests__/page-helpers.test.js.map +1 -0
- package/dist/__tests__/schemas.test.d.ts +2 -0
- package/dist/__tests__/schemas.test.d.ts.map +1 -0
- package/dist/__tests__/schemas.test.js +518 -0
- package/dist/__tests__/schemas.test.js.map +1 -0
- package/dist/__tests__/selectors.test.d.ts +2 -0
- package/dist/__tests__/selectors.test.d.ts.map +1 -0
- package/dist/__tests__/selectors.test.js +157 -0
- package/dist/__tests__/selectors.test.js.map +1 -0
- package/dist/__tests__/session.test.d.ts +2 -0
- package/dist/__tests__/session.test.d.ts.map +1 -0
- package/dist/__tests__/session.test.js +325 -0
- package/dist/__tests__/session.test.js.map +1 -0
- package/dist/__tests__/stealth.test.d.ts +2 -0
- package/dist/__tests__/stealth.test.d.ts.map +1 -0
- package/dist/__tests__/stealth.test.js +353 -0
- package/dist/__tests__/stealth.test.js.map +1 -0
- package/dist/__tests__/vision.test.d.ts +2 -0
- package/dist/__tests__/vision.test.d.ts.map +1 -0
- package/dist/__tests__/vision.test.js +226 -0
- package/dist/__tests__/vision.test.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/session.d.ts +29 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +190 -0
- package/dist/session.js.map +1 -0
- package/dist/stealth/evasions.d.ts +2 -0
- package/dist/stealth/evasions.d.ts.map +1 -0
- package/dist/stealth/evasions.js +83 -0
- package/dist/stealth/evasions.js.map +1 -0
- package/dist/stealth/human-like.d.ts +5 -0
- package/dist/stealth/human-like.d.ts.map +1 -0
- package/dist/stealth/human-like.js +52 -0
- package/dist/stealth/human-like.js.map +1 -0
- package/dist/stealth/index.d.ts +8 -0
- package/dist/stealth/index.d.ts.map +1 -0
- package/dist/stealth/index.js +24 -0
- package/dist/stealth/index.js.map +1 -0
- package/dist/stealth/user-agents.d.ts +3 -0
- package/dist/stealth/user-agents.d.ts.map +1 -0
- package/dist/stealth/user-agents.js +55 -0
- package/dist/stealth/user-agents.js.map +1 -0
- package/dist/tools/extraction.d.ts +96 -0
- package/dist/tools/extraction.d.ts.map +1 -0
- package/dist/tools/extraction.js +196 -0
- package/dist/tools/extraction.js.map +1 -0
- package/dist/tools/index.d.ts +15 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +40 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/interaction.d.ts +128 -0
- package/dist/tools/interaction.d.ts.map +1 -0
- package/dist/tools/interaction.js +229 -0
- package/dist/tools/interaction.js.map +1 -0
- package/dist/tools/navigation.d.ts +63 -0
- package/dist/tools/navigation.d.ts.map +1 -0
- package/dist/tools/navigation.js +140 -0
- package/dist/tools/navigation.js.map +1 -0
- package/dist/tools/network.d.ts +122 -0
- package/dist/tools/network.d.ts.map +1 -0
- package/dist/tools/network.js +223 -0
- package/dist/tools/network.js.map +1 -0
- package/dist/tools/vision.d.ts +83 -0
- package/dist/tools/vision.d.ts.map +1 -0
- package/dist/tools/vision.js +134 -0
- package/dist/tools/vision.js.map +1 -0
- package/dist/utils/page-helpers.d.ts +11 -0
- package/dist/utils/page-helpers.d.ts.map +1 -0
- package/dist/utils/page-helpers.js +73 -0
- package/dist/utils/page-helpers.js.map +1 -0
- package/dist/utils/schemas.d.ts +209 -0
- package/dist/utils/schemas.d.ts.map +1 -0
- package/dist/utils/schemas.js +156 -0
- package/dist/utils/schemas.js.map +1 -0
- package/dist/utils/selectors.d.ts +4 -0
- package/dist/utils/selectors.d.ts.map +1 -0
- package/dist/utils/selectors.js +39 -0
- package/dist/utils/selectors.js.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { BrowserSession } from '../session.js';
|
|
2
|
+
export declare function createNavigateTool(session: BrowserSession): import("@cogitator-ai/types").Tool<{
|
|
3
|
+
url: string;
|
|
4
|
+
waitUntil?: "load" | "domcontentloaded" | "networkidle" | "commit" | undefined;
|
|
5
|
+
}, {
|
|
6
|
+
url: string;
|
|
7
|
+
title: string;
|
|
8
|
+
status: number;
|
|
9
|
+
}>;
|
|
10
|
+
export declare function createGoBackTool(session: BrowserSession): import("@cogitator-ai/types").Tool<Record<string, never>, {
|
|
11
|
+
url: string;
|
|
12
|
+
title: string;
|
|
13
|
+
}>;
|
|
14
|
+
export declare function createGoForwardTool(session: BrowserSession): import("@cogitator-ai/types").Tool<Record<string, never>, {
|
|
15
|
+
url: string;
|
|
16
|
+
title: string;
|
|
17
|
+
}>;
|
|
18
|
+
export declare function createReloadTool(session: BrowserSession): import("@cogitator-ai/types").Tool<{
|
|
19
|
+
waitUntil?: "load" | "domcontentloaded" | "networkidle" | "commit" | undefined;
|
|
20
|
+
}, {
|
|
21
|
+
url: string;
|
|
22
|
+
title: string;
|
|
23
|
+
}>;
|
|
24
|
+
export declare function createWaitForNavigationTool(session: BrowserSession): import("@cogitator-ai/types").Tool<{
|
|
25
|
+
url?: string | undefined;
|
|
26
|
+
timeout?: number | undefined;
|
|
27
|
+
}, {
|
|
28
|
+
url: string;
|
|
29
|
+
title: string;
|
|
30
|
+
}>;
|
|
31
|
+
export declare function createGetCurrentUrlTool(session: BrowserSession): import("@cogitator-ai/types").Tool<Record<string, never>, {
|
|
32
|
+
url: string;
|
|
33
|
+
title: string;
|
|
34
|
+
}>;
|
|
35
|
+
export declare function createWaitForSelectorTool(session: BrowserSession): import("@cogitator-ai/types").Tool<{
|
|
36
|
+
selector: string;
|
|
37
|
+
state?: "visible" | "hidden" | "attached" | "detached" | undefined;
|
|
38
|
+
timeout?: number | undefined;
|
|
39
|
+
}, {
|
|
40
|
+
found: boolean;
|
|
41
|
+
}>;
|
|
42
|
+
export declare function createNavigationTools(session: BrowserSession): (import("@cogitator-ai/types").Tool<Record<string, never>, {
|
|
43
|
+
url: string;
|
|
44
|
+
title: string;
|
|
45
|
+
}> | import("@cogitator-ai/types").Tool<{
|
|
46
|
+
waitUntil?: "load" | "domcontentloaded" | "networkidle" | "commit" | undefined;
|
|
47
|
+
}, {
|
|
48
|
+
url: string;
|
|
49
|
+
title: string;
|
|
50
|
+
}> | import("@cogitator-ai/types").Tool<{
|
|
51
|
+
url?: string | undefined;
|
|
52
|
+
timeout?: number | undefined;
|
|
53
|
+
}, {
|
|
54
|
+
url: string;
|
|
55
|
+
title: string;
|
|
56
|
+
}> | import("@cogitator-ai/types").Tool<{
|
|
57
|
+
selector: string;
|
|
58
|
+
state?: "visible" | "hidden" | "attached" | "detached" | undefined;
|
|
59
|
+
timeout?: number | undefined;
|
|
60
|
+
}, {
|
|
61
|
+
found: boolean;
|
|
62
|
+
}>)[];
|
|
63
|
+
//# sourceMappingURL=navigation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../src/tools/navigation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAejD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc;;;;;;;GAoBzD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc;;;GAgBvD;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc;;;GAgB1D;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc;;;;;GAgBvD;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,cAAc;;;;;;GAgBlE;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,cAAc;;;GAe9D;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,cAAc;;;;;;GAqBhE;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc;;;;;;;;;;;;;;;;;;;;MAU5D"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { tool } from '@cogitator-ai/core';
|
|
2
|
+
import { navigateSchema, goBackSchema, goForwardSchema, reloadSchema, waitForNavigationSchema, getCurrentUrlSchema, waitForSelectorSchema, } from '../utils/schemas.js';
|
|
3
|
+
export function createNavigateTool(session) {
|
|
4
|
+
return tool({
|
|
5
|
+
name: 'browser_navigate',
|
|
6
|
+
description: 'Navigate to a URL in the browser. Returns the final URL, page title, and HTTP status.',
|
|
7
|
+
category: 'web',
|
|
8
|
+
tags: ['browser', 'navigation'],
|
|
9
|
+
parameters: navigateSchema,
|
|
10
|
+
execute: async (params) => {
|
|
11
|
+
const page = session.page;
|
|
12
|
+
const response = await page.goto(params.url, {
|
|
13
|
+
waitUntil: params.waitUntil ?? 'load',
|
|
14
|
+
});
|
|
15
|
+
return {
|
|
16
|
+
url: page.url(),
|
|
17
|
+
title: await page.title(),
|
|
18
|
+
status: response?.status() ?? 0,
|
|
19
|
+
};
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
export function createGoBackTool(session) {
|
|
24
|
+
return tool({
|
|
25
|
+
name: 'browser_go_back',
|
|
26
|
+
description: 'Go back to the previous page in browser history.',
|
|
27
|
+
category: 'web',
|
|
28
|
+
tags: ['browser', 'navigation'],
|
|
29
|
+
parameters: goBackSchema,
|
|
30
|
+
execute: async () => {
|
|
31
|
+
const page = session.page;
|
|
32
|
+
await page.goBack();
|
|
33
|
+
return {
|
|
34
|
+
url: page.url(),
|
|
35
|
+
title: await page.title(),
|
|
36
|
+
};
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
export function createGoForwardTool(session) {
|
|
41
|
+
return tool({
|
|
42
|
+
name: 'browser_go_forward',
|
|
43
|
+
description: 'Go forward to the next page in browser history.',
|
|
44
|
+
category: 'web',
|
|
45
|
+
tags: ['browser', 'navigation'],
|
|
46
|
+
parameters: goForwardSchema,
|
|
47
|
+
execute: async () => {
|
|
48
|
+
const page = session.page;
|
|
49
|
+
await page.goForward();
|
|
50
|
+
return {
|
|
51
|
+
url: page.url(),
|
|
52
|
+
title: await page.title(),
|
|
53
|
+
};
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
export function createReloadTool(session) {
|
|
58
|
+
return tool({
|
|
59
|
+
name: 'browser_reload',
|
|
60
|
+
description: 'Reload the current page.',
|
|
61
|
+
category: 'web',
|
|
62
|
+
tags: ['browser', 'navigation'],
|
|
63
|
+
parameters: reloadSchema,
|
|
64
|
+
execute: async (params) => {
|
|
65
|
+
const page = session.page;
|
|
66
|
+
await page.reload({ waitUntil: params.waitUntil ?? 'load' });
|
|
67
|
+
return {
|
|
68
|
+
url: page.url(),
|
|
69
|
+
title: await page.title(),
|
|
70
|
+
};
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
export function createWaitForNavigationTool(session) {
|
|
75
|
+
return tool({
|
|
76
|
+
name: 'browser_wait_for_navigation',
|
|
77
|
+
description: 'Wait for the page to navigate to a URL matching the given pattern.',
|
|
78
|
+
category: 'web',
|
|
79
|
+
tags: ['browser', 'navigation'],
|
|
80
|
+
parameters: waitForNavigationSchema,
|
|
81
|
+
execute: async (params) => {
|
|
82
|
+
const page = session.page;
|
|
83
|
+
await page.waitForURL(params.url ?? '**', { timeout: params.timeout });
|
|
84
|
+
return {
|
|
85
|
+
url: page.url(),
|
|
86
|
+
title: await page.title(),
|
|
87
|
+
};
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
export function createGetCurrentUrlTool(session) {
|
|
92
|
+
return tool({
|
|
93
|
+
name: 'browser_get_current_url',
|
|
94
|
+
description: 'Get the current page URL and title.',
|
|
95
|
+
category: 'web',
|
|
96
|
+
tags: ['browser', 'navigation'],
|
|
97
|
+
parameters: getCurrentUrlSchema,
|
|
98
|
+
execute: async () => {
|
|
99
|
+
const page = session.page;
|
|
100
|
+
return {
|
|
101
|
+
url: page.url(),
|
|
102
|
+
title: await page.title(),
|
|
103
|
+
};
|
|
104
|
+
},
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
export function createWaitForSelectorTool(session) {
|
|
108
|
+
return tool({
|
|
109
|
+
name: 'browser_wait_for_selector',
|
|
110
|
+
description: 'Wait for a CSS selector to appear on the page. Returns whether the element was found.',
|
|
111
|
+
category: 'web',
|
|
112
|
+
tags: ['browser', 'navigation'],
|
|
113
|
+
parameters: waitForSelectorSchema,
|
|
114
|
+
execute: async (params) => {
|
|
115
|
+
const page = session.page;
|
|
116
|
+
try {
|
|
117
|
+
await page.waitForSelector(params.selector, {
|
|
118
|
+
state: params.state,
|
|
119
|
+
timeout: params.timeout,
|
|
120
|
+
});
|
|
121
|
+
return { found: true };
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
return { found: false };
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
export function createNavigationTools(session) {
|
|
130
|
+
return [
|
|
131
|
+
createNavigateTool(session),
|
|
132
|
+
createGoBackTool(session),
|
|
133
|
+
createGoForwardTool(session),
|
|
134
|
+
createReloadTool(session),
|
|
135
|
+
createWaitForNavigationTool(session),
|
|
136
|
+
createGetCurrentUrlTool(session),
|
|
137
|
+
createWaitForSelectorTool(session),
|
|
138
|
+
];
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=navigation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../src/tools/navigation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import type { BrowserSession } from '../session.js';
|
|
2
|
+
interface ApiCallRecord {
|
|
3
|
+
url: string;
|
|
4
|
+
method: string;
|
|
5
|
+
status: number;
|
|
6
|
+
timing: number;
|
|
7
|
+
requestHeaders: Record<string, string>;
|
|
8
|
+
responseHeaders: Record<string, string>;
|
|
9
|
+
}
|
|
10
|
+
interface HarEntry {
|
|
11
|
+
url: string;
|
|
12
|
+
method: string;
|
|
13
|
+
status: number;
|
|
14
|
+
timing: number;
|
|
15
|
+
requestHeaders: Record<string, string>;
|
|
16
|
+
responseHeaders: Record<string, string>;
|
|
17
|
+
responseBody: string;
|
|
18
|
+
}
|
|
19
|
+
declare class NetworkState {
|
|
20
|
+
private _interceptors;
|
|
21
|
+
private _apiCalls;
|
|
22
|
+
private _listening;
|
|
23
|
+
private _interceptorCounter;
|
|
24
|
+
get apiCalls(): ApiCallRecord[];
|
|
25
|
+
addInterceptor(_page: unknown, id: string, remover: () => Promise<void>): Promise<void>;
|
|
26
|
+
removeInterceptor(id: string): Promise<void>;
|
|
27
|
+
startListening(page: BrowserSession['page']): void;
|
|
28
|
+
nextId(): string;
|
|
29
|
+
clearApiCalls(): void;
|
|
30
|
+
}
|
|
31
|
+
export declare function createInterceptRequestTool(session: BrowserSession, state: NetworkState): import("@cogitator-ai/types").Tool<{
|
|
32
|
+
urlPattern: string;
|
|
33
|
+
action: "block" | "modify" | "continue";
|
|
34
|
+
modify?: {
|
|
35
|
+
headers?: Record<string, string> | undefined;
|
|
36
|
+
body?: string | undefined;
|
|
37
|
+
url?: string | undefined;
|
|
38
|
+
} | undefined;
|
|
39
|
+
}, {
|
|
40
|
+
interceptorId: string;
|
|
41
|
+
}>;
|
|
42
|
+
export declare function createWaitForResponseTool(session: BrowserSession): import("@cogitator-ai/types").Tool<{
|
|
43
|
+
urlPattern: string;
|
|
44
|
+
timeout?: number | undefined;
|
|
45
|
+
}, {
|
|
46
|
+
url: string;
|
|
47
|
+
status: number;
|
|
48
|
+
headers: {
|
|
49
|
+
[key: string]: string;
|
|
50
|
+
};
|
|
51
|
+
body: string;
|
|
52
|
+
}>;
|
|
53
|
+
export declare function createBlockResourcesTool(session: BrowserSession, state: NetworkState): import("@cogitator-ai/types").Tool<{
|
|
54
|
+
types: ("image" | "stylesheet" | "font" | "media" | "script")[];
|
|
55
|
+
}, {
|
|
56
|
+
blocking: boolean;
|
|
57
|
+
interceptorId: string;
|
|
58
|
+
types: ("image" | "stylesheet" | "font" | "media" | "script")[];
|
|
59
|
+
}>;
|
|
60
|
+
export declare function createCaptureHarTool(session: BrowserSession): import("@cogitator-ai/types").Tool<{
|
|
61
|
+
action: "start" | "stop";
|
|
62
|
+
path?: string | undefined;
|
|
63
|
+
}, {
|
|
64
|
+
capturing: boolean;
|
|
65
|
+
entries: number;
|
|
66
|
+
har?: undefined;
|
|
67
|
+
} | {
|
|
68
|
+
capturing: boolean;
|
|
69
|
+
entries: number;
|
|
70
|
+
har: HarEntry[];
|
|
71
|
+
}>;
|
|
72
|
+
export declare function createGetApiCallsTool(session: BrowserSession, state: NetworkState): import("@cogitator-ai/types").Tool<{
|
|
73
|
+
urlPattern?: string | undefined;
|
|
74
|
+
method?: string | undefined;
|
|
75
|
+
}, {
|
|
76
|
+
calls: ApiCallRecord[];
|
|
77
|
+
}>;
|
|
78
|
+
export declare function createNetworkTools(session: BrowserSession): (import("@cogitator-ai/types").Tool<{
|
|
79
|
+
urlPattern: string;
|
|
80
|
+
action: "block" | "modify" | "continue";
|
|
81
|
+
modify?: {
|
|
82
|
+
headers?: Record<string, string> | undefined;
|
|
83
|
+
body?: string | undefined;
|
|
84
|
+
url?: string | undefined;
|
|
85
|
+
} | undefined;
|
|
86
|
+
}, {
|
|
87
|
+
interceptorId: string;
|
|
88
|
+
}> | import("@cogitator-ai/types").Tool<{
|
|
89
|
+
urlPattern: string;
|
|
90
|
+
timeout?: number | undefined;
|
|
91
|
+
}, {
|
|
92
|
+
url: string;
|
|
93
|
+
status: number;
|
|
94
|
+
headers: {
|
|
95
|
+
[key: string]: string;
|
|
96
|
+
};
|
|
97
|
+
body: string;
|
|
98
|
+
}> | import("@cogitator-ai/types").Tool<{
|
|
99
|
+
types: ("image" | "stylesheet" | "font" | "media" | "script")[];
|
|
100
|
+
}, {
|
|
101
|
+
blocking: boolean;
|
|
102
|
+
interceptorId: string;
|
|
103
|
+
types: ("image" | "stylesheet" | "font" | "media" | "script")[];
|
|
104
|
+
}> | import("@cogitator-ai/types").Tool<{
|
|
105
|
+
action: "start" | "stop";
|
|
106
|
+
path?: string | undefined;
|
|
107
|
+
}, {
|
|
108
|
+
capturing: boolean;
|
|
109
|
+
entries: number;
|
|
110
|
+
har?: undefined;
|
|
111
|
+
} | {
|
|
112
|
+
capturing: boolean;
|
|
113
|
+
entries: number;
|
|
114
|
+
har: HarEntry[];
|
|
115
|
+
}> | import("@cogitator-ai/types").Tool<{
|
|
116
|
+
urlPattern?: string | undefined;
|
|
117
|
+
method?: string | undefined;
|
|
118
|
+
}, {
|
|
119
|
+
calls: ApiCallRecord[];
|
|
120
|
+
}>)[];
|
|
121
|
+
export {};
|
|
122
|
+
//# sourceMappingURL=network.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/tools/network.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAcjD,UAAU,aAAa;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED,UAAU,QAAQ;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,cAAM,YAAY;IAChB,OAAO,CAAC,aAAa,CAA0C;IAC/D,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,mBAAmB,CAAK;IAEhC,IAAI,QAAQ,oBAEX;IAEK,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC;IAIvE,iBAAiB,CAAC,EAAE,EAAE,MAAM;IAQlC,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC;IA+B3C,MAAM;IAIN,aAAa;CAGd;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY;;;;;;;;;;GAoCtF;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,cAAc;;;;;;;;;;GA4BhE;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY;;;;;;GAiCpF;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,cAAc;;;;;;;;;;;GAkE3D;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY;;;;;GAqBjF;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MASzD"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import { tool } from '@cogitator-ai/core';
|
|
2
|
+
import { interceptRequestSchema, waitForResponseSchema, blockResourcesSchema, captureHarSchema, getApiCallsSchema, } from '../utils/schemas.js';
|
|
3
|
+
class NetworkState {
|
|
4
|
+
_interceptors = new Map();
|
|
5
|
+
_apiCalls = [];
|
|
6
|
+
_listening = false;
|
|
7
|
+
_interceptorCounter = 0;
|
|
8
|
+
get apiCalls() {
|
|
9
|
+
return this._apiCalls;
|
|
10
|
+
}
|
|
11
|
+
async addInterceptor(_page, id, remover) {
|
|
12
|
+
this._interceptors.set(id, remover);
|
|
13
|
+
}
|
|
14
|
+
async removeInterceptor(id) {
|
|
15
|
+
const remover = this._interceptors.get(id);
|
|
16
|
+
if (remover) {
|
|
17
|
+
await remover();
|
|
18
|
+
this._interceptors.delete(id);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
startListening(page) {
|
|
22
|
+
if (this._listening)
|
|
23
|
+
return;
|
|
24
|
+
this._listening = true;
|
|
25
|
+
page.on('response', async (response) => {
|
|
26
|
+
const request = response.request();
|
|
27
|
+
const resourceType = request.resourceType();
|
|
28
|
+
if (resourceType === 'xhr' || resourceType === 'fetch') {
|
|
29
|
+
this._apiCalls.push({
|
|
30
|
+
url: request.url(),
|
|
31
|
+
method: request.method(),
|
|
32
|
+
status: response.status(),
|
|
33
|
+
timing: 0,
|
|
34
|
+
requestHeaders: request.headers(),
|
|
35
|
+
responseHeaders: response.headers(),
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
nextId() {
|
|
41
|
+
return `interceptor_${++this._interceptorCounter}`;
|
|
42
|
+
}
|
|
43
|
+
clearApiCalls() {
|
|
44
|
+
this._apiCalls = [];
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export function createInterceptRequestTool(session, state) {
|
|
48
|
+
return tool({
|
|
49
|
+
name: 'browser_intercept_request',
|
|
50
|
+
description: 'Intercept and modify, block, or continue HTTP requests matching a URL pattern.',
|
|
51
|
+
category: 'web',
|
|
52
|
+
tags: ['browser', 'network'],
|
|
53
|
+
parameters: interceptRequestSchema,
|
|
54
|
+
execute: async (params) => {
|
|
55
|
+
const page = session.page;
|
|
56
|
+
const id = state.nextId();
|
|
57
|
+
const handler = async (route) => {
|
|
58
|
+
if (params.action === 'block') {
|
|
59
|
+
await route.abort();
|
|
60
|
+
}
|
|
61
|
+
else if (params.action === 'modify' && params.modify) {
|
|
62
|
+
const overrides = {};
|
|
63
|
+
if (params.modify.headers)
|
|
64
|
+
overrides.headers = params.modify.headers;
|
|
65
|
+
if (params.modify.body)
|
|
66
|
+
overrides.postData = params.modify.body;
|
|
67
|
+
if (params.modify.url)
|
|
68
|
+
overrides.url = params.modify.url;
|
|
69
|
+
await route.continue(overrides);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
await route.continue();
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
await page.route(params.urlPattern, handler);
|
|
76
|
+
await state.addInterceptor(page, id, async () => {
|
|
77
|
+
await page.unroute(params.urlPattern, handler);
|
|
78
|
+
});
|
|
79
|
+
return { interceptorId: id };
|
|
80
|
+
},
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
export function createWaitForResponseTool(session) {
|
|
84
|
+
return tool({
|
|
85
|
+
name: 'browser_wait_for_response',
|
|
86
|
+
description: 'Wait for an HTTP response matching a URL pattern. Returns status, headers, and body.',
|
|
87
|
+
category: 'web',
|
|
88
|
+
tags: ['browser', 'network'],
|
|
89
|
+
parameters: waitForResponseSchema,
|
|
90
|
+
execute: async (params) => {
|
|
91
|
+
const page = session.page;
|
|
92
|
+
const response = await page.waitForResponse((resp) => resp.url().includes(params.urlPattern), { timeout: params.timeout });
|
|
93
|
+
let body;
|
|
94
|
+
try {
|
|
95
|
+
body = await response.text();
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
body = '';
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
url: response.url(),
|
|
102
|
+
status: response.status(),
|
|
103
|
+
headers: response.headers(),
|
|
104
|
+
body,
|
|
105
|
+
};
|
|
106
|
+
},
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
export function createBlockResourcesTool(session, state) {
|
|
110
|
+
return tool({
|
|
111
|
+
name: 'browser_block_resources',
|
|
112
|
+
description: 'Block specific resource types (images, stylesheets, fonts, media, scripts) from loading.',
|
|
113
|
+
category: 'web',
|
|
114
|
+
tags: ['browser', 'network'],
|
|
115
|
+
parameters: blockResourcesSchema,
|
|
116
|
+
execute: async (params) => {
|
|
117
|
+
const page = session.page;
|
|
118
|
+
const types = new Set(params.types);
|
|
119
|
+
const handler = async (route) => {
|
|
120
|
+
if (types.has(route.request().resourceType())) {
|
|
121
|
+
await route.abort();
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
await route.continue();
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
const id = state.nextId();
|
|
128
|
+
await page.route('**/*', handler);
|
|
129
|
+
await state.addInterceptor(page, id, async () => {
|
|
130
|
+
await page.unroute('**/*', handler);
|
|
131
|
+
});
|
|
132
|
+
return { blocking: true, interceptorId: id, types: params.types };
|
|
133
|
+
},
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
export function createCaptureHarTool(session) {
|
|
137
|
+
let harEntries = [];
|
|
138
|
+
let harCapturing = false;
|
|
139
|
+
let responseHandler = null;
|
|
140
|
+
return tool({
|
|
141
|
+
name: 'browser_capture_har',
|
|
142
|
+
description: 'Start or stop capturing HTTP traffic in HAR format. On stop, returns all captured entries.',
|
|
143
|
+
category: 'web',
|
|
144
|
+
tags: ['browser', 'network'],
|
|
145
|
+
parameters: captureHarSchema,
|
|
146
|
+
execute: async (params) => {
|
|
147
|
+
const page = session.page;
|
|
148
|
+
if (params.action === 'start') {
|
|
149
|
+
harEntries = [];
|
|
150
|
+
harCapturing = true;
|
|
151
|
+
responseHandler = async (response) => {
|
|
152
|
+
if (!harCapturing)
|
|
153
|
+
return;
|
|
154
|
+
const startTime = Date.now();
|
|
155
|
+
const resp = response;
|
|
156
|
+
const request = resp.request();
|
|
157
|
+
let body = '';
|
|
158
|
+
try {
|
|
159
|
+
body = await resp.text();
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
/* response body may not be available */
|
|
163
|
+
}
|
|
164
|
+
harEntries.push({
|
|
165
|
+
url: request.url(),
|
|
166
|
+
method: request.method(),
|
|
167
|
+
status: resp.status(),
|
|
168
|
+
timing: Date.now() - startTime,
|
|
169
|
+
requestHeaders: request.headers(),
|
|
170
|
+
responseHeaders: resp.headers(),
|
|
171
|
+
responseBody: body,
|
|
172
|
+
});
|
|
173
|
+
};
|
|
174
|
+
page.on('response', responseHandler);
|
|
175
|
+
return { capturing: true, entries: 0 };
|
|
176
|
+
}
|
|
177
|
+
harCapturing = false;
|
|
178
|
+
if (responseHandler) {
|
|
179
|
+
page.removeListener('response', responseHandler);
|
|
180
|
+
responseHandler = null;
|
|
181
|
+
}
|
|
182
|
+
if (params.path) {
|
|
183
|
+
const { writeFile } = await import('node:fs/promises');
|
|
184
|
+
await writeFile(params.path, JSON.stringify({ entries: harEntries }, null, 2));
|
|
185
|
+
}
|
|
186
|
+
const entries = [...harEntries];
|
|
187
|
+
harEntries = [];
|
|
188
|
+
return { capturing: false, entries: entries.length, har: entries };
|
|
189
|
+
},
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
export function createGetApiCallsTool(session, state) {
|
|
193
|
+
return tool({
|
|
194
|
+
name: 'browser_get_api_calls',
|
|
195
|
+
description: 'Get captured XHR/fetch API calls, optionally filtered by URL pattern or HTTP method.',
|
|
196
|
+
category: 'web',
|
|
197
|
+
tags: ['browser', 'network'],
|
|
198
|
+
parameters: getApiCallsSchema,
|
|
199
|
+
execute: async (params) => {
|
|
200
|
+
state.startListening(session.page);
|
|
201
|
+
let calls = state.apiCalls;
|
|
202
|
+
if (params.urlPattern) {
|
|
203
|
+
calls = calls.filter((c) => c.url.includes(params.urlPattern));
|
|
204
|
+
}
|
|
205
|
+
if (params.method) {
|
|
206
|
+
const method = params.method.toUpperCase();
|
|
207
|
+
calls = calls.filter((c) => c.method === method);
|
|
208
|
+
}
|
|
209
|
+
return { calls };
|
|
210
|
+
},
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
export function createNetworkTools(session) {
|
|
214
|
+
const state = new NetworkState();
|
|
215
|
+
return [
|
|
216
|
+
createInterceptRequestTool(session, state),
|
|
217
|
+
createWaitForResponseTool(session),
|
|
218
|
+
createBlockResourcesTool(session, state),
|
|
219
|
+
createCaptureHarTool(session),
|
|
220
|
+
createGetApiCallsTool(session, state),
|
|
221
|
+
];
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=network.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/tools/network.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import type { BrowserSession } from '../session.js';
|
|
2
|
+
export declare function createScreenshotTool(session: BrowserSession): import("@cogitator-ai/types").Tool<{
|
|
3
|
+
fullPage?: boolean | undefined;
|
|
4
|
+
selector?: string | undefined;
|
|
5
|
+
quality?: number | undefined;
|
|
6
|
+
}, {
|
|
7
|
+
image: string;
|
|
8
|
+
width: number;
|
|
9
|
+
height: number;
|
|
10
|
+
}>;
|
|
11
|
+
export declare function createScreenshotElementTool(session: BrowserSession): import("@cogitator-ai/types").Tool<{
|
|
12
|
+
selector: string;
|
|
13
|
+
}, {
|
|
14
|
+
image: string;
|
|
15
|
+
boundingBox: {
|
|
16
|
+
x: number;
|
|
17
|
+
y: number;
|
|
18
|
+
width: number;
|
|
19
|
+
height: number;
|
|
20
|
+
} | null;
|
|
21
|
+
}>;
|
|
22
|
+
export declare function createFindByDescriptionTool(session: BrowserSession): import("@cogitator-ai/types").Tool<{
|
|
23
|
+
description: string;
|
|
24
|
+
}, {
|
|
25
|
+
elements: {
|
|
26
|
+
role: string;
|
|
27
|
+
name: string;
|
|
28
|
+
description: string;
|
|
29
|
+
}[];
|
|
30
|
+
}>;
|
|
31
|
+
export declare function createClickByDescriptionTool(session: BrowserSession): import("@cogitator-ai/types").Tool<{
|
|
32
|
+
description: string;
|
|
33
|
+
index?: number | undefined;
|
|
34
|
+
}, {
|
|
35
|
+
clicked: boolean;
|
|
36
|
+
element: {
|
|
37
|
+
description: string;
|
|
38
|
+
index: number;
|
|
39
|
+
};
|
|
40
|
+
} | {
|
|
41
|
+
clicked: boolean;
|
|
42
|
+
element: null;
|
|
43
|
+
}>;
|
|
44
|
+
export declare function createVisionTools(session: BrowserSession): (import("@cogitator-ai/types").Tool<{
|
|
45
|
+
fullPage?: boolean | undefined;
|
|
46
|
+
selector?: string | undefined;
|
|
47
|
+
quality?: number | undefined;
|
|
48
|
+
}, {
|
|
49
|
+
image: string;
|
|
50
|
+
width: number;
|
|
51
|
+
height: number;
|
|
52
|
+
}> | import("@cogitator-ai/types").Tool<{
|
|
53
|
+
selector: string;
|
|
54
|
+
}, {
|
|
55
|
+
image: string;
|
|
56
|
+
boundingBox: {
|
|
57
|
+
x: number;
|
|
58
|
+
y: number;
|
|
59
|
+
width: number;
|
|
60
|
+
height: number;
|
|
61
|
+
} | null;
|
|
62
|
+
}> | import("@cogitator-ai/types").Tool<{
|
|
63
|
+
description: string;
|
|
64
|
+
}, {
|
|
65
|
+
elements: {
|
|
66
|
+
role: string;
|
|
67
|
+
name: string;
|
|
68
|
+
description: string;
|
|
69
|
+
}[];
|
|
70
|
+
}> | import("@cogitator-ai/types").Tool<{
|
|
71
|
+
description: string;
|
|
72
|
+
index?: number | undefined;
|
|
73
|
+
}, {
|
|
74
|
+
clicked: boolean;
|
|
75
|
+
element: {
|
|
76
|
+
description: string;
|
|
77
|
+
index: number;
|
|
78
|
+
};
|
|
79
|
+
} | {
|
|
80
|
+
clicked: boolean;
|
|
81
|
+
element: null;
|
|
82
|
+
}>)[];
|
|
83
|
+
//# sourceMappingURL=vision.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vision.d.ts","sourceRoot":"","sources":["../../src/tools/vision.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAajD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,cAAc;;;;;;;;GAgC3D;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,cAAc;;;;;;;;;;GAmBlE;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,cAAc;;;;cAchC,MAAM;cAAQ,MAAM;qBAAe,MAAM;;GA2B3E;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,cAAc;;;;;;;;;;;;GAoCnE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc;;;;;;;;;;;;;;;;;;;;;;cAnEtB,MAAM;cAAQ,MAAM;qBAAe,MAAM;;;;;;;;;;;;;;MA0E3E"}
|