@ltm-alpha/alpha-cs 1.6.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/LICENSE +21 -0
- package/README.md +972 -0
- package/dist/bin/command-supervision.d.ts +49 -0
- package/dist/bin/command-supervision.d.ts.map +1 -0
- package/dist/bin/command-supervision.js +95 -0
- package/dist/bin/command-supervision.js.map +1 -0
- package/dist/bin/fatal-handler.d.ts +20 -0
- package/dist/bin/fatal-handler.d.ts.map +1 -0
- package/dist/bin/fatal-handler.js +118 -0
- package/dist/bin/fatal-handler.js.map +1 -0
- package/dist/bin/ltm-alpha-cs.d.ts +27 -0
- package/dist/bin/ltm-alpha-cs.d.ts.map +1 -0
- package/dist/bin/ltm-alpha-cs.js +2643 -0
- package/dist/bin/ltm-alpha-cs.js.map +1 -0
- package/dist/bin/node-version-check.d.ts +37 -0
- package/dist/bin/node-version-check.d.ts.map +1 -0
- package/dist/bin/node-version-check.js +79 -0
- package/dist/bin/node-version-check.js.map +1 -0
- package/dist/bin/uninstall.d.ts +14 -0
- package/dist/bin/uninstall.d.ts.map +1 -0
- package/dist/bin/uninstall.js +36 -0
- package/dist/bin/uninstall.js.map +1 -0
- package/dist/context/formatter.d.ts +36 -0
- package/dist/context/formatter.d.ts.map +1 -0
- package/dist/context/formatter.js +269 -0
- package/dist/context/formatter.js.map +1 -0
- package/dist/context/index.d.ts +131 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +1378 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/markers.d.ts +19 -0
- package/dist/context/markers.d.ts.map +1 -0
- package/dist/context/markers.js +22 -0
- package/dist/context/markers.js.map +1 -0
- package/dist/db/index.d.ts +385 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +902 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/migrations.d.ts +44 -0
- package/dist/db/migrations.d.ts.map +1 -0
- package/dist/db/migrations.js +236 -0
- package/dist/db/migrations.js.map +1 -0
- package/dist/db/queries.d.ts +1095 -0
- package/dist/db/queries.d.ts.map +1 -0
- package/dist/db/queries.js +3285 -0
- package/dist/db/queries.js.map +1 -0
- package/dist/db/schema.sql +207 -0
- package/dist/db/sqlite-adapter.d.ts +55 -0
- package/dist/db/sqlite-adapter.d.ts.map +1 -0
- package/dist/db/sqlite-adapter.js +135 -0
- package/dist/db/sqlite-adapter.js.map +1 -0
- package/dist/db/wal-valve.d.ts +139 -0
- package/dist/db/wal-valve.d.ts.map +1 -0
- package/dist/db/wal-valve.js +333 -0
- package/dist/db/wal-valve.js.map +1 -0
- package/dist/directory.d.ts +232 -0
- package/dist/directory.d.ts.map +1 -0
- package/dist/directory.js +877 -0
- package/dist/directory.js.map +1 -0
- package/dist/errors.d.ts +150 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +234 -0
- package/dist/errors.js.map +1 -0
- package/dist/extraction/astro-extractor.d.ts +79 -0
- package/dist/extraction/astro-extractor.d.ts.map +1 -0
- package/dist/extraction/astro-extractor.js +320 -0
- package/dist/extraction/astro-extractor.js.map +1 -0
- 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 +505 -0
- package/dist/extraction/cfml-extractor.js.map +1 -0
- package/dist/extraction/dfm-extractor.d.ts +31 -0
- package/dist/extraction/dfm-extractor.d.ts.map +1 -0
- package/dist/extraction/dfm-extractor.js +151 -0
- package/dist/extraction/dfm-extractor.js.map +1 -0
- package/dist/extraction/extraction-version.d.ts +25 -0
- package/dist/extraction/extraction-version.d.ts.map +1 -0
- package/dist/extraction/extraction-version.js +28 -0
- package/dist/extraction/extraction-version.js.map +1 -0
- package/dist/extraction/function-ref.d.ts +118 -0
- package/dist/extraction/function-ref.d.ts.map +1 -0
- package/dist/extraction/function-ref.js +746 -0
- package/dist/extraction/function-ref.js.map +1 -0
- package/dist/extraction/generated-detection.d.ts +66 -0
- package/dist/extraction/generated-detection.d.ts.map +1 -0
- package/dist/extraction/generated-detection.js +248 -0
- package/dist/extraction/generated-detection.js.map +1 -0
- package/dist/extraction/grammars.d.ts +148 -0
- package/dist/extraction/grammars.d.ts.map +1 -0
- package/dist/extraction/grammars.js +743 -0
- package/dist/extraction/grammars.js.map +1 -0
- package/dist/extraction/index.d.ts +455 -0
- package/dist/extraction/index.d.ts.map +1 -0
- package/dist/extraction/index.js +3208 -0
- package/dist/extraction/index.js.map +1 -0
- package/dist/extraction/kernel/decode.d.ts +9 -0
- package/dist/extraction/kernel/decode.d.ts.map +1 -0
- package/dist/extraction/kernel/decode.js +162 -0
- package/dist/extraction/kernel/decode.js.map +1 -0
- package/dist/extraction/kernel/index.d.ts +64 -0
- package/dist/extraction/kernel/index.d.ts.map +1 -0
- package/dist/extraction/kernel/index.js +279 -0
- package/dist/extraction/kernel/index.js.map +1 -0
- package/dist/extraction/kernel/layout.d.ts +101 -0
- package/dist/extraction/kernel/layout.d.ts.map +1 -0
- package/dist/extraction/kernel/layout.js +104 -0
- package/dist/extraction/kernel/layout.js.map +1 -0
- package/dist/extraction/kernel/loader.d.ts +103 -0
- package/dist/extraction/kernel/loader.d.ts.map +1 -0
- package/dist/extraction/kernel/loader.js +146 -0
- package/dist/extraction/kernel/loader.js.map +1 -0
- package/dist/extraction/languages/arkts.d.ts +3 -0
- package/dist/extraction/languages/arkts.d.ts.map +1 -0
- package/dist/extraction/languages/arkts.js +127 -0
- package/dist/extraction/languages/arkts.js.map +1 -0
- package/dist/extraction/languages/c-cpp.d.ts +167 -0
- package/dist/extraction/languages/c-cpp.d.ts.map +1 -0
- package/dist/extraction/languages/c-cpp.js +1850 -0
- package/dist/extraction/languages/c-cpp.js.map +1 -0
- 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/csharp.d.ts +25 -0
- package/dist/extraction/languages/csharp.d.ts.map +1 -0
- package/dist/extraction/languages/csharp.js +175 -0
- package/dist/extraction/languages/csharp.js.map +1 -0
- package/dist/extraction/languages/dart.d.ts +3 -0
- package/dist/extraction/languages/dart.d.ts.map +1 -0
- package/dist/extraction/languages/dart.js +374 -0
- package/dist/extraction/languages/dart.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 +386 -0
- package/dist/extraction/languages/erlang.js.map +1 -0
- package/dist/extraction/languages/go.d.ts +3 -0
- package/dist/extraction/languages/go.d.ts.map +1 -0
- package/dist/extraction/languages/go.js +111 -0
- package/dist/extraction/languages/go.js.map +1 -0
- package/dist/extraction/languages/index.d.ts +10 -0
- package/dist/extraction/languages/index.d.ts.map +1 -0
- package/dist/extraction/languages/index.js +71 -0
- package/dist/extraction/languages/index.js.map +1 -0
- package/dist/extraction/languages/java.d.ts +3 -0
- package/dist/extraction/languages/java.d.ts.map +1 -0
- package/dist/extraction/languages/java.js +315 -0
- package/dist/extraction/languages/java.js.map +1 -0
- package/dist/extraction/languages/javascript.d.ts +3 -0
- package/dist/extraction/languages/javascript.d.ts.map +1 -0
- package/dist/extraction/languages/javascript.js +106 -0
- package/dist/extraction/languages/javascript.js.map +1 -0
- package/dist/extraction/languages/kotlin.d.ts +3 -0
- package/dist/extraction/languages/kotlin.d.ts.map +1 -0
- package/dist/extraction/languages/kotlin.js +512 -0
- package/dist/extraction/languages/kotlin.js.map +1 -0
- package/dist/extraction/languages/lua.d.ts +3 -0
- package/dist/extraction/languages/lua.d.ts.map +1 -0
- package/dist/extraction/languages/lua.js +153 -0
- package/dist/extraction/languages/lua.js.map +1 -0
- package/dist/extraction/languages/luau.d.ts +3 -0
- package/dist/extraction/languages/luau.d.ts.map +1 -0
- package/dist/extraction/languages/luau.js +37 -0
- package/dist/extraction/languages/luau.js.map +1 -0
- 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/objc.d.ts +3 -0
- package/dist/extraction/languages/objc.d.ts.map +1 -0
- package/dist/extraction/languages/objc.js +179 -0
- package/dist/extraction/languages/objc.js.map +1 -0
- package/dist/extraction/languages/pascal.d.ts +3 -0
- package/dist/extraction/languages/pascal.d.ts.map +1 -0
- package/dist/extraction/languages/pascal.js +77 -0
- package/dist/extraction/languages/pascal.js.map +1 -0
- package/dist/extraction/languages/php.d.ts +3 -0
- package/dist/extraction/languages/php.d.ts.map +1 -0
- package/dist/extraction/languages/php.js +196 -0
- package/dist/extraction/languages/php.js.map +1 -0
- package/dist/extraction/languages/python.d.ts +3 -0
- package/dist/extraction/languages/python.d.ts.map +1 -0
- package/dist/extraction/languages/python.js +56 -0
- package/dist/extraction/languages/python.js.map +1 -0
- package/dist/extraction/languages/r.d.ts +3 -0
- package/dist/extraction/languages/r.d.ts.map +1 -0
- package/dist/extraction/languages/r.js +314 -0
- package/dist/extraction/languages/r.js.map +1 -0
- package/dist/extraction/languages/ruby.d.ts +3 -0
- package/dist/extraction/languages/ruby.d.ts.map +1 -0
- package/dist/extraction/languages/ruby.js +149 -0
- package/dist/extraction/languages/ruby.js.map +1 -0
- package/dist/extraction/languages/rust.d.ts +23 -0
- package/dist/extraction/languages/rust.d.ts.map +1 -0
- package/dist/extraction/languages/rust.js +172 -0
- package/dist/extraction/languages/rust.js.map +1 -0
- package/dist/extraction/languages/scala.d.ts +3 -0
- package/dist/extraction/languages/scala.d.ts.map +1 -0
- package/dist/extraction/languages/scala.js +219 -0
- package/dist/extraction/languages/scala.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/swift.d.ts +3 -0
- package/dist/extraction/languages/swift.d.ts.map +1 -0
- package/dist/extraction/languages/swift.js +152 -0
- package/dist/extraction/languages/swift.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/typescript.d.ts +16 -0
- package/dist/extraction/languages/typescript.d.ts.map +1 -0
- package/dist/extraction/languages/typescript.js +174 -0
- package/dist/extraction/languages/typescript.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/liquid-extractor.d.ts +59 -0
- package/dist/extraction/liquid-extractor.d.ts.map +1 -0
- package/dist/extraction/liquid-extractor.js +357 -0
- package/dist/extraction/liquid-extractor.js.map +1 -0
- package/dist/extraction/mybatis-extractor.d.ts +68 -0
- package/dist/extraction/mybatis-extractor.d.ts.map +1 -0
- package/dist/extraction/mybatis-extractor.js +300 -0
- package/dist/extraction/mybatis-extractor.js.map +1 -0
- package/dist/extraction/parse-pool.d.ts +167 -0
- package/dist/extraction/parse-pool.d.ts.map +1 -0
- package/dist/extraction/parse-pool.js +421 -0
- package/dist/extraction/parse-pool.js.map +1 -0
- package/dist/extraction/parse-worker.d.ts +8 -0
- package/dist/extraction/parse-worker.d.ts.map +1 -0
- package/dist/extraction/parse-worker.js +138 -0
- package/dist/extraction/parse-worker.js.map +1 -0
- package/dist/extraction/razor-extractor.d.ts +42 -0
- package/dist/extraction/razor-extractor.d.ts.map +1 -0
- package/dist/extraction/razor-extractor.js +285 -0
- package/dist/extraction/razor-extractor.js.map +1 -0
- package/dist/extraction/store-worker.d.ts +24 -0
- package/dist/extraction/store-worker.d.ts.map +1 -0
- package/dist/extraction/store-worker.js +139 -0
- package/dist/extraction/store-worker.js.map +1 -0
- package/dist/extraction/store-writer.d.ts +63 -0
- package/dist/extraction/store-writer.d.ts.map +1 -0
- package/dist/extraction/store-writer.js +174 -0
- package/dist/extraction/store-writer.js.map +1 -0
- package/dist/extraction/svelte-extractor.d.ts +56 -0
- package/dist/extraction/svelte-extractor.d.ts.map +1 -0
- package/dist/extraction/svelte-extractor.js +275 -0
- package/dist/extraction/svelte-extractor.js.map +1 -0
- package/dist/extraction/syntax-tokens.d.ts +103 -0
- package/dist/extraction/syntax-tokens.d.ts.map +1 -0
- package/dist/extraction/syntax-tokens.js +381 -0
- package/dist/extraction/syntax-tokens.js.map +1 -0
- package/dist/extraction/tree-sitter-helpers.d.ts +28 -0
- package/dist/extraction/tree-sitter-helpers.d.ts.map +1 -0
- package/dist/extraction/tree-sitter-helpers.js +153 -0
- package/dist/extraction/tree-sitter-helpers.js.map +1 -0
- package/dist/extraction/tree-sitter-types.d.ts +279 -0
- package/dist/extraction/tree-sitter-types.d.ts.map +1 -0
- package/dist/extraction/tree-sitter-types.js +10 -0
- package/dist/extraction/tree-sitter-types.js.map +1 -0
- package/dist/extraction/tree-sitter.d.ts +766 -0
- package/dist/extraction/tree-sitter.d.ts.map +1 -0
- package/dist/extraction/tree-sitter.js +7138 -0
- package/dist/extraction/tree-sitter.js.map +1 -0
- package/dist/extraction/vue-extractor.d.ts +51 -0
- package/dist/extraction/vue-extractor.d.ts.map +1 -0
- package/dist/extraction/vue-extractor.js +254 -0
- package/dist/extraction/vue-extractor.js.map +1 -0
- package/dist/extraction/wasm/tree-sitter-arkts.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-c.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-c_sharp.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-cpp.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-dart.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-erlang.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-go.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-java.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-javascript.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-kotlin.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-lua.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-luau.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-nix.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-pascal.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-php.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-python.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-r.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-ruby.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-rust.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-scala.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-swift.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-terraform.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-tsx.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-typescript.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-vbnet.wasm +0 -0
- package/dist/extraction/wasm-runtime-flags.d.ts +53 -0
- package/dist/extraction/wasm-runtime-flags.d.ts.map +1 -0
- package/dist/extraction/wasm-runtime-flags.js +130 -0
- package/dist/extraction/wasm-runtime-flags.js.map +1 -0
- package/dist/graph/branch-guards.d.ts +248 -0
- package/dist/graph/branch-guards.d.ts.map +1 -0
- package/dist/graph/branch-guards.js +2231 -0
- package/dist/graph/branch-guards.js.map +1 -0
- package/dist/graph/dead-code.d.ts +251 -0
- package/dist/graph/dead-code.d.ts.map +1 -0
- package/dist/graph/dead-code.js +756 -0
- package/dist/graph/dead-code.js.map +1 -0
- package/dist/graph/dynamic-boundary-report.d.ts +121 -0
- package/dist/graph/dynamic-boundary-report.d.ts.map +1 -0
- package/dist/graph/dynamic-boundary-report.js +283 -0
- package/dist/graph/dynamic-boundary-report.js.map +1 -0
- package/dist/graph/index.d.ts +12 -0
- package/dist/graph/index.d.ts.map +1 -0
- package/dist/graph/index.js +28 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/graph/named-symbol-flow.d.ts +125 -0
- package/dist/graph/named-symbol-flow.d.ts.map +1 -0
- package/dist/graph/named-symbol-flow.js +552 -0
- package/dist/graph/named-symbol-flow.js.map +1 -0
- package/dist/graph/queries.d.ts +106 -0
- package/dist/graph/queries.d.ts.map +1 -0
- package/dist/graph/queries.js +341 -0
- package/dist/graph/queries.js.map +1 -0
- package/dist/graph/symbol-lookup.d.ts +83 -0
- package/dist/graph/symbol-lookup.d.ts.map +1 -0
- package/dist/graph/symbol-lookup.js +181 -0
- package/dist/graph/symbol-lookup.js.map +1 -0
- package/dist/graph/traversal.d.ts +127 -0
- package/dist/graph/traversal.d.ts.map +1 -0
- package/dist/graph/traversal.js +599 -0
- package/dist/graph/traversal.js.map +1 -0
- package/dist/graph/type-hierarchy.d.ts +155 -0
- package/dist/graph/type-hierarchy.d.ts.map +1 -0
- package/dist/graph/type-hierarchy.js +382 -0
- package/dist/graph/type-hierarchy.js.map +1 -0
- package/dist/index.d.ts +874 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2005 -0
- package/dist/index.js.map +1 -0
- package/dist/installer/config-writer.d.ts +28 -0
- package/dist/installer/config-writer.d.ts.map +1 -0
- package/dist/installer/config-writer.js +91 -0
- package/dist/installer/config-writer.js.map +1 -0
- package/dist/installer/index.d.ts +143 -0
- package/dist/installer/index.d.ts.map +1 -0
- package/dist/installer/index.js +621 -0
- package/dist/installer/index.js.map +1 -0
- package/dist/installer/instructions-template.d.ts +41 -0
- package/dist/installer/instructions-template.d.ts.map +1 -0
- package/dist/installer/instructions-template.js +53 -0
- package/dist/installer/instructions-template.js.map +1 -0
- package/dist/installer/targets/antigravity.d.ts +57 -0
- package/dist/installer/targets/antigravity.d.ts.map +1 -0
- package/dist/installer/targets/antigravity.js +308 -0
- package/dist/installer/targets/antigravity.js.map +1 -0
- package/dist/installer/targets/claude.d.ts +65 -0
- package/dist/installer/targets/claude.d.ts.map +1 -0
- package/dist/installer/targets/claude.js +514 -0
- package/dist/installer/targets/claude.js.map +1 -0
- package/dist/installer/targets/codex.d.ts +33 -0
- package/dist/installer/targets/codex.d.ts.map +1 -0
- package/dist/installer/targets/codex.js +212 -0
- package/dist/installer/targets/codex.js.map +1 -0
- package/dist/installer/targets/copilot-cli.d.ts +32 -0
- package/dist/installer/targets/copilot-cli.d.ts.map +1 -0
- package/dist/installer/targets/copilot-cli.js +215 -0
- package/dist/installer/targets/copilot-cli.js.map +1 -0
- package/dist/installer/targets/copilot-jetbrains.d.ts +42 -0
- package/dist/installer/targets/copilot-jetbrains.d.ts.map +1 -0
- package/dist/installer/targets/copilot-jetbrains.js +238 -0
- package/dist/installer/targets/copilot-jetbrains.js.map +1 -0
- package/dist/installer/targets/copilot-vscode.d.ts +47 -0
- package/dist/installer/targets/copilot-vscode.d.ts.map +1 -0
- package/dist/installer/targets/copilot-vscode.js +219 -0
- package/dist/installer/targets/copilot-vscode.js.map +1 -0
- package/dist/installer/targets/cursor.d.ts +35 -0
- package/dist/installer/targets/cursor.d.ts.map +1 -0
- package/dist/installer/targets/cursor.js +254 -0
- package/dist/installer/targets/cursor.js.map +1 -0
- package/dist/installer/targets/gemini.d.ts +26 -0
- package/dist/installer/targets/gemini.d.ts.map +1 -0
- package/dist/installer/targets/gemini.js +165 -0
- package/dist/installer/targets/gemini.js.map +1 -0
- package/dist/installer/targets/hermes.d.ts +18 -0
- package/dist/installer/targets/hermes.d.ts.map +1 -0
- package/dist/installer/targets/hermes.js +359 -0
- package/dist/installer/targets/hermes.js.map +1 -0
- package/dist/installer/targets/kiro.d.ts +27 -0
- package/dist/installer/targets/kiro.d.ts.map +1 -0
- package/dist/installer/targets/kiro.js +178 -0
- package/dist/installer/targets/kiro.js.map +1 -0
- package/dist/installer/targets/opencode.d.ts +49 -0
- package/dist/installer/targets/opencode.d.ts.map +1 -0
- package/dist/installer/targets/opencode.js +339 -0
- package/dist/installer/targets/opencode.js.map +1 -0
- package/dist/installer/targets/registry.d.ts +35 -0
- package/dist/installer/targets/registry.d.ts.map +1 -0
- package/dist/installer/targets/registry.js +97 -0
- package/dist/installer/targets/registry.js.map +1 -0
- package/dist/installer/targets/shared.d.ts +101 -0
- package/dist/installer/targets/shared.d.ts.map +1 -0
- package/dist/installer/targets/shared.js +264 -0
- package/dist/installer/targets/shared.js.map +1 -0
- package/dist/installer/targets/toml.d.ts +53 -0
- package/dist/installer/targets/toml.d.ts.map +1 -0
- package/dist/installer/targets/toml.js +226 -0
- package/dist/installer/targets/toml.js.map +1 -0
- package/dist/installer/targets/types.d.ts +108 -0
- package/dist/installer/targets/types.d.ts.map +1 -0
- package/dist/installer/targets/types.js +16 -0
- package/dist/installer/targets/types.js.map +1 -0
- package/dist/mcp/daemon-manager.d.ts +42 -0
- package/dist/mcp/daemon-manager.d.ts.map +1 -0
- package/dist/mcp/daemon-manager.js +141 -0
- package/dist/mcp/daemon-manager.js.map +1 -0
- package/dist/mcp/daemon-paths.d.ts +81 -0
- package/dist/mcp/daemon-paths.d.ts.map +1 -0
- package/dist/mcp/daemon-paths.js +228 -0
- package/dist/mcp/daemon-paths.js.map +1 -0
- package/dist/mcp/daemon-registry.d.ts +57 -0
- package/dist/mcp/daemon-registry.d.ts.map +1 -0
- package/dist/mcp/daemon-registry.js +323 -0
- package/dist/mcp/daemon-registry.js.map +1 -0
- package/dist/mcp/daemon.d.ts +294 -0
- package/dist/mcp/daemon.d.ts.map +1 -0
- package/dist/mcp/daemon.js +897 -0
- package/dist/mcp/daemon.js.map +1 -0
- package/dist/mcp/dynamic-boundaries.d.ts +32 -0
- package/dist/mcp/dynamic-boundaries.d.ts.map +1 -0
- package/dist/mcp/dynamic-boundaries.js +323 -0
- package/dist/mcp/dynamic-boundaries.js.map +1 -0
- 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 +133 -0
- package/dist/mcp/engine.d.ts.map +1 -0
- package/dist/mcp/engine.js +421 -0
- package/dist/mcp/engine.js.map +1 -0
- package/dist/mcp/explore-dedup.d.ts +140 -0
- package/dist/mcp/explore-dedup.d.ts.map +1 -0
- package/dist/mcp/explore-dedup.js +239 -0
- package/dist/mcp/explore-dedup.js.map +1 -0
- package/dist/mcp/explore-diagnostics.d.ts +289 -0
- package/dist/mcp/explore-diagnostics.d.ts.map +1 -0
- package/dist/mcp/explore-diagnostics.js +558 -0
- package/dist/mcp/explore-diagnostics.js.map +1 -0
- package/dist/mcp/explore-session-state.d.ts +217 -0
- package/dist/mcp/explore-session-state.d.ts.map +1 -0
- package/dist/mcp/explore-session-state.js +322 -0
- package/dist/mcp/explore-session-state.js.map +1 -0
- package/dist/mcp/index.d.ts +139 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +636 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/liveness-watchdog.d.ts +35 -0
- package/dist/mcp/liveness-watchdog.d.ts.map +1 -0
- package/dist/mcp/liveness-watchdog.js +269 -0
- package/dist/mcp/liveness-watchdog.js.map +1 -0
- package/dist/mcp/ppid-watchdog.d.ts +62 -0
- package/dist/mcp/ppid-watchdog.d.ts.map +1 -0
- package/dist/mcp/ppid-watchdog.js +64 -0
- package/dist/mcp/ppid-watchdog.js.map +1 -0
- package/dist/mcp/proxy.d.ts +87 -0
- package/dist/mcp/proxy.d.ts.map +1 -0
- package/dist/mcp/proxy.js +672 -0
- package/dist/mcp/proxy.js.map +1 -0
- package/dist/mcp/query-pool.d.ts +108 -0
- package/dist/mcp/query-pool.d.ts.map +1 -0
- package/dist/mcp/query-pool.js +315 -0
- package/dist/mcp/query-pool.js.map +1 -0
- package/dist/mcp/query-worker.d.ts +24 -0
- package/dist/mcp/query-worker.d.ts.map +1 -0
- package/dist/mcp/query-worker.js +87 -0
- package/dist/mcp/query-worker.js.map +1 -0
- package/dist/mcp/server-instructions.d.ts +34 -0
- package/dist/mcp/server-instructions.d.ts.map +1 -0
- package/dist/mcp/server-instructions.js +113 -0
- package/dist/mcp/server-instructions.js.map +1 -0
- package/dist/mcp/session.d.ts +109 -0
- package/dist/mcp/session.d.ts.map +1 -0
- package/dist/mcp/session.js +380 -0
- package/dist/mcp/session.js.map +1 -0
- 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/stdin-teardown.d.ts +27 -0
- package/dist/mcp/stdin-teardown.d.ts.map +1 -0
- package/dist/mcp/stdin-teardown.js +49 -0
- package/dist/mcp/stdin-teardown.js.map +1 -0
- package/dist/mcp/tools.d.ts +936 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +6611 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/mcp/transport.d.ts +188 -0
- package/dist/mcp/transport.d.ts.map +1 -0
- package/dist/mcp/transport.js +377 -0
- package/dist/mcp/transport.js.map +1 -0
- package/dist/mcp/version.d.ts +19 -0
- package/dist/mcp/version.d.ts.map +1 -0
- package/dist/mcp/version.js +71 -0
- package/dist/mcp/version.js.map +1 -0
- package/dist/mcp/writer-lock.d.ts +47 -0
- package/dist/mcp/writer-lock.d.ts.map +1 -0
- package/dist/mcp/writer-lock.js +218 -0
- package/dist/mcp/writer-lock.js.map +1 -0
- package/dist/project-config.d.ts +117 -0
- package/dist/project-config.d.ts.map +1 -0
- package/dist/project-config.js +409 -0
- package/dist/project-config.js.map +1 -0
- package/dist/resolution/alias-binding.d.ts +56 -0
- package/dist/resolution/alias-binding.d.ts.map +1 -0
- package/dist/resolution/alias-binding.js +118 -0
- package/dist/resolution/alias-binding.js.map +1 -0
- package/dist/resolution/c-fnptr-synthesizer.d.ts +6 -0
- package/dist/resolution/c-fnptr-synthesizer.d.ts.map +1 -0
- package/dist/resolution/c-fnptr-synthesizer.js +1506 -0
- package/dist/resolution/c-fnptr-synthesizer.js.map +1 -0
- package/dist/resolution/callback-synthesizer.d.ts +78 -0
- package/dist/resolution/callback-synthesizer.d.ts.map +1 -0
- package/dist/resolution/callback-synthesizer.js +4105 -0
- package/dist/resolution/callback-synthesizer.js.map +1 -0
- package/dist/resolution/cooperative-yield.d.ts +40 -0
- package/dist/resolution/cooperative-yield.d.ts.map +1 -0
- package/dist/resolution/cooperative-yield.js +44 -0
- package/dist/resolution/cooperative-yield.js.map +1 -0
- package/dist/resolution/expo-router-synthesizer.d.ts +32 -0
- package/dist/resolution/expo-router-synthesizer.d.ts.map +1 -0
- package/dist/resolution/expo-router-synthesizer.js +189 -0
- package/dist/resolution/expo-router-synthesizer.js.map +1 -0
- package/dist/resolution/frameworks/astro.d.ts +9 -0
- package/dist/resolution/frameworks/astro.d.ts.map +1 -0
- package/dist/resolution/frameworks/astro.js +169 -0
- package/dist/resolution/frameworks/astro.js.map +1 -0
- package/dist/resolution/frameworks/cargo-workspace.d.ts +18 -0
- package/dist/resolution/frameworks/cargo-workspace.d.ts.map +1 -0
- package/dist/resolution/frameworks/cargo-workspace.js +225 -0
- package/dist/resolution/frameworks/cargo-workspace.js.map +1 -0
- 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/csharp.d.ts +8 -0
- package/dist/resolution/frameworks/csharp.d.ts.map +1 -0
- package/dist/resolution/frameworks/csharp.js +335 -0
- package/dist/resolution/frameworks/csharp.js.map +1 -0
- package/dist/resolution/frameworks/drupal.d.ts +51 -0
- package/dist/resolution/frameworks/drupal.d.ts.map +1 -0
- package/dist/resolution/frameworks/drupal.js +367 -0
- package/dist/resolution/frameworks/drupal.js.map +1 -0
- package/dist/resolution/frameworks/expo-modules.d.ts +3 -0
- package/dist/resolution/frameworks/expo-modules.d.ts.map +1 -0
- package/dist/resolution/frameworks/expo-modules.js +148 -0
- package/dist/resolution/frameworks/expo-modules.js.map +1 -0
- package/dist/resolution/frameworks/expo-router.d.ts +189 -0
- package/dist/resolution/frameworks/expo-router.d.ts.map +1 -0
- package/dist/resolution/frameworks/expo-router.js +785 -0
- package/dist/resolution/frameworks/expo-router.js.map +1 -0
- package/dist/resolution/frameworks/express.d.ts +8 -0
- package/dist/resolution/frameworks/express.d.ts.map +1 -0
- package/dist/resolution/frameworks/express.js +540 -0
- package/dist/resolution/frameworks/express.js.map +1 -0
- package/dist/resolution/frameworks/fabric.d.ts +3 -0
- package/dist/resolution/frameworks/fabric.d.ts.map +1 -0
- package/dist/resolution/frameworks/fabric.js +354 -0
- package/dist/resolution/frameworks/fabric.js.map +1 -0
- package/dist/resolution/frameworks/go.d.ts +8 -0
- package/dist/resolution/frameworks/go.d.ts.map +1 -0
- package/dist/resolution/frameworks/go.js +184 -0
- package/dist/resolution/frameworks/go.js.map +1 -0
- package/dist/resolution/frameworks/goframe.d.ts +41 -0
- package/dist/resolution/frameworks/goframe.d.ts.map +1 -0
- package/dist/resolution/frameworks/goframe.js +112 -0
- package/dist/resolution/frameworks/goframe.js.map +1 -0
- package/dist/resolution/frameworks/index.d.ts +55 -0
- package/dist/resolution/frameworks/index.d.ts.map +1 -0
- package/dist/resolution/frameworks/index.js +203 -0
- package/dist/resolution/frameworks/index.js.map +1 -0
- package/dist/resolution/frameworks/java.d.ts +8 -0
- package/dist/resolution/frameworks/java.d.ts.map +1 -0
- package/dist/resolution/frameworks/java.js +539 -0
- package/dist/resolution/frameworks/java.js.map +1 -0
- package/dist/resolution/frameworks/laravel.d.ts +13 -0
- package/dist/resolution/frameworks/laravel.d.ts.map +1 -0
- package/dist/resolution/frameworks/laravel.js +257 -0
- package/dist/resolution/frameworks/laravel.js.map +1 -0
- package/dist/resolution/frameworks/nestjs.d.ts +26 -0
- package/dist/resolution/frameworks/nestjs.d.ts.map +1 -0
- package/dist/resolution/frameworks/nestjs.js +690 -0
- package/dist/resolution/frameworks/nestjs.js.map +1 -0
- package/dist/resolution/frameworks/nextjs.d.ts +76 -0
- package/dist/resolution/frameworks/nextjs.d.ts.map +1 -0
- package/dist/resolution/frameworks/nextjs.js +328 -0
- package/dist/resolution/frameworks/nextjs.js.map +1 -0
- package/dist/resolution/frameworks/object-literal.d.ts +32 -0
- package/dist/resolution/frameworks/object-literal.d.ts.map +1 -0
- package/dist/resolution/frameworks/object-literal.js +139 -0
- package/dist/resolution/frameworks/object-literal.js.map +1 -0
- package/dist/resolution/frameworks/package-deps.d.ts +14 -0
- package/dist/resolution/frameworks/package-deps.d.ts.map +1 -0
- package/dist/resolution/frameworks/package-deps.js +78 -0
- package/dist/resolution/frameworks/package-deps.js.map +1 -0
- package/dist/resolution/frameworks/play.d.ts +19 -0
- package/dist/resolution/frameworks/play.d.ts.map +1 -0
- package/dist/resolution/frameworks/play.js +111 -0
- package/dist/resolution/frameworks/play.js.map +1 -0
- package/dist/resolution/frameworks/python.d.ts +10 -0
- package/dist/resolution/frameworks/python.d.ts.map +1 -0
- package/dist/resolution/frameworks/python.js +566 -0
- package/dist/resolution/frameworks/python.js.map +1 -0
- package/dist/resolution/frameworks/react-native.d.ts +29 -0
- package/dist/resolution/frameworks/react-native.d.ts.map +1 -0
- package/dist/resolution/frameworks/react-native.js +549 -0
- package/dist/resolution/frameworks/react-native.js.map +1 -0
- package/dist/resolution/frameworks/react-router.d.ts +46 -0
- package/dist/resolution/frameworks/react-router.d.ts.map +1 -0
- package/dist/resolution/frameworks/react-router.js +187 -0
- package/dist/resolution/frameworks/react-router.js.map +1 -0
- package/dist/resolution/frameworks/react.d.ts +9 -0
- package/dist/resolution/frameworks/react.d.ts.map +1 -0
- package/dist/resolution/frameworks/react.js +257 -0
- package/dist/resolution/frameworks/react.js.map +1 -0
- package/dist/resolution/frameworks/ruby.d.ts +8 -0
- package/dist/resolution/frameworks/ruby.d.ts.map +1 -0
- package/dist/resolution/frameworks/ruby.js +302 -0
- package/dist/resolution/frameworks/ruby.js.map +1 -0
- package/dist/resolution/frameworks/rust.d.ts +8 -0
- package/dist/resolution/frameworks/rust.d.ts.map +1 -0
- package/dist/resolution/frameworks/rust.js +304 -0
- package/dist/resolution/frameworks/rust.js.map +1 -0
- package/dist/resolution/frameworks/svelte.d.ts +9 -0
- package/dist/resolution/frameworks/svelte.d.ts.map +1 -0
- package/dist/resolution/frameworks/svelte.js +258 -0
- package/dist/resolution/frameworks/svelte.js.map +1 -0
- package/dist/resolution/frameworks/sveltekit-router.d.ts +36 -0
- package/dist/resolution/frameworks/sveltekit-router.d.ts.map +1 -0
- package/dist/resolution/frameworks/sveltekit-router.js +156 -0
- package/dist/resolution/frameworks/sveltekit-router.js.map +1 -0
- package/dist/resolution/frameworks/swift-objc.d.ts +37 -0
- package/dist/resolution/frameworks/swift-objc.d.ts.map +1 -0
- package/dist/resolution/frameworks/swift-objc.js +252 -0
- package/dist/resolution/frameworks/swift-objc.js.map +1 -0
- package/dist/resolution/frameworks/swift.d.ts +10 -0
- package/dist/resolution/frameworks/swift.d.ts.map +1 -0
- package/dist/resolution/frameworks/swift.js +410 -0
- package/dist/resolution/frameworks/swift.js.map +1 -0
- package/dist/resolution/frameworks/tanstack-router.d.ts +84 -0
- package/dist/resolution/frameworks/tanstack-router.d.ts.map +1 -0
- package/dist/resolution/frameworks/tanstack-router.js +437 -0
- package/dist/resolution/frameworks/tanstack-router.js.map +1 -0
- 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/frameworks/vue-router.d.ts +82 -0
- package/dist/resolution/frameworks/vue-router.d.ts.map +1 -0
- package/dist/resolution/frameworks/vue-router.js +377 -0
- package/dist/resolution/frameworks/vue-router.js.map +1 -0
- package/dist/resolution/frameworks/vue.d.ts +9 -0
- package/dist/resolution/frameworks/vue.d.ts.map +1 -0
- package/dist/resolution/frameworks/vue.js +303 -0
- package/dist/resolution/frameworks/vue.js.map +1 -0
- package/dist/resolution/go-module.d.ts +26 -0
- package/dist/resolution/go-module.d.ts.map +1 -0
- package/dist/resolution/go-module.js +78 -0
- package/dist/resolution/go-module.js.map +1 -0
- package/dist/resolution/goframe-synthesizer.d.ts +29 -0
- package/dist/resolution/goframe-synthesizer.d.ts.map +1 -0
- package/dist/resolution/goframe-synthesizer.js +163 -0
- package/dist/resolution/goframe-synthesizer.js.map +1 -0
- package/dist/resolution/import-resolver.d.ts +122 -0
- package/dist/resolution/import-resolver.d.ts.map +1 -0
- package/dist/resolution/import-resolver.js +2490 -0
- package/dist/resolution/import-resolver.js.map +1 -0
- package/dist/resolution/index.d.ts +402 -0
- package/dist/resolution/index.d.ts.map +1 -0
- package/dist/resolution/index.js +2581 -0
- package/dist/resolution/index.js.map +1 -0
- package/dist/resolution/js-builtins.d.ts +11 -0
- package/dist/resolution/js-builtins.d.ts.map +1 -0
- package/dist/resolution/js-builtins.js +23 -0
- package/dist/resolution/js-builtins.js.map +1 -0
- package/dist/resolution/lru-cache.d.ts +24 -0
- package/dist/resolution/lru-cache.d.ts.map +1 -0
- package/dist/resolution/lru-cache.js +62 -0
- package/dist/resolution/lru-cache.js.map +1 -0
- package/dist/resolution/memory-budget.d.ts +48 -0
- package/dist/resolution/memory-budget.d.ts.map +1 -0
- package/dist/resolution/memory-budget.js +162 -0
- package/dist/resolution/memory-budget.js.map +1 -0
- package/dist/resolution/name-matcher.d.ts +196 -0
- package/dist/resolution/name-matcher.d.ts.map +1 -0
- package/dist/resolution/name-matcher.js +3484 -0
- package/dist/resolution/name-matcher.js.map +1 -0
- package/dist/resolution/next-router-synthesizer.d.ts +27 -0
- package/dist/resolution/next-router-synthesizer.d.ts.map +1 -0
- package/dist/resolution/next-router-synthesizer.js +113 -0
- package/dist/resolution/next-router-synthesizer.js.map +1 -0
- package/dist/resolution/path-aliases.d.ts +70 -0
- package/dist/resolution/path-aliases.d.ts.map +1 -0
- package/dist/resolution/path-aliases.js +346 -0
- package/dist/resolution/path-aliases.js.map +1 -0
- package/dist/resolution/react-router-synthesizer.d.ts +33 -0
- package/dist/resolution/react-router-synthesizer.d.ts.map +1 -0
- package/dist/resolution/react-router-synthesizer.js +126 -0
- package/dist/resolution/react-router-synthesizer.js.map +1 -0
- package/dist/resolution/resolver-pool.d.ts +106 -0
- package/dist/resolution/resolver-pool.d.ts.map +1 -0
- package/dist/resolution/resolver-pool.js +344 -0
- package/dist/resolution/resolver-pool.js.map +1 -0
- package/dist/resolution/resolver-worker.d.ts +17 -0
- package/dist/resolution/resolver-worker.d.ts.map +1 -0
- package/dist/resolution/resolver-worker.js +141 -0
- package/dist/resolution/resolver-worker.js.map +1 -0
- package/dist/resolution/strip-comments.d.ts +33 -0
- package/dist/resolution/strip-comments.d.ts.map +1 -0
- package/dist/resolution/strip-comments.js +550 -0
- package/dist/resolution/strip-comments.js.map +1 -0
- package/dist/resolution/sveltekit-synthesizer.d.ts +58 -0
- package/dist/resolution/sveltekit-synthesizer.d.ts.map +1 -0
- package/dist/resolution/sveltekit-synthesizer.js +173 -0
- package/dist/resolution/sveltekit-synthesizer.js.map +1 -0
- package/dist/resolution/swift-objc-bridge.d.ts +134 -0
- package/dist/resolution/swift-objc-bridge.d.ts.map +1 -0
- package/dist/resolution/swift-objc-bridge.js +256 -0
- package/dist/resolution/swift-objc-bridge.js.map +1 -0
- package/dist/resolution/synth-utils.d.ts +26 -0
- package/dist/resolution/synth-utils.d.ts.map +1 -0
- package/dist/resolution/synth-utils.js +75 -0
- package/dist/resolution/synth-utils.js.map +1 -0
- package/dist/resolution/tanstack-router-synthesizer.d.ts +31 -0
- package/dist/resolution/tanstack-router-synthesizer.d.ts.map +1 -0
- package/dist/resolution/tanstack-router-synthesizer.js +114 -0
- package/dist/resolution/tanstack-router-synthesizer.js.map +1 -0
- package/dist/resolution/tier-synthesizer.d.ts +48 -0
- package/dist/resolution/tier-synthesizer.d.ts.map +1 -0
- package/dist/resolution/tier-synthesizer.js +907 -0
- package/dist/resolution/tier-synthesizer.js.map +1 -0
- package/dist/resolution/types.d.ts +323 -0
- package/dist/resolution/types.d.ts.map +1 -0
- package/dist/resolution/types.js +58 -0
- package/dist/resolution/types.js.map +1 -0
- package/dist/resolution/vue-router-synthesizer.d.ts +30 -0
- package/dist/resolution/vue-router-synthesizer.d.ts.map +1 -0
- package/dist/resolution/vue-router-synthesizer.js +115 -0
- package/dist/resolution/vue-router-synthesizer.js.map +1 -0
- package/dist/resolution/workspace-packages.d.ts +58 -0
- package/dist/resolution/workspace-packages.d.ts.map +1 -0
- package/dist/resolution/workspace-packages.js +346 -0
- package/dist/resolution/workspace-packages.js.map +1 -0
- package/dist/search/identifier-segments.d.ts +70 -0
- package/dist/search/identifier-segments.d.ts.map +1 -0
- package/dist/search/identifier-segments.js +205 -0
- package/dist/search/identifier-segments.js.map +1 -0
- package/dist/search/query-parser.d.ts +57 -0
- package/dist/search/query-parser.d.ts.map +1 -0
- package/dist/search/query-parser.js +177 -0
- package/dist/search/query-parser.js.map +1 -0
- package/dist/search/query-paths.d.ts +57 -0
- package/dist/search/query-paths.d.ts.map +1 -0
- package/dist/search/query-paths.js +298 -0
- package/dist/search/query-paths.js.map +1 -0
- package/dist/search/query-utils.d.ts +102 -0
- package/dist/search/query-utils.d.ts.map +1 -0
- package/dist/search/query-utils.js +487 -0
- package/dist/search/query-utils.js.map +1 -0
- package/dist/sync/git-hooks.d.ts +45 -0
- package/dist/sync/git-hooks.d.ts.map +1 -0
- package/dist/sync/git-hooks.js +227 -0
- package/dist/sync/git-hooks.js.map +1 -0
- package/dist/sync/index.d.ts +19 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +35 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/watch-policy.d.ts +48 -0
- package/dist/sync/watch-policy.d.ts.map +1 -0
- package/dist/sync/watch-policy.js +124 -0
- package/dist/sync/watch-policy.js.map +1 -0
- package/dist/sync/watcher.d.ts +402 -0
- package/dist/sync/watcher.d.ts.map +1 -0
- package/dist/sync/watcher.js +978 -0
- package/dist/sync/watcher.js.map +1 -0
- package/dist/sync/worktree.d.ts +63 -0
- package/dist/sync/worktree.d.ts.map +1 -0
- package/dist/sync/worktree.js +182 -0
- package/dist/sync/worktree.js.map +1 -0
- package/dist/telemetry/index.d.ts +145 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +592 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/types.d.ts +473 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +118 -0
- package/dist/types.js.map +1 -0
- package/dist/ui/color.d.ts +21 -0
- package/dist/ui/color.d.ts.map +1 -0
- package/dist/ui/color.js +42 -0
- package/dist/ui/color.js.map +1 -0
- package/dist/ui/glyphs.d.ts +67 -0
- package/dist/ui/glyphs.d.ts.map +1 -0
- package/dist/ui/glyphs.js +125 -0
- package/dist/ui/glyphs.js.map +1 -0
- package/dist/ui/shimmer-progress.d.ts +11 -0
- package/dist/ui/shimmer-progress.d.ts.map +1 -0
- package/dist/ui/shimmer-progress.js +164 -0
- package/dist/ui/shimmer-progress.js.map +1 -0
- package/dist/ui/shimmer-worker.d.ts +2 -0
- package/dist/ui/shimmer-worker.d.ts.map +1 -0
- package/dist/ui/shimmer-worker.js +126 -0
- package/dist/ui/shimmer-worker.js.map +1 -0
- package/dist/ui/types.d.ts +15 -0
- package/dist/ui/types.d.ts.map +1 -0
- package/dist/ui/types.js +3 -0
- package/dist/ui/types.js.map +1 -0
- package/dist/ui-server/api/deadcode.d.ts +84 -0
- package/dist/ui-server/api/deadcode.d.ts.map +1 -0
- package/dist/ui-server/api/deadcode.js +136 -0
- package/dist/ui-server/api/deadcode.js.map +1 -0
- package/dist/ui-server/api/effects.d.ts +87 -0
- package/dist/ui-server/api/effects.d.ts.map +1 -0
- package/dist/ui-server/api/effects.js +499 -0
- package/dist/ui-server/api/effects.js.map +1 -0
- package/dist/ui-server/api/entrypoints.d.ts +86 -0
- package/dist/ui-server/api/entrypoints.d.ts.map +1 -0
- package/dist/ui-server/api/entrypoints.js +279 -0
- package/dist/ui-server/api/entrypoints.js.map +1 -0
- package/dist/ui-server/api/events.d.ts +183 -0
- package/dist/ui-server/api/events.d.ts.map +1 -0
- package/dist/ui-server/api/events.js +430 -0
- package/dist/ui-server/api/events.js.map +1 -0
- package/dist/ui-server/api/file.d.ts +66 -0
- package/dist/ui-server/api/file.d.ts.map +1 -0
- package/dist/ui-server/api/file.js +235 -0
- package/dist/ui-server/api/file.js.map +1 -0
- package/dist/ui-server/api/filecode.d.ts +126 -0
- package/dist/ui-server/api/filecode.d.ts.map +1 -0
- package/dist/ui-server/api/filecode.js +205 -0
- package/dist/ui-server/api/filecode.js.map +1 -0
- package/dist/ui-server/api/flow.d.ts +226 -0
- package/dist/ui-server/api/flow.d.ts.map +1 -0
- package/dist/ui-server/api/flow.js +611 -0
- package/dist/ui-server/api/flow.js.map +1 -0
- package/dist/ui-server/api/hierarchy.d.ts +81 -0
- package/dist/ui-server/api/hierarchy.d.ts.map +1 -0
- package/dist/ui-server/api/hierarchy.js +92 -0
- package/dist/ui-server/api/hierarchy.js.map +1 -0
- package/dist/ui-server/api/index.d.ts +90 -0
- package/dist/ui-server/api/index.d.ts.map +1 -0
- package/dist/ui-server/api/index.js +332 -0
- package/dist/ui-server/api/index.js.map +1 -0
- package/dist/ui-server/api/map.d.ts +238 -0
- package/dist/ui-server/api/map.d.ts.map +1 -0
- package/dist/ui-server/api/map.js +681 -0
- package/dist/ui-server/api/map.js.map +1 -0
- package/dist/ui-server/api/node.d.ts +81 -0
- package/dist/ui-server/api/node.d.ts.map +1 -0
- package/dist/ui-server/api/node.js +388 -0
- package/dist/ui-server/api/node.js.map +1 -0
- package/dist/ui-server/api/nodes.d.ts +25 -0
- package/dist/ui-server/api/nodes.d.ts.map +1 -0
- package/dist/ui-server/api/nodes.js +45 -0
- package/dist/ui-server/api/nodes.js.map +1 -0
- package/dist/ui-server/api/program.d.ts +139 -0
- package/dist/ui-server/api/program.d.ts.map +1 -0
- package/dist/ui-server/api/program.js +315 -0
- package/dist/ui-server/api/program.js.map +1 -0
- package/dist/ui-server/api/respond.d.ts +76 -0
- package/dist/ui-server/api/respond.d.ts.map +1 -0
- package/dist/ui-server/api/respond.js +186 -0
- package/dist/ui-server/api/respond.js.map +1 -0
- package/dist/ui-server/api/route-roots.d.ts +39 -0
- package/dist/ui-server/api/route-roots.d.ts.map +1 -0
- package/dist/ui-server/api/route-roots.js +96 -0
- package/dist/ui-server/api/route-roots.js.map +1 -0
- package/dist/ui-server/api/routes.d.ts +59 -0
- package/dist/ui-server/api/routes.d.ts.map +1 -0
- package/dist/ui-server/api/routes.js +112 -0
- package/dist/ui-server/api/routes.js.map +1 -0
- package/dist/ui-server/api/screens.d.ts +117 -0
- package/dist/ui-server/api/screens.d.ts.map +1 -0
- package/dist/ui-server/api/screens.js +611 -0
- package/dist/ui-server/api/screens.js.map +1 -0
- package/dist/ui-server/api/search.d.ts +29 -0
- package/dist/ui-server/api/search.d.ts.map +1 -0
- package/dist/ui-server/api/search.js +232 -0
- package/dist/ui-server/api/search.js.map +1 -0
- package/dist/ui-server/api/session.d.ts +52 -0
- package/dist/ui-server/api/session.d.ts.map +1 -0
- package/dist/ui-server/api/session.js +199 -0
- package/dist/ui-server/api/session.js.map +1 -0
- package/dist/ui-server/api/source.d.ts +200 -0
- package/dist/ui-server/api/source.d.ts.map +1 -0
- package/dist/ui-server/api/source.js +419 -0
- package/dist/ui-server/api/source.js.map +1 -0
- package/dist/ui-server/api/stats.d.ts +27 -0
- package/dist/ui-server/api/stats.d.ts.map +1 -0
- package/dist/ui-server/api/stats.js +164 -0
- package/dist/ui-server/api/stats.js.map +1 -0
- package/dist/ui-server/api/steps.d.ts +274 -0
- package/dist/ui-server/api/steps.d.ts.map +1 -0
- package/dist/ui-server/api/steps.js +1446 -0
- package/dist/ui-server/api/steps.js.map +1 -0
- package/dist/ui-server/api/trail-store.d.ts +142 -0
- package/dist/ui-server/api/trail-store.d.ts.map +1 -0
- package/dist/ui-server/api/trail-store.js +323 -0
- package/dist/ui-server/api/trail-store.js.map +1 -0
- package/dist/ui-server/api/trails.d.ts +163 -0
- package/dist/ui-server/api/trails.d.ts.map +1 -0
- package/dist/ui-server/api/trails.js +369 -0
- package/dist/ui-server/api/trails.js.map +1 -0
- package/dist/ui-server/api/when.d.ts +125 -0
- package/dist/ui-server/api/when.d.ts.map +1 -0
- package/dist/ui-server/api/when.js +251 -0
- package/dist/ui-server/api/when.js.map +1 -0
- package/dist/ui-server/api/wire.d.ts +179 -0
- package/dist/ui-server/api/wire.d.ts.map +1 -0
- package/dist/ui-server/api/wire.js +231 -0
- package/dist/ui-server/api/wire.js.map +1 -0
- package/dist/ui-server/assets.d.ts +40 -0
- package/dist/ui-server/assets.d.ts.map +1 -0
- package/dist/ui-server/assets.js +110 -0
- package/dist/ui-server/assets.js.map +1 -0
- package/dist/ui-server/constants.d.ts +32 -0
- package/dist/ui-server/constants.d.ts.map +1 -0
- package/dist/ui-server/constants.js +35 -0
- package/dist/ui-server/constants.js.map +1 -0
- package/dist/ui-server/highlight/index.d.ts +113 -0
- package/dist/ui-server/highlight/index.d.ts.map +1 -0
- package/dist/ui-server/highlight/index.js +307 -0
- package/dist/ui-server/highlight/index.js.map +1 -0
- package/dist/ui-server/highlight/languages.d.ts +36 -0
- package/dist/ui-server/highlight/languages.d.ts.map +1 -0
- package/dist/ui-server/highlight/languages.js +50 -0
- package/dist/ui-server/highlight/languages.js.map +1 -0
- package/dist/ui-server/index.d.ts +92 -0
- package/dist/ui-server/index.d.ts.map +1 -0
- package/dist/ui-server/index.js +399 -0
- package/dist/ui-server/index.js.map +1 -0
- package/dist/ui-server/open-browser.d.ts +31 -0
- package/dist/ui-server/open-browser.d.ts.map +1 -0
- package/dist/ui-server/open-browser.js +79 -0
- package/dist/ui-server/open-browser.js.map +1 -0
- package/dist/ui-server/security.d.ts +127 -0
- package/dist/ui-server/security.d.ts.map +1 -0
- package/dist/ui-server/security.js +332 -0
- package/dist/ui-server/security.js.map +1 -0
- package/dist/ui-server/static.d.ts +45 -0
- package/dist/ui-server/static.d.ts.map +1 -0
- package/dist/ui-server/static.js +165 -0
- package/dist/ui-server/static.js.map +1 -0
- package/dist/upgrade/index.d.ts +164 -0
- package/dist/upgrade/index.d.ts.map +1 -0
- package/dist/upgrade/index.js +649 -0
- package/dist/upgrade/index.js.map +1 -0
- 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/dist/utils.d.ts +238 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +601 -0
- package/dist/utils.js.map +1 -0
- package/dist/viewer/assets/archivo-latin-ext-wght-normal-C4zznr8T.woff2 +0 -0
- package/dist/viewer/assets/archivo-latin-wght-normal-E0tuGl4L.woff2 +0 -0
- package/dist/viewer/assets/archivo-vietnamese-wght-normal-XAtsl5Q_.woff2 +0 -0
- package/dist/viewer/assets/ibm-plex-mono-cyrillic-400-italic-2syK4fUT.woff +0 -0
- package/dist/viewer/assets/ibm-plex-mono-cyrillic-400-italic-CBJ8pzag.woff2 +0 -0
- package/dist/viewer/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2 +0 -0
- package/dist/viewer/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff +0 -0
- package/dist/viewer/assets/ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff +0 -0
- package/dist/viewer/assets/ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2 +0 -0
- package/dist/viewer/assets/ibm-plex-mono-cyrillic-600-normal-CTOM6hUh.woff2 +0 -0
- package/dist/viewer/assets/ibm-plex-mono-cyrillic-600-normal-fLZuRloM.woff +0 -0
- package/dist/viewer/assets/ibm-plex-mono-cyrillic-ext-400-italic-B4oTjJdl.woff +0 -0
- package/dist/viewer/assets/ibm-plex-mono-cyrillic-ext-400-italic-CBjNughH.woff2 +0 -0
- package/dist/viewer/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff +0 -0
- package/dist/viewer/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2 +0 -0
- package/dist/viewer/assets/ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.woff +0 -0
- package/dist/viewer/assets/ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2 +0 -0
- package/dist/viewer/assets/ibm-plex-mono-cyrillic-ext-600-normal-9HEixskS.woff +0 -0
- package/dist/viewer/assets/ibm-plex-mono-cyrillic-ext-600-normal-V-xxqcpd.woff2 +0 -0
- package/dist/viewer/assets/ibm-plex-mono-latin-400-italic-66oory27.woff +0 -0
- package/dist/viewer/assets/ibm-plex-mono-latin-400-italic-BqAiT5Ww.woff2 +0 -0
- package/dist/viewer/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff +0 -0
- package/dist/viewer/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2 +0 -0
- package/dist/viewer/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff +0 -0
- package/dist/viewer/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2 +0 -0
- package/dist/viewer/assets/ibm-plex-mono-latin-600-normal-BgSNZQsw.woff2 +0 -0
- package/dist/viewer/assets/ibm-plex-mono-latin-600-normal-DWFSQ4vo.woff +0 -0
- package/dist/viewer/assets/ibm-plex-mono-latin-ext-400-italic-B7_fu1kp.woff2 +0 -0
- package/dist/viewer/assets/ibm-plex-mono-latin-ext-400-italic-Bg0ZHwF4.woff +0 -0
- package/dist/viewer/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2 +0 -0
- package/dist/viewer/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff +0 -0
- package/dist/viewer/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2 +0 -0
- package/dist/viewer/assets/ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff +0 -0
- package/dist/viewer/assets/ibm-plex-mono-latin-ext-600-normal-D38SheWl.woff2 +0 -0
- package/dist/viewer/assets/ibm-plex-mono-latin-ext-600-normal-DmB0ttJJ.woff +0 -0
- package/dist/viewer/assets/ibm-plex-mono-vietnamese-400-italic-D6eaYXMU.woff +0 -0
- package/dist/viewer/assets/ibm-plex-mono-vietnamese-400-italic-DRuN92E5.woff2 +0 -0
- package/dist/viewer/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2 +0 -0
- package/dist/viewer/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff +0 -0
- package/dist/viewer/assets/ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.woff +0 -0
- package/dist/viewer/assets/ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2 +0 -0
- package/dist/viewer/assets/ibm-plex-mono-vietnamese-600-normal-D2EvbN8M.woff2 +0 -0
- package/dist/viewer/assets/ibm-plex-mono-vietnamese-600-normal-iLQfcSjf.woff +0 -0
- package/dist/viewer/assets/index-2LG7iXtP.js +97 -0
- package/dist/viewer/assets/index-AtMBttuU.css +1 -0
- package/dist/viewer/index.html +16 -0
- package/package.json +69 -0
- package/scripts/add-lang/bench.sh +60 -0
- package/scripts/add-lang/check-grammar.mjs +75 -0
- package/scripts/add-lang/dump-ast.mjs +103 -0
- package/scripts/add-lang/verify-extraction.mjs +70 -0
- package/scripts/agent-eval/ab-adoption.sh +91 -0
- package/scripts/agent-eval/ab-hook.sh +86 -0
- package/scripts/agent-eval/ab-impl.sh +78 -0
- package/scripts/agent-eval/ab-new-vs-baseline.sh +161 -0
- package/scripts/agent-eval/ab-sufficiency.sh +78 -0
- package/scripts/agent-eval/allocation-fixtures.json +344 -0
- package/scripts/agent-eval/arms-F.sh +21 -0
- package/scripts/agent-eval/arms-matrix.sh +37 -0
- package/scripts/agent-eval/audit.sh +68 -0
- package/scripts/agent-eval/bench-readme.sh +48 -0
- package/scripts/agent-eval/bench-why-repo.sh +22 -0
- package/scripts/agent-eval/block-read-hook.sh +19 -0
- package/scripts/agent-eval/compare-arms.mjs +209 -0
- package/scripts/agent-eval/diff-index-drift.mjs +102 -0
- package/scripts/agent-eval/hook-settings.json +15 -0
- package/scripts/agent-eval/itrun.sh +120 -0
- package/scripts/agent-eval/no-cli-shim.sh +96 -0
- package/scripts/agent-eval/offload-eval-3arm.sh +72 -0
- package/scripts/agent-eval/offload-eval-cost.mjs +133 -0
- package/scripts/agent-eval/offload-eval-effort.mjs +108 -0
- package/scripts/agent-eval/offload-eval-frontload-matrix.sh +25 -0
- package/scripts/agent-eval/offload-eval-frontload.sh +47 -0
- package/scripts/agent-eval/offload-eval-ground-truth.json +18 -0
- package/scripts/agent-eval/offload-eval-hook.mjs +84 -0
- package/scripts/agent-eval/offload-eval-judge.mjs +103 -0
- package/scripts/agent-eval/offload-eval-matrix.sh +20 -0
- package/scripts/agent-eval/offload-eval-metrics.mjs +94 -0
- package/scripts/agent-eval/offload-eval-refs1.sh +50 -0
- package/scripts/agent-eval/offload-eval-setup.sh +24 -0
- package/scripts/agent-eval/offload-eval-styles.sh +72 -0
- package/scripts/agent-eval/offload-eval-summarize.mjs +68 -0
- package/scripts/agent-eval/offload-eval.md +76 -0
- package/scripts/agent-eval/parse-arms.mjs +116 -0
- package/scripts/agent-eval/parse-bench-readme.mjs +238 -0
- package/scripts/agent-eval/parse-run.mjs +1401 -0
- package/scripts/agent-eval/parse-session.mjs +130 -0
- package/scripts/agent-eval/probe-allocation.mjs +335 -0
- package/scripts/agent-eval/probe-context.mjs +21 -0
- package/scripts/agent-eval/probe-decl-only.mjs +198 -0
- package/scripts/agent-eval/probe-explore.mjs +40 -0
- package/scripts/agent-eval/probe-factory-closure.mjs +147 -0
- package/scripts/agent-eval/probe-file-spend.mjs +195 -0
- package/scripts/agent-eval/probe-named-symbol.mjs +163 -0
- package/scripts/agent-eval/probe-node.mjs +20 -0
- package/scripts/agent-eval/probe-suite-envelope.mjs +124 -0
- package/scripts/agent-eval/probe-sweep.mjs +119 -0
- package/scripts/agent-eval/probe-trace.mjs +20 -0
- package/scripts/agent-eval/redirect-read-hook.sh +38 -0
- package/scripts/agent-eval/repro-concurrent-explore.mjs +119 -0
- package/scripts/agent-eval/repro-daemon-clients.mjs +125 -0
- package/scripts/agent-eval/run-agent.sh +34 -0
- package/scripts/agent-eval/run-all.sh +149 -0
- package/scripts/agent-eval/run-arms.sh +56 -0
- package/scripts/agent-eval/seq-matrix.mjs +137 -0
- package/scripts/benchmarks/measure-index.cjs +128 -0
- package/scripts/benchmarks/observe-index.py +91 -0
- package/scripts/build-bundle.sh +154 -0
- package/scripts/build-kernel.sh +87 -0
- package/scripts/check-ui-build.mjs +157 -0
- package/scripts/check-ui-package.mjs +192 -0
- package/scripts/clean-remaining.mjs +243 -0
- package/scripts/count-codegraph.mjs +26 -0
- package/scripts/deep-clean.mjs +66 -0
- package/scripts/dump-graph.mjs +57 -0
- package/scripts/extract-release-notes.mjs +130 -0
- package/scripts/final-codegraph-cleanup.mjs +57 -0
- package/scripts/go-rebrand.mjs +114 -0
- package/scripts/kernel-parity.mjs +283 -0
- package/scripts/local-install.sh +41 -0
- package/scripts/npm-sdk.js +75 -0
- package/scripts/npm-shim.js +279 -0
- package/scripts/pack-npm.sh +123 -0
- package/scripts/prepare-release.mjs +270 -0
- package/scripts/rebrand.mjs +129 -0
- package/scripts/sync-ui-version.mjs +47 -0
- package/scripts/try-repo.sh +112 -0
|
@@ -0,0 +1,681 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `GET /api/map` — the repository at module granularity.
|
|
4
|
+
*
|
|
5
|
+
* The Map answers "what is in here and how is it organised" without anybody
|
|
6
|
+
* having drawn a diagram: modules are directories, the arrows between them are
|
|
7
|
+
* the edges the index already holds, and the vertical order falls out of the
|
|
8
|
+
* dependency direction (design spec §3.6). This module produces the *data*;
|
|
9
|
+
* the layering, cycle-breaking and geometry are pure functions in the viewer
|
|
10
|
+
* (`ui/src/lib/map-model.ts`), so toggling tests or selecting a module never
|
|
11
|
+
* costs a round-trip.
|
|
12
|
+
*
|
|
13
|
+
* Three decisions shape the payload, and all three are about not lying:
|
|
14
|
+
*
|
|
15
|
+
* **A module is a directory, not a guess.** `moduleIdFor` maps each indexed
|
|
16
|
+
* file to the first {@link MapQuery.depth} path segments under the chosen root.
|
|
17
|
+
* A file sitting loose in the root gets folded into one `(root files)` box —
|
|
18
|
+
* except a façade (`index.ts`, `lib.rs`, `__init__.py`), which is its own box
|
|
19
|
+
* because it is the thing everything else imports. No clustering, no
|
|
20
|
+
* heuristics about "what belongs together": if two files are in the same
|
|
21
|
+
* directory the repository already said they belong together.
|
|
22
|
+
*
|
|
23
|
+
* **Weight counts edges; layering counts *declared* edges.** A link's `count`
|
|
24
|
+
* is every confident cross-module edge behind it, which is what the reader
|
|
25
|
+
* sees as thickness. Its `declared` count is the subset resolved through an
|
|
26
|
+
* import, a qualified name, an inheritance clause or a typed receiver — and
|
|
27
|
+
* that is what the layout layers on. The difference is not academic: on this
|
|
28
|
+
* repository, bare name matching resolves calls to `run`, `push` and `finish`
|
|
29
|
+
* across unrelated directories, and layering on raw counts puts the storage
|
|
30
|
+
* layer directly under the CLI. Layering on declared edges reproduces the
|
|
31
|
+
* pipeline the project's own docs describe.
|
|
32
|
+
*
|
|
33
|
+
* **Nothing is dropped silently.** Uncertain edges (confidence below
|
|
34
|
+
* {@link UNCERTAIN_BELOW}) are excluded from every count, and how many were
|
|
35
|
+
* excluded rides on the payload so the side panel can say so.
|
|
36
|
+
*/
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
exports.MAP_EDGE_KINDS = void 0;
|
|
39
|
+
exports.rootFilesId = rootFilesId;
|
|
40
|
+
exports.normalizeRoot = normalizeRoot;
|
|
41
|
+
exports.moduleIdFor = moduleIdFor;
|
|
42
|
+
exports.pickDefaultRoot = pickDefaultRoot;
|
|
43
|
+
exports.pickDefaultDepth = pickDefaultDepth;
|
|
44
|
+
exports.resetMapCache = resetMapCache;
|
|
45
|
+
exports.parseMapQuery = parseMapQuery;
|
|
46
|
+
exports.buildMap = buildMap;
|
|
47
|
+
const query_utils_1 = require("../../search/query-utils");
|
|
48
|
+
const respond_1 = require("./respond");
|
|
49
|
+
const wire_1 = require("./wire");
|
|
50
|
+
/**
|
|
51
|
+
* The edge kinds that count as "module A reaches into module B".
|
|
52
|
+
*
|
|
53
|
+
* `contains` is absent on purpose — a file containing its own symbols is not a
|
|
54
|
+
* dependency, and including it would make every module depend on itself.
|
|
55
|
+
*/
|
|
56
|
+
exports.MAP_EDGE_KINDS = [
|
|
57
|
+
'calls',
|
|
58
|
+
'imports',
|
|
59
|
+
'references',
|
|
60
|
+
'instantiates',
|
|
61
|
+
'extends',
|
|
62
|
+
'implements',
|
|
63
|
+
'navigates',
|
|
64
|
+
];
|
|
65
|
+
/**
|
|
66
|
+
* The kinds whose symbol pairs the tooltip names.
|
|
67
|
+
*
|
|
68
|
+
* A `references` edge to a type is real traffic but "Config → Config" is not
|
|
69
|
+
* an interesting row; calls and imports are what a reader wants named.
|
|
70
|
+
*/
|
|
71
|
+
const PAIR_EDGE_KINDS = ['calls', 'imports', 'instantiates', 'navigates'];
|
|
72
|
+
/** Symbol pairs kept per link — the tooltip shows four (design spec §3.6). */
|
|
73
|
+
const TOP_PAIRS_PER_LINK = 4;
|
|
74
|
+
/**
|
|
75
|
+
* File paths listed per module.
|
|
76
|
+
*
|
|
77
|
+
* The panel's file list is a drill-down, not a directory listing, and it rides
|
|
78
|
+
* on this payload so that clicking a module and then one of its files costs no
|
|
79
|
+
* round-trip at all. Capped because a module can hold hundreds of files and the
|
|
80
|
+
* map is not where you read them; `total` stays the real number.
|
|
81
|
+
*/
|
|
82
|
+
const MAX_FILES_PER_MODULE = 40;
|
|
83
|
+
/** Longest cycle reported, and how many. Beyond this a cycle list stops being readable. */
|
|
84
|
+
const MAX_FILE_CYCLES = 40;
|
|
85
|
+
const MAX_CYCLE_LENGTH = 12;
|
|
86
|
+
/** Default segments below the root that name a module. */
|
|
87
|
+
const DEFAULT_DEPTH = 1;
|
|
88
|
+
const MAX_DEPTH = 4;
|
|
89
|
+
/**
|
|
90
|
+
* Basenames that stay their own box when they sit loose in a module root.
|
|
91
|
+
*
|
|
92
|
+
* These are façades — the file every other module imports the directory
|
|
93
|
+
* *through*. Folding `src/index.ts` into a "(root files)" bucket with the type
|
|
94
|
+
* declarations next to it hides the busiest node on the map.
|
|
95
|
+
*/
|
|
96
|
+
const FACADE_STEMS = new Set(['index', 'main', 'lib', 'mod', '__init__', 'init']);
|
|
97
|
+
/** Id of the bucket loose files fall into. Deliberately not a real directory name. */
|
|
98
|
+
function rootFilesId(root) {
|
|
99
|
+
return root ? `${root}/(root files)` : '(root files)';
|
|
100
|
+
}
|
|
101
|
+
// =============================================================================
|
|
102
|
+
// Module naming
|
|
103
|
+
// =============================================================================
|
|
104
|
+
/** Strip a trailing slash and any leading `./`, so `src/` and `src` are one root. */
|
|
105
|
+
function normalizeRoot(raw) {
|
|
106
|
+
let root = (raw ?? '').trim().replace(/\\/g, '/');
|
|
107
|
+
while (root.startsWith('./'))
|
|
108
|
+
root = root.slice(2);
|
|
109
|
+
while (root.endsWith('/'))
|
|
110
|
+
root = root.slice(0, -1);
|
|
111
|
+
if (root === '.' || root === '/')
|
|
112
|
+
return '';
|
|
113
|
+
return root;
|
|
114
|
+
}
|
|
115
|
+
function stemOf(basename) {
|
|
116
|
+
const dot = basename.indexOf('.');
|
|
117
|
+
return dot <= 0 ? basename : basename.slice(0, dot);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Which module a file belongs to, or `null` when it is outside the root.
|
|
121
|
+
*
|
|
122
|
+
* `depth` segments under the root name the module. A file with fewer segments
|
|
123
|
+
* than that is loose in the root: a façade keeps its own box, everything else
|
|
124
|
+
* joins the `(root files)` bucket.
|
|
125
|
+
*/
|
|
126
|
+
function moduleIdFor(filePath, root, depth) {
|
|
127
|
+
const path = (0, wire_1.toPosixPath)(filePath);
|
|
128
|
+
let rel = path;
|
|
129
|
+
if (root) {
|
|
130
|
+
if (!path.startsWith(`${root}/`))
|
|
131
|
+
return null;
|
|
132
|
+
rel = path.slice(root.length + 1);
|
|
133
|
+
}
|
|
134
|
+
const parts = rel.split('/').filter(Boolean);
|
|
135
|
+
if (parts.length === 0)
|
|
136
|
+
return null;
|
|
137
|
+
if (parts.length <= depth) {
|
|
138
|
+
// A loose file. The directories it DOES have still qualify it, so
|
|
139
|
+
// `src/a/b.ts` at depth 2 lands in `src/a/(root files)`, not the top one.
|
|
140
|
+
const dir = [root, ...parts.slice(0, -1)].filter(Boolean).join('/');
|
|
141
|
+
if (FACADE_STEMS.has(stemOf(parts[parts.length - 1] ?? ''))) {
|
|
142
|
+
return { id: [root, ...parts].filter(Boolean).join('/'), facade: true };
|
|
143
|
+
}
|
|
144
|
+
return { id: rootFilesId(dir), facade: false };
|
|
145
|
+
}
|
|
146
|
+
return { id: [root, ...parts.slice(0, depth)].filter(Boolean).join('/'), facade: false };
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* The root the map opens on: the directory holding the most non-test symbols.
|
|
150
|
+
*
|
|
151
|
+
* A repository's source almost always lives under one directory (`src`, `lib`,
|
|
152
|
+
* `pkg`, `app`), and opening there is what keeps the default map about the
|
|
153
|
+
* program rather than about its tests, scripts and sibling packages. The
|
|
154
|
+
* fallback is the repository root, which is correct for a flat project.
|
|
155
|
+
*
|
|
156
|
+
* A directory only wins if it holds a clear majority of the symbols — anything
|
|
157
|
+
* less and the honest answer is "this repository has no single source root".
|
|
158
|
+
*/
|
|
159
|
+
function pickDefaultRoot(files) {
|
|
160
|
+
const byDir = new Map();
|
|
161
|
+
let total = 0;
|
|
162
|
+
for (const file of files) {
|
|
163
|
+
if (file.test)
|
|
164
|
+
continue;
|
|
165
|
+
const slash = file.path.indexOf('/');
|
|
166
|
+
if (slash <= 0)
|
|
167
|
+
continue;
|
|
168
|
+
const dir = file.path.slice(0, slash);
|
|
169
|
+
byDir.set(dir, (byDir.get(dir) ?? 0) + file.symbols);
|
|
170
|
+
total += file.symbols;
|
|
171
|
+
}
|
|
172
|
+
if (total === 0)
|
|
173
|
+
return '';
|
|
174
|
+
let best = '';
|
|
175
|
+
let bestSymbols = 0;
|
|
176
|
+
let second = 0;
|
|
177
|
+
for (const [dir, symbols] of [...byDir].sort((a, b) => a[0].localeCompare(b[0]))) {
|
|
178
|
+
if (symbols > bestSymbols) {
|
|
179
|
+
second = bestSymbols;
|
|
180
|
+
best = dir;
|
|
181
|
+
bestSymbols = symbols;
|
|
182
|
+
}
|
|
183
|
+
else if (symbols > second)
|
|
184
|
+
second = symbols;
|
|
185
|
+
}
|
|
186
|
+
// A second root holding a fifth of the code (a React Native app's `ios/`
|
|
187
|
+
// beside its `src/`) belongs on the picture: map the whole project.
|
|
188
|
+
if (second * 5 >= total)
|
|
189
|
+
return '';
|
|
190
|
+
return bestSymbols * 2 > total ? best : '';
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* A box holding more than this share of the mapped symbols IS the program, and
|
|
194
|
+
* a map whose subject is one box has not said anything.
|
|
195
|
+
*/
|
|
196
|
+
const DOMINANT_SHARE = 0.4;
|
|
197
|
+
/**
|
|
198
|
+
* …but only if there is something inside it. A dominant box of four files is a
|
|
199
|
+
* small project honestly drawn; opening it just spreads four files over four
|
|
200
|
+
* boxes. This is the line between "grouped too coarsely" and "actually small".
|
|
201
|
+
*/
|
|
202
|
+
const DOMINANT_MIN_FILES = 25;
|
|
203
|
+
/** Fewer boxes than this is a list, not a picture. */
|
|
204
|
+
const MIN_MODULES = 4;
|
|
205
|
+
/** More than this and a deeper grouping has traded one unreadable map for another. */
|
|
206
|
+
const MAX_MODULES = 60;
|
|
207
|
+
/** The non-test modules a given depth would draw, and how concentrated they are. */
|
|
208
|
+
function tallyModules(files, root, depth) {
|
|
209
|
+
const byModule = new Map();
|
|
210
|
+
let total = 0;
|
|
211
|
+
for (const file of files) {
|
|
212
|
+
if (file.test)
|
|
213
|
+
continue;
|
|
214
|
+
const assigned = moduleIdFor(file.path, root, depth);
|
|
215
|
+
if (assigned === null)
|
|
216
|
+
continue;
|
|
217
|
+
let entry = byModule.get(assigned.id);
|
|
218
|
+
if (!entry)
|
|
219
|
+
byModule.set(assigned.id, (entry = { symbols: 0, files: 0 }));
|
|
220
|
+
entry.symbols += file.symbols;
|
|
221
|
+
entry.files += 1;
|
|
222
|
+
total += file.symbols;
|
|
223
|
+
}
|
|
224
|
+
let largest = { symbols: 0, files: 0 };
|
|
225
|
+
for (const entry of byModule.values()) {
|
|
226
|
+
if (entry.symbols > largest.symbols)
|
|
227
|
+
largest = entry;
|
|
228
|
+
}
|
|
229
|
+
return {
|
|
230
|
+
count: byModule.size,
|
|
231
|
+
share: total === 0 ? 0 : largest.symbols / total,
|
|
232
|
+
largestFiles: largest.files,
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* How many segments name a module, when the reader has not said.
|
|
237
|
+
*
|
|
238
|
+
* Depth is not a property of the reader's taste, it is a property of the
|
|
239
|
+
* repository: one level under the root is the right grouping for a project
|
|
240
|
+
* whose directories ARE its modules, and the wrong one for the very common
|
|
241
|
+
* shape where every line of the program lives under a single `src/`. Drawing
|
|
242
|
+
* that project at depth 1 produces the map this rule exists to prevent — a box
|
|
243
|
+
* labelled `src`, holding two thirds of the code, with nothing to say about it.
|
|
244
|
+
*
|
|
245
|
+
* So: take the shallowest depth that is neither dominated by one box worth
|
|
246
|
+
* opening nor too small to be a picture; stop before a deeper one becomes a
|
|
247
|
+
* crowd; and never go past the last level the directory tree actually has.
|
|
248
|
+
*
|
|
249
|
+
* The walk does NOT stop at the first depth that fails to add boxes. A repo
|
|
250
|
+
* packaged as `frontend/src/...` plateaus at two boxes for two levels running
|
|
251
|
+
* before the third splits it, and a rule that gave up on the plateau would
|
|
252
|
+
* draw exactly the picture this function exists to avoid.
|
|
253
|
+
*/
|
|
254
|
+
function pickDefaultDepth(files, root) {
|
|
255
|
+
// Past the deepest directory, a bigger number only renames boxes to
|
|
256
|
+
// `src/a/(root files)`. There is nothing below the leaves.
|
|
257
|
+
let deepest = DEFAULT_DEPTH;
|
|
258
|
+
for (const file of files) {
|
|
259
|
+
if (file.test)
|
|
260
|
+
continue;
|
|
261
|
+
const path = (0, wire_1.toPosixPath)(file.path);
|
|
262
|
+
if (root && !path.startsWith(`${root}/`))
|
|
263
|
+
continue;
|
|
264
|
+
const rel = root ? path.slice(root.length + 1) : path;
|
|
265
|
+
deepest = Math.max(deepest, rel.split('/').filter(Boolean).length - 1);
|
|
266
|
+
}
|
|
267
|
+
let fallback = DEFAULT_DEPTH;
|
|
268
|
+
let fallbackCount = 0;
|
|
269
|
+
for (let depth = DEFAULT_DEPTH; depth <= Math.min(MAX_DEPTH, deepest); depth += 1) {
|
|
270
|
+
const tally = tallyModules(files, root, depth);
|
|
271
|
+
if (tally.count === 0)
|
|
272
|
+
break;
|
|
273
|
+
// Deeper only gets more crowded from here.
|
|
274
|
+
if (tally.count > MAX_MODULES)
|
|
275
|
+
break;
|
|
276
|
+
const dominated = tally.share > DOMINANT_SHARE && tally.largestFiles >= DOMINANT_MIN_FILES;
|
|
277
|
+
if (tally.count >= MIN_MODULES && !dominated)
|
|
278
|
+
return depth;
|
|
279
|
+
// Not a picture yet. Worth keeping only if it drew more than the last one:
|
|
280
|
+
// a deeper grouping that splits nothing is the same map with longer labels.
|
|
281
|
+
if (tally.count > fallbackCount) {
|
|
282
|
+
fallback = depth;
|
|
283
|
+
fallbackCount = tally.count;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
return fallback;
|
|
287
|
+
}
|
|
288
|
+
// =============================================================================
|
|
289
|
+
// Cache
|
|
290
|
+
// =============================================================================
|
|
291
|
+
/**
|
|
292
|
+
* One aggregation per (project, index build, root, depth).
|
|
293
|
+
*
|
|
294
|
+
* The map is the one screen whose cost is proportional to the whole edge
|
|
295
|
+
* table, so it is also the one screen worth caching. Keyed on the index's
|
|
296
|
+
* stamp AND its edge count, exactly as the blast scale is: a re-index or a
|
|
297
|
+
* sync that only moved edges must invalidate it, or the map draws a shape the
|
|
298
|
+
* code no longer has. A handful of entries, because the root selector is the
|
|
299
|
+
* only thing that varies.
|
|
300
|
+
*/
|
|
301
|
+
const CACHE_LIMIT = 8;
|
|
302
|
+
const cache = new Map();
|
|
303
|
+
function resetMapCache() {
|
|
304
|
+
cache.clear();
|
|
305
|
+
}
|
|
306
|
+
// =============================================================================
|
|
307
|
+
// Build
|
|
308
|
+
// =============================================================================
|
|
309
|
+
/**
|
|
310
|
+
* `null` for either field means "nobody said" — the answer picks. Absence has
|
|
311
|
+
* to survive parsing: a depth defaulted to 1 here is indistinguishable from a
|
|
312
|
+
* reader who asked for 1, and {@link pickDefaultDepth} would never run.
|
|
313
|
+
*/
|
|
314
|
+
function parseMapQuery(query) {
|
|
315
|
+
const rawDepth = query.get('depth');
|
|
316
|
+
let depth = null;
|
|
317
|
+
if (rawDepth !== null && rawDepth !== '') {
|
|
318
|
+
depth = Number.parseInt(rawDepth, 10);
|
|
319
|
+
if (!Number.isFinite(depth) || depth < 1 || depth > MAX_DEPTH) {
|
|
320
|
+
throw (0, respond_1.badRequest)(`depth must be a whole number from 1 to ${MAX_DEPTH}.`);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
const rawRoot = query.get('root');
|
|
324
|
+
return { root: rawRoot === null ? null : normalizeRoot(rawRoot), depth };
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Rename `x/(root files)` to `x` wherever the bucket is all `x` has.
|
|
328
|
+
*
|
|
329
|
+
* The bucket earns its name only when it stands beside something: `src` holding
|
|
330
|
+
* both `src/api` and three loose files needs a box for the loose ones, and that
|
|
331
|
+
* box has to say it is not the whole of `src`. But a `backend/controllers` with
|
|
332
|
+
* no subdirectories in it is not a directory with a bucket in it — it IS the
|
|
333
|
+
* directory, and drawing it as `backend/controllers/(root files)` names a thing
|
|
334
|
+
* the repository does not have. Deeper groupings hit this constantly (every
|
|
335
|
+
* leaf directory becomes a bucket), which is what makes it worth a pass.
|
|
336
|
+
*
|
|
337
|
+
* Returns only the ids that move, so a caller can leave the rest alone.
|
|
338
|
+
*/
|
|
339
|
+
function collapseLoneRootFiles(ids) {
|
|
340
|
+
const renamed = new Map();
|
|
341
|
+
for (const id of ids) {
|
|
342
|
+
const cut = id.lastIndexOf('/(root files)');
|
|
343
|
+
// A bucket at the very top (`(root files)`) has no directory to become.
|
|
344
|
+
if (cut <= 0 || cut + '/(root files)'.length !== id.length)
|
|
345
|
+
continue;
|
|
346
|
+
const dir = id.slice(0, cut);
|
|
347
|
+
let alone = true;
|
|
348
|
+
for (const other of ids) {
|
|
349
|
+
// A façade counts: `src/utils` beside `src/utils/index.tsx` would read as
|
|
350
|
+
// if the box contained the file drawn next to it.
|
|
351
|
+
if (other !== id && other.startsWith(`${dir}/`)) {
|
|
352
|
+
alone = false;
|
|
353
|
+
break;
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
// `dir` can only already be a module if something lives BELOW it, which is
|
|
357
|
+
// exactly the case `alone` just ruled out — so this rename cannot collide.
|
|
358
|
+
if (alone)
|
|
359
|
+
renamed.set(id, dir);
|
|
360
|
+
}
|
|
361
|
+
return renamed;
|
|
362
|
+
}
|
|
363
|
+
function buildMap(cg, projectRoot, query) {
|
|
364
|
+
const started = Date.now();
|
|
365
|
+
const { root: requestedRoot, depth: requestedDepth } = parseMapQuery(query);
|
|
366
|
+
const fileRecords = cg.getFiles().map((file) => {
|
|
367
|
+
const path = (0, wire_1.toPosixPath)(file.path);
|
|
368
|
+
return {
|
|
369
|
+
path,
|
|
370
|
+
language: file.language,
|
|
371
|
+
symbols: file.nodeCount ?? 0,
|
|
372
|
+
test: (0, query_utils_1.isTestFile)(path),
|
|
373
|
+
generated: file.generated === true,
|
|
374
|
+
};
|
|
375
|
+
});
|
|
376
|
+
const root = requestedRoot ?? pickDefaultRoot(fileRecords);
|
|
377
|
+
// Root first, then depth against THAT root: how finely to cut depends on
|
|
378
|
+
// what is being cut. Choosing `src` and then asking for one level under it
|
|
379
|
+
// is the same question as choosing the whole project and asking for two.
|
|
380
|
+
const depth = requestedDepth ?? pickDefaultDepth(fileRecords, root);
|
|
381
|
+
const stats = cg.getStats();
|
|
382
|
+
const key = [
|
|
383
|
+
projectRoot,
|
|
384
|
+
cg.getLastIndexedAt() ?? 0,
|
|
385
|
+
stats.edgeCount,
|
|
386
|
+
stats.fileCount,
|
|
387
|
+
root,
|
|
388
|
+
depth,
|
|
389
|
+
].join('\u0000');
|
|
390
|
+
const hit = cache.get(key);
|
|
391
|
+
if (hit) {
|
|
392
|
+
// Re-stamp rather than mutate: the cached body is shared, and a caller
|
|
393
|
+
// must not see another request's elapsed time.
|
|
394
|
+
return { ...hit, timing: { elapsedMs: Date.now() - started, cached: true } };
|
|
395
|
+
}
|
|
396
|
+
const assignments = [];
|
|
397
|
+
const modules = new Map();
|
|
398
|
+
const moduleOfFile = new Map();
|
|
399
|
+
const assigned = new Map();
|
|
400
|
+
for (const file of fileRecords) {
|
|
401
|
+
const at = moduleIdFor(file.path, root, depth);
|
|
402
|
+
if (at !== null)
|
|
403
|
+
assigned.set(file.path, at);
|
|
404
|
+
}
|
|
405
|
+
const renamed = collapseLoneRootFiles(new Set([...assigned.values()].map((a) => a.id)));
|
|
406
|
+
for (const file of fileRecords) {
|
|
407
|
+
const at = assigned.get(file.path);
|
|
408
|
+
if (at === undefined)
|
|
409
|
+
continue;
|
|
410
|
+
const id = renamed.get(at.id) ?? at.id;
|
|
411
|
+
assignments.push({ filePath: file.path, module: id });
|
|
412
|
+
moduleOfFile.set(file.path, id);
|
|
413
|
+
let entry = modules.get(id);
|
|
414
|
+
if (!entry) {
|
|
415
|
+
entry = {
|
|
416
|
+
id,
|
|
417
|
+
facade: at.facade,
|
|
418
|
+
files: 0,
|
|
419
|
+
symbols: 0,
|
|
420
|
+
testFiles: 0,
|
|
421
|
+
generatedFiles: 0,
|
|
422
|
+
generatedPaths: new Set(),
|
|
423
|
+
languages: new Map(),
|
|
424
|
+
paths: [],
|
|
425
|
+
};
|
|
426
|
+
modules.set(id, entry);
|
|
427
|
+
}
|
|
428
|
+
entry.files += 1;
|
|
429
|
+
entry.paths.push(file.path);
|
|
430
|
+
entry.symbols += file.symbols;
|
|
431
|
+
if (file.test)
|
|
432
|
+
entry.testFiles += 1;
|
|
433
|
+
if (file.generated) {
|
|
434
|
+
entry.generatedFiles += 1;
|
|
435
|
+
entry.generatedPaths.add(file.path);
|
|
436
|
+
}
|
|
437
|
+
entry.languages.set(file.language, (entry.languages.get(file.language) ?? 0) + 1);
|
|
438
|
+
}
|
|
439
|
+
const aggregation = cg.getModuleAggregation(assignments, {
|
|
440
|
+
kinds: exports.MAP_EDGE_KINDS,
|
|
441
|
+
minConfidence: wire_1.UNCERTAIN_BELOW,
|
|
442
|
+
topPairsPerLink: TOP_PAIRS_PER_LINK,
|
|
443
|
+
pairKinds: PAIR_EDGE_KINDS,
|
|
444
|
+
});
|
|
445
|
+
const links = new Map();
|
|
446
|
+
let uncertainEdges = 0;
|
|
447
|
+
for (const row of aggregation.links) {
|
|
448
|
+
// The same pass counts what the confidence floor left out, so the "N
|
|
449
|
+
// name-only matches excluded" note reports the number the map actually
|
|
450
|
+
// applied rather than a second query's opinion of it.
|
|
451
|
+
uncertainEdges += row.uncertain;
|
|
452
|
+
if (row.count === 0)
|
|
453
|
+
continue;
|
|
454
|
+
const id = `${row.source}\u0000${row.target}`;
|
|
455
|
+
let link = links.get(id);
|
|
456
|
+
if (!link) {
|
|
457
|
+
link = { source: row.source, target: row.target, count: 0, declared: 0, byKind: [], topPairs: [] };
|
|
458
|
+
links.set(id, link);
|
|
459
|
+
}
|
|
460
|
+
link.count += row.count;
|
|
461
|
+
link.declared += row.declared;
|
|
462
|
+
link.byKind.push({ kind: row.kind, count: row.count });
|
|
463
|
+
}
|
|
464
|
+
for (const link of links.values()) {
|
|
465
|
+
link.byKind.sort((a, b) => b.count - a.count || a.kind.localeCompare(b.kind));
|
|
466
|
+
}
|
|
467
|
+
for (const pair of aggregation.pairs) {
|
|
468
|
+
const link = links.get(`${pair.source}\u0000${pair.target}`);
|
|
469
|
+
if (link && link.topPairs.length < TOP_PAIRS_PER_LINK) {
|
|
470
|
+
link.topPairs.push({
|
|
471
|
+
from: pair.from,
|
|
472
|
+
to: pair.to,
|
|
473
|
+
count: pair.count,
|
|
474
|
+
declared: pair.declared,
|
|
475
|
+
});
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
// ONE fetch of the file edge list, read twice: the cycle finder and the
|
|
479
|
+
// dependent counts are both questions about it, and it is the expensive query
|
|
480
|
+
// on this screen.
|
|
481
|
+
const filePairs = cg.getFileDependencyPairs(wire_1.UNCERTAIN_BELOW);
|
|
482
|
+
const dependents = countDependents(filePairs, moduleOfFile);
|
|
483
|
+
const payload = {
|
|
484
|
+
root,
|
|
485
|
+
depth,
|
|
486
|
+
roots: rootOptions(fileRecords),
|
|
487
|
+
modules: [...modules.values()]
|
|
488
|
+
.map((entry) => {
|
|
489
|
+
const shown = entry.paths.slice().sort().slice(0, MAX_FILES_PER_MODULE);
|
|
490
|
+
return {
|
|
491
|
+
id: entry.id,
|
|
492
|
+
label: entry.id.slice(entry.id.lastIndexOf('/') + 1) || entry.id,
|
|
493
|
+
files: entry.files,
|
|
494
|
+
symbols: entry.symbols,
|
|
495
|
+
languages: [...entry.languages]
|
|
496
|
+
.map(([language, files]) => ({ language, files }))
|
|
497
|
+
.sort((a, b) => b.files - a.files || a.language.localeCompare(b.language)),
|
|
498
|
+
test: entry.testFiles * 2 > entry.files,
|
|
499
|
+
generated: entry.generatedFiles,
|
|
500
|
+
facade: entry.facade,
|
|
501
|
+
// Only the SHOWN paths, so the list the panel dims and the list it
|
|
502
|
+
// draws are the same list — the count-equals-list rule.
|
|
503
|
+
generatedFiles: shown.filter((path) => entry.generatedPaths.has(path)),
|
|
504
|
+
fileList: (0, wire_1.wireList)(shown, entry.files),
|
|
505
|
+
dependents: dependents.get(entry.id) ?? { files: 0, modules: 0 },
|
|
506
|
+
};
|
|
507
|
+
})
|
|
508
|
+
// Sorted so two runs over one index produce byte-identical payloads —
|
|
509
|
+
// the layout is deterministic, and it cannot be if its input is not.
|
|
510
|
+
.sort((a, b) => a.id.localeCompare(b.id)),
|
|
511
|
+
links: [...links.values()].sort((a, b) => a.source.localeCompare(b.source) || a.target.localeCompare(b.target)),
|
|
512
|
+
cycles: fileCycles(filePairs, moduleOfFile),
|
|
513
|
+
excluded: { uncertainEdges, confidenceBelow: wire_1.UNCERTAIN_BELOW },
|
|
514
|
+
index: {
|
|
515
|
+
lastIndexedAt: cg.getLastIndexedAt(),
|
|
516
|
+
edges: stats.edgeCount,
|
|
517
|
+
files: stats.fileCount,
|
|
518
|
+
},
|
|
519
|
+
timing: { elapsedMs: Date.now() - started, cached: false },
|
|
520
|
+
};
|
|
521
|
+
if (cache.size >= CACHE_LIMIT) {
|
|
522
|
+
const oldest = cache.keys().next();
|
|
523
|
+
if (!oldest.done)
|
|
524
|
+
cache.delete(oldest.value);
|
|
525
|
+
}
|
|
526
|
+
cache.set(key, payload);
|
|
527
|
+
return payload;
|
|
528
|
+
}
|
|
529
|
+
/**
|
|
530
|
+
* Per module: how many files outside it reference into it, and across how many
|
|
531
|
+
* modules those files sit.
|
|
532
|
+
*
|
|
533
|
+
* One pass over the edge list. A pair whose two ends land in the same module is
|
|
534
|
+
* internal cohesion, not blast radius, and is skipped; a pair touching a file
|
|
535
|
+
* outside the chosen root has no module and is skipped too. The `Set` per
|
|
536
|
+
* module is what makes the count DISTINCT FILES rather than distinct
|
|
537
|
+
* references — twelve calls from one file are one file that has to be re-read.
|
|
538
|
+
*/
|
|
539
|
+
function countDependents(pairs, moduleOfFile) {
|
|
540
|
+
const incoming = new Map();
|
|
541
|
+
for (const pair of pairs) {
|
|
542
|
+
const from = moduleOfFile.get(pair.source);
|
|
543
|
+
const to = moduleOfFile.get(pair.target);
|
|
544
|
+
if (from === undefined || to === undefined || from === to)
|
|
545
|
+
continue;
|
|
546
|
+
let seen = incoming.get(to);
|
|
547
|
+
if (!seen)
|
|
548
|
+
incoming.set(to, (seen = new Set()));
|
|
549
|
+
seen.add(pair.source);
|
|
550
|
+
}
|
|
551
|
+
const out = new Map();
|
|
552
|
+
for (const [module, files] of incoming) {
|
|
553
|
+
const modules = new Set();
|
|
554
|
+
for (const file of files)
|
|
555
|
+
modules.add(moduleOfFile.get(file));
|
|
556
|
+
out.set(module, { files: files.size, modules: modules.size });
|
|
557
|
+
}
|
|
558
|
+
return out;
|
|
559
|
+
}
|
|
560
|
+
/**
|
|
561
|
+
* File-level circular dependencies, as strongly connected components.
|
|
562
|
+
*
|
|
563
|
+
* Tarjan over the one-query file edge list. Components of size 1 are not
|
|
564
|
+
* cycles (a file depending on itself is a same-file edge, already excluded),
|
|
565
|
+
* and a component longer than {@link MAX_CYCLE_LENGTH} is reported truncated
|
|
566
|
+
* rather than printed — a 200-file knot is a fact about the repository, not a
|
|
567
|
+
* list anybody reads.
|
|
568
|
+
*/
|
|
569
|
+
function fileCycles(pairs, moduleOfFile) {
|
|
570
|
+
const adjacency = new Map();
|
|
571
|
+
for (const pair of pairs) {
|
|
572
|
+
if (!moduleOfFile.has(pair.source) || !moduleOfFile.has(pair.target))
|
|
573
|
+
continue;
|
|
574
|
+
let out = adjacency.get(pair.source);
|
|
575
|
+
if (!out)
|
|
576
|
+
adjacency.set(pair.source, (out = []));
|
|
577
|
+
out.push(pair.target);
|
|
578
|
+
}
|
|
579
|
+
// Deterministic iteration: SQLite's DISTINCT ordering is not a contract.
|
|
580
|
+
const nodes = [...new Set([...adjacency.keys(), ...[...adjacency.values()].flat()])].sort();
|
|
581
|
+
for (const list of adjacency.values())
|
|
582
|
+
list.sort();
|
|
583
|
+
const components = tarjan(nodes, (id) => adjacency.get(id) ?? []);
|
|
584
|
+
const cycles = components
|
|
585
|
+
.filter((component) => component.length > 1)
|
|
586
|
+
.map((component) => component.slice().sort())
|
|
587
|
+
.sort((a, b) => a.length - b.length || (a[0] ?? '').localeCompare(b[0] ?? ''));
|
|
588
|
+
const items = cycles.slice(0, MAX_FILE_CYCLES).map((files) => ({
|
|
589
|
+
size: files.length,
|
|
590
|
+
files: files.slice(0, MAX_CYCLE_LENGTH),
|
|
591
|
+
modules: [...new Set(files.map((file) => moduleOfFile.get(file) ?? file))].sort(),
|
|
592
|
+
}));
|
|
593
|
+
return {
|
|
594
|
+
total: cycles.length,
|
|
595
|
+
shown: items.length,
|
|
596
|
+
truncated: cycles.length > items.length,
|
|
597
|
+
items,
|
|
598
|
+
};
|
|
599
|
+
}
|
|
600
|
+
/** Tarjan's strongly connected components, iterative so a deep graph cannot blow the stack. */
|
|
601
|
+
function tarjan(nodes, edgesOf) {
|
|
602
|
+
const index = new Map();
|
|
603
|
+
const low = new Map();
|
|
604
|
+
const onStack = new Set();
|
|
605
|
+
const stack = [];
|
|
606
|
+
const out = [];
|
|
607
|
+
let counter = 0;
|
|
608
|
+
for (const start of nodes) {
|
|
609
|
+
if (index.has(start))
|
|
610
|
+
continue;
|
|
611
|
+
const work = [
|
|
612
|
+
{ id: start, edges: edgesOf(start), at: 0 },
|
|
613
|
+
];
|
|
614
|
+
index.set(start, counter);
|
|
615
|
+
low.set(start, counter);
|
|
616
|
+
counter += 1;
|
|
617
|
+
stack.push(start);
|
|
618
|
+
onStack.add(start);
|
|
619
|
+
while (work.length > 0) {
|
|
620
|
+
const frame = work[work.length - 1];
|
|
621
|
+
if (frame === undefined)
|
|
622
|
+
break;
|
|
623
|
+
if (frame.at < frame.edges.length) {
|
|
624
|
+
const next = frame.edges[frame.at];
|
|
625
|
+
frame.at += 1;
|
|
626
|
+
if (!index.has(next)) {
|
|
627
|
+
index.set(next, counter);
|
|
628
|
+
low.set(next, counter);
|
|
629
|
+
counter += 1;
|
|
630
|
+
stack.push(next);
|
|
631
|
+
onStack.add(next);
|
|
632
|
+
work.push({ id: next, edges: edgesOf(next), at: 0 });
|
|
633
|
+
}
|
|
634
|
+
else if (onStack.has(next)) {
|
|
635
|
+
low.set(frame.id, Math.min(low.get(frame.id) ?? 0, index.get(next) ?? 0));
|
|
636
|
+
}
|
|
637
|
+
continue;
|
|
638
|
+
}
|
|
639
|
+
work.pop();
|
|
640
|
+
if (low.get(frame.id) === index.get(frame.id)) {
|
|
641
|
+
const component = [];
|
|
642
|
+
for (;;) {
|
|
643
|
+
const popped = stack.pop();
|
|
644
|
+
if (popped === undefined)
|
|
645
|
+
break;
|
|
646
|
+
onStack.delete(popped);
|
|
647
|
+
component.push(popped);
|
|
648
|
+
if (popped === frame.id)
|
|
649
|
+
break;
|
|
650
|
+
}
|
|
651
|
+
out.push(component);
|
|
652
|
+
}
|
|
653
|
+
const parent = work[work.length - 1];
|
|
654
|
+
if (parent)
|
|
655
|
+
low.set(parent.id, Math.min(low.get(parent.id) ?? 0, low.get(frame.id) ?? 0));
|
|
656
|
+
}
|
|
657
|
+
}
|
|
658
|
+
return out;
|
|
659
|
+
}
|
|
660
|
+
/**
|
|
661
|
+
* The roots the selector offers: the repository root plus every top-level
|
|
662
|
+
* directory that holds indexed files, biggest first.
|
|
663
|
+
*
|
|
664
|
+
* A monorepo's answer to "which project am I looking at" — and on a single
|
|
665
|
+
* project it is a one-line list nobody has to use.
|
|
666
|
+
*/
|
|
667
|
+
function rootOptions(files) {
|
|
668
|
+
const byDir = new Map();
|
|
669
|
+
for (const file of files) {
|
|
670
|
+
const slash = file.path.indexOf('/');
|
|
671
|
+
if (slash <= 0)
|
|
672
|
+
continue;
|
|
673
|
+
const dir = file.path.slice(0, slash);
|
|
674
|
+
byDir.set(dir, (byDir.get(dir) ?? 0) + 1);
|
|
675
|
+
}
|
|
676
|
+
const dirs = [...byDir]
|
|
677
|
+
.sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]))
|
|
678
|
+
.map(([root, count]) => ({ root, label: root, files: count }));
|
|
679
|
+
return [{ root: '', label: 'whole repository', files: files.length }, ...dirs];
|
|
680
|
+
}
|
|
681
|
+
//# sourceMappingURL=map.js.map
|