@trusty-squire/mcp 1.1.23 → 1.1.24

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.
@@ -26,5 +26,11 @@ export declare function retryableBrokerShutdown(cleanup: () => Promise<boolean>)
26
26
  * have yet. Account identity arrives with the individual calls that act as an
27
27
  * account, so a bare broker serves the ceremony and the operator alike.
28
28
  */
29
+ /** A broker may start when (a) no managed marker exists, or (b) it was started
30
+ * by the unit that owns the marker (INVOCATION_ID is set by systemd for every
31
+ * unit process; the unit additionally sets TRUSTY_SQUIRE_BROKER_UNIT=1 as an
32
+ * explicit, scrubbed-away-proof flag). Older or foreign clients that exec the
33
+ * new bin have neither and fail closed. */
34
+ export declare function brokerMayStartForMarker(markerPresent: boolean, env: NodeJS.ProcessEnv): boolean;
29
35
  export declare function runBrokerDaemon(): Promise<void>;
30
36
  //# sourceMappingURL=daemon.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../../src/bot/broker/daemon.ts"],"names":[],"mappings":"AAqBA;;;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,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAqHrD"}
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"}
@@ -4,7 +4,7 @@ import { dirname, join } from "node:path";
4
4
  import { createHash } from "node:crypto";
5
5
  import { createSessionGuard, setServingAccountId } from "../../session-guard.js";
6
6
  import { setSelfManagedChromeTerminationSignalExitEnabled } from "../browser.js";
7
- import { acquireProfileOperationGuard, profilePathIdentity, CHROME_PROFILE_DIR, readLockHolder, } from "../profile.js";
7
+ import { acquireProfileOperationGuard, ensureProfileDeviceAnchor, profilePathIdentity, CHROME_PROFILE_DIR, readLockHolder, } from "../profile.js";
8
8
  import { brokerBusyStatus } from "./status.js";
9
9
  import { installBrokerBrowserCustody } from "./custody.js";
10
10
  import { BrokerRuntime } from "./runtime.js";
@@ -13,6 +13,7 @@ import { OperatorBroker } from "./operator.js";
13
13
  import { BrokerRefusal } from "./refusal.js";
14
14
  import { listenBroker } from "./transport.js";
15
15
  import { listenSharedMcp } from "./mcp-socket.js";
16
+ import { readBrokerUnitMarkerSync } from "./managed-marker.js";
16
17
  /**
17
18
  * Wire connections that hold a claim on the browser. Status probes are reads
18
19
  * and do not count as active clients when explicit shutdown checks drain.
@@ -71,7 +72,29 @@ export function retryableBrokerShutdown(cleanup) {
71
72
  * have yet. Account identity arrives with the individual calls that act as an
72
73
  * account, so a bare broker serves the ceremony and the operator alike.
73
74
  */
