@colbymchenry/codegraph-win32-arm64 0.9.9 → 1.0.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/lib/dist/bin/codegraph.d.ts +1 -0
- package/lib/dist/bin/codegraph.d.ts.map +1 -1
- package/lib/dist/bin/codegraph.js +394 -10
- package/lib/dist/bin/codegraph.js.map +1 -1
- package/lib/dist/bin/fatal-handler.d.ts +20 -0
- package/lib/dist/bin/fatal-handler.d.ts.map +1 -0
- package/lib/dist/bin/fatal-handler.js +118 -0
- package/lib/dist/bin/fatal-handler.js.map +1 -0
- package/lib/dist/context/index.d.ts.map +1 -1
- package/lib/dist/context/index.js +7 -0
- package/lib/dist/context/index.js.map +1 -1
- package/lib/dist/db/index.d.ts.map +1 -1
- package/lib/dist/db/index.js +2 -1
- package/lib/dist/db/index.js.map +1 -1
- package/lib/dist/db/migrations.d.ts +1 -1
- package/lib/dist/db/migrations.d.ts.map +1 -1
- package/lib/dist/db/migrations.js +10 -1
- package/lib/dist/db/migrations.js.map +1 -1
- package/lib/dist/db/queries.d.ts +43 -0
- package/lib/dist/db/queries.d.ts.map +1 -1
- package/lib/dist/db/queries.js +103 -7
- package/lib/dist/db/queries.js.map +1 -1
- package/lib/dist/db/schema.sql +1 -0
- package/lib/dist/db/sqlite-adapter.d.ts +7 -0
- package/lib/dist/db/sqlite-adapter.d.ts.map +1 -1
- package/lib/dist/db/sqlite-adapter.js +3 -0
- package/lib/dist/db/sqlite-adapter.js.map +1 -1
- package/lib/dist/directory.d.ts +49 -2
- package/lib/dist/directory.d.ts.map +1 -1
- package/lib/dist/directory.js +173 -35
- package/lib/dist/directory.js.map +1 -1
- package/lib/dist/extraction/astro-extractor.d.ts +79 -0
- package/lib/dist/extraction/astro-extractor.d.ts.map +1 -0
- package/lib/dist/extraction/astro-extractor.js +320 -0
- package/lib/dist/extraction/astro-extractor.js.map +1 -0
- package/lib/dist/extraction/extraction-version.d.ts +25 -0
- package/lib/dist/extraction/extraction-version.d.ts.map +1 -0
- package/lib/dist/extraction/extraction-version.js +28 -0
- package/lib/dist/extraction/extraction-version.js.map +1 -0
- package/lib/dist/extraction/function-ref.d.ts +118 -0
- package/lib/dist/extraction/function-ref.d.ts.map +1 -0
- package/lib/dist/extraction/function-ref.js +727 -0
- package/lib/dist/extraction/function-ref.js.map +1 -0
- package/lib/dist/extraction/generated-detection.d.ts.map +1 -1
- package/lib/dist/extraction/generated-detection.js +3 -0
- package/lib/dist/extraction/generated-detection.js.map +1 -1
- package/lib/dist/extraction/grammars.d.ts +7 -1
- package/lib/dist/extraction/grammars.d.ts.map +1 -1
- package/lib/dist/extraction/grammars.js +52 -4
- package/lib/dist/extraction/grammars.js.map +1 -1
- package/lib/dist/extraction/index.d.ts +34 -0
- package/lib/dist/extraction/index.d.ts.map +1 -1
- package/lib/dist/extraction/index.js +389 -62
- package/lib/dist/extraction/index.js.map +1 -1
- package/lib/dist/extraction/languages/c-cpp.d.ts +8 -0
- package/lib/dist/extraction/languages/c-cpp.d.ts.map +1 -1
- package/lib/dist/extraction/languages/c-cpp.js +87 -28
- package/lib/dist/extraction/languages/c-cpp.js.map +1 -1
- package/lib/dist/extraction/languages/csharp.d.ts +22 -0
- package/lib/dist/extraction/languages/csharp.d.ts.map +1 -1
- package/lib/dist/extraction/languages/csharp.js +84 -2
- package/lib/dist/extraction/languages/csharp.js.map +1 -1
- package/lib/dist/extraction/languages/dart.d.ts.map +1 -1
- package/lib/dist/extraction/languages/dart.js +161 -1
- package/lib/dist/extraction/languages/dart.js.map +1 -1
- package/lib/dist/extraction/languages/go.d.ts.map +1 -1
- package/lib/dist/extraction/languages/go.js +43 -2
- package/lib/dist/extraction/languages/go.js.map +1 -1
- package/lib/dist/extraction/languages/index.d.ts.map +1 -1
- package/lib/dist/extraction/languages/index.js +2 -0
- package/lib/dist/extraction/languages/index.js.map +1 -1
- package/lib/dist/extraction/languages/java.d.ts.map +1 -1
- package/lib/dist/extraction/languages/java.js +42 -1
- package/lib/dist/extraction/languages/java.js.map +1 -1
- package/lib/dist/extraction/languages/javascript.d.ts.map +1 -1
- package/lib/dist/extraction/languages/javascript.js +16 -0
- package/lib/dist/extraction/languages/javascript.js.map +1 -1
- package/lib/dist/extraction/languages/kotlin.d.ts.map +1 -1
- package/lib/dist/extraction/languages/kotlin.js +69 -0
- package/lib/dist/extraction/languages/kotlin.js.map +1 -1
- package/lib/dist/extraction/languages/objc.d.ts.map +1 -1
- package/lib/dist/extraction/languages/objc.js +42 -0
- package/lib/dist/extraction/languages/objc.js.map +1 -1
- package/lib/dist/extraction/languages/pascal.d.ts.map +1 -1
- package/lib/dist/extraction/languages/pascal.js +11 -0
- package/lib/dist/extraction/languages/pascal.js.map +1 -1
- package/lib/dist/extraction/languages/php.d.ts.map +1 -1
- package/lib/dist/extraction/languages/php.js +90 -1
- package/lib/dist/extraction/languages/php.js.map +1 -1
- package/lib/dist/extraction/languages/r.d.ts +3 -0
- package/lib/dist/extraction/languages/r.d.ts.map +1 -0
- package/lib/dist/extraction/languages/r.js +314 -0
- package/lib/dist/extraction/languages/r.js.map +1 -0
- package/lib/dist/extraction/languages/ruby.d.ts.map +1 -1
- package/lib/dist/extraction/languages/ruby.js +35 -0
- package/lib/dist/extraction/languages/ruby.js.map +1 -1
- package/lib/dist/extraction/languages/rust.d.ts.map +1 -1
- package/lib/dist/extraction/languages/rust.js +35 -2
- package/lib/dist/extraction/languages/rust.js.map +1 -1
- package/lib/dist/extraction/languages/scala.d.ts.map +1 -1
- package/lib/dist/extraction/languages/scala.js +61 -1
- package/lib/dist/extraction/languages/scala.js.map +1 -1
- package/lib/dist/extraction/languages/swift.d.ts.map +1 -1
- package/lib/dist/extraction/languages/swift.js +61 -0
- package/lib/dist/extraction/languages/swift.js.map +1 -1
- package/lib/dist/extraction/languages/typescript.d.ts +13 -0
- package/lib/dist/extraction/languages/typescript.d.ts.map +1 -1
- package/lib/dist/extraction/languages/typescript.js +38 -0
- package/lib/dist/extraction/languages/typescript.js.map +1 -1
- package/lib/dist/extraction/liquid-extractor.d.ts +7 -0
- package/lib/dist/extraction/liquid-extractor.d.ts.map +1 -1
- package/lib/dist/extraction/liquid-extractor.js +53 -9
- package/lib/dist/extraction/liquid-extractor.js.map +1 -1
- package/lib/dist/extraction/razor-extractor.d.ts +42 -0
- package/lib/dist/extraction/razor-extractor.d.ts.map +1 -0
- package/lib/dist/extraction/razor-extractor.js +285 -0
- package/lib/dist/extraction/razor-extractor.js.map +1 -0
- package/lib/dist/extraction/svelte-extractor.d.ts.map +1 -1
- package/lib/dist/extraction/svelte-extractor.js +6 -3
- package/lib/dist/extraction/svelte-extractor.js.map +1 -1
- package/lib/dist/extraction/tree-sitter-helpers.d.ts.map +1 -1
- package/lib/dist/extraction/tree-sitter-helpers.js +59 -10
- package/lib/dist/extraction/tree-sitter-helpers.js.map +1 -1
- package/lib/dist/extraction/tree-sitter-types.d.ts +33 -0
- package/lib/dist/extraction/tree-sitter-types.d.ts.map +1 -1
- package/lib/dist/extraction/tree-sitter.d.ts +211 -0
- package/lib/dist/extraction/tree-sitter.d.ts.map +1 -1
- package/lib/dist/extraction/tree-sitter.js +1681 -49
- package/lib/dist/extraction/tree-sitter.js.map +1 -1
- package/lib/dist/extraction/vue-extractor.d.ts +15 -0
- package/lib/dist/extraction/vue-extractor.d.ts.map +1 -1
- package/lib/dist/extraction/vue-extractor.js +94 -3
- package/lib/dist/extraction/vue-extractor.js.map +1 -1
- package/lib/dist/extraction/wasm/tree-sitter-c_sharp.wasm +0 -0
- package/lib/dist/extraction/wasm/tree-sitter-r.wasm +0 -0
- package/lib/dist/graph/queries.d.ts.map +1 -1
- package/lib/dist/graph/queries.js +13 -40
- package/lib/dist/graph/queries.js.map +1 -1
- package/lib/dist/graph/traversal.d.ts.map +1 -1
- package/lib/dist/graph/traversal.js +16 -4
- package/lib/dist/graph/traversal.js.map +1 -1
- package/lib/dist/index.d.ts +34 -2
- package/lib/dist/index.d.ts.map +1 -1
- package/lib/dist/index.js +90 -8
- package/lib/dist/index.js.map +1 -1
- package/lib/dist/installer/index.d.ts.map +1 -1
- package/lib/dist/installer/index.js +63 -2
- package/lib/dist/installer/index.js.map +1 -1
- package/lib/dist/installer/instructions-template.d.ts +34 -11
- package/lib/dist/installer/instructions-template.d.ts.map +1 -1
- package/lib/dist/installer/instructions-template.js +44 -12
- package/lib/dist/installer/instructions-template.js.map +1 -1
- package/lib/dist/installer/targets/claude.d.ts.map +1 -1
- package/lib/dist/installer/targets/claude.js +6 -10
- package/lib/dist/installer/targets/claude.js.map +1 -1
- package/lib/dist/installer/targets/codex.js +4 -6
- package/lib/dist/installer/targets/codex.js.map +1 -1
- package/lib/dist/installer/targets/gemini.js +4 -6
- package/lib/dist/installer/targets/gemini.js.map +1 -1
- package/lib/dist/installer/targets/opencode.d.ts +9 -1
- package/lib/dist/installer/targets/opencode.d.ts.map +1 -1
- package/lib/dist/installer/targets/opencode.js +91 -40
- package/lib/dist/installer/targets/opencode.js.map +1 -1
- package/lib/dist/installer/targets/shared.d.ts +14 -0
- package/lib/dist/installer/targets/shared.d.ts.map +1 -1
- package/lib/dist/installer/targets/shared.js +16 -0
- package/lib/dist/installer/targets/shared.js.map +1 -1
- package/lib/dist/mcp/daemon-manager.d.ts +42 -0
- package/lib/dist/mcp/daemon-manager.d.ts.map +1 -0
- package/lib/dist/mcp/daemon-manager.js +129 -0
- package/lib/dist/mcp/daemon-manager.js.map +1 -0
- package/lib/dist/mcp/daemon-registry.d.ts +47 -0
- package/lib/dist/mcp/daemon-registry.d.ts.map +1 -0
- package/lib/dist/mcp/daemon-registry.js +229 -0
- package/lib/dist/mcp/daemon-registry.js.map +1 -0
- package/lib/dist/mcp/daemon.d.ts +60 -1
- package/lib/dist/mcp/daemon.d.ts.map +1 -1
- package/lib/dist/mcp/daemon.js +226 -8
- package/lib/dist/mcp/daemon.js.map +1 -1
- package/lib/dist/mcp/dynamic-boundaries.d.ts +41 -0
- package/lib/dist/mcp/dynamic-boundaries.d.ts.map +1 -0
- package/lib/dist/mcp/dynamic-boundaries.js +359 -0
- package/lib/dist/mcp/dynamic-boundaries.js.map +1 -0
- package/lib/dist/mcp/index.d.ts +1 -0
- package/lib/dist/mcp/index.d.ts.map +1 -1
- package/lib/dist/mcp/index.js +31 -9
- package/lib/dist/mcp/index.js.map +1 -1
- package/lib/dist/mcp/liveness-watchdog.d.ts +18 -0
- package/lib/dist/mcp/liveness-watchdog.d.ts.map +1 -0
- package/lib/dist/mcp/liveness-watchdog.js +207 -0
- package/lib/dist/mcp/liveness-watchdog.js.map +1 -0
- package/lib/dist/mcp/ppid-watchdog.d.ts +44 -0
- package/lib/dist/mcp/ppid-watchdog.d.ts.map +1 -0
- package/lib/dist/mcp/ppid-watchdog.js +27 -0
- package/lib/dist/mcp/ppid-watchdog.js.map +1 -0
- package/lib/dist/mcp/proxy.d.ts +6 -0
- package/lib/dist/mcp/proxy.d.ts.map +1 -1
- package/lib/dist/mcp/proxy.js +153 -24
- package/lib/dist/mcp/proxy.js.map +1 -1
- package/lib/dist/mcp/server-instructions.d.ts +12 -1
- package/lib/dist/mcp/server-instructions.d.ts.map +1 -1
- package/lib/dist/mcp/server-instructions.js +43 -16
- package/lib/dist/mcp/server-instructions.js.map +1 -1
- package/lib/dist/mcp/session.d.ts +2 -0
- package/lib/dist/mcp/session.d.ts.map +1 -1
- package/lib/dist/mcp/session.js +49 -2
- package/lib/dist/mcp/session.js.map +1 -1
- package/lib/dist/mcp/stdin-teardown.d.ts +27 -0
- package/lib/dist/mcp/stdin-teardown.d.ts.map +1 -0
- package/lib/dist/mcp/stdin-teardown.js +49 -0
- package/lib/dist/mcp/stdin-teardown.js.map +1 -0
- package/lib/dist/mcp/tools.d.ts +71 -0
- package/lib/dist/mcp/tools.d.ts.map +1 -1
- package/lib/dist/mcp/tools.js +703 -85
- package/lib/dist/mcp/tools.js.map +1 -1
- package/lib/dist/mcp/transport.d.ts.map +1 -1
- package/lib/dist/mcp/transport.js +18 -2
- package/lib/dist/mcp/transport.js.map +1 -1
- package/lib/dist/resolution/callback-synthesizer.d.ts +3 -3
- package/lib/dist/resolution/callback-synthesizer.d.ts.map +1 -1
- package/lib/dist/resolution/callback-synthesizer.js +549 -21
- package/lib/dist/resolution/callback-synthesizer.js.map +1 -1
- package/lib/dist/resolution/frameworks/astro.d.ts +9 -0
- package/lib/dist/resolution/frameworks/astro.d.ts.map +1 -0
- package/lib/dist/resolution/frameworks/astro.js +169 -0
- package/lib/dist/resolution/frameworks/astro.js.map +1 -0
- package/lib/dist/resolution/frameworks/expo-modules.d.ts.map +1 -1
- package/lib/dist/resolution/frameworks/expo-modules.js +6 -1
- package/lib/dist/resolution/frameworks/expo-modules.js.map +1 -1
- package/lib/dist/resolution/frameworks/index.d.ts +1 -0
- package/lib/dist/resolution/frameworks/index.d.ts.map +1 -1
- package/lib/dist/resolution/frameworks/index.js +5 -1
- package/lib/dist/resolution/frameworks/index.js.map +1 -1
- package/lib/dist/resolution/frameworks/java.js +6 -1
- package/lib/dist/resolution/frameworks/java.js.map +1 -1
- package/lib/dist/resolution/frameworks/python.d.ts.map +1 -1
- package/lib/dist/resolution/frameworks/python.js +7 -3
- package/lib/dist/resolution/frameworks/python.js.map +1 -1
- package/lib/dist/resolution/frameworks/react-native.d.ts.map +1 -1
- package/lib/dist/resolution/frameworks/react-native.js +53 -3
- package/lib/dist/resolution/frameworks/react-native.js.map +1 -1
- package/lib/dist/resolution/frameworks/react.d.ts.map +1 -1
- package/lib/dist/resolution/frameworks/react.js +15 -3
- package/lib/dist/resolution/frameworks/react.js.map +1 -1
- package/lib/dist/resolution/frameworks/svelte.js +5 -1
- package/lib/dist/resolution/frameworks/svelte.js.map +1 -1
- package/lib/dist/resolution/frameworks/vue.js +24 -27
- package/lib/dist/resolution/frameworks/vue.js.map +1 -1
- package/lib/dist/resolution/import-resolver.d.ts +10 -0
- package/lib/dist/resolution/import-resolver.d.ts.map +1 -1
- package/lib/dist/resolution/import-resolver.js +620 -2
- package/lib/dist/resolution/import-resolver.js.map +1 -1
- package/lib/dist/resolution/index.d.ts +80 -0
- package/lib/dist/resolution/index.d.ts.map +1 -1
- package/lib/dist/resolution/index.js +457 -7
- package/lib/dist/resolution/index.js.map +1 -1
- package/lib/dist/resolution/name-matcher.d.ts +61 -0
- package/lib/dist/resolution/name-matcher.d.ts.map +1 -1
- package/lib/dist/resolution/name-matcher.js +590 -14
- package/lib/dist/resolution/name-matcher.js.map +1 -1
- package/lib/dist/resolution/types.d.ts +27 -3
- package/lib/dist/resolution/types.d.ts.map +1 -1
- package/lib/dist/resolution/workspace-packages.d.ts +48 -0
- package/lib/dist/resolution/workspace-packages.d.ts.map +1 -0
- package/lib/dist/resolution/workspace-packages.js +208 -0
- package/lib/dist/resolution/workspace-packages.js.map +1 -0
- package/lib/dist/search/query-utils.d.ts +17 -1
- package/lib/dist/search/query-utils.d.ts.map +1 -1
- package/lib/dist/search/query-utils.js +79 -10
- package/lib/dist/search/query-utils.js.map +1 -1
- package/lib/dist/sync/watcher.d.ts +124 -32
- package/lib/dist/sync/watcher.d.ts.map +1 -1
- package/lib/dist/sync/watcher.js +326 -111
- package/lib/dist/sync/watcher.js.map +1 -1
- package/lib/dist/telemetry/index.d.ts +146 -0
- package/lib/dist/telemetry/index.d.ts.map +1 -0
- package/lib/dist/telemetry/index.js +544 -0
- package/lib/dist/telemetry/index.js.map +1 -0
- package/lib/dist/types.d.ts +17 -2
- package/lib/dist/types.d.ts.map +1 -1
- package/lib/dist/types.js +3 -0
- package/lib/dist/types.js.map +1 -1
- package/lib/dist/upgrade/index.d.ts +132 -0
- package/lib/dist/upgrade/index.d.ts.map +1 -0
- package/lib/dist/upgrade/index.js +462 -0
- package/lib/dist/upgrade/index.js.map +1 -0
- package/lib/dist/utils.d.ts +30 -24
- package/lib/dist/utils.d.ts.map +1 -1
- package/lib/dist/utils.js +64 -48
- package/lib/dist/utils.js.map +1 -1
- package/lib/node_modules/.package-lock.json +1 -29
- package/lib/package.json +1 -2
- package/package.json +1 -1
- package/lib/node_modules/chokidar/LICENSE +0 -21
- package/lib/node_modules/chokidar/README.md +0 -305
- package/lib/node_modules/chokidar/esm/handler.d.ts +0 -90
- package/lib/node_modules/chokidar/esm/handler.js +0 -629
- package/lib/node_modules/chokidar/esm/index.d.ts +0 -215
- package/lib/node_modules/chokidar/esm/index.js +0 -798
- package/lib/node_modules/chokidar/esm/package.json +0 -1
- package/lib/node_modules/chokidar/handler.d.ts +0 -90
- package/lib/node_modules/chokidar/handler.js +0 -635
- package/lib/node_modules/chokidar/index.d.ts +0 -215
- package/lib/node_modules/chokidar/index.js +0 -804
- package/lib/node_modules/chokidar/package.json +0 -69
- package/lib/node_modules/readdirp/LICENSE +0 -21
- package/lib/node_modules/readdirp/README.md +0 -120
- package/lib/node_modules/readdirp/esm/index.d.ts +0 -108
- package/lib/node_modules/readdirp/esm/index.js +0 -257
- package/lib/node_modules/readdirp/esm/package.json +0 -1
- package/lib/node_modules/readdirp/index.d.ts +0 -108
- package/lib/node_modules/readdirp/index.js +0 -263
- package/lib/node_modules/readdirp/package.json +0 -70
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.blankStringContents = blankStringContents;
|
|
4
|
+
exports.scanDynamicDispatch = scanDynamicDispatch;
|
|
5
|
+
/**
|
|
6
|
+
* Dynamic-dispatch boundary detection for codegraph_explore (#687).
|
|
7
|
+
*
|
|
8
|
+
* When the flow an agent asked about does NOT connect statically, the cause is
|
|
9
|
+
* almost always a dynamic-dispatch site: a computed member call, getattr,
|
|
10
|
+
* reflection, a string-keyed bus, a typed command/mediator dispatch. Guessing
|
|
11
|
+
* the missing edge was rejected (silent beats wrong — a wrong edge poisons the
|
|
12
|
+
* map and teaches abandonment). Instead, explore ANNOUNCES the boundary
|
|
13
|
+
* honestly: the exact site where the static path ends, the dispatch form, and
|
|
14
|
+
* — when a key is statically visible (string literal, `:symbol`, `new Type`)
|
|
15
|
+
* — that key, so the caller can shortlist candidate targets.
|
|
16
|
+
*
|
|
17
|
+
* Detection is deterministic regex over the comment/string-stripped bodies of
|
|
18
|
+
* the symbols the agent named, at QUERY TIME only. The graph is never mutated;
|
|
19
|
+
* an unbroken flow never triggers a scan. Matching runs on the stripped text
|
|
20
|
+
* (so commented-out / string-embedded code can't fire) but snippets and keys
|
|
21
|
+
* are sliced from the ORIGINAL source at the same offsets — both strippers
|
|
22
|
+
* blank contents in place, preserving offsets, precisely for this.
|
|
23
|
+
* (`stripCommentsForRegex` blanks comments but deliberately KEEPS string
|
|
24
|
+
* contents — framework extractors need route literals; here a dispatch shape
|
|
25
|
+
* inside a string is a false positive, so {@link blankStringContents} blanks
|
|
26
|
+
* them too, quotes preserved.)
|
|
27
|
+
*/
|
|
28
|
+
const strip_comments_1 = require("../resolution/strip-comments");
|
|
29
|
+
const JS_FAMILY = new Set(['typescript', 'javascript', 'tsx', 'jsx', 'vue', 'svelte', 'astro']);
|
|
30
|
+
const PY = new Set(['python']);
|
|
31
|
+
const RB = new Set(['ruby']);
|
|
32
|
+
const PHP = new Set(['php']);
|
|
33
|
+
const JVM_CS_GO = new Set(['java', 'kotlin', 'scala', 'csharp', 'go']);
|
|
34
|
+
const SWIFT_OBJC = new Set(['swift', 'objc', 'objcpp', 'objective-c']);
|
|
35
|
+
/** Exactly one quoted literal and no concatenation → that literal is the key. */
|
|
36
|
+
function singleStringLiteral(text) {
|
|
37
|
+
const m = text.match(/^[^'"`]*(['"`])([\w.:-]{2,64})\1[^'"`]*$/);
|
|
38
|
+
return m ? m[2] : undefined;
|
|
39
|
+
}
|
|
40
|
+
const FORMS = [
|
|
41
|
+
{
|
|
42
|
+
// handlers[action.type](payload) / registry[key](args) / table[k](...) —
|
|
43
|
+
// the `](` adjacency is the gate; a word/`)`/`]` char must precede `[` so
|
|
44
|
+
// array literals and markdown-ish text in prose can't fire.
|
|
45
|
+
form: 'computed-call',
|
|
46
|
+
label: 'computed member call',
|
|
47
|
+
re: /[\w$)\]]\s*\[([^[\]\n]{1,80})\]\s*\(/g,
|
|
48
|
+
keyFrom: (orig) => {
|
|
49
|
+
const inner = orig.match(/\[([^[\]\n]{1,80})\]\s*\($/);
|
|
50
|
+
const key = inner ? singleStringLiteral(inner[1]) : undefined;
|
|
51
|
+
return key ? { key } : undefined;
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
// import(expr) / require(expr) with a NON-literal argument → runtime module
|
|
56
|
+
// choice. Literal imports are ordinary edges and never reach this scanner.
|
|
57
|
+
form: 'dynamic-import',
|
|
58
|
+
label: 'dynamic import',
|
|
59
|
+
langs: JS_FAMILY,
|
|
60
|
+
re: /\b(?:import|require)\s*\(\s*(?![\s'"`)])/g,
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
form: 'dynamic-import',
|
|
64
|
+
label: 'dynamic import',
|
|
65
|
+
langs: PY,
|
|
66
|
+
re: /\bimportlib\.import_module\s*\(|\b__import__\s*\(/g,
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
// obj.send(:method_name) / public_send / method(:name) — ruby metaprogramming.
|
|
70
|
+
form: 'ruby-send',
|
|
71
|
+
label: 'send dispatch',
|
|
72
|
+
langs: RB,
|
|
73
|
+
re: /\.(?:public_)?send\s*\(\s*:?\w+|\bmethod\s*\(\s*:\w+\s*\)/g,
|
|
74
|
+
keyFrom: (orig) => {
|
|
75
|
+
const m = orig.match(/:(\w+)/);
|
|
76
|
+
return m ? { key: m[1] } : undefined;
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
// call_user_func([$this, 'method']) / $this->$method() / $callback() —
|
|
81
|
+
// PHP variable functions and callables.
|
|
82
|
+
form: 'php-dynamic',
|
|
83
|
+
label: 'dynamic call',
|
|
84
|
+
langs: PHP,
|
|
85
|
+
re: /\bcall_user_func(?:_array)?\s*\(|\$this\s*->\s*\$\w+\s*\(|\$\w+\s*\(/g,
|
|
86
|
+
keyWindow: 80,
|
|
87
|
+
keyFrom: (orig) => {
|
|
88
|
+
const key = singleStringLiteral(orig);
|
|
89
|
+
return key ? { key } : undefined;
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
// Reflection: Method.invoke / getMethod("x") / Class.forName / Go
|
|
94
|
+
// reflect MethodByName / C# Activator.CreateInstance, GetMethod.
|
|
95
|
+
form: 'reflection',
|
|
96
|
+
label: 'reflective dispatch',
|
|
97
|
+
langs: JVM_CS_GO,
|
|
98
|
+
re: /\.invoke\s*\(|\.get(?:Declared)?Method\s*\(|\.GetMethod\s*\(|MethodByName\s*\(|Activator\.CreateInstance|Class\.forName\s*\(/g,
|
|
99
|
+
keyWindow: 80,
|
|
100
|
+
keyFrom: (orig) => {
|
|
101
|
+
const key = singleStringLiteral(orig);
|
|
102
|
+
return key ? { key } : undefined;
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
// new Proxy(target, handler) / Reflect.get|apply — JS metaobject dispatch.
|
|
107
|
+
form: 'proxy-reflect',
|
|
108
|
+
label: 'Proxy/Reflect dispatch',
|
|
109
|
+
langs: JS_FAMILY,
|
|
110
|
+
re: /\bnew\s+Proxy\s*\(|\bReflect\.(?:get|apply|construct)\s*\(/g,
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
// mediator.Send(new CreateTodoItemCommand(...)) / bus.publish(new OrderEvent(...))
|
|
114
|
+
// — typed message dispatch (MediatR/CQRS/event-bus). The request TYPE is the
|
|
115
|
+
// key; the conventional target is `<Type>Handler`.
|
|
116
|
+
form: 'typed-bus',
|
|
117
|
+
label: 'typed message dispatch',
|
|
118
|
+
re: /\.(?:[Ss]end|[Pp]ublish|[Dd]ispatch|[Ee]xecute|[Pp]ost|[Ee]mit)(?:Async)?\s*(?:<[^<>\n]{0,80}>)?\s*\(\s*new\s+([A-Z]\w*)/g,
|
|
119
|
+
keyFrom: (orig) => {
|
|
120
|
+
const m = orig.match(/new\s+([A-Z]\w*)$/);
|
|
121
|
+
return m ? { key: m[1], keyIsType: true } : undefined;
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
// emitter.emit(eventVar, ...) / store.dispatch(action) — string-keyed
|
|
126
|
+
// dispatch where the key is a RUNTIME value. (Literal-keyed emits are the
|
|
127
|
+
// synthesizer's territory and connect statically when a handler matches.)
|
|
128
|
+
form: 'var-key-dispatch',
|
|
129
|
+
label: 'string-keyed dispatch (runtime key)',
|
|
130
|
+
re: /\.(?:emit|dispatch|trigger|fire|publish|broadcast)\s*\(\s*[A-Za-z_$][\w$]*(?:\.[\w$]+){0,3}\s*[,)]/g,
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
// Swift/ObjC: #selector(name) / NSClassFromString — runtime selector dispatch.
|
|
134
|
+
form: 'selector',
|
|
135
|
+
label: 'selector dispatch',
|
|
136
|
+
langs: SWIFT_OBJC,
|
|
137
|
+
re: /#selector\s*\(\s*([\w.]+)|NSClassFromString\s*\(/g,
|
|
138
|
+
keyFrom: (orig) => {
|
|
139
|
+
const m = orig.match(/#selector\s*\(\s*([\w.]+)/);
|
|
140
|
+
if (!m)
|
|
141
|
+
return undefined;
|
|
142
|
+
const segs = m[1].split('.');
|
|
143
|
+
return { key: segs[segs.length - 1] };
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
];
|
|
147
|
+
/** Map a Node.language to the comment-stripper's language set. */
|
|
148
|
+
function commentLang(language) {
|
|
149
|
+
switch (language) {
|
|
150
|
+
case 'python': return 'python';
|
|
151
|
+
case 'ruby': return 'ruby';
|
|
152
|
+
case 'rust': return 'rust';
|
|
153
|
+
case 'php': return 'php';
|
|
154
|
+
case 'go': return 'go';
|
|
155
|
+
case 'javascript':
|
|
156
|
+
case 'jsx':
|
|
157
|
+
return 'javascript';
|
|
158
|
+
case 'typescript':
|
|
159
|
+
case 'tsx':
|
|
160
|
+
case 'vue':
|
|
161
|
+
case 'svelte':
|
|
162
|
+
case 'astro':
|
|
163
|
+
return 'typescript';
|
|
164
|
+
case 'java':
|
|
165
|
+
case 'kotlin':
|
|
166
|
+
case 'scala':
|
|
167
|
+
case 'dart':
|
|
168
|
+
return 'java';
|
|
169
|
+
case 'csharp': return 'csharp';
|
|
170
|
+
case 'swift': return 'swift';
|
|
171
|
+
case 'c':
|
|
172
|
+
case 'cpp':
|
|
173
|
+
case 'objc':
|
|
174
|
+
case 'objcpp':
|
|
175
|
+
return 'java'; // C-style comments + double-quoted strings — close enough for blanking
|
|
176
|
+
default: return null;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
const MAX_MATCHES_PER_BODY = 3;
|
|
180
|
+
const MAX_BODY_CHARS = 60_000; // a god-function tail is still scannable; beyond this, truncate
|
|
181
|
+
/**
|
|
182
|
+
* Blank the CONTENTS of string literals (quotes preserved, offsets preserved)
|
|
183
|
+
* so dispatch-shaped prose — docs, error messages, template text — can't fire
|
|
184
|
+
* a matcher. Run AFTER comment stripping (comments are already spaces).
|
|
185
|
+
* Backslash escapes are honored; `'`/`"` strings end at a newline (treated as
|
|
186
|
+
* unterminated, matching the comment stripper); backticks span lines, and
|
|
187
|
+
* `${...}` interpolations inside them are blanked too — missing a dispatch
|
|
188
|
+
* inside a template literal is acceptable, false-firing on prose is not.
|
|
189
|
+
*/
|
|
190
|
+
function blankStringContents(text) {
|
|
191
|
+
const out = text.split('');
|
|
192
|
+
let i = 0;
|
|
193
|
+
const n = text.length;
|
|
194
|
+
while (i < n) {
|
|
195
|
+
const c = text[i];
|
|
196
|
+
if (c === '"' || c === "'" || c === '`') {
|
|
197
|
+
const quote = c;
|
|
198
|
+
i++;
|
|
199
|
+
while (i < n && text[i] !== quote) {
|
|
200
|
+
if (text[i] === '\\' && i + 1 < n) {
|
|
201
|
+
out[i] = ' ';
|
|
202
|
+
out[i + 1] = ' ';
|
|
203
|
+
i += 2;
|
|
204
|
+
continue;
|
|
205
|
+
}
|
|
206
|
+
if (quote !== '`' && text[i] === '\n')
|
|
207
|
+
break; // unterminated — stop blanking
|
|
208
|
+
if (text[i] !== '\n')
|
|
209
|
+
out[i] = ' '; // keep newlines for line math
|
|
210
|
+
i++;
|
|
211
|
+
}
|
|
212
|
+
if (i < n && text[i] === quote)
|
|
213
|
+
i++;
|
|
214
|
+
continue;
|
|
215
|
+
}
|
|
216
|
+
i++;
|
|
217
|
+
}
|
|
218
|
+
return out.join('');
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Scan one symbol's body for dynamic-dispatch sites.
|
|
222
|
+
*
|
|
223
|
+
* @param body the symbol's source text (sliced from the file)
|
|
224
|
+
* @param language Node.language of the symbol
|
|
225
|
+
* @param fileStartLine 1-based line where `body` starts in its file — returned
|
|
226
|
+
* line numbers are absolute file lines.
|
|
227
|
+
*/
|
|
228
|
+
function scanDynamicDispatch(body, language, fileStartLine) {
|
|
229
|
+
const original = body.length > MAX_BODY_CHARS ? body.slice(0, MAX_BODY_CHARS) : body;
|
|
230
|
+
const lang = commentLang(language);
|
|
231
|
+
const stripped = blankStringContents(lang ? (0, strip_comments_1.stripCommentsForRegex)(original, lang) : original);
|
|
232
|
+
const out = [];
|
|
233
|
+
const seen = new Map(); // form+key → first match (counts extras)
|
|
234
|
+
if (language === 'python')
|
|
235
|
+
scanPythonGetattr(stripped, original, fileStartLine, out, seen);
|
|
236
|
+
for (const spec of FORMS) {
|
|
237
|
+
if (out.length >= MAX_MATCHES_PER_BODY)
|
|
238
|
+
break;
|
|
239
|
+
if (spec.langs && !spec.langs.has(language))
|
|
240
|
+
continue;
|
|
241
|
+
spec.re.lastIndex = 0;
|
|
242
|
+
let m;
|
|
243
|
+
while ((m = spec.re.exec(stripped)) !== null) {
|
|
244
|
+
let sliceEnd = m.index + m[0].length;
|
|
245
|
+
if (spec.keyWindow) {
|
|
246
|
+
const windowEnd = Math.min(original.length, sliceEnd + spec.keyWindow);
|
|
247
|
+
const nl = original.indexOf('\n', sliceEnd);
|
|
248
|
+
sliceEnd = nl !== -1 && nl < windowEnd ? nl : windowEnd;
|
|
249
|
+
}
|
|
250
|
+
const origSlice = original.slice(m.index, sliceEnd);
|
|
251
|
+
const derived = spec.keyFrom?.(origSlice);
|
|
252
|
+
const dedupeKey = `${spec.form}|${derived?.key ?? ''}`;
|
|
253
|
+
const prior = seen.get(dedupeKey);
|
|
254
|
+
if (prior) {
|
|
255
|
+
prior.moreSites = (prior.moreSites ?? 0) + 1;
|
|
256
|
+
continue;
|
|
257
|
+
}
|
|
258
|
+
const line = fileStartLine + countNewlines(original, m.index);
|
|
259
|
+
const match = {
|
|
260
|
+
form: spec.form,
|
|
261
|
+
label: spec.label,
|
|
262
|
+
snippet: snippetAround(original, m.index),
|
|
263
|
+
line,
|
|
264
|
+
...(derived ?? {}),
|
|
265
|
+
};
|
|
266
|
+
seen.set(dedupeKey, match);
|
|
267
|
+
out.push(match);
|
|
268
|
+
if (out.length >= MAX_MATCHES_PER_BODY)
|
|
269
|
+
return out;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
return out;
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Python getattr dispatch — handled in code, not the FORMS table, because real
|
|
276
|
+
* getattr calls have nested-call arguments spanning lines
|
|
277
|
+
* (`getattr(self, request.method.lower(),\n self.http_method_not_allowed)` —
|
|
278
|
+
* DRF's APIView.dispatch) that a regex argument class can't bound. Two shapes:
|
|
279
|
+
* getattr(obj, name)(args) → immediate call
|
|
280
|
+
* handler = getattr(obj, name) ... handler(...) → assigned, called later
|
|
281
|
+
*/
|
|
282
|
+
const GETATTR_RE = /\bgetattr\s*\(/g;
|
|
283
|
+
const MAX_GETATTR_ARGS = 300;
|
|
284
|
+
function scanPythonGetattr(stripped, original, fileStartLine, out, seen) {
|
|
285
|
+
GETATTR_RE.lastIndex = 0;
|
|
286
|
+
let m;
|
|
287
|
+
while ((m = GETATTR_RE.exec(stripped)) !== null && out.length < MAX_MATCHES_PER_BODY) {
|
|
288
|
+
const open = m.index + m[0].length - 1;
|
|
289
|
+
const close = matchBalancedParen(stripped, open);
|
|
290
|
+
if (close === -1)
|
|
291
|
+
continue;
|
|
292
|
+
let form;
|
|
293
|
+
let label = '';
|
|
294
|
+
// Immediate call: getattr(...)(
|
|
295
|
+
const after = stripped.slice(close + 1, close + 8);
|
|
296
|
+
if (/^\s*\(/.test(after)) {
|
|
297
|
+
form = 'getattr-call';
|
|
298
|
+
label = 'getattr dispatch';
|
|
299
|
+
}
|
|
300
|
+
else {
|
|
301
|
+
// Assigned form: look back for `name =` and forward for `name(`.
|
|
302
|
+
const lineStart = stripped.lastIndexOf('\n', m.index) + 1;
|
|
303
|
+
const before = stripped.slice(lineStart, m.index);
|
|
304
|
+
const assign = before.match(/(\w+)\s*=\s*$/);
|
|
305
|
+
if (assign && new RegExp(`\\b${assign[1]}\\s*\\(`).test(stripped.slice(close + 1))) {
|
|
306
|
+
form = 'getattr-assign';
|
|
307
|
+
label = 'getattr dispatch (assigned, called later)';
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
if (!form)
|
|
311
|
+
continue;
|
|
312
|
+
const key = singleStringLiteral(original.slice(open + 1, close));
|
|
313
|
+
const dedupeKey = `${form}|${key ?? ''}`;
|
|
314
|
+
const prior = seen.get(dedupeKey);
|
|
315
|
+
if (prior) {
|
|
316
|
+
prior.moreSites = (prior.moreSites ?? 0) + 1;
|
|
317
|
+
continue;
|
|
318
|
+
}
|
|
319
|
+
const match = {
|
|
320
|
+
form,
|
|
321
|
+
label,
|
|
322
|
+
snippet: snippetAround(original, m.index),
|
|
323
|
+
line: fileStartLine + countNewlines(original, m.index),
|
|
324
|
+
...(key ? { key } : {}),
|
|
325
|
+
};
|
|
326
|
+
seen.set(dedupeKey, match);
|
|
327
|
+
out.push(match);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
/** Index of the `)` balancing `text[open]`, or -1 (cap: MAX_GETATTR_ARGS chars). */
|
|
331
|
+
function matchBalancedParen(text, open) {
|
|
332
|
+
let depth = 0;
|
|
333
|
+
const end = Math.min(text.length, open + MAX_GETATTR_ARGS);
|
|
334
|
+
for (let i = open; i < end; i++) {
|
|
335
|
+
const c = text[i];
|
|
336
|
+
if (c === '(')
|
|
337
|
+
depth++;
|
|
338
|
+
else if (c === ')' && --depth === 0)
|
|
339
|
+
return i;
|
|
340
|
+
}
|
|
341
|
+
return -1;
|
|
342
|
+
}
|
|
343
|
+
function countNewlines(text, end) {
|
|
344
|
+
let n = 0;
|
|
345
|
+
for (let i = 0; i < end; i++)
|
|
346
|
+
if (text.charCodeAt(i) === 10)
|
|
347
|
+
n++;
|
|
348
|
+
return n;
|
|
349
|
+
}
|
|
350
|
+
/** The full source line containing `index`, trimmed and capped for display. */
|
|
351
|
+
function snippetAround(text, index) {
|
|
352
|
+
const lineStart = text.lastIndexOf('\n', index) + 1;
|
|
353
|
+
let lineEnd = text.indexOf('\n', index);
|
|
354
|
+
if (lineEnd === -1)
|
|
355
|
+
lineEnd = text.length;
|
|
356
|
+
const line = text.slice(lineStart, lineEnd).trim();
|
|
357
|
+
return line.length > 120 ? line.slice(0, 117) + '...' : line;
|
|
358
|
+
}
|
|
359
|
+
//# sourceMappingURL=dynamic-boundaries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamic-boundaries.js","sourceRoot":"","sources":["../../src/mcp/dynamic-boundaries.ts"],"names":[],"mappings":"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"}
|
package/lib/dist/mcp/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AA0KH;;;;;;;;;;GAUG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,WAAW,CAAgB;IAGnC,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,YAAY,CAA+C;IAGnE,OAAO,CAAC,gBAAgB,CAA+B;IAGvD,OAAO,CAAC,YAAY,CAAwB;IAC5C,OAAO,CAAC,QAAQ,CAA4D;IAE5E,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,IAAI,CAA4D;gBAE5D,WAAW,CAAC,EAAE,MAAM;IAIhC;;;;;;;;;;;;OAYG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA2C5B;;;;OAIG;IACH,IAAI,IAAI,IAAI;IA2BZ,uEAAuE;YACzD,WAAW;IA+BzB;;;;;;;;OAQG;YACW,kBAAkB;IAqChC;;;;;;;OAOG;YACW,0BAA0B;IAoBxC,iFAAiF;IACjF,OAAO,CAAC,qBAAqB;IAK7B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;CAoB5B;AAWD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE7C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC"}
|
package/lib/dist/mcp/index.js
CHANGED
|
@@ -79,6 +79,10 @@ const session_1 = require("./session");
|
|
|
79
79
|
const daemon_1 = require("./daemon");
|
|
80
80
|
const proxy_1 = require("./proxy");
|
|
81
81
|
const daemon_paths_1 = require("./daemon-paths");
|
|
82
|
+
const telemetry_1 = require("../telemetry");
|
|
83
|
+
const ppid_watchdog_1 = require("./ppid-watchdog");
|
|
84
|
+
const liveness_watchdog_1 = require("./liveness-watchdog");
|
|
85
|
+
const stdin_teardown_1 = require("./stdin-teardown");
|
|
82
86
|
const wasm_runtime_flags_1 = require("../extraction/wasm-runtime-flags");
|
|
83
87
|
/**
|
|
84
88
|
* How often to poll `process.ppid` to detect parent process death (see #277).
|
|
@@ -248,6 +252,9 @@ class MCPServer {
|
|
|
248
252
|
engine = null;
|
|
249
253
|
daemon = null;
|
|
250
254
|
ppidWatchdog = null;
|
|
255
|
+
// Worker-thread liveness watchdog (#850). Long-lived modes only; SIGKILLs the
|
|
256
|
+
// process if the main thread wedges in a non-yielding sync loop.
|
|
257
|
+
livenessWatchdog = null;
|
|
251
258
|
// PPID watchdog baseline — captured at construction so we always have a
|
|
252
259
|
// baseline, even if start() runs after a fork-style reparent.
|
|
253
260
|
originalPpid = process.ppid;
|
|
@@ -272,6 +279,10 @@ class MCPServer {
|
|
|
272
279
|
* mode — a misbehaving daemon must never block a session from starting.
|
|
273
280
|
*/
|
|
274
281
|
async start() {
|
|
282
|
+
// Long-lived process (direct / proxy / daemon alike): flush buffered
|
|
283
|
+
// telemetry opportunistically. Fire-and-forget + unref'd — adds nothing
|
|
284
|
+
// to the handshake path and never keeps the process alive.
|
|
285
|
+
(0, telemetry_1.getTelemetry)().startInterval();
|
|
275
286
|
// The detached daemon process itself. Checked before the opt-out so the
|
|
276
287
|
// daemon honors the same env it was spawned with (it never sets NO_DAEMON).
|
|
277
288
|
if (daemonInternalSet()) {
|
|
@@ -319,6 +330,10 @@ class MCPServer {
|
|
|
319
330
|
clearInterval(this.ppidWatchdog);
|
|
320
331
|
this.ppidWatchdog = null;
|
|
321
332
|
}
|
|
333
|
+
if (this.livenessWatchdog) {
|
|
334
|
+
this.livenessWatchdog.stop();
|
|
335
|
+
this.livenessWatchdog = null;
|
|
336
|
+
}
|
|
322
337
|
if (this.daemon) {
|
|
323
338
|
void this.daemon.stop('stop()');
|
|
324
339
|
// Daemon.stop calls process.exit; nothing else to do.
|
|
@@ -352,11 +367,14 @@ class MCPServer {
|
|
|
352
367
|
// Detect parent-process death — same logic as pre-refactor. When stdin
|
|
353
368
|
// closes we go through StdioTransport's `process.exit(0)` already, but
|
|
354
369
|
// SIGKILL of the parent doesn't reliably close stdin on Linux (#277).
|
|
355
|
-
|
|
356
|
-
|
|
370
|
+
// Also treat a stdin `'error'` (a socket-backed stdin can fail with
|
|
371
|
+
// ECONNRESET/hangup instead of a clean close) as shutdown, and destroy the
|
|
372
|
+
// stream so a hung fd can't busy-spin the event loop (#799).
|
|
373
|
+
(0, stdin_teardown_1.treatStdinFailureAsShutdown)(() => this.stop());
|
|
357
374
|
this.mode = 'direct';
|
|
358
375
|
this.installSignalHandlers();
|
|
359
376
|
this.installPpidWatchdog();
|
|
377
|
+
this.livenessWatchdog = (0, liveness_watchdog_1.installMainThreadWatchdog)();
|
|
360
378
|
}
|
|
361
379
|
/**
|
|
362
380
|
* Run as the detached shared daemon (process spawned with
|
|
@@ -376,6 +394,10 @@ class MCPServer {
|
|
|
376
394
|
await daemon.start();
|
|
377
395
|
this.daemon = daemon;
|
|
378
396
|
this.mode = 'daemon';
|
|
397
|
+
// The detached daemon has no PPID watchdog or stdin lifeline, so a
|
|
398
|
+
// wedged main thread would pin a core forever (#850). The liveness
|
|
399
|
+
// watchdog is its only recovery path.
|
|
400
|
+
this.livenessWatchdog = (0, liveness_watchdog_1.installMainThreadWatchdog)();
|
|
379
401
|
return; // the net.Server keeps the process alive
|
|
380
402
|
}
|
|
381
403
|
// Taken. If the holder is alive, another daemon already serves (or is
|
|
@@ -441,13 +463,13 @@ class MCPServer {
|
|
|
441
463
|
if (pollMs <= 0)
|
|
442
464
|
return;
|
|
443
465
|
this.ppidWatchdog = setInterval(() => {
|
|
444
|
-
const
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
466
|
+
const reason = (0, ppid_watchdog_1.supervisionLostReason)({
|
|
467
|
+
originalPpid: this.originalPpid,
|
|
468
|
+
currentPpid: process.ppid,
|
|
469
|
+
hostPpid: this.hostPpid,
|
|
470
|
+
isAlive: daemon_1.isProcessAlive,
|
|
471
|
+
});
|
|
472
|
+
if (reason) {
|
|
451
473
|
process.stderr.write(`[CodeGraph MCP] Parent process exited (${reason}); shutting down.\n`);
|
|
452
474
|
this.stop();
|
|
453
475
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** Default: 60s — ~300× shorter than the 5h #850 wedge, far longer than any real main-thread block. */
|
|
2
|
+
export declare const DEFAULT_WATCHDOG_TIMEOUT_MS = 60000;
|
|
3
|
+
/** Parse the timeout env, falling back to the default for missing/invalid values. */
|
|
4
|
+
export declare function parseWatchdogTimeoutMs(raw: string | undefined, fallback?: number): number;
|
|
5
|
+
/** Derive a heartbeat cadence that emits several beats inside the timeout window. */
|
|
6
|
+
export declare function deriveCheckIntervalMs(timeoutMs: number): number;
|
|
7
|
+
export interface WatchdogHandle {
|
|
8
|
+
/** Stop heartbeating and shut the watchdog child down. Idempotent. */
|
|
9
|
+
stop(): void;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Install the main-thread liveness watchdog for a long-lived process. Returns a
|
|
13
|
+
* handle to stop it, or `null` when disabled or when the child can't be spawned
|
|
14
|
+
* (degraded, never throws — a missing watchdog must never keep a process from
|
|
15
|
+
* starting).
|
|
16
|
+
*/
|
|
17
|
+
export declare function installMainThreadWatchdog(): WatchdogHandle | null;
|
|
18
|
+
//# sourceMappingURL=liveness-watchdog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"liveness-watchdog.d.ts","sourceRoot":"","sources":["../../src/mcp/liveness-watchdog.ts"],"names":[],"mappings":"AAwCA,uGAAuG;AACvG,eAAO,MAAM,2BAA2B,QAAS,CAAC;AAQlD,qFAAqF;AACrF,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,QAAQ,GAAE,MAAoC,GAC7C,MAAM,CAIR;AAED,qFAAqF;AACrF,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE/D;AASD,MAAM,WAAW,cAAc;IAC7B,sEAAsE;IACtE,IAAI,IAAI,IAAI,CAAC;CACd;AA2BD;;;;;GAKG;AACH,wBAAgB,yBAAyB,IAAI,cAAc,GAAG,IAAI,CA8DjE"}
|