@newrelic/preflight 1.62.0 → 1.63.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config.d.ts +10 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +21 -8
- package/dist/config.js.map +1 -1
- package/dist/dashboard/dashboard-server.d.ts +9 -0
- package/dist/dashboard/dashboard-server.d.ts.map +1 -1
- package/dist/dashboard/dashboard-server.js +6 -1
- package/dist/dashboard/dashboard-server.js.map +1 -1
- package/dist/hooks/process-ancestry.d.ts +33 -0
- package/dist/hooks/process-ancestry.d.ts.map +1 -1
- package/dist/hooks/process-ancestry.js +55 -0
- package/dist/hooks/process-ancestry.js.map +1 -1
- package/dist/hooks/session-resolver.d.ts +66 -3
- package/dist/hooks/session-resolver.d.ts.map +1 -1
- package/dist/hooks/session-resolver.js +155 -6
- package/dist/hooks/session-resolver.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +47 -11
- package/dist/index.js.map +1 -1
- package/dist/metrics/efficiency-score.d.ts +27 -0
- package/dist/metrics/efficiency-score.d.ts.map +1 -1
- package/dist/metrics/efficiency-score.js +21 -5
- package/dist/metrics/efficiency-score.js.map +1 -1
- package/dist/metrics/model-provider.d.ts +22 -0
- package/dist/metrics/model-provider.d.ts.map +1 -0
- package/dist/metrics/model-provider.js +32 -0
- package/dist/metrics/model-provider.js.map +1 -0
- package/dist/storage/local-store.d.ts +7 -0
- package/dist/storage/local-store.d.ts.map +1 -1
- package/dist/storage/local-store.js +23 -14
- package/dist/storage/local-store.js.map +1 -1
- package/dist/transport/nr-ingest.d.ts.map +1 -1
- package/dist/transport/nr-ingest.js +10 -2
- package/dist/transport/nr-ingest.js.map +1 -1
- package/dist/transport/unforwarded-session-monitor.d.ts +95 -0
- package/dist/transport/unforwarded-session-monitor.d.ts.map +1 -0
- package/dist/transport/unforwarded-session-monitor.js +120 -0
- package/dist/transport/unforwarded-session-monitor.js.map +1 -0
- package/package.json +1 -1
|
@@ -32,6 +32,7 @@
|
|
|
32
32
|
* tool handlers should report "session_id not yet resolved" rather than make
|
|
33
33
|
* one up.
|
|
34
34
|
*/
|
|
35
|
+
import { type AncestorPidsOptions } from './process-ancestry.js';
|
|
35
36
|
/** Which of the sources produced a resolveSessionId() result. */
|
|
36
37
|
export type SessionIdSource = 'jobdir' | 'ppid' | 'ppid-ancestor' | 'cwd';
|
|
37
38
|
export interface SessionResolverOptions {
|
|
@@ -140,6 +141,26 @@ export declare function nextDelayMs(attempt: number): number;
|
|
|
140
141
|
export declare function resolveSessionId(options?: SessionResolverOptions & {
|
|
141
142
|
signal?: AbortSignal;
|
|
142
143
|
}): Promise<string>;
|
|
144
|
+
export type PpidBreadcrumbWatchOptions = Omit<SessionResolverOptions, 'ancestorPids'> & {
|
|
145
|
+
signal?: AbortSignal;
|
|
146
|
+
/**
|
|
147
|
+
* Test seam for the parent-of-ppid level: the platform it is gated on, and
|
|
148
|
+
* the `ps` call that reads our ppid's parent and command line.
|
|
149
|
+
*/
|
|
150
|
+
readonly ancestry?: Pick<AncestorPidsOptions, 'platform' | 'execFileSync'>;
|
|
151
|
+
} & ({
|
|
152
|
+
readonly includeParentOfPpid?: false;
|
|
153
|
+
} | {
|
|
154
|
+
readonly includeParentOfPpid: true;
|
|
155
|
+
/** The cwd-guessed id the caller already adopted. */
|
|
156
|
+
readonly staleId: string;
|
|
157
|
+
/**
|
|
158
|
+
* Called once, synchronously, with a listener for the caller to invoke
|
|
159
|
+
* each time it drains hook activity filed under `staleId`. The
|
|
160
|
+
* listener never runs `ps`, and does nothing once the watch settles.
|
|
161
|
+
*/
|
|
162
|
+
readonly subscribeToStaleIdActivity?: (onActivity: () => void) => void;
|
|
163
|
+
});
|
|
143
164
|
/**
|
|
144
165
|
* Keep watching the PPID breadcrumb only (never cwd, never CLAUDE_JOB_DIR) —
|
|
145
166
|
* used as a corrective safety net after an initial resolution came from the
|
|
@@ -149,10 +170,52 @@ export declare function resolveSessionId(options?: SessionResolverOptions & {
|
|
|
149
170
|
* already adopted and is worth acting on — this function doesn't know or
|
|
150
171
|
* care. No 60s WARN log: a cwd-sourced session working fine while the ppid
|
|
151
172
|
* breadcrumb stays silent is expected, not alarming.
|
|
173
|
+
*
|
|
174
|
+
* With `includeParentOfPpid`, each tick also checks the breadcrumb of our
|
|
175
|
+
* ppid's own parent, but only when our ppid is npm's `npm exec` wrapper.
|
|
176
|
+
* That covers an `npx`-launched engine: the wrapper never gets a breadcrumb,
|
|
177
|
+
* so the direct watch alone can never correct a wrong cwd guess (#479: a
|
|
178
|
+
* Copilot engine started in a directory where Claude Code is active adopts
|
|
179
|
+
* the Claude session's id), and one level up is the host that ran `npx`,
|
|
180
|
+
* where its hooks write theirs. The wrapper is recognized by its command
|
|
181
|
+
* line, read with its parent in one `ps` call (readParentAndCommand()). An
|
|
182
|
+
* engine its host launched directly never looks above its ppid: that level
|
|
183
|
+
* is the host's own parent, which can carry another host's session when
|
|
184
|
+
* that host's hooks run as its children (Copilot in the VS Code extension
|
|
185
|
+
* host that also runs the Claude Code extension, say). Behind the wrapper:
|
|
186
|
+
*
|
|
187
|
+
* - A parent-level hit is only ever a correction. Once the slot names
|
|
188
|
+
* `staleId` the guess was right, and the parent level is not read again:
|
|
189
|
+
* a later change there is the host switching sessions (`/clear`,
|
|
190
|
+
* `/resume`), and adopting that as a correction would carry the old
|
|
191
|
+
* session's tool calls into the new one. So `staleId` coming back always
|
|
192
|
+
* means our ppid's own breadcrumb confirmed the guess.
|
|
193
|
+
* - The slot is also read each time the caller reports draining activity
|
|
194
|
+
* under `staleId` (subscribeToStaleIdActivity). The host's hook writes the
|
|
195
|
+
* slot before it appends the event, so this catches a slot that named the
|
|
196
|
+
* guess only between two ticks, provided a tool call drained in that gap.
|
|
197
|
+
* Only paired tool calls are reported, so a prompt with a text-only reply
|
|
198
|
+
* followed by `/clear` inside one tick gap still goes unseen. A wrong
|
|
199
|
+
* guess drains the guessed session's events too, and those never latch:
|
|
200
|
+
* our host's slot does not name that session. Activity reported before
|
|
201
|
+
* any lookup has succeeded can't be checked against the slot. If a lookup
|
|
202
|
+
* fails, before or after that activity, the activity stops the parent
|
|
203
|
+
* level too. A failed lookup is retried only on ticks 2, 4, 8, 16, ...
|
|
204
|
+
* (about 0.3s, 1.8s, 9.8s and 26s into the watch), so a wrong guess goes
|
|
205
|
+
* uncorrected whenever the guessed session's activity arrives while the
|
|
206
|
+
* lookup is failing. The retries keep spreading out, so that window lasts
|
|
207
|
+
* as long as `ps` keeps failing, not only tens of seconds.
|
|
208
|
+
* - A parent-level session that already has a live owning engine is not
|
|
209
|
+
* ours. Once skipped, an id stays skipped, so a neighbour whose engine
|
|
210
|
+
* later exits is not adopted then.
|
|
211
|
+
* - Never on Linux. The collector writes a breadcrumb at each of its
|
|
212
|
+
* ancestors there (collector-script.ts's writePpidBreadcrumb()), so the
|
|
213
|
+
* host's parent is routinely a shared slot (an editor's main process, a
|
|
214
|
+
* shell) carrying a concurrent session's id, which may have no engine of
|
|
215
|
+
* its own or not have adopted its id yet. Elsewhere the collector writes
|
|
216
|
+
* only its own ppid. Nor on Windows, which has no `ps`.
|
|
152
217
|
*/
|
|
153
|
-
export declare function watchPpidBreadcrumb(options?:
|
|
154
|
-
signal?: AbortSignal;
|
|
155
|
-
}): Promise<string>;
|
|
218
|
+
export declare function watchPpidBreadcrumb(options?: PpidBreadcrumbWatchOptions): Promise<string>;
|
|
156
219
|
/**
|
|
157
220
|
* Windows-only safety net for the race #686 reported: on native Windows the
|
|
158
221
|
* MCP's own `process.ppid` is an interposed `cmd.exe`, so `watchPpidBreadcrumb()`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-resolver.d.ts","sourceRoot":"","sources":["../../src/hooks/session-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;
|
|
1
|
+
{"version":3,"file":"session-resolver.d.ts","sourceRoot":"","sources":["../../src/hooks/session-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAeH,OAAO,EAIL,KAAK,mBAAmB,EACzB,MAAM,uBAAuB,CAAC;AAqB/B,iEAAiE;AACjE,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,MAAM,GAAG,eAAe,GAAG,KAAK,CAAC;AAE1E,MAAM,WAAW,sBAAsB;IACrC,uEAAuE;IACvE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,2CAA2C;IAC3C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,4CAA4C;IAC5C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,yDAAyD;IACzD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,gDAAgD;IAChD,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC;;;;;;OAMG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,eAAe,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC9F;AA0DD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAIxF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,cAAc,GAAE,MAA6C,GAC5D,MAAM,GAAG,IAAI,CA+Bf;AAED,6DAA6D;AAC7D,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,iDAAiD;IACjD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,cAAc,CAAC,EAAE,MAAM,GACtB,qBAAqB,GAAG,IAAI,CAU9B;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAe1F;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGnD;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,GAAE,sBAAsB,GAAG;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAO,GAC9D,OAAO,CAAC,MAAM,CAAC,CAmIjB;AAED,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAAC,sBAAsB,EAAE,cAAc,CAAC,GAAG;IACtF,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,UAAU,GAAG,cAAc,CAAC,CAAC;CAC5E,GAAG,CACE;IAAE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAA;CAAE,GACxC;IACE,QAAQ,CAAC,mBAAmB,EAAE,IAAI,CAAC;IACnC,qDAAqD;IACrD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,0BAA0B,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;CACxE,CACJ,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,MAAM,CAAC,CA+IjB;AAmBD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,+BAA+B,CACnD,OAAO,GAAE;IACP,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CACb,GAClB,OAAO,CAAC,MAAM,CAAC,CAkDjB;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAG3E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,6BAA6B,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAGpF;AAeD,mEAAmE;AACnE,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,KAAK,CAAC;AAErE;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,gFAAgF;IAChF,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,0DAA0D;IAC1D,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,8EAA8E;IAC9E,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC5C;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACvC,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7C,QAAQ,GAAG,IAAI,CAiBjB;AAeD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,qBAAqB,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAwBjG;AA6BD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,GAAG,MAAM,GAAG,IAAI,CA6ChB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAU/C,CAAC;AAEH,mEAAmE;AACnE,MAAM,WAAW,wBAAwB;IACvC,uEAAuE;IACvE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IACpC,6EAA6E;IAC7E,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,oDAAoD;IACpD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,6DAA6D;AAC7D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;CACpC;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,wBAAwB,GAAG,iBAAiB,GAAG,IAAI,CAoB7F;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAWvE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,iBAAiB,GAAG,IAAI,EACjC,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAGT"}
|
|
@@ -36,8 +36,9 @@ import { existsSync, readFileSync, readdirSync, statSync, openSync, readSync, cl
|
|
|
36
36
|
import { resolve, basename } from 'node:path';
|
|
37
37
|
import { homedir } from 'node:os';
|
|
38
38
|
import { createLogger } from '../shared/index.js';
|
|
39
|
-
import { getAncestorPids } from './process-ancestry.js';
|
|
39
|
+
import { getAncestorPids, isNpmExecWrapper, readParentAndCommand, } from './process-ancestry.js';
|
|
40
40
|
import { redactSensitive } from '../config.js';
|
|
41
|
+
import { hasLiveOwningEngine } from '../storage/local-store.js';
|
|
41
42
|
const logger = createLogger('session-resolver');
|
|
42
43
|
const SESSION_ID_RE = /^[a-zA-Z0-9_-]{1,128}$/;
|
|
43
44
|
const DEFAULT_STORAGE_DIR = resolve(homedir(), '.newrelic-preflight');
|
|
@@ -371,13 +372,128 @@ export async function resolveSessionId(options = {}) {
|
|
|
371
372
|
* already adopted and is worth acting on — this function doesn't know or
|
|
372
373
|
* care. No 60s WARN log: a cwd-sourced session working fine while the ppid
|
|
373
374
|
* breadcrumb stays silent is expected, not alarming.
|
|
375
|
+
*
|
|
376
|
+
* With `includeParentOfPpid`, each tick also checks the breadcrumb of our
|
|
377
|
+
* ppid's own parent, but only when our ppid is npm's `npm exec` wrapper.
|
|
378
|
+
* That covers an `npx`-launched engine: the wrapper never gets a breadcrumb,
|
|
379
|
+
* so the direct watch alone can never correct a wrong cwd guess (#479: a
|
|
380
|
+
* Copilot engine started in a directory where Claude Code is active adopts
|
|
381
|
+
* the Claude session's id), and one level up is the host that ran `npx`,
|
|
382
|
+
* where its hooks write theirs. The wrapper is recognized by its command
|
|
383
|
+
* line, read with its parent in one `ps` call (readParentAndCommand()). An
|
|
384
|
+
* engine its host launched directly never looks above its ppid: that level
|
|
385
|
+
* is the host's own parent, which can carry another host's session when
|
|
386
|
+
* that host's hooks run as its children (Copilot in the VS Code extension
|
|
387
|
+
* host that also runs the Claude Code extension, say). Behind the wrapper:
|
|
388
|
+
*
|
|
389
|
+
* - A parent-level hit is only ever a correction. Once the slot names
|
|
390
|
+
* `staleId` the guess was right, and the parent level is not read again:
|
|
391
|
+
* a later change there is the host switching sessions (`/clear`,
|
|
392
|
+
* `/resume`), and adopting that as a correction would carry the old
|
|
393
|
+
* session's tool calls into the new one. So `staleId` coming back always
|
|
394
|
+
* means our ppid's own breadcrumb confirmed the guess.
|
|
395
|
+
* - The slot is also read each time the caller reports draining activity
|
|
396
|
+
* under `staleId` (subscribeToStaleIdActivity). The host's hook writes the
|
|
397
|
+
* slot before it appends the event, so this catches a slot that named the
|
|
398
|
+
* guess only between two ticks, provided a tool call drained in that gap.
|
|
399
|
+
* Only paired tool calls are reported, so a prompt with a text-only reply
|
|
400
|
+
* followed by `/clear` inside one tick gap still goes unseen. A wrong
|
|
401
|
+
* guess drains the guessed session's events too, and those never latch:
|
|
402
|
+
* our host's slot does not name that session. Activity reported before
|
|
403
|
+
* any lookup has succeeded can't be checked against the slot. If a lookup
|
|
404
|
+
* fails, before or after that activity, the activity stops the parent
|
|
405
|
+
* level too. A failed lookup is retried only on ticks 2, 4, 8, 16, ...
|
|
406
|
+
* (about 0.3s, 1.8s, 9.8s and 26s into the watch), so a wrong guess goes
|
|
407
|
+
* uncorrected whenever the guessed session's activity arrives while the
|
|
408
|
+
* lookup is failing. The retries keep spreading out, so that window lasts
|
|
409
|
+
* as long as `ps` keeps failing, not only tens of seconds.
|
|
410
|
+
* - A parent-level session that already has a live owning engine is not
|
|
411
|
+
* ours. Once skipped, an id stays skipped, so a neighbour whose engine
|
|
412
|
+
* later exits is not adopted then.
|
|
413
|
+
* - Never on Linux. The collector writes a breadcrumb at each of its
|
|
414
|
+
* ancestors there (collector-script.ts's writePpidBreadcrumb()), so the
|
|
415
|
+
* host's parent is routinely a shared slot (an editor's main process, a
|
|
416
|
+
* shell) carrying a concurrent session's id, which may have no engine of
|
|
417
|
+
* its own or not have adopted its id yet. Elsewhere the collector writes
|
|
418
|
+
* only its own ppid. Nor on Windows, which has no `ps`.
|
|
374
419
|
*/
|
|
375
420
|
export async function watchPpidBreadcrumb(options = {}) {
|
|
376
421
|
const ppid = options.ppid ?? process.ppid;
|
|
377
422
|
const storagePath = options.storagePath ?? DEFAULT_STORAGE_DIR;
|
|
423
|
+
const platform = options.ancestry?.platform ?? process.platform;
|
|
424
|
+
const staleId = options.includeParentOfPpid ? options.staleId : undefined;
|
|
425
|
+
const watchesParentLevel = options.includeParentOfPpid === true && platform !== 'linux' && platform !== 'win32';
|
|
378
426
|
let attempt = 0;
|
|
427
|
+
let tickCount = 0;
|
|
428
|
+
// Kept once our ppid's lookup succeeds: [ppid, parent] when ppid is an
|
|
429
|
+
// `npm exec` wrapper, else [ppid], past which resolveFromAncestorBreadcrumb
|
|
430
|
+
// never reads. The lookup runs on ticks 1, 2, 4, 8, ... until one succeeds,
|
|
431
|
+
// so a failed one (a `ps` timeout under load) is retried soon enough to
|
|
432
|
+
// recover from a blip, rarely enough that a `ps` that keeps timing out
|
|
433
|
+
// (each attempt blocks for up to 2s) costs little.
|
|
434
|
+
let parentLevelPids;
|
|
435
|
+
// Set once the parent slot names staleId, or staleId activity can't be
|
|
436
|
+
// checked against it; see the doc comment.
|
|
437
|
+
let parentLevelDone = false;
|
|
438
|
+
let lookupFailed = false;
|
|
439
|
+
// staleId activity reported before any lookup ran. A successful lookup
|
|
440
|
+
// clears it: its tick reads the slot straight away.
|
|
441
|
+
let uncheckedActivity = false;
|
|
442
|
+
let settled = false;
|
|
443
|
+
const skippedParentIds = new Set();
|
|
444
|
+
const stopReadingParentLevel = (reason) => {
|
|
445
|
+
parentLevelDone = true;
|
|
446
|
+
logger.debug(`${reason}; no longer reading the ppid parent breadcrumb`, { ppid, staleId });
|
|
447
|
+
};
|
|
448
|
+
const readParentLevelPids = () => {
|
|
449
|
+
if (parentLevelPids)
|
|
450
|
+
return parentLevelPids;
|
|
451
|
+
if ((tickCount & (tickCount - 1)) !== 0)
|
|
452
|
+
return [ppid]; // not a power of two
|
|
453
|
+
const lookup = readParentAndCommand(ppid, options.ancestry);
|
|
454
|
+
if (!lookup) {
|
|
455
|
+
logger.debug('Could not read the ppid command line; retrying on a later tick', {
|
|
456
|
+
ppid,
|
|
457
|
+
tick: tickCount,
|
|
458
|
+
});
|
|
459
|
+
lookupFailed = true;
|
|
460
|
+
if (uncheckedActivity)
|
|
461
|
+
stopReadingParentLevel('Activity under the cwd guess went unchecked');
|
|
462
|
+
return [ppid];
|
|
463
|
+
}
|
|
464
|
+
uncheckedActivity = false;
|
|
465
|
+
if (lookup.parentPid !== null && isNpmExecWrapper(lookup.command)) {
|
|
466
|
+
parentLevelPids = [ppid, lookup.parentPid];
|
|
467
|
+
}
|
|
468
|
+
else {
|
|
469
|
+
parentLevelPids = [ppid];
|
|
470
|
+
logger.debug('ppid is not an npm exec wrapper; not watching its parent breadcrumb', {
|
|
471
|
+
ppid,
|
|
472
|
+
});
|
|
473
|
+
}
|
|
474
|
+
return parentLevelPids;
|
|
475
|
+
};
|
|
476
|
+
// Reads the slot from the cached pids only: this runs on the caller's
|
|
477
|
+
// drain path, where a `ps` call could block for up to 2s.
|
|
478
|
+
const onStaleIdActivity = () => {
|
|
479
|
+
if (settled || !watchesParentLevel || parentLevelDone)
|
|
480
|
+
return;
|
|
481
|
+
if (!parentLevelPids) {
|
|
482
|
+
if (lookupFailed)
|
|
483
|
+
stopReadingParentLevel('Activity under the cwd guess went unchecked');
|
|
484
|
+
else
|
|
485
|
+
uncheckedActivity = true;
|
|
486
|
+
return;
|
|
487
|
+
}
|
|
488
|
+
if (resolveFromAncestorBreadcrumb(storagePath, parentLevelPids)?.sessionId === staleId) {
|
|
489
|
+
stopReadingParentLevel('The ppid parent breadcrumb named the cwd guess as its activity drained');
|
|
490
|
+
}
|
|
491
|
+
};
|
|
492
|
+
if (options.includeParentOfPpid)
|
|
493
|
+
options.subscribeToStaleIdActivity?.(onStaleIdActivity);
|
|
379
494
|
return new Promise((resolvePromise, rejectPromise) => {
|
|
380
495
|
const onAbort = () => {
|
|
496
|
+
settled = true;
|
|
381
497
|
rejectPromise(new Error('session resolution aborted'));
|
|
382
498
|
};
|
|
383
499
|
if (options.signal) {
|
|
@@ -392,6 +508,7 @@ export async function watchPpidBreadcrumb(options = {}) {
|
|
|
392
508
|
}
|
|
393
509
|
}
|
|
394
510
|
const tick = () => {
|
|
511
|
+
tickCount++;
|
|
395
512
|
if (options.signal?.aborted) {
|
|
396
513
|
options.signal.removeEventListener('abort', onAbort);
|
|
397
514
|
return;
|
|
@@ -401,9 +518,42 @@ export async function watchPpidBreadcrumb(options = {}) {
|
|
|
401
518
|
logger.debug('Resolved corrected session_id from ppid breadcrumb', { sessionId: sid });
|
|
402
519
|
if (options.signal)
|
|
403
520
|
options.signal.removeEventListener('abort', onAbort);
|
|
521
|
+
settled = true;
|
|
404
522
|
resolvePromise(sid);
|
|
405
523
|
return;
|
|
406
524
|
}
|
|
525
|
+
if (watchesParentLevel && !parentLevelDone) {
|
|
526
|
+
// resolveFromAncestorBreadcrumb skips index 0, our ppid.
|
|
527
|
+
const fromParent = resolveFromAncestorBreadcrumb(storagePath, readParentLevelPids());
|
|
528
|
+
if (fromParent && !skippedParentIds.has(fromParent.sessionId)) {
|
|
529
|
+
const { sessionId, pid } = fromParent;
|
|
530
|
+
if (sessionId === staleId) {
|
|
531
|
+
parentLevelDone = true;
|
|
532
|
+
logger.debug('The ppid parent breadcrumb matches the cwd guess; no longer reading it', {
|
|
533
|
+
sessionId,
|
|
534
|
+
pid,
|
|
535
|
+
});
|
|
536
|
+
}
|
|
537
|
+
else if (hasLiveOwningEngine(storagePath, sessionId)) {
|
|
538
|
+
skippedParentIds.add(sessionId);
|
|
539
|
+
logger.debug('Ignoring the ppid parent breadcrumb: its session has a live owner', {
|
|
540
|
+
sessionId,
|
|
541
|
+
pid,
|
|
542
|
+
});
|
|
543
|
+
}
|
|
544
|
+
else {
|
|
545
|
+
logger.debug('Resolved corrected session_id from the ppid parent breadcrumb', {
|
|
546
|
+
sessionId,
|
|
547
|
+
pid,
|
|
548
|
+
});
|
|
549
|
+
if (options.signal)
|
|
550
|
+
options.signal.removeEventListener('abort', onAbort);
|
|
551
|
+
settled = true;
|
|
552
|
+
resolvePromise(sessionId);
|
|
553
|
+
return;
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
}
|
|
407
557
|
const delay = nextDelayMs(attempt++);
|
|
408
558
|
const handle = setTimeout(tick, delay);
|
|
409
559
|
handle.unref?.();
|
|
@@ -417,11 +567,10 @@ export async function watchPpidBreadcrumb(options = {}) {
|
|
|
417
567
|
* Whether `<storagePath>/buffer-<sessionId>.jsonl` exists and is non-empty —
|
|
418
568
|
* i.e. the hook collector has actually appended at least one event for this
|
|
419
569
|
* session. Mirrors `LocalStore`'s buffer-naming convention
|
|
420
|
-
* (`buffer-<sessionId>.jsonl`) without
|
|
421
|
-
*
|
|
422
|
-
*
|
|
423
|
-
*
|
|
424
|
-
* extra guard, not load-bearing.
|
|
570
|
+
* (`buffer-<sessionId>.jsonl`) without constructing a `LocalStore`; the file
|
|
571
|
+
* is only ever created by `LocalStore.appendEvent()`'s `appendFileSync`, so
|
|
572
|
+
* existence already implies non-empty content in practice — the size check
|
|
573
|
+
* is a cheap extra guard, not load-bearing.
|
|
425
574
|
*/
|
|
426
575
|
function hasActiveBuffer(storagePath, sessionId) {
|
|
427
576
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-resolver.js","sourceRoot":"","sources":["../../src/hooks/session-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EACL,UAAU,EACV,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,SAAS,IAAI,WAAW,GACzB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,MAAM,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAC;AAEhD,MAAM,aAAa,GAAG,wBAAwB,CAAC;AAC/C,MAAM,mBAAmB,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,qBAAqB,CAAC,CAAC;AACtE,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACrD,MAAM,cAAc,GAAG,IAAI,CAAC;AAC5B,MAAM,aAAa,GAAG,MAAM,CAAC;AAE7B;;;;;GAKG;AACH,MAAM,uBAAuB,GAAG,CAAC,CAAC;AA+ClC;;;;;GAKG;AACH,SAAS,oBAAoB,CAAC,YAAuC;IACnE,IAAI,CAAC,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACnE,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IACtD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7E,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/E,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC/D,OAAO,MAA2B,CAAC;AACrC,CAAC;AAED;;;;GAIG;AACH,SAAS,yBAAyB,CAAC,YAAqB;IACtD,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/E,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChD,OAAO,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,YAAuC;IACvE,MAAM,MAAM,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,OAAO,yBAAyB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AACxD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CACnC,WAAmB,EACnB,IAAwB,EACxB,iBAAyB,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI;IAE7D,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACvD,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,EAAE,iBAAiB,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC;IAC9E,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;QAAE,OAAO,IAAI,CAAC;IAE7C,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC;IAC7C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,GAAG,cAAc,EAAE,CAAC;QAC7B,MAAM,CAAC,KAAK,CAAC,0DAA0D,EAAE;YACvE,IAAI;YACJ,OAAO;YACP,cAAc;SACf,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACvB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,OAAO,GAAG,CAAC;AACb,CAAC;AAWD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,6BAA6B,CAC3C,WAAmB,EACnB,YAA+B,EAC/B,cAAuB;IAEvB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACzD,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAE,CAAC;QACjC,MAAM,SAAS,GACb,cAAc,KAAK,SAAS;YAC1B,CAAC,CAAC,qBAAqB,CAAC,WAAW,EAAE,GAAG,CAAC;YACzC,CAAC,CAAC,qBAAqB,CAAC,WAAW,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC;QAC9D,IAAI,SAAS;YAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;IAClD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAW;IAChD,OAAO,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AACrC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,WAAmB,EAAE,GAAuB;IACzE,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7D,MAAM,YAAY,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;IACjD,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,EAAE,gBAAgB,EAAE,GAAG,YAAY,MAAM,CAAC,CAAC;IACrF,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7C,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACvB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,IAAI,OAAO,GAAG,gBAAgB,CAAC,MAAM;QAAE,OAAO,gBAAgB,CAAC,OAAO,CAAE,CAAC;IACzE,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,UAA6D,EAAE;IAE/D,MAAM,YAAY,GAChB,OAAO,CAAC,YAAY,KAAK,SAAS;QAChC,CAAC,CAAC,OAAO,CAAC,YAAY;QACtB,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,mBAAmB,CAAC;IAE/D,0EAA0E;IAC1E,8DAA8D;IAC9D,MAAM,UAAU,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACnD,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,yCAAyC,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;QAClF,OAAO,CAAC,kBAAkB,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;QAC1E,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,0EAA0E;IAC1E,0EAA0E;IAC1E,wEAAwE;IACxE,sEAAsE;IACtE,kEAAkE;IAClE,sEAAsE;IACtE,iEAAiE;IACjE,wEAAwE;IACxE,sEAAsE;IACtE,qEAAqE;IACrE,kDAAkD;IAClD,MAAM,SAAS,GAAG,qBAAqB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC3D,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,CAAC,IAAI,CAAC,iDAAiD,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;QACzF,OAAO,CAAC,kBAAkB,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;QACvE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,wEAAwE;IACxE,wEAAwE;IACxE,6EAA6E;IAC7E,2EAA2E;IAC3E,4DAA4D;IAC5D,IAAI,YAA2C,CAAC;IAEhD,OAAO,IAAI,OAAO,CAAS,CAAC,cAAc,EAAE,aAAa,EAAE,EAAE;QAC3D,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,aAAa,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC;QACF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC3B,OAAO,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAClE,iEAAiE;YACjE,0DAA0D;YAC1D,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC3B,OAAO,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAG,GAAG,EAAE;YAChB,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;gBAC5B,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACrD,OAAO;YACT,CAAC;YACD,MAAM,GAAG,GAAG,qBAAqB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YACrD,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;gBACvC,MAAM,CAAC,IAAI,CAAC,qCAAqC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC3F,OAAO,CAAC,kBAAkB,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;gBACjE,IAAI,OAAO,CAAC,MAAM;oBAAE,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACzE,cAAc,CAAC,GAAG,CAAC,CAAC;gBACpB,OAAO;YACT,CAAC;YACD,mEAAmE;YACnE,yEAAyE;YACzE,oDAAoD;YACpD,YAAY;gBACV,OAAO,CAAC,YAAY,IAAI,eAAe,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,uBAAuB,EAAE,CAAC,CAAC;YACvF,MAAM,YAAY,GAAG,6BAA6B,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;YAC9E,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;gBACvC,MAAM,CAAC,IAAI,CAAC,mDAAmD,EAAE;oBAC/D,SAAS,EAAE,YAAY,CAAC,SAAS;oBACjC,GAAG,EAAE,YAAY,CAAC,GAAG;oBACrB,KAAK,EAAE,YAAY,CAAC,KAAK;oBACzB,SAAS,EAAE,OAAO;iBACnB,CAAC,CAAC;gBACH,OAAO,CAAC,kBAAkB,EAAE,CAAC;oBAC3B,MAAM,EAAE,eAAe;oBACvB,SAAS,EAAE,YAAY,CAAC,SAAS;iBAClC,CAAC,CAAC;gBACH,IAAI,OAAO,CAAC,MAAM;oBAAE,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACzE,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;gBACvC,OAAO;YACT,CAAC;YACD,MAAM,UAAU,GAAG,cAAc,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YACpD,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;gBACvC,MAAM,CAAC,IAAI,CAAC,yDAAyD,EAAE;oBACrE,SAAS,EAAE,UAAU;oBACrB,SAAS,EAAE,OAAO;iBACnB,CAAC,CAAC;gBACH,OAAO,CAAC,kBAAkB,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;gBACvE,IAAI,OAAO,CAAC,MAAM;oBAAE,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACzE,cAAc,CAAC,UAAU,CAAC,CAAC;gBAC3B,OAAO;YACT,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACvC,IAAI,CAAC,WAAW,IAAI,OAAO,IAAI,aAAa,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;gBACtE,WAAW,GAAG,IAAI,CAAC;gBACnB,MAAM,CAAC,IAAI,CACT,2GAA2G,CAC5G,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACvC,uEAAuE;YACvE,+DAA+D;YAC/D,yBAAyB;YACzB,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;QACnB,CAAC,CAAC;QAEF,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACvC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,UAA6D,EAAE;IAE/D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAC1C,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,mBAAmB,CAAC;IAE/D,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,OAAO,IAAI,OAAO,CAAS,CAAC,cAAc,EAAE,aAAa,EAAE,EAAE;QAC3D,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,aAAa,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC;QACF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC3B,OAAO,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAClE,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC3B,OAAO,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAG,GAAG,EAAE;YAChB,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;gBAC5B,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACrD,OAAO;YACT,CAAC;YACD,MAAM,GAAG,GAAG,qBAAqB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YACrD,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,CAAC,KAAK,CAAC,oDAAoD,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;gBACvF,IAAI,OAAO,CAAC,MAAM;oBAAE,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACzE,cAAc,CAAC,GAAG,CAAC,CAAC;gBACpB,OAAO;YACT,CAAC;YACD,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACvC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;QACnB,CAAC,CAAC;QAEF,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACvC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,eAAe,CAAC,WAAmB,EAAE,SAAiB;IAC7D,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,SAAS,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,UAKI,EAAE,OAAO,EAAE,EAAE,EAAE;IAEnB,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,mBAAmB,CAAC;IAE/D,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,OAAO,IAAI,OAAO,CAAS,CAAC,cAAc,EAAE,aAAa,EAAE,EAAE;QAC3D,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,aAAa,CAAC,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC;QAC3D,CAAC,CAAC;QACF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC3B,OAAO,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAClE,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC3B,OAAO,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAG,GAAG,EAAE;YAChB,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;gBAC5B,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACrD,OAAO;YACT,CAAC;YACD,MAAM,SAAS,GAAG,cAAc,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YACnD,IAAI,SAAS,IAAI,SAAS,KAAK,OAAO,IAAI,eAAe,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,CAAC;gBAClF,MAAM,CAAC,IAAI,CACT,iFAAiF,EACjF;oBACE,OAAO;oBACP,WAAW,EAAE,SAAS;iBACvB,CACF,CAAC;gBACF,IAAI,OAAO,CAAC,MAAM;oBAAE,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACzE,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC1B,OAAO;YACT,CAAC;YACD,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACvC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;QACnB,CAAC,CAAC;QAEF,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACvC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAA6B;IAChE,IAAI,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC;IACtB,OAAO,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACzF,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,6BAA6B,CAAC,EAA6B;IACzE,IAAI,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC;IACtB,OAAO,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC5D,CAAC;AA2CD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,YAAY,CAC1B,YAAuC,EACvC,OAA8C;IAE9C,MAAM,MAAM,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,MAAM,SAAS,GACb,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QAC1E,CAAC,CAAC,MAAM,CAAC,SAAS;QAClB,CAAC,CAAC,yBAAyB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5F,MAAM,UAAU,GACd,MAAM,CAAC,UAAU,KAAK,MAAM,IAAI,MAAM,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1F,MAAM,MAAM,GACV,OAAO,EAAE,aAAa,KAAK,IAAI,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QAC9F,CAAC,CAAC,MAAM,CAAC,MAAM;QACf,CAAC,CAAC,IAAI,CAAC;IAEX,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AACjD,CAAC;AAED,4EAA4E;AAC5E,6EAA6E;AAC7E,0EAA0E;AAC1E,cAAc;AACd,MAAM,4BAA4B,GAAG,EAAE,GAAG,IAAI,CAAC;AAC/C,MAAM,+BAA+B,GAAG,IAAI,GAAG,IAAI,CAAC;AAQpD;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY,EAAE,qBAA8B;IAChF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB;YAAE,MAAM,CAAC,6CAA6C;QAC3F,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACvB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAChC,2EAA2E;QAC3E,gCAAgC;QAChC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;YAAE,SAAS;QAC3C,IAAI,MAA2B,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAwB,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,IACE,MAAM,CAAC,IAAI,KAAK,UAAU;YAC1B,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;YAClC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EACzB,CAAC;YACD,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,kBAAkB,CAAC,WAAmB,EAAE,SAAiB;IAChE,MAAM,QAAQ,GAAG,GAAG,SAAS,QAAQ,CAAC;IACtC,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACxD,IAAI,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;IAC9C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAGnC;IACC,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAC5B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IAEhD,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACnF,MAAM,cAAc,GAAG,kBAAkB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAClE,IAAI,cAAc,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAEzC,IAAI,EAAU,CAAC;IACf,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC;QACrC,IAAI,IAAI,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC5B,EAAE,GAAG,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,IAAI,GAAG,GAAG,IAAI,CAAC;QACf,0EAA0E;QAC1E,oEAAoE;QACpE,sEAAsE;QACtE,0DAA0D;QAC1D,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,OAAO,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,GAAG,GAAG,+BAA+B,EAAE,CAAC;YAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;YAC9D,GAAG,IAAI,SAAS,CAAC;YACjB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACvC,MAAM,SAAS,GAAG,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;YAC1D,MAAM,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;YACjF,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACpD,yEAAyE;YACzE,sEAAsE;YACtE,MAAM,KAAK,GAAG,qBAAqB,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;YACpD,IAAI,KAAK,KAAK,IAAI;gBAAE,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;IACd,CAAC;YAAS,CAAC;QACT,SAAS,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAwB,IAAI,GAAG,CAAC;IAC3D,KAAK;IACL,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,GAAG;IACH,IAAI;IACJ,EAAE;CACH,CAAC,CAAC;AAkBH;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAgC;IACjE,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC;IAEzC,IAAI,QAAQ,IAAI,QAAQ,CAAC,UAAU,KAAK,MAAM,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QAChE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjD,CAAC;IACD,IAAI,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAC9D,CAAC;IACD,IAAI,QAAQ,IAAI,QAAQ,CAAC,UAAU,KAAK,MAAM,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QAChE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjD,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IACvB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YACjE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QACvC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAyB;IAC7D,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,CAAC,CAAC;QACX,KAAK,UAAU;YACb,OAAO,CAAC,CAAC;QACX,KAAK,MAAM;YACT,OAAO,CAAC,CAAC;QACX,KAAK,KAAK;YACR,OAAO,CAAC,CAAC;IACb,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,wBAAwB,CACtC,OAAiC,EACjC,IAAuB;IAEvB,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAClC,OAAO,qBAAqB,CAAC,IAAI,CAAC,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAC;AACvE,CAAC"}
|
|
1
|
+
{"version":3,"file":"session-resolver.js","sourceRoot":"","sources":["../../src/hooks/session-resolver.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AAcvB,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AA4DlE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAwBzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAMhF,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAgBhD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -84,6 +84,7 @@ import { SessionSpan } from './tracing/session-span.js';
|
|
|
84
84
|
import { TaskSpanTracker } from './tracing/task-span-tracker.js';
|
|
85
85
|
import { emitToolCallSpan } from './tracing/tool-call-span.js';
|
|
86
86
|
import { NrIngestManager } from './transport/nr-ingest.js';
|
|
87
|
+
import { UNFORWARDED_SESSIONS_HINT, UnforwardedSessionMonitor, detectCloudForwardingGap, } from './transport/unforwarded-session-monitor.js';
|
|
87
88
|
import { HomelabAccumulator, HomelabForwarder } from './homelab/index.js';
|
|
88
89
|
import { VERSION } from './version.js';
|
|
89
90
|
export { loadMcpConfig, redactSensitive } from './config.js';
|
|
@@ -111,7 +112,7 @@ function loadConfigOrDie(options) {
|
|
|
111
112
|
}
|
|
112
113
|
catch (err) {
|
|
113
114
|
const msg = err instanceof Error ? err.message : String(err);
|
|
114
|
-
throw new Error(`${msg}\n\nRun 'preflight doctor' to diagnose
|
|
115
|
+
throw new Error(`${msg}\n\nRun 'preflight doctor' to diagnose.`, { cause: err });
|
|
115
116
|
}
|
|
116
117
|
}
|
|
117
118
|
/**
|
|
@@ -665,6 +666,9 @@ async function main() {
|
|
|
665
666
|
// only when the initial resolution came from the collision-prone cwd
|
|
666
667
|
// fallback — see resolvedViaCwdOnly) when shutdown fires.
|
|
667
668
|
let ppidCorrectionAbort;
|
|
669
|
+
// That watch's listener for tool calls drained under the cwd guess, set
|
|
670
|
+
// while it runs (see subscribeToStaleIdActivity in session-resolver.ts).
|
|
671
|
+
let cwdGuessActivity = null;
|
|
668
672
|
// True whenever the live sessionTraceId came from the collision-prone cwd
|
|
669
673
|
// fallback and hasn't yet been ppid-confirmed. While true, the periodic
|
|
670
674
|
// session-JSON checkpoint below is suppressed so a stale identity never
|
|
@@ -793,6 +797,11 @@ async function main() {
|
|
|
793
797
|
// synchronous setup completes, to decide whether to arm a background
|
|
794
798
|
// correction watch (see `startPpidCorrectionWatch` below).
|
|
795
799
|
let resolvedViaCwdOnly = false;
|
|
800
|
+
// --local only: set when the config asked for cloud export but this
|
|
801
|
+
// process fell back to local mode for want of credentials, so every
|
|
802
|
+
// ownerless session it drains is kept locally and never sent to New
|
|
803
|
+
// Relic. Surfaced as a per-session warning and on GET /api/health (#479).
|
|
804
|
+
let unforwardedSessionMonitor;
|
|
796
805
|
if (options.stdio) {
|
|
797
806
|
// Connect stdio FIRST so the MCP handshake can complete immediately.
|
|
798
807
|
// Tools are registered after initialization; tool calls before that
|
|
@@ -864,12 +873,13 @@ async function main() {
|
|
|
864
873
|
config = loadConfigOrDie(options);
|
|
865
874
|
}
|
|
866
875
|
catch (err) {
|
|
867
|
-
const
|
|
868
|
-
if (
|
|
876
|
+
const gap = detectCloudForwardingGap(err);
|
|
877
|
+
if (!gap)
|
|
869
878
|
throw err;
|
|
870
|
-
}
|
|
871
879
|
process.env.NR_AI_MODE = 'local';
|
|
872
880
|
config = loadConfigOrDie(options);
|
|
881
|
+
unforwardedSessionMonitor = new UnforwardedSessionMonitor({ gap });
|
|
882
|
+
logger.warn(`Cloud export is configured (mode='${gap.requestedMode}') but this --local process has no ${gap.missingField}; sessions it drains will not reach New Relic`, { reason: gap.reason, requestedMode: gap.requestedMode, hint: UNFORWARDED_SESSIONS_HINT });
|
|
873
883
|
}
|
|
874
884
|
if (!config.enabled) {
|
|
875
885
|
logger.info('Server disabled via config — exiting');
|
|
@@ -926,7 +936,7 @@ async function main() {
|
|
|
926
936
|
const costTracker = new CostTracker(sessionTracker, { rateMultiplier });
|
|
927
937
|
taskDetector = new TaskDetector({ costTracker });
|
|
928
938
|
const antiPatternDetector = new AntiPatternDetector();
|
|
929
|
-
const efficiencyScorer = new EfficiencyScorer();
|
|
939
|
+
const efficiencyScorer = new EfficiencyScorer({ costTracker });
|
|
930
940
|
const feedbackCollector = new FeedbackCollector();
|
|
931
941
|
const contextWindowTracker = new ContextWindowTracker();
|
|
932
942
|
const latencyTracker = new LatencyTracker();
|
|
@@ -1611,6 +1621,11 @@ async function main() {
|
|
|
1611
1621
|
},
|
|
1612
1622
|
alertEngine,
|
|
1613
1623
|
alertLog,
|
|
1624
|
+
...(unforwardedSessionMonitor
|
|
1625
|
+
? {
|
|
1626
|
+
unforwardedSessions: () => unforwardedSessionMonitor.getSnapshot(),
|
|
1627
|
+
}
|
|
1628
|
+
: {}),
|
|
1614
1629
|
});
|
|
1615
1630
|
let addr;
|
|
1616
1631
|
try {
|
|
@@ -1786,6 +1801,9 @@ async function main() {
|
|
|
1786
1801
|
logger.warn('onRecord called before full initialization; skipping');
|
|
1787
1802
|
return;
|
|
1788
1803
|
}
|
|
1804
|
+
if (cwdGuessActivity && rawRecord.sessionId === cwdGuessActivity.staleId) {
|
|
1805
|
+
cwdGuessActivity.onActivity();
|
|
1806
|
+
}
|
|
1789
1807
|
// Capture active task ID before recordToolCall may close the current task
|
|
1790
1808
|
const taskIdBeforeRecord = config.otlp.transport !== 'nr-events-api' ? taskDetector.getActiveTaskId() : null;
|
|
1791
1809
|
sessionTracker.recordToolCall(rawRecord);
|
|
@@ -1889,6 +1907,11 @@ async function main() {
|
|
|
1889
1907
|
logger.warn('Tool record arrived with cloud ingest not yet initialized — AiToolCall/AiMcpToolCall events are being dropped until session ID resolution completes');
|
|
1890
1908
|
}
|
|
1891
1909
|
capturedNrIngest?.ingestToolCall(record, auditRecord);
|
|
1910
|
+
// Only set on --local, whose unscoped drain skips every per-session
|
|
1911
|
+
// buffer with a live owning engine. Records from the legacy shared
|
|
1912
|
+
// buffer.jsonl are drained regardless and usually carry no sessionId,
|
|
1913
|
+
// so the monitor counts them as untracked.
|
|
1914
|
+
unforwardedSessionMonitor?.recordToolCall(record.sessionId);
|
|
1892
1915
|
// SSE consumers filter by sessionId for the per-session live tail.
|
|
1893
1916
|
// Records without a sessionId are legacy buffer entries that surfaced
|
|
1894
1917
|
// during the migrateLegacyBuffer() window on first boot — skip the
|
|
@@ -2753,20 +2776,29 @@ async function main() {
|
|
|
2753
2776
|
// can (see the win32 branch's own comment), but a shared flag makes
|
|
2754
2777
|
// that a documented invariant rather than an accident of timing.
|
|
2755
2778
|
let corrected = false;
|
|
2779
|
+
let activityListener = null;
|
|
2756
2780
|
void watchPpidBreadcrumb({
|
|
2757
2781
|
storagePath: config.storagePath,
|
|
2758
2782
|
signal: ppidCorrectionAbort.signal,
|
|
2783
|
+
includeParentOfPpid: true,
|
|
2784
|
+
staleId,
|
|
2785
|
+
subscribeToStaleIdActivity: (onActivity) => {
|
|
2786
|
+
activityListener = { staleId, onActivity };
|
|
2787
|
+
cwdGuessActivity = activityListener;
|
|
2788
|
+
},
|
|
2759
2789
|
})
|
|
2760
2790
|
.then(async (ppidId) => {
|
|
2761
2791
|
if (ppidCorrectionAbort?.signal.aborted || corrected)
|
|
2762
2792
|
return;
|
|
2763
2793
|
if (ppidId === staleId) {
|
|
2764
|
-
// The cwd guess turned out to be correct
|
|
2765
|
-
//
|
|
2766
|
-
//
|
|
2767
|
-
//
|
|
2768
|
-
//
|
|
2769
|
-
//
|
|
2794
|
+
// The cwd guess turned out to be correct, as confirmed by our own
|
|
2795
|
+
// ppid's breadcrumb: the watch never resolves to staleId from an
|
|
2796
|
+
// ancestor, whose breadcrumb may be a co-located session's. No
|
|
2797
|
+
// correction needed, so no reason to keep suppressing checkpoints
|
|
2798
|
+
// for the rest of the cap window. It was NOT seeded eagerly (see
|
|
2799
|
+
// the resolvedViaCwdOnly gate on rehydrateTrackersIfResumed's
|
|
2800
|
+
// first call site) precisely because it wasn't confirmed yet —
|
|
2801
|
+
// seed it now that it is.
|
|
2770
2802
|
rehydrateTrackersIfResumed(staleId);
|
|
2771
2803
|
clearPendingConfirmation();
|
|
2772
2804
|
return;
|
|
@@ -2784,6 +2816,10 @@ async function main() {
|
|
|
2784
2816
|
logger.warn('PPID correction watch failed', { error: String(err) });
|
|
2785
2817
|
}
|
|
2786
2818
|
clearPendingConfirmation();
|
|
2819
|
+
})
|
|
2820
|
+
.finally(() => {
|
|
2821
|
+
if (cwdGuessActivity === activityListener)
|
|
2822
|
+
cwdGuessActivity = null;
|
|
2787
2823
|
});
|
|
2788
2824
|
// On native Windows the ppid breadcrumb above never matches (see #686
|
|
2789
2825
|
// and watchCwdBreadcrumbForCorrection's own doc comment), so the watch
|