@opencode/browse 0.0.6-dev.27 → 0.0.6
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/{cli-n0qhph13.mjs → cli-jp1jev7t.mjs} +10 -67
- package/dist/cli.mjs +9 -9
- package/dist/{helpers-zeewknn2.mjs → helpers-ynamkf6t.mjs} +1 -1
- package/dist/{main-3g2t8jtq.mjs → main-0g9jqyts.mjs} +2 -2
- package/dist/{main-a6mpfd6z.mjs → main-3cza6vx1.mjs} +2 -2
- package/dist/{main-xzc7qp1c.mjs → main-605j7tjk.mjs} +4 -34
- package/dist/{main-cxrsjs2z.mjs → main-hanwxg2c.mjs} +33 -468
- package/dist/{main-a4yj9bpn.mjs → main-njp635rz.mjs} +3 -3
- package/dist/{main-x96gxahz.mjs → main-q5j1am67.mjs} +2 -2
- package/dist/main-ry14nc9q.mjs +4 -0
- package/dist/{main-bq8az9yr.mjs → main-yv64m9we.mjs} +1 -1
- package/dist/{mcp-za7ymfdd.mjs → mcp-4w28g9h2.mjs} +11 -78
- package/dist/{relay-xqg264d4.mjs → relay-21t4e4tv.mjs} +35 -1104
- package/dist/{runtime-update-gteb0gp8.mjs → runtime-update-zjx0kaj7.mjs} +4 -4
- package/dist/{setup-zka6z53q.mjs → setup-0z9803a3.mjs} +5 -5
- package/dist/{skill-text-kyjcembk.mjs → skill-text-rc6te209.mjs} +0 -75
- package/dist/{supervisor-w6hs0gbw.mjs → supervisor-9qwn7rb1.mjs} +3 -3
- package/dist/{update-pj25xbh4.mjs → update-sxawv22k.mjs} +3 -3
- package/dist/{version-1hb8s8jj.mjs → version-8gwa4g0s.mjs} +1 -1
- package/package.json +1 -1
- package/skills/browse/SKILL.md +0 -75
- package/dist/main-vp3devjb.mjs +0 -4
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
opencodeBrowserVersion2,
|
|
4
4
|
opencodeBrowserBuildId2
|
|
5
|
-
} from "./main-
|
|
5
|
+
} from "./main-ry14nc9q.mjs";
|
|
6
6
|
import {
|
|
7
7
|
dataRoot,
|
|
8
8
|
fromCheckout,
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
devExtension,
|
|
13
13
|
installCommand,
|
|
14
14
|
autoUpdateStatus
|
|
15
|
-
} from "./main-
|
|
15
|
+
} from "./main-3cza6vx1.mjs";
|
|
16
16
|
import {
|
|
17
17
|
extensionProtocolVersion,
|
|
18
18
|
extensionProtocolAdvice
|
|
@@ -35,31 +35,26 @@ import {
|
|
|
35
35
|
ensureExtensionConnected,
|
|
36
36
|
stoppedRelayStatus,
|
|
37
37
|
statusCollections
|
|
38
|
-
} from "./main-
|
|
39
|
-
import"./main-
|
|
38
|
+
} from "./main-605j7tjk.mjs";
|
|
39
|
+
import"./main-yv64m9we.mjs";
|
|
40
40
|
import {
|
|
41
41
|
updateJson2,
|
|
42
42
|
formatUpdateNotice2,
|
|
43
43
|
updateNotice2
|
|
44
|
-
} from "./main-
|
|
44
|
+
} from "./main-q5j1am67.mjs";
|
|
45
45
|
import {
|
|
46
46
|
settingKeys,
|
|
47
47
|
formatSettings,
|
|
48
48
|
ensureSessionExists,
|
|
49
|
-
readClient,
|
|
50
|
-
socketPath,
|
|
51
|
-
connect,
|
|
52
|
-
pair,
|
|
53
|
-
unpair,
|
|
54
49
|
addSecret,
|
|
55
50
|
listSecrets,
|
|
56
51
|
removeSecret
|
|
57
|
-
} from "./main-
|
|
52
|
+
} from "./main-hanwxg2c.mjs";
|
|
58
53
|
import {
|
|
59
54
|
defaultJournalBaseDir,
|
|
60
55
|
readJournalEntries,
|
|
61
56
|
formatJournalEntry
|
|
62
|
-
} from "./main-
|
|
57
|
+
} from "./main-njp635rz.mjs";
|
|
63
58
|
|
|
64
59
|
// src/cli.ts
|
|
65
60
|
import { NodeRuntime, NodeServices } from "@effect/platform-node";
|
|
@@ -950,7 +945,7 @@ var status = Command.make("status", {
|
|
|
950
945
|
}
|
|
951
946
|
})).pipe(Command.withDescription("Show relay, extension, and target status"));
|
|
952
947
|
var mcp = Command.make("mcp", {}, Effect4.fn("Cli.mcp")(function* () {
|
|
953
|
-
const { runMcpServer } = yield* Effect4.promise(() => import("./mcp-
|
|
948
|
+
const { runMcpServer } = yield* Effect4.promise(() => import("./mcp-4w28g9h2.mjs"));
|
|
954
949
|
yield* runMcpServer;
|
|
955
950
|
})).pipe(Command.withDescription("Run the browse MCP server over stdio"));
|
|
956
951
|
registerCliCommand(400, () => tabs);
|
|
@@ -971,7 +966,7 @@ registerCliCommand(810, ({ packageRoot }) => Command.make("doctor", {
|
|
|
971
966
|
}
|
|
972
967
|
})).pipe(Command.withDescription("Diagnose the local browse install and runtime")));
|
|
973
968
|
registerCliCommand(820, () => Command.make("skill", {}, Effect4.fn("Cli.skill")(function* () {
|
|
974
|
-
const { skillText } = yield* Effect4.promise(() => import("./skill-text-
|
|
969
|
+
const { skillText } = yield* Effect4.promise(() => import("./skill-text-rc6te209.mjs"));
|
|
975
970
|
yield* Console2.log(skillText.trimEnd());
|
|
976
971
|
})).pipe(Command.withDescription("Print the browse agent skill text")));
|
|
977
972
|
registerCliCommand(900, () => mcp);
|
|
@@ -1406,7 +1401,7 @@ registerCliCommand(710, () => flightRecorder);
|
|
|
1406
1401
|
import { Console as Console6, Effect as Effect8 } from "effect";
|
|
1407
1402
|
import { Command as Command5, Flag as Flag6 } from "effect/cli";
|
|
1408
1403
|
var serve = Command5.make("serve", {}, Effect8.fn("Cli.serve")(function* () {
|
|
1409
|
-
const [{ startRelay }, { parseAdditionalExtensionOrigins }] = yield* Effect8.promise(() => Promise.all([import("./relay-
|
|
1404
|
+
const [{ startRelay }, { parseAdditionalExtensionOrigins }] = yield* Effect8.promise(() => Promise.all([import("./relay-21t4e4tv.mjs"), import("./helpers-ynamkf6t.mjs")]));
|
|
1410
1405
|
const port = yield* portConfig;
|
|
1411
1406
|
const additionalExtensionOrigins = parseAdditionalExtensionOrigins(yield* extensionOriginsConfig);
|
|
1412
1407
|
yield* Effect8.scoped(Effect8.gen(function* () {
|
|
@@ -1579,59 +1574,7 @@ var secretsRemove = Command6.make("remove", { name: Argument4.String("name") },
|
|
|
1579
1574
|
yield* Console7.log(removed ? `Removed ${name}` : `No secret named ${name}`);
|
|
1580
1575
|
})).pipe(Command6.withDescription("Delete a site secret"));
|
|
1581
1576
|
var secrets = Command6.make("secrets").pipe(Command6.withDescription("Site secrets agents can type without seeing them, and captured credential profiles"), Command6.withSubcommands([secretsAdd, secretsList, secretsRemove, secretsStatus, secretsRefresh, secretsRun]));
|
|
1582
|
-
var deadboltConnect = Command6.make("connect", { json: jsonFlag }, Effect9.fn("Cli.deadboltConnect")(function* ({ json }) {
|
|
1583
|
-
const paired = yield* Effect9.tryPromise({
|
|
1584
|
-
try: () => pair(),
|
|
1585
|
-
catch: (cause) => cause instanceof Error ? cause : new Error("Could not connect to Deadbolt")
|
|
1586
|
-
});
|
|
1587
|
-
if (json) {
|
|
1588
|
-
yield* emitJson({ connected: true, id: paired.id });
|
|
1589
|
-
return;
|
|
1590
|
-
}
|
|
1591
|
-
yield* Console7.log(`Connected browse to Deadbolt as client ${paired.id}.`);
|
|
1592
|
-
yield* Console7.log("Agents can use only the logins you allow, in Deadbolt: deadbolt agents allow <site> (narrow with --login, --fields, --expires), or deadbolt agents allow --all for every login");
|
|
1593
|
-
})).pipe(Command6.withDescription("Pair browse with Deadbolt (runs `deadbolt agents add-client browse`, which asks you to confirm) and store its client token (0600)"));
|
|
1594
|
-
var deadboltDisconnect = Command6.make("disconnect", {}, Effect9.fn("Cli.deadboltDisconnect")(function* () {
|
|
1595
|
-
const result = yield* Effect9.try({
|
|
1596
|
-
try: () => unpair(),
|
|
1597
|
-
catch: (cause) => cause instanceof Error ? cause : new Error("Could not disconnect from Deadbolt")
|
|
1598
|
-
});
|
|
1599
|
-
if (!result.removed) {
|
|
1600
|
-
yield* Console7.log("browse isn't connected to Deadbolt");
|
|
1601
|
-
return;
|
|
1602
|
-
}
|
|
1603
|
-
yield* Console7.log(result.revoked ? "Disconnected: the client is removed in Deadbolt and its token deleted here." : "Deleted the client token here. Deadbolt didn't confirm removing the client: check `deadbolt agents clients`.");
|
|
1604
|
-
})).pipe(Command6.withDescription("Remove browse's Deadbolt client (in Deadbolt and here)"));
|
|
1605
|
-
var deadboltStatus = Command6.make("status", { json: jsonFlag }, Effect9.fn("Cli.deadboltStatus")(function* ({ json }) {
|
|
1606
|
-
const client = readClient();
|
|
1607
|
-
const socket = socketPath();
|
|
1608
|
-
const status = client ? yield* Effect9.promise(() => connect({ client, socket }).status().then((value) => ({ reachable: true, ...value }), (error) => ({
|
|
1609
|
-
reachable: false,
|
|
1610
|
-
error: error instanceof Error ? error.message : String(error)
|
|
1611
|
-
}))) : undefined;
|
|
1612
|
-
const report = {
|
|
1613
|
-
connected: client !== undefined,
|
|
1614
|
-
...client ? { id: client.id } : {},
|
|
1615
|
-
socket,
|
|
1616
|
-
...status ? { deadbolt: status } : {}
|
|
1617
|
-
};
|
|
1618
|
-
if (json) {
|
|
1619
|
-
yield* emitJson(report);
|
|
1620
|
-
return;
|
|
1621
|
-
}
|
|
1622
|
-
if (!client) {
|
|
1623
|
-
yield* Console7.log("Not connected to Deadbolt. Run `opencode-browser deadbolt connect`.");
|
|
1624
|
-
return;
|
|
1625
|
-
}
|
|
1626
|
-
yield* Console7.log(`Connected as Deadbolt client ${client.id}; socket ${socket}`);
|
|
1627
|
-
if (status && status.reachable)
|
|
1628
|
-
yield* Console7.log(`Deadbolt ${status.version ?? ""} (protocol ${status.protocol}) is ${status.unlocked ? "unlocked" : "locked: agent sign-ins are paused until you unlock it"}`);
|
|
1629
|
-
else if (status)
|
|
1630
|
-
yield* Console7.log(`Deadbolt isn't reachable: ${status.error}`);
|
|
1631
|
-
})).pipe(Command6.withDescription("Show whether browse is paired with Deadbolt and whether Deadbolt is reachable and unlocked"));
|
|
1632
|
-
var deadbolt = Command6.make("deadbolt").pipe(Command6.withDescription("Let agents sign in with the Deadbolt logins you grant them, without seeing any value"), Command6.withSubcommands([deadboltConnect, deadboltDisconnect, deadboltStatus]));
|
|
1633
1577
|
registerCliCommand(610, () => secrets);
|
|
1634
|
-
registerCliCommand(620, () => deadbolt);
|
|
1635
1578
|
|
|
1636
1579
|
// src/cli/session.ts
|
|
1637
1580
|
import { Console as Console8, Effect as Effect10, Option as Option8 } from "effect";
|
package/dist/cli.mjs
CHANGED
|
@@ -2,29 +2,29 @@
|
|
|
2
2
|
|
|
3
3
|
// src/main.ts
|
|
4
4
|
import path from "node:path";
|
|
5
|
-
var embeddedVersion = "0.0.6
|
|
5
|
+
var embeddedVersion = "0.0.6";
|
|
6
6
|
var setupCommands = new Set(["install", "uninstall", "extension", "pair", "rollback", "set"]);
|
|
7
7
|
var command = process.argv[2];
|
|
8
8
|
var invokedAs = path.basename(process.argv[1] ?? "");
|
|
9
9
|
if (command === "--version" || command === "-v") {
|
|
10
|
-
const opencodeBrowserVersion = embeddedVersion ?? (await import("./version-
|
|
10
|
+
const opencodeBrowserVersion = embeddedVersion ?? (await import("./version-8gwa4g0s.mjs")).opencodeBrowserVersion;
|
|
11
11
|
process.stdout.write(`${opencodeBrowserVersion}
|
|
12
12
|
`);
|
|
13
13
|
} else if (invokedAs === "opencode-browser-mcp" || command === "mcp" && process.argv.length === 3) {
|
|
14
14
|
const { NodeRuntime } = await import("@effect/platform-node");
|
|
15
|
-
const { runMcpServer } = await import("./mcp-
|
|
15
|
+
const { runMcpServer } = await import("./mcp-4w28g9h2.mjs");
|
|
16
16
|
runMcpServer.pipe(NodeRuntime.runMain);
|
|
17
17
|
} else if (command === "mcp" && globalThis.__OPENCODE_BROWSER_COMPILED__ && process.env.OPENCODE_BROWSER_MCP_DIRECT !== "1") {
|
|
18
|
-
const { runBinaryMcp } = await import("./supervisor-
|
|
18
|
+
const { runBinaryMcp } = await import("./supervisor-9qwn7rb1.mjs");
|
|
19
19
|
await runBinaryMcp(process.argv.slice(3));
|
|
20
20
|
} else if (command === "runtime-install" || command === "runtime-switch") {
|
|
21
|
-
const { runRuntimeInstall, runRuntimeSwitch } = await import("./runtime-update-
|
|
21
|
+
const { runRuntimeInstall, runRuntimeSwitch } = await import("./runtime-update-zjx0kaj7.mjs");
|
|
22
22
|
await (command === "runtime-install" ? runRuntimeInstall : runRuntimeSwitch)(process.argv.slice(3));
|
|
23
23
|
} else if (command === "update") {
|
|
24
|
-
const { runUpdateCommand } = await import("./update-
|
|
24
|
+
const { runUpdateCommand } = await import("./update-sxawv22k.mjs");
|
|
25
25
|
await runUpdateCommand(process.argv.slice(3));
|
|
26
26
|
} else if (command && setupCommands.has(command)) {
|
|
27
|
-
const { runSetup } = await import("./setup-
|
|
27
|
+
const { runSetup } = await import("./setup-0z9803a3.mjs");
|
|
28
28
|
await runSetup(command, process.argv.slice(3));
|
|
29
29
|
} else {
|
|
30
30
|
if (!command || command === "--help" || command === "-h") {
|
|
@@ -59,9 +59,9 @@ if (command === "--version" || command === "-v") {
|
|
|
59
59
|
`);
|
|
60
60
|
}
|
|
61
61
|
if (command === "status" && !process.argv.includes("--json")) {
|
|
62
|
-
const { printSetupStatus } = await import("./setup-
|
|
62
|
+
const { printSetupStatus } = await import("./setup-0z9803a3.mjs");
|
|
63
63
|
printSetupStatus();
|
|
64
64
|
}
|
|
65
|
-
const { runCli } = await import("./cli-
|
|
65
|
+
const { runCli } = await import("./cli-jp1jev7t.mjs");
|
|
66
66
|
runCli();
|
|
67
67
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
writePrivateJsonFileSync
|
|
3
|
-
} from "./main-
|
|
3
|
+
} from "./main-yv64m9we.mjs";
|
|
4
4
|
import {
|
|
5
5
|
dataRoot,
|
|
6
6
|
devExtensionUrl,
|
|
7
7
|
devExtensionFolder
|
|
8
|
-
} from "./main-
|
|
8
|
+
} from "./main-3cza6vx1.mjs";
|
|
9
9
|
|
|
10
10
|
// src/relay/browser-pairing.ts
|
|
11
11
|
import crypto from "node:crypto";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
opencodeBrowserVersion2
|
|
3
|
-
} from "./main-
|
|
3
|
+
} from "./main-ry14nc9q.mjs";
|
|
4
4
|
|
|
5
5
|
// src/update/auto-update.ts
|
|
6
6
|
import { spawn } from "node:child_process";
|
|
@@ -70,7 +70,7 @@ function storeConfig(env = process.env, baked = { id: "mfnicocicmmlkpjnaffgihfjh
|
|
|
70
70
|
return id ? { id } : {};
|
|
71
71
|
}
|
|
72
72
|
var RELEASE_SERVICE = "https://anoma.ly/release";
|
|
73
|
-
function devExtension(baked =
|
|
73
|
+
function devExtension(baked = undefined) {
|
|
74
74
|
return baked && /^[0-9a-f]{64}$/.test(baked.sha256) && /^[\w.-]+\.zip$/.test(baked.file) ? baked : undefined;
|
|
75
75
|
}
|
|
76
76
|
var devExtensionUrl = (extension, env = process.env) => `${(env.OPENCODE_BROWSER_RELEASE_SERVICE || RELEASE_SERVICE).replace(/\/+$/, "")}/browse/files/${extension.sha256}/${extension.file}`;
|
|
@@ -6,17 +6,17 @@ import {
|
|
|
6
6
|
} from "./main-3gthmkzw.mjs";
|
|
7
7
|
import {
|
|
8
8
|
relayAuthorization
|
|
9
|
-
} from "./main-
|
|
9
|
+
} from "./main-yv64m9we.mjs";
|
|
10
10
|
import {
|
|
11
11
|
opencodeBrowserBuildId2
|
|
12
|
-
} from "./main-
|
|
12
|
+
} from "./main-ry14nc9q.mjs";
|
|
13
13
|
import {
|
|
14
14
|
compiledBinary,
|
|
15
15
|
scriptEntry,
|
|
16
16
|
cliCommand,
|
|
17
17
|
installCommand,
|
|
18
18
|
npmRuntime
|
|
19
|
-
} from "./main-
|
|
19
|
+
} from "./main-3cza6vx1.mjs";
|
|
20
20
|
|
|
21
21
|
// src/relay/helpers.ts
|
|
22
22
|
import { Option, Predicate, Schema as Schema3 } from "effect";
|
|
@@ -312,35 +312,6 @@ var AuthProfileSummary = Schema.Struct({
|
|
|
312
312
|
slotCount: Schema.Number,
|
|
313
313
|
slots: Schema.Array(AuthProfileSlotSummary)
|
|
314
314
|
});
|
|
315
|
-
var DeadboltLoginsRequest = Schema.Struct({
|
|
316
|
-
sessionId: Schema.optionalKey(Schema.String)
|
|
317
|
-
});
|
|
318
|
-
var DeadboltListedLogin = Schema.Struct({
|
|
319
|
-
origin: Schema.String,
|
|
320
|
-
title: Schema.String,
|
|
321
|
-
username: Schema.optionalKey(Schema.String),
|
|
322
|
-
hasPassword: Schema.Boolean,
|
|
323
|
-
hasTotp: Schema.Boolean,
|
|
324
|
-
hasPasskey: Schema.Boolean,
|
|
325
|
-
granted: Schema.Boolean,
|
|
326
|
-
fields: Schema.optionalKey(Schema.Array(Schema.String)),
|
|
327
|
-
passkeys: Schema.Boolean,
|
|
328
|
-
signIn: Schema.optionalKey(Schema.Struct({ provider: Schema.String, account: Schema.optionalKey(Schema.String) }))
|
|
329
|
-
});
|
|
330
|
-
var DeadboltListedPasskey = Schema.Struct({
|
|
331
|
-
origin: Schema.String,
|
|
332
|
-
username: Schema.optionalKey(Schema.String),
|
|
333
|
-
displayName: Schema.optionalKey(Schema.String),
|
|
334
|
-
granted: Schema.Boolean
|
|
335
|
-
});
|
|
336
|
-
var DeadboltLoginsResponse = Schema.Struct({
|
|
337
|
-
connected: Schema.Boolean,
|
|
338
|
-
origins: Schema.Array(Schema.String),
|
|
339
|
-
logins: Schema.Array(DeadboltListedLogin),
|
|
340
|
-
passkeys: Schema.Array(DeadboltListedPasskey),
|
|
341
|
-
error: Schema.optionalKey(Schema.Struct({ code: Schema.String, message: Schema.String })),
|
|
342
|
-
note: Schema.optionalKey(Schema.String)
|
|
343
|
-
});
|
|
344
315
|
var NetworkEndpointDigest = Schema.Struct({
|
|
345
316
|
method: Schema.String,
|
|
346
317
|
url: Schema.String,
|
|
@@ -1113,7 +1084,6 @@ var make = Effect2.fn("RelayClient.make")(function* (options) {
|
|
|
1113
1084
|
networkStop: (request) => postJson("/network/stop", { ...request }, NetworkStopResponse),
|
|
1114
1085
|
networkCancel: (request) => postJson("/network/cancel", { ...request }, NetworkCancelResponse),
|
|
1115
1086
|
authStatus: (request) => postJson("/auth/status", { ...request }, AuthProfileSummary),
|
|
1116
|
-
deadboltLogins: (request) => postJson("/cli/deadbolt/logins", { ...request }, DeadboltLoginsResponse),
|
|
1117
1087
|
authRefresh: (request) => postJson("/auth/refresh", { ...request }, NetworkStopResponse),
|
|
1118
1088
|
authRun: (request) => postJson("/auth/run", { ...request }, AuthRunResponse),
|
|
1119
1089
|
recordingStart: ({ sessionId, tabId, ...request }) => postJson("/recording/start", { ...recordingTargetBody({ sessionId, tabId }), ...request }, RecordingStartResponse),
|
|
@@ -1437,4 +1407,4 @@ function isRelayStartingOrUnreachable(error) {
|
|
|
1437
1407
|
return isRelayStarting(error) || isRelayUnreachable(error);
|
|
1438
1408
|
}
|
|
1439
1409
|
|
|
1440
|
-
export { ExecuteRequest, SessionAdoptRequest, SessionNewRequest, SessionEnsureRequest, SessionIdRequest, SessionAllowlistRequest, AuthenticatedJsonRequest, AuthenticatedJsonOutcome, RelayShutdownRequest, NetworkStartRequest, NetworkSessionRequest, NetworkStopRequest,
|
|
1410
|
+
export { ExecuteRequest, SessionAdoptRequest, SessionNewRequest, SessionEnsureRequest, SessionIdRequest, SessionAllowlistRequest, AuthenticatedJsonRequest, AuthenticatedJsonOutcome, RelayShutdownRequest, NetworkStartRequest, NetworkSessionRequest, NetworkStopRequest, AuthProfileRequest, AuthRefreshRequest, AuthRunRequest, RecordingTargetRequest, RecordingStartRequest, FlightRecorderStartRequest, FlightRecorderSaveRequest, HttpRouteError2, formatHostForUrl2, listenHttpServer2, closeHttpServer2, closeWebSocketServer2, logCloseError2, sendJson2, readJsonBody2, stableUnpackedExtensionOrigin2, chromeExtensionOriginForPath2, parseAdditionalExtensionOrigins2, validateHostHeader2, validateBrowserFetchSite2, validateWebSocketOrigin2, defaultHost2, defaultPort2, optionalSessionId2, isValidSessionId2, requiredSessionId2, parseTargetSelection2, generateSessionId2, sendCdpResponse2, sendCdpEvent2, getObject2, getString2, getNumber2, getIdText2, headerValue2, getTargetInfo2, isRestrictedTarget2, isRestrictedUrl2, dataUrlDocument2, portConfig, extensionOriginsConfig, endpointForPort, RelayUnreachable, RelayRejected, Service, layerFetch, layerFetchMcp, shouldWaitForExtensionReconnect, relayBuildProblem, ensureRelay, restartRelay, extensionReconnectWaitMs, ensureExtensionConnected, stoppedRelayStatus, statusCollections, startManagedRelay };
|