@postqode/browser 0.7.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.
- package/README.md +156 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +7 -0
- package/dist/session-tools.d.ts +356 -0
- package/dist/session-tools.d.ts.map +1 -0
- package/dist/session-tools.js +11 -0
- package/dist/session-tools.js.map +7 -0
- package/dist/session.d.ts +121 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +2 -0
- package/dist/session.js.map +7 -0
- package/dist/tools.d.ts +49 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +4 -0
- package/dist/tools.js.map +7 -0
- package/package.json +52 -0
package/README.md
ADDED
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
# @postqode/browser
|
|
2
|
+
|
|
3
|
+
Browser automation tools for `@postqode/agent`. Uses `playwright-core` (peer dependency) under the hood.
|
|
4
|
+
|
|
5
|
+
## What ships
|
|
6
|
+
|
|
7
|
+
Two API shapes. Pick the one that matches your agent's needs.
|
|
8
|
+
|
|
9
|
+
### Stateless (one Chrome per call)
|
|
10
|
+
|
|
11
|
+
- **`browser_navigate_and_read`** — opens a URL headless, extracts visible text, closes the browser. Caps returned text at `maxChars` (default 8000). Honors the agent's `ctx.signal` for mid-navigation abort.
|
|
12
|
+
|
|
13
|
+
Use when the agent only needs to read pages during research.
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
import { createCodingAgent } from "@postqode/coding-agent"
|
|
17
|
+
import { createBrowserTools } from "@postqode/browser"
|
|
18
|
+
|
|
19
|
+
const agent = createCodingAgent({
|
|
20
|
+
api,
|
|
21
|
+
extraTools: createBrowserTools(),
|
|
22
|
+
})
|
|
23
|
+
await agent.run("Fetch https://example.com and summarize the headline.")
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Session-based (shared page across tool calls)
|
|
27
|
+
|
|
28
|
+
A `BrowserSession` keeps one `Browser` + `BrowserContext` alive across the whole conversation, with multi-tab support, buffered console + network logs, configurable dialog policy, network mocking and Playwright tracing. **34 session-bound tools** operate on the active tab — related primitives are collapsed into action-discriminator tools (cookies, localStorage, sessionStorage, state, route, tracing, mouse, key) so the full surface fits in ~2,500 prompt tokens.
|
|
29
|
+
|
|
30
|
+
**Navigation**
|
|
31
|
+
|
|
32
|
+
| Tool | Purpose |
|
|
33
|
+
|---|---|
|
|
34
|
+
| `browser_navigate` | Goto URL, wait for load / domcontentloaded / networkidle. |
|
|
35
|
+
| `browser_navigate_back` | Go back (or forward) in history. |
|
|
36
|
+
| `browser_reload` | Reload the active page. |
|
|
37
|
+
|
|
38
|
+
**Observation**
|
|
39
|
+
|
|
40
|
+
| Tool | Purpose |
|
|
41
|
+
|---|---|
|
|
42
|
+
| `browser_read` | Visible text (optionally CSS-scoped). |
|
|
43
|
+
| `browser_snapshot` | ARIA accessibility snapshot (YAML). Prefer for stable element refs. |
|
|
44
|
+
| `browser_screenshot` | PNG of page or selector; save to path or return base64. |
|
|
45
|
+
| `browser_pdf` | Render the page as PDF (Chromium-only). |
|
|
46
|
+
|
|
47
|
+
**Interaction**
|
|
48
|
+
|
|
49
|
+
| Tool | Purpose |
|
|
50
|
+
|---|---|
|
|
51
|
+
| `browser_click` / `browser_dblclick` | Click or double-click a selector's `nth` match. |
|
|
52
|
+
| `browser_hover` | Move the mouse over a selector. |
|
|
53
|
+
| `browser_type` | Fill an input; optional clear + Enter-press. |
|
|
54
|
+
| `browser_select_option` | Select `<option>` by value or label. |
|
|
55
|
+
| `browser_check` / `browser_uncheck` | Tick / untick a checkbox or radio. |
|
|
56
|
+
| `browser_file_upload` | Set files on `<input type=file>` from absolute paths. |
|
|
57
|
+
| `browser_drag` | Drag one selector onto another. |
|
|
58
|
+
| `browser_press_key` | Press a key (Enter, Escape, ArrowDown, Control+A …); optional selector to focus first. |
|
|
59
|
+
| `browser_wait` | Wait for a selector to attach OR a load-state. |
|
|
60
|
+
|
|
61
|
+
**Low-level mouse + keyboard**
|
|
62
|
+
|
|
63
|
+
| Tool | Purpose |
|
|
64
|
+
|---|---|
|
|
65
|
+
| `browser_mouse_move` / `_down` / `_up` / `_wheel` | Absolute-coordinate mouse primitives. |
|
|
66
|
+
| `browser_key_down` / `_up` | Hold / release a key for chord input. |
|
|
67
|
+
|
|
68
|
+
**JS / state**
|
|
69
|
+
|
|
70
|
+
| Tool | Purpose |
|
|
71
|
+
|---|---|
|
|
72
|
+
| `browser_eval` | Run JS in the page context; JSON-serialize the result. |
|
|
73
|
+
| `browser_resize` | Resize the viewport. |
|
|
74
|
+
| `browser_tabs` | List / new / select / close tabs. |
|
|
75
|
+
|
|
76
|
+
**Inspection**
|
|
77
|
+
|
|
78
|
+
| Tool | Purpose |
|
|
79
|
+
|---|---|
|
|
80
|
+
| `browser_console_messages` | Buffered console + page-errors; filter by type, clear. |
|
|
81
|
+
| `browser_network_requests` | Buffered network requests; filter by URL / resource type / failed-only. |
|
|
82
|
+
| `browser_handle_dialog` | Pre-register accept/dismiss (with optional prompt text) for the next dialog. |
|
|
83
|
+
|
|
84
|
+
**Cookies + storage**
|
|
85
|
+
|
|
86
|
+
| Tool | Purpose |
|
|
87
|
+
|---|---|
|
|
88
|
+
| `browser_cookie_list` / `_get` / `_set` / `_delete` / `_clear` | Manage browser cookies. |
|
|
89
|
+
| `browser_localstorage_list` / `_get` / `_set` / `_delete` / `_clear` | Per-origin localStorage. |
|
|
90
|
+
| `browser_sessionstorage_list` / `_get` / `_set` / `_delete` / `_clear` | Per-origin sessionStorage. |
|
|
91
|
+
| `browser_state_save` / `_state_load` | Persist / restore the full Playwright storage state. |
|
|
92
|
+
| `browser_delete_data` | Clear cookies + storage for the active origin. |
|
|
93
|
+
|
|
94
|
+
**Network mocking + offline**
|
|
95
|
+
|
|
96
|
+
| Tool | Purpose |
|
|
97
|
+
|---|---|
|
|
98
|
+
| `browser_route` | Register an abort / fulfill / continue mock for a URL pattern. |
|
|
99
|
+
| `browser_route_list` / `browser_unroute` | List / remove registered routes. |
|
|
100
|
+
| `browser_network_state_set` | Toggle context offline. |
|
|
101
|
+
|
|
102
|
+
**Tracing**
|
|
103
|
+
|
|
104
|
+
| Tool | Purpose |
|
|
105
|
+
|---|---|
|
|
106
|
+
| `browser_tracing_start` / `browser_tracing_stop` | Playwright trace recording (saves a `.zip`). |
|
|
107
|
+
|
|
108
|
+
**Lifecycle**
|
|
109
|
+
|
|
110
|
+
| Tool | Purpose |
|
|
111
|
+
|---|---|
|
|
112
|
+
| `browser_close` | Explicit teardown (next call auto-reopens). |
|
|
113
|
+
|
|
114
|
+
```ts
|
|
115
|
+
import { BrowserSession, createBrowserTools } from "@postqode/browser"
|
|
116
|
+
import { createCodingAgent } from "@postqode/coding-agent"
|
|
117
|
+
|
|
118
|
+
const session = new BrowserSession({ headless: true })
|
|
119
|
+
try {
|
|
120
|
+
const agent = createCodingAgent({
|
|
121
|
+
api,
|
|
122
|
+
extraTools: createBrowserTools({ session }),
|
|
123
|
+
})
|
|
124
|
+
await agent.run(
|
|
125
|
+
"Open example.com/login, type 'admin' into #user, click #submit, then screenshot the dashboard.",
|
|
126
|
+
)
|
|
127
|
+
} finally {
|
|
128
|
+
await session.close()
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
`BrowserSession` config:
|
|
133
|
+
|
|
134
|
+
| Field | Default | Purpose |
|
|
135
|
+
|---|---|---|
|
|
136
|
+
| `headless` | `true` | Launch headless. |
|
|
137
|
+
| `defaultTimeoutMs` | `30000` | Per-operation timeout. |
|
|
138
|
+
| `viewport` | `1280×800` | Initial viewport. |
|
|
139
|
+
| `userAgent` | — | UA override. |
|
|
140
|
+
| `launchArgs` | — | Extra chromium args. |
|
|
141
|
+
|
|
142
|
+
Aborting the agent's `ctx.signal` auto-closes the session.
|
|
143
|
+
|
|
144
|
+
## Peer dep
|
|
145
|
+
|
|
146
|
+
`playwright-core >= 1.58.0`. Install in the consumer's project. Inside this monorepo the root already depends on it for the extension's existing browser mode, so no separate install is needed.
|
|
147
|
+
|
|
148
|
+
## Design note
|
|
149
|
+
|
|
150
|
+
The VS Code-side browser code (`src/services/browser/BrowserSession.ts`, `UrlContentFetcher.ts`, `BrowserToolHandler.ts`) stays in the extension — it's entangled with `Controller`, `@shared/ExtensionMessage`, and the legacy `IFullyManagedTool` interface. That is a different product surface (the "Browser Agent" mode's UI); the package here is the portable SDK path.
|
|
151
|
+
|
|
152
|
+
## Sibling packages
|
|
153
|
+
|
|
154
|
+
- [`@postqode/ai`](../postqode-ai) — provider registry.
|
|
155
|
+
- [`@postqode/agent`](../postqode-agent) — `Tool` contract this package implements.
|
|
156
|
+
- [`@postqode/coding-agent`](../postqode-coding-agent) — merge via `extraTools`.
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAoBA,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,SAAS,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(i,t,e,r){r===void 0&&(r=e);var n=Object.getOwnPropertyDescriptor(t,e);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[e]}}),Object.defineProperty(i,r,n)}):(function(i,t,e,r){r===void 0&&(r=e),i[r]=t[e]})),__exportStar=this&&this.__exportStar||function(i,t){for(var e in i)e!=="default"&&!Object.prototype.hasOwnProperty.call(t,e)&&__createBinding(t,i,e)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./session"),exports),__exportStar(require("./session-tools"),exports),__exportStar(require("./tools"),exports);
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/index.ts"],
|
|
4
|
+
"sourcesContent": ["// @postqode/browser \u2014 browser automation tools for @postqode/agent.\n//\n// Two API shapes:\n//\n// 1. Stateless (one Chrome per call)\n// createBrowserTools() \u2192 [browser_navigate_and_read]\n// Good for one-off page reads during research.\n//\n// 2. Session-based (shared page across calls)\n// const session = new BrowserSession({ headless: true })\n// createBrowserTools({ session })\n// \u2192 [browser_navigate, browser_read, browser_click, browser_type,\n// browser_wait, browser_screenshot, browser_eval, browser_close]\n// Use when the agent needs to fill a form, click a link, read what\n// loaded, take a screenshot, etc. Remember to `await session.close()`\n// when the conversation is done.\n//\n// Uses playwright-core (peer dep). Consumers must install\n// playwright-core themselves \u2014 this package doesn't bundle it so\n// bundle size stays honest.\nexport * from \"./session\"\nexport * from \"./session-tools\"\nexport * from \"./tools\"\n\n"],
|
|
5
|
+
"mappings": "siBAoBA,aAAA,QAAA,WAAA,EAAA,OAAA,EACA,aAAA,QAAA,iBAAA,EAAA,OAAA,EACA,aAAA,QAAA,SAAA,EAAA,OAAA",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
import type { Tool, ToolOutput } from "@postqode/agent";
|
|
2
|
+
import type { BrowserSession } from "./session";
|
|
3
|
+
export interface BrowserNavigateInput {
|
|
4
|
+
url: string;
|
|
5
|
+
/** Navigation wait condition. Default "domcontentloaded". */
|
|
6
|
+
waitUntil?: "load" | "domcontentloaded" | "networkidle";
|
|
7
|
+
timeoutMs?: number;
|
|
8
|
+
}
|
|
9
|
+
export declare function makeNavigateTool(session: BrowserSession): Tool<BrowserNavigateInput>;
|
|
10
|
+
export interface BrowserReadInput {
|
|
11
|
+
/** Max characters of visible text returned. Default 8000. */
|
|
12
|
+
maxChars?: number;
|
|
13
|
+
/** Optional CSS selector to scope the read. */
|
|
14
|
+
selector?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare function makeReadTool(session: BrowserSession): Tool<BrowserReadInput>;
|
|
17
|
+
export interface BrowserClickInput {
|
|
18
|
+
selector: string;
|
|
19
|
+
/** Optional nth match. Default 0. */
|
|
20
|
+
index?: number;
|
|
21
|
+
timeoutMs?: number;
|
|
22
|
+
}
|
|
23
|
+
export declare function makeClickTool(session: BrowserSession): Tool<BrowserClickInput>;
|
|
24
|
+
export interface BrowserTypeInput {
|
|
25
|
+
selector: string;
|
|
26
|
+
text: string;
|
|
27
|
+
/** Clear existing contents first (default true). */
|
|
28
|
+
clear?: boolean;
|
|
29
|
+
/** Press Enter after typing (default false). */
|
|
30
|
+
pressEnter?: boolean;
|
|
31
|
+
timeoutMs?: number;
|
|
32
|
+
}
|
|
33
|
+
export declare function makeTypeTool(session: BrowserSession): Tool<BrowserTypeInput>;
|
|
34
|
+
export interface BrowserWaitInput {
|
|
35
|
+
/** Either wait for a selector to appear or for a load-state. */
|
|
36
|
+
selector?: string;
|
|
37
|
+
loadState?: "load" | "domcontentloaded" | "networkidle";
|
|
38
|
+
timeoutMs?: number;
|
|
39
|
+
}
|
|
40
|
+
export declare function makeWaitTool(session: BrowserSession): Tool<BrowserWaitInput>;
|
|
41
|
+
export interface BrowserScreenshotInput {
|
|
42
|
+
/** Optional output file path. When unset, returns base64 PNG in details. */
|
|
43
|
+
path?: string;
|
|
44
|
+
fullPage?: boolean;
|
|
45
|
+
/** Optional CSS selector to screenshot just that element. */
|
|
46
|
+
selector?: string;
|
|
47
|
+
}
|
|
48
|
+
export declare function makeScreenshotTool(session: BrowserSession): Tool<BrowserScreenshotInput>;
|
|
49
|
+
export interface BrowserEvalInput {
|
|
50
|
+
/** JavaScript expression or function body evaluated in the page context.
|
|
51
|
+
* When starting with `() =>` or `function(`, it's executed as a function;
|
|
52
|
+
* otherwise the result is the value of the expression. */
|
|
53
|
+
script: string;
|
|
54
|
+
}
|
|
55
|
+
export declare function makeEvalTool(session: BrowserSession): Tool<BrowserEvalInput>;
|
|
56
|
+
export interface BrowserSnapshotInput {
|
|
57
|
+
/** Optional CSS selector to scope the snapshot. Defaults to `body`. */
|
|
58
|
+
selector?: string;
|
|
59
|
+
/** Max characters of the YAML snapshot returned. Default 8000. */
|
|
60
|
+
maxChars?: number;
|
|
61
|
+
}
|
|
62
|
+
export declare function makeSnapshotTool(session: BrowserSession): Tool<BrowserSnapshotInput>;
|
|
63
|
+
export interface BrowserHoverInput {
|
|
64
|
+
selector: string;
|
|
65
|
+
index?: number;
|
|
66
|
+
timeoutMs?: number;
|
|
67
|
+
}
|
|
68
|
+
export declare function makeHoverTool(session: BrowserSession): Tool<BrowserHoverInput>;
|
|
69
|
+
export interface BrowserSelectOptionInput {
|
|
70
|
+
selector: string;
|
|
71
|
+
/** One or more option values to select. */
|
|
72
|
+
values?: string[];
|
|
73
|
+
/** One or more option visible labels to select. */
|
|
74
|
+
labels?: string[];
|
|
75
|
+
timeoutMs?: number;
|
|
76
|
+
}
|
|
77
|
+
export declare function makeSelectOptionTool(session: BrowserSession): Tool<BrowserSelectOptionInput>;
|
|
78
|
+
export interface BrowserFileUploadInput {
|
|
79
|
+
selector: string;
|
|
80
|
+
/** Absolute file paths to upload. Pass an empty array to clear the input. */
|
|
81
|
+
paths: string[];
|
|
82
|
+
timeoutMs?: number;
|
|
83
|
+
}
|
|
84
|
+
export declare function makeFileUploadTool(session: BrowserSession): Tool<BrowserFileUploadInput>;
|
|
85
|
+
export interface BrowserPressKeyInput {
|
|
86
|
+
/** Key to press. Examples: "Enter", "Escape", "ArrowDown", "Control+A". */
|
|
87
|
+
key: string;
|
|
88
|
+
/** Optional selector to focus before the press. */
|
|
89
|
+
selector?: string;
|
|
90
|
+
timeoutMs?: number;
|
|
91
|
+
}
|
|
92
|
+
export declare function makePressKeyTool(session: BrowserSession): Tool<BrowserPressKeyInput>;
|
|
93
|
+
export interface BrowserNavigateBackInput {
|
|
94
|
+
/** "back" (default) or "forward". */
|
|
95
|
+
direction?: "back" | "forward";
|
|
96
|
+
timeoutMs?: number;
|
|
97
|
+
}
|
|
98
|
+
export declare function makeNavigateBackTool(session: BrowserSession): Tool<BrowserNavigateBackInput>;
|
|
99
|
+
export interface BrowserResizeInput {
|
|
100
|
+
width: number;
|
|
101
|
+
height: number;
|
|
102
|
+
}
|
|
103
|
+
export declare function makeResizeTool(session: BrowserSession): Tool<BrowserResizeInput>;
|
|
104
|
+
export interface BrowserTabsInput {
|
|
105
|
+
/** Action to perform. Default "list". */
|
|
106
|
+
action?: "list" | "new" | "select" | "close";
|
|
107
|
+
/** Tab index (required for "select" and "close"). */
|
|
108
|
+
index?: number;
|
|
109
|
+
}
|
|
110
|
+
export declare function makeTabsTool(session: BrowserSession): Tool<BrowserTabsInput>;
|
|
111
|
+
export interface BrowserConsoleMessagesInput {
|
|
112
|
+
/** Drop the buffer after reading. Default false. */
|
|
113
|
+
clear?: boolean;
|
|
114
|
+
/** Only return messages of these types (e.g. ["error", "warning"]). */
|
|
115
|
+
types?: string[];
|
|
116
|
+
}
|
|
117
|
+
export declare function makeConsoleMessagesTool(session: BrowserSession): Tool<BrowserConsoleMessagesInput>;
|
|
118
|
+
export interface BrowserNetworkRequestsInput {
|
|
119
|
+
/** Drop the buffer after reading. Default false. */
|
|
120
|
+
clear?: boolean;
|
|
121
|
+
/** Only return entries whose URL contains this substring. */
|
|
122
|
+
urlContains?: string;
|
|
123
|
+
/** Only return entries with these resource types (document, xhr, fetch, …). */
|
|
124
|
+
resourceTypes?: string[];
|
|
125
|
+
/** Only return entries that have a status >= 400 or were failed. */
|
|
126
|
+
failedOnly?: boolean;
|
|
127
|
+
}
|
|
128
|
+
export declare function makeNetworkRequestsTool(session: BrowserSession): Tool<BrowserNetworkRequestsInput>;
|
|
129
|
+
export interface BrowserHandleDialogInput {
|
|
130
|
+
/** Accept the next dialog. Set false to dismiss. */
|
|
131
|
+
accept: boolean;
|
|
132
|
+
/** Optional response text for window.prompt(). */
|
|
133
|
+
promptText?: string;
|
|
134
|
+
}
|
|
135
|
+
export declare function makeHandleDialogTool(session: BrowserSession): Tool<BrowserHandleDialogInput>;
|
|
136
|
+
export interface BrowserReloadInput {
|
|
137
|
+
waitUntil?: "load" | "domcontentloaded" | "networkidle";
|
|
138
|
+
timeoutMs?: number;
|
|
139
|
+
}
|
|
140
|
+
export declare function makeReloadTool(session: BrowserSession): Tool<BrowserReloadInput>;
|
|
141
|
+
export interface BrowserDblClickInput {
|
|
142
|
+
selector: string;
|
|
143
|
+
index?: number;
|
|
144
|
+
timeoutMs?: number;
|
|
145
|
+
}
|
|
146
|
+
export declare function makeDblClickTool(session: BrowserSession): Tool<BrowserDblClickInput>;
|
|
147
|
+
export interface BrowserDragInput {
|
|
148
|
+
fromSelector: string;
|
|
149
|
+
toSelector: string;
|
|
150
|
+
timeoutMs?: number;
|
|
151
|
+
}
|
|
152
|
+
export declare function makeDragTool(session: BrowserSession): Tool<BrowserDragInput>;
|
|
153
|
+
export interface BrowserCheckInput {
|
|
154
|
+
selector: string;
|
|
155
|
+
timeoutMs?: number;
|
|
156
|
+
}
|
|
157
|
+
export declare function makeCheckTool(session: BrowserSession): Tool<BrowserCheckInput>;
|
|
158
|
+
export declare function makeUncheckTool(session: BrowserSession): Tool<BrowserCheckInput>;
|
|
159
|
+
export interface BrowserPdfInput {
|
|
160
|
+
/** Output file path. If omitted, base64 is returned. */
|
|
161
|
+
path?: string;
|
|
162
|
+
format?: "Letter" | "Legal" | "Tabloid" | "Ledger" | "A0" | "A1" | "A2" | "A3" | "A4" | "A5" | "A6";
|
|
163
|
+
landscape?: boolean;
|
|
164
|
+
printBackground?: boolean;
|
|
165
|
+
}
|
|
166
|
+
export declare function makePdfTool(session: BrowserSession): Tool<BrowserPdfInput>;
|
|
167
|
+
export interface BrowserMouseMoveInput {
|
|
168
|
+
x: number;
|
|
169
|
+
y: number;
|
|
170
|
+
steps?: number;
|
|
171
|
+
}
|
|
172
|
+
export declare function makeMouseMoveTool(session: BrowserSession): Tool<BrowserMouseMoveInput>;
|
|
173
|
+
export interface BrowserMouseButtonInput {
|
|
174
|
+
button?: "left" | "right" | "middle";
|
|
175
|
+
clickCount?: number;
|
|
176
|
+
}
|
|
177
|
+
export declare function makeMouseDownTool(session: BrowserSession): Tool<BrowserMouseButtonInput>;
|
|
178
|
+
export declare function makeMouseUpTool(session: BrowserSession): Tool<BrowserMouseButtonInput>;
|
|
179
|
+
export interface BrowserMouseWheelInput {
|
|
180
|
+
deltaX: number;
|
|
181
|
+
deltaY: number;
|
|
182
|
+
}
|
|
183
|
+
export declare function makeMouseWheelTool(session: BrowserSession): Tool<BrowserMouseWheelInput>;
|
|
184
|
+
export interface BrowserKeyEventInput {
|
|
185
|
+
key: string;
|
|
186
|
+
}
|
|
187
|
+
export declare function makeKeyDownTool(session: BrowserSession): Tool<BrowserKeyEventInput>;
|
|
188
|
+
export declare function makeKeyUpTool(session: BrowserSession): Tool<BrowserKeyEventInput>;
|
|
189
|
+
export declare function makeCookieListTool(session: BrowserSession): Tool<{
|
|
190
|
+
urls?: string[];
|
|
191
|
+
}>;
|
|
192
|
+
export interface BrowserCookieGetInput {
|
|
193
|
+
name: string;
|
|
194
|
+
url?: string;
|
|
195
|
+
}
|
|
196
|
+
export declare function makeCookieGetTool(session: BrowserSession): Tool<BrowserCookieGetInput>;
|
|
197
|
+
export interface BrowserCookieSetInput {
|
|
198
|
+
name: string;
|
|
199
|
+
value: string;
|
|
200
|
+
url?: string;
|
|
201
|
+
domain?: string;
|
|
202
|
+
path?: string;
|
|
203
|
+
expires?: number;
|
|
204
|
+
httpOnly?: boolean;
|
|
205
|
+
secure?: boolean;
|
|
206
|
+
sameSite?: "Strict" | "Lax" | "None";
|
|
207
|
+
}
|
|
208
|
+
export declare function makeCookieSetTool(session: BrowserSession): Tool<BrowserCookieSetInput>;
|
|
209
|
+
export interface BrowserCookieDeleteInput {
|
|
210
|
+
name: string;
|
|
211
|
+
url?: string;
|
|
212
|
+
}
|
|
213
|
+
export declare function makeCookieDeleteTool(session: BrowserSession): Tool<BrowserCookieDeleteInput>;
|
|
214
|
+
export declare function makeCookieClearTool(session: BrowserSession): Tool<Record<string, never>>;
|
|
215
|
+
export declare function makeLocalStorageListTool(session: BrowserSession): Tool<Record<string, never>>;
|
|
216
|
+
export declare function makeLocalStorageGetTool(session: BrowserSession): Tool<{
|
|
217
|
+
key: string;
|
|
218
|
+
}>;
|
|
219
|
+
export declare function makeLocalStorageSetTool(session: BrowserSession): Tool<{
|
|
220
|
+
key: string;
|
|
221
|
+
value: string;
|
|
222
|
+
}>;
|
|
223
|
+
export declare function makeLocalStorageDeleteTool(session: BrowserSession): Tool<{
|
|
224
|
+
key: string;
|
|
225
|
+
}>;
|
|
226
|
+
export declare function makeLocalStorageClearTool(session: BrowserSession): Tool<Record<string, never>>;
|
|
227
|
+
export declare function makeSessionStorageListTool(session: BrowserSession): Tool<Record<string, never>>;
|
|
228
|
+
export declare function makeSessionStorageGetTool(session: BrowserSession): Tool<{
|
|
229
|
+
key: string;
|
|
230
|
+
}>;
|
|
231
|
+
export declare function makeSessionStorageSetTool(session: BrowserSession): Tool<{
|
|
232
|
+
key: string;
|
|
233
|
+
value: string;
|
|
234
|
+
}>;
|
|
235
|
+
export declare function makeSessionStorageDeleteTool(session: BrowserSession): Tool<{
|
|
236
|
+
key: string;
|
|
237
|
+
}>;
|
|
238
|
+
export declare function makeSessionStorageClearTool(session: BrowserSession): Tool<Record<string, never>>;
|
|
239
|
+
export interface BrowserStateSaveInput {
|
|
240
|
+
path: string;
|
|
241
|
+
}
|
|
242
|
+
export declare function makeStateSaveTool(session: BrowserSession): Tool<BrowserStateSaveInput>;
|
|
243
|
+
export interface BrowserStateLoadInput {
|
|
244
|
+
path: string;
|
|
245
|
+
}
|
|
246
|
+
export declare function makeStateLoadTool(session: BrowserSession): Tool<BrowserStateLoadInput>;
|
|
247
|
+
export declare function makeDeleteDataTool(session: BrowserSession): Tool<Record<string, never>>;
|
|
248
|
+
export interface BrowserRouteInput {
|
|
249
|
+
/** URL pattern (glob or string). */
|
|
250
|
+
pattern: string;
|
|
251
|
+
/** Action when the route matches. */
|
|
252
|
+
action: "abort" | "fulfill" | "continue";
|
|
253
|
+
/** Status code for `fulfill`. Default 200. */
|
|
254
|
+
status?: number;
|
|
255
|
+
/** Response body for `fulfill`. */
|
|
256
|
+
body?: string;
|
|
257
|
+
/** Content type for `fulfill`. Default text/plain. */
|
|
258
|
+
contentType?: string;
|
|
259
|
+
}
|
|
260
|
+
export declare function makeRouteTool(session: BrowserSession): Tool<BrowserRouteInput>;
|
|
261
|
+
export declare function makeRouteListTool(session: BrowserSession): Tool<Record<string, never>>;
|
|
262
|
+
export declare function makeUnrouteTool(session: BrowserSession): Tool<{
|
|
263
|
+
pattern: string;
|
|
264
|
+
}>;
|
|
265
|
+
export interface BrowserNetworkStateSetInput {
|
|
266
|
+
offline: boolean;
|
|
267
|
+
}
|
|
268
|
+
export declare function makeNetworkStateSetTool(session: BrowserSession): Tool<BrowserNetworkStateSetInput>;
|
|
269
|
+
export interface BrowserTracingStartInput {
|
|
270
|
+
screenshots?: boolean;
|
|
271
|
+
snapshots?: boolean;
|
|
272
|
+
sources?: boolean;
|
|
273
|
+
}
|
|
274
|
+
export declare function makeTracingStartTool(session: BrowserSession): Tool<BrowserTracingStartInput>;
|
|
275
|
+
export interface BrowserTracingStopInput {
|
|
276
|
+
/** Output zip path. If omitted, the trace is discarded. */
|
|
277
|
+
path?: string;
|
|
278
|
+
}
|
|
279
|
+
export declare function makeTracingStopTool(session: BrowserSession): Tool<BrowserTracingStopInput>;
|
|
280
|
+
export interface BrowserCookiesInput {
|
|
281
|
+
action: "list" | "get" | "set" | "delete" | "clear";
|
|
282
|
+
/** Cookie name (get/set/delete). */
|
|
283
|
+
name?: string;
|
|
284
|
+
/** Cookie value (set). */
|
|
285
|
+
value?: string;
|
|
286
|
+
/** URL scope (get/set/delete) or list filter (list). */
|
|
287
|
+
url?: string;
|
|
288
|
+
domain?: string;
|
|
289
|
+
path?: string;
|
|
290
|
+
expires?: number;
|
|
291
|
+
httpOnly?: boolean;
|
|
292
|
+
secure?: boolean;
|
|
293
|
+
sameSite?: "Strict" | "Lax" | "None";
|
|
294
|
+
}
|
|
295
|
+
export declare function makeCookiesTool(session: BrowserSession): Tool<BrowserCookiesInput>;
|
|
296
|
+
export interface BrowserStorageInput {
|
|
297
|
+
action: "list" | "get" | "set" | "delete" | "clear";
|
|
298
|
+
key?: string;
|
|
299
|
+
value?: string;
|
|
300
|
+
}
|
|
301
|
+
export declare const makeLocalStorageActionTool: (s: BrowserSession) => Tool<BrowserStorageInput, ToolOutput>;
|
|
302
|
+
export declare const makeSessionStorageActionTool: (s: BrowserSession) => Tool<BrowserStorageInput, ToolOutput>;
|
|
303
|
+
export interface BrowserStateInput {
|
|
304
|
+
action: "save" | "load";
|
|
305
|
+
path: string;
|
|
306
|
+
}
|
|
307
|
+
export declare function makeStateTool(session: BrowserSession): Tool<BrowserStateInput>;
|
|
308
|
+
export interface BrowserRouteActionInput {
|
|
309
|
+
action: "add" | "list" | "remove";
|
|
310
|
+
pattern?: string;
|
|
311
|
+
mode?: "abort" | "fulfill" | "continue";
|
|
312
|
+
status?: number;
|
|
313
|
+
body?: string;
|
|
314
|
+
contentType?: string;
|
|
315
|
+
}
|
|
316
|
+
export declare function makeRouteActionTool(session: BrowserSession): Tool<BrowserRouteActionInput>;
|
|
317
|
+
export interface BrowserTracingInput {
|
|
318
|
+
action: "start" | "stop";
|
|
319
|
+
path?: string;
|
|
320
|
+
screenshots?: boolean;
|
|
321
|
+
snapshots?: boolean;
|
|
322
|
+
sources?: boolean;
|
|
323
|
+
}
|
|
324
|
+
export declare function makeTracingTool(session: BrowserSession): Tool<BrowserTracingInput>;
|
|
325
|
+
export interface BrowserMouseInput {
|
|
326
|
+
action: "move" | "down" | "up" | "wheel";
|
|
327
|
+
x?: number;
|
|
328
|
+
y?: number;
|
|
329
|
+
steps?: number;
|
|
330
|
+
button?: "left" | "right" | "middle";
|
|
331
|
+
clickCount?: number;
|
|
332
|
+
deltaX?: number;
|
|
333
|
+
deltaY?: number;
|
|
334
|
+
}
|
|
335
|
+
export declare function makeMouseTool(session: BrowserSession): Tool<BrowserMouseInput>;
|
|
336
|
+
export interface BrowserKeyInput {
|
|
337
|
+
action: "down" | "up";
|
|
338
|
+
key: string;
|
|
339
|
+
}
|
|
340
|
+
export declare function makeKeyTool(session: BrowserSession): Tool<BrowserKeyInput>;
|
|
341
|
+
export interface BrowserCheckActionInput {
|
|
342
|
+
selector: string;
|
|
343
|
+
checked: boolean;
|
|
344
|
+
timeoutMs?: number;
|
|
345
|
+
}
|
|
346
|
+
export declare function makeCheckActionTool(session: BrowserSession): Tool<BrowserCheckActionInput>;
|
|
347
|
+
export declare function makeCloseTool(session: BrowserSession): Tool<Record<string, never>>;
|
|
348
|
+
/**
|
|
349
|
+
* Default session-bound tool set — 33 tools, action-discriminator collapsed
|
|
350
|
+
* for ~3.5K token savings vs. fully expanded 54-tool surface.
|
|
351
|
+
*
|
|
352
|
+
* Granular factories (`makeCookieListTool`, `makeMouseMoveTool`, …) are still
|
|
353
|
+
* exported above for consumers who want minimal surfaces.
|
|
354
|
+
*/
|
|
355
|
+
export declare function createSessionTools(session: BrowserSession): Tool[];
|
|
356
|
+
//# sourceMappingURL=session-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-tools.d.ts","sourceRoot":"","sources":["../src/session-tools.ts"],"names":[],"mappings":"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"}
|