@newrelic/preflight 1.33.2 → 1.35.0
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/README.md +5 -0
- package/dist/alerts/local-alert-rule.d.ts +2 -2
- package/dist/config.d.ts +5 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +41 -10
- package/dist/config.js.map +1 -1
- package/dist/hooks/collector-script.d.ts.map +1 -1
- package/dist/hooks/collector-script.js +40 -0
- package/dist/hooks/collector-script.js.map +1 -1
- package/dist/hooks/process-ancestry.d.ts +82 -0
- package/dist/hooks/process-ancestry.d.ts.map +1 -0
- package/dist/hooks/process-ancestry.js +161 -0
- package/dist/hooks/process-ancestry.js.map +1 -0
- package/dist/hooks/session-resolver.d.ts +44 -9
- package/dist/hooks/session-resolver.d.ts.map +1 -1
- package/dist/hooks/session-resolver.js +75 -7
- package/dist/hooks/session-resolver.js.map +1 -1
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/dist/install/setup-wizard.d.ts +1 -0
- package/dist/install/setup-wizard.d.ts.map +1 -1
- package/dist/install/setup-wizard.js +14 -0
- package/dist/install/setup-wizard.js.map +1 -1
- package/dist/platforms/kiro-adapter.d.ts.map +1 -1
- package/dist/platforms/kiro-adapter.js +41 -0
- package/dist/platforms/kiro-adapter.js.map +1 -1
- package/dist/security/audit-trail.d.ts +2 -0
- package/dist/security/audit-trail.d.ts.map +1 -1
- package/dist/security/audit-trail.js +3 -12
- package/dist/security/audit-trail.js.map +1 -1
- package/dist/server.d.ts +16 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +33 -1
- package/dist/server.js.map +1 -1
- package/dist/transport/nr-ingest.d.ts +19 -0
- package/dist/transport/nr-ingest.d.ts.map +1 -1
- package/dist/transport/nr-ingest.js +44 -66
- package/dist/transport/nr-ingest.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-platform ancestor-PID walk for the MCP server (read side).
|
|
3
|
+
*
|
|
4
|
+
* Why this exists: the session-id breadcrumb the hook collector writes is keyed
|
|
5
|
+
* on a PID, and `resolveFromBreadcrumb()` (session-resolver.ts) looks it up at
|
|
6
|
+
* the MCP server's own `process.ppid`. That only lines up when the server and
|
|
7
|
+
* the collector are both direct children of the IDE. When the server's launch
|
|
8
|
+
* command routes through a wrapper — `npx`, which execs an `npm exec` process
|
|
9
|
+
* in between — the server's `ppid` is the wrapper, not the IDE, and the lookup
|
|
10
|
+
* misses even though the correct breadcrumb is sitting one level further up.
|
|
11
|
+
* Confirmed on Kiro: `Kiro Helper → npm exec → node preflight --stdio`, with
|
|
12
|
+
* the breadcrumb at Kiro Helper's PID.
|
|
13
|
+
*
|
|
14
|
+
* Note this is NOT the same gap `collector-script.ts`'s `getLinuxAncestorPids`
|
|
15
|
+
* covers. That one walks up from the *collector's* ppid so the collector can
|
|
16
|
+
* write a breadcrumb at every ancestor, for hook runners that interpose a shell
|
|
17
|
+
* between the IDE and the collector. A wrapper between the IDE and the *server*
|
|
18
|
+
* is a different branch of the tree, so no amount of write-side walking reaches
|
|
19
|
+
* it — the server has to walk its own ancestry.
|
|
20
|
+
*
|
|
21
|
+
* Platform coverage:
|
|
22
|
+
* - linux — reads `/proc/<pid>/stat`. No subprocess.
|
|
23
|
+
* - darwin and other POSIX — one `ps -Ao pid=,ppid=` call for the whole
|
|
24
|
+
* process table, parsed into a pid→ppid map and walked in memory.
|
|
25
|
+
* - win32 — NOT IMPLEMENTED: returns `[startPid]`, which is exactly the
|
|
26
|
+
* pre-walk behavior, so nothing regresses. `wmic` is deprecated/removed on
|
|
27
|
+
* current Windows and PowerShell `Get-CimInstance` costs hundreds of ms to
|
|
28
|
+
* start, so neither was adopted blind. Consequence to be aware of: a
|
|
29
|
+
* wrapper-launched MCP server on native Windows still can't resolve its
|
|
30
|
+
* session_id by PID. Claude Code on native Windows is unaffected — it
|
|
31
|
+
* launches the server directly and has the cwd breadcrumb as a fallback.
|
|
32
|
+
*
|
|
33
|
+
* The `/proc` parsing here is deliberately duplicated from
|
|
34
|
+
* `collector-script.ts`'s `getLinuxAncestorPids` rather than imported: that
|
|
35
|
+
* module runs on every single tool call under a <5ms budget with a "no heavy
|
|
36
|
+
* imports" rule, and importing this one would pull `node:child_process` into
|
|
37
|
+
* that path. It also has top-level side effects (it reads stdin when invoked
|
|
38
|
+
* directly). Same precedent as `src/metrics/transcript-reasoning.ts`'s
|
|
39
|
+
* duplicated `translateWslPath`. Keep the two parsers in sync.
|
|
40
|
+
*/
|
|
41
|
+
/**
|
|
42
|
+
* Narrowed `execFileSync` shape — only what this module needs, so tests can
|
|
43
|
+
* inject a plain function instead of mocking `node:child_process`. Mirrors
|
|
44
|
+
* `ExecFileFn` in src/alerts/os-notifier.ts.
|
|
45
|
+
*/
|
|
46
|
+
export type ExecFileSyncFn = (file: string, args: readonly string[], options: {
|
|
47
|
+
readonly encoding: 'utf-8';
|
|
48
|
+
readonly timeout: number;
|
|
49
|
+
readonly stdio: readonly ['ignore', 'pipe', 'ignore'];
|
|
50
|
+
}) => string;
|
|
51
|
+
export interface AncestorPidsOptions {
|
|
52
|
+
/** How many levels above `startPid` to walk. Default 4 — see getAncestorPids. */
|
|
53
|
+
readonly maxDepth?: number;
|
|
54
|
+
/** Override `process.platform` (test seam). */
|
|
55
|
+
readonly platform?: NodeJS.Platform;
|
|
56
|
+
/** Override the `ps` invocation (test seam). */
|
|
57
|
+
readonly execFileSync?: ExecFileSyncFn;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Seam for unit tests: replace `readFile` to inject fake `/proc/<pid>/stat`
|
|
61
|
+
* content without touching the real filesystem. Production code never sets this.
|
|
62
|
+
* @internal
|
|
63
|
+
*/
|
|
64
|
+
export declare const _procFs: {
|
|
65
|
+
readFile: (path: string) => string;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Returns `[startPid, parent, grandparent, ...]` — `startPid` is always at
|
|
69
|
+
* index 0, so the result is never empty for a valid input.
|
|
70
|
+
*
|
|
71
|
+
* The walk stops at `maxDepth` levels, at PID <= 1 (init/systemd and the PID-0
|
|
72
|
+
* sentinel are never useful breadcrumb keys), on a cycle, and on any lookup
|
|
73
|
+
* failure. Default `maxDepth` is 4: the motivating `npx` case needs only one
|
|
74
|
+
* level, and a wrapper shell behind it would need two, while deeper ancestors
|
|
75
|
+
* are progressively more *shared* between concurrent sessions on the same
|
|
76
|
+
* machine — so a shallow cap covers real launcher shapes without widening the
|
|
77
|
+
* window for resolving to a neighbouring session's breadcrumb.
|
|
78
|
+
*
|
|
79
|
+
* Never throws.
|
|
80
|
+
*/
|
|
81
|
+
export declare function getAncestorPids(startPid: number, options?: AncestorPidsOptions): number[];
|
|
82
|
+
//# sourceMappingURL=process-ancestry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-ancestry.d.ts","sourceRoot":"","sources":["../../src/hooks/process-ancestry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAYH;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,CAC3B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE;IACP,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;CACvD,KACE,MAAM,CAAC;AAEZ,MAAM,WAAW,mBAAmB;IAClC,iFAAiF;IACjF,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,+CAA+C;IAC/C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IACpC,gDAAgD;IAChD,QAAQ,CAAC,YAAY,CAAC,EAAE,cAAc,CAAC;CACxC;AAED;;;;GAIG;AACH,eAAO,MAAM,OAAO;qBACD,MAAM,KAAG,MAAM;CACjC,CAAC;AAqDF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,MAAM,EAAE,CAwC7F"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-platform ancestor-PID walk for the MCP server (read side).
|
|
3
|
+
*
|
|
4
|
+
* Why this exists: the session-id breadcrumb the hook collector writes is keyed
|
|
5
|
+
* on a PID, and `resolveFromBreadcrumb()` (session-resolver.ts) looks it up at
|
|
6
|
+
* the MCP server's own `process.ppid`. That only lines up when the server and
|
|
7
|
+
* the collector are both direct children of the IDE. When the server's launch
|
|
8
|
+
* command routes through a wrapper — `npx`, which execs an `npm exec` process
|
|
9
|
+
* in between — the server's `ppid` is the wrapper, not the IDE, and the lookup
|
|
10
|
+
* misses even though the correct breadcrumb is sitting one level further up.
|
|
11
|
+
* Confirmed on Kiro: `Kiro Helper → npm exec → node preflight --stdio`, with
|
|
12
|
+
* the breadcrumb at Kiro Helper's PID.
|
|
13
|
+
*
|
|
14
|
+
* Note this is NOT the same gap `collector-script.ts`'s `getLinuxAncestorPids`
|
|
15
|
+
* covers. That one walks up from the *collector's* ppid so the collector can
|
|
16
|
+
* write a breadcrumb at every ancestor, for hook runners that interpose a shell
|
|
17
|
+
* between the IDE and the collector. A wrapper between the IDE and the *server*
|
|
18
|
+
* is a different branch of the tree, so no amount of write-side walking reaches
|
|
19
|
+
* it — the server has to walk its own ancestry.
|
|
20
|
+
*
|
|
21
|
+
* Platform coverage:
|
|
22
|
+
* - linux — reads `/proc/<pid>/stat`. No subprocess.
|
|
23
|
+
* - darwin and other POSIX — one `ps -Ao pid=,ppid=` call for the whole
|
|
24
|
+
* process table, parsed into a pid→ppid map and walked in memory.
|
|
25
|
+
* - win32 — NOT IMPLEMENTED: returns `[startPid]`, which is exactly the
|
|
26
|
+
* pre-walk behavior, so nothing regresses. `wmic` is deprecated/removed on
|
|
27
|
+
* current Windows and PowerShell `Get-CimInstance` costs hundreds of ms to
|
|
28
|
+
* start, so neither was adopted blind. Consequence to be aware of: a
|
|
29
|
+
* wrapper-launched MCP server on native Windows still can't resolve its
|
|
30
|
+
* session_id by PID. Claude Code on native Windows is unaffected — it
|
|
31
|
+
* launches the server directly and has the cwd breadcrumb as a fallback.
|
|
32
|
+
*
|
|
33
|
+
* The `/proc` parsing here is deliberately duplicated from
|
|
34
|
+
* `collector-script.ts`'s `getLinuxAncestorPids` rather than imported: that
|
|
35
|
+
* module runs on every single tool call under a <5ms budget with a "no heavy
|
|
36
|
+
* imports" rule, and importing this one would pull `node:child_process` into
|
|
37
|
+
* that path. It also has top-level side effects (it reads stdin when invoked
|
|
38
|
+
* directly). Same precedent as `src/metrics/transcript-reasoning.ts`'s
|
|
39
|
+
* duplicated `translateWslPath`. Keep the two parsers in sync.
|
|
40
|
+
*/
|
|
41
|
+
import { execFileSync as nodeExecFileSync } from 'node:child_process';
|
|
42
|
+
import { readFileSync } from 'node:fs';
|
|
43
|
+
import { createLogger } from '../shared/index.js';
|
|
44
|
+
const logger = createLogger('process-ancestry');
|
|
45
|
+
/** Whole-table lookup timeout. Matches the 2s budget used for `git` in index.ts. */
|
|
46
|
+
const PS_TIMEOUT_MS = 2000;
|
|
47
|
+
/**
|
|
48
|
+
* Seam for unit tests: replace `readFile` to inject fake `/proc/<pid>/stat`
|
|
49
|
+
* content without touching the real filesystem. Production code never sets this.
|
|
50
|
+
* @internal
|
|
51
|
+
*/
|
|
52
|
+
export const _procFs = {
|
|
53
|
+
readFile: (path) => readFileSync(path, 'utf-8'),
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Parses a `/proc/<pid>/stat` line and returns the parent PID, or null when the
|
|
57
|
+
* line is malformed.
|
|
58
|
+
*
|
|
59
|
+
* Format: `pid (comm) state ppid pgrp ...`. `comm` can itself contain spaces
|
|
60
|
+
* and parentheses, so the field separator is found with lastIndexOf(')').
|
|
61
|
+
*/
|
|
62
|
+
function parentPidFromProcStat(stat) {
|
|
63
|
+
const lastParen = stat.lastIndexOf(')');
|
|
64
|
+
if (lastParen === -1)
|
|
65
|
+
return null;
|
|
66
|
+
// After the last ')': " state ppid ..." — split on space, index [1] is ppid.
|
|
67
|
+
const parsed = parseInt(stat.slice(lastParen + 2).split(' ')[1] ?? '', 10);
|
|
68
|
+
return Number.isFinite(parsed) ? parsed : null;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Builds a pid→ppid map for every process, via a single `ps` call.
|
|
72
|
+
* Returns an empty map on any failure (missing `ps`, non-zero exit, timeout,
|
|
73
|
+
* unparseable output) so callers degrade to a depth-0 walk rather than throw.
|
|
74
|
+
*/
|
|
75
|
+
function readProcessTable(execFileSync) {
|
|
76
|
+
const table = new Map();
|
|
77
|
+
let out;
|
|
78
|
+
try {
|
|
79
|
+
// `-A` = all processes; `-o pid=,ppid=` = those two columns, no header.
|
|
80
|
+
// Both are POSIX options. One call for the whole table rather than one per
|
|
81
|
+
// level, so the walk costs a single subprocess (~40ms on macOS).
|
|
82
|
+
out = execFileSync('ps', ['-Ao', 'pid=,ppid='], {
|
|
83
|
+
encoding: 'utf-8',
|
|
84
|
+
timeout: PS_TIMEOUT_MS,
|
|
85
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
// execFileSync throws on non-zero exit, timeout, and ENOENT alike. A
|
|
90
|
+
// pathological injected fn could also throw synchronously — same handling.
|
|
91
|
+
logger.debug('Could not read process table via ps', { error: String(err) });
|
|
92
|
+
return table;
|
|
93
|
+
}
|
|
94
|
+
if (typeof out !== 'string')
|
|
95
|
+
return table;
|
|
96
|
+
for (const line of out.split('\n')) {
|
|
97
|
+
const parts = line.trim().split(/\s+/);
|
|
98
|
+
if (parts.length < 2)
|
|
99
|
+
continue;
|
|
100
|
+
const pid = parseInt(parts[0] ?? '', 10);
|
|
101
|
+
const ppid = parseInt(parts[1] ?? '', 10);
|
|
102
|
+
if (!Number.isFinite(pid) || !Number.isFinite(ppid))
|
|
103
|
+
continue;
|
|
104
|
+
table.set(pid, ppid);
|
|
105
|
+
}
|
|
106
|
+
return table;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Returns `[startPid, parent, grandparent, ...]` — `startPid` is always at
|
|
110
|
+
* index 0, so the result is never empty for a valid input.
|
|
111
|
+
*
|
|
112
|
+
* The walk stops at `maxDepth` levels, at PID <= 1 (init/systemd and the PID-0
|
|
113
|
+
* sentinel are never useful breadcrumb keys), on a cycle, and on any lookup
|
|
114
|
+
* failure. Default `maxDepth` is 4: the motivating `npx` case needs only one
|
|
115
|
+
* level, and a wrapper shell behind it would need two, while deeper ancestors
|
|
116
|
+
* are progressively more *shared* between concurrent sessions on the same
|
|
117
|
+
* machine — so a shallow cap covers real launcher shapes without widening the
|
|
118
|
+
* window for resolving to a neighbouring session's breadcrumb.
|
|
119
|
+
*
|
|
120
|
+
* Never throws.
|
|
121
|
+
*/
|
|
122
|
+
export function getAncestorPids(startPid, options = {}) {
|
|
123
|
+
if (!Number.isFinite(startPid) || startPid <= 0)
|
|
124
|
+
return [];
|
|
125
|
+
const maxDepth = options.maxDepth ?? 4;
|
|
126
|
+
const platform = options.platform ?? process.platform;
|
|
127
|
+
const pids = [startPid];
|
|
128
|
+
if (platform === 'win32') {
|
|
129
|
+
// Not implemented — see the module doc comment. Returning just the direct
|
|
130
|
+
// pid keeps behavior identical to having no walk at all.
|
|
131
|
+
return pids;
|
|
132
|
+
}
|
|
133
|
+
// On Linux read /proc directly; everywhere else pay for one `ps` call, and
|
|
134
|
+
// only lazily — a walk that stops at depth 0 never spawns anything.
|
|
135
|
+
let table;
|
|
136
|
+
const execFileSync = options.execFileSync ?? nodeExecFileSync;
|
|
137
|
+
let pid = startPid;
|
|
138
|
+
for (let depth = 0; depth < maxDepth && pid > 1; depth++) {
|
|
139
|
+
let parentPid = null;
|
|
140
|
+
if (platform === 'linux') {
|
|
141
|
+
try {
|
|
142
|
+
parentPid = parentPidFromProcStat(_procFs.readFile(`/proc/${pid}/stat`));
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
table ??= readProcessTable(execFileSync);
|
|
150
|
+
parentPid = table.get(pid) ?? null;
|
|
151
|
+
}
|
|
152
|
+
if (parentPid === null || !Number.isFinite(parentPid) || parentPid <= 1)
|
|
153
|
+
break;
|
|
154
|
+
if (pids.includes(parentPid))
|
|
155
|
+
break; // cycle guard
|
|
156
|
+
pids.push(parentPid);
|
|
157
|
+
pid = parentPid;
|
|
158
|
+
}
|
|
159
|
+
return pids;
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=process-ancestry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-ancestry.js","sourceRoot":"","sources":["../../src/hooks/process-ancestry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Resolve the Claude Code session_id for the running MCP process.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Four sources, in order:
|
|
5
5
|
* 1. `CLAUDE_JOB_DIR` env var → read `<dir>/state.json`, regex-extract the
|
|
6
6
|
* session UUID from the `linkScanPath` field's filename. Instant; used
|
|
7
7
|
* by background-job MCPs.
|
|
@@ -11,23 +11,29 @@
|
|
|
11
11
|
* breadcrumb was written — resolveFromBreadcrumb() guards against that
|
|
12
12
|
* by rejecting a breadcrumb older than the resolving process's own
|
|
13
13
|
* start time (see its doc comment).
|
|
14
|
-
* 3.
|
|
14
|
+
* 3. ancestor PPID breadcrumbs — the same files as #2, but looked up at each
|
|
15
|
+
* of this process's ancestor PIDs rather than only its immediate parent.
|
|
16
|
+
* Covers launchers that interpose a process between the IDE and the MCP
|
|
17
|
+
* server (`npx`, which execs an `npm exec` wrapper), where our own
|
|
18
|
+
* `process.ppid` is that wrapper and the breadcrumb sits a level above it.
|
|
19
|
+
* See process-ancestry.ts. Only consulted when #2 misses.
|
|
20
|
+
* 4. cwd breadcrumb at `<storage>/session-by-cwd/<sanitized-cwd>.txt` —
|
|
15
21
|
* also written by the hook collector on every tool call, keyed by the
|
|
16
22
|
* project directory instead of a PID. Fallback for platforms where the
|
|
17
23
|
* PPID bridge never reaches the MCP's own `process.ppid` (e.g. native
|
|
18
24
|
* Windows, where Claude Code interposes Git Bash between itself and the
|
|
19
|
-
* hook collector but launches the MCP server directly).
|
|
20
|
-
* when #2
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
25
|
+
* hook collector but launches the MCP server directly). Consulted last,
|
|
26
|
+
* only when #2 and #3 both miss.
|
|
27
|
+
* Sources #2–#4 are polled together at exponential backoff: 100ms, 200ms,
|
|
28
|
+
* 500ms, 1s, 2s, then steady at 2s. No hard timeout; logs a single WARN at
|
|
29
|
+
* 60s if still unresolved.
|
|
24
30
|
*
|
|
25
31
|
* The MCP must never fabricate its own session_id. If none of these resolve,
|
|
26
32
|
* tool handlers should report "session_id not yet resolved" rather than make
|
|
27
33
|
* one up.
|
|
28
34
|
*/
|
|
29
|
-
/** Which of the
|
|
30
|
-
export type SessionIdSource = 'jobdir' | 'ppid' | 'cwd';
|
|
35
|
+
/** Which of the sources produced a resolveSessionId() result. */
|
|
36
|
+
export type SessionIdSource = 'jobdir' | 'ppid' | 'ppid-ancestor' | 'cwd';
|
|
31
37
|
export interface SessionResolverOptions {
|
|
32
38
|
/** Override the storage path used to find the breadcrumb directory. */
|
|
33
39
|
readonly storagePath?: string;
|
|
@@ -37,6 +43,12 @@ export interface SessionResolverOptions {
|
|
|
37
43
|
readonly cwd?: string;
|
|
38
44
|
/** Override `process.env.CLAUDE_JOB_DIR` (test seam). */
|
|
39
45
|
readonly claudeJobDir?: string | null;
|
|
46
|
+
/**
|
|
47
|
+
* Override the ancestor-PID chain that would otherwise be derived from
|
|
48
|
+
* `ppid` via getAncestorPids() (test seam). Supplying it also skips that
|
|
49
|
+
* derivation, which on non-Linux costs a `ps` subprocess.
|
|
50
|
+
*/
|
|
51
|
+
readonly ancestorPids?: readonly number[];
|
|
40
52
|
/** When true, skip the WARN log (test seam). */
|
|
41
53
|
readonly suppressWarn?: boolean;
|
|
42
54
|
/**
|
|
@@ -68,6 +80,29 @@ export declare function resolveFromJobDir(claudeJobDir: string | null | undefine
|
|
|
68
80
|
* only checks whether the PID is alive, and a recycled PID always is.
|
|
69
81
|
*/
|
|
70
82
|
export declare function resolveFromBreadcrumb(storagePath: string, ppid: number | undefined, processStartMs?: number): string | null;
|
|
83
|
+
/** What resolveFromAncestorBreadcrumb() found, and where. */
|
|
84
|
+
export interface AncestorBreadcrumbHit {
|
|
85
|
+
readonly sessionId: string;
|
|
86
|
+
/** The ancestor PID whose breadcrumb matched. */
|
|
87
|
+
readonly pid: number;
|
|
88
|
+
/** Levels above our own ppid — 1 is our ppid's parent. */
|
|
89
|
+
readonly depth: number;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Try each ANCESTOR pid's breadcrumb, for the case where a launcher interposed
|
|
93
|
+
* a process between the IDE and this one so our own `process.ppid` isn't the
|
|
94
|
+
* PID the collector keyed its breadcrumb on (`npx` → `npm exec` → server; see
|
|
95
|
+
* process-ancestry.ts). Index 0 of `ancestorPids` is our own ppid and is
|
|
96
|
+
* skipped — resolveFromBreadcrumb() already covered it.
|
|
97
|
+
*
|
|
98
|
+
* First match wins: the closest ancestor is the most specific, and therefore
|
|
99
|
+
* the least likely to be a PID shared with a concurrent session.
|
|
100
|
+
*
|
|
101
|
+
* Each level goes through resolveFromBreadcrumb(), so the PID-recycling mtime
|
|
102
|
+
* gate applies per level — which matters more here than for a single lookup,
|
|
103
|
+
* since a walk tests several PIDs and any of them could have been recycled.
|
|
104
|
+
*/
|
|
105
|
+
export declare function resolveFromAncestorBreadcrumb(storagePath: string, ancestorPids: readonly number[], processStartMs?: number): AncestorBreadcrumbHit | null;
|
|
71
106
|
/**
|
|
72
107
|
* Sanitize a cwd into the single filename segment used both by the collector's
|
|
73
108
|
* `writeCwdBreadcrumb()` (session-by-cwd breadcrumb) and by Claude Code's own
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-resolver.d.ts","sourceRoot":"","sources":["../../src/hooks/session-resolver.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"session-resolver.d.ts","sourceRoot":"","sources":["../../src/hooks/session-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Resolve the Claude Code session_id for the running MCP process.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Four sources, in order:
|
|
5
5
|
* 1. `CLAUDE_JOB_DIR` env var → read `<dir>/state.json`, regex-extract the
|
|
6
6
|
* session UUID from the `linkScanPath` field's filename. Instant; used
|
|
7
7
|
* by background-job MCPs.
|
|
@@ -11,16 +11,22 @@
|
|
|
11
11
|
* breadcrumb was written — resolveFromBreadcrumb() guards against that
|
|
12
12
|
* by rejecting a breadcrumb older than the resolving process's own
|
|
13
13
|
* start time (see its doc comment).
|
|
14
|
-
* 3.
|
|
14
|
+
* 3. ancestor PPID breadcrumbs — the same files as #2, but looked up at each
|
|
15
|
+
* of this process's ancestor PIDs rather than only its immediate parent.
|
|
16
|
+
* Covers launchers that interpose a process between the IDE and the MCP
|
|
17
|
+
* server (`npx`, which execs an `npm exec` wrapper), where our own
|
|
18
|
+
* `process.ppid` is that wrapper and the breadcrumb sits a level above it.
|
|
19
|
+
* See process-ancestry.ts. Only consulted when #2 misses.
|
|
20
|
+
* 4. cwd breadcrumb at `<storage>/session-by-cwd/<sanitized-cwd>.txt` —
|
|
15
21
|
* also written by the hook collector on every tool call, keyed by the
|
|
16
22
|
* project directory instead of a PID. Fallback for platforms where the
|
|
17
23
|
* PPID bridge never reaches the MCP's own `process.ppid` (e.g. native
|
|
18
24
|
* Windows, where Claude Code interposes Git Bash between itself and the
|
|
19
|
-
* hook collector but launches the MCP server directly).
|
|
20
|
-
* when #2
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
25
|
+
* hook collector but launches the MCP server directly). Consulted last,
|
|
26
|
+
* only when #2 and #3 both miss.
|
|
27
|
+
* Sources #2–#4 are polled together at exponential backoff: 100ms, 200ms,
|
|
28
|
+
* 500ms, 1s, 2s, then steady at 2s. No hard timeout; logs a single WARN at
|
|
29
|
+
* 60s if still unresolved.
|
|
24
30
|
*
|
|
25
31
|
* The MCP must never fabricate its own session_id. If none of these resolve,
|
|
26
32
|
* tool handlers should report "session_id not yet resolved" rather than make
|
|
@@ -30,6 +36,7 @@ import { existsSync, readFileSync, readdirSync, statSync, openSync, readSync, cl
|
|
|
30
36
|
import { resolve, basename } from 'node:path';
|
|
31
37
|
import { homedir } from 'node:os';
|
|
32
38
|
import { createLogger } from '../shared/index.js';
|
|
39
|
+
import { getAncestorPids } from './process-ancestry.js';
|
|
33
40
|
import { redactSensitive } from '../config.js';
|
|
34
41
|
const logger = createLogger('session-resolver');
|
|
35
42
|
const SESSION_ID_RE = /^[a-zA-Z0-9_-]{1,128}$/;
|
|
@@ -37,6 +44,13 @@ const DEFAULT_STORAGE_DIR = resolve(homedir(), '.newrelic-preflight');
|
|
|
37
44
|
const POLL_SCHEDULE_MS = [100, 200, 500, 1000, 2000];
|
|
38
45
|
const STEADY_POLL_MS = 2000;
|
|
39
46
|
const WARN_AFTER_MS = 60_000;
|
|
47
|
+
/**
|
|
48
|
+
* How far above our own ppid to look for a breadcrumb. Deliberately shallower
|
|
49
|
+
* than the collector's write-side walk (5): the `npx` case this exists for
|
|
50
|
+
* needs one level, a wrapper shell behind it two, while deeper ancestors are
|
|
51
|
+
* progressively more shared between concurrent sessions on the same machine.
|
|
52
|
+
*/
|
|
53
|
+
const READ_ANCESTOR_MAX_DEPTH = 4;
|
|
40
54
|
/**
|
|
41
55
|
* Read and JSON-parse `<claudeJobDir>/state.json`, returning the parsed object
|
|
42
56
|
* or null on any failure (missing dir, unreadable, invalid JSON, non-object).
|
|
@@ -138,6 +152,31 @@ export function resolveFromBreadcrumb(storagePath, ppid, processStartMs = Date.n
|
|
|
138
152
|
return null;
|
|
139
153
|
return sid;
|
|
140
154
|
}
|
|
155
|
+
/**
|
|
156
|
+
* Try each ANCESTOR pid's breadcrumb, for the case where a launcher interposed
|
|
157
|
+
* a process between the IDE and this one so our own `process.ppid` isn't the
|
|
158
|
+
* PID the collector keyed its breadcrumb on (`npx` → `npm exec` → server; see
|
|
159
|
+
* process-ancestry.ts). Index 0 of `ancestorPids` is our own ppid and is
|
|
160
|
+
* skipped — resolveFromBreadcrumb() already covered it.
|
|
161
|
+
*
|
|
162
|
+
* First match wins: the closest ancestor is the most specific, and therefore
|
|
163
|
+
* the least likely to be a PID shared with a concurrent session.
|
|
164
|
+
*
|
|
165
|
+
* Each level goes through resolveFromBreadcrumb(), so the PID-recycling mtime
|
|
166
|
+
* gate applies per level — which matters more here than for a single lookup,
|
|
167
|
+
* since a walk tests several PIDs and any of them could have been recycled.
|
|
168
|
+
*/
|
|
169
|
+
export function resolveFromAncestorBreadcrumb(storagePath, ancestorPids, processStartMs) {
|
|
170
|
+
for (let depth = 1; depth < ancestorPids.length; depth++) {
|
|
171
|
+
const pid = ancestorPids[depth];
|
|
172
|
+
const sessionId = processStartMs === undefined
|
|
173
|
+
? resolveFromBreadcrumb(storagePath, pid)
|
|
174
|
+
: resolveFromBreadcrumb(storagePath, pid, processStartMs);
|
|
175
|
+
if (sessionId)
|
|
176
|
+
return { sessionId, pid, depth };
|
|
177
|
+
}
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
141
180
|
/**
|
|
142
181
|
* Sanitize a cwd into the single filename segment used both by the collector's
|
|
143
182
|
* `writeCwdBreadcrumb()` (session-by-cwd breadcrumb) and by Claude Code's own
|
|
@@ -232,6 +271,12 @@ export async function resolveSessionId(options = {}) {
|
|
|
232
271
|
const startTime = Date.now();
|
|
233
272
|
let warnedAt60s = false;
|
|
234
273
|
let attempt = 0;
|
|
274
|
+
// Computed at most once, lazily, and only after a direct-ppid miss — on
|
|
275
|
+
// non-Linux that walk costs a subprocess, and the overwhelmingly common
|
|
276
|
+
// direct-launch case never gets here. Process ancestry doesn't change over a
|
|
277
|
+
// process's life, so one computation is enough. Kept as a closure variable
|
|
278
|
+
// rather than module state: nothing to reset between tests.
|
|
279
|
+
let ancestorPids;
|
|
235
280
|
return new Promise((resolvePromise, rejectPromise) => {
|
|
236
281
|
const onAbort = () => {
|
|
237
282
|
rejectPromise(new Error('session resolution aborted'));
|
|
@@ -264,6 +309,29 @@ export async function resolveSessionId(options = {}) {
|
|
|
264
309
|
resolvePromise(sid);
|
|
265
310
|
return;
|
|
266
311
|
}
|
|
312
|
+
// Then our ancestors' breadcrumbs, before falling back to cwd: any
|
|
313
|
+
// PID-keyed breadcrumb is more precise than the cwd one, which is shared
|
|
314
|
+
// by every session that ever ran in that directory.
|
|
315
|
+
ancestorPids ??=
|
|
316
|
+
options.ancestorPids ?? getAncestorPids(ppid, { maxDepth: READ_ANCESTOR_MAX_DEPTH });
|
|
317
|
+
const fromAncestor = resolveFromAncestorBreadcrumb(storagePath, ancestorPids);
|
|
318
|
+
if (fromAncestor) {
|
|
319
|
+
const elapsed = Date.now() - startTime;
|
|
320
|
+
logger.info('Resolved session_id from ancestor ppid breadcrumb', {
|
|
321
|
+
sessionId: fromAncestor.sessionId,
|
|
322
|
+
pid: fromAncestor.pid,
|
|
323
|
+
depth: fromAncestor.depth,
|
|
324
|
+
elapsedMs: elapsed,
|
|
325
|
+
});
|
|
326
|
+
options.onResolutionSource?.({
|
|
327
|
+
source: 'ppid-ancestor',
|
|
328
|
+
sessionId: fromAncestor.sessionId,
|
|
329
|
+
});
|
|
330
|
+
if (options.signal)
|
|
331
|
+
options.signal.removeEventListener('abort', onAbort);
|
|
332
|
+
resolvePromise(fromAncestor.sessionId);
|
|
333
|
+
return;
|
|
334
|
+
}
|
|
267
335
|
const sidFromCwd = resolveFromCwd(storagePath, cwd);
|
|
268
336
|
if (sidFromCwd) {
|
|
269
337
|
const elapsed = Date.now() - startTime;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-resolver.js","sourceRoot":"","sources":["../../src/hooks/session-resolver.ts"],"names":[],"mappings":"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"}
|
|
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;;;;;;;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"}
|
package/dist/index.js
CHANGED
|
@@ -1649,6 +1649,7 @@ async function main() {
|
|
|
1649
1649
|
teamId: config.teamId,
|
|
1650
1650
|
projectId: config.projectId,
|
|
1651
1651
|
orgId: config.orgId,
|
|
1652
|
+
repoUrl: config.repoUrl,
|
|
1652
1653
|
companionMode: config.companionMode,
|
|
1653
1654
|
sessionTracker,
|
|
1654
1655
|
localStore,
|
|
@@ -2541,6 +2542,7 @@ async function main() {
|
|
|
2541
2542
|
teamId: config.teamId,
|
|
2542
2543
|
projectId: config.projectId,
|
|
2543
2544
|
orgId: config.orgId,
|
|
2545
|
+
repoUrl: config.repoUrl,
|
|
2544
2546
|
companionMode: config.companionMode,
|
|
2545
2547
|
sessionTracker: sessionTracker,
|
|
2546
2548
|
localStore: realLocalStore,
|
|
@@ -2624,6 +2626,11 @@ async function main() {
|
|
|
2624
2626
|
configFilePath,
|
|
2625
2627
|
configSummary,
|
|
2626
2628
|
});
|
|
2629
|
+
// The client cached tools/list during the pending window, when only the
|
|
2630
|
+
// health/install/config tools existed. Tell it to re-list now that the
|
|
2631
|
+
// full set is registered, or it keeps the pending three for the whole
|
|
2632
|
+
// connection.
|
|
2633
|
+
void mcpServer.notifyToolListChanged();
|
|
2627
2634
|
};
|
|
2628
2635
|
// Arms a background watch for the ppid breadcrumb after an initial
|
|
2629
2636
|
// resolution came from the collision-prone cwd fallback (see
|
|
@@ -2800,6 +2807,9 @@ async function main() {
|
|
|
2800
2807
|
configFilePath,
|
|
2801
2808
|
configSummary,
|
|
2802
2809
|
});
|
|
2810
|
+
// Harmless if the client hasn't listed yet, and necessary if it listed
|
|
2811
|
+
// in the window between connectStdio() and this call.
|
|
2812
|
+
void mcpServer.notifyToolListChanged();
|
|
2803
2813
|
nrIngest?.start();
|
|
2804
2814
|
logger.info('Server running on stdio transport');
|
|
2805
2815
|
// stdin 'end' and 'error' handlers are registered immediately after
|
|
@@ -2880,6 +2890,7 @@ async function main() {
|
|
|
2880
2890
|
teamId: config.teamId,
|
|
2881
2891
|
projectId: config.projectId,
|
|
2882
2892
|
orgId: config.orgId,
|
|
2893
|
+
repoUrl: config.repoUrl,
|
|
2883
2894
|
companionMode: config.companionMode,
|
|
2884
2895
|
sessionTracker: new SessionTracker(sessionTraceId),
|
|
2885
2896
|
localStore: proxyLocalStore,
|