homegraph 1.2.0 → 1.4.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/bin/homegraph.js +3 -0
- package/dist/bin/homegraph.js.map +1 -1
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/index.js +85 -0
- package/dist/context/index.js.map +1 -1
- package/dist/db/index.d.ts +64 -5
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +178 -14
- package/dist/db/index.js.map +1 -1
- package/dist/db/migrations.d.ts +1 -1
- package/dist/db/migrations.d.ts.map +1 -1
- package/dist/db/migrations.js +19 -1
- package/dist/db/migrations.js.map +1 -1
- package/dist/db/queries.d.ts +117 -2
- package/dist/db/queries.d.ts.map +1 -1
- package/dist/db/queries.js +299 -6
- package/dist/db/queries.js.map +1 -1
- package/dist/db/schema.sql +32 -1
- package/dist/db/wal-valve.d.ts +106 -0
- package/dist/db/wal-valve.d.ts.map +1 -0
- package/dist/db/wal-valve.js +208 -0
- package/dist/db/wal-valve.js.map +1 -0
- package/dist/directory.d.ts +9 -5
- package/dist/directory.d.ts.map +1 -1
- package/dist/directory.js +210 -19
- package/dist/directory.js.map +1 -1
- package/dist/extraction/cfml-extractor.d.ts +107 -0
- package/dist/extraction/cfml-extractor.d.ts.map +1 -0
- package/dist/extraction/cfml-extractor.js +494 -0
- package/dist/extraction/cfml-extractor.js.map +1 -0
- package/dist/extraction/grammars.d.ts +25 -1
- package/dist/extraction/grammars.d.ts.map +1 -1
- package/dist/extraction/grammars.js +177 -24
- package/dist/extraction/grammars.js.map +1 -1
- package/dist/extraction/index.d.ts +43 -4
- package/dist/extraction/index.d.ts.map +1 -1
- package/dist/extraction/index.js +308 -5
- package/dist/extraction/index.js.map +1 -1
- package/dist/extraction/languages/c-cpp.d.ts +42 -0
- package/dist/extraction/languages/c-cpp.d.ts.map +1 -1
- package/dist/extraction/languages/c-cpp.js +369 -4
- package/dist/extraction/languages/c-cpp.js.map +1 -1
- package/dist/extraction/languages/cfquery.d.ts +12 -0
- package/dist/extraction/languages/cfquery.d.ts.map +1 -0
- package/dist/extraction/languages/cfquery.js +28 -0
- package/dist/extraction/languages/cfquery.js.map +1 -0
- package/dist/extraction/languages/cfscript.d.ts +3 -0
- package/dist/extraction/languages/cfscript.d.ts.map +1 -0
- package/dist/extraction/languages/cfscript.js +73 -0
- package/dist/extraction/languages/cfscript.js.map +1 -0
- package/dist/extraction/languages/cobol.d.ts +33 -0
- package/dist/extraction/languages/cobol.d.ts.map +1 -0
- package/dist/extraction/languages/cobol.js +499 -0
- package/dist/extraction/languages/cobol.js.map +1 -0
- package/dist/extraction/languages/erlang.d.ts +3 -0
- package/dist/extraction/languages/erlang.d.ts.map +1 -0
- package/dist/extraction/languages/erlang.js +350 -0
- package/dist/extraction/languages/erlang.js.map +1 -0
- package/dist/extraction/languages/index.d.ts.map +1 -1
- package/dist/extraction/languages/index.js +16 -0
- package/dist/extraction/languages/index.js.map +1 -1
- package/dist/extraction/languages/nix.d.ts +3 -0
- package/dist/extraction/languages/nix.d.ts.map +1 -0
- package/dist/extraction/languages/nix.js +294 -0
- package/dist/extraction/languages/nix.js.map +1 -0
- package/dist/extraction/languages/solidity.d.ts +3 -0
- package/dist/extraction/languages/solidity.d.ts.map +1 -0
- package/dist/extraction/languages/solidity.js +293 -0
- package/dist/extraction/languages/solidity.js.map +1 -0
- package/dist/extraction/languages/terraform.d.ts +3 -0
- package/dist/extraction/languages/terraform.d.ts.map +1 -0
- package/dist/extraction/languages/terraform.js +641 -0
- package/dist/extraction/languages/terraform.js.map +1 -0
- package/dist/extraction/languages/vbnet.d.ts +11 -0
- package/dist/extraction/languages/vbnet.d.ts.map +1 -0
- package/dist/extraction/languages/vbnet.js +141 -0
- package/dist/extraction/languages/vbnet.js.map +1 -0
- package/dist/extraction/mybatis-extractor.d.ts +30 -10
- package/dist/extraction/mybatis-extractor.d.ts.map +1 -1
- package/dist/extraction/mybatis-extractor.js +140 -38
- package/dist/extraction/mybatis-extractor.js.map +1 -1
- package/dist/extraction/parse-pool.d.ts +27 -1
- package/dist/extraction/parse-pool.d.ts.map +1 -1
- package/dist/extraction/parse-pool.js +75 -7
- package/dist/extraction/parse-pool.js.map +1 -1
- package/dist/extraction/parse-worker.js +9 -2
- package/dist/extraction/parse-worker.js.map +1 -1
- package/dist/extraction/tree-sitter-helpers.d.ts.map +1 -1
- package/dist/extraction/tree-sitter-helpers.js +1 -0
- package/dist/extraction/tree-sitter-helpers.js.map +1 -1
- package/dist/extraction/tree-sitter-types.d.ts +3 -1
- package/dist/extraction/tree-sitter-types.d.ts.map +1 -1
- package/dist/extraction/tree-sitter.d.ts +38 -0
- package/dist/extraction/tree-sitter.d.ts.map +1 -1
- package/dist/extraction/tree-sitter.js +754 -10
- package/dist/extraction/tree-sitter.js.map +1 -1
- package/dist/extraction/wasm/tree-sitter-arkts.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-cfml.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-cfquery.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-cfscript.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-cobol.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-erlang.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-nix.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-terraform.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-vbnet.wasm +0 -0
- package/dist/graph/traversal.d.ts.map +1 -1
- package/dist/graph/traversal.js +1 -1
- package/dist/graph/traversal.js.map +1 -1
- package/dist/index.d.ts +60 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +348 -5
- package/dist/index.js.map +1 -1
- package/dist/installer/index.d.ts +42 -0
- package/dist/installer/index.d.ts.map +1 -1
- package/dist/installer/index.js +97 -2
- package/dist/installer/index.js.map +1 -1
- package/dist/mcp/daemon.d.ts +25 -3
- package/dist/mcp/daemon.d.ts.map +1 -1
- package/dist/mcp/daemon.js +62 -8
- package/dist/mcp/daemon.js.map +1 -1
- package/dist/mcp/dynamic-boundaries.d.ts.map +1 -1
- package/dist/mcp/dynamic-boundaries.js +2 -1
- package/dist/mcp/dynamic-boundaries.js.map +1 -1
- package/dist/mcp/early-ppid.d.ts +26 -0
- package/dist/mcp/early-ppid.d.ts.map +1 -0
- package/dist/mcp/early-ppid.js +29 -0
- package/dist/mcp/early-ppid.js.map +1 -0
- package/dist/mcp/engine.d.ts +4 -5
- package/dist/mcp/engine.d.ts.map +1 -1
- package/dist/mcp/engine.js +27 -1
- package/dist/mcp/engine.js.map +1 -1
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +41 -6
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/liveness-watchdog.d.ts +18 -1
- package/dist/mcp/liveness-watchdog.d.ts.map +1 -1
- package/dist/mcp/liveness-watchdog.js +73 -13
- package/dist/mcp/liveness-watchdog.js.map +1 -1
- package/dist/mcp/memory-budget.d.ts +30 -0
- package/dist/mcp/memory-budget.d.ts.map +1 -0
- package/dist/mcp/memory-budget.js +123 -0
- package/dist/mcp/memory-budget.js.map +1 -0
- package/dist/mcp/proxy.d.ts.map +1 -1
- package/dist/mcp/proxy.js +88 -4
- package/dist/mcp/proxy.js.map +1 -1
- package/dist/mcp/query-cache.d.ts +35 -4
- package/dist/mcp/query-cache.d.ts.map +1 -1
- package/dist/mcp/query-cache.js +89 -19
- package/dist/mcp/query-cache.js.map +1 -1
- package/dist/mcp/query-pool.d.ts +46 -12
- package/dist/mcp/query-pool.d.ts.map +1 -1
- package/dist/mcp/query-pool.js +100 -23
- package/dist/mcp/query-pool.js.map +1 -1
- package/dist/mcp/server-instructions.d.ts +4 -27
- package/dist/mcp/server-instructions.d.ts.map +1 -1
- package/dist/mcp/server-instructions.js +39 -84
- package/dist/mcp/server-instructions.js.map +1 -1
- package/dist/mcp/session.d.ts +14 -0
- package/dist/mcp/session.d.ts.map +1 -1
- package/dist/mcp/session.js +28 -1
- package/dist/mcp/session.js.map +1 -1
- package/dist/mcp/startup-handshake.d.ts +44 -0
- package/dist/mcp/startup-handshake.d.ts.map +1 -0
- package/dist/mcp/startup-handshake.js +73 -0
- package/dist/mcp/startup-handshake.js.map +1 -0
- package/dist/mcp/tools.d.ts +104 -4
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +2390 -191
- package/dist/mcp/tools.js.map +1 -1
- package/dist/mcp/transport.d.ts.map +1 -1
- package/dist/mcp/transport.js +18 -0
- package/dist/mcp/transport.js.map +1 -1
- package/dist/project-config.d.ts +38 -0
- package/dist/project-config.d.ts.map +1 -1
- package/dist/project-config.js +101 -2
- package/dist/project-config.js.map +1 -1
- package/dist/resolution/c-fnptr-synthesizer.d.ts +2 -1
- package/dist/resolution/c-fnptr-synthesizer.d.ts.map +1 -1
- package/dist/resolution/c-fnptr-synthesizer.js +178 -146
- package/dist/resolution/c-fnptr-synthesizer.js.map +1 -1
- package/dist/resolution/callback-synthesizer.d.ts +9 -1
- package/dist/resolution/callback-synthesizer.d.ts.map +1 -1
- package/dist/resolution/callback-synthesizer.js +1164 -176
- package/dist/resolution/callback-synthesizer.js.map +1 -1
- package/dist/resolution/frameworks/cics.d.ts +20 -0
- package/dist/resolution/frameworks/cics.d.ts.map +1 -0
- package/dist/resolution/frameworks/cics.js +90 -0
- package/dist/resolution/frameworks/cics.js.map +1 -0
- package/dist/resolution/frameworks/index.d.ts.map +1 -1
- package/dist/resolution/frameworks/index.js +3 -0
- package/dist/resolution/frameworks/index.js.map +1 -1
- package/dist/resolution/frameworks/java.d.ts.map +1 -1
- package/dist/resolution/frameworks/java.js +14 -6
- package/dist/resolution/frameworks/java.js.map +1 -1
- package/dist/resolution/frameworks/terraform.d.ts +38 -0
- package/dist/resolution/frameworks/terraform.d.ts.map +1 -0
- package/dist/resolution/frameworks/terraform.js +277 -0
- package/dist/resolution/frameworks/terraform.js.map +1 -0
- package/dist/resolution/goframe-synthesizer.d.ts +2 -1
- package/dist/resolution/goframe-synthesizer.d.ts.map +1 -1
- package/dist/resolution/goframe-synthesizer.js +8 -3
- package/dist/resolution/goframe-synthesizer.js.map +1 -1
- package/dist/resolution/import-resolver.d.ts +7 -0
- package/dist/resolution/import-resolver.d.ts.map +1 -1
- package/dist/resolution/import-resolver.js +129 -4
- package/dist/resolution/import-resolver.js.map +1 -1
- package/dist/resolution/index.d.ts +60 -7
- package/dist/resolution/index.d.ts.map +1 -1
- package/dist/resolution/index.js +430 -80
- package/dist/resolution/index.js.map +1 -1
- package/dist/resolution/name-matcher.d.ts +0 -3
- package/dist/resolution/name-matcher.d.ts.map +1 -1
- package/dist/resolution/name-matcher.js +354 -33
- package/dist/resolution/name-matcher.js.map +1 -1
- package/dist/resolution/strip-comments.d.ts +1 -1
- package/dist/resolution/strip-comments.d.ts.map +1 -1
- package/dist/resolution/strip-comments.js +49 -0
- package/dist/resolution/strip-comments.js.map +1 -1
- package/dist/resolution/types.d.ts +29 -0
- package/dist/resolution/types.d.ts.map +1 -1
- package/dist/resolution/workspace-packages.d.ts +10 -0
- package/dist/resolution/workspace-packages.d.ts.map +1 -1
- package/dist/resolution/workspace-packages.js +142 -4
- package/dist/resolution/workspace-packages.js.map +1 -1
- package/dist/search/identifier-segments.d.ts +60 -0
- package/dist/search/identifier-segments.d.ts.map +1 -0
- package/dist/search/identifier-segments.js +176 -0
- package/dist/search/identifier-segments.js.map +1 -0
- package/dist/search/query-utils.d.ts +201 -0
- package/dist/search/query-utils.d.ts.map +1 -1
- package/dist/search/query-utils.js +919 -2
- package/dist/search/query-utils.js.map +1 -1
- package/dist/sync/git-hooks.d.ts.map +1 -1
- package/dist/sync/git-hooks.js +2 -0
- package/dist/sync/git-hooks.js.map +1 -1
- package/dist/sync/watcher.d.ts +10 -5
- package/dist/sync/watcher.d.ts.map +1 -1
- package/dist/sync/watcher.js +51 -14
- package/dist/sync/watcher.js.map +1 -1
- package/dist/sync/worktree.d.ts.map +1 -1
- package/dist/sync/worktree.js +5 -0
- package/dist/sync/worktree.js.map +1 -1
- package/dist/types.d.ts +19 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +10 -0
- package/dist/types.js.map +1 -1
- package/dist/upgrade/index.d.ts +32 -0
- package/dist/upgrade/index.d.ts.map +1 -1
- package/dist/upgrade/index.js +162 -14
- package/dist/upgrade/index.js.map +1 -1
- package/dist/upgrade/remove-binary.d.ts +87 -0
- package/dist/upgrade/remove-binary.d.ts.map +1 -0
- package/dist/upgrade/remove-binary.js +289 -0
- package/dist/upgrade/remove-binary.js.map +1 -0
- package/dist/upgrade/update-check.d.ts +92 -0
- package/dist/upgrade/update-check.d.ts.map +1 -0
- package/dist/upgrade/update-check.js +258 -0
- package/dist/upgrade/update-check.js.map +1 -0
- package/package.json +2 -2
- package/scripts/agent-eval/run-all.sh +6 -0
- package/scripts/build-bundle.sh +5 -0
- package/scripts/npm-shim.js +8 -1
- package/scripts/exp_boundary_eval/__pycache__/_utils.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/analyze.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/deveco_arm.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/run_one.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/run_session.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/__pycache__/setup.cpython-310.pyc +0 -0
- package/scripts/exp_boundary_eval/data/agents.json +0 -109
- package/scripts/exp_boundary_eval/data/experiments.json +0 -140
- package/scripts/qa_eval/README.md +0 -407
- package/scripts/qa_eval/_test_deveco_probe.py +0 -41
- package/scripts/qa_eval/agent_runner.py +0 -526
- package/scripts/qa_eval/data/.gitignore +0 -4
- package/scripts/qa_eval/data/test-set.jsonl +0 -2
- package/scripts/qa_eval/eval_metrics.py +0 -274
- package/scripts/qa_eval/external_agent.py +0 -976
- package/scripts/qa_eval/llm_config.py +0 -92
- package/scripts/qa_eval/memory_monitor.py +0 -132
- package/scripts/qa_eval/my_answer_accuracy.py +0 -187
- package/scripts/qa_eval/requirements.txt +0 -2
- package/scripts/qa_eval/run_pipeline.py +0 -804
- package/scripts/qa_eval/stats_efficiency.py +0 -279
- package/scripts/qa_eval/stats_scores.py +0 -207
package/dist/mcp/session.d.ts
CHANGED
|
@@ -21,6 +21,20 @@ export declare const SERVER_INFO: {
|
|
|
21
21
|
name: string;
|
|
22
22
|
version: string;
|
|
23
23
|
};
|
|
24
|
+
/**
|
|
25
|
+
* Instructions for the `initialize` response, with the update-availability
|
|
26
|
+
* notice appended when one is known (#1243). Exported so the proxy's local
|
|
27
|
+
* handshake sends the IDENTICAL payload — same convention as SERVER_INFO.
|
|
28
|
+
* `getUpdateNotice` is a memoized synchronous cache read, so the #172
|
|
29
|
+
* respond-fast contract holds; when no notice exists the instructions are
|
|
30
|
+
* byte-identical to the bare constants.
|
|
31
|
+
*
|
|
32
|
+
* Test-authoring note: on a machine whose real `~/.homegraph` cache knows a
|
|
33
|
+
* newer release, spawned servers append the notice — a test asserting exact
|
|
34
|
+
* instructions equality must set `HOMEGRAPH_NO_UPDATE_CHECK=1` in the spawn
|
|
35
|
+
* env or it will fail only in the weeks after a release ships.
|
|
36
|
+
*/
|
|
37
|
+
export declare function initializeInstructions(base: string, notice?: string | null): string;
|
|
24
38
|
/** MCP Protocol Version (latest the server claims). */
|
|
25
39
|
export declare const PROTOCOL_VERSION = "2024-11-05";
|
|
26
40
|
export interface MCPSessionOptions {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/mcp/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAuC,gBAAgB,EAAc,MAAM,aAAa,CAAC;AAChG,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/mcp/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAuC,gBAAgB,EAAc,MAAM,aAAa,CAAC;AAChG,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAQrC;;;GAGG;AAGH,eAAO,MAAM,WAAW;;;CAGvB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,GAAG,IAAwB,GAAG,MAAM,CAMtG;AAED,uDAAuD;AACvD,eAAO,MAAM,gBAAgB,eAAe,CAAC;AAmC7C,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED;;;GAGG;AACH,qBAAa,UAAU;IASnB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;IAThB,OAAO,CAAC,mBAAmB,CAAS;IACpC,kFAAkF;IAClF,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,mBAAmB,CAAgB;gBAGjC,SAAS,EAAE,gBAAgB,EAC3B,MAAM,EAAE,SAAS,EACzB,IAAI,GAAE,iBAAsB;IAK9B;;;OAGG;IACH,KAAK,IAAI,IAAI;IAIb;;;OAGG;IACH,IAAI,IAAI,IAAI;IAIZ,kEAAkE;IAClE,YAAY,IAAI,gBAAgB;YAIlB,aAAa;YA0Cb,gBAAgB;YA0DhB,eAAe;YAkBf,eAAe;IAoC7B;;;;;;;OAOG;YACW,iBAAiB;IAyB/B;;;OAGG;YACW,aAAa;CAgB5B"}
|
package/dist/mcp/session.js
CHANGED
|
@@ -47,6 +47,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
47
47
|
})();
|
|
48
48
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
49
49
|
exports.MCPSession = exports.PROTOCOL_VERSION = exports.SERVER_INFO = void 0;
|
|
50
|
+
exports.initializeInstructions = initializeInstructions;
|
|
50
51
|
const path = __importStar(require("path"));
|
|
51
52
|
const transport_1 = require("./transport");
|
|
52
53
|
const tools_1 = require("./tools");
|
|
@@ -54,6 +55,7 @@ const server_instructions_1 = require("./server-instructions");
|
|
|
54
55
|
const version_1 = require("./version");
|
|
55
56
|
const directory_1 = require("../directory");
|
|
56
57
|
const telemetry_1 = require("../telemetry");
|
|
58
|
+
const update_check_1 = require("../upgrade/update-check");
|
|
57
59
|
/**
|
|
58
60
|
* MCP Server Info — kept on the session because some clients log it. The
|
|
59
61
|
* version tracks the real package version (was a hard-coded '0.1.0').
|
|
@@ -64,6 +66,25 @@ exports.SERVER_INFO = {
|
|
|
64
66
|
name: 'homegraph',
|
|
65
67
|
version: version_1.HomeGraphPackageVersion,
|
|
66
68
|
};
|
|
69
|
+
/**
|
|
70
|
+
* Instructions for the `initialize` response, with the update-availability
|
|
71
|
+
* notice appended when one is known (#1243). Exported so the proxy's local
|
|
72
|
+
* handshake sends the IDENTICAL payload — same convention as SERVER_INFO.
|
|
73
|
+
* `getUpdateNotice` is a memoized synchronous cache read, so the #172
|
|
74
|
+
* respond-fast contract holds; when no notice exists the instructions are
|
|
75
|
+
* byte-identical to the bare constants.
|
|
76
|
+
*
|
|
77
|
+
* Test-authoring note: on a machine whose real `~/.homegraph` cache knows a
|
|
78
|
+
* newer release, spawned servers append the notice — a test asserting exact
|
|
79
|
+
* instructions equality must set `HOMEGRAPH_NO_UPDATE_CHECK=1` in the spawn
|
|
80
|
+
* env or it will fail only in the weeks after a release ships.
|
|
81
|
+
*/
|
|
82
|
+
function initializeInstructions(base, notice = (0, update_check_1.getUpdateNotice)()) {
|
|
83
|
+
if (!notice)
|
|
84
|
+
return base;
|
|
85
|
+
return (`${base}\n\n---\n${notice} This server keeps running the old version until ` +
|
|
86
|
+
`the user upgrades — mention it when convenient; do not run the upgrade yourself.`);
|
|
87
|
+
}
|
|
67
88
|
/** MCP Protocol Version (latest the server claims). */
|
|
68
89
|
exports.PROTOCOL_VERSION = '2024-11-05';
|
|
69
90
|
/**
|
|
@@ -220,7 +241,7 @@ class MCPSession {
|
|
|
220
241
|
protocolVersion: exports.PROTOCOL_VERSION,
|
|
221
242
|
capabilities: { tools: {} },
|
|
222
243
|
serverInfo: exports.SERVER_INFO,
|
|
223
|
-
instructions: indexed ? server_instructions_1.SERVER_INSTRUCTIONS : server_instructions_1.SERVER_INSTRUCTIONS_NO_ROOT_INDEX,
|
|
244
|
+
instructions: initializeInstructions(indexed ? server_instructions_1.SERVER_INSTRUCTIONS : server_instructions_1.SERVER_INSTRUCTIONS_NO_ROOT_INDEX),
|
|
224
245
|
});
|
|
225
246
|
if (explicitPath) {
|
|
226
247
|
// Kick off engine init in the background. If another session in the
|
|
@@ -259,8 +280,14 @@ class MCPSession {
|
|
|
259
280
|
this.transport.sendError(request.id, transport_1.ErrorCodes.InvalidParams, `Unknown tool: ${toolName}`);
|
|
260
281
|
return;
|
|
261
282
|
}
|
|
283
|
+
if (process.env.HOMEGRAPH_MCP_DEBUG)
|
|
284
|
+
process.stderr.write(`[mcp-debug] toolsCall ${toolName} id=${String(request.id)} pre-init\n`);
|
|
262
285
|
await this.retryInitIfNeeded();
|
|
286
|
+
if (process.env.HOMEGRAPH_MCP_DEBUG)
|
|
287
|
+
process.stderr.write(`[mcp-debug] toolsCall ${toolName} id=${String(request.id)} dispatch\n`);
|
|
263
288
|
const result = await this.engine.getToolHandler().execute(toolName, toolArgs);
|
|
289
|
+
if (process.env.HOMEGRAPH_MCP_DEBUG)
|
|
290
|
+
process.stderr.write(`[mcp-debug] toolsCall ${toolName} id=${String(request.id)} done\n`);
|
|
264
291
|
this.transport.sendResult(request.id, result);
|
|
265
292
|
// After the reply is on the wire — telemetry must never delay a tool
|
|
266
293
|
// response (in-memory increment only; see src/telemetry).
|
package/dist/mcp/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/mcp/session.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/mcp/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Never-initialized backstop for `serve --mcp` (#1185).
|
|
3
|
+
*
|
|
4
|
+
* Every real MCP host sends `initialize` immediately after spawning a server.
|
|
5
|
+
* A server that has received NO bytes at all for many minutes is not serving
|
|
6
|
+
* anyone — it is the residue of an abandoned launch: the host killed the
|
|
7
|
+
* launcher chain during startup (config probe, instant cancel, initialize
|
|
8
|
+
* timeout) but kept our stdio pipe fds open, so stdin never EOFs. If the kill
|
|
9
|
+
* landed before {@link ../mcp/early-ppid} could observe the real parent, the
|
|
10
|
+
* PPID watchdog is blind too (baseline `1`), and — pre-#1185 — the orphan
|
|
11
|
+
* lived until the HOST process exited, accumulating one ~30MB node process
|
|
12
|
+
* per occurrence.
|
|
13
|
+
*
|
|
14
|
+
* This backstop closes that last hole: arm a one-shot timer at serve start
|
|
15
|
+
* and disarm it on the first byte of client traffic. If the timer fires, the
|
|
16
|
+
* caller shuts the server down. The default is deliberately generous (15
|
|
17
|
+
* minutes) — hosts initialize within milliseconds, so the only processes this
|
|
18
|
+
* ever reaps are ones nobody is talking to. It never affects a session that
|
|
19
|
+
* spoke even once: after the first byte the timer is gone for good (a
|
|
20
|
+
* quiet-but-live session is the PPID watchdog's / stdin teardown's job).
|
|
21
|
+
*
|
|
22
|
+
* IMPORTANT (callers): attaching a `'data'` listener switches the stream into
|
|
23
|
+
* flowing mode. Arm this AFTER the real stdin consumer is attached, in the
|
|
24
|
+
* same synchronous block, so no early bytes are emitted while only our
|
|
25
|
+
* listener exists. The detached daemon must never arm this — its stdin is
|
|
26
|
+
* `'ignore'` and its lifecycle is refcount/idle-based.
|
|
27
|
+
*
|
|
28
|
+
* Tune with `HOMEGRAPH_STARTUP_HANDSHAKE_TIMEOUT_MS`; `0` disables.
|
|
29
|
+
*/
|
|
30
|
+
/** Default wait for the first byte of MCP traffic before assuming orphaned. */
|
|
31
|
+
export declare const DEFAULT_STARTUP_HANDSHAKE_TIMEOUT_MS = 900000;
|
|
32
|
+
export declare const STARTUP_HANDSHAKE_TIMEOUT_ENV = "HOMEGRAPH_STARTUP_HANDSHAKE_TIMEOUT_MS";
|
|
33
|
+
/**
|
|
34
|
+
* Parse the timeout env override. Missing/invalid → default; `<= 0` → `0`
|
|
35
|
+
* (disabled), the same disable convention as `HOMEGRAPH_PPID_POLL_MS`.
|
|
36
|
+
*/
|
|
37
|
+
export declare function parseStartupHandshakeTimeoutMs(raw: string | undefined): number;
|
|
38
|
+
/**
|
|
39
|
+
* Arm the backstop. `onAbandoned` runs at most once, only if no `'data'` event
|
|
40
|
+
* arrives on `stream` within the timeout. Returns a disarm function (idempotent;
|
|
41
|
+
* also detaches the listener). `stream`/`timeoutMs` are injectable for tests.
|
|
42
|
+
*/
|
|
43
|
+
export declare function armStartupHandshakeTimeout(onAbandoned: () => void, stream?: NodeJS.ReadableStream, timeoutMs?: number): () => void;
|
|
44
|
+
//# sourceMappingURL=startup-handshake.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startup-handshake.d.ts","sourceRoot":"","sources":["../../src/mcp/startup-handshake.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,+EAA+E;AAC/E,eAAO,MAAM,oCAAoC,SAAU,CAAC;AAE5D,eAAO,MAAM,6BAA6B,2CAA2C,CAAC;AAEtF;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAM9E;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,MAAM,IAAI,EACvB,MAAM,GAAE,MAAM,CAAC,cAA8B,EAC7C,SAAS,GAAE,MAAmF,GAC7F,MAAM,IAAI,CAcZ"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Never-initialized backstop for `serve --mcp` (#1185).
|
|
4
|
+
*
|
|
5
|
+
* Every real MCP host sends `initialize` immediately after spawning a server.
|
|
6
|
+
* A server that has received NO bytes at all for many minutes is not serving
|
|
7
|
+
* anyone — it is the residue of an abandoned launch: the host killed the
|
|
8
|
+
* launcher chain during startup (config probe, instant cancel, initialize
|
|
9
|
+
* timeout) but kept our stdio pipe fds open, so stdin never EOFs. If the kill
|
|
10
|
+
* landed before {@link ../mcp/early-ppid} could observe the real parent, the
|
|
11
|
+
* PPID watchdog is blind too (baseline `1`), and — pre-#1185 — the orphan
|
|
12
|
+
* lived until the HOST process exited, accumulating one ~30MB node process
|
|
13
|
+
* per occurrence.
|
|
14
|
+
*
|
|
15
|
+
* This backstop closes that last hole: arm a one-shot timer at serve start
|
|
16
|
+
* and disarm it on the first byte of client traffic. If the timer fires, the
|
|
17
|
+
* caller shuts the server down. The default is deliberately generous (15
|
|
18
|
+
* minutes) — hosts initialize within milliseconds, so the only processes this
|
|
19
|
+
* ever reaps are ones nobody is talking to. It never affects a session that
|
|
20
|
+
* spoke even once: after the first byte the timer is gone for good (a
|
|
21
|
+
* quiet-but-live session is the PPID watchdog's / stdin teardown's job).
|
|
22
|
+
*
|
|
23
|
+
* IMPORTANT (callers): attaching a `'data'` listener switches the stream into
|
|
24
|
+
* flowing mode. Arm this AFTER the real stdin consumer is attached, in the
|
|
25
|
+
* same synchronous block, so no early bytes are emitted while only our
|
|
26
|
+
* listener exists. The detached daemon must never arm this — its stdin is
|
|
27
|
+
* `'ignore'` and its lifecycle is refcount/idle-based.
|
|
28
|
+
*
|
|
29
|
+
* Tune with `HOMEGRAPH_STARTUP_HANDSHAKE_TIMEOUT_MS`; `0` disables.
|
|
30
|
+
*/
|
|
31
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
|
+
exports.STARTUP_HANDSHAKE_TIMEOUT_ENV = exports.DEFAULT_STARTUP_HANDSHAKE_TIMEOUT_MS = void 0;
|
|
33
|
+
exports.parseStartupHandshakeTimeoutMs = parseStartupHandshakeTimeoutMs;
|
|
34
|
+
exports.armStartupHandshakeTimeout = armStartupHandshakeTimeout;
|
|
35
|
+
/** Default wait for the first byte of MCP traffic before assuming orphaned. */
|
|
36
|
+
exports.DEFAULT_STARTUP_HANDSHAKE_TIMEOUT_MS = 900_000; // 15 min
|
|
37
|
+
exports.STARTUP_HANDSHAKE_TIMEOUT_ENV = 'HOMEGRAPH_STARTUP_HANDSHAKE_TIMEOUT_MS';
|
|
38
|
+
/**
|
|
39
|
+
* Parse the timeout env override. Missing/invalid → default; `<= 0` → `0`
|
|
40
|
+
* (disabled), the same disable convention as `HOMEGRAPH_PPID_POLL_MS`.
|
|
41
|
+
*/
|
|
42
|
+
function parseStartupHandshakeTimeoutMs(raw) {
|
|
43
|
+
if (raw === undefined || raw === '')
|
|
44
|
+
return exports.DEFAULT_STARTUP_HANDSHAKE_TIMEOUT_MS;
|
|
45
|
+
const parsed = Number(raw);
|
|
46
|
+
if (!Number.isFinite(parsed))
|
|
47
|
+
return exports.DEFAULT_STARTUP_HANDSHAKE_TIMEOUT_MS;
|
|
48
|
+
if (parsed <= 0)
|
|
49
|
+
return 0;
|
|
50
|
+
return Math.floor(parsed);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Arm the backstop. `onAbandoned` runs at most once, only if no `'data'` event
|
|
54
|
+
* arrives on `stream` within the timeout. Returns a disarm function (idempotent;
|
|
55
|
+
* also detaches the listener). `stream`/`timeoutMs` are injectable for tests.
|
|
56
|
+
*/
|
|
57
|
+
function armStartupHandshakeTimeout(onAbandoned, stream = process.stdin, timeoutMs = parseStartupHandshakeTimeoutMs(process.env[exports.STARTUP_HANDSHAKE_TIMEOUT_ENV])) {
|
|
58
|
+
if (timeoutMs <= 0)
|
|
59
|
+
return () => { };
|
|
60
|
+
const onFirstData = () => { clearTimeout(timer); };
|
|
61
|
+
const timer = setTimeout(() => {
|
|
62
|
+
stream.removeListener('data', onFirstData);
|
|
63
|
+
onAbandoned();
|
|
64
|
+
}, timeoutMs);
|
|
65
|
+
// Never let the backstop itself keep an otherwise-finished process alive.
|
|
66
|
+
timer.unref?.();
|
|
67
|
+
stream.once('data', onFirstData);
|
|
68
|
+
return () => {
|
|
69
|
+
stream.removeListener('data', onFirstData);
|
|
70
|
+
clearTimeout(timer);
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=startup-handshake.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startup-handshake.js","sourceRoot":"","sources":["../../src/mcp/startup-handshake.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;;;AAWH,wEAMC;AAOD,gEAkBC;AAxCD,+EAA+E;AAClE,QAAA,oCAAoC,GAAG,OAAO,CAAC,CAAC,SAAS;AAEzD,QAAA,6BAA6B,GAAG,wCAAwC,CAAC;AAEtF;;;GAGG;AACH,SAAgB,8BAA8B,CAAC,GAAuB;IACpE,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,4CAAoC,CAAC;IACjF,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,4CAAoC,CAAC;IAC1E,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED;;;;GAIG;AACH,SAAgB,0BAA0B,CACxC,WAAuB,EACvB,SAAgC,OAAO,CAAC,KAAK,EAC7C,YAAoB,8BAA8B,CAAC,OAAO,CAAC,GAAG,CAAC,qCAA6B,CAAC,CAAC;IAE9F,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,GAAG,EAAE,GAAkB,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,GAAS,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;QAC5B,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC3C,WAAW,EAAE,CAAC;IAChB,CAAC,EAAE,SAAS,CAAC,CAAC;IACd,0EAA0E;IAC1E,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACjC,OAAO,GAAS,EAAE;QAChB,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC3C,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/mcp/tools.d.ts
CHANGED
|
@@ -25,6 +25,21 @@ export declare class NotIndexedError extends Error {
|
|
|
25
25
|
*/
|
|
26
26
|
export declare class PathRefusalError extends Error {
|
|
27
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Normalize Erlang-native symbol spellings in an explore query into the shapes
|
|
30
|
+
* the rest of the pipeline already understands. Agents working Erlang code
|
|
31
|
+
* name symbols the way the language spells them — `mod:fn/3`, `init/2` — and
|
|
32
|
+
* those tokens previously died in both consumers: the flow-builder's token
|
|
33
|
+
* filter rejects `:` and `/arity` outright, and the search-side field parser
|
|
34
|
+
* eats `mod:fn` as an unknown `field:value`.
|
|
35
|
+
*
|
|
36
|
+
* - `fn/3` → `fn` (arity tail after an identifier)
|
|
37
|
+
* - `mod:fn` → `mod.fn` (exactly one colon between identifiers)
|
|
38
|
+
*
|
|
39
|
+
* Safe cross-language: Lua's `t:m` spelling maps to the same `t.m` its
|
|
40
|
+
* qualified names use.
|
|
41
|
+
*/
|
|
42
|
+
export declare function normalizeQuerySpelling(query: string): string;
|
|
28
43
|
/**
|
|
29
44
|
* Calculate the recommended number of homegraph_explore calls based on project size.
|
|
30
45
|
* Larger codebases need more exploration calls to cover their surface area,
|
|
@@ -81,13 +96,23 @@ export interface ExploreOutputBudget {
|
|
|
81
96
|
excludeLowValueFiles: boolean;
|
|
82
97
|
}
|
|
83
98
|
export declare function getExploreOutputBudget(fileCount: number): ExploreOutputBudget;
|
|
99
|
+
/**
|
|
100
|
+
* Shrink explore ceilings for local-detail / no-flow named-symbol questions.
|
|
101
|
+
* Large repos otherwise dump ~24K related source that the agent then still
|
|
102
|
+
* greps/reads — the main token regression vs without-homegraph.
|
|
103
|
+
*/
|
|
104
|
+
export declare function tightenExploreBudgetForQuery(budget: ExploreOutputBudget, query: string, opts?: {
|
|
105
|
+
hasFlowPath?: boolean;
|
|
106
|
+
}): ExploreOutputBudget;
|
|
84
107
|
/**
|
|
85
108
|
* Per-file staleness banner emitted at the top of a tool response when the
|
|
86
109
|
* file watcher has pending events for files referenced by the response.
|
|
87
110
|
* The agent uses this to fall back to Read for those specific files
|
|
88
111
|
* without waiting for the debounced sync (issue #403).
|
|
89
112
|
*/
|
|
90
|
-
export declare function formatStaleBanner(stale: PendingFile[]
|
|
113
|
+
export declare function formatStaleBanner(stale: PendingFile[], opts?: {
|
|
114
|
+
catchUpDeferred?: boolean;
|
|
115
|
+
}): string;
|
|
91
116
|
/**
|
|
92
117
|
* Compact footer listing pending files that are NOT referenced in this
|
|
93
118
|
* response. Gives the agent a complete project-wide freshness picture
|
|
@@ -323,6 +348,23 @@ export declare class ToolHandler {
|
|
|
323
348
|
* Execute a tool by name
|
|
324
349
|
*/
|
|
325
350
|
execute(toolName: string, args: Record<string, unknown>): Promise<ToolResult>;
|
|
351
|
+
/**
|
|
352
|
+
* Dispatch a read tool with a hard deadline under the typical ~60s MCP client
|
|
353
|
+
* timeout.
|
|
354
|
+
*
|
|
355
|
+
* - **Heavy** tools (explore/impact) → query pool (keeps transport free).
|
|
356
|
+
* - **Light** tools (search/node/callers/…) → warm main connection (pool cold
|
|
357
|
+
* open of a large WAL index routinely outruns the client; search used to
|
|
358
|
+
* finish in <1s on the already-open main DB).
|
|
359
|
+
*
|
|
360
|
+
* Soft/deadline replies are **static busy text only** — never FTS / explore
|
|
361
|
+
* on the main thread. A previous path called `searchNodes` from the timeout
|
|
362
|
+
* callback with the full natural-language query, freezing the event loop so
|
|
363
|
+
* the success-shaped reply never flushed → empty client `-32001`.
|
|
364
|
+
*/
|
|
365
|
+
private runReadToolWithDeadline;
|
|
366
|
+
/** Success-shaped busy note — no DB, never blocks the transport. */
|
|
367
|
+
private deadlineBusyResult;
|
|
326
368
|
/**
|
|
327
369
|
* Run a single read tool to completion and return its raw {@link ToolResult},
|
|
328
370
|
* classifying expected failures the same way {@link execute}'s catch does so
|
|
@@ -344,9 +386,6 @@ export declare class ToolHandler {
|
|
|
344
386
|
* NotIndexed/PathRefusal, which {@link executeReadTool} classifies.
|
|
345
387
|
*/
|
|
346
388
|
private dispatchTool;
|
|
347
|
-
/**
|
|
348
|
-
* Handle homegraph_search
|
|
349
|
-
*/
|
|
350
389
|
private handleSearch;
|
|
351
390
|
/**
|
|
352
391
|
* Group symbol matches into DISTINCT DEFINITIONS — one group per
|
|
@@ -435,6 +474,67 @@ export declare class ToolHandler {
|
|
|
435
474
|
* are marked — that's the "you were right, here's the wiring" case.
|
|
436
475
|
*/
|
|
437
476
|
private boundaryCandidates;
|
|
477
|
+
/**
|
|
478
|
+
* Import sites for @kit.* / *Kit module names — surfaces full `import { … } from '@kit.X'`
|
|
479
|
+
* lines. When the query also names a symbol (taskpool), only matching imports are listed.
|
|
480
|
+
*/
|
|
481
|
+
private buildImportSitesSection;
|
|
482
|
+
/**
|
|
483
|
+
* External-caller inventory for a named class — methods → who calls them (paths only).
|
|
484
|
+
*/
|
|
485
|
+
private buildCallerListingSection;
|
|
486
|
+
/**
|
|
487
|
+
* Upstream data-source survey — which services/symbols feed a Manager (e.g. BadgeManager → notification).
|
|
488
|
+
*/
|
|
489
|
+
private buildDataSourceSection;
|
|
490
|
+
/**
|
|
491
|
+
* Main-thread fast path for inventory surveys — skips the worker queue.
|
|
492
|
+
*/
|
|
493
|
+
private tryFastPathResult;
|
|
494
|
+
/**
|
|
495
|
+
* Fast inventory-only explore — skips findRelevantContext for survey/caller/dependency queries.
|
|
496
|
+
*/
|
|
497
|
+
private tryFastInventoryExplore;
|
|
498
|
+
/**
|
|
499
|
+
* Render a compact symbol-bounded slice of one file (lightweight mechanism path).
|
|
500
|
+
*/
|
|
501
|
+
private renderLightMechanismSource;
|
|
502
|
+
/**
|
|
503
|
+
* Lightweight mechanism explore — seed entry symbols + flow spine, skip
|
|
504
|
+
* findRelevantContext. Fast enough for MCP budget; complete enough to avoid
|
|
505
|
+
* agent grep/read loops (token savings).
|
|
506
|
+
*/
|
|
507
|
+
private tryLightMechanismExplore;
|
|
508
|
+
/**
|
|
509
|
+
* Compact explore for local-symbol behavior questions — skips findRelevantContext
|
|
510
|
+
* and caps to 1–2 defining files (avoids the ~24K related-file dump).
|
|
511
|
+
*/
|
|
512
|
+
private tryCompactLocalSymbolExplore;
|
|
513
|
+
/**
|
|
514
|
+
* @kit module capability survey — repo import/usage only (SDK defs are not indexed).
|
|
515
|
+
*/
|
|
516
|
+
private buildKitModuleUsageSection;
|
|
517
|
+
/** Disambiguate homonymous types (Configuration, Rectangle) when several defs exist. */
|
|
518
|
+
private buildHomonymDefinitionsSection;
|
|
519
|
+
/** Direct subclasses of a named type — paths only. */
|
|
520
|
+
private buildInheritanceSurveySection;
|
|
521
|
+
/**
|
|
522
|
+
* Files/lines using a member or literal pattern (.drawModifier, .width('100%')).
|
|
523
|
+
*/
|
|
524
|
+
private buildMemberSurveySection;
|
|
525
|
+
/**
|
|
526
|
+
* API call-site survey — where a named API/symbol (statfs, napi_*) appears in repo source.
|
|
527
|
+
*/
|
|
528
|
+
private buildApiUsageSection;
|
|
529
|
+
/**
|
|
530
|
+
* Domain file inventory — related files, usage existence, or concept comparison.
|
|
531
|
+
* Paths + top symbols only; source bodies omitted when this section renders.
|
|
532
|
+
*/
|
|
533
|
+
private buildDomainFileSurveySection;
|
|
534
|
+
/**
|
|
535
|
+
* Render a small config/manifest file named in the query (build-profile.json5, …).
|
|
536
|
+
*/
|
|
537
|
+
private buildConfigFileSection;
|
|
438
538
|
/**
|
|
439
539
|
* Compact "blast radius" for the entry symbols of an explore result: who
|
|
440
540
|
* depends on each (callers) and which test files cover it — LOCATIONS ONLY,
|
package/dist/mcp/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,SAAS,MAAM,UAAU,CAAC;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
|