@trusty-squire/mcp 1.1.24 → 1.1.25-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +4 -2
  2. package/dist/bin.js +1 -2
  3. package/dist/bin.js.map +1 -1
  4. package/dist/bot/broker/account-binding.d.ts +2 -2
  5. package/dist/bot/broker/account-binding.d.ts.map +1 -1
  6. package/dist/bot/broker/account-binding.js +2 -2
  7. package/dist/bot/broker/account-binding.js.map +1 -1
  8. package/dist/bot/broker/daemon.d.ts.map +1 -1
  9. package/dist/bot/broker/daemon.js +198 -3
  10. package/dist/bot/broker/daemon.js.map +1 -1
  11. package/dist/bot/broker/discovery.d.ts +12 -25
  12. package/dist/bot/broker/discovery.d.ts.map +1 -1
  13. package/dist/bot/broker/discovery.js +100 -191
  14. package/dist/bot/broker/discovery.js.map +1 -1
  15. package/dist/bot/broker/forwarder.d.ts.map +1 -1
  16. package/dist/bot/broker/forwarder.js +3 -8
  17. package/dist/bot/broker/forwarder.js.map +1 -1
  18. package/dist/bot/broker/managed-marker.d.ts +5 -6
  19. package/dist/bot/broker/managed-marker.d.ts.map +1 -1
  20. package/dist/bot/broker/managed-marker.js +36 -30
  21. package/dist/bot/broker/managed-marker.js.map +1 -1
  22. package/dist/bot/broker/transport.d.ts +0 -6
  23. package/dist/bot/broker/transport.d.ts.map +1 -1
  24. package/dist/bot/broker/transport.js +1 -58
  25. package/dist/bot/broker/transport.js.map +1 -1
  26. package/dist/bot/google-login.d.ts.map +1 -1
  27. package/dist/bot/google-login.js +4 -7
  28. package/dist/bot/google-login.js.map +1 -1
  29. package/dist/browser-busy.js +2 -2
  30. package/dist/browser-busy.js.map +1 -1
  31. package/dist/install/broker-service.d.ts +14 -0
  32. package/dist/install/broker-service.d.ts.map +1 -0
  33. package/dist/install/broker-service.js +279 -0
  34. package/dist/install/broker-service.js.map +1 -0
  35. package/dist/install/cli.d.ts.map +1 -1
  36. package/dist/install/cli.js +6 -29
  37. package/dist/install/cli.js.map +1 -1
  38. package/dist/install/version-check.js +3 -3
  39. package/dist/install/version-check.js.map +1 -1
  40. package/dist/relay.d.ts.map +1 -1
  41. package/dist/relay.js +35 -10
  42. package/dist/relay.js.map +1 -1
  43. 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 so a detached broker child cannot keep
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":"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"}
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; reclaim reads it to prove a resident broker is OURS before
4
- * signalling it. One path, one shape, one owner. */
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;;;oDAGoD;AACpD,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"}
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; reclaim reads it to prove a resident broker is OURS before
6
- * signalling it. One path, one shape, one owner. */
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;;;oDAGoD;AACpD,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"}
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"}
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../../src/bot/broker/daemon.ts"],"names":[],"mappings":"AAuBA;;;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;;;;2CAI2C;AAC3C,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,OAAO,EACtB,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB,OAAO,CAKT;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAmIrD"}
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;;;;2CAI2C;AAC3C,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAK/F;AA6LD,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.
@@ -83,6 +87,181 @@ export function brokerMayStartForMarker(markerPresent, env) {
83
87
  const startedByUnit = (env.INVOCATION_ID ?? "").trim().length > 0 || env.TRUSTY_SQUIRE_BROKER_UNIT === "1";
84
88
  return startedByUnit;
85
89
  }
