@trusty-squire/mcp 1.1.13 → 1.1.14-rc.10
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 +94 -110
- package/{LICENSE → assets/licenses/browser-use-MIT.txt} +1 -1
- package/dist/api-client.d.ts +9 -0
- package/dist/api-client.d.ts.map +1 -1
- package/dist/api-client.js +11 -0
- package/dist/api-client.js.map +1 -1
- package/dist/bin.js +7 -1
- package/dist/bin.js.map +1 -1
- package/dist/bot/broker/admission-context.d.ts +11 -0
- package/dist/bot/broker/admission-context.d.ts.map +1 -0
- package/dist/bot/broker/admission-context.js +17 -0
- package/dist/bot/broker/admission-context.js.map +1 -0
- package/dist/bot/broker/authority.d.ts +76 -0
- package/dist/bot/broker/authority.d.ts.map +1 -0
- package/dist/bot/broker/authority.js +528 -0
- package/dist/bot/broker/authority.js.map +1 -0
- package/dist/bot/broker/custody.d.ts +20 -0
- package/dist/bot/broker/custody.d.ts.map +1 -0
- package/dist/bot/broker/custody.js +10 -0
- package/dist/bot/broker/custody.js.map +1 -0
- package/dist/bot/broker/daemon.d.ts +24 -0
- package/dist/bot/broker/daemon.d.ts.map +1 -0
- package/dist/bot/broker/daemon.js +371 -0
- package/dist/bot/broker/daemon.js.map +1 -0
- package/dist/bot/broker/discovery.d.ts +9 -0
- package/dist/bot/broker/discovery.d.ts.map +1 -0
- package/dist/bot/broker/discovery.js +167 -0
- package/dist/bot/broker/discovery.js.map +1 -0
- package/dist/bot/broker/dispatch-journal.d.ts +71 -0
- package/dist/bot/broker/dispatch-journal.d.ts.map +1 -0
- package/dist/bot/broker/dispatch-journal.js +319 -0
- package/dist/bot/broker/dispatch-journal.js.map +1 -0
- package/dist/bot/broker/forwarder.d.ts +35 -0
- package/dist/bot/broker/forwarder.d.ts.map +1 -0
- package/dist/bot/broker/forwarder.js +150 -0
- package/dist/bot/broker/forwarder.js.map +1 -0
- package/dist/bot/broker/identity-lane.d.ts +3 -0
- package/dist/bot/broker/identity-lane.d.ts.map +1 -0
- package/dist/bot/broker/identity-lane.js +15 -0
- package/dist/bot/broker/identity-lane.js.map +1 -0
- package/dist/bot/broker/lineage.d.ts +3 -0
- package/dist/bot/broker/lineage.d.ts.map +1 -0
- package/dist/bot/broker/lineage.js +16 -0
- package/dist/bot/broker/lineage.js.map +1 -0
- package/dist/bot/broker/maintenance.d.ts +4 -0
- package/dist/bot/broker/maintenance.d.ts.map +1 -0
- package/dist/bot/broker/maintenance.js +49 -0
- package/dist/bot/broker/maintenance.js.map +1 -0
- package/dist/bot/broker/operator.d.ts +48 -0
- package/dist/bot/broker/operator.d.ts.map +1 -0
- package/dist/bot/broker/operator.js +523 -0
- package/dist/bot/broker/operator.js.map +1 -0
- package/dist/bot/broker/qualification.d.ts +5 -0
- package/dist/bot/broker/qualification.d.ts.map +1 -0
- package/dist/bot/broker/qualification.js +67 -0
- package/dist/bot/broker/qualification.js.map +1 -0
- package/dist/bot/broker/runtime.d.ts +36 -0
- package/dist/bot/broker/runtime.d.ts.map +1 -0
- package/dist/bot/broker/runtime.js +202 -0
- package/dist/bot/broker/runtime.js.map +1 -0
- package/dist/bot/broker/scheduler.d.ts +20 -0
- package/dist/bot/broker/scheduler.d.ts.map +1 -0
- package/dist/bot/broker/scheduler.js +94 -0
- package/dist/bot/broker/scheduler.js.map +1 -0
- package/dist/bot/broker/transport.d.ts +27 -0
- package/dist/bot/broker/transport.d.ts.map +1 -0
- package/dist/bot/broker/transport.js +265 -0
- package/dist/bot/broker/transport.js.map +1 -0
- package/dist/bot/browser-process-owner.d.ts +75 -0
- package/dist/bot/browser-process-owner.d.ts.map +1 -0
- package/dist/bot/browser-process-owner.js +939 -0
- package/dist/bot/browser-process-owner.js.map +1 -0
- package/dist/bot/browser-process-runtime.d.ts +168 -0
- package/dist/bot/browser-process-runtime.d.ts.map +1 -0
- package/dist/bot/browser-process-runtime.js +940 -0
- package/dist/bot/browser-process-runtime.js.map +1 -0
- package/dist/bot/browser-use-capture.d.ts +15 -0
- package/dist/bot/browser-use-capture.d.ts.map +1 -0
- package/dist/bot/browser-use-capture.js +975 -0
- package/dist/bot/browser-use-capture.js.map +1 -0
- package/dist/bot/browser-use-paint-order.d.ts +12 -0
- package/dist/bot/browser-use-paint-order.d.ts.map +1 -0
- package/dist/bot/browser-use-paint-order.js +73 -0
- package/dist/bot/browser-use-paint-order.js.map +1 -0
- package/dist/bot/browser-use-serializer.d.ts +67 -0
- package/dist/bot/browser-use-serializer.d.ts.map +1 -0
- package/dist/bot/browser-use-serializer.js +1027 -0
- package/dist/bot/browser-use-serializer.js.map +1 -0
- package/dist/bot/browser.d.ts +158 -264
- package/dist/bot/browser.d.ts.map +1 -1
- package/dist/bot/browser.js +1681 -2830
- package/dist/bot/browser.js.map +1 -1
- package/dist/bot/compact-observation-v2.d.ts +54 -45
- package/dist/bot/compact-observation-v2.d.ts.map +1 -1
- package/dist/bot/compact-observation-v2.js +454 -165
- package/dist/bot/compact-observation-v2.js.map +1 -1
- package/dist/bot/credential-shape.d.ts.map +1 -1
- package/dist/bot/credential-shape.js +7 -0
- package/dist/bot/credential-shape.js.map +1 -1
- package/dist/bot/identity-runtime.d.ts +56 -0
- package/dist/bot/identity-runtime.d.ts.map +1 -0
- package/dist/bot/identity-runtime.js +141 -0
- package/dist/bot/identity-runtime.js.map +1 -0
- package/dist/bot/mutation-dispatch-evidence.d.ts +13 -0
- package/dist/bot/mutation-dispatch-evidence.d.ts.map +1 -0
- package/dist/bot/mutation-dispatch-evidence.js +19 -0
- package/dist/bot/mutation-dispatch-evidence.js.map +1 -0
- package/dist/bot/owned-pages.d.ts +16 -0
- package/dist/bot/owned-pages.d.ts.map +1 -0
- package/dist/bot/owned-pages.js +58 -0
- package/dist/bot/owned-pages.js.map +1 -0
- package/dist/bot/page-driver.d.ts +37 -0
- package/dist/bot/page-driver.d.ts.map +1 -0
- package/dist/bot/page-driver.js +303 -0
- package/dist/bot/page-driver.js.map +1 -0
- package/dist/bot/pay-operator.d.ts +1 -0
- package/dist/bot/pay-operator.d.ts.map +1 -1
- package/dist/bot/pay-operator.js +10 -0
- package/dist/bot/pay-operator.js.map +1 -1
- package/dist/bot/profile.d.ts +9 -0
- package/dist/bot/profile.d.ts.map +1 -1
- package/dist/bot/profile.js +16 -11
- package/dist/bot/profile.js.map +1 -1
- package/dist/bot/provision-session.d.ts +32 -7
- package/dist/bot/provision-session.d.ts.map +1 -1
- package/dist/bot/provision-session.js +1008 -471
- package/dist/bot/provision-session.js.map +1 -1
- package/dist/bot/session/lifecycle.d.ts +5 -2
- package/dist/bot/session/lifecycle.d.ts.map +1 -1
- package/dist/bot/session/lifecycle.js +303 -34
- package/dist/bot/session/lifecycle.js.map +1 -1
- package/dist/bot/session/multisession-flag.d.ts +2 -0
- package/dist/bot/session/multisession-flag.d.ts.map +1 -0
- package/dist/bot/session/multisession-flag.js +23 -0
- package/dist/bot/session/multisession-flag.js.map +1 -0
- package/dist/install/cli.d.ts.map +1 -1
- package/dist/install/cli.js +2 -1
- package/dist/install/cli.js.map +1 -1
- package/dist/server-instance-registry.d.ts +18 -6
- package/dist/server-instance-registry.d.ts.map +1 -1
- package/dist/server-instance-registry.js +49 -28
- package/dist/server-instance-registry.js.map +1 -1
- package/dist/server.d.ts +6 -3
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +122 -29
- package/dist/server.js.map +1 -1
- package/dist/tools/audit-log.d.ts.map +1 -1
- package/dist/tools/audit-log.js +1 -5
- package/dist/tools/audit-log.js.map +1 -1
- package/dist/tools/audit-rollup.d.ts +2 -5
- package/dist/tools/audit-rollup.d.ts.map +1 -1
- package/dist/tools/audit-rollup.js +0 -0
- package/dist/tools/audit-rollup.js.map +1 -1
- package/dist/tools/credential-mutations.d.ts +16 -16
- package/dist/tools/index.js +2 -2
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/operate-pay.d.ts +18 -18
- package/dist/tools/provision-drive.d.ts +263 -555
- package/dist/tools/provision-drive.d.ts.map +1 -1
- package/dist/tools/provision-drive.js +404 -1139
- package/dist/tools/provision-drive.js.map +1 -1
- package/dist/tools/use-credential.d.ts +6 -6
- package/package.json +1 -1
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
import { createServer, createConnection } from "node:net";
|
|
2
|
+
import { chmod, lstat, unlink } from "node:fs/promises";
|
|
3
|
+
import { randomUUID } from "node:crypto";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
import { BrokerRefusal } from "./scheduler.js";
|
|
6
|
+
import { FORWARDER_HANDOFF_TIMEOUT_MS, } from "./authority.js";
|
|
7
|
+
const MAX_FRAME = 8 * 1024 * 1024;
|
|
8
|
+
const requestSchema = z
|
|
9
|
+
.object({
|
|
10
|
+
version: z.literal(1),
|
|
11
|
+
id: z.string().min(1).max(128),
|
|
12
|
+
method: z.string().min(1).max(64),
|
|
13
|
+
params: z.record(z.unknown()),
|
|
14
|
+
})
|
|
15
|
+
.strict();
|
|
16
|
+
/** A socket is the client-liveness lease. There is deliberately no idle TTL:
|
|
17
|
+
* a thinking agent with a live transport must not lose its browser session. */
|
|
18
|
+
function frames(socket, receive) {
|
|
19
|
+
let buffered = Buffer.alloc(0);
|
|
20
|
+
socket.on("data", (chunk) => {
|
|
21
|
+
buffered = Buffer.concat([buffered, chunk]);
|
|
22
|
+
for (;;) {
|
|
23
|
+
const end = buffered.indexOf(10);
|
|
24
|
+
if (end < 0)
|
|
25
|
+
break;
|
|
26
|
+
if (end > MAX_FRAME) {
|
|
27
|
+
socket.destroy();
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const frame = buffered.subarray(0, end);
|
|
31
|
+
buffered = buffered.subarray(end + 1);
|
|
32
|
+
try {
|
|
33
|
+
receive(JSON.parse(frame.toString("utf8")));
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
socket.destroy();
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (buffered.length > MAX_FRAME)
|
|
41
|
+
socket.destroy();
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
function send(socket, value) {
|
|
45
|
+
const frame = JSON.stringify(value) + "\n";
|
|
46
|
+
if (Buffer.byteLength(frame) > MAX_FRAME || socket.writableLength > MAX_FRAME * 2) {
|
|
47
|
+
socket.destroy(new Error("Broker transport capacity exceeded"));
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
socket.write(frame);
|
|
51
|
+
}
|
|
52
|
+
/** Endpoint election is bind-exclusive. Never unlink an existing socket to win
|
|
53
|
+
* election: its incumbent may still own Chrome, even if it is unresponsive. */
|
|
54
|
+
export async function listenBroker(path, port) {
|
|
55
|
+
const sockets = new Set();
|
|
56
|
+
const cleanup = new Set();
|
|
57
|
+
const server = createServer((socket) => {
|
|
58
|
+
sockets.add(socket);
|
|
59
|
+
socket.on("error", () => undefined);
|
|
60
|
+
let principal;
|
|
61
|
+
let authenticating = false;
|
|
62
|
+
let closed = false;
|
|
63
|
+
const replies = new Map();
|
|
64
|
+
let explicitClose = false;
|
|
65
|
+
const disconnect = (owner) => {
|
|
66
|
+
const task = port.disconnect(owner, explicitClose).catch(() => undefined);
|
|
67
|
+
cleanup.add(task);
|
|
68
|
+
void task.finally(() => cleanup.delete(task));
|
|
69
|
+
};
|
|
70
|
+
socket.once("close", () => {
|
|
71
|
+
closed = true;
|
|
72
|
+
sockets.delete(socket);
|
|
73
|
+
if (principal !== undefined)
|
|
74
|
+
disconnect(principal);
|
|
75
|
+
});
|
|
76
|
+
const dispatch = async (request) => {
|
|
77
|
+
if (principal === undefined) {
|
|
78
|
+
if (request.method !== "hello" ||
|
|
79
|
+
authenticating ||
|
|
80
|
+
typeof request.params.token !== "string") {
|
|
81
|
+
throw new BrokerRefusal("unauthorized", "Authenticate before issuing commands");
|
|
82
|
+
}
|
|
83
|
+
authenticating = true;
|
|
84
|
+
const agentId = typeof request.params.agentId === "string" ? request.params.agentId : "local-agent";
|
|
85
|
+
const lineageCredential = typeof request.params.lineageCredential === "string"
|
|
86
|
+
? request.params.lineageCredential
|
|
87
|
+
: undefined;
|
|
88
|
+
const supervisor = request.params.supervisor === true;
|
|
89
|
+
if (agentId.length === 0 || agentId.length > 128)
|
|
90
|
+
throw new BrokerRefusal("unauthorized", "Invalid agent identity");
|
|
91
|
+
const identity = await port.authenticate(request.params.token, agentId, lineageCredential, supervisor);
|
|
92
|
+
if (identity === null)
|
|
93
|
+
throw new BrokerRefusal("unauthorized", "Invalid broker credential");
|
|
94
|
+
const candidate = { ...identity, clientId: randomUUID() };
|
|
95
|
+
await port.connected?.(candidate);
|
|
96
|
+
if (closed) {
|
|
97
|
+
await port.disconnect(candidate);
|
|
98
|
+
throw new BrokerRefusal("cancelled", "Client disconnected");
|
|
99
|
+
}
|
|
100
|
+
principal = candidate;
|
|
101
|
+
return { version: 1, clientId: principal.clientId };
|
|
102
|
+
}
|
|
103
|
+
if (request.method === "hello")
|
|
104
|
+
throw new BrokerRefusal("unauthorized", "Connection already bound");
|
|
105
|
+
if (request.method === "client_close") {
|
|
106
|
+
explicitClose = true;
|
|
107
|
+
return {};
|
|
108
|
+
}
|
|
109
|
+
return await port.call(principal, request.method, request.params, request.id);
|
|
110
|
+
};
|
|
111
|
+
frames(socket, (value) => {
|
|
112
|
+
const parsed = requestSchema.safeParse(value);
|
|
113
|
+
if (!parsed.success) {
|
|
114
|
+
socket.destroy();
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
const request = parsed.data;
|
|
118
|
+
const input = JSON.stringify([request.method, request.params]);
|
|
119
|
+
const previous = replies.get(request.id);
|
|
120
|
+
let result;
|
|
121
|
+
if (previous !== undefined) {
|
|
122
|
+
result =
|
|
123
|
+
previous.input === input
|
|
124
|
+
? previous.result
|
|
125
|
+
: Promise.reject(new BrokerRefusal("request_id_reused", "Request ID has different input"));
|
|
126
|
+
}
|
|
127
|
+
else if (replies.size >= 8192) {
|
|
128
|
+
result = Promise.reject(new BrokerRefusal("capacity", "Connection command budget exhausted"));
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
result = dispatch(request);
|
|
132
|
+
replies.set(request.id, { input, result });
|
|
133
|
+
}
|
|
134
|
+
void result.then((data) => {
|
|
135
|
+
if (!closed)
|
|
136
|
+
send(socket, { id: request.id, result: data });
|
|
137
|
+
}, (error) => {
|
|
138
|
+
if (!closed)
|
|
139
|
+
send(socket, {
|
|
140
|
+
id: request.id,
|
|
141
|
+
error: {
|
|
142
|
+
code: error instanceof BrokerRefusal ? error.code : "broker_execution_failed",
|
|
143
|
+
message: error instanceof Error ? error.message : String(error),
|
|
144
|
+
},
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
await new Promise((resolve, reject) => {
|
|
150
|
+
server.once("error", reject);
|
|
151
|
+
server.listen(path, () => {
|
|
152
|
+
server.off("error", reject);
|
|
153
|
+
resolve();
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
await chmod(path, 0o600);
|
|
157
|
+
const identity = await lstat(path);
|
|
158
|
+
return {
|
|
159
|
+
close: async () => {
|
|
160
|
+
const stopped = new Promise((resolve, reject) => server.close((error) => (error ? reject(error) : resolve())));
|
|
161
|
+
for (const socket of sockets)
|
|
162
|
+
socket.destroy();
|
|
163
|
+
await stopped;
|
|
164
|
+
await Promise.all([...cleanup]);
|
|
165
|
+
const current = await lstat(path).catch(() => null);
|
|
166
|
+
if (current?.ino === identity.ino && current.dev === identity.dev)
|
|
167
|
+
await unlink(path);
|
|
168
|
+
},
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
export class BrokerClient {
|
|
172
|
+
socket;
|
|
173
|
+
pending = new Map();
|
|
174
|
+
ended = false;
|
|
175
|
+
constructor(socket) {
|
|
176
|
+
this.socket = socket;
|
|
177
|
+
socket.on("error", () => undefined);
|
|
178
|
+
socket.once("close", () => {
|
|
179
|
+
this.ended = true;
|
|
180
|
+
for (const request of this.pending.values())
|
|
181
|
+
request.reject(new BrokerRefusal("broker_lost", "Broker connection lost; dispatched outcome may be unknown. Do not replay mutations."));
|
|
182
|
+
this.pending.clear();
|
|
183
|
+
});
|
|
184
|
+
frames(socket, (value) => {
|
|
185
|
+
const reply = value;
|
|
186
|
+
if (typeof reply !== "object" || reply === null || typeof reply.id !== "string") {
|
|
187
|
+
socket.destroy();
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
const pending = this.pending.get(reply.id);
|
|
191
|
+
if (pending === undefined)
|
|
192
|
+
return;
|
|
193
|
+
this.pending.delete(reply.id);
|
|
194
|
+
if (reply.error !== undefined)
|
|
195
|
+
pending.reject(new BrokerRefusal(reply.error.code, reply.error.message));
|
|
196
|
+
else {
|
|
197
|
+
pending.resolve(reply.result);
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
static async connect(path, token, lineageCredential, supervisor = false) {
|
|
202
|
+
const socket = createConnection(path);
|
|
203
|
+
const client = new BrokerClient(socket);
|
|
204
|
+
const deadline = setTimeout(() => socket.destroy(new Error("Broker authentication timed out")), lineageCredential === undefined ? 5_000 : FORWARDER_HANDOFF_TIMEOUT_MS + 5_000);
|
|
205
|
+
try {
|
|
206
|
+
await new Promise((resolve, reject) => {
|
|
207
|
+
socket.once("connect", resolve);
|
|
208
|
+
socket.once("error", reject);
|
|
209
|
+
});
|
|
210
|
+
await client.call("hello", {
|
|
211
|
+
token,
|
|
212
|
+
agentId: process.env.TRUSTY_SQUIRE_AGENT_IDENTITY ?? "local-agent",
|
|
213
|
+
...(lineageCredential === undefined ? {} : { lineageCredential }),
|
|
214
|
+
...(supervisor ? { supervisor: true } : {}),
|
|
215
|
+
});
|
|
216
|
+
return client;
|
|
217
|
+
}
|
|
218
|
+
catch (error) {
|
|
219
|
+
socket.destroy();
|
|
220
|
+
throw error;
|
|
221
|
+
}
|
|
222
|
+
finally {
|
|
223
|
+
clearTimeout(deadline);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
static async connectSupervisor(path, token) {
|
|
227
|
+
return await BrokerClient.connect(path, token, undefined, true);
|
|
228
|
+
}
|
|
229
|
+
call(method, params, id = randomUUID()) {
|
|
230
|
+
if (this.ended || this.socket.destroyed)
|
|
231
|
+
return Promise.reject(new BrokerRefusal("broker_lost", "Broker connection is closed"));
|
|
232
|
+
if (this.pending.has(id))
|
|
233
|
+
return Promise.reject(new BrokerRefusal("duplicate_pending", "Request is already pending"));
|
|
234
|
+
if (this.pending.size >= 64)
|
|
235
|
+
return Promise.reject(new BrokerRefusal("capacity", "Too many pending broker calls"));
|
|
236
|
+
return new Promise((resolve, reject) => {
|
|
237
|
+
this.pending.set(id, { method, resolve, reject });
|
|
238
|
+
send(this.socket, { version: 1, id, method, params });
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
async acknowledge(requestId) {
|
|
242
|
+
await this.call("acknowledge", { requestId });
|
|
243
|
+
}
|
|
244
|
+
async confirmStartDelivery(capability) {
|
|
245
|
+
await this.call("confirm_start", { capability });
|
|
246
|
+
}
|
|
247
|
+
isConnected() {
|
|
248
|
+
return !this.ended && !this.socket.destroyed;
|
|
249
|
+
}
|
|
250
|
+
async close() {
|
|
251
|
+
if (this.ended)
|
|
252
|
+
return;
|
|
253
|
+
await new Promise((resolve) => {
|
|
254
|
+
this.socket.once("close", resolve);
|
|
255
|
+
this.socket.destroy();
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
async release() {
|
|
259
|
+
if (this.ended)
|
|
260
|
+
return;
|
|
261
|
+
await this.call("client_close", {});
|
|
262
|
+
await this.close();
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
//# sourceMappingURL=transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/bot/broker/transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { BrowserContext } from "playwright";
|
|
2
|
+
import { type ProfileCloseState } from "./profile.js";
|
|
3
|
+
import { type StealthProfile } from "./browser-process-runtime.js";
|
|
4
|
+
import type { PageDriver } from "./page-driver.js";
|
|
5
|
+
/** Exclusive Chrome custody. Page setup is awaited at the original startup boundary. */
|
|
6
|
+
export declare class BrowserProcessOwner {
|
|
7
|
+
private readonly pages;
|
|
8
|
+
private readonly initializePages;
|
|
9
|
+
context: BrowserContext | null;
|
|
10
|
+
private childChrome;
|
|
11
|
+
private childChromeIdentity;
|
|
12
|
+
private childChromeProcessGroup;
|
|
13
|
+
private ownedDisplayRig;
|
|
14
|
+
private ownedChromeProcessTreeProof;
|
|
15
|
+
private operatorProcessMarker;
|
|
16
|
+
private ownerLaunchTracked;
|
|
17
|
+
private cdpBrowser;
|
|
18
|
+
private launchedContext;
|
|
19
|
+
private launchedProfileHolderIdentity;
|
|
20
|
+
private startPromise;
|
|
21
|
+
private closePromise;
|
|
22
|
+
private startCancellationRequested;
|
|
23
|
+
private startLaunchCommitted;
|
|
24
|
+
private startSettled;
|
|
25
|
+
private persistentFallbackLaunchInFlight;
|
|
26
|
+
private persistentFallbackOwnershipMonitor;
|
|
27
|
+
private persistentFallbackCancellationState;
|
|
28
|
+
private resolveStartCancellation;
|
|
29
|
+
private readonly startCancellation;
|
|
30
|
+
private cancelledStartReaper;
|
|
31
|
+
private launchedChannel;
|
|
32
|
+
private proxyServer;
|
|
33
|
+
private readonly profileDir;
|
|
34
|
+
private readonly proxyOverride;
|
|
35
|
+
launchedMode: "headed" | "headless" | "remote" | "unknown";
|
|
36
|
+
constructor(opts: {
|
|
37
|
+
profileDir?: string;
|
|
38
|
+
proxyUrl?: string;
|
|
39
|
+
}, pages: PageDriver, initializePages: (context: BrowserContext, hardened: boolean, remoteMode: boolean) => Promise<void>);
|
|
40
|
+
operatorBrowserMarker(): string;
|
|
41
|
+
private ownedHeadedBrowserEnvironment;
|
|
42
|
+
private teardownOwnedDisplay;
|
|
43
|
+
private adoptOwnedChromeProcessTree;
|
|
44
|
+
private signalCurrentSelfManagedChrome;
|
|
45
|
+
isConnected(): boolean;
|
|
46
|
+
get channel(): string | null;
|
|
47
|
+
get proxied(): string | null;
|
|
48
|
+
get stealthProfile(): StealthProfile;
|
|
49
|
+
get launchMode(): "headed" | "headless" | "remote" | "unknown";
|
|
50
|
+
private launchSelfManagedContext;
|
|
51
|
+
private cancelSpawnedSelfManagedChrome;
|
|
52
|
+
start(): Promise<void>;
|
|
53
|
+
private startOnce;
|
|
54
|
+
private throwIfStartCancelled;
|
|
55
|
+
private commitProfileLaunch;
|
|
56
|
+
private startBrowser;
|
|
57
|
+
private probeEgressGeo;
|
|
58
|
+
private resolveProxy;
|
|
59
|
+
close(options?: {
|
|
60
|
+
cancelStart?: boolean;
|
|
61
|
+
}): Promise<ProfileCloseState>;
|
|
62
|
+
waitForCancelledStartQuiescence(): Promise<void>;
|
|
63
|
+
forceCloseOwnedProcessTree(): Promise<ProfileCloseState>;
|
|
64
|
+
private closeCancelledStart;
|
|
65
|
+
private reapCancelledStartProcess;
|
|
66
|
+
private monitorCancelledStartProcess;
|
|
67
|
+
private currentOwnedProfileIdentity;
|
|
68
|
+
private waitForPersistentFallbackIdentity;
|
|
69
|
+
private requirePersistentFallbackOwnership;
|
|
70
|
+
private startPersistentFallbackOwnershipMonitor;
|
|
71
|
+
private waitForOwnedProfileExit;
|
|
72
|
+
private closeAfterStart;
|
|
73
|
+
private closeBrowser;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=browser-process-owner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-process-owner.d.ts","sourceRoot":"","sources":["../../src/bot/browser-process-owner.ts"],"names":[],"mappings":"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"}
|