gitnexus 1.6.10-rc.99 → 1.6.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +177 -18
- package/dist/_shared/graph/types.d.ts +21 -2
- package/dist/_shared/graph/types.d.ts.map +1 -1
- package/dist/_shared/index.d.ts +3 -3
- package/dist/_shared/index.d.ts.map +1 -1
- package/dist/_shared/index.js +1 -1
- package/dist/_shared/index.js.map +1 -1
- package/dist/_shared/integrations/circuit-breaker.d.ts.map +1 -1
- package/dist/_shared/integrations/circuit-breaker.js.map +1 -1
- package/dist/_shared/integrations/resilient-fetch.d.ts +16 -0
- package/dist/_shared/integrations/resilient-fetch.d.ts.map +1 -1
- package/dist/_shared/integrations/resilient-fetch.js +19 -7
- package/dist/_shared/integrations/resilient-fetch.js.map +1 -1
- package/dist/_shared/language-detection.d.ts.map +1 -1
- package/dist/_shared/lbug/schema-constants.d.ts +2 -2
- package/dist/_shared/lbug/schema-constants.d.ts.map +1 -1
- package/dist/_shared/lbug/schema-constants.js +3 -0
- package/dist/_shared/lbug/schema-constants.js.map +1 -1
- package/dist/_shared/scope-resolution/evidence-weights.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/finalize-algorithm.d.ts +5 -0
- package/dist/_shared/scope-resolution/finalize-algorithm.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/finalize-algorithm.js +315 -36
- package/dist/_shared/scope-resolution/finalize-algorithm.js.map +1 -1
- package/dist/_shared/scope-resolution/reference-site.d.ts +115 -0
- package/dist/_shared/scope-resolution/reference-site.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/registries/field-registry.js.map +1 -1
- package/dist/_shared/scope-resolution/registries/lookup-core.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/registries/lookup-core.js +58 -2
- package/dist/_shared/scope-resolution/registries/lookup-core.js.map +1 -1
- package/dist/_shared/scope-resolution/registries/method-registry.js.map +1 -1
- package/dist/_shared/scope-resolution/scope-tree.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/scope-tree.js.map +1 -1
- package/dist/_shared/scope-resolution/symbol-definition.d.ts +47 -0
- package/dist/_shared/scope-resolution/symbol-definition.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/types.d.ts +278 -3
- package/dist/_shared/scope-resolution/types.d.ts.map +1 -1
- package/dist/cli/ai-context.d.ts +3 -2
- package/dist/cli/ai-context.js +71 -16
- package/dist/cli/analyze-config.d.ts +1 -1
- package/dist/cli/analyze-options.d.ts +131 -0
- package/dist/cli/analyze-options.js +1 -0
- package/dist/cli/analyze.d.ts +21 -113
- package/dist/cli/analyze.js +172 -29
- package/dist/cli/cli-message.d.ts +1 -1
- package/dist/cli/detect-changes-format.js +19 -2
- package/dist/cli/doctor.d.ts +12 -0
- package/dist/cli/doctor.js +32 -5
- package/dist/cli/editor-targets.js +6 -0
- package/dist/cli/eval-server.js +2 -1
- package/dist/cli/format-symbol.d.ts +15 -0
- package/dist/cli/format-symbol.js +17 -0
- package/dist/cli/generated-skill.d.ts +17 -0
- package/dist/cli/generated-skill.js +1 -0
- package/dist/cli/group.js +229 -21
- package/dist/cli/help-i18n.js +1 -2
- package/dist/cli/i18n/en.d.ts +11 -9
- package/dist/cli/i18n/en.js +13 -9
- package/dist/cli/i18n/resources.d.ts +15 -11
- package/dist/cli/i18n/zh-CN.d.ts +4 -2
- package/dist/cli/i18n/zh-CN.js +11 -9
- package/dist/cli/index.js +8 -4
- package/dist/cli/resolve-invocation.d.ts +7 -3
- package/dist/cli/resolve-invocation.js +7 -3
- package/dist/cli/setup.js +4 -3
- package/dist/cli/skill-gen.d.ts +1 -6
- package/dist/cli/tool.d.ts +1 -0
- package/dist/cli/tool.js +74 -17
- package/dist/cli/wiki.js +53 -10
- package/dist/config/ignore-service.d.ts +2 -0
- package/dist/config/ignore-service.js +54 -13
- package/dist/core/analyzer-identity.d.ts +80 -0
- package/dist/core/analyzer-identity.js +364 -26
- package/dist/core/augmentation/engine.js +86 -71
- package/dist/core/embedding-checkpoint.d.ts +143 -0
- package/dist/core/embedding-checkpoint.js +221 -0
- package/dist/core/embedding-count.d.ts +61 -0
- package/dist/core/embedding-count.js +69 -0
- package/dist/core/embeddings/ast-utils.js +9 -1
- package/dist/core/embeddings/embedding-pipeline.d.ts +8 -0
- package/dist/core/embeddings/embedding-pipeline.js +253 -14
- package/dist/core/embeddings/http-client.d.ts +5 -0
- package/dist/core/embeddings/http-client.js +142 -27
- package/dist/core/graph/graph.js +3 -0
- package/dist/core/graph/import-cycles.d.ts +194 -3
- package/dist/core/graph/import-cycles.js +522 -73
- package/dist/core/graph/types.d.ts +18 -0
- package/dist/core/group/bridge-db.d.ts +204 -1
- package/dist/core/group/bridge-db.js +401 -28
- package/dist/core/group/completeness.d.ts +130 -0
- package/dist/core/group/completeness.js +83 -0
- package/dist/core/group/config-parser.js +0 -5
- package/dist/core/group/cross-impact.d.ts +46 -1
- package/dist/core/group/cross-impact.js +220 -19
- package/dist/core/group/cross-trace.d.ts +32 -11
- package/dist/core/group/cross-trace.js +114 -20
- package/dist/core/group/extractors/http-patterns/java.js +278 -22
- package/dist/core/group/extractors/http-patterns/node.js +332 -216
- package/dist/core/group/extractors/http-patterns/types.d.ts +8 -0
- package/dist/core/group/extractors/http-route-extractor.d.ts +1 -0
- package/dist/core/group/extractors/http-route-extractor.js +122 -48
- package/dist/core/group/extractors/include-extractor.js +20 -2
- package/dist/core/group/extractors/manifest-extractor.d.ts +1 -1
- package/dist/core/group/extractors/manifest-extractor.js +7 -7
- package/dist/core/group/extractors/python-workspace-extractor.js +5 -2
- package/dist/core/group/group-lock.d.ts +31 -0
- package/dist/core/group/group-lock.js +166 -0
- package/dist/core/group/service.js +297 -16
- package/dist/core/group/storage.d.ts +3 -0
- package/dist/core/group/storage.js +7 -39
- package/dist/core/group/sync.d.ts +49 -3
- package/dist/core/group/sync.js +0 -0
- package/dist/core/group/types.d.ts +183 -8
- package/dist/core/group/types.js +28 -1
- package/dist/core/incremental/subgraph-extract.d.ts +9 -6
- package/dist/core/incremental/subgraph-extract.js +33 -10
- package/dist/core/index-freshness.d.ts +77 -2
- package/dist/core/index-freshness.js +109 -2
- package/dist/core/ingestion/call-processor.d.ts +13 -1
- package/dist/core/ingestion/call-processor.js +110 -3
- package/dist/core/ingestion/cfg/callee-cell-format.d.ts +42 -0
- package/dist/core/ingestion/cfg/callee-cell-format.js +42 -0
- package/dist/core/ingestion/cfg/emit.d.ts +8 -23
- package/dist/core/ingestion/cfg/emit.js +9 -23
- package/dist/core/ingestion/class-extractors/configs/go.js +10 -5
- package/dist/core/ingestion/cluster-enricher.js +8 -4
- package/dist/core/ingestion/community-processor.d.ts +21 -3
- package/dist/core/ingestion/community-processor.js +81 -82
- package/dist/core/ingestion/di-extractors/index.d.ts +9 -33
- package/dist/core/ingestion/di-extractors/spring.d.ts +1 -1
- package/dist/core/ingestion/di-extractors/spring.js +8 -1
- package/dist/core/ingestion/di-extractors/types.d.ts +60 -0
- package/dist/core/ingestion/di-extractors/types.js +15 -0
- package/dist/core/ingestion/filesystem-walker.js +30 -14
- package/dist/core/ingestion/finalize-orchestrator.js +1 -0
- package/dist/core/ingestion/frameworks/spring/analysis-features.d.ts +6 -0
- package/dist/core/ingestion/frameworks/spring/analysis-features.js +35 -1
- package/dist/core/ingestion/frameworks/spring/annotation-arguments.d.ts +13 -0
- package/dist/core/ingestion/frameworks/spring/annotation-arguments.js +227 -0
- package/dist/core/ingestion/frameworks/spring/aop-candidates.d.ts +15 -0
- package/dist/core/ingestion/frameworks/spring/aop-candidates.js +85 -0
- package/dist/core/ingestion/frameworks/spring/aop.d.ts +118 -0
- package/dist/core/ingestion/frameworks/spring/aop.js +476 -0
- package/dist/core/ingestion/frameworks/spring/auto-configuration.d.ts +8 -0
- package/dist/core/ingestion/frameworks/spring/auto-configuration.js +16 -0
- package/dist/core/ingestion/frameworks/spring/bean-catalog.js +1 -0
- package/dist/core/ingestion/frameworks/spring/bean-factories.d.ts +33 -0
- package/dist/core/ingestion/frameworks/spring/bean-factories.js +65 -0
- package/dist/core/ingestion/frameworks/spring/conditionals.d.ts +25 -0
- package/dist/core/ingestion/frameworks/spring/conditionals.js +319 -0
- package/dist/core/ingestion/frameworks/spring/di-metadata.d.ts +3 -0
- package/dist/core/ingestion/frameworks/spring/di-metadata.js +162 -13
- package/dist/core/ingestion/frameworks/spring/non-http-handlers.d.ts +28 -0
- package/dist/core/ingestion/frameworks/spring/non-http-handlers.js +152 -0
- package/dist/core/ingestion/frameworks/spring/resource-injection.d.ts +5 -0
- package/dist/core/ingestion/frameworks/spring/resource-injection.js +91 -0
- package/dist/core/ingestion/import-resolvers/configs/csharp.js +5 -1
- package/dist/core/ingestion/import-resolvers/configs/swift.js +13 -0
- package/dist/core/ingestion/import-resolvers/csharp.d.ts +9 -1
- package/dist/core/ingestion/import-resolvers/csharp.js +234 -27
- package/dist/core/ingestion/import-resolvers/go.d.ts +11 -1
- package/dist/core/ingestion/import-resolvers/go.js +44 -17
- package/dist/core/ingestion/import-resolvers/jvm.d.ts +2 -2
- package/dist/core/ingestion/import-resolvers/node-workspace-packages.d.ts +90 -0
- package/dist/core/ingestion/import-resolvers/node-workspace-packages.js +429 -0
- package/dist/core/ingestion/import-resolvers/package-dir-index.d.ts +124 -0
- package/dist/core/ingestion/import-resolvers/package-dir-index.js +223 -0
- package/dist/core/ingestion/import-resolvers/pass-cache.d.ts +50 -0
- package/dist/core/ingestion/import-resolvers/pass-cache.js +60 -0
- package/dist/core/ingestion/import-resolvers/per-file-set.d.ts +71 -0
- package/dist/core/ingestion/import-resolvers/per-file-set.js +11 -0
- package/dist/core/ingestion/import-resolvers/php.d.ts +1 -1
- package/dist/core/ingestion/import-resolvers/php.js +65 -19
- package/dist/core/ingestion/import-resolvers/python-file-index.d.ts +201 -0
- package/dist/core/ingestion/import-resolvers/python-file-index.js +302 -0
- package/dist/core/ingestion/import-resolvers/python.js +25 -6
- package/dist/core/ingestion/import-resolvers/ruby.d.ts +1 -1
- package/dist/core/ingestion/import-resolvers/rust.d.ts +2 -2
- package/dist/core/ingestion/import-resolvers/standard.d.ts +1 -1
- package/dist/core/ingestion/import-resolvers/types.d.ts +1 -12
- package/dist/core/ingestion/import-resolvers/utils.d.ts +65 -6
- package/dist/core/ingestion/import-resolvers/utils.js +215 -36
- package/dist/core/ingestion/import-resolvers/workspace-file-index.d.ts +72 -0
- package/dist/core/ingestion/import-resolvers/workspace-file-index.js +58 -0
- package/dist/core/ingestion/language-config.d.ts +29 -1
- package/dist/core/ingestion/language-config.js +110 -35
- package/dist/core/ingestion/language-provider.d.ts +209 -7
- package/dist/core/ingestion/language-provider.js +37 -0
- package/dist/core/ingestion/languages/c/captures.js +7 -0
- package/dist/core/ingestion/languages/c/import-target.js +12 -16
- package/dist/core/ingestion/languages/c/scope-resolver.js +20 -19
- package/dist/core/ingestion/languages/c/static-linkage.js +12 -16
- package/dist/core/ingestion/languages/c-cpp.js +13 -0
- package/dist/core/ingestion/languages/cobol/scope-resolver.js +27 -20
- package/dist/core/ingestion/languages/cobol.js +13 -0
- package/dist/core/ingestion/languages/cpp/adl.d.ts +2 -2
- package/dist/core/ingestion/languages/cpp/adl.js +67 -44
- package/dist/core/ingestion/languages/cpp/captures.js +14 -2
- package/dist/core/ingestion/languages/cpp/file-local-linkage.js +11 -15
- package/dist/core/ingestion/languages/cpp/inline-namespaces.d.ts +28 -8
- package/dist/core/ingestion/languages/cpp/inline-namespaces.js +242 -68
- package/dist/core/ingestion/languages/cpp/interpret.d.ts +2 -0
- package/dist/core/ingestion/languages/cpp/interpret.js +126 -6
- package/dist/core/ingestion/languages/cpp/query.js +106 -0
- package/dist/core/ingestion/languages/cpp/scope-resolver.js +48 -20
- package/dist/core/ingestion/languages/csharp/accessor-unwrap.d.ts +2 -15
- package/dist/core/ingestion/languages/csharp/accessor-unwrap.js +18 -10
- package/dist/core/ingestion/languages/csharp/captures.js +19 -0
- package/dist/core/ingestion/languages/csharp/import-target.js +46 -72
- package/dist/core/ingestion/languages/csharp/namespace-siblings.js +5 -1
- package/dist/core/ingestion/languages/csharp/query.js +25 -5
- package/dist/core/ingestion/languages/csharp/scope-resolver.js +75 -2
- package/dist/core/ingestion/languages/dart/captures.d.ts +10 -0
- package/dist/core/ingestion/languages/dart/captures.js +598 -16
- package/dist/core/ingestion/languages/dart/import-target.js +32 -9
- package/dist/core/ingestion/languages/dart/index.d.ts +1 -1
- package/dist/core/ingestion/languages/dart/index.js +1 -1
- package/dist/core/ingestion/languages/dart/query.js +98 -1
- package/dist/core/ingestion/languages/dart/scope-resolver.js +14 -3
- package/dist/core/ingestion/languages/dart/simple-hooks.js +9 -0
- package/dist/core/ingestion/languages/dart.js +6 -1
- package/dist/core/ingestion/languages/go/captures.js +108 -3
- package/dist/core/ingestion/languages/go/generic-type-parameters.d.ts +31 -0
- package/dist/core/ingestion/languages/go/generic-type-parameters.js +140 -0
- package/dist/core/ingestion/languages/go/import-target.d.ts +3 -10
- package/dist/core/ingestion/languages/go/import-target.js +34 -30
- package/dist/core/ingestion/languages/go/index.d.ts +1 -1
- package/dist/core/ingestion/languages/go/interface-impls.d.ts +9 -1
- package/dist/core/ingestion/languages/go/interface-impls.js +693 -87
- package/dist/core/ingestion/languages/go/interpret.d.ts +2 -0
- package/dist/core/ingestion/languages/go/interpret.js +22 -8
- package/dist/core/ingestion/languages/go/method-owners.js +31 -12
- package/dist/core/ingestion/languages/go/package-clause.d.ts +46 -0
- package/dist/core/ingestion/languages/go/package-clause.js +75 -0
- package/dist/core/ingestion/languages/go/package-siblings.js +7 -11
- package/dist/core/ingestion/languages/go/query.js +56 -3
- package/dist/core/ingestion/languages/go/scope-resolver.js +39 -0
- package/dist/core/ingestion/languages/go.js +9 -0
- package/dist/core/ingestion/languages/java/analysis-features.d.ts +4 -0
- package/dist/core/ingestion/languages/java/analysis-features.js +12 -0
- package/dist/core/ingestion/languages/java/capture-side-channel.d.ts +12 -0
- package/dist/core/ingestion/languages/java/capture-side-channel.js +48 -0
- package/dist/core/ingestion/languages/java/captures.js +77 -32
- package/dist/core/ingestion/languages/java/import-target.d.ts +49 -9
- package/dist/core/ingestion/languages/java/import-target.js +68 -88
- package/dist/core/ingestion/languages/java/interpret.js +3 -2
- package/dist/core/ingestion/languages/java/module-resolution.d.ts +62 -0
- package/dist/core/ingestion/languages/java/module-resolution.js +142 -0
- package/dist/core/ingestion/languages/java/query.js +15 -3
- package/dist/core/ingestion/languages/java/record-components.d.ts +14 -0
- package/dist/core/ingestion/languages/java/record-components.js +185 -0
- package/dist/core/ingestion/languages/java/scope-resolver.js +10 -2
- package/dist/core/ingestion/languages/java/spring-aop.d.ts +12 -0
- package/dist/core/ingestion/languages/java/spring-aop.js +49 -0
- package/dist/core/ingestion/languages/java/spring-conditionals.d.ts +11 -0
- package/dist/core/ingestion/languages/java/spring-conditionals.js +48 -0
- package/dist/core/ingestion/languages/java/spring-di.d.ts +4 -1
- package/dist/core/ingestion/languages/java/spring-di.js +41 -9
- package/dist/core/ingestion/languages/java/spring-non-http-handlers.d.ts +7 -0
- package/dist/core/ingestion/languages/java/spring-non-http-handlers.js +32 -0
- package/dist/core/ingestion/languages/java.js +94 -3
- package/dist/core/ingestion/languages/javascript/captures.d.ts +6 -1
- package/dist/core/ingestion/languages/javascript/captures.js +262 -4
- package/dist/core/ingestion/languages/javascript/import-target.d.ts +17 -21
- package/dist/core/ingestion/languages/javascript/import-target.js +24 -41
- package/dist/core/ingestion/languages/javascript/index.d.ts +54 -5
- package/dist/core/ingestion/languages/javascript/index.js +54 -5
- package/dist/core/ingestion/languages/javascript/query.d.ts +1 -0
- package/dist/core/ingestion/languages/javascript/query.js +211 -5
- package/dist/core/ingestion/languages/javascript/scope-resolver.js +12 -0
- package/dist/core/ingestion/languages/javascript/simple-hooks.js +2 -1
- package/dist/core/ingestion/languages/jvm/package-siblings.js +77 -9
- package/dist/core/ingestion/languages/kotlin/capture-side-channel.d.ts +15 -0
- package/dist/core/ingestion/languages/kotlin/capture-side-channel.js +48 -0
- package/dist/core/ingestion/languages/kotlin/captures.js +43 -1
- package/dist/core/ingestion/languages/kotlin/import-target.d.ts +8 -1
- package/dist/core/ingestion/languages/kotlin/import-target.js +20 -123
- package/dist/core/ingestion/languages/kotlin/index.d.ts +1 -0
- package/dist/core/ingestion/languages/kotlin/index.js +1 -0
- package/dist/core/ingestion/languages/kotlin/module-resolution.d.ts +22 -0
- package/dist/core/ingestion/languages/kotlin/module-resolution.js +108 -0
- package/dist/core/ingestion/languages/kotlin/query.js +28 -2
- package/dist/core/ingestion/languages/kotlin/scope-resolver.js +23 -2
- package/dist/core/ingestion/languages/kotlin/spring-aop.d.ts +12 -0
- package/dist/core/ingestion/languages/kotlin/spring-aop.js +64 -0
- package/dist/core/ingestion/languages/kotlin/spring-conditionals.d.ts +12 -0
- package/dist/core/ingestion/languages/kotlin/spring-conditionals.js +49 -0
- package/dist/core/ingestion/languages/kotlin/spring-di.d.ts +2 -0
- package/dist/core/ingestion/languages/kotlin/spring-di.js +60 -11
- package/dist/core/ingestion/languages/kotlin/spring-non-http-handlers.d.ts +10 -0
- package/dist/core/ingestion/languages/kotlin/spring-non-http-handlers.js +41 -0
- package/dist/core/ingestion/languages/php/captures.d.ts +5 -0
- package/dist/core/ingestion/languages/php/captures.js +319 -51
- package/dist/core/ingestion/languages/php/import-target.d.ts +3 -4
- package/dist/core/ingestion/languages/php/import-target.js +192 -62
- package/dist/core/ingestion/languages/php/query.js +31 -0
- package/dist/core/ingestion/languages/python/arity-metadata.d.ts +1 -0
- package/dist/core/ingestion/languages/python/arity-metadata.js +1 -0
- package/dist/core/ingestion/languages/python/captures.js +29 -0
- package/dist/core/ingestion/languages/python/import-decomposer.js +22 -1
- package/dist/core/ingestion/languages/python/import-target.d.ts +42 -1
- package/dist/core/ingestion/languages/python/import-target.js +277 -91
- package/dist/core/ingestion/languages/python/index.d.ts +1 -1
- package/dist/core/ingestion/languages/python/index.js +1 -1
- package/dist/core/ingestion/languages/python/interpret.d.ts +52 -0
- package/dist/core/ingestion/languages/python/interpret.js +249 -7
- package/dist/core/ingestion/languages/python/query.js +9 -0
- package/dist/core/ingestion/languages/python/receiver-binding.d.ts +8 -6
- package/dist/core/ingestion/languages/python/receiver-binding.js +108 -12
- package/dist/core/ingestion/languages/python/scope-resolver.js +27 -4
- package/dist/core/ingestion/languages/python/simple-hooks.js +2 -8
- package/dist/core/ingestion/languages/python.js +13 -0
- package/dist/core/ingestion/languages/ruby/captures.js +158 -0
- package/dist/core/ingestion/languages/ruby/import-target.js +7 -5
- package/dist/core/ingestion/languages/ruby/query.js +93 -0
- package/dist/core/ingestion/languages/ruby/scope-resolver.js +2 -0
- package/dist/core/ingestion/languages/ruby/simple-hooks.d.ts +1 -1
- package/dist/core/ingestion/languages/ruby/simple-hooks.js +22 -1
- package/dist/core/ingestion/languages/rust/captures.js +39 -1
- package/dist/core/ingestion/languages/rust/method-owners.js +11 -1
- package/dist/core/ingestion/languages/rust/module-path.d.ts +126 -0
- package/dist/core/ingestion/languages/rust/module-path.js +214 -0
- package/dist/core/ingestion/languages/rust/qualified-call.d.ts +41 -0
- package/dist/core/ingestion/languages/rust/qualified-call.js +481 -0
- package/dist/core/ingestion/languages/rust/query.js +39 -6
- package/dist/core/ingestion/languages/rust/scope-resolver.js +21 -2
- package/dist/core/ingestion/languages/rust.js +17 -0
- package/dist/core/ingestion/languages/swift/captures.js +87 -3
- package/dist/core/ingestion/languages/swift/conditional-directive-preprocess.d.ts +48 -0
- package/dist/core/ingestion/languages/swift/conditional-directive-preprocess.js +253 -0
- package/dist/core/ingestion/languages/swift/import-target.js +4 -9
- package/dist/core/ingestion/languages/swift/query.js +17 -0
- package/dist/core/ingestion/languages/swift/receiver-binding.d.ts +8 -0
- package/dist/core/ingestion/languages/swift/receiver-binding.js +6 -2
- package/dist/core/ingestion/languages/swift.js +2 -0
- package/dist/core/ingestion/languages/typescript/captures.d.ts +90 -1
- package/dist/core/ingestion/languages/typescript/captures.js +267 -5
- package/dist/core/ingestion/languages/typescript/cjs-export-assignment.d.ts +134 -0
- package/dist/core/ingestion/languages/typescript/cjs-export-assignment.js +523 -0
- package/dist/core/ingestion/languages/typescript/cjs-module-exports.d.ts +54 -0
- package/dist/core/ingestion/languages/typescript/cjs-module-exports.js +191 -0
- package/dist/core/ingestion/languages/typescript/convex-endpoint-metadata.d.ts +7 -0
- package/dist/core/ingestion/languages/typescript/convex-endpoint-metadata.js +92 -0
- package/dist/core/ingestion/languages/typescript/file-candidates.d.ts +29 -0
- package/dist/core/ingestion/languages/typescript/file-candidates.js +70 -0
- package/dist/core/ingestion/languages/typescript/import-decomposer.d.ts +28 -1
- package/dist/core/ingestion/languages/typescript/import-decomposer.js +125 -10
- package/dist/core/ingestion/languages/typescript/import-target.d.ts +25 -37
- package/dist/core/ingestion/languages/typescript/import-target.js +24 -26
- package/dist/core/ingestion/languages/typescript/interpret.d.ts +21 -1
- package/dist/core/ingestion/languages/typescript/interpret.js +45 -5
- package/dist/core/ingestion/languages/typescript/module-resolution.d.ts +48 -0
- package/dist/core/ingestion/languages/typescript/module-resolution.js +171 -0
- package/dist/core/ingestion/languages/typescript/query.d.ts +1 -0
- package/dist/core/ingestion/languages/typescript/query.js +303 -14
- package/dist/core/ingestion/languages/typescript/receiver-binding.d.ts +17 -0
- package/dist/core/ingestion/languages/typescript/receiver-binding.js +27 -0
- package/dist/core/ingestion/languages/typescript/scope-resolver.js +27 -40
- package/dist/core/ingestion/languages/typescript/simple-hooks.d.ts +0 -10
- package/dist/core/ingestion/languages/typescript/simple-hooks.js +22 -22
- package/dist/core/ingestion/languages/typescript/tsconfig.d.ts +59 -0
- package/dist/core/ingestion/languages/typescript/tsconfig.js +292 -0
- package/dist/core/ingestion/languages/typescript.js +93 -2
- package/dist/core/ingestion/languages/vue/import-target.d.ts +6 -22
- package/dist/core/ingestion/languages/vue/import-target.js +11 -47
- package/dist/core/ingestion/languages/vue/scope-resolver.js +4 -2
- package/dist/core/ingestion/local-symbol-pruner.js +11 -11
- package/dist/core/ingestion/method-extractors/configs/csharp.js +1 -0
- package/dist/core/ingestion/method-extractors/generic.js +1 -0
- package/dist/core/ingestion/method-types.d.ts +16 -0
- package/dist/core/ingestion/pipeline-phases/di.d.ts +1 -1
- package/dist/core/ingestion/pipeline-phases/di.js +136 -21
- package/dist/core/ingestion/pipeline-phases/index.d.ts +2 -0
- package/dist/core/ingestion/pipeline-phases/index.js +2 -0
- package/dist/core/ingestion/pipeline-phases/parse-impl.d.ts +15 -0
- package/dist/core/ingestion/pipeline-phases/parse-impl.js +154 -4
- package/dist/core/ingestion/pipeline-phases/parse.js +5 -0
- package/dist/core/ingestion/pipeline-phases/processes.d.ts +3 -2
- package/dist/core/ingestion/pipeline-phases/processes.js +91 -6
- package/dist/core/ingestion/pipeline-phases/routes.js +116 -25
- package/dist/core/ingestion/pipeline-phases/spring-aop.d.ts +34 -0
- package/dist/core/ingestion/pipeline-phases/spring-aop.js +439 -0
- package/dist/core/ingestion/pipeline-phases/spring-auto-configuration.d.ts +34 -0
- package/dist/core/ingestion/pipeline-phases/spring-auto-configuration.js +255 -0
- package/dist/core/ingestion/pipeline-phases/types.d.ts +7 -0
- package/dist/core/ingestion/pipeline.d.ts +26 -2
- package/dist/core/ingestion/pipeline.js +60 -11
- package/dist/core/ingestion/process-processor.d.ts +109 -2
- package/dist/core/ingestion/process-processor.js +464 -52
- package/dist/core/ingestion/resolve-references.d.ts +6 -1
- package/dist/core/ingestion/resolve-references.js +66 -6
- package/dist/core/ingestion/route-extractors/constant-resolver.d.ts +8 -2
- package/dist/core/ingestion/route-extractors/constant-resolver.js +11 -7
- package/dist/core/ingestion/route-extractors/data-route-table.d.ts +40 -0
- package/dist/core/ingestion/route-extractors/data-route-table.js +876 -0
- package/dist/core/ingestion/route-extractors/dispatch-guard.d.ts +96 -0
- package/dist/core/ingestion/route-extractors/dispatch-guard.js +1184 -0
- package/dist/core/ingestion/route-extractors/java-const-resolver.d.ts +114 -0
- package/dist/core/ingestion/route-extractors/java-const-resolver.js +569 -0
- package/dist/core/ingestion/route-extractors/js-const-resolver.d.ts +192 -0
- package/dist/core/ingestion/route-extractors/js-const-resolver.js +1033 -0
- package/dist/core/ingestion/route-extractors/nest.d.ts +53 -0
- package/dist/core/ingestion/route-extractors/nest.js +523 -0
- package/dist/core/ingestion/route-extractors/spring-shared.d.ts +11 -0
- package/dist/core/ingestion/route-extractors/spring-shared.js +89 -0
- package/dist/core/ingestion/route-extractors/spring.js +214 -29
- package/dist/core/ingestion/scope-extractor-bridge.js +9 -1
- package/dist/core/ingestion/scope-extractor.d.ts +22 -7
- package/dist/core/ingestion/scope-extractor.js +309 -15
- package/dist/core/ingestion/scope-resolution/contract/scope-resolver.d.ts +311 -21
- package/dist/core/ingestion/scope-resolution/contract/scope-resolver.js +16 -5
- package/dist/core/ingestion/scope-resolution/graph-bridge/edges.d.ts +12 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/edges.js +47 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/ids.d.ts +20 -15
- package/dist/core/ingestion/scope-resolution/graph-bridge/ids.js +280 -42
- package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.d.ts +123 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.js +171 -17
- package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.d.ts +58 -1
- package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +137 -34
- package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.d.ts +30 -1
- package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +39 -1
- package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.d.ts +18 -1
- package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.js +113 -18
- package/dist/core/ingestion/scope-resolution/passes/compound-receiver.d.ts +107 -5
- package/dist/core/ingestion/scope-resolution/passes/compound-receiver.js +590 -33
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.d.ts +3 -0
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.js +101 -41
- package/dist/core/ingestion/scope-resolution/passes/imported-value-refs.d.ts +34 -0
- package/dist/core/ingestion/scope-resolution/passes/imported-value-refs.js +62 -0
- package/dist/core/ingestion/scope-resolution/passes/property-dispatch.d.ts +5 -1
- package/dist/core/ingestion/scope-resolution/passes/property-dispatch.js +8 -1
- package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.d.ts +105 -5
- package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +931 -92
- package/dist/core/ingestion/scope-resolution/passes/return-shape-members.d.ts +58 -0
- package/dist/core/ingestion/scope-resolution/passes/return-shape-members.js +458 -0
- package/dist/core/ingestion/scope-resolution/passes/unique-name-properties.d.ts +180 -0
- package/dist/core/ingestion/scope-resolution/passes/unique-name-properties.js +418 -0
- package/dist/core/ingestion/scope-resolution/pipeline/phase.d.ts +29 -0
- package/dist/core/ingestion/scope-resolution/pipeline/phase.js +57 -0
- package/dist/core/ingestion/scope-resolution/pipeline/run.d.ts +55 -1
- package/dist/core/ingestion/scope-resolution/pipeline/run.js +241 -19
- package/dist/core/ingestion/scope-resolution/resolution-outcome.d.ts +112 -2
- package/dist/core/ingestion/scope-resolution/resolution-outcome.js +38 -1
- package/dist/core/ingestion/scope-resolution/scope/namespace-targets.d.ts +25 -3
- package/dist/core/ingestion/scope-resolution/scope/namespace-targets.js +36 -16
- package/dist/core/ingestion/scope-resolution/scope/walkers.d.ts +210 -9
- package/dist/core/ingestion/scope-resolution/scope/walkers.js +905 -22
- package/dist/core/ingestion/scope-resolution/summary-maps.d.ts +28 -0
- package/dist/core/ingestion/scope-resolution/summary-maps.js +50 -0
- package/dist/core/ingestion/scope-resolution/undecided-satisfaction.d.ts +55 -0
- package/dist/core/ingestion/scope-resolution/undecided-satisfaction.js +37 -0
- package/dist/core/ingestion/scope-resolution/unresolved-receivers.d.ts +109 -0
- package/dist/core/ingestion/scope-resolution/unresolved-receivers.js +204 -0
- package/dist/core/ingestion/scope-resolution/utils/definition-id.d.ts +13 -0
- package/dist/core/ingestion/scope-resolution/utils/definition-id.js +19 -0
- package/dist/core/ingestion/scope-resolution/utils/generic-instantiation.d.ts +171 -0
- package/dist/core/ingestion/scope-resolution/utils/generic-instantiation.js +218 -0
- package/dist/core/ingestion/scope-resolution/workspace-index-types.d.ts +34 -0
- package/dist/core/ingestion/scope-resolution/workspace-index-types.js +15 -0
- package/dist/core/ingestion/scope-resolution/workspace-index.d.ts +7 -20
- package/dist/core/ingestion/tree-sitter-queries.d.ts +11 -11
- package/dist/core/ingestion/tree-sitter-queries.js +678 -4
- package/dist/core/ingestion/type-env.js +11 -7
- package/dist/core/ingestion/type-extractors/shared.d.ts +17 -0
- package/dist/core/ingestion/type-extractors/shared.js +16 -0
- package/dist/core/ingestion/type-extractors/types.d.ts +12 -0
- package/dist/core/ingestion/type-extractors/typescript.d.ts +20 -0
- package/dist/core/ingestion/type-extractors/typescript.js +26 -0
- package/dist/core/ingestion/utils/ast-helpers.d.ts +297 -15
- package/dist/core/ingestion/utils/ast-helpers.js +578 -46
- package/dist/core/ingestion/utils/call-analysis.d.ts +27 -22
- package/dist/core/ingestion/utils/call-analysis.js +202 -7
- package/dist/core/ingestion/utils/callable-flow-captures.d.ts +59 -0
- package/dist/core/ingestion/utils/callable-flow-captures.js +51 -1
- package/dist/core/ingestion/utils/callable-labels.d.ts +25 -0
- package/dist/core/ingestion/utils/callable-labels.js +31 -0
- package/dist/core/ingestion/utils/effective-ram.d.ts +40 -0
- package/dist/core/ingestion/utils/effective-ram.js +58 -0
- package/dist/core/ingestion/utils/line-base.d.ts +14 -0
- package/dist/core/ingestion/utils/line-base.js +14 -0
- package/dist/core/ingestion/utils/method-props.d.ts +27 -4
- package/dist/core/ingestion/utils/method-props.js +29 -4
- package/dist/core/ingestion/utils/receiver-chain-captures.d.ts +31 -0
- package/dist/core/ingestion/utils/receiver-chain-captures.js +57 -0
- package/dist/core/ingestion/utils/receiver-chain-codec.d.ts +89 -0
- package/dist/core/ingestion/utils/receiver-chain-codec.js +182 -0
- package/dist/core/ingestion/utils/scope-tree-walk.d.ts +22 -0
- package/dist/core/ingestion/utils/scope-tree-walk.js +33 -0
- package/dist/core/ingestion/utils/template-arguments.d.ts +96 -0
- package/dist/core/ingestion/utils/template-arguments.js +196 -0
- package/dist/core/ingestion/utils/type-parameters.d.ts +49 -0
- package/dist/core/ingestion/utils/type-parameters.js +206 -0
- package/dist/core/ingestion/workers/callable-id.d.ts +80 -0
- package/dist/core/ingestion/workers/callable-id.js +125 -0
- package/dist/core/ingestion/workers/parse-worker.d.ts +14 -1
- package/dist/core/ingestion/workers/parse-worker.js +493 -54
- package/dist/core/ingestion/workers/worker-pool.d.ts +20 -27
- package/dist/core/ingestion/workers/worker-pool.js +91 -3
- package/dist/core/lbug/csv-generator.d.ts +27 -0
- package/dist/core/lbug/csv-generator.js +72 -17
- package/dist/core/lbug/extension-load-error.js +13 -2
- package/dist/core/lbug/extension-loader.d.ts +29 -0
- package/dist/core/lbug/extension-loader.js +31 -6
- package/dist/core/lbug/graph-emit-sink.d.ts +264 -0
- package/dist/core/lbug/graph-emit-sink.js +581 -0
- package/dist/core/lbug/lbug-adapter.d.ts +290 -11
- package/dist/core/lbug/lbug-adapter.js +652 -69
- package/dist/core/lbug/native-check.d.ts +21 -0
- package/dist/core/lbug/native-check.js +248 -32
- package/dist/core/lbug/pdg-emit-sink.d.ts +13 -4
- package/dist/core/lbug/pdg-emit-sink.js +21 -111
- package/dist/core/lbug/pool-adapter.d.ts +9 -0
- package/dist/core/lbug/pool-adapter.js +164 -14
- package/dist/core/lbug/query-batch.d.ts +75 -0
- package/dist/core/lbug/query-batch.js +102 -0
- package/dist/core/lbug/rel-pair-routing.d.ts +160 -2
- package/dist/core/lbug/rel-pair-routing.js +228 -10
- package/dist/core/lbug/schema.d.ts +163 -4
- package/dist/core/lbug/schema.js +404 -159
- package/dist/core/lbug/sync-csv-writer.d.ts +47 -0
- package/dist/core/lbug/sync-csv-writer.js +108 -0
- package/dist/core/run-analyze.d.ts +147 -0
- package/dist/core/run-analyze.js +1215 -179
- package/dist/core/search/bm25-index.d.ts +11 -0
- package/dist/core/search/bm25-index.js +60 -26
- package/dist/core/search/fts-indexes.d.ts +150 -9
- package/dist/core/search/fts-indexes.js +241 -23
- package/dist/core/wiki/graph-queries.js +145 -112
- package/dist/core/wiki/llm-client.d.ts +29 -3
- package/dist/core/wiki/llm-client.js +47 -12
- package/dist/core/wiki/prompts.d.ts +19 -0
- package/dist/core/wiki/prompts.js +20 -1
- package/dist/lib/utils.d.ts +113 -0
- package/dist/lib/utils.js +185 -0
- package/dist/mcp/local/aop-metadata.d.ts +77 -0
- package/dist/mcp/local/aop-metadata.js +227 -0
- package/dist/mcp/local/bean-metadata.d.ts +2 -1
- package/dist/mcp/local/bean-metadata.js +22 -1
- package/dist/mcp/local/convex-metadata.d.ts +8 -0
- package/dist/mcp/local/convex-metadata.js +45 -0
- package/dist/mcp/local/local-backend.d.ts +174 -11
- package/dist/mcp/local/local-backend.js +1678 -331
- package/dist/mcp/local/path-predicate.d.ts +19 -0
- package/dist/mcp/local/path-predicate.js +21 -0
- package/dist/mcp/local/pdg-impact.d.ts +132 -10
- package/dist/mcp/local/pdg-impact.js +391 -98
- package/dist/mcp/repository-policy.d.ts +1 -0
- package/dist/mcp/repository-policy.js +5 -0
- package/dist/mcp/resources.js +26 -4
- package/dist/mcp/server.js +23 -13
- package/dist/mcp/tools.d.ts +8 -0
- package/dist/mcp/tools.js +76 -23
- package/dist/server/analyze-job.d.ts +37 -2
- package/dist/server/analyze-job.js +13 -2
- package/dist/server/analyze-launch.d.ts +1 -1
- package/dist/server/analyze-launch.js +79 -10
- package/dist/server/analyze-worker-core.d.ts +1 -1
- package/dist/server/analyze-worker-core.js +10 -1
- package/dist/server/analyze-worker-ipc.d.ts +1 -1
- package/dist/server/analyze-worker-ipc.js +4 -0
- package/dist/server/analyze-worker-protocol.d.ts +59 -0
- package/dist/server/analyze-worker-protocol.js +1 -0
- package/dist/server/analyze-worker.d.ts +1 -17
- package/dist/server/api.d.ts +2 -11
- package/dist/server/api.js +164 -163
- package/dist/server/embed-run-outcome.d.ts +89 -0
- package/dist/server/embed-run-outcome.js +88 -0
- package/dist/server/git-clone.js +6 -2
- package/dist/server/middleware.d.ts +116 -9
- package/dist/server/middleware.js +291 -22
- package/dist/server/sse-progress.d.ts +41 -0
- package/dist/server/sse-progress.js +125 -0
- package/dist/storage/branch-index.d.ts +11 -6
- package/dist/storage/branch-index.js +15 -7
- package/dist/storage/file-hash.js +2 -2
- package/dist/storage/fs-atomic.d.ts +25 -0
- package/dist/storage/fs-atomic.js +42 -0
- package/dist/storage/git.d.ts +131 -0
- package/dist/storage/git.js +236 -2
- package/dist/storage/index-lock.d.ts +102 -0
- package/dist/storage/index-lock.js +660 -0
- package/dist/storage/parse-cache.js +588 -6
- package/dist/storage/parsedfile-store.js +76 -6
- package/dist/storage/repo-manager.d.ts +54 -441
- package/dist/storage/repo-manager.js +312 -221
- package/dist/storage/repo-meta.d.ts +530 -0
- package/dist/storage/repo-meta.js +100 -0
- package/dist/types/pipeline.d.ts +37 -0
- package/hooks/antigravity/gitnexus-antigravity-hook.cjs +1 -1
- package/hooks/claude/gitnexus-hook.cjs +1 -1
- package/hooks/claude/resolve-analyze-cmd.cjs +80 -13
- package/package.json +11 -2
- package/scripts/cross-platform-shard.ts +153 -0
- package/scripts/cross-platform-tests.ts +122 -0
- package/scripts/run-cross-platform.ts +16 -5
- package/skills/gitnexus-cli.md +3 -3
- package/skills/gitnexus-debugging.md +37 -7
- package/skills/gitnexus-exploring.md +26 -4
- package/skills/gitnexus-impact-analysis.md +71 -10
- package/skills/gitnexus-plan/README.md +11 -6
- package/skills/gitnexus-plan/references/evidence-provenance.md +49 -12
- package/skills/gitnexus-plan/scripts/evidence-provenance.mjs +654 -372
- package/skills/gitnexus-refactoring.md +48 -5
- package/skills/gitnexus-review/SKILL.md +12 -6
- package/skills/gitnexus-review/ci-personas/ci-adversarial-lens.md +1 -1
- package/skills/gitnexus-review/ci-personas/ci-blast-radius-lens.md +1 -1
- package/skills/gitnexus-review/ci-personas/ci-correctness-lens.md +1 -1
- package/skills/gitnexus-review/ci-personas/ci-coverage-lens.md +1 -1
- package/skills/gitnexus-review/ci-personas/ci-critic-lens.md +1 -1
- package/skills/gitnexus-review/ci-personas/ci-security-lens.md +1 -1
- package/skills/gitnexus-taint-analysis.md +13 -7
- package/skills/gitnexus-work/SKILL.md +4 -1
- package/skills/gitnexus-work/references/evidence-provenance.md +49 -12
- package/skills/gitnexus-work/scripts/evidence-provenance.mjs +654 -372
- package/vendor/leiden/utils.cjs +28 -1
- package/web/assets/ProcessFlowModal-Badh2Pbg.js +24 -0
- package/web/assets/{__vite-browser-external-bMKyYQkO.js → __vite-browser-external-COxE8F0G.js} +1 -1
- package/web/assets/abnfDiagram-QNN2D4NM-Cq2djWWe.js +1 -0
- package/web/assets/agent-Dr4l5EOp.js +662 -0
- package/web/assets/architecture-TIHT7OUA-V6N4J3SY-fTePvLoe.js +1 -0
- package/web/assets/architectureDiagram-OT7VKSJ7-mKEXxkeF.js +36 -0
- package/web/assets/{blockDiagram-7IZFK4PR-DBefcjof.js → blockDiagram-54WLDVWM-Dg_hrRWE.js} +4 -4
- package/web/assets/{c4Diagram-Y2BXMSZH-EjWnjEJl.js → c4Diagram-X2LASM7V-CnhoT4aV.js} +2 -2
- package/web/assets/chunk-224SPVON-B8gxtXpy.js +1 -0
- package/web/assets/chunk-2AEHWXPW-CV4r6-1I.js +127 -0
- package/web/assets/chunk-2SREHG4O-Dip42xOq.js +1 -0
- package/web/assets/chunk-4RFN2BYJ-DHHWuC-n.js +1 -0
- package/web/assets/chunk-66DQ2XMT-CM0xjFAN.js +1 -0
- package/web/assets/chunk-6BELYETK-ChsYtfHW.js +1 -0
- package/web/assets/{chunk-LII3EMHJ-BL6lKJ_P.js → chunk-6L755F7B-CMhLBxi2.js} +1 -1
- package/web/assets/{chunk-QA3QBVWF-DVXPOIxe.js → chunk-7CWYLC5S-DRgGkkpF.js} +1 -1
- package/web/assets/{chunk-ZXARS5L4-C3v-4Fsw.js → chunk-A7VWPJGB-B4O3oQdQ.js} +1 -1
- package/web/assets/chunk-BI6VK774-D0oaWk8V.js +1 -0
- package/web/assets/chunk-D6VWDJW2-BxcBdZ9c.js +2 -0
- package/web/assets/chunk-DMV4VAQV-Bn6WXDSX.js +4 -0
- package/web/assets/chunk-E5QJAATJ-dh-5CtIV.js +2 -0
- package/web/assets/chunk-EQFTRU2I-1ix7TzW9.js +2 -0
- package/web/assets/chunk-FWYVLQTC-BgDItRzJ.js +1 -0
- package/web/assets/chunk-HNC4WDU7-DoU3KnA7.js +1 -0
- package/web/assets/chunk-L5GCOVLC-CE2w8Nm_.js +161 -0
- package/web/assets/chunk-LAHSG3N2-Bz4hcn0N.js +321 -0
- package/web/assets/chunk-LORZLZWG-B57uGw2N.js +88 -0
- package/web/assets/chunk-NLANEA3F-XpH_NPA5.js +62 -0
- package/web/assets/chunk-NV3KIAZN-5yvcpMiu.js +1 -0
- package/web/assets/chunk-OIYT25JQ-CQ6KOZGX.js +1 -0
- package/web/assets/chunk-PE7DX7ZZ-CCvRVj43.js +10 -0
- package/web/assets/chunk-Q67WD55A-BWCH2SVz.js +156 -0
- package/web/assets/chunk-RRFMTAIC-CMN0wcYA.js +1 -0
- package/web/assets/{chunk-RLI5ZMPA-CkXZ0y0U.js → chunk-SATU7PGQ-B1zhgOvc.js} +1 -1
- package/web/assets/chunk-STOV2HOB-GnExfzIX.js +1 -0
- package/web/assets/{chunk-INKRHTLW-Ckl3_KkO.js → chunk-SZD42YQK-ijyKKVr1.js} +21 -21
- package/web/assets/{chunk-LCXTWHL2-C162wE5z.js → chunk-TFPGFQPA-Dj6a-0pC.js} +3 -3
- package/web/assets/chunk-TGVD4F4B-BMc31Gj2.js +2 -0
- package/web/assets/chunk-TZUXEDM2-B7p9AcTw.js +1 -0
- package/web/assets/chunk-UAT7B5JY-DW-A_fpI.js +1 -0
- package/web/assets/{chunk-6764PJDD-C7xxk063.js → chunk-VE5CLXGZ-C1vB7wpY.js} +1 -1
- package/web/assets/{chunk-RG4AUYOV-ZNgyLFq6.js → chunk-VJFVEZTB-CX66F2ep.js} +3 -3
- package/web/assets/chunk-VY5UBI4V-yxPQAWxw.js +1 -0
- package/web/assets/chunk-WJBAP47W-BckNkuEN.js +1 -0
- package/web/assets/chunk-XNMVGMAZ-Cg_LnPtj.js +1 -0
- package/web/assets/classDiagram-VPOSVPXH-BjOiXA_C.js +1 -0
- package/web/assets/classDiagram-v2-5VFNUXQA-BjOiXA_C.js +1 -0
- package/web/assets/{cose-bilkent-UX7MHV2Q-BmnZ7Mvj.js → cose-bilkent-RZA4XIPR-BHpK4Crp.js} +1 -1
- package/web/assets/cynefin-VYW2F7L2-2VAHYKR6-DAsF6GZv.js +1 -0
- package/web/assets/cynefinDiagram-TR7LZUCG-C3Iar9lZ.js +62 -0
- package/web/assets/dagre-K64A6Z3X-CUwi79mA.js +4 -0
- package/web/assets/diagram-2TLGJV2N-C2F5Nfym.js +30 -0
- package/web/assets/diagram-JCD7PQ7C-DC5-9FRr.js +24 -0
- package/web/assets/{diagram-HNR7UZ2L-DVRltWbL.js → diagram-KFBZAVDW-Dfmf_4ti.js} +3 -3
- package/web/assets/diagram-L7DVE3PN-GIRyVUtt.js +41 -0
- package/web/assets/diagram-YP3FGXHI-CyNFYtkd.js +24 -0
- package/web/assets/ebnfDiagram-DRHRQJWO-D8_CI4ZF.js +1 -0
- package/web/assets/erDiagram-SZLJLQMB-CohQjznC.js +85 -0
- package/web/assets/error-D9MtuG9s.js +1 -0
- package/web/assets/eventmodeling-45OFAUF4-AOUJWSLX-BvTc6iQi.js +1 -0
- package/web/assets/flowDiagram-BWE6NHOH-B6RnEvD9.js +1 -0
- package/web/assets/ganttDiagram-2QTCJSNI-Cks_mEcF.js +292 -0
- package/web/assets/gitGraph-TEB2WS4Q-U5VWYIBC-Dy7CCSZ5.js +1 -0
- package/web/assets/gitGraphDiagram-VVZAVV5G-CG41cIVc.js +106 -0
- package/web/assets/{index-D7mTFcvQ.js → index-2zdvEdzg.js} +51 -51
- package/web/assets/index-CJDpyH-n.css +2 -0
- package/web/assets/info-DKCQHKI2-DX6KST54-BLJg1ikX.js +1 -0
- package/web/assets/infoDiagram-FY4PZKRE-BJ3vPVwW.js +2 -0
- package/web/assets/{ishikawaDiagram-BNXS4ZKH-XpjJRU9h.js → ishikawaDiagram-4JDSWWDM-DmqWtjkl.js} +2 -2
- package/web/assets/{journeyDiagram-M6C3CM3L-C6wjooas.js → journeyDiagram-QUS3FAKT-XAzVzrQW.js} +3 -3
- package/web/assets/{kanban-definition-75IXJCU3-5_UVY79g.js → kanban-definition-D4L7SQKK-YurRnmYn.js} +6 -6
- package/web/assets/katex-C5OPUE3Q-Bnbavtmu.js +257 -0
- package/web/assets/{mindmap-definition-2TDM6QVE-8xDLzk2e.js → mindmap-definition-66QP5TD6-ChrWWnil.js} +5 -5
- package/web/assets/node.browser-U-KyT5AW.js +1 -0
- package/web/assets/packet-7NZHBO7P-5WG45QPS-KUxcuvaA.js +1 -0
- package/web/assets/pegDiagram-YKIO5C6U-QGeQLEq2.js +1 -0
- package/web/assets/pie-RZYD4A2V-2OCZ2VTD-DPs08kJY.js +1 -0
- package/web/assets/pieDiagram-YPY3TKG5-BuT3MYzm.js +39 -0
- package/web/assets/{quadrantDiagram-VICAPDV7-DR54jOeR.js → quadrantDiagram-VO5QLCXA-B7098wSc.js} +3 -3
- package/web/assets/radar-I7S5WNFK-EPLSA35B-w5F0K3a7.js +1 -0
- package/web/assets/railroad-3IZDKUUU-PWFQV6Y6-Bu668yqY.js +1 -0
- package/web/assets/railroad-abnf-AHOZXSZD-JYYJX3BS-B6ghpETS.js +1 -0
- package/web/assets/railroad-ebnf-EBAXGLYW-RBZ4ONAP-D-XmHh3M.js +1 -0
- package/web/assets/railroad-peg-LSFZ7HO6-KHNPXGPG-mhkrhzEn.js +1 -0
- package/web/assets/railroadDiagram-M77LTMSB-AXu4vxk_.js +1 -0
- package/web/assets/{requirementDiagram-JXO7QTGE-PEkg7sKC.js → requirementDiagram-RASO5HTO-B-l8InpK.js} +4 -4
- package/web/assets/{sankeyDiagram-URQDO5SZ-DDWEtjcs.js → sankeyDiagram-F32LOJ6L-Kd7zjJgX.js} +3 -3
- package/web/assets/{sequenceDiagram-VS2MUI6T-Bv-uwANx.js → sequenceDiagram-URATNSBD-BlcdY9DS.js} +7 -7
- package/web/assets/sizeCapture-5GORAGP4-BEqQzsxs.js +1 -0
- package/web/assets/src-C5sx_gMp.js +1 -0
- package/web/assets/stateDiagram-DODFXNG5-DTdHc-fF.js +1 -0
- package/web/assets/stateDiagram-v2-JNMM5JRA-DioNLDDo.js +1 -0
- package/web/assets/swimlanes-OSWOYLSK-CA0ofdwY.js +2 -0
- package/web/assets/swimlanesDiagram-RHGX2RDE-PkwUdckC.js +8 -0
- package/web/assets/{timeline-definition-O6YCAMPW-Qmsuo7qS.js → timeline-definition-WJXWRH4I-DUfp1R3E.js} +3 -3
- package/web/assets/treeView-QDETBFTQ-EHYTSQNO-C5lpBgPm.js +1 -0
- package/web/assets/treemap-6X3UGDF4-CCWCF7EK-BB0ZyO-B.js +1 -0
- package/web/assets/vennDiagram-K3VCMQLI-Bj-FN-XS.js +34 -0
- package/web/assets/wardley-OPB4EBWU-6OWERDVT-CEA3Nq0j.js +1 -0
- package/web/assets/wardleyDiagram-XK6FUAWV-CVV0dHFr.js +78 -0
- package/web/assets/xychartDiagram-5VRUVLCW-CK_rbSWE.js +7 -0
- package/web/index.html +16 -15
- package/dist/core/ingestion/languages/python/index-stats.d.ts +0 -18
- package/dist/core/ingestion/languages/python/index-stats.js +0 -25
- package/web/assets/ProcessFlowModal-CwkpVkv-.js +0 -22
- package/web/assets/agent-Ds-lkZjX.js +0 -626
- package/web/assets/architecture-7EHR7CIX-6QZW5X65-BVWFvYz2.js +0 -1
- package/web/assets/architectureDiagram-UL44E2DR-CmG3uPWf.js +0 -36
- package/web/assets/chunk-2T2R6R2M-Bb6Sy3_j.js +0 -4
- package/web/assets/chunk-2UTLFMKG-CXlhF3Pt.js +0 -1
- package/web/assets/chunk-3SSMPTDK-rPsRM1x0.js +0 -321
- package/web/assets/chunk-4R4BOZG6-Be_F0JoX.js +0 -159
- package/web/assets/chunk-67TQ5CYL-CA7OhIEf.js +0 -124
- package/web/assets/chunk-7J6CGLKN-BlKwgXKs.js +0 -10
- package/web/assets/chunk-C62D2QBJ-3gdL8EKc.js +0 -1
- package/web/assets/chunk-CEXFNPSA-CjwtMDkc.js +0 -1
- package/web/assets/chunk-J5EP6P6S-L19oz55R.js +0 -1
- package/web/assets/chunk-KGFNY3KK-BZeP-55u.js +0 -62
- package/web/assets/chunk-KGYTTC2M-zm6n242I.js +0 -1
- package/web/assets/chunk-KNLZD3CH-BGlP6X9R.js +0 -1
- package/web/assets/chunk-LRIF4GLE-n59lhprL.js +0 -1
- package/web/assets/chunk-RERM46MO-B5dAdWpP.js +0 -1
- package/web/assets/chunk-RKZBBQEN-MyIQbGgD.js +0 -1
- package/web/assets/chunk-T2UQINTJ-BEyXhZWe.js +0 -1
- package/web/assets/chunk-UP6H54XL-BG-n7qDp.js +0 -1
- package/web/assets/chunk-UXSXWOXI-CW1_r5cS.js +0 -1
- package/web/assets/chunk-UY5QBCOK-ByqTVLvh.js +0 -1
- package/web/assets/chunk-VU6ZFW4Y-BLeasdkU.js +0 -2
- package/web/assets/classDiagram-KGZ6W3CR-olpO3fMe.js +0 -1
- package/web/assets/classDiagram-v2-72OJOZXJ-olpO3fMe.js +0 -1
- package/web/assets/dagre-ND4H6XIP-CY4iIF7v.js +0 -4
- package/web/assets/diagram-3NCE3AQN-CO6QpzEE.js +0 -43
- package/web/assets/diagram-GF46GFSD-B2atbzmU.js +0 -24
- package/web/assets/diagram-QXG6HAR7-DR6AHD2h.js +0 -24
- package/web/assets/diagram-WEQXMOUZ-DkpoMwTL.js +0 -10
- package/web/assets/erDiagram-L5TCEMPS-n8g_90bc.js +0 -85
- package/web/assets/eventmodeling-FCH6USID-MREXMVOE-CgFBM7e-.js +0 -1
- package/web/assets/flowDiagram-H6V6AXG4-SGMDiCkB.js +0 -162
- package/web/assets/ganttDiagram-JCBTUEKG-Cb3UBqRS.js +0 -292
- package/web/assets/gitGraph-WXDBUCRP-R675I2BI-DCJv7SII.js +0 -1
- package/web/assets/gitGraphDiagram-S2ZK5IYY-Bs9CR7tq.js +0 -106
- package/web/assets/index-CX_fADmQ.css +0 -2
- package/web/assets/info-J43DQDTF-KCYPFFUO-BfNy-9Nd.js +0 -1
- package/web/assets/infoDiagram-3YFTVSEB-T368on4D.js +0 -2
- package/web/assets/katex-K3KEBU37-qRQBy-EZ.js +0 -261
- package/web/assets/node-Ct_zna8U.js +0 -8
- package/web/assets/packet-YPE3B663-LP52Z2RK-D4qkeG9k.js +0 -1
- package/web/assets/pie-LRSECV5Y-TCRJHUBD-B_yMKyQa.js +0 -1
- package/web/assets/pieDiagram-CU6KROY3-Bv4LpAbr.js +0 -30
- package/web/assets/radar-GUYGQ44K-RDLRG3WG-DeD6yN_0.js +0 -1
- package/web/assets/sdk-CzHHH8tD.js +0 -37
- package/web/assets/src-Cv1eWg0o.js +0 -1
- package/web/assets/stateDiagram-7D4R322I-DVNjmkEq.js +0 -1
- package/web/assets/stateDiagram-v2-36443NZ5-CyN4Fh7_.js +0 -1
- package/web/assets/treeView-BLDUP644-QA4HXRO3-CDuSYnd4.js +0 -1
- package/web/assets/treemap-LRROVOQU-LLAWBHMP-imazucyJ.js +0 -1
- package/web/assets/vennDiagram-MWXL3ELB-BD1iK1SX.js +0 -34
- package/web/assets/wardley-L42UT6IY-5TKZOOLJ-DqrT9tB8.js +0 -1
- package/web/assets/wardleyDiagram-CUQ6CDDI-D6TzLVob.js +0 -78
- package/web/assets/xychartDiagram-N2JHSOCM-CoZ_Tits.js +0 -7
- /package/web/assets/{chunk-7W6UQGC5-pyKGssV3.js → chunk-LIEV3EAG-pyKGssV3.js} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type ContractType = 'http' | 'grpc' | 'thrift' | 'topic' | 'lib' | 'custom' | 'include';
|
|
2
|
-
export type MatchType = 'exact' | 'manifest' | 'wildcard'
|
|
2
|
+
export type MatchType = 'exact' | 'manifest' | 'wildcard';
|
|
3
3
|
export type ContractRole = 'provider' | 'consumer';
|
|
4
4
|
export interface GroupConfig {
|
|
5
5
|
version: number;
|
|
@@ -23,15 +23,10 @@ export interface DetectConfig {
|
|
|
23
23
|
grpc: boolean;
|
|
24
24
|
thrift: boolean;
|
|
25
25
|
topics: boolean;
|
|
26
|
-
shared_libs: boolean;
|
|
27
|
-
embedding_fallback: boolean;
|
|
28
26
|
includes: boolean;
|
|
29
27
|
workspace_deps: boolean;
|
|
30
28
|
}
|
|
31
29
|
export interface MatchingConfig {
|
|
32
|
-
bm25_threshold: number;
|
|
33
|
-
embedding_threshold: number;
|
|
34
|
-
max_candidates_per_step: number;
|
|
35
30
|
/**
|
|
36
31
|
* HTTP paths to exclude from cross-link matching. Contracts at these paths
|
|
37
32
|
* are still extracted and visible in the registry, but they don't produce
|
|
@@ -90,7 +85,34 @@ export interface ContractRegistry {
|
|
|
90
85
|
version: number;
|
|
91
86
|
generatedAt: string;
|
|
92
87
|
repoSnapshots: Record<string, RepoSnapshot>;
|
|
88
|
+
/** Configured repos with no entry in the registry. */
|
|
93
89
|
missingRepos: string[];
|
|
90
|
+
/**
|
|
91
|
+
* Configured repos that ARE registered but that this sync could not extract
|
|
92
|
+
* from — the index would not open (version skew, lock, corruption), or an
|
|
93
|
+
* extractor threw partway through. The two are one bucket because the
|
|
94
|
+
* consequence is one thing: NONE of that repo's contracts are in this
|
|
95
|
+
* registry. Distinct from `missingRepos`, which is "no entry in the
|
|
96
|
+
* registry at all" and needs a different answer from the operator.
|
|
97
|
+
*
|
|
98
|
+
* Optional so a registry written before this field existed still parses —
|
|
99
|
+
* absent means "not recorded", not "none".
|
|
100
|
+
*/
|
|
101
|
+
unreadableRepos?: string[];
|
|
102
|
+
/**
|
|
103
|
+
* Matching stages this sync was ASKED to skip, so a later reader can tell a
|
|
104
|
+
* short cross-link list from a complete one. `--exact-only` / `exactOnly`
|
|
105
|
+
* suppresses the wildcard stage, and the registry it writes is otherwise
|
|
106
|
+
* indistinguishable from one where that stage ran and matched nothing.
|
|
107
|
+
*
|
|
108
|
+
* Same tri-state as `unreadableRepos` and for the same reason: absent means
|
|
109
|
+
* "not recorded" (written before this field existed), `[]` means "measured,
|
|
110
|
+
* nothing was suppressed", and a populated list names the stages. Distinct
|
|
111
|
+
* from `truncated` / `truncationReason`, which report limits this run hit by
|
|
112
|
+
* accident — a suppressed stage is a deliberate request, and its remedy is
|
|
113
|
+
* "re-sync without exactOnly", not "fix the unreadable repo".
|
|
114
|
+
*/
|
|
115
|
+
suppressedMatchStages?: MatchType[];
|
|
94
116
|
contracts: StoredContract[];
|
|
95
117
|
crossLinks: CrossLink[];
|
|
96
118
|
}
|
|
@@ -104,8 +126,30 @@ export interface RepoHandle {
|
|
|
104
126
|
repoPath: string;
|
|
105
127
|
storagePath: string;
|
|
106
128
|
}
|
|
107
|
-
/**
|
|
108
|
-
|
|
129
|
+
/**
|
|
130
|
+
* Why local impact or fan-out stopped early (e.g. wall-clock budget exhausted).
|
|
131
|
+
*
|
|
132
|
+
* `'timeout'` and `'partial'` are runtime limits — the same query can succeed on
|
|
133
|
+
* a retry. `'incomplete-sync'` is structural: the bridge itself was built from a
|
|
134
|
+
* sync that could not read every configured repo, so those repos' contracts are
|
|
135
|
+
* absent from every query against it until `gitnexus group sync` succeeds.
|
|
136
|
+
* `'suppressed-stage'` is structural too but has its own remedy: the sync was
|
|
137
|
+
* ASKED to skip a matching stage (`--exact-only`), so cross-links that stage
|
|
138
|
+
* would have found are absent by request. Retrying returns the same floor, and
|
|
139
|
+
* so does re-running the sync — the fix is to re-run it WITHOUT the flag. Kept a
|
|
140
|
+
* separate member rather than folded into `'incomplete-sync'` precisely because
|
|
141
|
+
* that remedy differs; telling an agent to repair a repo it read fine is the
|
|
142
|
+
* failure this distinction exists to prevent.
|
|
143
|
+
*
|
|
144
|
+
* A runtime array rather than a bare type union: every value here has to be
|
|
145
|
+
* explained on the agent-facing surface that returns it, and only an enumerable
|
|
146
|
+
* list lets a guard test assert that. A test that hand-lists the members passes
|
|
147
|
+
* forever once a fourth is added — which is the exact drift the guard exists to
|
|
148
|
+
* catch, so the list an agent is promised and the list the code can emit have
|
|
149
|
+
* to come from the same place.
|
|
150
|
+
*/
|
|
151
|
+
export declare const GROUP_IMPACT_TRUNCATION_REASONS: readonly ["timeout", "partial", "incomplete-sync", "suppressed-stage"];
|
|
152
|
+
export type GroupImpactTruncationReason = (typeof GROUP_IMPACT_TRUNCATION_REASONS)[number];
|
|
109
153
|
export interface GroupImpactResult {
|
|
110
154
|
local: unknown;
|
|
111
155
|
group: string;
|
|
@@ -120,6 +164,18 @@ export interface GroupImpactResult {
|
|
|
120
164
|
cross_repo_hits: number;
|
|
121
165
|
};
|
|
122
166
|
risk: string;
|
|
167
|
+
/**
|
|
168
|
+
* `'lower-bound'` when the fan-out was cut short, so `risk` is a FLOOR, not a
|
|
169
|
+
* verdict. Same vocabulary as single-repo `impact`'s `epistemic` field.
|
|
170
|
+
*
|
|
171
|
+
* `mergeRisk` is monotone increasing in the number of traversed crossings, so
|
|
172
|
+
* dropping a crossing can only move the reported risk DOWN — a fully
|
|
173
|
+
* truncated fan-out returns bare `localRisk`, making a symbol whose blast
|
|
174
|
+
* radius crosses a repo boundary indistinguishable from one with no
|
|
175
|
+
* cross-repo consumers. Absent this marker a truncated run emits a
|
|
176
|
+
* confident-looking `risk` byte-identical to a complete one.
|
|
177
|
+
*/
|
|
178
|
+
riskEpistemic?: 'lower-bound';
|
|
123
179
|
/**
|
|
124
180
|
* Milliseconds budget applied to the **Phase 1 local impact** leg (`safeLocalImpact`).
|
|
125
181
|
* If the walk hits this wall first, expect `truncationReason: 'timeout'` and a partial `local` payload.
|
|
@@ -160,6 +216,12 @@ export interface CrossRepoImpact {
|
|
|
160
216
|
};
|
|
161
217
|
by_depth: Record<string, unknown[]>;
|
|
162
218
|
affected_processes: string[];
|
|
219
|
+
/**
|
|
220
|
+
* Present when the bridge proves a repository boundary but the far endpoint
|
|
221
|
+
* has no graph symbol, so local fan-out cannot be attempted. Omitted for
|
|
222
|
+
* completed fan-out to preserve the existing serialized result shape.
|
|
223
|
+
*/
|
|
224
|
+
fanout_status?: 'not_attempted';
|
|
163
225
|
}
|
|
164
226
|
export interface OutOfScopeLink {
|
|
165
227
|
from: string;
|
|
@@ -184,5 +246,118 @@ export interface BridgeHandle {
|
|
|
184
246
|
export interface BridgeMeta {
|
|
185
247
|
version: number;
|
|
186
248
|
generatedAt: string;
|
|
249
|
+
/**
|
|
250
|
+
* Size and mtime of the `bridge.lbug` this metadata was written for, so a
|
|
251
|
+
* reader can tell whether the two still belong together.
|
|
252
|
+
*
|
|
253
|
+
* `writeBridge` replaces the database and writes this file as two operations;
|
|
254
|
+
* a sync that stops between them leaves the PREVIOUS sync's metadata beside a
|
|
255
|
+
* new database, and `runGroupImpact` reads completeness from that metadata.
|
|
256
|
+
* Stamping the pair is what lets `bridgeMetaMatchesFile` reject the mismatch
|
|
257
|
+
* without anything having to be deleted — deleting the old metadata up front
|
|
258
|
+
* would lose it permanently on a swap that fails with the old database still
|
|
259
|
+
* in place, which is a normal Windows outcome when a read-only handle is held.
|
|
260
|
+
*
|
|
261
|
+
* Optional: metadata written before this existed carries no stamp. Such a
|
|
262
|
+
* file is not waved through — `bridgeMetaMatchesFile` falls back to comparing
|
|
263
|
+
* the two files' modification times, since a successful write orders the
|
|
264
|
+
* database rename before the metadata write and a database NEWER than the
|
|
265
|
+
* metadata beside it therefore cannot be the one it describes.
|
|
266
|
+
*
|
|
267
|
+
* That fallback proves WRITE ORDER, not provenance, and is wrong in both
|
|
268
|
+
* directions — a non-monotonic clock can make a mis-paired set read as
|
|
269
|
+
* ordered, and any copy or restore that rewrites the database's times after
|
|
270
|
+
* the metadata's demotes an intact legacy pair to a lower bound until the
|
|
271
|
+
* next sync re-stamps it. A stamped pair never reaches that fallback, which
|
|
272
|
+
* is the reason to prefer stamping over widening the heuristic. Both
|
|
273
|
+
* directions are spelled out at `bridgeMetaMatchesFile`.
|
|
274
|
+
*/
|
|
275
|
+
bridgeSize?: number;
|
|
276
|
+
bridgeMtimeMs?: number;
|
|
277
|
+
/**
|
|
278
|
+
* Reader-side only: true when `meta.json` parsed but one of its repo lists
|
|
279
|
+
* held a value that was not a list of repo paths.
|
|
280
|
+
*
|
|
281
|
+
* NEVER PERSISTED. `readBridgeMeta` sets it to describe what it found in the
|
|
282
|
+
* file; `writeBridgeMeta`'s only caller builds a fresh literal, so it cannot
|
|
283
|
+
* round-trip back to disk. It lives on this interface rather than on a
|
|
284
|
+
* reader-only subtype so that `readBridgeMeta` keeps the exact signature
|
|
285
|
+
* every caller already compiles against.
|
|
286
|
+
*
|
|
287
|
+
* The unusable value is dropped rather than normalized, so `missingRepos: []`
|
|
288
|
+
* on such a result is inert filler — this flag, not the empty list, is what
|
|
289
|
+
* says the bridge's provenance is unknown.
|
|
290
|
+
*/
|
|
291
|
+
repoListsUnreadable?: boolean;
|
|
292
|
+
/**
|
|
293
|
+
* Reader-side only: did this metadata pair with the `bridge.lbug` beside it,
|
|
294
|
+
* measured BEFORE anything opened that database?
|
|
295
|
+
*
|
|
296
|
+
* NEVER PERSISTED, for the same reason as `repoListsUnreadable`.
|
|
297
|
+
*
|
|
298
|
+
* The measurement has to happen before the open, and the answer has to be
|
|
299
|
+
* carried rather than recomputed. `runGroupImpact` and `runGroupTrace` open
|
|
300
|
+
* the bridge and only then ask about provenance, so a platform where a
|
|
301
|
+
* read-only open advances the database's mtime would fail every unstamped
|
|
302
|
+
* pair the moment it was read — turning back-compat for pre-stamp bridges
|
|
303
|
+
* into a repo-wide "everything is a lower bound". Whether any given
|
|
304
|
+
* LadybugDB build and OS does that is not something a reader should have to
|
|
305
|
+
* know, and it cannot be observed on Windows, where the in-process
|
|
306
|
+
* write→read reopen this would need is a documented limitation. Ordering the
|
|
307
|
+
* check ahead of the open makes the question moot on every platform instead
|
|
308
|
+
* of true on the ones that happen to be testable.
|
|
309
|
+
*/
|
|
310
|
+
pairedWithDatabase?: boolean;
|
|
311
|
+
/**
|
|
312
|
+
* PERSISTED, unlike the two fields above: the writer of this metadata could
|
|
313
|
+
* not establish that it describes the `bridge.lbug` beside it, and no reader
|
|
314
|
+
* may conclude otherwise from the files alone.
|
|
315
|
+
*
|
|
316
|
+
* Written by `refreshPreservedBridgeMeta` — the preserve path in `syncGroup`,
|
|
317
|
+
* which refreshes the diagnostic lists of a bridge it deliberately does NOT
|
|
318
|
+
* rebuild. That refresh rewrites `meta.json` ATOMICALLY, so this file's mtime
|
|
319
|
+
* becomes now while the database's stays old; and "metadata newer than the
|
|
320
|
+
* database beside it" is exactly the write order that
|
|
321
|
+
* `unstampedMetaPairsByWriteOrder` accepts. A refresh that simply carried the
|
|
322
|
+
* old fields forward would therefore convert a pair that check had been
|
|
323
|
+
* REJECTING into one it waves through — laundering unknown provenance into
|
|
324
|
+
* verified provenance, which is the fail-open this whole channel exists to
|
|
325
|
+
* close.
|
|
326
|
+
*
|
|
327
|
+
* "Just don't write a stamp" is not a substitute, and is worse: an unstamped
|
|
328
|
+
* metadata file is judged on the two file times, and the refresh has already
|
|
329
|
+
* moved them into the accepting order. The verdict has to be recorded IN the
|
|
330
|
+
* file, because the write that records it is itself what destroys the
|
|
331
|
+
* evidence a reader would otherwise use.
|
|
332
|
+
*
|
|
333
|
+
* `bridgeMetaMatchesFile` rejects on this ahead of both the stamp and the
|
|
334
|
+
* write-order heuristic, so `ensureBridgeReady` answers
|
|
335
|
+
* `pairedWithDatabase: false` and `bridgeProvenanceUnknown` reports the
|
|
336
|
+
* cross-repo answer as a lower bound. That is the ONE enforcement point; do
|
|
337
|
+
* not add a second reader for this field.
|
|
338
|
+
*
|
|
339
|
+
* Self-clearing: a successful `writeBridge` builds fresh metadata from a
|
|
340
|
+
* literal and never sets it, so the next good sync retires the marker without
|
|
341
|
+
* anything having to delete it.
|
|
342
|
+
*/
|
|
343
|
+
provenanceUnknown?: boolean;
|
|
187
344
|
missingRepos: string[];
|
|
345
|
+
/**
|
|
346
|
+
* Configured repos the sync that produced this bridge could not extract from
|
|
347
|
+
* (see `ContractRegistry.unreadableRepos`). Their contracts and every
|
|
348
|
+
* cross-link touching them are absent from `bridge.lbug`, so a cross-repo
|
|
349
|
+
* impact query against this bridge is a lower bound, not a verdict —
|
|
350
|
+
* `runGroupImpact` folds a non-empty value into its truncation fields for
|
|
351
|
+
* exactly that reason.
|
|
352
|
+
* Optional: a bridge written before this field existed does not record it.
|
|
353
|
+
*/
|
|
354
|
+
unreadableRepos?: string[];
|
|
355
|
+
/**
|
|
356
|
+
* Matching stages the sync that built this bridge was asked to skip.
|
|
357
|
+
* PERSISTED, like `unreadableRepos` and unlike `repoListsUnreadable` — a
|
|
358
|
+
* later `group_impact` or `trace` reads this bridge with no access to the run
|
|
359
|
+
* that produced it, and a narrowed graph is otherwise indistinguishable from
|
|
360
|
+
* a complete one. Same tri-state: absent is "not recorded".
|
|
361
|
+
*/
|
|
362
|
+
suppressedMatchStages?: MatchType[];
|
|
188
363
|
}
|
package/dist/core/group/types.js
CHANGED
|
@@ -1 +1,28 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Why local impact or fan-out stopped early (e.g. wall-clock budget exhausted).
|
|
3
|
+
*
|
|
4
|
+
* `'timeout'` and `'partial'` are runtime limits — the same query can succeed on
|
|
5
|
+
* a retry. `'incomplete-sync'` is structural: the bridge itself was built from a
|
|
6
|
+
* sync that could not read every configured repo, so those repos' contracts are
|
|
7
|
+
* absent from every query against it until `gitnexus group sync` succeeds.
|
|
8
|
+
* `'suppressed-stage'` is structural too but has its own remedy: the sync was
|
|
9
|
+
* ASKED to skip a matching stage (`--exact-only`), so cross-links that stage
|
|
10
|
+
* would have found are absent by request. Retrying returns the same floor, and
|
|
11
|
+
* so does re-running the sync — the fix is to re-run it WITHOUT the flag. Kept a
|
|
12
|
+
* separate member rather than folded into `'incomplete-sync'` precisely because
|
|
13
|
+
* that remedy differs; telling an agent to repair a repo it read fine is the
|
|
14
|
+
* failure this distinction exists to prevent.
|
|
15
|
+
*
|
|
16
|
+
* A runtime array rather than a bare type union: every value here has to be
|
|
17
|
+
* explained on the agent-facing surface that returns it, and only an enumerable
|
|
18
|
+
* list lets a guard test assert that. A test that hand-lists the members passes
|
|
19
|
+
* forever once a fourth is added — which is the exact drift the guard exists to
|
|
20
|
+
* catch, so the list an agent is promised and the list the code can emit have
|
|
21
|
+
* to come from the same place.
|
|
22
|
+
*/
|
|
23
|
+
export const GROUP_IMPACT_TRUNCATION_REASONS = [
|
|
24
|
+
'timeout',
|
|
25
|
+
'partial',
|
|
26
|
+
'incomplete-sync',
|
|
27
|
+
'suppressed-stage',
|
|
28
|
+
];
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
* replaced, produce a smaller KnowledgeGraph that contains:
|
|
7
7
|
*
|
|
8
8
|
* - Every node whose `properties.filePath` is in `toWriteSet`.
|
|
9
|
-
* - Every graph-wide node (Community, Process
|
|
10
|
-
*
|
|
9
|
+
* - Every graph-wide node (Community, Process, and Spring metadata
|
|
10
|
+
* placeholders) — these are regenerated each run and must be fully
|
|
11
11
|
* rewritten.
|
|
12
12
|
* - Every relationship where AT LEAST ONE endpoint is in the writable
|
|
13
13
|
* set above. Relationships entirely between unchanged-file nodes
|
|
@@ -51,10 +51,13 @@ import type { KnowledgeGraph } from '../graph/types.js';
|
|
|
51
51
|
export declare const extractChangedSubgraph: (fullGraph: KnowledgeGraph, toWriteSet: ReadonlySet<string>) => KnowledgeGraph;
|
|
52
52
|
/**
|
|
53
53
|
* Public — derive the EFFECTIVE write-set: `toWriteSet` expanded by one
|
|
54
|
-
* hop along every edge in the new graph that crosses the
|
|
55
|
-
* boundary (one endpoint in a writable file, the other in an
|
|
56
|
-
* file).
|
|
57
|
-
*
|
|
54
|
+
* hop along every file-owned edge in the new graph that crosses the
|
|
55
|
+
* writable boundary (one endpoint in a writable file, the other in an
|
|
56
|
+
* unchanged file). Graph-wide relationships are excluded: their owner
|
|
57
|
+
* phase delete-alls and re-extracts them independently, so following them
|
|
58
|
+
* here would turn high-fan-out metadata into a near-full-repository write.
|
|
59
|
+
* For ordinary edges, the unchanged-side file is pulled in so its stale
|
|
60
|
+
* rows are deleted + rewritten in lockstep with the changed side.
|
|
58
61
|
*
|
|
59
62
|
* Single pass over the edge list. Does NOT mutate `toWriteSet`. The
|
|
60
63
|
* orchestrator MUST feed the returned set to both `deleteNodesForFiles`
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
* replaced, produce a smaller KnowledgeGraph that contains:
|
|
7
7
|
*
|
|
8
8
|
* - Every node whose `properties.filePath` is in `toWriteSet`.
|
|
9
|
-
* - Every graph-wide node (Community, Process
|
|
10
|
-
*
|
|
9
|
+
* - Every graph-wide node (Community, Process, and Spring metadata
|
|
10
|
+
* placeholders) — these are regenerated each run and must be fully
|
|
11
11
|
* rewritten.
|
|
12
12
|
* - Every relationship where AT LEAST ONE endpoint is in the writable
|
|
13
13
|
* set above. Relationships entirely between unchanged-file nodes
|
|
@@ -48,7 +48,12 @@
|
|
|
48
48
|
* IMPORTS from the pre-pipeline DB) covers that case instead.
|
|
49
49
|
*/
|
|
50
50
|
import { createKnowledgeGraph } from '../graph/graph.js';
|
|
51
|
-
|
|
51
|
+
import { isSpringAutoConfigurationDeclaration, isSpringAutoConfigurationSyntheticClass, } from '../ingestion/frameworks/spring/auto-configuration.js';
|
|
52
|
+
import { isSpringAopEvidenceNode } from '../ingestion/frameworks/spring/aop.js';
|
|
53
|
+
const isGraphWideNode = (node) => node.label === 'Community' ||
|
|
54
|
+
node.label === 'Process' ||
|
|
55
|
+
isSpringAopEvidenceNode(node) ||
|
|
56
|
+
isSpringAutoConfigurationSyntheticClass(node);
|
|
52
57
|
/**
|
|
53
58
|
* Relationship types whose VALIDITY is a whole-program property, not a
|
|
54
59
|
* function of their endpoints' files (#2084 M4 U6). `TAINT_PATH` (cross-
|
|
@@ -76,7 +81,20 @@ const isGraphWide = (label) => label === 'Community' || label === 'Process';
|
|
|
76
81
|
// analyze, and the `incrementalInProgress` dirty flag (saved before any
|
|
77
82
|
// delete) forces a full rebuild on the next run. Temporary absence is
|
|
78
83
|
// possible; duplicates are not.
|
|
79
|
-
|
|
84
|
+
//
|
|
85
|
+
// Spring auto-configuration DECLARES edges (#2415) are also recomputed from
|
|
86
|
+
// repository-wide metadata. A third-file class addition/removal can retarget
|
|
87
|
+
// an unchanged declaration, so they need the same global re-extract contract.
|
|
88
|
+
// DECLARES itself is generic, however: only the two Spring-owned reasons are
|
|
89
|
+
// graph-wide, leaving future metadata systems under their own lifecycle.
|
|
90
|
+
const isGraphWideRelationship = (relationship) => relationship.type === 'TAINT_PATH' ||
|
|
91
|
+
relationship.type === 'CALL_SUMMARY' ||
|
|
92
|
+
relationship.type === 'INJECTS' ||
|
|
93
|
+
// Spring pointcut matching (#2416) is repository-wide. A third-file change
|
|
94
|
+
// can alter annotation-name visibility or the set matched by a wildcard,
|
|
95
|
+
// even when neither endpoint file changed.
|
|
96
|
+
relationship.type === 'ADVISED_BY' ||
|
|
97
|
+
isSpringAutoConfigurationDeclaration(relationship);
|
|
80
98
|
/**
|
|
81
99
|
* Build a Map<nodeId, filePath> for every File-bound node in the graph.
|
|
82
100
|
* Graph-wide nodes (Community/Process) have no filePath and are filtered.
|
|
@@ -95,7 +113,7 @@ export const extractChangedSubgraph = (fullGraph, toWriteSet) => {
|
|
|
95
113
|
const writableNodeIds = new Set();
|
|
96
114
|
fullGraph.forEachNode((n) => {
|
|
97
115
|
const filePath = n.properties?.filePath;
|
|
98
|
-
const include = (filePath && toWriteSet.has(filePath)) ||
|
|
116
|
+
const include = (filePath && toWriteSet.has(filePath)) || isGraphWideNode(n);
|
|
99
117
|
if (include) {
|
|
100
118
|
sub.addNode(n);
|
|
101
119
|
writableNodeIds.add(n.id);
|
|
@@ -104,7 +122,7 @@ export const extractChangedSubgraph = (fullGraph, toWriteSet) => {
|
|
|
104
122
|
fullGraph.forEachRelationship((r) => {
|
|
105
123
|
if (writableNodeIds.has(r.sourceId) ||
|
|
106
124
|
writableNodeIds.has(r.targetId) ||
|
|
107
|
-
|
|
125
|
+
isGraphWideRelationship(r)) {
|
|
108
126
|
sub.addRelationship(r);
|
|
109
127
|
}
|
|
110
128
|
});
|
|
@@ -112,10 +130,13 @@ export const extractChangedSubgraph = (fullGraph, toWriteSet) => {
|
|
|
112
130
|
};
|
|
113
131
|
/**
|
|
114
132
|
* Public — derive the EFFECTIVE write-set: `toWriteSet` expanded by one
|
|
115
|
-
* hop along every edge in the new graph that crosses the
|
|
116
|
-
* boundary (one endpoint in a writable file, the other in an
|
|
117
|
-
* file).
|
|
118
|
-
*
|
|
133
|
+
* hop along every file-owned edge in the new graph that crosses the
|
|
134
|
+
* writable boundary (one endpoint in a writable file, the other in an
|
|
135
|
+
* unchanged file). Graph-wide relationships are excluded: their owner
|
|
136
|
+
* phase delete-alls and re-extracts them independently, so following them
|
|
137
|
+
* here would turn high-fan-out metadata into a near-full-repository write.
|
|
138
|
+
* For ordinary edges, the unchanged-side file is pulled in so its stale
|
|
139
|
+
* rows are deleted + rewritten in lockstep with the changed side.
|
|
119
140
|
*
|
|
120
141
|
* Single pass over the edge list. Does NOT mutate `toWriteSet`. The
|
|
121
142
|
* orchestrator MUST feed the returned set to both `deleteNodesForFiles`
|
|
@@ -126,6 +147,8 @@ export const computeEffectiveWriteSet = (fullGraph, toWriteSet) => {
|
|
|
126
147
|
const nodeFilePaths = indexNodeFilePaths(fullGraph);
|
|
127
148
|
const expanded = new Set(toWriteSet);
|
|
128
149
|
fullGraph.forEachRelationship((r) => {
|
|
150
|
+
if (isGraphWideRelationship(r))
|
|
151
|
+
return;
|
|
129
152
|
const sourcePath = nodeFilePaths.get(r.sourceId);
|
|
130
153
|
const targetPath = nodeFilePaths.get(r.targetId);
|
|
131
154
|
if (!sourcePath || !targetPath)
|
|
@@ -1,5 +1,80 @@
|
|
|
1
1
|
import type { RepoMeta } from '../storage/repo-manager.js';
|
|
2
|
-
export declare const INDEX_INCOMPLETE_REASONS: readonly ["incremental-in-progress", "embedding-checkpoint-pending"];
|
|
2
|
+
export declare const INDEX_INCOMPLETE_REASONS: readonly ["incremental-in-progress", "embedding-checkpoint-pending", "embedding-count-unverified", "graph-write-collapsed"];
|
|
3
3
|
export type IndexIncompleteReason = (typeof INDEX_INCOMPLETE_REASONS)[number];
|
|
4
|
+
/**
|
|
5
|
+
* Fraction of the pipeline's relationship count that must survive into the DB
|
|
6
|
+
* before the write counts as collapsed. Deliberately generous: this detects
|
|
7
|
+
* "most of the graph did not persist" (the reported case lost ~91%), not a
|
|
8
|
+
* per-edge reconciliation.
|
|
9
|
+
*/
|
|
10
|
+
export declare const GRAPH_WRITE_COLLAPSE_RATIO = 0.5;
|
|
11
|
+
/**
|
|
12
|
+
* Below this many relationships the ratio is meaningless — a handful of edges
|
|
13
|
+
* lost to legitimate filtering would trip it — so small repos are exempt.
|
|
14
|
+
*/
|
|
15
|
+
export declare const GRAPH_WRITE_COLLAPSE_MIN_EDGES = 100;
|
|
16
|
+
/** Why {@link detectGraphWriteCollapse} could reach no verdict at all. */
|
|
17
|
+
export type GraphWriteCollapseUnmeasurableReason =
|
|
18
|
+
/** The pipeline's own total was not a usable number (or was zero). */
|
|
19
|
+
'expected-unavailable'
|
|
20
|
+
/** The DB-side count could not be READ — a query that threw, no connection. */
|
|
21
|
+
| 'persisted-unreadable'
|
|
22
|
+
/** Set by the CALLER: an incremental write persists only the changed
|
|
23
|
+
* subgraph, so whole-scope counts are not comparable to it. */
|
|
24
|
+
| 'incremental-write';
|
|
25
|
+
/**
|
|
26
|
+
* The three outcomes of the collapse check, kept APART because two of them used
|
|
27
|
+
* to share `undefined` and the conflation erased a stamp recording real,
|
|
28
|
+
* unrepaired edge loss.
|
|
29
|
+
*
|
|
30
|
+
* `'healthy'` is a POSITIVE all-clear — the counts were both taken and enough
|
|
31
|
+
* rows persisted — and is the only outcome that licenses clearing a previous
|
|
32
|
+
* `graph-write-collapsed` stamp. `'unmeasurable'` says the comparison never
|
|
33
|
+
* happened; the previous stamp must survive it, because nothing has repaired
|
|
34
|
+
* whatever it recorded.
|
|
35
|
+
*/
|
|
36
|
+
export type GraphWriteCollapseVerdict = {
|
|
37
|
+
verdict: 'collapsed';
|
|
38
|
+
expected: number;
|
|
39
|
+
persisted: number;
|
|
40
|
+
} | {
|
|
41
|
+
verdict: 'healthy';
|
|
42
|
+
} | {
|
|
43
|
+
verdict: 'unmeasurable';
|
|
44
|
+
reason: GraphWriteCollapseUnmeasurableReason;
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Decide whether a finished write collapsed, comparing what the pipeline
|
|
48
|
+
* produced against what the DB hands back.
|
|
49
|
+
*
|
|
50
|
+
* A RATIO, not equality: some relationship types do not round-trip one-for-one
|
|
51
|
+
* and `--pdg` writes MORE rows into the same table, so demanding equality would
|
|
52
|
+
* fire on healthy runs. Only a collapse is a defect.
|
|
53
|
+
*
|
|
54
|
+
* FAIL-SAFE at `expected === 0`: an implementation that offloads relationships
|
|
55
|
+
* out of memory may not be able to report a total, and a false "your index is
|
|
56
|
+
* broken" is worse than a missed one. That case is `'unmeasurable'`, NOT
|
|
57
|
+
* `'healthy'` — nothing was compared, so nothing was cleared.
|
|
58
|
+
*
|
|
59
|
+
* Returns a THREE-WAY verdict rather than `{...} | undefined`. The absent value
|
|
60
|
+
* meant both "measured, fine" and "could not measure", and the caller — which
|
|
61
|
+
* decides whether to keep or erase the persisted `graph-write-collapsed` stamp —
|
|
62
|
+
* cannot tell those apart from a shared `undefined`. It guessed by write mode
|
|
63
|
+
* instead, so a full run whose structural count threw took the
|
|
64
|
+
* "no collapse ⇒ clear it" branch and deleted a stamp recording real loss.
|
|
65
|
+
*/
|
|
66
|
+
export declare function detectGraphWriteCollapse(expected: number,
|
|
67
|
+
/**
|
|
68
|
+
* Relationships readable from the DB, or `undefined` when the count could
|
|
69
|
+
* not be READ at all (no connection, a query that threw).
|
|
70
|
+
*
|
|
71
|
+
* The distinction is load-bearing and was got wrong once: `getLbugStats`
|
|
72
|
+
* reports `edges: 0` for "no connection", "query threw" AND "empty table"
|
|
73
|
+
* alike, so passing it straight in made every run without a readable DB look
|
|
74
|
+
* like a total collapse. An unmeasurable count is not a measured zero —
|
|
75
|
+
* accepting `undefined` here is what keeps this check from committing the
|
|
76
|
+
* same confident-zero error it exists to catch.
|
|
77
|
+
*/
|
|
78
|
+
persisted: number | undefined): GraphWriteCollapseVerdict;
|
|
4
79
|
/** Stable machine-readable reasons an index cannot be certified complete. */
|
|
5
|
-
export declare function getIndexIncompleteReasons(meta: Pick<RepoMeta, 'incrementalInProgress' | 'embeddingCheckpoint'> | null | undefined): IndexIncompleteReason[];
|
|
80
|
+
export declare function getIndexIncompleteReasons(meta: Pick<RepoMeta, 'incrementalInProgress' | 'embeddingCheckpoint' | 'graphWriteCollapsed'> | null | undefined): IndexIncompleteReason[];
|
|
@@ -1,13 +1,120 @@
|
|
|
1
|
+
import { checkpointKind } from './embedding-checkpoint.js';
|
|
1
2
|
export const INDEX_INCOMPLETE_REASONS = [
|
|
2
3
|
'incremental-in-progress',
|
|
3
4
|
'embedding-checkpoint-pending',
|
|
5
|
+
'embedding-count-unverified',
|
|
6
|
+
'graph-write-collapsed',
|
|
4
7
|
];
|
|
8
|
+
/**
|
|
9
|
+
* Fraction of the pipeline's relationship count that must survive into the DB
|
|
10
|
+
* before the write counts as collapsed. Deliberately generous: this detects
|
|
11
|
+
* "most of the graph did not persist" (the reported case lost ~91%), not a
|
|
12
|
+
* per-edge reconciliation.
|
|
13
|
+
*/
|
|
14
|
+
export const GRAPH_WRITE_COLLAPSE_RATIO = 0.5;
|
|
15
|
+
/**
|
|
16
|
+
* Below this many relationships the ratio is meaningless — a handful of edges
|
|
17
|
+
* lost to legitimate filtering would trip it — so small repos are exempt.
|
|
18
|
+
*/
|
|
19
|
+
export const GRAPH_WRITE_COLLAPSE_MIN_EDGES = 100;
|
|
20
|
+
/**
|
|
21
|
+
* Decide whether a finished write collapsed, comparing what the pipeline
|
|
22
|
+
* produced against what the DB hands back.
|
|
23
|
+
*
|
|
24
|
+
* A RATIO, not equality: some relationship types do not round-trip one-for-one
|
|
25
|
+
* and `--pdg` writes MORE rows into the same table, so demanding equality would
|
|
26
|
+
* fire on healthy runs. Only a collapse is a defect.
|
|
27
|
+
*
|
|
28
|
+
* FAIL-SAFE at `expected === 0`: an implementation that offloads relationships
|
|
29
|
+
* out of memory may not be able to report a total, and a false "your index is
|
|
30
|
+
* broken" is worse than a missed one. That case is `'unmeasurable'`, NOT
|
|
31
|
+
* `'healthy'` — nothing was compared, so nothing was cleared.
|
|
32
|
+
*
|
|
33
|
+
* Returns a THREE-WAY verdict rather than `{...} | undefined`. The absent value
|
|
34
|
+
* meant both "measured, fine" and "could not measure", and the caller — which
|
|
35
|
+
* decides whether to keep or erase the persisted `graph-write-collapsed` stamp —
|
|
36
|
+
* cannot tell those apart from a shared `undefined`. It guessed by write mode
|
|
37
|
+
* instead, so a full run whose structural count threw took the
|
|
38
|
+
* "no collapse ⇒ clear it" branch and deleted a stamp recording real loss.
|
|
39
|
+
*/
|
|
40
|
+
export function detectGraphWriteCollapse(expected,
|
|
41
|
+
/**
|
|
42
|
+
* Relationships readable from the DB, or `undefined` when the count could
|
|
43
|
+
* not be READ at all (no connection, a query that threw).
|
|
44
|
+
*
|
|
45
|
+
* The distinction is load-bearing and was got wrong once: `getLbugStats`
|
|
46
|
+
* reports `edges: 0` for "no connection", "query threw" AND "empty table"
|
|
47
|
+
* alike, so passing it straight in made every run without a readable DB look
|
|
48
|
+
* like a total collapse. An unmeasurable count is not a measured zero —
|
|
49
|
+
* accepting `undefined` here is what keeps this check from committing the
|
|
50
|
+
* same confident-zero error it exists to catch.
|
|
51
|
+
*/
|
|
52
|
+
persisted) {
|
|
53
|
+
// Both sides must be REAL NUMBERS before any comparison. A non-numeric
|
|
54
|
+
// `expected` (a graph implementation that reports no total, a lightweight
|
|
55
|
+
// pipeline result) does not merely skip the guards — it INVERTS them:
|
|
56
|
+
// `undefined < 100` is false, so the min-edges exemption never fires, and
|
|
57
|
+
// `0 >= undefined * 0.5` is `0 >= NaN`, also false, so the ratio check
|
|
58
|
+
// "passes" too and a healthy run is reported as a total collapse. Comparing
|
|
59
|
+
// against a non-number is the one way this check can manufacture the exact
|
|
60
|
+
// false certainty it was written to prevent.
|
|
61
|
+
if (!Number.isFinite(expected)) {
|
|
62
|
+
return { verdict: 'unmeasurable', reason: 'expected-unavailable' };
|
|
63
|
+
}
|
|
64
|
+
if (typeof persisted !== 'number' || !Number.isFinite(persisted)) {
|
|
65
|
+
return { verdict: 'unmeasurable', reason: 'persisted-unreadable' };
|
|
66
|
+
}
|
|
67
|
+
const expectedCount = expected;
|
|
68
|
+
const persistedCount = persisted;
|
|
69
|
+
// FAIL-SAFE, and `'unmeasurable'` rather than `'healthy'`: a zero expectation
|
|
70
|
+
// is the documented "could not report a total" case, not evidence the write
|
|
71
|
+
// went well. Reporting it as an all-clear would let a run that measured
|
|
72
|
+
// nothing erase a stamp recording a previous run's real loss.
|
|
73
|
+
if (expectedCount === 0) {
|
|
74
|
+
return { verdict: 'unmeasurable', reason: 'expected-unavailable' };
|
|
75
|
+
}
|
|
76
|
+
// A TOTAL loss is never small enough to excuse. The min-edges exemption
|
|
77
|
+
// exists for "a handful of edges lost to legitimate filtering", which its own
|
|
78
|
+
// docstring says — it does not describe a persisted count of zero. Evaluated
|
|
79
|
+
// before the exemption because the exemption looked only at `expected`:
|
|
80
|
+
// `expected = 99, persisted = 0` lost every single edge and still returned
|
|
81
|
+
// no verdict, leaving the metadata fresh and the CLI reporting success.
|
|
82
|
+
if (expectedCount > 0 && persistedCount === 0) {
|
|
83
|
+
return { verdict: 'collapsed', expected: expectedCount, persisted: persistedCount };
|
|
84
|
+
}
|
|
85
|
+
// The small-repo exemption and the cleared ratio are both `'healthy'`, not
|
|
86
|
+
// `'unmeasurable'`: both counts WERE taken, and the comparison ran. Calling
|
|
87
|
+
// the exemption a non-verdict would make a stamp unclearable on any repo that
|
|
88
|
+
// shrank below the threshold — a permanent forced-rebuild wedge, which is the
|
|
89
|
+
// failure this taxonomy exists to avoid rather than to relocate.
|
|
90
|
+
if (expectedCount < GRAPH_WRITE_COLLAPSE_MIN_EDGES)
|
|
91
|
+
return { verdict: 'healthy' };
|
|
92
|
+
if (persistedCount >= expectedCount * GRAPH_WRITE_COLLAPSE_RATIO)
|
|
93
|
+
return { verdict: 'healthy' };
|
|
94
|
+
return { verdict: 'collapsed', expected: expectedCount, persisted: persistedCount };
|
|
95
|
+
}
|
|
5
96
|
/** Stable machine-readable reasons an index cannot be certified complete. */
|
|
6
97
|
export function getIndexIncompleteReasons(meta) {
|
|
7
98
|
const reasons = [];
|
|
8
99
|
if (meta?.incrementalInProgress)
|
|
9
100
|
reasons.push('incremental-in-progress');
|
|
10
|
-
|
|
11
|
-
|
|
101
|
+
// The run finished and wrote metadata, but far fewer edges reached the DB
|
|
102
|
+
// than the pipeline produced — the "refresh reported success, the index is
|
|
103
|
+
// unusable" failure. Without this the index reads as fresh and every tool
|
|
104
|
+
// answers from a graph missing most of its edges, which is indistinguishable
|
|
105
|
+
// from a codebase that genuinely has no such relationships.
|
|
106
|
+
if (meta?.graphWriteCollapsed)
|
|
107
|
+
reasons.push('graph-write-collapsed');
|
|
108
|
+
if (meta?.embeddingCheckpoint) {
|
|
109
|
+
// The three checkpoint kinds are not one operator-facing state. GUARDRAILS
|
|
110
|
+
// and the runbook document `embedding-checkpoint-pending` as "N node(s)
|
|
111
|
+
// lost their embeddings to endpoint failures" — true for 'interrupted' and
|
|
112
|
+
// 'partial', a lie for 'unverified-count', whose pending set is empty and
|
|
113
|
+
// whose only defect is a count nobody could measure (see the `kind` doc in
|
|
114
|
+
// repo-manager.ts).
|
|
115
|
+
reasons.push(checkpointKind(meta.embeddingCheckpoint) === 'unverified-count'
|
|
116
|
+
? 'embedding-count-unverified'
|
|
117
|
+
: 'embedding-checkpoint-pending');
|
|
118
|
+
}
|
|
12
119
|
return reasons;
|
|
13
120
|
}
|
|
@@ -16,11 +16,22 @@
|
|
|
16
16
|
*/
|
|
17
17
|
import { KnowledgeGraph } from '../graph/types.js';
|
|
18
18
|
import type { SemanticModel, SymbolTableReader } from './model/index.js';
|
|
19
|
+
import type { ParsedImport, SymbolDefinition } from '../../_shared/index.js';
|
|
19
20
|
import type { ExtractedRoute, ExtractedFetchCall } from './workers/parse-worker.js';
|
|
20
21
|
import type { ExtractedDecoratorRoute } from './workers/parse-worker.js';
|
|
21
22
|
/** Per-file resolved type bindings for exported symbols.
|
|
22
23
|
* Consumed by the cross-file re-resolution / enrichment pass. */
|
|
23
24
|
export type ExportedTypeMap = Map<string, Map<string, string>>;
|
|
25
|
+
interface RouteResolutionFile {
|
|
26
|
+
readonly filePath: string;
|
|
27
|
+
readonly parsedImports: readonly ParsedImport[];
|
|
28
|
+
readonly localDefs: readonly SymbolDefinition[];
|
|
29
|
+
}
|
|
30
|
+
interface RouteHandlerResolutionContext {
|
|
31
|
+
readonly files: readonly RouteResolutionFile[];
|
|
32
|
+
readonly resolveImportTarget: (parsedImport: ParsedImport, fromFile: string) => string | null;
|
|
33
|
+
readonly isExportedSymbol: (nodeId: string) => boolean;
|
|
34
|
+
}
|
|
24
35
|
/** Record one exported graph node into the incremental ExportedTypeMap. */
|
|
25
36
|
export declare const accumulateExportedTypesFromParsedNode: (result: ExportedTypeMap, node: {
|
|
26
37
|
id: string;
|
|
@@ -86,7 +97,7 @@ export declare const processRoutesFromExtracted: (graph: KnowledgeGraph, extract
|
|
|
86
97
|
* `handlerSymbolId`; the extractor then falls back to source scan for that route
|
|
87
98
|
* (fail-open, no regression, never a wrong handler).
|
|
88
99
|
*/
|
|
89
|
-
export declare function resolveRouteHandlerSymbols(model: SemanticModel, extractedRoutes: readonly ExtractedRoute[], decoratorRoutes: readonly ExtractedDecoratorRoute[]): Map<string, string>;
|
|
100
|
+
export declare function resolveRouteHandlerSymbols(model: SemanticModel, extractedRoutes: readonly ExtractedRoute[], decoratorRoutes: readonly ExtractedDecoratorRoute[], routeContext?: RouteHandlerResolutionContext): Map<string, string>;
|
|
90
101
|
/**
|
|
91
102
|
* Extract property access keys from a consumer file's source code near fetch calls.
|
|
92
103
|
*
|
|
@@ -112,3 +123,4 @@ export declare const extractConsumerAccessedKeys: (content: string) => string[];
|
|
|
112
123
|
*/
|
|
113
124
|
export declare const processNextjsFetchRoutes: (graph: KnowledgeGraph, fetchCalls: ExtractedFetchCall[], routeUrlToKeys: Map<string, string[]>, // routeURL → route node keys at that URL
|
|
114
125
|
consumerContents?: Map<string, string>) => void;
|
|
126
|
+
export {};
|