@trusty-squire/mcp 1.1.24 → 1.1.25-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -2
- package/dist/bin.js +1 -2
- package/dist/bin.js.map +1 -1
- package/dist/bot/broker/account-binding.d.ts +2 -2
- package/dist/bot/broker/account-binding.d.ts.map +1 -1
- package/dist/bot/broker/account-binding.js +2 -2
- package/dist/bot/broker/account-binding.js.map +1 -1
- package/dist/bot/broker/daemon.d.ts +10 -5
- package/dist/bot/broker/daemon.d.ts.map +1 -1
- package/dist/bot/broker/daemon.js +220 -10
- package/dist/bot/broker/daemon.js.map +1 -1
- package/dist/bot/broker/discovery.d.ts +12 -25
- package/dist/bot/broker/discovery.d.ts.map +1 -1
- package/dist/bot/broker/discovery.js +100 -191
- package/dist/bot/broker/discovery.js.map +1 -1
- package/dist/bot/broker/forwarder.d.ts.map +1 -1
- package/dist/bot/broker/forwarder.js +3 -8
- package/dist/bot/broker/forwarder.js.map +1 -1
- package/dist/bot/broker/managed-marker.d.ts +5 -6
- package/dist/bot/broker/managed-marker.d.ts.map +1 -1
- package/dist/bot/broker/managed-marker.js +36 -30
- package/dist/bot/broker/managed-marker.js.map +1 -1
- package/dist/bot/broker/transport.d.ts +0 -6
- package/dist/bot/broker/transport.d.ts.map +1 -1
- package/dist/bot/broker/transport.js +1 -58
- package/dist/bot/broker/transport.js.map +1 -1
- package/dist/bot/google-login.d.ts.map +1 -1
- package/dist/bot/google-login.js +4 -7
- package/dist/bot/google-login.js.map +1 -1
- package/dist/browser-busy.js +2 -2
- package/dist/browser-busy.js.map +1 -1
- package/dist/install/broker-service.d.ts +14 -0
- package/dist/install/broker-service.d.ts.map +1 -0
- package/dist/install/broker-service.js +279 -0
- package/dist/install/broker-service.js.map +1 -0
- package/dist/install/cli.d.ts.map +1 -1
- package/dist/install/cli.js +6 -29
- package/dist/install/cli.js.map +1 -1
- package/dist/install/version-check.js +3 -3
- package/dist/install/version-check.js.map +1 -1
- package/dist/relay.d.ts.map +1 -1
- package/dist/relay.js +35 -10
- package/dist/relay.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -21,7 +21,7 @@ Ask your coding agent to:
|
|
|
21
21
|
## Install
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
|
-
npx @trusty-squire/mcp connect
|
|
24
|
+
npx -y @trusty-squire/mcp@latest connect
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
Sign in with Google or GitHub, and Trusty Squire adds itself to your coding agent. Restart the agent and ask for what you need.
|
|
@@ -29,7 +29,9 @@ Sign in with Google or GitHub, and Trusty Squire adds itself to your coding agen
|
|
|
29
29
|
To pick the agent yourself:
|
|
30
30
|
|
|
31
31
|
```bash
|
|
32
|
-
npx @trusty-squire/mcp connect --target=codex
|
|
32
|
+
npx -y @trusty-squire/mcp@latest connect --target=codex
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
+
On Linux, connect registers and starts a systemd user service; on macOS, a launchd user agent. A working user service manager is required. MCP clients connect to that broker and report "broker not running" after bounded retries if it is stopped. Installer-written client entries use `@trusty-squire/mcp@latest`.
|
|
36
|
+
|
|
35
37
|
Works with Claude Code, Codex, Cursor, OpenCode, Goose, Cline, Continue, and Hermes.
|
package/dist/bin.js
CHANGED
|
@@ -54,8 +54,7 @@ dispatch()
|
|
|
54
54
|
// after printing "You're done."
|
|
55
55
|
//
|
|
56
56
|
// The `server`/`relay` branch returns when the stdio pipe or a signal
|
|
57
|
-
// closes the proxy; force-exit
|
|
58
|
-
// this process alive. `skill` returns its own code via T30 taxonomy.
|
|
57
|
+
// closes the proxy; force-exit after its transport has closed. `skill` returns its own code via T30 taxonomy.
|
|
59
58
|
if (isServer || isRelay)
|
|
60
59
|
process.exit(code);
|
|
61
60
|
if (!isBroker)
|
package/dist/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA,sDAAsD;AACtD,EAAE;AACF,mEAAmE;AACnE,uEAAuE;AACvE,sEAAsE;AACtE,6CAA6C;AAC7C,+EAA+E;AAC/E,iEAAiE;AACjE,EAAE;AACF,uEAAuE;AACvE,qEAAqE;AACrE,wEAAwE;AACxE,kEAAkE;AAClE,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEnC,oEAAoE;AACpE,8DAA8D;AAC9D,oCAAoC;AACpC,MAAM,aAAa,GACjB,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AAE3F,IAAI,aAAa,EAAE,CAAC;IAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;AACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;AACtC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;AACpC,0EAA0E;AAC1E,4EAA4E;AAC5E,4EAA4E;AAE5E,KAAK,UAAU,QAAQ;IACrB,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;QACnE,MAAM,eAAe,EAAE,CAAC;QACxB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QAChD,MAAM,QAAQ,EAAE,CAAC;QACjB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACpD,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IACnB,OAAO,CAAC,CAAC;AACX,CAAC;AAED,QAAQ,EAAE;KACP,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;IACb,iEAAiE;IACjE,sEAAsE;IACtE,mCAAmC;IACnC,8DAA8D;IAC9D,gEAAgE;IAChE,gCAAgC;IAChC,EAAE;IACF,sEAAsE;IACtE,
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** The account a profile's browser is enrolled to. The broker runtime writes
|
|
2
2
|
* this record on its first acquire and refuses a profile bound to another
|
|
3
|
-
* account;
|
|
4
|
-
*
|
|
3
|
+
* account; connection discovery reads it to verify the service endpoint
|
|
4
|
+
* binding. One path, one shape, one owner. */
|
|
5
5
|
export declare function brokerAccountBindingPath(profileDir: string): string;
|
|
6
6
|
export interface BrokerAccountBinding {
|
|
7
7
|
version: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-binding.d.ts","sourceRoot":"","sources":["../../../src/bot/broker/account-binding.ts"],"names":[],"mappings":"AAGA;;;
|
|
1
|
+
{"version":3,"file":"account-binding.d.ts","sourceRoot":"","sources":["../../../src/bot/broker/account-binding.ts"],"names":[],"mappings":"AAGA;;;8CAG8C;AAC9C,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;2BAE2B;AAC3B,wBAAsB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWzF"}
|
|
@@ -2,8 +2,8 @@ import { readFile } from "node:fs/promises";
|
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
/** The account a profile's browser is enrolled to. The broker runtime writes
|
|
4
4
|
* this record on its first acquire and refuses a profile bound to another
|
|
5
|
-
* account;
|
|
6
|
-
*
|
|
5
|
+
* account; connection discovery reads it to verify the service endpoint
|
|
6
|
+
* binding. One path, one shape, one owner. */
|
|
7
7
|
export function brokerAccountBindingPath(profileDir) {
|
|
8
8
|
return join(profileDir, "trusty-squire-broker-account.json");
|
|
9
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-binding.js","sourceRoot":"","sources":["../../../src/bot/broker/account-binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;;
|
|
1
|
+
{"version":3,"file":"account-binding.js","sourceRoot":"","sources":["../../../src/bot/broker/account-binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;;8CAG8C;AAC9C,MAAM,UAAU,wBAAwB,CAAC,UAAkB;IACzD,OAAO,IAAI,CAAC,UAAU,EAAE,mCAAmC,CAAC,CAAC;AAC/D,CAAC;AAOD;;2BAE2B;AAC3B,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,UAAkB;IAC/D,IAAI,OAAgB,CAAC;IACrB,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,wBAAwB,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACrF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,OAAwC,CAAC;IACxE,IAAI,OAAO,KAAK,CAAC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1F,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -27,10 +27,15 @@ export declare function retryableBrokerShutdown(cleanup: () => Promise<boolean>)
|
|
|
27
27
|
* account, so a bare broker serves the ceremony and the operator alike.
|
|
28
28
|
*/
|
|
29
29
|
/** A broker may start when (a) no managed marker exists, or (b) it was started
|
|
30
|
-
* by the
|
|
31
|
-
*
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
* by the broker service that owns the profile. Older or foreign clients that
|
|
31
|
+
* exec the new bin are not that service and fail closed. */
|
|
32
|
+
export declare function brokerMayStartForMarker(markerPresent: boolean, env: NodeJS.ProcessEnv, cgroup?: string): boolean;
|
|
33
|
+
/** True only for the broker service's own process: the installer's unit sets
|
|
34
|
+
* TRUSTY_SQUIRE_BROKER_UNIT=1, and an existing broker unit (e.g. Beeline's
|
|
35
|
+
* trusty-squire-broker.service) is recognized by its own systemd cgroup.
|
|
36
|
+
* INVOCATION_ID alone is not enough: systemd gives it to every process of every
|
|
37
|
+
* unit, so a CI runner or an agent service would otherwise count as the broker
|
|
38
|
+
* service and take over a profile it does not own. */
|
|
39
|
+
export declare function startedByBrokerService(env: NodeJS.ProcessEnv, cgroup?: string): boolean;
|
|
35
40
|
export declare function runBrokerDaemon(): Promise<void>;
|
|
36
41
|
//# sourceMappingURL=daemon.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../../src/bot/broker/daemon.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../../src/bot/broker/daemon.ts"],"names":[],"mappings":"AAgCA;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAE5C,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAK7C,uEAAuE;IACvE,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIjC,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI7B,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAK9B,IAAI,IAAI,OAAO;CAGhB;AAED,oFAAoF;AACpF,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG;IACxE,OAAO,EAAE,MAAM,OAAO,CAAC;IACvB,GAAG,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B,CAeA;AAED;;;;;;;;GAQG;AACH;;4DAE4D;AAC5D,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,OAAO,EACtB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,MAAM,SAAkB,GACvB,OAAO,CAGT;AAED;;;;;sDAKsD;AACtD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,SAAkB,GAAG,OAAO,CAIhG;AAkMD,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAgJrD"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { resolveBrokerSocket } from "./discovery.js";
|
|
2
|
+
import { execFileSync } from "node:child_process";
|
|
3
|
+
import { readFileSync } from "node:fs";
|
|
2
4
|
import { lstat, rm, unlink } from "node:fs/promises";
|
|
3
5
|
import { dirname, join } from "node:path";
|
|
4
6
|
import { createHash } from "node:crypto";
|
|
7
|
+
import { homedir, hostname } from "node:os";
|
|
5
8
|
import { createSessionGuard, setServingAccountId } from "../../session-guard.js";
|
|
6
9
|
import { setSelfManagedChromeTerminationSignalExitEnabled } from "../browser.js";
|
|
7
|
-
import { acquireProfileOperationGuard, ensureProfileDeviceAnchor, profilePathIdentity, CHROME_PROFILE_DIR, readLockHolder, } from "../profile.js";
|
|
10
|
+
import { acquireProfileOperationGuard, ensureProfileDeviceAnchor, profilePathIdentity, profileOperationLockPath, processBirthIdentity, processBirthIdentityState, profileProcessIdentity, ProfileBusyError, CHROME_PROFILE_DIR, readLockHolder, } from "../profile.js";
|
|
8
11
|
import { brokerBusyStatus } from "./status.js";
|
|
9
12
|
import { installBrokerBrowserCustody } from "./custody.js";
|
|
10
13
|
import { BrokerRuntime } from "./runtime.js";
|
|
@@ -14,6 +17,7 @@ import { BrokerRefusal } from "./refusal.js";
|
|
|
14
17
|
import { listenBroker } from "./transport.js";
|
|
15
18
|
import { listenSharedMcp } from "./mcp-socket.js";
|
|
16
19
|
import { readBrokerUnitMarkerSync } from "./managed-marker.js";
|
|
20
|
+
import { sharedMcpSocketPath } from "./mcp-socket-path.js";
|
|
17
21
|
/**
|
|
18
22
|
* Wire connections that hold a claim on the browser. Status probes are reads
|
|
19
23
|
* and do not count as active clients when explicit shutdown checks drain.
|
|
@@ -73,15 +77,205 @@ export function retryableBrokerShutdown(cleanup) {
|
|
|
73
77
|
* account, so a bare broker serves the ceremony and the operator alike.
|
|
74
78
|
*/
|
|
75
79
|
/** A broker may start when (a) no managed marker exists, or (b) it was started
|
|
76
|
-
* by the
|
|
77
|
-
*
|
|
78
|
-
|
|
79
|
-
* new bin have neither and fail closed. */
|
|
80
|
-
export function brokerMayStartForMarker(markerPresent, env) {
|
|
80
|
+
* by the broker service that owns the profile. Older or foreign clients that
|
|
81
|
+
* exec the new bin are not that service and fail closed. */
|
|
82
|
+
export function brokerMayStartForMarker(markerPresent, env, cgroup = readOwnCgroup()) {
|
|
81
83
|
if (!markerPresent)
|
|
82
84
|
return true;
|
|
83
|
-
|
|
84
|
-
|
|
85
|
+
return startedByBrokerService(env, cgroup);
|
|
86
|
+
}
|
|
87
|
+
/** True only for the broker service's own process: the installer's unit sets
|
|
88
|
+
* TRUSTY_SQUIRE_BROKER_UNIT=1, and an existing broker unit (e.g. Beeline's
|
|
89
|
+
* trusty-squire-broker.service) is recognized by its own systemd cgroup.
|
|
90
|
+
* INVOCATION_ID alone is not enough: systemd gives it to every process of every
|
|
91
|
+
* unit, so a CI runner or an agent service would otherwise count as the broker
|
|
92
|
+
* service and take over a profile it does not own. */
|
|
93
|
+
export function startedByBrokerService(env, cgroup = readOwnCgroup()) {
|
|
94
|
+
if (env.TRUSTY_SQUIRE_BROKER_UNIT === "1")
|
|
95
|
+
return true;
|
|
96
|
+
if ((env.INVOCATION_ID ?? "").trim().length === 0)
|
|
97
|
+
return false;
|
|
98
|
+
return /\/trusty-squire-broker[^/\n]*\.service\s*$/m.test(cgroup);
|
|
99
|
+
}
|
|
100
|
+
function readOwnCgroup() {
|
|
101
|
+
try {
|
|
102
|
+
return readFileSync("/proc/self/cgroup", "utf8");
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
return "";
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
const TAKEOVER_WAIT_MS = 10_000;
|
|
109
|
+
/** lsof's `l` field must report the SQLite write lock, not merely an open fd. */
|
|
110
|
+
function lockedBrokerPid(profileDir) {
|
|
111
|
+
const uid = process.getuid?.();
|
|
112
|
+
if (uid === undefined)
|
|
113
|
+
return null;
|
|
114
|
+
let output;
|
|
115
|
+
try {
|
|
116
|
+
output = execFileSync("lsof", ["-w", "-a", "-Fpl", "-u", String(uid), "--", profileOperationLockPath(profileDir)], { encoding: "utf8", timeout: 3_000, stdio: ["ignore", "pipe", "ignore"] });
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
let pid = 0;
|
|
122
|
+
const holders = new Set();
|
|
123
|
+
for (const line of output.split("\n")) {
|
|
124
|
+
if (line.startsWith("p"))
|
|
125
|
+
pid = Number(line.slice(1));
|
|
126
|
+
if (line.startsWith("l") && /[wW]/.test(line.slice(1)) && Number.isSafeInteger(pid) && pid > 0)
|
|
127
|
+
holders.add(pid);
|
|
128
|
+
}
|
|
129
|
+
return holders.size === 1 ? [...holders][0] : null;
|
|
130
|
+
}
|
|
131
|
+
function brokerCommandMatches(pid) {
|
|
132
|
+
try {
|
|
133
|
+
const command = process.platform === "linux"
|
|
134
|
+
? readFileSync(`/proc/${pid}/cmdline`, "utf8").split("\0").join(" ")
|
|
135
|
+
: execFileSync("ps", ["-ww", "-p", String(pid), "-o", "command="], {
|
|
136
|
+
encoding: "utf8",
|
|
137
|
+
timeout: 3_000,
|
|
138
|
+
});
|
|
139
|
+
return (/(?:^|\s)(?:broker|--squire-broker)(?:\s|$)/.test(command) ||
|
|
140
|
+
/broker[^\s]*daemon\.(?:ts|js)(?:\s|$)/.test(command));
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
function brokerServesProfile(pid, profileDir) {
|
|
147
|
+
if (process.platform !== "linux")
|
|
148
|
+
return true; // Socket ownership is the profile proof on macOS.
|
|
149
|
+
try {
|
|
150
|
+
const entries = readFileSync(`/proc/${pid}/environ`, "utf8").split("\0");
|
|
151
|
+
const value = (key) => entries.find((entry) => entry.startsWith(`${key}=`))?.slice(key.length + 1);
|
|
152
|
+
const home = value("HOME") || homedir();
|
|
153
|
+
const claimedProfile = value("TRUSTY_SQUIRE_PROFILE_DIR") || join(home, ".trusty-squire", "chrome-profile");
|
|
154
|
+
return profilePathIdentity(claimedProfile) === profilePathIdentity(profileDir);
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
function socketBrokerPid(socket) {
|
|
161
|
+
let output;
|
|
162
|
+
try {
|
|
163
|
+
output = execFileSync("lsof", ["-w", "-a", "-t", "-U", "--", socket], {
|
|
164
|
+
encoding: "utf8",
|
|
165
|
+
timeout: 3_000,
|
|
166
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
172
|
+
const pids = [
|
|
173
|
+
...new Set(output
|
|
174
|
+
.trim()
|
|
175
|
+
.split(/\s+/)
|
|
176
|
+
.map(Number)
|
|
177
|
+
.filter((pid) => Number.isSafeInteger(pid) && pid > 0 && pid !== process.pid)),
|
|
178
|
+
];
|
|
179
|
+
return pids.length === 1 ? pids[0] : null;
|
|
180
|
+
}
|
|
181
|
+
function chromeCommandMatches(pid, profileDir) {
|
|
182
|
+
if (process.platform === "linux")
|
|
183
|
+
return profileProcessIdentity(pid, profileDir) !== null;
|
|
184
|
+
try {
|
|
185
|
+
const command = execFileSync("ps", ["-ww", "-p", String(pid), "-o", "command="], {
|
|
186
|
+
encoding: "utf8",
|
|
187
|
+
timeout: 3_000,
|
|
188
|
+
});
|
|
189
|
+
const profile = profilePathIdentity(profileDir);
|
|
190
|
+
return ([
|
|
191
|
+
`--user-data-dir=${profile}`,
|
|
192
|
+
`--user-data-dir="${profile}"`,
|
|
193
|
+
`--user-data-dir='${profile}'`,
|
|
194
|
+
].some((argument) => {
|
|
195
|
+
const offset = command.indexOf(argument);
|
|
196
|
+
return (offset >= 0 &&
|
|
197
|
+
(offset === 0 || /\s/.test(command[offset - 1])) &&
|
|
198
|
+
(offset + argument.length === command.length ||
|
|
199
|
+
/\s/.test(command[offset + argument.length])));
|
|
200
|
+
}) && /(?:Chrome|Chromium|chrome|chromium)/.test(command));
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
return false;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
async function waitUntil(released) {
|
|
207
|
+
const deadline = Date.now() + TAKEOVER_WAIT_MS;
|
|
208
|
+
while (Date.now() < deadline) {
|
|
209
|
+
if (released())
|
|
210
|
+
return true;
|
|
211
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
212
|
+
}
|
|
213
|
+
return released();
|
|
214
|
+
}
|
|
215
|
+
async function takeOverOldBroker(profileDir) {
|
|
216
|
+
const pid = lockedBrokerPid(profileDir);
|
|
217
|
+
if (pid === null ||
|
|
218
|
+
pid === process.pid ||
|
|
219
|
+
!brokerCommandMatches(pid) ||
|
|
220
|
+
!brokerServesProfile(pid, profileDir))
|
|
221
|
+
throw new ProfileBusyError("Could not identify the broker holding this profile lock");
|
|
222
|
+
const identity = processBirthIdentity(pid);
|
|
223
|
+
if (identity === null || lockedBrokerPid(profileDir) !== pid) {
|
|
224
|
+
throw new ProfileBusyError("Broker profile lock holder changed during takeover");
|
|
225
|
+
}
|
|
226
|
+
process.kill(pid, "SIGTERM");
|
|
227
|
+
const released = () => lockedBrokerPid(profileDir) !== pid;
|
|
228
|
+
if (await waitUntil(released))
|
|
229
|
+
return;
|
|
230
|
+
if (processBirthIdentityState(identity) === "matching" && lockedBrokerPid(profileDir) === pid)
|
|
231
|
+
process.kill(pid, "SIGKILL");
|
|
232
|
+
if (!(await waitUntil(released)))
|
|
233
|
+
throw new ProfileBusyError("Old broker did not release the profile lock");
|
|
234
|
+
}
|
|
235
|
+
async function takeOverSocketBroker(profileDir, socket) {
|
|
236
|
+
const pid = socketBrokerPid(socket);
|
|
237
|
+
if (pid === null)
|
|
238
|
+
return;
|
|
239
|
+
if (!brokerCommandMatches(pid) || !brokerServesProfile(pid, profileDir))
|
|
240
|
+
throw new ProfileBusyError("Profile socket is held by an unidentified process");
|
|
241
|
+
const identity = processBirthIdentity(pid);
|
|
242
|
+
if (identity === null || socketBrokerPid(socket) !== pid)
|
|
243
|
+
throw new ProfileBusyError("Broker socket holder changed during takeover");
|
|
244
|
+
process.kill(pid, "SIGTERM");
|
|
245
|
+
const released = () => socketBrokerPid(socket) !== pid;
|
|
246
|
+
if (await waitUntil(released))
|
|
247
|
+
return;
|
|
248
|
+
if (processBirthIdentityState(identity) === "matching" && socketBrokerPid(socket) === pid)
|
|
249
|
+
process.kill(pid, "SIGKILL");
|
|
250
|
+
if (!(await waitUntil(released)))
|
|
251
|
+
throw new ProfileBusyError("Old broker did not release its profile socket");
|
|
252
|
+
}
|
|
253
|
+
/** A dead broker can leave Chrome alive without holding the SQLite lock. */
|
|
254
|
+
async function takeOverOldChrome(profileDir) {
|
|
255
|
+
const holder = readLockHolder(profileDir);
|
|
256
|
+
if (holder === null || holder.host !== hostname() || holder.stale)
|
|
257
|
+
return;
|
|
258
|
+
const identity = processBirthIdentity(holder.pid);
|
|
259
|
+
if (identity === null)
|
|
260
|
+
throw new ProfileBusyError("Cannot identify the old Chrome process");
|
|
261
|
+
if (!chromeCommandMatches(holder.pid, profileDir))
|
|
262
|
+
throw new ProfileBusyError("Profile lock does not identify Chrome for this profile");
|
|
263
|
+
const stillOwned = () => {
|
|
264
|
+
const current = readLockHolder(profileDir);
|
|
265
|
+
return (current?.host === hostname() &&
|
|
266
|
+
current.pid === holder.pid &&
|
|
267
|
+
!current.stale &&
|
|
268
|
+
processBirthIdentityState(identity) === "matching");
|
|
269
|
+
};
|
|
270
|
+
if (!stillOwned())
|
|
271
|
+
return;
|
|
272
|
+
process.kill(holder.pid, "SIGINT"); // Chrome flushes profile state on SIGINT.
|
|
273
|
+
if (await waitUntil(() => !stillOwned()))
|
|
274
|
+
return;
|
|
275
|
+
if (stillOwned())
|
|
276
|
+
process.kill(holder.pid, "SIGKILL");
|
|
277
|
+
if (!(await waitUntil(() => !stillOwned())))
|
|
278
|
+
throw new ProfileBusyError("Old Chrome did not release this profile");
|
|
85
279
|
}
|
|
86
280
|
export async function runBrokerDaemon() {
|
|
87
281
|
// A managed-broker marker means a systemd unit owns this profile. Refuse
|
|
@@ -111,11 +305,27 @@ export async function runBrokerDaemon() {
|
|
|
111
305
|
.digest("hex");
|
|
112
306
|
// The fd is the broker's sole profile authority. A crash releases it in the
|
|
113
307
|
// kernel; the remaining inode carries no owner record.
|
|
114
|
-
|
|
308
|
+
let profileElection;
|
|
309
|
+
try {
|
|
310
|
+
profileElection = acquireProfileOperationGuard(CHROME_PROFILE_DIR);
|
|
311
|
+
}
|
|
312
|
+
catch (error) {
|
|
313
|
+
if (!(error instanceof ProfileBusyError) || !startedByBrokerService(process.env))
|
|
314
|
+
throw error;
|
|
315
|
+
await takeOverOldBroker(CHROME_PROFILE_DIR);
|
|
316
|
+
profileElection = acquireProfileOperationGuard(CHROME_PROFILE_DIR);
|
|
317
|
+
}
|
|
318
|
+
if (startedByBrokerService(process.env)) {
|
|
319
|
+
await takeOverSocketBroker(CHROME_PROFILE_DIR, path);
|
|
320
|
+
await takeOverSocketBroker(CHROME_PROFILE_DIR, sharedMcpSocketPath());
|
|
321
|
+
}
|
|
115
322
|
await stopBrowserScope(CHROME_PROFILE_DIR);
|
|
323
|
+
if (startedByBrokerService(process.env))
|
|
324
|
+
await takeOverOldChrome(CHROME_PROFILE_DIR);
|
|
116
325
|
// One-time upgrade cleanup. Old file leases are not consulted by this broker.
|
|
117
326
|
await rm(join(dirname(profilePathIdentity(CHROME_PROFILE_DIR)), ".trusty-squire-broker-leases"), {
|
|
118
|
-
recursive: true,
|
|
327
|
+
recursive: true,
|
|
328
|
+
force: true,
|
|
119
329
|
});
|
|
120
330
|
const runtime = new BrokerRuntime();
|
|
121
331
|
installBrokerBrowserCustody(runtime);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../../src/bot/broker/daemon.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../../src/bot/broker/daemon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,gDAAgD,EAAE,MAAM,eAAe,CAAC;AACjF,OAAO,EACL,4BAA4B,EAC5B,yBAAyB,EACzB,mBAAmB,EACnB,wBAAwB,EACxB,oBAAoB,EACpB,yBAAyB,EACzB,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IACd,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IAC7B,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IAE5C,KAAK,CAAC,QAAgB,EAAE,KAAc;QACpC,IAAI,KAAK;YAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;;YAChC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED,uEAAuE;IACvE,MAAM,CAAC,QAAgB;QACrB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,QAAgB;QACpB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,CAAC,QAAgB;QACrB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,CAAC;IAClC,CAAC;CACF;AAED,oFAAoF;AACpF,MAAM,UAAU,uBAAuB,CAAC,OAA+B;IAIrE,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,OAAO;QACL,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO;QACtB,GAAG,EAAE,KAAK,IAAI,EAAE;YACd,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,IAAI,CAAC;gBACH,IAAI,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC;oBAAE,OAAO,GAAG,KAAK,CAAC;YAC1C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,GAAG,KAAK,CAAC;gBAChB,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH;;4DAE4D;AAC5D,MAAM,UAAU,uBAAuB,CACrC,aAAsB,EACtB,GAAsB,EACtB,MAAM,GAAG,aAAa,EAAE;IAExB,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,sBAAsB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;sDAKsD;AACtD,MAAM,UAAU,sBAAsB,CAAC,GAAsB,EAAE,MAAM,GAAG,aAAa,EAAE;IACrF,IAAI,GAAG,CAAC,yBAAyB,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IACvD,IAAI,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAChE,OAAO,6CAA6C,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,aAAa;IACpB,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAGhC,iFAAiF;AACjF,SAAS,eAAe,CAAC,UAAkB;IACzC,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAC/B,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,YAAY,CACnB,MAAM,EACN,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,wBAAwB,CAAC,UAAU,CAAC,CAAC,EACnF,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAC1E,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC;YAC5F,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACtD,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAW;IACvC,IAAI,CAAC;QACH,MAAM,OAAO,GACX,OAAO,CAAC,QAAQ,KAAK,OAAO;YAC1B,CAAC,CAAC,YAAY,CAAC,SAAS,GAAG,UAAU,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YACpE,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE;gBAC/D,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;QACT,OAAO,CACL,4CAA4C,CAAC,IAAI,CAAC,OAAO,CAAC;YAC1D,uCAAuC,CAAC,IAAI,CAAC,OAAO,CAAC,CACtD,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAW,EAAE,UAAkB;IAC1D,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC,CAAC,kDAAkD;IACjG,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,GAAG,UAAU,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzE,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,EAAE,CAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC9E,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxC,MAAM,cAAc,GAClB,KAAK,CAAC,2BAA2B,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;QACvF,OAAO,mBAAmB,CAAC,cAAc,CAAC,KAAK,mBAAmB,CAAC,UAAU,CAAC,CAAC;IACjF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,MAAc;IACrC,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE;YACpE,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;SACpC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAG;QACX,GAAG,IAAI,GAAG,CACR,MAAM;aACH,IAAI,EAAE;aACN,KAAK,CAAC,KAAK,CAAC;aACZ,GAAG,CAAC,MAAM,CAAC;aACX,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAChF;KACF,CAAC;IACF,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAW,EAAE,UAAkB;IAC3D,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,sBAAsB,CAAC,GAAG,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC;IAC1F,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE;YAC/E,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAChD,OAAO,CACL;YACE,mBAAmB,OAAO,EAAE;YAC5B,oBAAoB,OAAO,GAAG;YAC9B,oBAAoB,OAAO,GAAG;SAC/B,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;YAClB,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACzC,OAAO,CACL,MAAM,IAAI,CAAC;gBACX,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,CAAC;gBACjD,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM;oBAC1C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAE,CAAC,CAAC,CACjD,CAAC;QACJ,CAAC,CAAC,IAAI,qCAAqC,CAAC,IAAI,CAAC,OAAO,CAAC,CAC1D,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,QAAuB;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,gBAAgB,CAAC;IAC/C,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,IAAI,QAAQ,EAAE;YAAE,OAAO,IAAI,CAAC;QAC5B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,QAAQ,EAAE,CAAC;AACpB,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,UAAkB;IACjD,MAAM,GAAG,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IACxC,IACE,GAAG,KAAK,IAAI;QACZ,GAAG,KAAK,OAAO,CAAC,GAAG;QACnB,CAAC,oBAAoB,CAAC,GAAG,CAAC;QAC1B,CAAC,mBAAmB,CAAC,GAAG,EAAE,UAAU,CAAC;QAErC,MAAM,IAAI,gBAAgB,CAAC,yDAAyD,CAAC,CAAC;IACxF,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,QAAQ,KAAK,IAAI,IAAI,eAAe,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE,CAAC;QAC7D,MAAM,IAAI,gBAAgB,CAAC,oDAAoD,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC7B,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC;IAC3D,IAAI,MAAM,SAAS,CAAC,QAAQ,CAAC;QAAE,OAAO;IACtC,IAAI,yBAAyB,CAAC,QAAQ,CAAC,KAAK,UAAU,IAAI,eAAe,CAAC,UAAU,CAAC,KAAK,GAAG;QAC3F,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC/B,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC9B,MAAM,IAAI,gBAAgB,CAAC,6CAA6C,CAAC,CAAC;AAC9E,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,UAAkB,EAAE,MAAc;IACpE,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO;IACzB,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,UAAU,CAAC;QACrE,MAAM,IAAI,gBAAgB,CAAC,mDAAmD,CAAC,CAAC;IAClF,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,QAAQ,KAAK,IAAI,IAAI,eAAe,CAAC,MAAM,CAAC,KAAK,GAAG;QACtD,MAAM,IAAI,gBAAgB,CAAC,8CAA8C,CAAC,CAAC;IAC7E,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC7B,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC;IACvD,IAAI,MAAM,SAAS,CAAC,QAAQ,CAAC;QAAE,OAAO;IACtC,IAAI,yBAAyB,CAAC,QAAQ,CAAC,KAAK,UAAU,IAAI,eAAe,CAAC,MAAM,CAAC,KAAK,GAAG;QACvF,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC/B,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC9B,MAAM,IAAI,gBAAgB,CAAC,+CAA+C,CAAC,CAAC;AAChF,CAAC;AAED,4EAA4E;AAC5E,KAAK,UAAU,iBAAiB,CAAC,UAAkB;IACjD,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IAC1C,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,IAAI,MAAM,CAAC,KAAK;QAAE,OAAO;IAC1E,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAClD,IAAI,QAAQ,KAAK,IAAI;QAAE,MAAM,IAAI,gBAAgB,CAAC,wCAAwC,CAAC,CAAC;IAC5F,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC;QAC/C,MAAM,IAAI,gBAAgB,CAAC,wDAAwD,CAAC,CAAC;IACvF,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;QAC3C,OAAO,CACL,OAAO,EAAE,IAAI,KAAK,QAAQ,EAAE;YAC5B,OAAO,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG;YAC1B,CAAC,OAAO,CAAC,KAAK;YACd,yBAAyB,CAAC,QAAQ,CAAC,KAAK,UAAU,CACnD,CAAC;IACJ,CAAC,CAAC;IACF,IAAI,CAAC,UAAU,EAAE;QAAE,OAAO;IAC1B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,0CAA0C;IAC9E,IAAI,MAAM,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;QAAE,OAAO;IACjD,IAAI,UAAU,EAAE;QAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACtD,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;QACzC,MAAM,IAAI,gBAAgB,CAAC,yCAAyC,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,yEAAyE;IACzE,4EAA4E;IAC5E,gCAAgC;IAChC,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,kBAAkB,CAAC,CAAC;IACvE,IAAI,iBAAiB,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvF,MAAM,IAAI,aAAa,CACrB,oBAAoB,EACpB,6EAA6E,CAC9E,CAAC;IACJ,CAAC;IACD,qEAAqE;IACrE,yEAAyE;IACzE,2CAA2C;IAC3C,yBAAyB,CAAC,kBAAkB,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,mBAAmB,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC;QAC9F,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACvF,CAAC;IACD,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;IACnC,6EAA6E;IAC7E,yEAAyE;IACzE,0DAA0D;IAC1D,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACrD,mBAAmB,CAAC,OAAO,EAAE,UAAU,IAAI,IAAI,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC;SAChC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,UAAU,IAAI,IAAI,EAAE,mBAAmB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;SAC9F,MAAM,CAAC,KAAK,CAAC,CAAC;IACjB,4EAA4E;IAC5E,uDAAuD;IACvD,IAAI,eAAe,CAAC;IACpB,IAAI,CAAC;QACH,eAAe,GAAG,4BAA4B,CAAC,kBAAkB,CAAC,CAAC;IACrE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,CAAC,KAAK,YAAY,gBAAgB,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,MAAM,KAAK,CAAC;QAC9F,MAAM,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;QAC5C,eAAe,GAAG,4BAA4B,CAAC,kBAAkB,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACxC,MAAM,oBAAoB,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;QACrD,MAAM,oBAAoB,CAAC,kBAAkB,EAAE,mBAAmB,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;IAC3C,IAAI,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,MAAM,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;IACrF,8EAA8E;IAC9E,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC,EAAE,8BAA8B,CAAC,EAAE;QAC/F,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;IACpC,2BAA2B,CAAC,OAAO,CAAC,CAAC;IACrC,gDAAgD,CAAC,KAAK,CAAC,CAAC;IACxD,OAAO,CAAC,YAAY,EAAE,CAAC;IACvB,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC;QAClC,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,kCAAkC;KACxF,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC3C,6EAA6E;IAC7E,uDAAuD;IACvD,IAAI,QAAgE,CAAC;IACrE,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,8EAA8E;IAC9E,2EAA2E;IAC3E,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAA4B,EAAE,EAAE;QACxD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,KAAK,CAAC;IAC3C,CAAC,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE;QACxC,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,QAAQ,EAAE,OAAO,EAAE;gBAAE,MAAM,IAAI,aAAa,CAAC,aAAa,EAAE,yBAAyB,CAAC,CAAC;YAC3F,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC;YACpC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACzC,IAAI,KAAK;gBAAE,OAAO;QACpB,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE;YAC5C,MAAM,OAAO,GAAG,KAAK,EAAE,gBAA8B,EAAoB,EAAE;gBACzE,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACvC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBACpC,CAAC;gBACD,IAAI,QAAQ,EAAE,OAAO,EAAE;oBACrB,MAAM,IAAI,aAAa,CACrB,aAAa,EACb,6DAA6D,CAC9D,CAAC;gBACJ,sEAAsE;gBACtE,iDAAiD;gBACjD,IAAI,MAAM,KAAK,OAAO,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;oBAC/D,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;gBAC1B,CAAC;gBACD,4DAA4D;gBAC5D,IAAI,MAAM,KAAK,QAAQ;oBACrB,OAAO,gBAAgB,CAAC;wBACtB,gBAAgB,EAAE,KAAK;wBACvB,GAAG,OAAO,CAAC,aAAa,EAAE;wBAC1B,aAAa,EAAE,cAAc,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;qBACvE,CAAC,CAAC;gBACL,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBACzB,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;oBACxD,IAAI,IAAI,KAAK,SAAS;wBAAE,OAAO,IAAI,CAAC;gBACtC,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;gBACrC,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI;oBAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBACrE,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAC;YAC9E,CAAC,CAAC;YACF,2EAA2E;YAC3E,uEAAuE;YACvE,4BAA4B;YAC5B,OAAO,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,SAAS;gBAC9C,CAAC,CAAC,MAAM,QAAQ,CAAC,qBAAqB,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC;gBAC9D,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC;QACtB,CAAC;QACD,KAAK,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC;QACtE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE;YACxC,MAAM,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC/C,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;KACF,CAAC,CAAC;IACH,4EAA4E;IAC5E,uEAAuE;IACvE,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;IACpD,QAAQ,GAAG,uBAAuB,CAAC,KAAK,IAAsB,EAAE;QAC9D,oEAAoE;QACpE,2EAA2E;QAC3E,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACzD,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;YACxF,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,cAAc,GAAG,IAAI,CAAC;YACtB,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;YAC1B,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC;QACD,eAAe,CAAC,OAAO,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACxB,KAAK,QAAQ,CAAC,GAAG,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QACzB,KAAK,QAAQ,CAAC,GAAG,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,MAAM,QAAQ,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AACzF,CAAC"}
|
|
@@ -4,27 +4,26 @@ export declare function brokerSocketPath(profileDir?: string): string;
|
|
|
4
4
|
export declare function resolveBrokerSocket(profileDir?: string): string;
|
|
5
5
|
export declare function isUnavailable(error: unknown): boolean;
|
|
6
6
|
export declare function isBrowserContentionRefusal(error: unknown): boolean;
|
|
7
|
-
export declare function liveUnixSocket(path: string): Promise<boolean>;
|
|
8
|
-
export declare function brokerEnvironment(env: NodeJS.ProcessEnv, path: string): NodeJS.ProcessEnv;
|
|
7
|
+
export declare function liveUnixSocket(path: string, signal?: AbortSignal): Promise<boolean>;
|
|
9
8
|
export interface ManagedBrokerUnit {
|
|
10
9
|
id: string;
|
|
11
10
|
activeState: string;
|
|
12
11
|
execStart: string;
|
|
13
12
|
environment: Record<string, string>;
|
|
14
13
|
}
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
export declare function unitServesProfile(unit: ManagedBrokerUnit, profileDir: string): boolean;
|
|
15
|
+
/** Whether this live service serves the requested physical profile. */
|
|
16
|
+
export declare function unitServesLiveProfile(unit: ManagedBrokerUnit, profileDir: string): boolean;
|
|
17
17
|
/** The live broker unit that owns this profile, if any. */
|
|
18
18
|
export declare function findLiveManagedBrokerUnit(units: readonly ManagedBrokerUnit[], profileDir: string): ManagedBrokerUnit | undefined;
|
|
19
19
|
/** Parse `systemctl --user show --type=service` property blocks. */
|
|
20
20
|
export declare function parseManagedBrokerShow(stdout: string): ManagedBrokerUnit[];
|
|
21
|
-
export declare function managedBrokerUnitIsLive(profileDir?: string): boolean;
|
|
22
21
|
/** The socket a live managed broker unit for this profile was configured with. */
|
|
23
22
|
export declare function managedBrokerUnitSocket(profileDir?: string): string | undefined;
|
|
24
23
|
/** systemctl answer for this profile. A failure is deliberately "unknown",
|
|
25
24
|
* NOT "no unit": inside bwrap sandboxes `systemctl --user` fails, and a
|
|
26
|
-
* client
|
|
27
|
-
*
|
|
25
|
+
* client still resolves the marker or derived endpoint. No result permits
|
|
26
|
+
* client-side startup. */
|
|
28
27
|
export type ManagedUnitState = {
|
|
29
28
|
state: "live";
|
|
30
29
|
socket?: string | undefined;
|
|
@@ -35,26 +34,14 @@ export type ManagedUnitState = {
|
|
|
35
34
|
state: "unknown";
|
|
36
35
|
};
|
|
37
36
|
export declare function readSystemctlUnits(profileDir: string): ManagedUnitState;
|
|
38
|
-
/**
|
|
39
|
-
|
|
40
|
-
* - a marker file EXISTS (valid or not): never spawn. Wait for the marker's
|
|
41
|
-
* declared socket (bounded) and broker_unavailable on timeout; a marker
|
|
42
|
-
* with no socket never reopens spawning.
|
|
43
|
-
* - no marker: a live managed unit defers (wait, no spawn); systemctl
|
|
44
|
-
* failure ("unknown") and "no unit" both may spawn on demand. */
|
|
45
|
-
export type BrokerLaunchDecision = {
|
|
46
|
-
kind: "spawn";
|
|
47
|
-
} | {
|
|
48
|
-
kind: "wait";
|
|
37
|
+
/** Resolve and verify the service's endpoint, even when its socket is down. */
|
|
38
|
+
export declare function brokerConnectionTarget(profileDir: string, path: string, options?: BrokerConnectOptions): Promise<{
|
|
49
39
|
socket: string;
|
|
50
|
-
}
|
|
51
|
-
export declare function brokerLaunchDecision(profileDir: string, path: string, options?: BrokerConnectOptions): Promise<BrokerLaunchDecision>;
|
|
40
|
+
}>;
|
|
52
41
|
export interface BrokerConnectOptions {
|
|
53
42
|
accountId?: string | undefined;
|
|
54
|
-
agentSessionToken?: string | undefined;
|
|
55
43
|
}
|
|
56
|
-
export declare function
|
|
57
|
-
/**
|
|
58
|
-
|
|
59
|
-
export declare function ensureSharedMcp(path?: string): Promise<void>;
|
|
44
|
+
export declare function connectBroker(path: string, options?: BrokerConnectOptions): Promise<BrokerClient>;
|
|
45
|
+
/** Wait for the service's MCP listener without opening a wire session. */
|
|
46
|
+
export declare function ensureSharedMcp(path?: string, signal?: AbortSignal): Promise<void>;
|
|
60
47
|
//# sourceMappingURL=discovery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../src/bot/broker/discovery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../src/bot/broker/discovery.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAY9C,wBAAgB,mBAAmB,CAAC,UAAU,SAAsB,GAAG,MAAM,CAc5E;AAED,wBAAgB,gBAAgB,CAAC,UAAU,SAAsB,GAAG,MAAM,CAczE;AAED,wBAAgB,mBAAmB,CAAC,UAAU,SAAsB,GAAG,MAAM,CAS5E;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAGrD;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAKlE;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAgBzF;AAoCD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AA4CD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAQtF;AAUD,uEAAuE;AACvE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAE1F;AAED,2DAA2D;AAC3D,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,SAAS,iBAAiB,EAAE,EACnC,UAAU,EAAE,MAAM,GACjB,iBAAiB,GAAG,SAAS,CAE/B;AAED,oEAAoE;AACpE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAyB1E;AAED,kFAAkF;AAClF,wBAAgB,uBAAuB,CAAC,UAAU,SAAsB,GAAG,MAAM,GAAG,SAAS,CAG5F;AAED;;;0BAG0B;AAC1B,MAAM,MAAM,gBAAgB,GACxB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,IAAI,EAAE,iBAAiB,CAAA;CAAE,GACvE;IAAE,KAAK,EAAE,QAAQ,CAAA;CAAE,GACnB;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,CAAC;AAEzB,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAiCvE;AAmFD,+EAA+E;AAC/E,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAa7B;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,YAAY,CAAC,CAoBvB;AAED,0EAA0E;AAC1E,wBAAsB,eAAe,CACnC,IAAI,SAAwB,EAC5B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAQf"}
|