wicked-crew 0.7.34 → 0.7.36
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/api/chat-scope.d.ts +29 -1
- package/dist/api/chat-scope.d.ts.map +1 -1
- package/dist/api/chat-scope.js +67 -12
- package/dist/api/chat-scope.js.map +1 -1
- package/dist/api/chat-transcripts.d.ts +60 -0
- package/dist/api/chat-transcripts.d.ts.map +1 -0
- package/dist/api/chat-transcripts.js +139 -0
- package/dist/api/chat-transcripts.js.map +1 -0
- package/dist/api/chat-turns.d.ts +43 -4
- package/dist/api/chat-turns.d.ts.map +1 -1
- package/dist/api/chat-turns.js +73 -6
- package/dist/api/chat-turns.js.map +1 -1
- package/dist/api/delivery-cache.d.ts +23 -6
- package/dist/api/delivery-cache.d.ts.map +1 -1
- package/dist/api/delivery-cache.js +27 -17
- package/dist/api/delivery-cache.js.map +1 -1
- package/dist/api/delivery-index.d.ts +45 -3
- package/dist/api/delivery-index.d.ts.map +1 -1
- package/dist/api/delivery-index.js +79 -4
- package/dist/api/delivery-index.js.map +1 -1
- package/dist/api/requirements.d.ts +3 -5
- package/dist/api/requirements.d.ts.map +1 -1
- package/dist/api/requirements.js +30 -146
- package/dist/api/requirements.js.map +1 -1
- package/dist/api/retry-index.d.ts +14 -0
- package/dist/api/retry-index.d.ts.map +1 -1
- package/dist/api/retry-index.js +29 -0
- package/dist/api/retry-index.js.map +1 -1
- package/dist/api/roster-standing.d.ts +4 -4
- package/dist/api/roster-standing.d.ts.map +1 -1
- package/dist/api/roster-standing.js +24 -12
- package/dist/api/roster-standing.js.map +1 -1
- package/dist/api/routes.d.ts +142 -10
- package/dist/api/routes.d.ts.map +1 -1
- package/dist/api/routes.js +292 -44
- package/dist/api/routes.js.map +1 -1
- package/dist/api/run-timing-index.d.ts +22 -0
- package/dist/api/run-timing-index.d.ts.map +1 -1
- package/dist/api/run-timing-index.js +34 -0
- package/dist/api/run-timing-index.js.map +1 -1
- package/dist/api/seat-health.d.ts +2 -46
- package/dist/api/seat-health.d.ts.map +1 -1
- package/dist/api/seat-health.js +28 -111
- package/dist/api/seat-health.js.map +1 -1
- package/dist/api/seat-standing.d.ts +9 -8
- package/dist/api/seat-standing.d.ts.map +1 -1
- package/dist/api/seat-standing.js +22 -32
- package/dist/api/seat-standing.js.map +1 -1
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +114 -12
- package/dist/api/server.js.map +1 -1
- package/dist/api/skills.d.ts +2 -2
- package/dist/api/skills.d.ts.map +1 -1
- package/dist/api/skills.js +5 -2
- package/dist/api/skills.js.map +1 -1
- package/dist/api/stall-frame-index.d.ts +68 -0
- package/dist/api/stall-frame-index.d.ts.map +1 -0
- package/dist/api/stall-frame-index.js +106 -0
- package/dist/api/stall-frame-index.js.map +1 -0
- package/dist/api/stall-watchdog.d.ts +22 -2
- package/dist/api/stall-watchdog.d.ts.map +1 -1
- package/dist/api/stall-watchdog.js +41 -11
- package/dist/api/stall-watchdog.js.map +1 -1
- package/dist/campaigns/plan.d.ts +12 -2
- package/dist/campaigns/plan.d.ts.map +1 -1
- package/dist/campaigns/plan.js +3 -0
- package/dist/campaigns/plan.js.map +1 -1
- package/dist/campaigns/rollup.d.ts +5 -0
- package/dist/campaigns/rollup.d.ts.map +1 -1
- package/dist/campaigns/rollup.js +3 -2
- package/dist/campaigns/rollup.js.map +1 -1
- package/dist/campaigns/routes.d.ts +5 -2
- package/dist/campaigns/routes.d.ts.map +1 -1
- package/dist/campaigns/routes.js +13 -3
- package/dist/campaigns/routes.js.map +1 -1
- package/dist/cli/index.js +137 -23
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/port.d.ts +19 -0
- package/dist/cli/port.d.ts.map +1 -0
- package/dist/cli/port.js +39 -0
- package/dist/cli/port.js.map +1 -0
- package/dist/core/adapter.d.ts +68 -2
- package/dist/core/adapter.d.ts.map +1 -1
- package/dist/core/adapter.js +176 -23
- package/dist/core/adapter.js.map +1 -1
- package/dist/core/bridge-reaper.d.ts +57 -1
- package/dist/core/bridge-reaper.d.ts.map +1 -1
- package/dist/core/bridge-reaper.js +143 -21
- package/dist/core/bridge-reaper.js.map +1 -1
- package/dist/core/cursor.d.ts +7 -0
- package/dist/core/cursor.d.ts.map +1 -1
- package/dist/core/cursor.js +7 -1
- package/dist/core/cursor.js.map +1 -1
- package/dist/core/deliver-text.d.ts +35 -2
- package/dist/core/deliver-text.d.ts.map +1 -1
- package/dist/core/deliver-text.js +127 -17
- package/dist/core/deliver-text.js.map +1 -1
- package/dist/core/deliver-triage.d.ts.map +1 -1
- package/dist/core/deliver-triage.js +5 -2
- package/dist/core/deliver-triage.js.map +1 -1
- package/dist/core/deliver.d.ts +76 -2
- package/dist/core/deliver.d.ts.map +1 -1
- package/dist/core/deliver.js +209 -16
- package/dist/core/deliver.js.map +1 -1
- package/dist/core/engine-roster.d.ts +4 -3
- package/dist/core/engine-roster.d.ts.map +1 -1
- package/dist/core/engine-roster.js +10 -14
- package/dist/core/engine-roster.js.map +1 -1
- package/dist/core/types.d.ts +30 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +6 -4
- package/dist/core/types.js.map +1 -1
- package/dist/core/versions.d.ts +17 -0
- package/dist/core/versions.d.ts.map +1 -0
- package/dist/core/versions.js +35 -0
- package/dist/core/versions.js.map +1 -0
- package/dist/interactive/bridge-pool.d.ts +66 -14
- package/dist/interactive/bridge-pool.d.ts.map +1 -1
- package/dist/interactive/bridge-pool.js +130 -17
- package/dist/interactive/bridge-pool.js.map +1 -1
- package/dist/interactive/bridge-root.d.ts +47 -16
- package/dist/interactive/bridge-root.d.ts.map +1 -1
- package/dist/interactive/bridge-root.js +102 -31
- package/dist/interactive/bridge-root.js.map +1 -1
- package/dist/interactive/doc-delete-routes.d.ts +3 -1
- package/dist/interactive/doc-delete-routes.d.ts.map +1 -1
- package/dist/interactive/doc-delete-routes.js.map +1 -1
- package/dist/interactive/doc-list-routes.d.ts +3 -1
- package/dist/interactive/doc-list-routes.d.ts.map +1 -1
- package/dist/interactive/doc-list-routes.js.map +1 -1
- package/dist/interactive/docs-index.d.ts +3 -1
- package/dist/interactive/docs-index.d.ts.map +1 -1
- package/dist/interactive/docs-index.js +1 -1
- package/dist/interactive/docs-index.js.map +1 -1
- package/dist/interactive/project-root.d.ts +8 -2
- package/dist/interactive/project-root.d.ts.map +1 -1
- package/dist/interactive/project-root.js +1 -1
- package/dist/interactive/project-root.js.map +1 -1
- package/dist/interactive/proxy-routes.d.ts +3 -1
- package/dist/interactive/proxy-routes.d.ts.map +1 -1
- package/dist/interactive/proxy-routes.js.map +1 -1
- package/dist/projects/graph.d.ts +4 -0
- package/dist/projects/graph.d.ts.map +1 -1
- package/dist/projects/graph.js +4 -2
- package/dist/projects/graph.js.map +1 -1
- package/dist/projects/routes.d.ts +2 -2
- package/dist/projects/state-home-preflight.d.ts +30 -7
- package/dist/projects/state-home-preflight.d.ts.map +1 -1
- package/dist/projects/state-home-preflight.js +59 -16
- package/dist/projects/state-home-preflight.js.map +1 -1
- package/dist/projects/state-home-registry.d.ts.map +1 -1
- package/dist/projects/state-home-registry.js +2 -0
- package/dist/projects/state-home-registry.js.map +1 -1
- package/dist/qe/acceptance.d.ts +9 -0
- package/dist/qe/acceptance.d.ts.map +1 -1
- package/dist/qe/acceptance.js +16 -1
- package/dist/qe/acceptance.js.map +1 -1
- package/dist/qe/author-workflow.d.ts.map +1 -1
- package/dist/qe/author-workflow.js +2 -1
- package/dist/qe/author-workflow.js.map +1 -1
- package/dist/skills/base-skill.d.ts +32 -10
- package/dist/skills/base-skill.d.ts.map +1 -1
- package/dist/skills/base-skill.js +36 -27
- package/dist/skills/base-skill.js.map +1 -1
- package/dist/skills/guards.d.ts.map +1 -1
- package/dist/skills/guards.js +3 -0
- package/dist/skills/guards.js.map +1 -1
- package/dist/skills/runtime.d.ts +9 -5
- package/dist/skills/runtime.d.ts.map +1 -1
- package/dist/skills/runtime.js +11 -7
- package/dist/skills/runtime.js.map +1 -1
- package/dist/skills/store.d.ts +30 -0
- package/dist/skills/store.d.ts.map +1 -1
- package/dist/skills/store.js +159 -3
- package/dist/skills/store.js.map +1 -1
- package/dist/skills/tree.d.ts +12 -0
- package/dist/skills/tree.d.ts.map +1 -1
- package/dist/skills/tree.js +26 -0
- package/dist/skills/tree.js.map +1 -1
- package/dist/studio/assets/index-Dk98qXKv.js +546 -0
- package/dist/studio/index.html +1 -1
- package/dist/studio/testid-inventory.json +89 -5
- package/endpoint-manifest.json +13 -1
- package/package.json +4 -4
- package/dist/studio/assets/index-DhojBZ1T.js +0 -544
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** The three components a crew install is made of; `null` = not present in this install. */
|
|
2
|
+
export interface InstalledVersions {
|
|
3
|
+
/** This package's own version. */
|
|
4
|
+
crew: string;
|
|
5
|
+
/** The wicked-core-ts engine binding resolvable from this install, or `null`. */
|
|
6
|
+
coreTs: string | null;
|
|
7
|
+
/** The studio bundle at `dist/studio`, or `null` for a headless (unbundled) install. */
|
|
8
|
+
studioBundle: string | null;
|
|
9
|
+
}
|
|
10
|
+
/** Read the three versions of THIS install. Pure file reads; no daemon, no socket. */
|
|
11
|
+
export declare function installedVersions(): InstalledVersions;
|
|
12
|
+
/**
|
|
13
|
+
* The lines `wicked-crew --version` prints — one per component, `<name> <version>`, with
|
|
14
|
+
* `unknown` for an unresolvable engine binding and `none` for an unbundled studio.
|
|
15
|
+
*/
|
|
16
|
+
export declare function versionLines(v?: InstalledVersions): string[];
|
|
17
|
+
//# sourceMappingURL=versions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versions.d.ts","sourceRoot":"","sources":["../../src/core/versions.ts"],"names":[],"mappings":"AAgBA,4FAA4F;AAC5F,MAAM,WAAW,iBAAiB;IAChC,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,iFAAiF;IACjF,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,wFAAwF;IACxF,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,sFAAsF;AACtF,wBAAgB,iBAAiB,IAAI,iBAAiB,CAMrD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,GAAE,iBAAuC,GAAG,MAAM,EAAE,CAMjF"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// The versions of THIS install, in one place (crew#551 / crew#493, F-RC1-044, F-003 — FIX-IT-ALL
|
|
2
|
+
// L10-1). `wicked-crew --version` prints them; `GET /api/v1/diagnostics.components` reports the
|
|
3
|
+
// same three for the daemon that is actually serving a port — which may be a DIFFERENT install
|
|
4
|
+
// (an `npx wicked-crew` next to a global one, crew#499), so the CLI answer is scoped to the code
|
|
5
|
+
// that is running and never consults a socket.
|
|
6
|
+
//
|
|
7
|
+
// Nothing here is a new reader: the three joins reuse the readers that already existed unjoined —
|
|
8
|
+
// `crewPackageVersion()` (the origin stamp on dead-letter records), `installedPackageVersion()`
|
|
9
|
+
// (the diagnostics route's `components.coreTs`, which walks the resolver's candidate dirs because
|
|
10
|
+
// wicked-core-ts's exports map refuses `require.resolve` on `/package.json`) and
|
|
11
|
+
// `readStudioBundleVersion()` (the bundled studio's `testid-inventory.json`, TH-13) at the root
|
|
12
|
+
// the daemon serves (`defaultStudioRoot()`).
|
|
13
|
+
import { installedPackageVersion, readStudioBundleVersion } from '../api/diagnostics.js';
|
|
14
|
+
import { defaultStudioRoot } from '../api/server.js';
|
|
15
|
+
import { crewPackageVersion } from '../cli/governance.js';
|
|
16
|
+
/** Read the three versions of THIS install. Pure file reads; no daemon, no socket. */
|
|
17
|
+
export function installedVersions() {
|
|
18
|
+
return {
|
|
19
|
+
crew: crewPackageVersion(),
|
|
20
|
+
coreTs: installedPackageVersion('wicked-core-ts'),
|
|
21
|
+
studioBundle: readStudioBundleVersion(defaultStudioRoot()),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* The lines `wicked-crew --version` prints — one per component, `<name> <version>`, with
|
|
26
|
+
* `unknown` for an unresolvable engine binding and `none` for an unbundled studio.
|
|
27
|
+
*/
|
|
28
|
+
export function versionLines(v = installedVersions()) {
|
|
29
|
+
return [
|
|
30
|
+
`wicked-crew ${v.crew}`,
|
|
31
|
+
`wicked-core-ts ${v.coreTs ?? 'unknown'}`,
|
|
32
|
+
`wicked-studio ${v.studioBundle ?? 'none'}`,
|
|
33
|
+
];
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=versions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versions.js","sourceRoot":"","sources":["../../src/core/versions.ts"],"names":[],"mappings":"AAAA,iGAAiG;AACjG,gGAAgG;AAChG,+FAA+F;AAC/F,iGAAiG;AACjG,+CAA+C;AAC/C,EAAE;AACF,kGAAkG;AAClG,gGAAgG;AAChG,kGAAkG;AAClG,iFAAiF;AACjF,gGAAgG;AAChG,6CAA6C;AAC7C,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAY1D,sFAAsF;AACtF,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,IAAI,EAAE,kBAAkB,EAAE;QAC1B,MAAM,EAAE,uBAAuB,CAAC,gBAAgB,CAAC;QACjD,YAAY,EAAE,uBAAuB,CAAC,iBAAiB,EAAE,CAAC;KAC3D,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,IAAuB,iBAAiB,EAAE;IACrE,OAAO;QACL,eAAe,CAAC,CAAC,IAAI,EAAE;QACvB,kBAAkB,CAAC,CAAC,MAAM,IAAI,SAAS,EAAE;QACzC,iBAAiB,CAAC,CAAC,YAAY,IAAI,MAAM,EAAE;KAC5C,CAAC;AACJ,CAAC"}
|
|
@@ -26,9 +26,11 @@
|
|
|
26
26
|
* bridge: recording can never fail — or slow down — a proxied request.
|
|
27
27
|
*
|
|
28
28
|
* THE SPAWN ENV (acceptance findings F-042 + F-043). The bridge validates and registers a doc's
|
|
29
|
-
* project against `WICKED_CREW_API` — defaulting to `http://127.0.0.1:7701`
|
|
30
|
-
*
|
|
31
|
-
*
|
|
29
|
+
* project against `WICKED_CREW_API` — until interactive 0.9.3 defaulting to `http://127.0.0.1:7701`
|
|
30
|
+
* when unset; since 0.9.3 it FAILS CLOSED instead (R-L7-a: binding, picker and the runs probe are
|
|
31
|
+
* off and name the variable) — and emits onto the wicked-bus at `WICKED_BUS_DATA_DIR`, defaulting
|
|
32
|
+
* to `~/.something-wicked/wicked-bus`. A bridge spawned with the daemon's bare env therefore talked
|
|
33
|
+
* to whatever daemon owned :7701 (a
|
|
32
34
|
* daemon on any other port could not create a single project-bound document) and shared ONE bus
|
|
33
35
|
* with every other daemon on the host (two daemons' durable cursors racing for one `doc.created`).
|
|
34
36
|
* So the spawn now exports BOTH: `WICKED_CREW_API` = this daemon's own bound origin, and
|
|
@@ -48,6 +50,15 @@
|
|
|
48
50
|
* (`npx` → shell → node), it must differ from the pid just recycled, and a bridge whose lineage
|
|
49
51
|
* cannot be read is used but never written into the sidecar. A sidecar entry is a claim of
|
|
50
52
|
* ownership that licenses a later kill, so it is only ever written for a pid this daemon spawned.
|
|
53
|
+
*
|
|
54
|
+
* LIFETIME (F-W1-103, FIX-IT-ALL wave 1): a crew-spawned bridge lives exactly as long as a crew
|
|
55
|
+
* daemon OWNS it — adopt-or-kill, never leak. The sidecar's `ownerPid` + `ownerStartedAt` is that
|
|
56
|
+
* daemon — one process incarnation, so a recycled pid never reads as a live owner — the spawner, or
|
|
57
|
+
* the daemon that last adopted the bridge (adoption stamps the adopter). The daemon's shutdown
|
|
58
|
+
* reaps the bridges it spawned (the npm wrapper AND its server child), and every daemon's boot and
|
|
59
|
+
* periodic sweeps reap a bridge tree reparented to init whose sidecar owner is gone
|
|
60
|
+
* (`core/bridge-reaper.ts`). Two bridges on ports nothing would ever look up again, ~20 h after
|
|
61
|
+
* their daemon exited, were the finding.
|
|
51
62
|
*/
|
|
52
63
|
import { type ChildProcess } from 'node:child_process';
|
|
53
64
|
import type { AddressInfo } from 'node:net';
|
|
@@ -61,11 +72,11 @@ export declare const RECYCLE_HARD_MS = 1000;
|
|
|
61
72
|
/** Parent hops walked when proving a lockfile pid descends from the child this daemon spawned. */
|
|
62
73
|
export declare const LINEAGE_MAX_HOPS = 16;
|
|
63
74
|
/** The range crew needs when nothing overrides it (see F-081 above). */
|
|
64
|
-
export declare const INTERACTIVE_DEFAULT_RANGE = "^0.9.
|
|
75
|
+
export declare const INTERACTIVE_DEFAULT_RANGE = "^0.9.3";
|
|
65
76
|
/** The env override of the RANGE (not the package). */
|
|
66
77
|
export declare const INTERACTIVE_SPEC_ENV = "WICKED_INTERACTIVE_SPEC";
|
|
67
78
|
/** The default spec — what the daemon spawns with no override. */
|
|
68
|
-
export declare const INTERACTIVE_SPEC = "wicked-interactive@^0.9.
|
|
79
|
+
export declare const INTERACTIVE_SPEC = "wicked-interactive@^0.9.3";
|
|
69
80
|
/** A semver RANGE this daemon will resolve: one comparator, or a space-separated intersection of
|
|
70
81
|
* them (`>=0.9.1 <1.0.0`). Tags (`latest`), `x`-ranges, `||` unions, paths and `pkg@range` spellings
|
|
71
82
|
* are refused — the override names a floor within the package, nothing else. */
|
|
@@ -106,13 +117,17 @@ export declare class BridgeUnavailableError extends Error {
|
|
|
106
117
|
readonly hint: string;
|
|
107
118
|
constructor(message: string, hint: string);
|
|
108
119
|
}
|
|
109
|
-
/** The
|
|
110
|
-
* falls back to its own defaults, which is exactly the pre-fix behavior this exists to
|
|
120
|
+
/** The three variables crew hands the bridge it spawns (F-042/F-043, BC-50). Absent = not set —
|
|
121
|
+
* the bridge falls back to its own defaults, which is exactly the pre-fix behavior this exists to
|
|
122
|
+
* end (since interactive 0.9.3 an unset `WICKED_CREW_API` fails CLOSED there — R-L7-a). */
|
|
111
123
|
export interface BridgeEnv {
|
|
112
124
|
/** The daemon's own origin — where the bridge validates/registers project bindings. */
|
|
113
125
|
WICKED_CREW_API?: string;
|
|
114
126
|
/** The directory holding the `bus.db` this daemon's interactive seams read. */
|
|
115
127
|
WICKED_BUS_DATA_DIR?: string;
|
|
128
|
+
/** Where the recorder's Playwright browser is provisioned AND looked for:
|
|
129
|
+
* `<state home>/interactive/recorder-browsers` (BC-50 / R-L7-d), never the global cache. */
|
|
130
|
+
PLAYWRIGHT_BROWSERS_PATH?: string;
|
|
116
131
|
}
|
|
117
132
|
/** What crew writes beside the lockfile after IT starts a bridge. */
|
|
118
133
|
export interface CrewSidecar {
|
|
@@ -121,9 +136,15 @@ export interface CrewSidecar {
|
|
|
121
136
|
env: BridgeEnv;
|
|
122
137
|
startedBy: 'wicked-crew';
|
|
123
138
|
startedAt: string;
|
|
124
|
-
/** The DAEMON that
|
|
125
|
-
*
|
|
139
|
+
/** The DAEMON that owns it: the spawner, or the daemon that last ADOPTED it (F-W1-103 — adoption
|
|
140
|
+
* stamps the adopter, so the orphan sweeps see a bridge in use). A bridge whose owner is still
|
|
141
|
+
* alive is that daemon's to stop — never this one's (codex on crew#506). */
|
|
126
142
|
ownerPid?: number;
|
|
143
|
+
/** The owner's process start time as the process table reports it ({@link processStartedAt}), so
|
|
144
|
+
* `ownerPid` names ONE incarnation of that pid: a recycled pid reads as "owner gone" instead of
|
|
145
|
+
* keeping the bridge alive for as long as the pid stays taken (crew #606 review, MED-2). Absent
|
|
146
|
+
* on a sidecar written before this field existed — pid liveness is all those can be checked by. */
|
|
147
|
+
ownerStartedAt?: string;
|
|
127
148
|
}
|
|
128
149
|
/** Injectable IO — the integration suite substitutes a fake bridge for the real `npx` spawn. */
|
|
129
150
|
export interface BridgePoolIo {
|
|
@@ -159,10 +180,13 @@ export interface BridgePoolIo {
|
|
|
159
180
|
*/
|
|
160
181
|
busDataDir?: string | null;
|
|
161
182
|
}
|
|
162
|
-
/** The {@link BridgeEnv} this pool hands a bridge it starts, from its io. Only DEFINED values ride
|
|
183
|
+
/** The {@link BridgeEnv} this pool hands a bridge it starts, from its io. Only DEFINED values ride;
|
|
184
|
+
* the browsers path always does — it is crew's placement, under the daemon's own state home. */
|
|
163
185
|
export declare function bridgeEnvFor(io: Pick<BridgePoolIo, 'studioOrigin' | 'busDataDir'>): BridgeEnv;
|
|
164
186
|
export { busDataDirOf } from './bus-location.js';
|
|
165
|
-
/** `true` when two bridge envs agree on every variable either one sets.
|
|
187
|
+
/** `true` when two bridge envs agree on every variable either one sets. A sidecar written before
|
|
188
|
+
* the browsers-path key existed (crew ≤ 0.7.34) does NOT match — that mismatch is the recycle
|
|
189
|
+
* that carries a live bridge onto interactive 0.9.3 (see the 0.9.3 note above). */
|
|
166
190
|
export declare function bridgeEnvMatches(a: BridgeEnv, b: BridgeEnv): boolean;
|
|
167
191
|
/** `<root>/.wi-serve.crew.json`, or null when absent/unparseable/incomplete. */
|
|
168
192
|
export declare function readCrewSidecar(root: string): CrewSidecar | null;
|
|
@@ -176,6 +200,28 @@ export declare function boundOrigin(addr: AddressInfo | string | null): string |
|
|
|
176
200
|
export declare function readLock(root: string): LiveBridge | null;
|
|
177
201
|
/** Signal 0 probes existence without delivering: EPERM means alive-but-not-ours. */
|
|
178
202
|
export declare function pidAlive(pid: number): boolean;
|
|
203
|
+
/**
|
|
204
|
+
* The start time of `pid` as the process table reports it, or null when it cannot be read. Together
|
|
205
|
+
* with the pid it identifies ONE process incarnation — a recycled pid has a different start — which
|
|
206
|
+
* is what a sidecar's `ownerPid` needs to mean "that daemon" on a host that stays up for weeks.
|
|
207
|
+
* POSIX asks `ps -o lstart=` (the same spelling on macOS and procps); Windows asks CIM. Read once
|
|
208
|
+
* per bridge start / adoption and once per orphan candidate — never on a hot path.
|
|
209
|
+
*/
|
|
210
|
+
export declare function processStartedAt(pid: number): string | null;
|
|
211
|
+
/** This daemon's own start time, read once — what it writes into every sidecar it owns. */
|
|
212
|
+
export declare function daemonStartedAt(): string | null;
|
|
213
|
+
/**
|
|
214
|
+
* Is the daemon a sidecar names as owner still THAT daemon? Alive means the pid is in the table AND,
|
|
215
|
+
* when the sidecar recorded the owner's start time, the pid's start time today is the same one — a
|
|
216
|
+
* recycled pid is "owner gone" (crew #606 review, MED-2). A sidecar without `ownerStartedAt` can only
|
|
217
|
+
* be checked by pid (disclosed gap); an UNREADABLE start time today reads as alive — a possibly-live
|
|
218
|
+
* daemon's bridge is never treated as reapable on uncertainty. No owner at all is "not alive".
|
|
219
|
+
* `io` is for tests (a fake table); production uses the real one.
|
|
220
|
+
*/
|
|
221
|
+
export declare function ownerAlive(sidecar: Pick<CrewSidecar, 'ownerPid' | 'ownerStartedAt'>, io?: {
|
|
222
|
+
alive?: (pid: number) => boolean;
|
|
223
|
+
startedAt?: (pid: number) => string | null;
|
|
224
|
+
}): boolean;
|
|
179
225
|
/**
|
|
180
226
|
* The parent pid of `pid`, or null when it cannot be read (no such process, no `ps` / PowerShell,
|
|
181
227
|
* an unparseable answer). POSIX asks `ps`; Windows asks CIM. Only consulted once per bridge start.
|
|
@@ -206,9 +252,11 @@ export declare class InteractiveBridgePool {
|
|
|
206
252
|
private resolveOrStart;
|
|
207
253
|
/**
|
|
208
254
|
* A live bridge was found through the lockfile. Is it one THIS daemon can use (F-042/F-043)?
|
|
209
|
-
* - crew's sidecar names this pid and its env matches ours → adopt silently
|
|
210
|
-
*
|
|
211
|
-
*
|
|
255
|
+
* - crew's sidecar names this pid and its env matches ours → adopt silently, and stamp THIS
|
|
256
|
+
* daemon as its owner (F-W1-103) so the reaper's orphan sweeps — which reap a crew bridge whose
|
|
257
|
+
* owner daemon is gone — see it in use for as long as this daemon lives;
|
|
258
|
+
* - the sidecar names this pid with a DIFFERENT env: if the daemon that owns it (`ownerPid`, the
|
|
259
|
+
* SAME incarnation — pid and start time, {@link ownerAlive}) is STILL ALIVE, the bridge is that daemon's — two daemons sharing one docs root — and this
|
|
212
260
|
* one must not kill it mid-create (codex on crew#506): refuse with a `BridgeUnavailableError`
|
|
213
261
|
* naming the owner and the fix (give this daemon its own interactive root). Only a bridge
|
|
214
262
|
* whose owner is gone (a previous daemon that exited, or this very process after a
|
|
@@ -247,6 +295,10 @@ export declare class InteractiveBridgePool {
|
|
|
247
295
|
* but NOT recorded — a sidecar is a claim of ownership, and only a pid this daemon spawned earns it.
|
|
248
296
|
*/
|
|
249
297
|
private start;
|
|
298
|
+
/** Adopting a crew-started bridge makes THIS daemon its owner (F-W1-103): rewrite the sidecar's
|
|
299
|
+
* `ownerPid` — pid, env and `startedAt` untouched — so the orphan sweeps, which reap a crew
|
|
300
|
+
* bridge whose owner daemon is gone, see it in use. Best-effort, like {@link writeSidecar}. */
|
|
301
|
+
private claimSidecar;
|
|
250
302
|
/** Record which pid crew started and with which env, so a later adopt can tell ours from a
|
|
251
303
|
* sibling daemon's (see {@link adoptOrRecycle}). Only ever called for a pid whose lineage from
|
|
252
304
|
* this daemon's own spawn is PROVEN (see {@link start}). Best-effort: an unwritable sidecar only
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge-pool.d.ts","sourceRoot":"","sources":["../../src/interactive/bridge-pool.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"bridge-pool.d.ts","sourceRoot":"","sources":["../../src/interactive/bridge-pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,9 +26,11 @@
|
|
|
26
26
|
* bridge: recording can never fail — or slow down — a proxied request.
|
|
27
27
|
*
|
|
28
28
|
* THE SPAWN ENV (acceptance findings F-042 + F-043). The bridge validates and registers a doc's
|
|
29
|
-
* project against `WICKED_CREW_API` — defaulting to `http://127.0.0.1:7701`
|
|
30
|
-
*
|
|
31
|
-
*
|
|
29
|
+
* project against `WICKED_CREW_API` — until interactive 0.9.3 defaulting to `http://127.0.0.1:7701`
|
|
30
|
+
* when unset; since 0.9.3 it FAILS CLOSED instead (R-L7-a: binding, picker and the runs probe are
|
|
31
|
+
* off and name the variable) — and emits onto the wicked-bus at `WICKED_BUS_DATA_DIR`, defaulting
|
|
32
|
+
* to `~/.something-wicked/wicked-bus`. A bridge spawned with the daemon's bare env therefore talked
|
|
33
|
+
* to whatever daemon owned :7701 (a
|
|
32
34
|
* daemon on any other port could not create a single project-bound document) and shared ONE bus
|
|
33
35
|
* with every other daemon on the host (two daemons' durable cursors racing for one `doc.created`).
|
|
34
36
|
* So the spawn now exports BOTH: `WICKED_CREW_API` = this daemon's own bound origin, and
|
|
@@ -48,11 +50,21 @@
|
|
|
48
50
|
* (`npx` → shell → node), it must differ from the pid just recycled, and a bridge whose lineage
|
|
49
51
|
* cannot be read is used but never written into the sidecar. A sidecar entry is a claim of
|
|
50
52
|
* ownership that licenses a later kill, so it is only ever written for a pid this daemon spawned.
|
|
53
|
+
*
|
|
54
|
+
* LIFETIME (F-W1-103, FIX-IT-ALL wave 1): a crew-spawned bridge lives exactly as long as a crew
|
|
55
|
+
* daemon OWNS it — adopt-or-kill, never leak. The sidecar's `ownerPid` + `ownerStartedAt` is that
|
|
56
|
+
* daemon — one process incarnation, so a recycled pid never reads as a live owner — the spawner, or
|
|
57
|
+
* the daemon that last adopted the bridge (adoption stamps the adopter). The daemon's shutdown
|
|
58
|
+
* reaps the bridges it spawned (the npm wrapper AND its server child), and every daemon's boot and
|
|
59
|
+
* periodic sweeps reap a bridge tree reparented to init whose sidecar owner is gone
|
|
60
|
+
* (`core/bridge-reaper.ts`). Two bridges on ports nothing would ever look up again, ~20 h after
|
|
61
|
+
* their daemon exited, were the finding.
|
|
51
62
|
*/
|
|
52
63
|
import { spawn as nodeSpawn, spawnSync } from 'node:child_process';
|
|
53
64
|
import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
54
65
|
import { join, resolve } from 'node:path';
|
|
55
66
|
import { childEnvWithBootEstateDb } from '../core/governance-store.js';
|
|
67
|
+
import { recorderBrowsersPath } from './bridge-root.js';
|
|
56
68
|
export const LOCK_NAME = '.wi-serve.json';
|
|
57
69
|
/** Crew's sidecar beside the bridge's lockfile: which pid crew started, and with which env (F-042/F-043). */
|
|
58
70
|
export const CREW_SIDECAR_NAME = '.wi-serve.crew.json';
|
|
@@ -109,11 +121,21 @@ export const LINEAGE_MAX_HOPS = 16;
|
|
|
109
121
|
* the recorder snapshot, and `wicked-interactive doctor [--install]` is the operator remedy. A 0.9.1
|
|
110
122
|
* bridge answers the same routes WITHOUT the typed frames, so a daemon pinned back through
|
|
111
123
|
* `WICKED_INTERACTIVE_SPEC` gets the boot warning and an untyped thread on recorder failure.
|
|
124
|
+
*
|
|
125
|
+
* 0.9.3 (wicked-interactive #229 — FIX-IT-ALL L7-I1, F-RC1-120/121/122): the floor follows 0.9.3
|
|
126
|
+
* because the bridge's BUS IDENTITY is now per served root (`wi-service-*@<h8>`) — two bridges on
|
|
127
|
+
* one bus db no longer share a cursor, so a project partition's `demo.requested` is never drained
|
|
128
|
+
* (and silently acked) by the default root's bridge; a frame for a doc outside a bridge's root is
|
|
129
|
+
* refused loudly (`/api/health.unknown_doc_refused`, `plugin`). It also fails CLOSED on an unset
|
|
130
|
+
* `WICKED_CREW_API` (crew always sets it) and its remedies carry `PLAYWRIGHT_BROWSERS_PATH` — the
|
|
131
|
+
* third {@link BridgeEnv} key this pool now hands every bridge, which is ALSO the rollout vehicle:
|
|
132
|
+
* a running 0.9.2 bridge's sidecar lacks the key, {@link bridgeEnvMatches} says no, and the pool
|
|
133
|
+
* recycles it into `npx wicked-interactive@^0.9.3`.
|
|
112
134
|
*/
|
|
113
135
|
/** The package crew starts as the interactive bridge — named in CODE exactly once. */
|
|
114
136
|
const INTERACTIVE_PACKAGE = 'wicked-interactive';
|
|
115
137
|
/** The range crew needs when nothing overrides it (see F-081 above). */
|
|
116
|
-
export const INTERACTIVE_DEFAULT_RANGE = '^0.9.
|
|
138
|
+
export const INTERACTIVE_DEFAULT_RANGE = '^0.9.3';
|
|
117
139
|
/** The env override of the RANGE (not the package). */
|
|
118
140
|
export const INTERACTIVE_SPEC_ENV = 'WICKED_INTERACTIVE_SPEC';
|
|
119
141
|
/** The default spec — what the daemon spawns with no override. */
|
|
@@ -182,19 +204,25 @@ export class BridgeUnavailableError extends Error {
|
|
|
182
204
|
function serveCommand(root) {
|
|
183
205
|
return `npx ${interactiveSpec()} serve --root ${root}`;
|
|
184
206
|
}
|
|
185
|
-
/** The {@link BridgeEnv} this pool hands a bridge it starts, from its io. Only DEFINED values ride
|
|
207
|
+
/** The {@link BridgeEnv} this pool hands a bridge it starts, from its io. Only DEFINED values ride;
|
|
208
|
+
* the browsers path always does — it is crew's placement, under the daemon's own state home. */
|
|
186
209
|
export function bridgeEnvFor(io) {
|
|
187
210
|
const origin = io.studioOrigin?.() ?? null;
|
|
188
211
|
const busDir = io.busDataDir ?? null;
|
|
189
212
|
return {
|
|
190
213
|
...(origin !== null ? { WICKED_CREW_API: origin } : {}),
|
|
191
214
|
...(busDir !== null ? { WICKED_BUS_DATA_DIR: busDir } : {}),
|
|
215
|
+
PLAYWRIGHT_BROWSERS_PATH: recorderBrowsersPath(),
|
|
192
216
|
};
|
|
193
217
|
}
|
|
194
218
|
export { busDataDirOf } from './bus-location.js';
|
|
195
|
-
/** `true` when two bridge envs agree on every variable either one sets.
|
|
219
|
+
/** `true` when two bridge envs agree on every variable either one sets. A sidecar written before
|
|
220
|
+
* the browsers-path key existed (crew ≤ 0.7.34) does NOT match — that mismatch is the recycle
|
|
221
|
+
* that carries a live bridge onto interactive 0.9.3 (see the 0.9.3 note above). */
|
|
196
222
|
export function bridgeEnvMatches(a, b) {
|
|
197
|
-
return a.WICKED_CREW_API === b.WICKED_CREW_API &&
|
|
223
|
+
return (a.WICKED_CREW_API === b.WICKED_CREW_API &&
|
|
224
|
+
a.WICKED_BUS_DATA_DIR === b.WICKED_BUS_DATA_DIR &&
|
|
225
|
+
a.PLAYWRIGHT_BROWSERS_PATH === b.PLAYWRIGHT_BROWSERS_PATH);
|
|
198
226
|
}
|
|
199
227
|
/** `<root>/.wi-serve.crew.json`, or null when absent/unparseable/incomplete. */
|
|
200
228
|
export function readCrewSidecar(root) {
|
|
@@ -205,6 +233,7 @@ export function readCrewSidecar(root) {
|
|
|
205
233
|
const env = {
|
|
206
234
|
...(typeof raw.env.WICKED_CREW_API === 'string' ? { WICKED_CREW_API: raw.env.WICKED_CREW_API } : {}),
|
|
207
235
|
...(typeof raw.env.WICKED_BUS_DATA_DIR === 'string' ? { WICKED_BUS_DATA_DIR: raw.env.WICKED_BUS_DATA_DIR } : {}),
|
|
236
|
+
...(typeof raw.env.PLAYWRIGHT_BROWSERS_PATH === 'string' ? { PLAYWRIGHT_BROWSERS_PATH: raw.env.PLAYWRIGHT_BROWSERS_PATH } : {}),
|
|
208
237
|
};
|
|
209
238
|
return {
|
|
210
239
|
pid: raw.pid,
|
|
@@ -212,6 +241,7 @@ export function readCrewSidecar(root) {
|
|
|
212
241
|
startedBy: 'wicked-crew',
|
|
213
242
|
startedAt: typeof raw.startedAt === 'string' ? raw.startedAt : '',
|
|
214
243
|
...(typeof raw.ownerPid === 'number' ? { ownerPid: raw.ownerPid } : {}),
|
|
244
|
+
...(typeof raw.ownerStartedAt === 'string' ? { ownerStartedAt: raw.ownerStartedAt } : {}),
|
|
215
245
|
};
|
|
216
246
|
}
|
|
217
247
|
catch {
|
|
@@ -261,6 +291,66 @@ export function pidAlive(pid) {
|
|
|
261
291
|
return err.code === 'EPERM';
|
|
262
292
|
}
|
|
263
293
|
}
|
|
294
|
+
/**
|
|
295
|
+
* The start time of `pid` as the process table reports it, or null when it cannot be read. Together
|
|
296
|
+
* with the pid it identifies ONE process incarnation — a recycled pid has a different start — which
|
|
297
|
+
* is what a sidecar's `ownerPid` needs to mean "that daemon" on a host that stays up for weeks.
|
|
298
|
+
* POSIX asks `ps -o lstart=` (the same spelling on macOS and procps); Windows asks CIM. Read once
|
|
299
|
+
* per bridge start / adoption and once per orphan candidate — never on a hot path.
|
|
300
|
+
*/
|
|
301
|
+
export function processStartedAt(pid) {
|
|
302
|
+
if (!Number.isInteger(pid) || pid <= 0)
|
|
303
|
+
return null;
|
|
304
|
+
try {
|
|
305
|
+
const res = process.platform === 'win32'
|
|
306
|
+
? spawnSync('powershell', [
|
|
307
|
+
'-NoProfile',
|
|
308
|
+
'-NonInteractive',
|
|
309
|
+
'-Command',
|
|
310
|
+
`(Get-CimInstance Win32_Process -Filter "ProcessId=${pid}").CreationDate.ToUniversalTime().ToString('o')`,
|
|
311
|
+
], { encoding: 'utf8', timeout: 5000, windowsHide: true, env: childEnvWithBootEstateDb() })
|
|
312
|
+
: spawnSync('ps', ['-o', 'lstart=', '-p', String(pid)], { encoding: 'utf8', timeout: 5000, env: childEnvWithBootEstateDb() });
|
|
313
|
+
if (res.error || res.status !== 0)
|
|
314
|
+
return null;
|
|
315
|
+
const out = String(res.stdout).trim();
|
|
316
|
+
return out === '' ? null : out;
|
|
317
|
+
}
|
|
318
|
+
catch {
|
|
319
|
+
return null;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
let ownStartedAt;
|
|
323
|
+
/** This daemon's own start time, read once — what it writes into every sidecar it owns. */
|
|
324
|
+
export function daemonStartedAt() {
|
|
325
|
+
if (ownStartedAt === undefined)
|
|
326
|
+
ownStartedAt = processStartedAt(process.pid);
|
|
327
|
+
return ownStartedAt;
|
|
328
|
+
}
|
|
329
|
+
/** The owner identity this daemon stamps into a sidecar it spawns or adopts: its pid, and its start
|
|
330
|
+
* time when the process table gave one. */
|
|
331
|
+
function ownerIdentity() {
|
|
332
|
+
const started = daemonStartedAt();
|
|
333
|
+
return { ownerPid: process.pid, ...(started !== null ? { ownerStartedAt: started } : {}) };
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Is the daemon a sidecar names as owner still THAT daemon? Alive means the pid is in the table AND,
|
|
337
|
+
* when the sidecar recorded the owner's start time, the pid's start time today is the same one — a
|
|
338
|
+
* recycled pid is "owner gone" (crew #606 review, MED-2). A sidecar without `ownerStartedAt` can only
|
|
339
|
+
* be checked by pid (disclosed gap); an UNREADABLE start time today reads as alive — a possibly-live
|
|
340
|
+
* daemon's bridge is never treated as reapable on uncertainty. No owner at all is "not alive".
|
|
341
|
+
* `io` is for tests (a fake table); production uses the real one.
|
|
342
|
+
*/
|
|
343
|
+
export function ownerAlive(sidecar, io = {}) {
|
|
344
|
+
const owner = sidecar.ownerPid;
|
|
345
|
+
if (owner === undefined || !Number.isInteger(owner) || owner <= 0)
|
|
346
|
+
return false;
|
|
347
|
+
if (!(io.alive ?? pidAlive)(owner))
|
|
348
|
+
return false;
|
|
349
|
+
if (sidecar.ownerStartedAt === undefined)
|
|
350
|
+
return true;
|
|
351
|
+
const now = (io.startedAt ?? processStartedAt)(owner);
|
|
352
|
+
return now === null || now === sidecar.ownerStartedAt;
|
|
353
|
+
}
|
|
264
354
|
/**
|
|
265
355
|
* The parent pid of `pid`, or null when it cannot be read (no such process, no `ps` / PowerShell,
|
|
266
356
|
* an unparseable answer). POSIX asks `ps`; Windows asks CIM. Only consulted once per bridge start.
|
|
@@ -366,9 +456,11 @@ export class InteractiveBridgePool {
|
|
|
366
456
|
}
|
|
367
457
|
/**
|
|
368
458
|
* A live bridge was found through the lockfile. Is it one THIS daemon can use (F-042/F-043)?
|
|
369
|
-
* - crew's sidecar names this pid and its env matches ours → adopt silently
|
|
370
|
-
*
|
|
371
|
-
*
|
|
459
|
+
* - crew's sidecar names this pid and its env matches ours → adopt silently, and stamp THIS
|
|
460
|
+
* daemon as its owner (F-W1-103) so the reaper's orphan sweeps — which reap a crew bridge whose
|
|
461
|
+
* owner daemon is gone — see it in use for as long as this daemon lives;
|
|
462
|
+
* - the sidecar names this pid with a DIFFERENT env: if the daemon that owns it (`ownerPid`, the
|
|
463
|
+
* SAME incarnation — pid and start time, {@link ownerAlive}) is STILL ALIVE, the bridge is that daemon's — two daemons sharing one docs root — and this
|
|
372
464
|
* one must not kill it mid-create (codex on crew#506): refuse with a `BridgeUnavailableError`
|
|
373
465
|
* naming the owner and the fix (give this daemon its own interactive root). Only a bridge
|
|
374
466
|
* whose owner is gone (a previous daemon that exited, or this very process after a
|
|
@@ -381,8 +473,10 @@ export class InteractiveBridgePool {
|
|
|
381
473
|
const expected = bridgeEnvFor(this.io);
|
|
382
474
|
const sidecar = readCrewSidecar(root);
|
|
383
475
|
if (sidecar !== null && sidecar.pid === live.pid) {
|
|
384
|
-
if (bridgeEnvMatches(sidecar.env, expected))
|
|
476
|
+
if (bridgeEnvMatches(sidecar.env, expected)) {
|
|
477
|
+
this.claimSidecar(root, sidecar);
|
|
385
478
|
return live;
|
|
479
|
+
}
|
|
386
480
|
const owner = sidecar.ownerPid;
|
|
387
481
|
const ownerOrigin = sidecar.env.WICKED_CREW_API ?? '(unknown origin)';
|
|
388
482
|
if (owner === undefined || !Number.isInteger(owner) || owner <= 0) {
|
|
@@ -394,7 +488,7 @@ export class InteractiveBridgePool {
|
|
|
394
488
|
`(${ownerOrigin}) by a daemon this one cannot identify`, `stop it yourself (kill ${live.pid}) if no other crew daemon is using it, or give this daemon its own ` +
|
|
395
489
|
`interactive root (WICKED_INTERACTIVE_ROOT, or the project's interactiveRoot setting); the next request starts a bridge for this one`);
|
|
396
490
|
}
|
|
397
|
-
if (owner !== process.pid &&
|
|
491
|
+
if (owner !== process.pid && ownerAlive(sidecar)) {
|
|
398
492
|
this.io.log?.(`interactive bridge pid ${live.pid} for ${root} belongs to another live crew daemon (pid ${owner}, ` +
|
|
399
493
|
`${ownerOrigin}) with ${describeEnv(sidecar.env)}; this daemon needs ${describeEnv(expected)} — NOT ` +
|
|
400
494
|
`recycling a bridge another daemon owns`);
|
|
@@ -541,8 +635,10 @@ export class InteractiveBridgePool {
|
|
|
541
635
|
const env = { ...childEnvWithBootEstateDb(), ...bridgeEnv };
|
|
542
636
|
const child = (this.io.spawn ?? defaultSpawn)(root, env);
|
|
543
637
|
const childPid = child.pid; // undefined when the spawn failed synchronously — its 'error' follows
|
|
544
|
-
// Detached + unref: the bridge is
|
|
545
|
-
// daemon
|
|
638
|
+
// Detached + unref: the bridge is keyed by root and adoptable through its lockfile, so the
|
|
639
|
+
// daemon never holds it as an awaited handle. It does NOT outlive crew (F-W1-103): the daemon's
|
|
640
|
+
// shutdown reaps the wrapper and its server child, and a daemon that dies too hard for that
|
|
641
|
+
// leaves a sidecar whose owner is gone — the next boot sweep reaps it (`core/bridge-reaper.ts`).
|
|
546
642
|
child.on('error', (err) => {
|
|
547
643
|
spawnFailure = err.message;
|
|
548
644
|
});
|
|
@@ -592,12 +688,28 @@ export class InteractiveBridgePool {
|
|
|
592
688
|
this.io.log?.(`interactive bridge for ${root} did not come up within the start budget`);
|
|
593
689
|
throw new BridgeUnavailableError(`the interactive bridge for ${root} did not become healthy in time`, `run \`${serveCommand(root)}\` in a terminal to see the failure (or check ${join(root, '.wi-serve.log')})`);
|
|
594
690
|
}
|
|
691
|
+
/** Adopting a crew-started bridge makes THIS daemon its owner (F-W1-103): rewrite the sidecar's
|
|
692
|
+
* `ownerPid` — pid, env and `startedAt` untouched — so the orphan sweeps, which reap a crew
|
|
693
|
+
* bridge whose owner daemon is gone, see it in use. Best-effort, like {@link writeSidecar}. */
|
|
694
|
+
claimSidecar(root, sidecar) {
|
|
695
|
+
const mine = ownerIdentity();
|
|
696
|
+
if (sidecar.ownerPid === mine.ownerPid && sidecar.ownerStartedAt === mine.ownerStartedAt)
|
|
697
|
+
return;
|
|
698
|
+
// What crew recorded at the spawn stays; only the owner identity changes hands.
|
|
699
|
+
const recorded = { pid: sidecar.pid, env: sidecar.env, startedBy: sidecar.startedBy, startedAt: sidecar.startedAt };
|
|
700
|
+
try {
|
|
701
|
+
writeFileSync(join(root, CREW_SIDECAR_NAME), JSON.stringify({ ...recorded, ...mine }, null, 2), 'utf8');
|
|
702
|
+
}
|
|
703
|
+
catch (err) {
|
|
704
|
+
this.io.debug?.(`could not claim ${CREW_SIDECAR_NAME} in ${root}: ${err.message}`);
|
|
705
|
+
}
|
|
706
|
+
}
|
|
595
707
|
/** Record which pid crew started and with which env, so a later adopt can tell ours from a
|
|
596
708
|
* sibling daemon's (see {@link adoptOrRecycle}). Only ever called for a pid whose lineage from
|
|
597
709
|
* this daemon's own spawn is PROVEN (see {@link start}). Best-effort: an unwritable sidecar only
|
|
598
710
|
* costs the adopt-time check, never the start. */
|
|
599
711
|
writeSidecar(root, pid, env) {
|
|
600
|
-
const sidecar = { pid, env, startedBy: 'wicked-crew', startedAt: new Date().toISOString(),
|
|
712
|
+
const sidecar = { pid, env, startedBy: 'wicked-crew', startedAt: new Date().toISOString(), ...ownerIdentity() };
|
|
601
713
|
try {
|
|
602
714
|
writeFileSync(join(root, CREW_SIDECAR_NAME), JSON.stringify(sidecar, null, 2), 'utf8');
|
|
603
715
|
}
|
|
@@ -606,8 +718,9 @@ export class InteractiveBridgePool {
|
|
|
606
718
|
}
|
|
607
719
|
}
|
|
608
720
|
}
|
|
609
|
-
/** `npx wicked-interactive serve` in `<root>`, detached,
|
|
610
|
-
*
|
|
721
|
+
/** `npx wicked-interactive serve` in `<root>`, detached, stdio IGNORED (the bridge's own stdout/
|
|
722
|
+
* stderr — its `bus identity` and refusal lines — are discarded here; `GET /api/health` is the
|
|
723
|
+
* observable), with the env the pool computed (the daemon's own plus {@link BridgeEnv}). */
|
|
611
724
|
function defaultSpawn(root, env) {
|
|
612
725
|
// `--yes` is load-bearing: without it npx PROMPTS when the package is not installed, and a
|
|
613
726
|
// daemon has no tty to answer with — the request would hang instead of failing to a 503.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge-pool.js","sourceRoot":"","sources":["../../src/interactive/bridge-pool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bridge-pool.js","sourceRoot":"","sources":["../../src/interactive/bridge-pool.ts"],"names":[],"mappings":"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"}
|