90
+ const TAKEOVER_WAIT_MS = 10_000;
91
+ function startedByBrokerService(env) {
92
+ return (env.INVOCATION_ID ?? "").trim().length > 0 || env.TRUSTY_SQUIRE_BROKER_UNIT === "1";
93
+ }
94
+ /** lsof's `l` field must report the SQLite write lock, not merely an open fd. */
95
+ function lockedBrokerPid(profileDir) {
96
+ const uid = process.getuid?.();
97
+ if (uid === undefined)
98
+ return null;
99
+ let output;
100
+ try {
101
+ output = execFileSync("lsof", ["-w", "-a", "-Fpl", "-u", String(uid), "--", profileOperationLockPath(profileDir)], { encoding: "utf8", timeout: 3_000, stdio: ["ignore", "pipe", "ignore"] });
102
+ }
103
+ catch {
104
+ return null;
105
+ }
106
+ let pid = 0;
107
+ const holders = new Set();
108
+ for (const line of output.split("\n")) {
109
+ if (line.startsWith("p"))
110
+ pid = Number(line.slice(1));
111
+ if (line.startsWith("l") && /[wW]/.test(line.slice(1)) && Number.isSafeInteger(pid) && pid > 0)
112
+ holders.add(pid);
113
+ }
114
+ return holders.size === 1 ? [...holders][0] : null;
115
+ }
116
+ function brokerCommandMatches(pid) {
117
+ try {
118
+ const command = process.platform === "linux"
119
+ ? readFileSync(`/proc/${pid}/cmdline`, "utf8").split("\0").join(" ")
120
+ : execFileSync("ps", ["-ww", "-p", String(pid), "-o", "command="], {
121
+ encoding: "utf8",
122
+ timeout: 3_000,
123
+ });
124
+ return (/(?:^|\s)(?:broker|--squire-broker)(?:\s|$)/.test(command) ||
125
+ /broker[^\s]*daemon\.(?:ts|js)(?:\s|$)/.test(command));
126
+ }
127
+ catch {
128
+ return false;
129
+ }
130
+ }
131
+ function brokerServesProfile(pid, profileDir) {
132
+ if (process.platform !== "linux")
133
+ return true; // Socket ownership is the profile proof on macOS.
134
+ try {
135
+ const entries = readFileSync(`/proc/${pid}/environ`, "utf8").split("\0");
136
+ const value = (key) => entries.find((entry) => entry.startsWith(`${key}=`))?.slice(key.length + 1);
137
+ const home = value("HOME") || homedir();
138
+ const claimedProfile = value("TRUSTY_SQUIRE_PROFILE_DIR") || join(home, ".trusty-squire", "chrome-profile");
139
+ return profilePathIdentity(claimedProfile) === profilePathIdentity(profileDir);
140
+ }
141
+ catch {
142
+ return false;
143
+ }
144
+ }
145
+ function socketBrokerPid(socket) {
146
+ let output;
147
+ try {
148
+ output = execFileSync("lsof", ["-w", "-a", "-t", "-U", "--", socket], {
149
+ encoding: "utf8",
150
+ timeout: 3_000,
151
+ stdio: ["ignore", "pipe", "ignore"],
152
+ });
153
+ }
154
+ catch {
155
+ return null;
156
+ }
157
+ const pids = [
158
+ ...new Set(output
159
+ .trim()
160
+ .split(/\s+/)
161
+ .map(Number)
162
+ .filter((pid) => Number.isSafeInteger(pid) && pid > 0 && pid !== process.pid)),
163
+ ];
164
+ return pids.length === 1 ? pids[0] : null;
165
+ }
166
+ function chromeCommandMatches(pid, profileDir) {
167
+ if (process.platform === "linux")
168
+ return profileProcessIdentity(pid, profileDir) !== null;
169
+ try {
170
+ const command = execFileSync("ps", ["-ww", "-p", String(pid), "-o", "command="], {
171
+ encoding: "utf8",
172
+ timeout: 3_000,
173
+ });
174
+ const profile = profilePathIdentity(profileDir);
175
+ return ([
176
+ `--user-data-dir=${profile}`,
177
+ `--user-data-dir="${profile}"`,
178
+ `--user-data-dir='${profile}'`,
179
+ ].some((argument) => {
180
+ const offset = command.indexOf(argument);
181
+ return (offset >= 0 &&
182
+ (offset === 0 || /\s/.test(command[offset - 1])) &&
183
+ (offset + argument.length === command.length ||
184
+ /\s/.test(command[offset + argument.length])));
185
+ }) && /(?:Chrome|Chromium|chrome|chromium)/.test(command));
186
+ }
187
+ catch {
188
+ return false;
189
+ }
190
+ }
191
+ async function waitUntil(released) {
192
+ const deadline = Date.now() + TAKEOVER_WAIT_MS;
193
+ while (Date.now() < deadline) {
194
+ if (released())
195
+ return true;
196
+ await new Promise((resolve) => setTimeout(resolve, 100));
197
+ }
198
+ return released();
199
+ }
200
+ async function takeOverOldBroker(profileDir) {
201
+ const pid = lockedBrokerPid(profileDir);
202
+ if (pid === null ||
203
+ pid === process.pid ||
204
+ !brokerCommandMatches(pid) ||
205
+ !brokerServesProfile(pid, profileDir))
206
+ throw new ProfileBusyError("Could not identify the broker holding this profile lock");
207
+ const identity = processBirthIdentity(pid);
208
+ if (identity === null || lockedBrokerPid(profileDir) !== pid) {
209
+ throw new ProfileBusyError("Broker profile lock holder changed during takeover");
210
+ }
211
+ process.kill(pid, "SIGTERM");
212
+ const released = () => lockedBrokerPid(profileDir) !== pid;
213
+ if (await waitUntil(released))
214
+ return;
215
+ if (processBirthIdentityState(identity) === "matching" && lockedBrokerPid(profileDir) === pid)
216
+ process.kill(pid, "SIGKILL");
217
+ if (!(await waitUntil(released)))
218
+ throw new ProfileBusyError("Old broker did not release the profile lock");
219
+ }
220
+ async function takeOverSocketBroker(profileDir, socket) {
221
+ const pid = socketBrokerPid(socket);
222
+ if (pid === null)
223
+ return;
224
+ if (!brokerCommandMatches(pid) || !brokerServesProfile(pid, profileDir))
225
+ throw new ProfileBusyError("Profile socket is held by an unidentified process");
226
+ const identity = processBirthIdentity(pid);
227
+ if (identity === null || socketBrokerPid(socket) !== pid)
228
+ throw new ProfileBusyError("Broker socket holder changed during takeover");
229
+ process.kill(pid, "SIGTERM");
230
+ const released = () => socketBrokerPid(socket) !== pid;
231
+ if (await waitUntil(released))
232
+ return;
233
+ if (processBirthIdentityState(identity) === "matching" && socketBrokerPid(socket) === pid)
234
+ process.kill(pid, "SIGKILL");
235
+ if (!(await waitUntil(released)))
236
+ throw new ProfileBusyError("Old broker did not release its profile socket");
237
+ }
238
+ /** A dead broker can leave Chrome alive without holding the SQLite lock. */
239
+ async function takeOverOldChrome(profileDir) {
240
+ const holder = readLockHolder(profileDir);
241
+ if (holder === null || holder.host !== hostname() || holder.stale)
242
+ return;
243
+ const identity = processBirthIdentity(holder.pid);
244
+ if (identity === null)
245
+ throw new ProfileBusyError("Cannot identify the old Chrome process");
246
+ if (!chromeCommandMatches(holder.pid, profileDir))
247
+ throw new ProfileBusyError("Profile lock does not identify Chrome for this profile");
248
+ const stillOwned = () => {
249
+ const current = readLockHolder(profileDir);
250
+ return (current?.host === hostname() &&
251
+ current.pid === holder.pid &&
252
+ !current.stale &&
253
+ processBirthIdentityState(identity) === "matching");
254
+ };
255
+ if (!stillOwned())
256
+ return;
257
+ process.kill(holder.pid, "SIGINT"); // Chrome flushes profile state on SIGINT.
258
+ if (await waitUntil(() => !stillOwned()))
259
+ return;
260
+ if (stillOwned())
261
+ process.kill(holder.pid, "SIGKILL");
262
+ if (!(await waitUntil(() => !stillOwned())))
263
+ throw new ProfileBusyError("Old Chrome did not release this profile");
264
+ }
86
265
  export async function runBrokerDaemon() {
87
266
  // A managed-broker marker means a systemd unit owns this profile. Refuse
88
267
  // before touching the socket, the profile lock, or Chrome when this process
@@ -111,11 +290,27 @@ export async function runBrokerDaemon() {
111
290
  .digest("hex");
112
291
  // The fd is the broker's sole profile authority. A crash releases it in the
113
292
  // kernel; the remaining inode carries no owner record.
114
- const profileElection = acquireProfileOperationGuard(CHROME_PROFILE_DIR);
293
+ let profileElection;
294
+ try {
295
+ profileElection = acquireProfileOperationGuard(CHROME_PROFILE_DIR);
296
+ }
297
+ catch (error) {
298
+ if (!(error instanceof ProfileBusyError) || !startedByBrokerService(process.env))
299
+ throw error;
300
+ await takeOverOldBroker(CHROME_PROFILE_DIR);
301
+ profileElection = acquireProfileOperationGuard(CHROME_PROFILE_DIR);
302
+ }
303
+ if (startedByBrokerService(process.env)) {
304
+ await takeOverSocketBroker(CHROME_PROFILE_DIR, path);
305
+ await takeOverSocketBroker(CHROME_PROFILE_DIR, sharedMcpSocketPath());
306
+ }
115
307
  await stopBrowserScope(CHROME_PROFILE_DIR);
308
+ if (startedByBrokerService(process.env))
309
+ await takeOverOldChrome(CHROME_PROFILE_DIR);
116
310
  // One-time upgrade cleanup. Old file leases are not consulted by this broker.
117
311
  await rm(join(dirname(profilePathIdentity(CHROME_PROFILE_DIR)), ".trusty-squire-broker-leases"), {
118
- recursive: true, force: true,
312
+ recursive: true,
313
+ force: true,
119
314
  });
120
315
  const runtime = new BrokerRuntime();
121
316
  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":"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"}
@@ -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
- /** True when discovery must wait for this unit instead of launching on demand. */
16
- export declare function unitDefersOnDemandLaunch(unit: ManagedBrokerUnit, profileDir: string): boolean;
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 that mistakes that for "no unit" spawns a competitor (the bug this
27
- * module exists to prevent). The spawn gate evaluates it marker-aware. */
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
- /** The spawn gate, marker-aware. Decides what a client may do when the target
39
- * broker is not reachable:
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 connectOrLaunchBroker(path: string, options?: BrokerConnectOptions): Promise<BrokerClient>;
57
- /** Start the elected broker if needed, then wait for its shared MCP socket.
58
- * Does not open a wire session — a probe connection would start last-close grace. */
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":"AAgBA,OAAO,EAAE,YAAY,EAA0B,MAAM,gBAAgB,CAAC;AAatE,wBAAgB,mBAAmB,CAAC,UAAU,SAAsB,GAAG,MAAM,CAU5E;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,CAGlE;AAKD,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAYnE;AAmDD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,UAAU,CAEzF;AAED,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;AA6CD,kFAAkF;AAClF,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAE7F;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,wBAAgB,uBAAuB,CAAC,UAAU,SAAsB,GAAG,OAAO,CAEjF;AAED,kFAAkF;AAClF,wBAAgB,uBAAuB,CAAC,UAAU,SAAsB,GAAG,MAAM,GAAG,SAAS,CAG5F;AAED;;;0EAG0E;AAC1E,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,CAyBvE;AA8ED;;;;;;qEAMqE;AACrE,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAErC,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,oBAAoB,CAAC,CAsB/B;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACxC;AAyBD,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,YAAY,CAAC,CAoBnH;AAED;qFACqF;AACrF,wBAAsB,eAAe,CAAC,IAAI,SAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBjF"}
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"}