75
+ /** A broker may start when (a) no managed marker exists, or (b) it was started
76
+ * by the unit that owns the marker (INVOCATION_ID is set by systemd for every
77
+ * unit process; the unit additionally sets TRUSTY_SQUIRE_BROKER_UNIT=1 as an
78
+ * explicit, scrubbed-away-proof flag). Older or foreign clients that exec the
79
+ * new bin have neither and fail closed. */
80
+ export function brokerMayStartForMarker(markerPresent, env) {
81
+ if (!markerPresent)
82
+ return true;
83
+ const startedByUnit = (env.INVOCATION_ID ?? "").trim().length > 0 || env.TRUSTY_SQUIRE_BROKER_UNIT === "1";
84
+ return startedByUnit;
85
+ }
74
86
  export async function runBrokerDaemon() {
87
+ // A managed-broker marker means a systemd unit owns this profile. Refuse
88
+ // before touching the socket, the profile lock, or Chrome when this process
89
+ // was not started by that unit.
90
+ const managedMarkerRead = readBrokerUnitMarkerSync(CHROME_PROFILE_DIR);
91
+ if (managedMarkerRead.kind !== "absent" && !brokerMayStartForMarker(true, process.env)) {
92
+ throw new BrokerRefusal("broker_unavailable", "A managed broker unit owns this profile; refusing to start a foreign broker");
93
+ }
94
+ // Provision the profile's private parent before anything derives the
95
+ // device identity, so the daemon's socket and lock names are stable from
96
+ // the very first start on a fresh machine.
97
+ ensureProfileDeviceAnchor(CHROME_PROFILE_DIR);
75
98
  const path = resolveBrokerSocket();
76
99
  const parent = await lstat(dirname(path));
77
100
  if (!parent.isDirectory() || (parent.mode & 0o077) !== 0 || parent.uid !== process.getuid?.()) {
@@ -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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"}
@@ -21,6 +21,34 @@ export declare function parseManagedBrokerShow(stdout: string): ManagedBrokerUni
21
21
  export declare function managedBrokerUnitIsLive(profileDir?: string): boolean;
22
22
  /** The socket a live managed broker unit for this profile was configured with. */
23
23
  export declare function managedBrokerUnitSocket(profileDir?: string): string | undefined;
24
+ /** systemctl answer for this profile. A failure is deliberately "unknown",
25
+ * 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. */
28
+ export type ManagedUnitState = {
29
+ state: "live";
30
+ socket?: string | undefined;
31
+ unit: ManagedBrokerUnit;
32
+ } | {
33
+ state: "absent";
34
+ } | {
35
+ state: "unknown";
36
+ };
37
+ 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";
49
+ socket: string;
50
+ };
51
+ export declare function brokerLaunchDecision(profileDir: string, path: string, options?: BrokerConnectOptions): Promise<BrokerLaunchDecision>;
24
52
  export interface BrokerConnectOptions {
25
53
  accountId?: string | undefined;
26
54
  agentSessionToken?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../src/bot/broker/discovery.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAA0B,MAAM,gBAAgB,CAAC;AAQtE,wBAAgB,mBAAmB,CAAC,UAAU,SAAsB,GAAG,MAAM,CAG5E;AAED,wBAAgB,gBAAgB,CAAC,UAAU,SAAsB,GAAG,MAAM,CASzE;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;AAyCD,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,CAE5F;AA6BD,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,CAWnH;AAED;qFACqF;AACrF,wBAAsB,eAAe,CAAC,IAAI,SAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAejF"}
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"}
@@ -6,21 +6,35 @@ import { dirname, join } from "node:path";
6
6
  import { fileURLToPath } from "node:url";
7
7
  import { mkdirSync } from "node:fs";
8
8
  import { homedir } from "node:os";
9
- import { currentProfileDir, ProfileBusyError, profilePathIdentity } from "../profile.js";
9
+ import { currentProfileDir, ensureProfileDeviceAnchor, ProfileBusyError, profileDeviceAnchor, profileDeviceIdentity, profilePathIdentity, } from "../profile.js";
10
10
  import { BrokerClient, brokerSpeaksLegacyWire } from "./transport.js";
11
11
  import { readBrokerAccountBinding } from "./account-binding.js";
12
12
  import { BrokerRefusal } from "./refusal.js";
13
13
  import { sharedMcpSocketPath } from "./mcp-socket-path.js";
14
+ import { readBrokerUnitMarkerAsync, readBrokerUnitMarkerSync, } from "./managed-marker.js";
14
15
  const BROKER_CONNECT_TIMEOUT_MS = 10_000;
15
16
  const BROKER_CONNECT_POLL_MS = 100;
16
17
  export function defaultBrokerSocket(profileDir = currentProfileDir()) {
17
- const key = createHash("sha256").update(profilePathIdentity(profileDir)).digest("hex").slice(0, 32);
18
- return join("/tmp", `trusty-squire-broker-${process.getuid?.() ?? "local"}-${key}`, "broker.sock");
18
+ // Socket names derive from the profile DEVICE identity (parent dev/ino plus
19
+ // the profile directory name), never the path string: two paths to one
20
+ // physical profile yield one endpoint, and a replaced profile directory
21
+ // keeps the same endpoint.
22
+ const identity = createHash("sha256")
23
+ .update(profileDeviceIdentity(profileDir))
24
+ .digest("hex")
25
+ .slice(0, 32);
26
+ return join("/tmp", `trusty-squire-broker-${process.getuid?.() ?? "local"}-${identity}`, "broker.sock");
19
27
  }
20
28
  export function brokerSocketPath(profileDir = currentProfileDir()) {
21
29
  const configured = process.env.TRUSTY_SQUIRE_BROKER_SOCKET?.trim();
22
30
  if (configured)
23
31
  return configured;
32
+ // A managed-broker marker is authoritative: the unit's declared socket wins
33
+ // even over a live own-path socket, so a stray on-demand broker is never
34
+ // joined while the unit owns the profile.
35
+ const marker = readBrokerUnitMarkerSync(profileDir);
36
+ if (marker.kind === "valid")
37
+ return marker.marker.socket;
24
38
  const fallback = defaultBrokerSocket(profileDir);
25
39
  // A broker run as a systemd user unit (Beeline's trusty-squire-broker.service)
26
40
  // may listen on its own configured socket. A caller without that env, such as
@@ -157,8 +171,12 @@ function unitProfileDir(unit) {
157
171
  : join(homedir(), ".trusty-squire", "chrome-profile");
158
172
  }
159
173
  function unitServesProfile(unit, profileDir) {
174
+ // Compare the DEVICE identity (parent dev/ino plus name), never the path
175
+ // string: a client that reaches the profile through an alias must still
176
+ // recognise the live unit, or it would spawn a competitor it cannot win
177
+ // against and end in broker_unavailable.
160
178
  return isBrokerUnit(unit) &&
161
- profilePathIdentity(unitProfileDir(unit)) === profilePathIdentity(profileDir);
179
+ profileDeviceIdentity(unitProfileDir(unit)) === profileDeviceIdentity(profileDir);
162
180
  }
163
181
  function unitIsLive(unit) {
164
182
  return unit.activeState === "active" ||
@@ -206,15 +224,16 @@ export function parseManagedBrokerShow(stdout) {
206
224
  return units;
207
225
  }
208
226
  export function managedBrokerUnitIsLive(profileDir = currentProfileDir()) {
209
- return liveManagedBrokerUnit(profileDir) !== undefined;
227
+ return readSystemctlUnits(profileDir).state === "live";
210
228
  }
211
229
  /** The socket a live managed broker unit for this profile was configured with. */
212
230
  export function managedBrokerUnitSocket(profileDir = currentProfileDir()) {
213
- return liveManagedBrokerUnit(profileDir)?.environment.TRUSTY_SQUIRE_BROKER_SOCKET?.trim() || undefined;
231
+ const unit = readSystemctlUnits(profileDir);
232
+ return unit.state === "live" ? unit.socket : undefined;
214
233
  }
215
- function liveManagedBrokerUnit(profileDir) {
234
+ export function readSystemctlUnits(profileDir) {
216
235
  if (process.platform !== "linux")
217
- return undefined;
236
+ return { state: "absent" };
218
237
  try {
219
238
  const stdout = execFileSync("systemctl", [
220
239
  "--user",
@@ -227,17 +246,85 @@ function liveManagedBrokerUnit(profileDir) {
227
246
  "-p", "Environment",
228
247
  "-p", "ExecStart",
229
248
  ], { encoding: "utf8", timeout: 2_000, stdio: ["ignore", "pipe", "ignore"] });
230
- return findLiveManagedBrokerUnit(parseManagedBrokerShow(stdout), profileDir);
249
+ const unit = findLiveManagedBrokerUnit(parseManagedBrokerShow(stdout), profileDir);
250
+ if (unit === undefined)
251
+ return { state: "absent" };
252
+ const socket = unit.environment.TRUSTY_SQUIRE_BROKER_SOCKET?.trim();
253
+ return {
254
+ state: "live",
255
+ socket: socket !== undefined && socket.length > 0 ? socket : undefined,
256
+ unit,
257
+ };
231
258
  }
232
259
  catch {
233
- return undefined;
260
+ return { state: "unknown" };
234
261
  }
235
262
  }
236
- function launchUnlessManaged(path) {
237
- // A systemd user unit that already owns this profile will reclaim the socket
238
- // itself. Launching a detached competitor wins the kernel lock and the unit
239
- // restart-loops (relay reconnect after #982).
240
- return managedBrokerUnitIsLive() ? undefined : launchBrokerDaemon(path);
263
+ /** Refuse to join a socket that declares a different physical profile
264
+ * (Required change 3): never join, never launch. The declared anchor is
265
+ * compared against the client's own derived device anchor. */
266
+ function assertJoinProfile(profileDir, declared, what) {
267
+ const anchor = profileDeviceAnchor(profileDir);
268
+ if (anchor === null ||
269
+ anchor.dev !== declared.dev ||
270
+ anchor.ino !== declared.ino ||
271
+ anchor.name !== declared.name) {
272
+ throw new BrokerRefusal("profile_mismatch", `Refusing to join the ${what}: it serves profile ${declared.name} (` +
273
+ `${declared.dev}:${declared.ino}), not this profile (${anchor === null ? "unknown" : `${anchor.dev}:${anchor.ino}:${anchor.name}`})`);
274
+ }
275
+ }
276
+ /** Refuse to join a socket bound to a DIFFERENT account. An unbound profile
277
+ * (declared `null`) is unclaimed, not foreign: the first account-acting
278
+ * acquire claims it (`runtime.ts` bindAccount), so refusing an enrolled client
279
+ * there would make a fresh unit or a --force-relogin profile unjoinable. Only
280
+ * a declared, different binding is a mismatch. */
281
+ async function assertJoinAccount(profileDir, declared, options, what) {
282
+ if (declared === null)
283
+ return;
284
+ const clientBinding = options.accountId ?? (await readBrokerAccountBinding(profilePathIdentity(profileDir)));
285
+ if (clientBinding !== declared) {
286
+ throw new BrokerRefusal("account_mismatch", `Refusing to join the ${what}: it is bound to account ` +
287
+ `${declared ?? "none"}, but this client acts for ` +
288
+ `${clientBinding ?? "none"}`);
289
+ }
290
+ }
291
+ /** The marker IS the declared identity; verify it before joining (Required
292
+ * change 3). */
293
+ async function verifyManagedBrokerJoin(profileDir, marker, options) {
294
+ assertJoinProfile(profileDir, marker.profile, "managed broker socket");
295
+ await assertJoinAccount(profileDir, marker.accountBinding, options, "managed broker socket");
296
+ }
297
+ /** A live managed unit's socket is not the client's own: verify its declared
298
+ * profile and the profile's account binding before joining (Required change 3).
299
+ * The unit declares no account itself, so the binding is the profile's own
300
+ * record, read through the unit's profile directory. */
301
+ async function verifyManagedBrokerUnitJoin(profileDir, unit, options) {
302
+ const unitProfile = unitProfileDir(unit);
303
+ assertJoinProfile(profileDir, profileDeviceAnchor(unitProfile) ?? { dev: -1, ino: -1, name: "" }, "managed broker unit");
304
+ await assertJoinAccount(profileDir, await readBrokerAccountBinding(profilePathIdentity(unitProfile)), options, "managed broker unit");
305
+ }
306
+ export async function brokerLaunchDecision(profileDir, path, options = {}) {
307
+ const markerRead = await readBrokerUnitMarkerAsync(profileDir);
308
+ if (markerRead.kind !== "absent") {
309
+ if (markerRead.kind === "valid") {
310
+ const target = markerRead.marker.socket;
311
+ if (target !== defaultBrokerSocket(profileDir)) {
312
+ await verifyManagedBrokerJoin(profileDir, markerRead.marker, options);
313
+ }
314
+ return { kind: "wait", socket: target };
315
+ }
316
+ // Present but invalid marker: fail closed, wait bounded, never spawn.
317
+ return { kind: "wait", socket: path };
318
+ }
319
+ const unit = readSystemctlUnits(profileDir);
320
+ if (unit.state === "live") {
321
+ // The unit's socket is not the client's own: verify the declared profile
322
+ // and account binding before waiting on it, so a foreign unit is refused
323
+ // (never joined, never launched).
324
+ await verifyManagedBrokerUnitJoin(profileDir, unit.unit, options);
325
+ return { kind: "wait", socket: unit.socket ?? path };
326
+ }
327
+ return { kind: "spawn" };
241
328
  }
242
329
  function launchBrokerDaemon(path) {
243
330
  // Launches may race. Each daemon claims the same kernel SQLite lock before it
@@ -270,20 +357,29 @@ function launchBrokerDaemon(path) {
270
357
  return () => failure;
271
358
  }
272
359
  export async function connectOrLaunchBroker(path, options = {}) {
360
+ // Provision the profile's private parent so the device identity used to
361
+ // derive the own socket is stable from the very first call.
362
+ const profileDir = currentProfileDir();
363
+ ensureProfileDeviceAnchor(profileDir);
364
+ // The spawn/join gate runs BEFORE any connect: it decides whether a client
365
+ // may launch at all (marker/unit/systemctl state) and refuses a foreign
366
+ // managed socket before it is joined.
367
+ const decision = await brokerLaunchDecision(profileDir, path, options);
368
+ const target = decision.kind === "wait" ? decision.socket : path;
273
369
  try {
274
- return await BrokerClient.connect(path);
370
+ return await BrokerClient.connect(target);
275
371
  }
276
372
  catch (error) {
277
- if (!isUnavailable(error) && !(await reclaimLegacyBroker(path, options, error)))
373
+ if (!isUnavailable(error) && !(await reclaimLegacyBroker(target, options, error)))
278
374
  throw error;
279
375
  }
280
- const failure = launchUnlessManaged(path);
376
+ const failure = decision.kind === "spawn" ? launchBrokerDaemon(path) : undefined;
281
377
  try {
282
- return await waitForBroker(path, failure);
378
+ return await waitForBroker(target, failure);
283
379
  }
284
380
  catch (error) {
285
381
  if (error instanceof ProfileBusyError)
286
- return await waitForBroker(path);
382
+ return await waitForBroker(target);
287
383
  throw error;
288
384
  }
289
385
  }
@@ -292,8 +388,14 @@ export async function connectOrLaunchBroker(path, options = {}) {
292
388
  export async function ensureSharedMcp(path = sharedMcpSocketPath()) {
293
389
  if (await liveUnixSocket(path))
294
390
  return;
295
- const wire = resolveBrokerSocket();
296
- const failure = (await liveUnixSocket(wire)) ? undefined : launchUnlessManaged(wire);
391
+ const profileDir = currentProfileDir();
392
+ ensureProfileDeviceAnchor(profileDir);
393
+ const wire = resolveBrokerSocket(profileDir);
394
+ const decision = await brokerLaunchDecision(profileDir, wire);
395
+ const target = decision.kind === "wait" ? decision.socket : wire;
396
+ const failure = decision.kind === "spawn" && !(await liveUnixSocket(target))
397
+ ? launchBrokerDaemon(target)
398
+ : undefined;
297
399
  const deadline = Date.now() + BROKER_CONNECT_TIMEOUT_MS;
298
400
  while (Date.now() < deadline) {
299
401
  const launchFailure = failure?.();
@@ -1 +1 @@
1
- {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../src/bot/broker/discovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../src/bot/broker/discovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { type ProfileDeviceAnchor } from "../profile-path.js";
2
+ export declare const BROKER_UNIT_MARKER_FILE = ".trusty-squire-broker-unit.json";
3
+ /** The marker version the client side understands. Writers must use it. */
4
+ export declare const BROKER_UNIT_MARKER_VERSION = 1;
5
+ export interface ManagedBrokerMarker {
6
+ version: typeof BROKER_UNIT_MARKER_VERSION;
7
+ /** Broker wire socket the unit listens on. */
8
+ socket: string;
9
+ /** Device anchor of the physical profile the unit serves. */
10
+ profile: ProfileDeviceAnchor;
11
+ /** Account id the profile is bound to, or null when unenrolled. */
12
+ accountBinding: string | null;
13
+ }
14
+ /** Strict read outcome. `absent` is the ONLY value that permits on-demand
15
+ * launch; `invalid` (present but unreadable/unparseable, or socket-less after
16
+ * all) fails closed exactly like a valid marker. */
17
+ export type BrokerMarkerRead = {
18
+ kind: "absent";
19
+ } | {
20
+ kind: "invalid";
21
+ } | {
22
+ kind: "valid";
23
+ marker: ManagedBrokerMarker;
24
+ };
25
+ /** Marker path: the profile's canonical parent, BESIDE the profile directory,
26
+ * so a replaced profile dir (--force-relogin) does not destroy the marker. */
27
+ export declare function brokerUnitMarkerPath(profileDir: string): string;
28
+ /** Strict sync read for hot paths (brokerSocketPath). */
29
+ export declare function readBrokerUnitMarkerSync(profileDir: string): BrokerMarkerRead;
30
+ /** Strict async read for the launch gate. */
31
+ export declare function readBrokerUnitMarkerAsync(profileDir: string): Promise<BrokerMarkerRead>;
32
+ /** Write the marker. Used by the unit installer (Beeline-side) and by tests
33
+ * that must prove the client honors a conforming marker. */
34
+ export declare function writeBrokerUnitMarker(profileDir: string, marker: ManagedBrokerMarker): Promise<void>;
35
+ /** Remove the marker. Specified in the contract: the unit uninstaller MUST
36
+ * call this so a removed unit restores on-demand launch. */
37
+ export declare function removeBrokerUnitMarker(profileDir: string): Promise<void>;
38
+ //# sourceMappingURL=managed-marker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managed-marker.d.ts","sourceRoot":"","sources":["../../../src/bot/broker/managed-marker.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAuB,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEnF,eAAO,MAAM,uBAAuB,oCAAoC,CAAC;AACzE,2EAA2E;AAC3E,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,0BAA0B,CAAC;IAC3C,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,OAAO,EAAE,mBAAmB,CAAC;IAC7B,mEAAmE;IACnE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED;;oDAEoD;AACpD,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAEnD;8EAC8E;AAC9E,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAG/D;AAuED,yDAAyD;AACzD,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAE7E;AAED,6CAA6C;AAC7C,wBAAsB,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAE7F;AAED;4DAC4D;AAC5D,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAIf;AAED;4DAC4D;AAC5D,wBAAsB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM9E"}
@@ -0,0 +1,130 @@
1
+ // Managed-broker marker: the record a systemd unit installer leaves next to
2
+ // the profile so every client knows a managed broker owns it and must never
3
+ // spawn a competitor. The read side is strict and fail-closed: any marker file
4
+ // present blocks spawning, whether or not it parses.
5
+ //
6
+ // Contract (documented in docs/browser-broker.md):
7
+ // - The file lives NEXT TO the profile directory (its parent), never inside
8
+ // it, so a --force-relogin profile-directory replacement does not destroy
9
+ // it. Name: .trusty-squire-broker-unit.json
10
+ // - JSON shape (version 1):
11
+ // { "version": 1,
12
+ // "socket": "/abs/path/broker.sock",
13
+ // "profile": { "dev": <number>, "ino": <number>, "name": "chrome-profile" },
14
+ // "accountBinding": "<account id>" | null }
15
+ // `profile` is the same device anchor clients derive (parent dev/ino plus
16
+ // the profile directory name), so a client verifies "same physical
17
+ // profile" by comparing it against its own derived anchor.
18
+ // - The unit installer writes it after the unit starts and removes it on
19
+ // unit uninstall (removeBrokerUnitMarker below specifies that removal).
20
+ // While it exists, clients never spawn; they wait for `socket` (bounded)
21
+ // and return broker_unavailable on timeout. A marker with no socket never
22
+ // reopens spawning.
23
+ import { readFileSync } from "node:fs";
24
+ import { readFile, unlink, writeFile } from "node:fs/promises";
25
+ import { dirname, join } from "node:path";
26
+ import { profilePathIdentity } from "../profile-path.js";
27
+ export const BROKER_UNIT_MARKER_FILE = ".trusty-squire-broker-unit.json";
28
+ /** The marker version the client side understands. Writers must use it. */
29
+ export const BROKER_UNIT_MARKER_VERSION = 1;
30
+ /** Marker path: the profile's canonical parent, BESIDE the profile directory,
31
+ * so a replaced profile dir (--force-relogin) does not destroy the marker. */
32
+ export function brokerUnitMarkerPath(profileDir) {
33
+ const canonicalProfile = profilePathIdentity(profileDir);
34
+ return join(dirname(canonicalProfile), BROKER_UNIT_MARKER_FILE);
35
+ }
36
+ function isAnchor(value) {
37
+ if (value === null || typeof value !== "object")
38
+ return false;
39
+ const anchor = value;
40
+ return (typeof anchor.dev === "number" &&
41
+ Number.isSafeInteger(anchor.dev) &&
42
+ typeof anchor.ino === "number" &&
43
+ Number.isSafeInteger(anchor.ino) &&
44
+ typeof anchor.name === "string" &&
45
+ anchor.name.length > 0);
46
+ }
47
+ function parseMarker(text) {
48
+ let parsed;
49
+ try {
50
+ parsed = JSON.parse(text);
51
+ }
52
+ catch {
53
+ return null;
54
+ }
55
+ if (parsed === null || typeof parsed !== "object")
56
+ return null;
57
+ const marker = parsed;
58
+ if (marker.version !== BROKER_UNIT_MARKER_VERSION)
59
+ return null;
60
+ if (typeof marker.socket !== "string" || marker.socket.length === 0)
61
+ return null;
62
+ if (!isAnchor(marker.profile))
63
+ return null;
64
+ const binding = marker.accountBinding;
65
+ if (binding !== null && binding !== undefined && typeof binding !== "string")
66
+ return null;
67
+ if (binding !== null && binding.length === 0)
68
+ return null;
69
+ return {
70
+ version: BROKER_UNIT_MARKER_VERSION,
71
+ socket: marker.socket,
72
+ profile: marker.profile,
73
+ accountBinding: binding ?? null,
74
+ };
75
+ }
76
+ function isMissing(error) {
77
+ return error.code === "ENOENT";
78
+ }
79
+ function classify(read) {
80
+ if (read.kind === "absent")
81
+ return { kind: "absent" };
82
+ if (read.kind === "unreadable")
83
+ return { kind: "invalid" };
84
+ const marker = parseMarker(read.text);
85
+ return marker === null ? { kind: "invalid" } : { kind: "valid", marker };
86
+ }
87
+ function readMarkerFile(profileDir) {
88
+ try {
89
+ return { kind: "text", text: readFileSync(brokerUnitMarkerPath(profileDir), "utf8") };
90
+ }
91
+ catch (error) {
92
+ // ENOENT is the only "absent"; anything else (EACCES, EIO) fails closed.
93
+ return isMissing(error) ? { kind: "absent" } : { kind: "unreadable" };
94
+ }
95
+ }
96
+ async function readMarkerFileAsync(profileDir) {
97
+ try {
98
+ return { kind: "text", text: await readFile(brokerUnitMarkerPath(profileDir), "utf8") };
99
+ }
100
+ catch (error) {
101
+ return isMissing(error) ? { kind: "absent" } : { kind: "unreadable" };
102
+ }
103
+ }
104
+ /** Strict sync read for hot paths (brokerSocketPath). */
105
+ export function readBrokerUnitMarkerSync(profileDir) {
106
+ return classify(readMarkerFile(profileDir));
107
+ }
108
+ /** Strict async read for the launch gate. */
109
+ export async function readBrokerUnitMarkerAsync(profileDir) {
110
+ return classify(await readMarkerFileAsync(profileDir));
111
+ }
112
+ /** Write the marker. Used by the unit installer (Beeline-side) and by tests
113
+ * that must prove the client honors a conforming marker. */
114
+ export async function writeBrokerUnitMarker(profileDir, marker) {
115
+ await writeFile(brokerUnitMarkerPath(profileDir), JSON.stringify(marker, null, 2) + "\n", {
116
+ mode: 0o600,
117
+ });
118
+ }
119
+ /** Remove the marker. Specified in the contract: the unit uninstaller MUST
120
+ * call this so a removed unit restores on-demand launch. */
121
+ export async function removeBrokerUnitMarker(profileDir) {
122
+ try {
123
+ await unlink(brokerUnitMarkerPath(profileDir));
124
+ }
125
+ catch (error) {
126
+ if (!isMissing(error))
127
+ throw error;
128
+ }
129
+ }
130
+ //# sourceMappingURL=managed-marker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managed-marker.js","sourceRoot":"","sources":["../../../src/bot/broker/managed-marker.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { homedir } from "node:os";
3
3
  import { join } from "node:path";
4
- import { currentProfileDir, profilePathIdentity } from "../profile-path.js";
4
+ import { currentProfileDir, profileDeviceIdentity } from "../profile-path.js";
5
5
  export function sharedMcpSocketPath(home = homedir(), profileDir = currentProfileDir()) {
6
6
  const privateDir = join(home, ".trusty-squire");
7
- const profile = profilePathIdentity(profileDir);
8
- const canonical = profilePathIdentity(join(privateDir, "chrome-profile"));
7
+ const profile = profileDeviceIdentity(profileDir);
8
+ const canonical = profileDeviceIdentity(join(privateDir, "chrome-profile"));
9
9
  if (profile === canonical)
10
10
  return join(privateDir, "mcp.sock");
11
11
  const digest = createHash("sha256").update(profile).digest("hex").slice(0, 16);
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-socket-path.js","sourceRoot":"","sources":["../../../src/bot/broker/mcp-socket-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE5E,MAAM,UAAU,mBAAmB,CAAC,IAAI,GAAG,OAAO,EAAE,EAAE,UAAU,GAAG,iBAAiB,EAAE;IACpF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC1E,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/E,OAAO,IAAI,CAAC,UAAU,EAAE,OAAO,MAAM,OAAO,CAAC,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"mcp-socket-path.js","sourceRoot":"","sources":["../../../src/bot/broker/mcp-socket-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE9E,MAAM,UAAU,mBAAmB,CAAC,IAAI,GAAG,OAAO,EAAE,EAAE,UAAU,GAAG,iBAAiB,EAAE;IACpF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC5E,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/E,OAAO,IAAI,CAAC,UAAU,EAAE,OAAO,MAAM,OAAO,CAAC,CAAC;AAChD,CAAC"}
@@ -8,4 +8,27 @@ export declare const CHROME_PROFILE_DIR: string;
8
8
  export declare function currentProfileDir(): string;
9
9
  /** Resolve symlinked ancestors even when the profile directory does not exist yet. */
10
10
  export declare function profilePathIdentity(profileDir: string): string;
11
+ /** The dev/ino + name of the profile's membership anchor for locking and
12
+ * socket derivation. The anchor is the canonical parent directory plus the
13
+ * profile directory's own name, so a profile directory that is REPLACED on
14
+ * --force-relogin keeps one identity (its parent inode is untouched) and two
15
+ * paths to one physical profile (bind mount, symlink, HOME override) resolve
16
+ * to one anchor. The parent is created when missing, because the nearest
17
+ * existing ancestor MOVES once an intermediate directory is created and the
18
+ * identity must not drift between a first reader and a later one. Returns null
19
+ * when no ancestor can be stat'd at all. */
20
+ export interface ProfileDeviceAnchor {
21
+ dev: number;
22
+ ino: number;
23
+ name: string;
24
+ }
25
+ export declare function profileDeviceAnchor(profileDir: string): ProfileDeviceAnchor | null;
26
+ /** Create the parent of the canonical profile path if missing, so the device
27
+ * anchor (parent dev/ino + name) is stable from the very first call. */
28
+ export declare function ensureProfileDeviceAnchor(profileDir: string): void;
29
+ /** One stable identity per physical profile: parent dev/ino plus the profile
30
+ * directory's name. After --force-relogin replaces the profile directory this
31
+ * still matches the old identity; two aliases of one directory render the
32
+ * same identity. Falls back to the realpath string when no anchor exists. */
33
+ export declare function profileDeviceIdentity(profileDir: string): string;
11
34
  //# sourceMappingURL=profile-path.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"profile-path.d.ts","sourceRoot":"","sources":["../../src/bot/profile-path.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,kBAAkB,QAC+D,CAAC;AAE/F;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAG1C;AAED,sFAAsF;AACtF,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAc9D"}
1
+ {"version":3,"file":"profile-path.d.ts","sourceRoot":"","sources":["../../src/bot/profile-path.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,kBAAkB,QAC+D,CAAC;AAE/F;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAG1C;AAED,sFAAsF;AACtF,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAc9D;AAED;;;;;;;;4CAQ4C;AAC5C,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CA0ClF;AAED;wEACwE;AACxE,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAGlE;AAED;;;6EAG6E;AAC7E,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAKhE"}
@@ -1,4 +1,4 @@
1
- import { realpathSync } from "node:fs";
1
+ import { mkdirSync, realpathSync, statSync } from "node:fs";
2
2
  import { homedir } from "node:os";
3
3
  import { basename, dirname, join, resolve } from "node:path";
4
4
  export const CHROME_PROFILE_DIR = process.env.TRUSTY_SQUIRE_PROFILE_DIR ?? join(homedir(), ".trusty-squire", "chrome-profile");
@@ -30,4 +30,67 @@ export function profilePathIdentity(profileDir) {
30
30
  }
31
31
  }
32
32
  }
33
+ export function profileDeviceAnchor(profileDir) {
34
+ const absolute = resolve(profileDir);
35
+ // Make the canonical parent exist before reading its dev/ino. The nearest
36
+ // existing ancestor MOVES once an intermediate directory is created, so a
37
+ // caller that derives the identity before the profile's parent exists and a
38
+ // caller that derives it after would disagree — two endpoints for one
39
+ // profile. Best effort: a parent this process cannot create falls back to
40
+ // the nearest existing ancestor below.
41
+ try {
42
+ mkdirSync(dirname(profilePathIdentity(absolute)), { recursive: true, mode: 0o700 });
43
+ }
44
+ catch {
45
+ /* read-only or inaccessible parent: fall through to the nearest ancestor */
46
+ }
47
+ try {
48
+ // The anchor is the canonical PARENT's dev/ino plus the profile
49
+ // directory's own resolved name: symlinked aliases and bind-mounted paths
50
+ // collapse to one anchor, and a --force-relogin REPLACEMENT of the profile
51
+ // directory (a new inode at the same path) keeps this identity because the
52
+ // parent is untouched.
53
+ const resolvedProfile = realpathSync.native(absolute);
54
+ const parent = dirname(resolvedProfile);
55
+ const st = statSync(parent);
56
+ return { dev: st.dev, ino: st.ino, name: basename(resolvedProfile) };
57
+ }
58
+ catch {
59
+ // Neither the profile directory nor its newly canonical parent exists.
60
+ // Anchor on the nearest existing ancestor, keeping the missing suffix so a
61
+ // name still reads anchor → profile.
62
+ const suffix = [basename(absolute)];
63
+ let candidate = dirname(absolute);
64
+ for (;;) {
65
+ try {
66
+ const canonical = realpathSync.native(candidate);
67
+ const st = statSync(canonical);
68
+ return { dev: st.dev, ino: st.ino, name: suffix.reverse().join("/") };
69
+ }
70
+ catch {
71
+ const up = dirname(candidate);
72
+ if (up === candidate)
73
+ return null;
74
+ suffix.push(basename(candidate));
75
+ candidate = up;
76
+ }
77
+ }
78
+ }
79
+ }
80
+ /** Create the parent of the canonical profile path if missing, so the device
81
+ * anchor (parent dev/ino + name) is stable from the very first call. */
82
+ export function ensureProfileDeviceAnchor(profileDir) {
83
+ const parent = dirname(profilePathIdentity(profileDir));
84
+ mkdirSync(parent, { recursive: true, mode: 0o700 });
85
+ }
86
+ /** One stable identity per physical profile: parent dev/ino plus the profile
87
+ * directory's name. After --force-relogin replaces the profile directory this
88
+ * still matches the old identity; two aliases of one directory render the
89
+ * same identity. Falls back to the realpath string when no anchor exists. */
90
+ export function profileDeviceIdentity(profileDir) {
91
+ const anchor = profileDeviceAnchor(profileDir);
92
+ return anchor === null
93
+ ? `path:${profilePathIdentity(profileDir)}`
94
+ : `${anchor.dev}:${anchor.ino}:${anchor.name}`;
95
+ }
33
96
  //# sourceMappingURL=profile-path.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"profile-path.js","sourceRoot":"","sources":["../../src/bot/profile-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7D,MAAM,CAAC,MAAM,kBAAkB,GAC7B,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;AAE/F;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACxE,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC;AACjE,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,mBAAmB,CAAC,UAAkB;IACpD,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,SAAS,GAAG,QAAQ,CAAC;IACzB,SAAS,CAAC;QACR,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACnE,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YAClC,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,QAAQ,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;YACjC,SAAS,GAAG,MAAM,CAAC;QACrB,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"profile-path.js","sourceRoot":"","sources":["../../src/bot/profile-path.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
- import { CHROME_PROFILE_DIR, currentProfileDir, profilePathIdentity } from "./profile-path.js";
2
- export { CHROME_PROFILE_DIR, currentProfileDir, profilePathIdentity };
1
+ import { CHROME_PROFILE_DIR, currentProfileDir, ensureProfileDeviceAnchor, profileDeviceAnchor, profileDeviceIdentity, profilePathIdentity } from "./profile-path.js";
2
+ export { CHROME_PROFILE_DIR, currentProfileDir, ensureProfileDeviceAnchor, profileDeviceAnchor, profileDeviceIdentity, profilePathIdentity, };
3
+ export type { ProfileDeviceAnchor } from "./profile-path.js";
3
4
  export declare class ProfileBusyError extends Error {
4
5
  constructor(message: string);
5
6
  }
@@ -59,7 +60,9 @@ export declare function closeProfileWithProof(opts: {
59
60
  }): Promise<ProfileCloseState>;
60
61
  /** A stable SQLite file is only the lock's inode; it contains no owner record. It
61
62
  * must stay outside the profile directory because --force-relogin may replace
62
- * that directory while custody is held. */
63
+ * that directory while custody is held. Its NAME derives from the profile's
64
+ * device identity (parent dev/ino + profile name), so two paths to one physical
65
+ * profile share a lock and a replaced profile directory keeps the same lock. */
63
66
  export declare function profileOperationLockPath(profileDir: string): string;
64
67
  /** BEGIN EXCLUSIVE holds SQLite's OS byte-range lock on the open connection.
65
68
  * The kernel drops it on every exit path, including SIGKILL. The file itself
@@ -1 +1 @@
1
- {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/bot/profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/bot/profile.ts"],"names":[],"mappings":"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"}
@@ -12,8 +12,8 @@ import { createRequire } from "node:module";
12
12
  import { lstatSync, mkdirSync, readFileSync, readlinkSync, readdirSync } from "node:fs";
13
13
  import { hostname } from "node:os";
14
14
  import { dirname, join } from "node:path";
15
- import { CHROME_PROFILE_DIR, currentProfileDir, profilePathIdentity } from "./profile-path.js";
16
- export { CHROME_PROFILE_DIR, currentProfileDir, profilePathIdentity };
15
+ import { CHROME_PROFILE_DIR, currentProfileDir, ensureProfileDeviceAnchor, profileDeviceAnchor, profileDeviceIdentity, profilePathIdentity, } from "./profile-path.js";
16
+ export { CHROME_PROFILE_DIR, currentProfileDir, ensureProfileDeviceAnchor, profileDeviceAnchor, profileDeviceIdentity, profilePathIdentity, };
17
17
  // Chrome's SingletonLock is a symlink whose target is "<hostname>-<pid>".
18
18
  // It belongs to Chrome; Squire reads it for diagnostics and never unlinks it.
19
19
  // Thrown when the operation guard or Chrome's SingletonLock proves that a
@@ -340,11 +340,19 @@ const Database = require("better-sqlite3");
340
340
  const profileOperationContext = new AsyncLocalStorage();
341
341
  /** A stable SQLite file is only the lock's inode; it contains no owner record. It
342
342
  * must stay outside the profile directory because --force-relogin may replace
343
- * that directory while custody is held. */
343
+ * that directory while custody is held. Its NAME derives from the profile's
344
+ * device identity (parent dev/ino + profile name), so two paths to one physical
345
+ * profile share a lock and a replaced profile directory keeps the same lock. */
344
346
  export function profileOperationLockPath(profileDir) {
345
- const identity = profilePathIdentity(profileDir);
346
- const digest = createHash("sha256").update(identity).digest("hex").slice(0, 24);
347
- return join(dirname(identity), `.trusty-squire-profile-${digest}.lock.sqlite`);
347
+ // Provision the parent first so the device anchor is stable from the very
348
+ // first call (a fresh machine gets the same name as a machine in use).
349
+ ensureProfileDeviceAnchor(profileDir);
350
+ const parent = dirname(profilePathIdentity(profileDir));
351
+ const digest = createHash("sha256")
352
+ .update(profileDeviceIdentity(profileDir))
353
+ .digest("hex")
354
+ .slice(0, 24);
355
+ return join(parent, `.trusty-squire-profile-${digest}.lock.sqlite`);
348
356
  }
349
357
  /** BEGIN EXCLUSIVE holds SQLite's OS byte-range lock on the open connection.
350
358
  * The kernel drops it on every exit path, including SIGKILL. The file itself
@@ -1 +1 @@
1
- {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/bot/profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/bot/profile.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trusty-squire/mcp",
3
- "version": "1.1.23",
3
+ "version": "1.1.24",
4
4
  "license": "MIT",
5
5
  "mcpName": "ai.trustysquire/trusty-squire",
6
6
  "type": "module",