@oharness/engine 0.7.1 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent/agent.d.ts +1 -0
- package/dist/agent/agent.js +5 -0
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/permissions.js +8 -0
- package/dist/agent/permissions.js.map +1 -1
- package/dist/browser/cdp.d.ts +75 -0
- package/dist/browser/cdp.js +136 -0
- package/dist/browser/cdp.js.map +1 -0
- package/dist/browser/chrome.d.ts +19 -0
- package/dist/browser/chrome.js +306 -0
- package/dist/browser/chrome.js.map +1 -0
- package/dist/browser/extension.d.ts +35 -0
- package/dist/browser/extension.js +297 -0
- package/dist/browser/extension.js.map +1 -0
- package/dist/browser/host-manifest.d.ts +78 -0
- package/dist/browser/host-manifest.js +166 -0
- package/dist/browser/host-manifest.js.map +1 -0
- package/dist/browser/host.d.ts +27 -0
- package/dist/browser/host.js +311 -0
- package/dist/browser/host.js.map +1 -0
- package/dist/browser/index.d.ts +26 -0
- package/dist/browser/index.js +15 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/login-import.d.ts +98 -0
- package/dist/browser/login-import.js +244 -0
- package/dist/browser/login-import.js.map +1 -0
- package/dist/browser/plugin.d.ts +109 -0
- package/dist/browser/plugin.js +22 -0
- package/dist/browser/plugin.js.map +1 -0
- package/dist/browser/presence.d.ts +29 -0
- package/dist/browser/presence.js +54 -0
- package/dist/browser/presence.js.map +1 -0
- package/dist/browser/provider.d.ts +17 -0
- package/dist/browser/provider.js +13 -0
- package/dist/browser/provider.js.map +1 -0
- package/dist/browser/screencast.d.ts +42 -0
- package/dist/browser/screencast.js +99 -0
- package/dist/browser/screencast.js.map +1 -0
- package/dist/browser/session.d.ts +320 -0
- package/dist/browser/session.js +837 -0
- package/dist/browser/session.js.map +1 -0
- package/dist/browser/snapshot.d.ts +49 -0
- package/dist/browser/snapshot.js +145 -0
- package/dist/browser/snapshot.js.map +1 -0
- package/dist/browser/socket.d.ts +15 -0
- package/dist/browser/socket.js +32 -0
- package/dist/browser/socket.js.map +1 -0
- package/dist/browser/target.d.ts +112 -0
- package/dist/browser/target.js +20 -0
- package/dist/browser/target.js.map +1 -0
- package/dist/browser/tools.d.ts +3 -0
- package/dist/browser/tools.js +537 -0
- package/dist/browser/tools.js.map +1 -0
- package/dist/config.d.ts +14 -0
- package/dist/config.js.map +1 -1
- package/dist/core/errors.d.ts +12 -0
- package/dist/core/errors.js +14 -1
- package/dist/core/errors.js.map +1 -1
- package/dist/harness.d.ts +49 -0
- package/dist/harness.js +97 -1
- package/dist/harness.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/providers/piai.js +7 -2
- package/dist/providers/piai.js.map +1 -1
- package/dist/tools/define.d.ts +1 -0
- package/dist/tools/define.js +3 -0
- package/dist/tools/define.js.map +1 -1
- package/dist/tools/types.d.ts +11 -0
- package/dist/tools/types.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/browser/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The page, as the model reads it.
|
|
3
|
+
*
|
|
4
|
+
* This is the accessibility tree rather than the DOM or a screenshot, and that
|
|
5
|
+
* is the single biggest lever on what browser automation costs. A screenshot of
|
|
6
|
+
* a login form is tens of thousands of tokens of pixels the model has to infer
|
|
7
|
+
* structure from; the same form is a dozen lines here, and the lines say what
|
|
8
|
+
* each control *is* — which is the part a screenshot only implies. Screenshots
|
|
9
|
+
* stay in the toolset for the questions only pixels answer: colour, spacing,
|
|
10
|
+
* whether an image loaded.
|
|
11
|
+
*
|
|
12
|
+
* Every interactive node gets a `ref_N`, and the refs are what the click and
|
|
13
|
+
* type tools take. Coordinates still work, but a ref survives the page moving
|
|
14
|
+
* under it and reads back in the transcript as the thing that was clicked
|
|
15
|
+
* rather than a pair of numbers nobody can check.
|
|
16
|
+
*/
|
|
17
|
+
export interface AxNode {
|
|
18
|
+
nodeId: string;
|
|
19
|
+
ignored?: boolean;
|
|
20
|
+
role?: {
|
|
21
|
+
value?: unknown;
|
|
22
|
+
};
|
|
23
|
+
name?: {
|
|
24
|
+
value?: unknown;
|
|
25
|
+
};
|
|
26
|
+
value?: {
|
|
27
|
+
value?: unknown;
|
|
28
|
+
};
|
|
29
|
+
properties?: Array<{
|
|
30
|
+
name?: string;
|
|
31
|
+
value?: {
|
|
32
|
+
value?: unknown;
|
|
33
|
+
};
|
|
34
|
+
}>;
|
|
35
|
+
childIds?: string[];
|
|
36
|
+
backendDOMNodeId?: number;
|
|
37
|
+
}
|
|
38
|
+
export interface SnapshotOptions {
|
|
39
|
+
/** `interactive` keeps controls and landmarks; `all` keeps text too. */
|
|
40
|
+
filter?: "interactive" | "all";
|
|
41
|
+
maxChars?: number;
|
|
42
|
+
}
|
|
43
|
+
export interface Snapshot {
|
|
44
|
+
text: string;
|
|
45
|
+
/** ref name to the backend node id the page knows it by. */
|
|
46
|
+
refs: Map<string, number>;
|
|
47
|
+
truncated: boolean;
|
|
48
|
+
}
|
|
49
|
+
export declare function buildSnapshot(nodes: AxNode[], opts?: SnapshotOptions): Snapshot;
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The page, as the model reads it.
|
|
3
|
+
*
|
|
4
|
+
* This is the accessibility tree rather than the DOM or a screenshot, and that
|
|
5
|
+
* is the single biggest lever on what browser automation costs. A screenshot of
|
|
6
|
+
* a login form is tens of thousands of tokens of pixels the model has to infer
|
|
7
|
+
* structure from; the same form is a dozen lines here, and the lines say what
|
|
8
|
+
* each control *is* — which is the part a screenshot only implies. Screenshots
|
|
9
|
+
* stay in the toolset for the questions only pixels answer: colour, spacing,
|
|
10
|
+
* whether an image loaded.
|
|
11
|
+
*
|
|
12
|
+
* Every interactive node gets a `ref_N`, and the refs are what the click and
|
|
13
|
+
* type tools take. Coordinates still work, but a ref survives the page moving
|
|
14
|
+
* under it and reads back in the transcript as the thing that was clicked
|
|
15
|
+
* rather than a pair of numbers nobody can check.
|
|
16
|
+
*/
|
|
17
|
+
/** Roles worth handing the model a ref for. */
|
|
18
|
+
const INTERACTIVE = new Set([
|
|
19
|
+
"button",
|
|
20
|
+
"checkbox",
|
|
21
|
+
"combobox",
|
|
22
|
+
"link",
|
|
23
|
+
"listbox",
|
|
24
|
+
"menuitem",
|
|
25
|
+
"menuitemcheckbox",
|
|
26
|
+
"menuitemradio",
|
|
27
|
+
"option",
|
|
28
|
+
"radio",
|
|
29
|
+
"searchbox",
|
|
30
|
+
"slider",
|
|
31
|
+
"spinbutton",
|
|
32
|
+
"switch",
|
|
33
|
+
"tab",
|
|
34
|
+
"textbox",
|
|
35
|
+
"treeitem",
|
|
36
|
+
]);
|
|
37
|
+
/** Kept in `interactive` mode for context, without earning a ref. */
|
|
38
|
+
const STRUCTURAL = new Set(["heading", "alert", "status", "dialog", "form", "navigation", "main", "table"]);
|
|
39
|
+
export function buildSnapshot(nodes, opts = {}) {
|
|
40
|
+
const filter = opts.filter ?? "interactive";
|
|
41
|
+
const maxChars = opts.maxChars ?? 25_000;
|
|
42
|
+
const byId = new Map();
|
|
43
|
+
for (const node of nodes)
|
|
44
|
+
byId.set(node.nodeId, node);
|
|
45
|
+
// The root is the node nobody claims as a child. Derived rather than assumed
|
|
46
|
+
// to be the first entry: a detached subtree in the array would otherwise
|
|
47
|
+
// silently become the page.
|
|
48
|
+
const claimed = new Set();
|
|
49
|
+
for (const node of nodes)
|
|
50
|
+
for (const child of node.childIds ?? [])
|
|
51
|
+
claimed.add(child);
|
|
52
|
+
const roots = nodes.filter((node) => !claimed.has(node.nodeId));
|
|
53
|
+
const refs = new Map();
|
|
54
|
+
const lines = [];
|
|
55
|
+
let nextRef = 1;
|
|
56
|
+
let truncated = false;
|
|
57
|
+
let length = 0;
|
|
58
|
+
const visit = (node, depth) => {
|
|
59
|
+
if (truncated)
|
|
60
|
+
return;
|
|
61
|
+
const role = str(node.role?.value);
|
|
62
|
+
const name = str(node.name?.value);
|
|
63
|
+
const keep = !node.ignored && role !== "" && role !== "none" && role !== "generic" && role !== "InlineTextBox";
|
|
64
|
+
let nextDepth = depth;
|
|
65
|
+
if (keep) {
|
|
66
|
+
const interactive = INTERACTIVE.has(role);
|
|
67
|
+
const wanted = filter === "all" || interactive || STRUCTURAL.has(role);
|
|
68
|
+
// Text carries the page's actual content, so `all` keeps it, but a named
|
|
69
|
+
// node's name already says it — repeating both doubles the tree for
|
|
70
|
+
// nothing.
|
|
71
|
+
if (wanted && (name !== "" || interactive || filter === "all")) {
|
|
72
|
+
const parts = [`${" ".repeat(depth)}- ${role}`];
|
|
73
|
+
if (name !== "")
|
|
74
|
+
parts.push(` "${truncate(name, 200)}"`);
|
|
75
|
+
const value = str(node.value?.value);
|
|
76
|
+
if (value !== "")
|
|
77
|
+
parts.push(` = "${truncate(value, 120)}"`);
|
|
78
|
+
for (const note of notes(node))
|
|
79
|
+
parts.push(` ${note}`);
|
|
80
|
+
if (interactive && node.backendDOMNodeId !== undefined) {
|
|
81
|
+
const ref = `ref_${nextRef++}`;
|
|
82
|
+
refs.set(ref, node.backendDOMNodeId);
|
|
83
|
+
parts.push(` [${ref}]`);
|
|
84
|
+
}
|
|
85
|
+
const line = parts.join("");
|
|
86
|
+
if (length + line.length + 1 > maxChars) {
|
|
87
|
+
truncated = true;
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
lines.push(line);
|
|
91
|
+
length += line.length + 1;
|
|
92
|
+
nextDepth = depth + 1;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
for (const childId of node.childIds ?? []) {
|
|
96
|
+
const child = byId.get(childId);
|
|
97
|
+
if (child)
|
|
98
|
+
visit(child, nextDepth);
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
for (const root of roots)
|
|
102
|
+
visit(root, 0);
|
|
103
|
+
return {
|
|
104
|
+
text: lines.join("\n") || "(the page exposes no accessible content)",
|
|
105
|
+
refs,
|
|
106
|
+
truncated,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* The states that change what a control means.
|
|
111
|
+
*
|
|
112
|
+
* Only the ones that are true are printed. A tree that said `enabled` on every
|
|
113
|
+
* row would be longer and no more informative, and the model has to read all of
|
|
114
|
+
* it either way.
|
|
115
|
+
*/
|
|
116
|
+
function notes(node) {
|
|
117
|
+
const out = [];
|
|
118
|
+
for (const property of node.properties ?? []) {
|
|
119
|
+
const name = property.name ?? "";
|
|
120
|
+
const value = property.value?.value;
|
|
121
|
+
if (name === "disabled" && value === true)
|
|
122
|
+
out.push("(disabled)");
|
|
123
|
+
else if (name === "checked" && value !== false && value !== "false")
|
|
124
|
+
out.push(`(checked${value === "mixed" ? " mixed" : ""})`);
|
|
125
|
+
else if (name === "expanded")
|
|
126
|
+
out.push(value === true ? "(expanded)" : "(collapsed)");
|
|
127
|
+
else if (name === "selected" && value === true)
|
|
128
|
+
out.push("(selected)");
|
|
129
|
+
else if (name === "required" && value === true)
|
|
130
|
+
out.push("(required)");
|
|
131
|
+
else if (name === "level" && typeof value === "number")
|
|
132
|
+
out.push(`(level ${value})`);
|
|
133
|
+
else if (name === "invalid" && value !== "false" && value !== false)
|
|
134
|
+
out.push("(invalid)");
|
|
135
|
+
}
|
|
136
|
+
return out;
|
|
137
|
+
}
|
|
138
|
+
function str(value) {
|
|
139
|
+
return typeof value === "string" ? value.trim() : "";
|
|
140
|
+
}
|
|
141
|
+
function truncate(value, limit) {
|
|
142
|
+
const flat = value.replace(/\s+/g, " ");
|
|
143
|
+
return flat.length > limit ? `${flat.slice(0, limit - 1)}…` : flat;
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=snapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/browser/snapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where the native messaging host listens. A named pipe on Windows, a unix
|
|
3
|
+
* socket elsewhere.
|
|
4
|
+
*
|
|
5
|
+
* A module of its own because the host process imports it, and the host is
|
|
6
|
+
* shipped beside the desktop app's archive as loose files: everything it pulls
|
|
7
|
+
* in has to be node builtins or one of the few files copied with it.
|
|
8
|
+
*/
|
|
9
|
+
export declare function extensionSocketPath(platform?: NodeJS.Platform): string;
|
|
10
|
+
/**
|
|
11
|
+
* Whether the extension's host is there to connect to — which it is only while
|
|
12
|
+
* a browser with the extension is open. Connects and lets go at once; never
|
|
13
|
+
* waits long, since a settings page is asking.
|
|
14
|
+
*/
|
|
15
|
+
export declare function extensionHostReachable(path?: string, timeoutMs?: number): Promise<boolean>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { connect } from "node:net";
|
|
2
|
+
import { userPath } from "../paths.js";
|
|
3
|
+
/**
|
|
4
|
+
* Where the native messaging host listens. A named pipe on Windows, a unix
|
|
5
|
+
* socket elsewhere.
|
|
6
|
+
*
|
|
7
|
+
* A module of its own because the host process imports it, and the host is
|
|
8
|
+
* shipped beside the desktop app's archive as loose files: everything it pulls
|
|
9
|
+
* in has to be node builtins or one of the few files copied with it.
|
|
10
|
+
*/
|
|
11
|
+
export function extensionSocketPath(platform = process.platform) {
|
|
12
|
+
return platform === "win32" ? "\\\\.\\pipe\\oharness-browser" : userPath("browser-extension.sock");
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Whether the extension's host is there to connect to — which it is only while
|
|
16
|
+
* a browser with the extension is open. Connects and lets go at once; never
|
|
17
|
+
* waits long, since a settings page is asking.
|
|
18
|
+
*/
|
|
19
|
+
export function extensionHostReachable(path = extensionSocketPath(), timeoutMs = 400) {
|
|
20
|
+
return new Promise((resolve) => {
|
|
21
|
+
const socket = connect(path);
|
|
22
|
+
const finish = (reachable) => {
|
|
23
|
+
clearTimeout(timer);
|
|
24
|
+
socket.destroy();
|
|
25
|
+
resolve(reachable);
|
|
26
|
+
};
|
|
27
|
+
const timer = setTimeout(() => finish(false), timeoutMs);
|
|
28
|
+
socket.once("connect", () => finish(true));
|
|
29
|
+
socket.once("error", () => finish(false));
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=socket.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"socket.js","sourceRoot":"","sources":["../../src/browser/socket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAA4B,OAAO,CAAC,QAAQ;IAC9E,OAAO,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC;AACrG,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAI,GAAG,mBAAmB,EAAE,EAAE,SAAS,GAAG,GAAG;IAClF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,MAAM,GAAG,CAAC,SAAkB,EAAQ,EAAE;YAC1C,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,SAAS,CAAC,CAAC;QACrB,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC;QACzD,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the browser tools need from whatever is actually running the pages.
|
|
3
|
+
*
|
|
4
|
+
* Three things will implement this and they disagree about almost everything
|
|
5
|
+
* except one fact: all of them speak the Chrome DevTools Protocol. A local
|
|
6
|
+
* Chrome speaks it over a pipe, an Electron window speaks it through
|
|
7
|
+
* `webContents.debugger`, and a Chrome extension speaks it through
|
|
8
|
+
* `chrome.debugger`. So CDP is the interface, and the differences are pushed
|
|
9
|
+
* into how a connection is obtained and how pixels and input move.
|
|
10
|
+
*
|
|
11
|
+
* Pixels and input are part of this interface rather than layered on top of
|
|
12
|
+
* `send`, and that is the load-bearing decision here. CDP can do both
|
|
13
|
+
* (`Page.startScreencast`, `Input.dispatchMouseEvent`), but an offscreen
|
|
14
|
+
* Electron window cannot: a hidden window may never composite, so its frames
|
|
15
|
+
* have to come from Electron's own `paint` event and its input from
|
|
16
|
+
* `sendInputEvent`. An interface that only abstracted CDP would have no room
|
|
17
|
+
* for that, and the desktop provider would not fit.
|
|
18
|
+
*/
|
|
19
|
+
export interface BrowserTarget {
|
|
20
|
+
/** Which provider this is, for error messages and the UI. */
|
|
21
|
+
readonly kind: "chrome" | "electron" | "extension";
|
|
22
|
+
/** How the host presents this target to a person. */
|
|
23
|
+
readonly presentation?: "stream" | "native";
|
|
24
|
+
/** Every page currently open, oldest first. */
|
|
25
|
+
pages(): Promise<BrowserPage[]>;
|
|
26
|
+
/** Read-only tab metadata, so drawing a tab strip need not attach to every page. */
|
|
27
|
+
pageInfos?(): Promise<Array<{
|
|
28
|
+
id: string;
|
|
29
|
+
url: string;
|
|
30
|
+
title?: string;
|
|
31
|
+
}>>;
|
|
32
|
+
/** Attach to one known tab without attaching to every open tab. */
|
|
33
|
+
pageById?(id: string): Promise<BrowserPage | undefined>;
|
|
34
|
+
/** Open a page and attach to it. */
|
|
35
|
+
newPage(url?: string): Promise<BrowserPage>;
|
|
36
|
+
/**
|
|
37
|
+
* Whether this conversation opened the tab, rather than being pointed at
|
|
38
|
+
* one the person already had. Only a browser the person owns — the
|
|
39
|
+
* extension — has tabs that are not the agent's; elsewhere it is absent.
|
|
40
|
+
*/
|
|
41
|
+
opened?(id: string): boolean;
|
|
42
|
+
/** Stop using a tab without closing it. Absent where every tab is the agent's. */
|
|
43
|
+
release?(page: BrowserPage): Promise<void>;
|
|
44
|
+
/** Make a page the one shown by providers with a native tab surface. */
|
|
45
|
+
activate?(page: BrowserPage): Promise<void> | void;
|
|
46
|
+
/** Which browser this is, for a person choosing where to import from. */
|
|
47
|
+
describe?(): Promise<{
|
|
48
|
+
name: string;
|
|
49
|
+
version?: string;
|
|
50
|
+
}>;
|
|
51
|
+
close(): Promise<void>;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* One tab, attached.
|
|
55
|
+
*
|
|
56
|
+
* `send` and `on` are already scoped to this page: a caller never passes a
|
|
57
|
+
* session id, because forgetting one is a command silently sent to the browser
|
|
58
|
+
* instead of the page, which fails in a way that reads like the page is broken.
|
|
59
|
+
*/
|
|
60
|
+
export interface BrowserPage {
|
|
61
|
+
readonly id: string;
|
|
62
|
+
send(method: string, params?: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
63
|
+
on(event: string, handler: (params: Record<string, unknown>) => void): () => void;
|
|
64
|
+
/**
|
|
65
|
+
* JPEG frames for a human to watch. Not for the model — a frame is worth
|
|
66
|
+
* about as many tokens as the whole accessibility tree and says less.
|
|
67
|
+
*/
|
|
68
|
+
frames(opts?: FrameOptions): AsyncIterable<Buffer>;
|
|
69
|
+
input(event: BrowserInputEvent): Promise<void>;
|
|
70
|
+
close(): Promise<void>;
|
|
71
|
+
}
|
|
72
|
+
export interface FrameOptions {
|
|
73
|
+
/** JPEG quality, 0-100. Default 85 — keeps small text readable in the pane. */
|
|
74
|
+
quality?: number;
|
|
75
|
+
maxWidth?: number;
|
|
76
|
+
maxHeight?: number;
|
|
77
|
+
}
|
|
78
|
+
export type BrowserInputEvent = {
|
|
79
|
+
type: "mouse";
|
|
80
|
+
action: "move" | "down" | "up" | "wheel";
|
|
81
|
+
x: number;
|
|
82
|
+
y: number;
|
|
83
|
+
button?: "left" | "right" | "middle";
|
|
84
|
+
clickCount?: number;
|
|
85
|
+
deltaX?: number;
|
|
86
|
+
deltaY?: number;
|
|
87
|
+
modifiers?: number;
|
|
88
|
+
} | {
|
|
89
|
+
type: "key";
|
|
90
|
+
action: "down" | "up" | "char";
|
|
91
|
+
key?: string;
|
|
92
|
+
code?: string;
|
|
93
|
+
text?: string;
|
|
94
|
+
modifiers?: number;
|
|
95
|
+
} | {
|
|
96
|
+
type: "text";
|
|
97
|
+
text: string;
|
|
98
|
+
};
|
|
99
|
+
/** Built lazily, so nothing launches a browser until a tool actually asks. */
|
|
100
|
+
export interface BrowserTargetContext {
|
|
101
|
+
/** Conversation that owns the browser. Providers use this to isolate UI/profile state. */
|
|
102
|
+
sessionId?: string;
|
|
103
|
+
/**
|
|
104
|
+
* What that conversation is called, asked each time it is needed because a
|
|
105
|
+
* conversation is named by its first message, after the browser may exist.
|
|
106
|
+
* The extension titles the conversation's tab group with it.
|
|
107
|
+
*/
|
|
108
|
+
label?: () => string | undefined;
|
|
109
|
+
/** The project the conversation belongs to, so a tab group can lead back to it. */
|
|
110
|
+
cwd?: string;
|
|
111
|
+
}
|
|
112
|
+
export type BrowserTargetFactory = (context?: BrowserTargetContext) => Promise<BrowserTarget>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the browser tools need from whatever is actually running the pages.
|
|
3
|
+
*
|
|
4
|
+
* Three things will implement this and they disagree about almost everything
|
|
5
|
+
* except one fact: all of them speak the Chrome DevTools Protocol. A local
|
|
6
|
+
* Chrome speaks it over a pipe, an Electron window speaks it through
|
|
7
|
+
* `webContents.debugger`, and a Chrome extension speaks it through
|
|
8
|
+
* `chrome.debugger`. So CDP is the interface, and the differences are pushed
|
|
9
|
+
* into how a connection is obtained and how pixels and input move.
|
|
10
|
+
*
|
|
11
|
+
* Pixels and input are part of this interface rather than layered on top of
|
|
12
|
+
* `send`, and that is the load-bearing decision here. CDP can do both
|
|
13
|
+
* (`Page.startScreencast`, `Input.dispatchMouseEvent`), but an offscreen
|
|
14
|
+
* Electron window cannot: a hidden window may never composite, so its frames
|
|
15
|
+
* have to come from Electron's own `paint` event and its input from
|
|
16
|
+
* `sendInputEvent`. An interface that only abstracted CDP would have no room
|
|
17
|
+
* for that, and the desktop provider would not fit.
|
|
18
|
+
*/
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=target.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"target.js","sourceRoot":"","sources":["../../src/browser/target.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG"}
|