@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.
- package/dist/bot/broker/daemon.d.ts +6 -0
- package/dist/bot/broker/daemon.d.ts.map +1 -1
- package/dist/bot/broker/daemon.js +24 -1
- package/dist/bot/broker/daemon.js.map +1 -1
- package/dist/bot/broker/discovery.d.ts +28 -0
- package/dist/bot/broker/discovery.d.ts.map +1 -1
- package/dist/bot/broker/discovery.js +124 -22
- package/dist/bot/broker/discovery.js.map +1 -1
- package/dist/bot/broker/managed-marker.d.ts +38 -0
- package/dist/bot/broker/managed-marker.d.ts.map +1 -0
- package/dist/bot/broker/managed-marker.js +130 -0
- package/dist/bot/broker/managed-marker.js.map +1 -0
- package/dist/bot/broker/mcp-socket-path.js +3 -3
- package/dist/bot/broker/mcp-socket-path.js.map +1 -1
- package/dist/bot/profile-path.d.ts +23 -0
- package/dist/bot/profile-path.d.ts.map +1 -1
- package/dist/bot/profile-path.js +64 -1
- package/dist/bot/profile-path.js.map +1 -1
- package/dist/bot/profile.d.ts +6 -3
- package/dist/bot/profile.d.ts.map +1 -1
- package/dist/bot/profile.js +14 -6
- package/dist/bot/profile.js.map +1 -1
- package/package.json +1 -1
|
@@ -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":"
|
|
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":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,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,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,gDAAgD,EAAE,MAAM,eAAe,CAAC;AACjF,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,EACnB,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;
|
|
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":"
|
|
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
|
-
|
|
18
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
231
|
+
const unit = readSystemctlUnits(profileDir);
|
|
232
|
+
return unit.state === "live" ? unit.socket : undefined;
|
|
214
233
|
}
|
|
215
|
-
function
|
|
234
|
+
export function readSystemctlUnits(profileDir) {
|
|
216
235
|
if (process.platform !== "linux")
|
|
217
|
-
return
|
|
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
|
-
|
|
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
|
|
260
|
+
return { state: "unknown" };
|
|
234
261
|
}
|
|
235
262
|
}
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
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(
|
|
370
|
+
return await BrokerClient.connect(target);
|
|
275
371
|
}
|
|
276
372
|
catch (error) {
|
|
277
|
-
if (!isUnavailable(error) && !(await reclaimLegacyBroker(
|
|
373
|
+
if (!isUnavailable(error) && !(await reclaimLegacyBroker(target, options, error)))
|
|
278
374
|
throw error;
|
|
279
375
|
}
|
|
280
|
-
const failure =
|
|
376
|
+
const failure = decision.kind === "spawn" ? launchBrokerDaemon(path) : undefined;
|
|
281
377
|
try {
|
|
282
|
-
return await waitForBroker(
|
|
378
|
+
return await waitForBroker(target, failure);
|
|
283
379
|
}
|
|
284
380
|
catch (error) {
|
|
285
381
|
if (error instanceof ProfileBusyError)
|
|
286
|
-
return await waitForBroker(
|
|
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
|
|
296
|
-
|
|
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,
|
|
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 =
|
|
8
|
-
const canonical =
|
|
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,
|
|
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"}
|
package/dist/bot/profile-path.js
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"profile-path.js","sourceRoot":"","sources":["../../src/bot/profile-path.ts"],"names":[],"mappings":"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"}
|
package/dist/bot/profile.d.ts
CHANGED
|
@@ -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":"AAeA,OAAO,
|
|
1
|
+
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/bot/profile.ts"],"names":[],"mappings":"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"}
|
package/dist/bot/profile.js
CHANGED
|
@@ -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
|
-
|
|
346
|
-
|
|
347
|
-
|
|
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
|
package/dist/bot/profile.js.map
CHANGED
|
@@ -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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"}
|