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
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI-facing `analyze` option shape.
|
|
3
|
+
*
|
|
4
|
+
* This is the *flag* shape: it mirrors what Commander parses off the command
|
|
5
|
+
* line and what `.gitnexusrc` may set, before `analyze` translates it into the
|
|
6
|
+
* core orchestrator's own `AnalyzeOptions` (`core/run-analyze.ts`) — a
|
|
7
|
+
* different, deliberately separate interface (`stats` here vs `noStats`
|
|
8
|
+
* there, `embeddings?: boolean | string` here vs a resolved
|
|
9
|
+
* `embeddingsNodeLimit` there).
|
|
10
|
+
*
|
|
11
|
+
* It lives in this leaf module because both `analyze.ts` (which consumes the
|
|
12
|
+
* flags) and `analyze-config.ts` (which maps `.gitnexusrc` keys onto them)
|
|
13
|
+
* need it, and `analyze.ts` already imports the config loader — a type import
|
|
14
|
+
* back the other way put the two files, plus `core/run-analyze.ts`, in an
|
|
15
|
+
* import cycle. `analyze.ts` re-exports the type for existing importers.
|
|
16
|
+
*/
|
|
17
|
+
export interface AnalyzeOptions {
|
|
18
|
+
force?: boolean;
|
|
19
|
+
repairFts?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Embedding generation toggle. Commander parses `--embeddings [limit]` as:
|
|
22
|
+
* - `undefined` when the flag is omitted
|
|
23
|
+
* - `true` when passed without an argument (use default 50K node cap)
|
|
24
|
+
* - a string when passed with an argument (`--embeddings 0` disables the
|
|
25
|
+
* cap, `--embeddings <n>` uses `<n>` as the cap)
|
|
26
|
+
*/
|
|
27
|
+
embeddings?: boolean | string;
|
|
28
|
+
/**
|
|
29
|
+
* Explicitly drop existing embeddings on rebuild instead of preserving
|
|
30
|
+
* them. Without this flag, a routine `analyze` keeps any embeddings
|
|
31
|
+
* already present in the index even when `--embeddings` is omitted.
|
|
32
|
+
*/
|
|
33
|
+
dropEmbeddings?: boolean;
|
|
34
|
+
skills?: boolean;
|
|
35
|
+
verbose?: boolean;
|
|
36
|
+
/** Skip AGENTS.md and CLAUDE.md gitnexus block updates. */
|
|
37
|
+
skipAgentsMd?: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Build the control-flow-graph / PDG substrate (#2081 M1). Opt-in; off by
|
|
40
|
+
* default. Threaded to both the worker (CFG build) and scope-resolution
|
|
41
|
+
* (BasicBlock/CFG emit).
|
|
42
|
+
*/
|
|
43
|
+
pdg?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Stats inclusion in AGENTS.md and CLAUDE.md.
|
|
46
|
+
*
|
|
47
|
+
* Commander.js represents `--no-stats` as `stats: boolean` (default
|
|
48
|
+
* `true`; `false` when the user passes `--no-stats`), NOT as
|
|
49
|
+
* `noStats: boolean`. Reading the negated form would always be
|
|
50
|
+
* `undefined` and the flag would silently no-op (#1477). Consumers
|
|
51
|
+
* that want "did the user request --no-stats?" should compare with
|
|
52
|
+
* `=== false` to distinguish the explicit-off case from the
|
|
53
|
+
* default-on case.
|
|
54
|
+
*/
|
|
55
|
+
stats?: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Opt-in auto-commit of any AGENTS.md/CLAUDE.md changes this `analyze` run
|
|
58
|
+
* makes. Scoped to only those two files (never `git add -A`); no-ops
|
|
59
|
+
* silently if neither exists, neither changed, or the commit step itself
|
|
60
|
+
* fails (e.g. no git identity configured). See #2639.
|
|
61
|
+
*/
|
|
62
|
+
selfCommit?: boolean;
|
|
63
|
+
/** Skip installing standard GitNexus skill files directly under .claude/skills/. */
|
|
64
|
+
skipSkills?: boolean;
|
|
65
|
+
/**
|
|
66
|
+
* Default branch for the generated regression-compare example (#243). From
|
|
67
|
+
* `--default-branch`; may also be supplied via `.gitnexusrc`. Resolved to a
|
|
68
|
+
* concrete branch (CLI > `.gitnexusrc` > auto-detected origin/HEAD > "main")
|
|
69
|
+
* before being threaded into the generated AGENTS.md / CLAUDE.md content.
|
|
70
|
+
*/
|
|
71
|
+
defaultBranch?: string;
|
|
72
|
+
/**
|
|
73
|
+
* Index-branch selector (#2106). From `--branch`. Distinct from
|
|
74
|
+
* `defaultBranch` (cosmetic base_ref): this routes the index to a per-branch
|
|
75
|
+
* slot. NOT sourced from `.gitnexusrc` — the `.gitnexusrc` `branch` key is an
|
|
76
|
+
* alias for `defaultBranch` and must not change index placement. Defaults to
|
|
77
|
+
* the checked-out branch inside `runFullAnalysis` when omitted.
|
|
78
|
+
*/
|
|
79
|
+
branch?: string;
|
|
80
|
+
/** Pure index mode: skip all file injection (AGENTS.md, CLAUDE.md, skills). */
|
|
81
|
+
indexOnly?: boolean;
|
|
82
|
+
/** Index the folder even when no .git directory is present. */
|
|
83
|
+
skipGit?: boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Override the default basename-derived registry `name` with a
|
|
86
|
+
* user-supplied alias (#829). Disambiguates repos whose paths share a
|
|
87
|
+
* basename. Persisted — subsequent re-analyses of the same path without
|
|
88
|
+
* `--name` preserve the alias.
|
|
89
|
+
*/
|
|
90
|
+
name?: string;
|
|
91
|
+
/**
|
|
92
|
+
* Allow registration even when another path already uses the same
|
|
93
|
+
* `--name` alias (#829). Intentionally a distinct flag from `--force`
|
|
94
|
+
* because the user may want to coexist under the same name WITHOUT
|
|
95
|
+
* paying the cost of a pipeline re-index. Maps to registerRepo's
|
|
96
|
+
* `allowDuplicateName` option end-to-end.
|
|
97
|
+
*/
|
|
98
|
+
allowDuplicateName?: boolean;
|
|
99
|
+
/**
|
|
100
|
+
* Override the walker's large-file skip threshold (#991). Value in KB;
|
|
101
|
+
* clamped downstream to the tree-sitter 32 MB ceiling. Sets
|
|
102
|
+
* `GITNEXUS_MAX_FILE_SIZE` for the rest of the pipeline.
|
|
103
|
+
*/
|
|
104
|
+
maxFileSize?: string;
|
|
105
|
+
/** Override worker sub-batch idle timeout in seconds. */
|
|
106
|
+
workerTimeout?: string;
|
|
107
|
+
/** Control LadybugDB WAL auto-checkpoint threshold during analyze. */
|
|
108
|
+
walCheckpointThreshold?: string;
|
|
109
|
+
/** Parse worker pool size (>=1); 0 is rejected (no sequential mode). */
|
|
110
|
+
workers?: string;
|
|
111
|
+
embeddingThreads?: string;
|
|
112
|
+
embeddingBatchSize?: string;
|
|
113
|
+
embeddingSubBatchSize?: string;
|
|
114
|
+
embeddingDevice?: string;
|
|
115
|
+
/**
|
|
116
|
+
* Extra fetch-wrapper function names to treat as HTTP consumers (#1589/#1852
|
|
117
|
+
* residual). Supplied via `.gitnexusrc` `fetchWrappers: [...]`. Threaded into
|
|
118
|
+
* the routes phase, where the cross-file consumer scan unions them with the
|
|
119
|
+
* auto-detected `fetch()` wrappers so a custom/axios-based wrapper named
|
|
120
|
+
* outside the built-in convention still produces `route_map` consumers.
|
|
121
|
+
*/
|
|
122
|
+
fetchWrappers?: string[];
|
|
123
|
+
/** OpenAI-compatible embeddings base URL (incl. /v1). Overrides GITNEXUS_EMBEDDING_URL. */
|
|
124
|
+
embeddingBaseUrl?: string;
|
|
125
|
+
/** Embedding model name. Overrides GITNEXUS_EMBEDDING_MODEL. */
|
|
126
|
+
embeddingModel?: string;
|
|
127
|
+
/** Bearer token for the embeddings endpoint. Overrides GITNEXUS_EMBEDDING_API_KEY. Never logged. */
|
|
128
|
+
embeddingAuthToken?: string;
|
|
129
|
+
/** Embedding vector dimensions (positive integer string). Overrides GITNEXUS_EMBEDDING_DIMS. */
|
|
130
|
+
embeddingDims?: string;
|
|
131
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/cli/analyze.d.ts
CHANGED
|
@@ -8,123 +8,31 @@
|
|
|
8
8
|
* skill generation (--skills), summary output, and process.exit().
|
|
9
9
|
*/
|
|
10
10
|
import { type AnalyzerRunnerIdentity } from '../storage/repo-manager.js';
|
|
11
|
+
import type { AnalyzeOptions } from './analyze-options.js';
|
|
11
12
|
/**
|
|
12
|
-
* RAM-aware re-exec heap cap (MB)
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* limit or `null`; it is honored only as a real, smaller-than-physical cap, because
|
|
13
|
+
* RAM-aware re-exec heap cap (MB) — the formula itself is single-sourced in
|
|
14
|
+
* `core/ingestion/utils/effective-ram.ts` (`heapCapMbFor`), shared with the
|
|
15
|
+
* server's analyze fork. `constrainedBytes` is the cgroup limit or `null`;
|
|
16
|
+
* it is honored only as a real, smaller-than-physical cap, because
|
|
17
17
|
* `process.constrainedMemory()` returns a huge sentinel when UNCONSTRAINED.
|
|
18
|
+
* (Observed rationale: a cap ≥ RAM made V8 collect lazily and swap-thrash —
|
|
19
|
+
* the #2649 worker-timeout cascade on 16 GB boxes.)
|
|
18
20
|
*/
|
|
19
21
|
export declare function computeHeapCapMb(totalBytes: number, constrainedBytes: number | null): number;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
* already present in the index even when `--embeddings` is omitted.
|
|
35
|
-
*/
|
|
36
|
-
dropEmbeddings?: boolean;
|
|
37
|
-
skills?: boolean;
|
|
38
|
-
verbose?: boolean;
|
|
39
|
-
/** Skip AGENTS.md and CLAUDE.md gitnexus block updates. */
|
|
40
|
-
skipAgentsMd?: boolean;
|
|
41
|
-
/**
|
|
42
|
-
* Build the control-flow-graph / PDG substrate (#2081 M1). Opt-in; off by
|
|
43
|
-
* default. Threaded to both the worker (CFG build) and scope-resolution
|
|
44
|
-
* (BasicBlock/CFG emit).
|
|
45
|
-
*/
|
|
46
|
-
pdg?: boolean;
|
|
47
|
-
/**
|
|
48
|
-
* Stats inclusion in AGENTS.md and CLAUDE.md.
|
|
49
|
-
*
|
|
50
|
-
* Commander.js represents `--no-stats` as `stats: boolean` (default
|
|
51
|
-
* `true`; `false` when the user passes `--no-stats`), NOT as
|
|
52
|
-
* `noStats: boolean`. Reading the negated form would always be
|
|
53
|
-
* `undefined` and the flag would silently no-op (#1477). Consumers
|
|
54
|
-
* that want "did the user request --no-stats?" should compare with
|
|
55
|
-
* `=== false` to distinguish the explicit-off case from the
|
|
56
|
-
* default-on case.
|
|
57
|
-
*/
|
|
58
|
-
stats?: boolean;
|
|
59
|
-
/** Skip installing standard GitNexus skill files directly under .claude/skills/. */
|
|
60
|
-
skipSkills?: boolean;
|
|
61
|
-
/**
|
|
62
|
-
* Default branch for the generated regression-compare example (#243). From
|
|
63
|
-
* `--default-branch`; may also be supplied via `.gitnexusrc`. Resolved to a
|
|
64
|
-
* concrete branch (CLI > `.gitnexusrc` > auto-detected origin/HEAD > "main")
|
|
65
|
-
* before being threaded into the generated AGENTS.md / CLAUDE.md content.
|
|
66
|
-
*/
|
|
67
|
-
defaultBranch?: string;
|
|
68
|
-
/**
|
|
69
|
-
* Index-branch selector (#2106). From `--branch`. Distinct from
|
|
70
|
-
* `defaultBranch` (cosmetic base_ref): this routes the index to a per-branch
|
|
71
|
-
* slot. NOT sourced from `.gitnexusrc` — the `.gitnexusrc` `branch` key is an
|
|
72
|
-
* alias for `defaultBranch` and must not change index placement. Defaults to
|
|
73
|
-
* the checked-out branch inside `runFullAnalysis` when omitted.
|
|
74
|
-
*/
|
|
75
|
-
branch?: string;
|
|
76
|
-
/** Pure index mode: skip all file injection (AGENTS.md, CLAUDE.md, skills). */
|
|
77
|
-
indexOnly?: boolean;
|
|
78
|
-
/** Index the folder even when no .git directory is present. */
|
|
79
|
-
skipGit?: boolean;
|
|
80
|
-
/**
|
|
81
|
-
* Override the default basename-derived registry `name` with a
|
|
82
|
-
* user-supplied alias (#829). Disambiguates repos whose paths share a
|
|
83
|
-
* basename. Persisted — subsequent re-analyses of the same path without
|
|
84
|
-
* `--name` preserve the alias.
|
|
85
|
-
*/
|
|
86
|
-
name?: string;
|
|
87
|
-
/**
|
|
88
|
-
* Allow registration even when another path already uses the same
|
|
89
|
-
* `--name` alias (#829). Intentionally a distinct flag from `--force`
|
|
90
|
-
* because the user may want to coexist under the same name WITHOUT
|
|
91
|
-
* paying the cost of a pipeline re-index. Maps to registerRepo's
|
|
92
|
-
* `allowDuplicateName` option end-to-end.
|
|
93
|
-
*/
|
|
94
|
-
allowDuplicateName?: boolean;
|
|
95
|
-
/**
|
|
96
|
-
* Override the walker's large-file skip threshold (#991). Value in KB;
|
|
97
|
-
* clamped downstream to the tree-sitter 32 MB ceiling. Sets
|
|
98
|
-
* `GITNEXUS_MAX_FILE_SIZE` for the rest of the pipeline.
|
|
99
|
-
*/
|
|
100
|
-
maxFileSize?: string;
|
|
101
|
-
/** Override worker sub-batch idle timeout in seconds. */
|
|
102
|
-
workerTimeout?: string;
|
|
103
|
-
/** Control LadybugDB WAL auto-checkpoint threshold during analyze. */
|
|
104
|
-
walCheckpointThreshold?: string;
|
|
105
|
-
/** Parse worker pool size (>=1); 0 is rejected (no sequential mode). */
|
|
106
|
-
workers?: string;
|
|
107
|
-
embeddingThreads?: string;
|
|
108
|
-
embeddingBatchSize?: string;
|
|
109
|
-
embeddingSubBatchSize?: string;
|
|
110
|
-
embeddingDevice?: string;
|
|
111
|
-
/**
|
|
112
|
-
* Extra fetch-wrapper function names to treat as HTTP consumers (#1589/#1852
|
|
113
|
-
* residual). Supplied via `.gitnexusrc` `fetchWrappers: [...]`. Threaded into
|
|
114
|
-
* the routes phase, where the cross-file consumer scan unions them with the
|
|
115
|
-
* auto-detected `fetch()` wrappers so a custom/axios-based wrapper named
|
|
116
|
-
* outside the built-in convention still produces `route_map` consumers.
|
|
117
|
-
*/
|
|
118
|
-
fetchWrappers?: string[];
|
|
119
|
-
/** OpenAI-compatible embeddings base URL (incl. /v1). Overrides GITNEXUS_EMBEDDING_URL. */
|
|
120
|
-
embeddingBaseUrl?: string;
|
|
121
|
-
/** Embedding model name. Overrides GITNEXUS_EMBEDDING_MODEL. */
|
|
122
|
-
embeddingModel?: string;
|
|
123
|
-
/** Bearer token for the embeddings endpoint. Overrides GITNEXUS_EMBEDDING_API_KEY. Never logged. */
|
|
124
|
-
embeddingAuthToken?: string;
|
|
125
|
-
/** Embedding vector dimensions (positive integer string). Overrides GITNEXUS_EMBEDDING_DIMS. */
|
|
126
|
-
embeddingDims?: string;
|
|
127
|
-
}
|
|
22
|
+
/**
|
|
23
|
+
* Last `--max-old-space-size` value (MB) in a NODE_OPTIONS string, or `null`
|
|
24
|
+
* when absent/unparseable. Last occurrence wins, matching V8's own
|
|
25
|
+
* later-flag-wins semantics when NODE_OPTIONS repeats a flag.
|
|
26
|
+
*/
|
|
27
|
+
export declare function parseMaxOldSpaceMb(nodeOptions: string): number | null;
|
|
28
|
+
/**
|
|
29
|
+
* CLI `analyze` flag shape. Defined in `./analyze-options.js` so
|
|
30
|
+
* `analyze-config.ts` can reference it without importing this module back —
|
|
31
|
+
* that type import closed a cycle over `analyze` → `analyze-config` and
|
|
32
|
+
* `analyze` → `run-analyze` → `analyze-config`. Re-exported here because this
|
|
33
|
+
* is where callers have always imported it from.
|
|
34
|
+
*/
|
|
35
|
+
export type { AnalyzeOptions };
|
|
128
36
|
/**
|
|
129
37
|
* Whether the post-index skill step should run.
|
|
130
38
|
*
|
package/dist/cli/analyze.js
CHANGED
|
@@ -14,9 +14,12 @@ import v8 from 'v8';
|
|
|
14
14
|
import cliProgress from 'cli-progress';
|
|
15
15
|
import { isLbugReady, LbugWipeError } from '../core/lbug/lbug-adapter.js';
|
|
16
16
|
import { boundedCheckpointBeforeExit } from '../core/lbug/shutdown-helpers.js';
|
|
17
|
+
import { findUndeclaredRelationPairError } from '../core/lbug/rel-pair-routing.js';
|
|
18
|
+
import { causeChain } from '../lib/utils.js';
|
|
17
19
|
import { getOsPageSize, isLbugCheckpointIoError, isLbugCheckpointBusyError, isLbugPageSizeFrameError, isPageSizeAwareLadybug, isWalCorruptionError, parseWalCheckpointThreshold, WAL_RECOVERY_SUGGESTION, } from '../core/lbug/lbug-config.js';
|
|
18
20
|
import { getStoragePaths, getGlobalRegistryPath, RegistryNameCollisionError, AnalysisNotFinalizedError, assertAnalysisFinalized, } from '../storage/repo-manager.js';
|
|
19
|
-
import { getGitRoot, hasGitDir, getDefaultBranch } from '../storage/git.js';
|
|
21
|
+
import { getGitRoot, hasGitDir, getDefaultBranch, selfCommitContextFiles, snapshotSelfCommitSafety, } from '../storage/git.js';
|
|
22
|
+
import { IndexLockTimeoutError } from '../storage/index-lock.js';
|
|
20
23
|
import { loadAnalyzeConfig, mergeAnalyzeOptions, resolveDefaultBranch, validateBranchName, GitNexusRcError, } from './analyze-config.js';
|
|
21
24
|
import { runFullAnalysis } from '../core/run-analyze.js';
|
|
22
25
|
import { getRuntimeFingerprint } from '../core/platform/capabilities.js';
|
|
@@ -24,7 +27,8 @@ import { getMaxFileSizeBannerMessage } from '../core/ingestion/utils/max-file-si
|
|
|
24
27
|
import { warnMissingOptionalGrammars, getOptionalGrammarExtensions } from './optional-grammars.js';
|
|
25
28
|
import { glob } from 'glob';
|
|
26
29
|
import fs from 'fs/promises';
|
|
27
|
-
import { cliError } from './cli-message.js';
|
|
30
|
+
import { cliError, cliWarn } from './cli-message.js';
|
|
31
|
+
import { heapCapMbFor, memoryAutopilotDisabled } from '../core/ingestion/utils/effective-ram.js';
|
|
28
32
|
import { EMBEDDING_DIMS_ERROR, normalizeEmbeddingDims } from './embedding-dims.js';
|
|
29
33
|
import { formatElapsed } from './format-elapsed.js';
|
|
30
34
|
import { isHfDownloadFailure } from '../core/embeddings/hf-env.js';
|
|
@@ -52,15 +56,13 @@ const writeFatalToStderr = (label, err) => {
|
|
|
52
56
|
// #2068) is only reachable via `.cause`. Without this the user sees the
|
|
53
57
|
// wrapper's main-thread stack and never the real frame. `cause.stack` already
|
|
54
58
|
// begins with the cause's message, so we print the stack alone (not message +
|
|
55
|
-
// stack) to avoid repeating it.
|
|
56
|
-
//
|
|
57
|
-
//
|
|
58
|
-
//
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
for (let depth = 0; depth < MAX_CAUSE_DEPTH && cause instanceof Error; depth++) {
|
|
59
|
+
// stack) to avoid repeating it. `causeChain` owns the traversal and the depth
|
|
60
|
+
// bound that stops a cyclic `cause` looping — this used to be one of four
|
|
61
|
+
// hand-rolled copies that had already drifted apart on both. Uses
|
|
62
|
+
// realStderrWrite so the redirected console.error's ANSI clear-line wrapping
|
|
63
|
+
// can't erase it (#1169). The head is skipped: it was just printed above.
|
|
64
|
+
for (const cause of causeChain(isErr ? err.cause : undefined)) {
|
|
62
65
|
realStderrWrite(`\n Caused by: ${cause.stack ?? cause.message}\n`);
|
|
63
|
-
cause = cause.cause;
|
|
64
66
|
}
|
|
65
67
|
};
|
|
66
68
|
let fatalHandlersInstalled = false;
|
|
@@ -85,23 +87,20 @@ const installFatalHandlers = () => {
|
|
|
85
87
|
process.exit(1);
|
|
86
88
|
});
|
|
87
89
|
};
|
|
88
|
-
/** Historical floor for the re-exec heap cap — the auto-sizer never goes below
|
|
89
|
-
* this, so small boxes / CI never regress. */
|
|
90
|
-
const DEFAULT_HEAP_MB = 16384;
|
|
91
90
|
/**
|
|
92
|
-
* RAM-aware re-exec heap cap (MB)
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
* limit or `null`; it is honored only as a real, smaller-than-physical cap, because
|
|
91
|
+
* RAM-aware re-exec heap cap (MB) — the formula itself is single-sourced in
|
|
92
|
+
* `core/ingestion/utils/effective-ram.ts` (`heapCapMbFor`), shared with the
|
|
93
|
+
* server's analyze fork. `constrainedBytes` is the cgroup limit or `null`;
|
|
94
|
+
* it is honored only as a real, smaller-than-physical cap, because
|
|
97
95
|
* `process.constrainedMemory()` returns a huge sentinel when UNCONSTRAINED.
|
|
96
|
+
* (Observed rationale: a cap ≥ RAM made V8 collect lazily and swap-thrash —
|
|
97
|
+
* the #2649 worker-timeout cascade on 16 GB boxes.)
|
|
98
98
|
*/
|
|
99
99
|
export function computeHeapCapMb(totalBytes, constrainedBytes) {
|
|
100
100
|
const effectiveBytes = constrainedBytes !== null && constrainedBytes > 0 && constrainedBytes < totalBytes
|
|
101
101
|
? constrainedBytes
|
|
102
102
|
: totalBytes;
|
|
103
|
-
|
|
104
|
-
return Math.max(DEFAULT_HEAP_MB, Math.floor(0.75 * effectiveMb));
|
|
103
|
+
return heapCapMbFor(effectiveBytes);
|
|
105
104
|
}
|
|
106
105
|
function readConstrainedBytes() {
|
|
107
106
|
if (typeof process.constrainedMemory !== 'function')
|
|
@@ -386,21 +385,70 @@ const forceHeapOOMForTestIfEnabled = () => {
|
|
|
386
385
|
// the `DEFAULT_WAL_CHECKPOINT_THRESHOLD` constant in
|
|
387
386
|
// `gitnexus/src/core/lbug/lbug-config.ts` in sync with this value.
|
|
388
387
|
const RECOMMENDED_WAL_CHECKPOINT_THRESHOLD = 64 * 1024 * 1024;
|
|
388
|
+
/**
|
|
389
|
+
* Last `--max-old-space-size` value (MB) in a NODE_OPTIONS string, or `null`
|
|
390
|
+
* when absent/unparseable. Last occurrence wins, matching V8's own
|
|
391
|
+
* later-flag-wins semantics when NODE_OPTIONS repeats a flag.
|
|
392
|
+
*/
|
|
393
|
+
export function parseMaxOldSpaceMb(nodeOptions) {
|
|
394
|
+
// V8 accepts `-` and `_` interchangeably in flag names, and Node accepts a
|
|
395
|
+
// space-separated value in NODE_OPTIONS — honor every spelling of the pin
|
|
396
|
+
// instead of silently overriding it (#2649 review).
|
|
397
|
+
const matches = [...nodeOptions.matchAll(/--max[-_]old[-_]space[-_]size(?:=|\s+)(\d+)/g)];
|
|
398
|
+
if (matches.length === 0)
|
|
399
|
+
return null;
|
|
400
|
+
const mb = Number(matches[matches.length - 1][1]);
|
|
401
|
+
return Number.isFinite(mb) && mb > 0 ? mb : null;
|
|
402
|
+
}
|
|
389
403
|
/** Re-exec the process with the RAM-aware auto heap cap + larger semi-space/stack
|
|
390
|
-
* if we're currently below that.
|
|
404
|
+
* if we're currently below that.
|
|
405
|
+
*
|
|
406
|
+
* Heap-source precedence (#2649):
|
|
407
|
+
* - an explicit per-invocation `--max-old-space-size` (execArgv) always wins;
|
|
408
|
+
* - `GITNEXUS_MEMORY=off` declines the memory autopilot entirely;
|
|
409
|
+
* - an ambient NODE_OPTIONS heap >= the auto cap is honored as-is;
|
|
410
|
+
* - an ambient NODE_OPTIONS heap BELOW the auto cap is treated as an
|
|
411
|
+
* inherited environment default (devcontainers/CI export one for other
|
|
412
|
+
* tooling), not a deliberate per-run choice: warn and respawn with the
|
|
413
|
+
* auto cap. Pre-#2649 this returned early and large repos then OOM'd on
|
|
414
|
+
* whatever heap the environment happened to specify. */
|
|
391
415
|
async function ensureHeap() {
|
|
392
|
-
|
|
393
|
-
|
|
416
|
+
// Explicit opt-out disables auto-sizing ENTIRELY — both the ambient-pin
|
|
417
|
+
// override and the default v8-limit respawn — and is honored SILENTLY:
|
|
418
|
+
// the operator already made the call, and stderr-sensitive consumers
|
|
419
|
+
// (test harnesses, scripts, supervisors that track a single PID) rely on
|
|
420
|
+
// a quiet, single-process run.
|
|
421
|
+
if (memoryAutopilotDisabled())
|
|
394
422
|
return false;
|
|
395
|
-
const
|
|
396
|
-
if (
|
|
423
|
+
const nodeOpts = process.env.NODE_OPTIONS || '';
|
|
424
|
+
if (process.execArgv.some((a) => a.startsWith('--max-old-space-size')))
|
|
397
425
|
return false;
|
|
426
|
+
const ambientHeapMb = parseMaxOldSpaceMb(nodeOpts);
|
|
427
|
+
if (ambientHeapMb !== null) {
|
|
428
|
+
if (ambientHeapMb >= RESPAWN_HEAP_MB)
|
|
429
|
+
return false;
|
|
430
|
+
cliWarn(` NODE_OPTIONS pins the heap to ${ambientHeapMb}MB — below the ${RESPAWN_HEAP_MB}MB this machine's RAM supports.\n` +
|
|
431
|
+
` Re-running analyze with the larger auto-sized cap (set GITNEXUS_MEMORY=off to keep the NODE_OPTIONS value).\n`);
|
|
432
|
+
}
|
|
433
|
+
else {
|
|
434
|
+
const v8Heap = v8.getHeapStatistics().heap_size_limit;
|
|
435
|
+
if (v8Heap >= HEAP_MB * 1024 * 1024 * 0.9)
|
|
436
|
+
return false;
|
|
437
|
+
}
|
|
398
438
|
// --stack-size is a V8 flag not allowed in NODE_OPTIONS on Node 24+, so pass it
|
|
399
439
|
// only as a direct CLI argument. --max-semi-space-size IS allowed in NODE_OPTIONS.
|
|
400
440
|
const cliFlags = [HEAP_FLAG, SEMI_FLAG];
|
|
401
441
|
if (!nodeOpts.includes('--stack-size'))
|
|
402
442
|
cliFlags.push(STACK_FLAG);
|
|
403
|
-
|
|
443
|
+
// Preserve the parent's node flags (execArgv) — dropping them breaks any
|
|
444
|
+
// loader-launched CLI: `node --import tsx src/cli/index.ts` respawned
|
|
445
|
+
// without `--import tsx` cannot execute TypeScript and dies with a
|
|
446
|
+
// swallowed exit 1 (#2649 review). Our heap/semi/stack flags come AFTER
|
|
447
|
+
// execArgv so V8's later-flag-wins semantics resolve duplicates our way.
|
|
448
|
+
// Inspector flags are the one exception: replaying `--inspect[-brk]` makes
|
|
449
|
+
// the child fight the parent for the debug port and die with EADDRINUSE.
|
|
450
|
+
const preservedExecArgv = process.execArgv.filter((a) => !a.startsWith('--inspect'));
|
|
451
|
+
const childArgs = [...preservedExecArgv, ...cliFlags, ...process.argv.slice(1)];
|
|
404
452
|
const childEnv = {
|
|
405
453
|
...process.env,
|
|
406
454
|
NODE_OPTIONS: `${nodeOpts} ${HEAP_FLAG} ${SEMI_FLAG}`.trim(),
|
|
@@ -1047,6 +1095,14 @@ const analyzeCommandImpl = async (inputPath, cliOptions, runnerIdentityAtBootstr
|
|
|
1047
1095
|
const bootstrapArgs = runnerIdentityAtBootstrap
|
|
1048
1096
|
? [runnerIdentityAtBootstrap]
|
|
1049
1097
|
: [];
|
|
1098
|
+
// #2639 review round 2: snapshot which of AGENTS.md/CLAUDE.md are safe to
|
|
1099
|
+
// auto-commit BEFORE runFullAnalysis (and the --skills regeneration
|
|
1100
|
+
// further down) writes to them, so selfCommitContextFiles can tell a
|
|
1101
|
+
// pre-existing unstaged user edit apart from this run's stats refresh
|
|
1102
|
+
// and refuse to sweep the former into the latter's commit.
|
|
1103
|
+
const selfCommitSafety = options.selfCommit === true
|
|
1104
|
+
? snapshotSelfCommitSafety(repoPath, ['AGENTS.md', 'CLAUDE.md'])
|
|
1105
|
+
: undefined;
|
|
1050
1106
|
const result = await runFullAnalysis(repoPath, runOptions, runCallbacks, ...bootstrapArgs);
|
|
1051
1107
|
if (result.alreadyUpToDate) {
|
|
1052
1108
|
// Even the fast path must prove the repo is discoverable. A prior
|
|
@@ -1087,6 +1143,11 @@ const analyzeCommandImpl = async (inputPath, cliOptions, runnerIdentityAtBootstr
|
|
|
1087
1143
|
if (baseRefRefreshed.length > 0) {
|
|
1088
1144
|
console.log(` Updated base_ref to "${resolvedDefaultBranch}" in ${baseRefRefreshed.join(', ')}\n`);
|
|
1089
1145
|
}
|
|
1146
|
+
// #2639: opt-in self-commit of any AGENTS.md/CLAUDE.md churn from this
|
|
1147
|
+
// fast path (e.g. a base_ref refresh above). Best-effort — never throws.
|
|
1148
|
+
if (options.selfCommit === true && selfCommitSafety) {
|
|
1149
|
+
selfCommitContextFiles(repoPath, ['AGENTS.md', 'CLAUDE.md'], selfCommitSafety);
|
|
1150
|
+
}
|
|
1090
1151
|
// Safe to return without process.exit(0) — the early-return path in
|
|
1091
1152
|
// runFullAnalysis never opens LadybugDB, so no native handles prevent exit.
|
|
1092
1153
|
return;
|
|
@@ -1160,6 +1221,13 @@ const analyzeCommandImpl = async (inputPath, cliOptions, runnerIdentityAtBootstr
|
|
|
1160
1221
|
/* best-effort */
|
|
1161
1222
|
}
|
|
1162
1223
|
}
|
|
1224
|
+
// #2639: opt-in self-commit of any AGENTS.md/CLAUDE.md churn written by
|
|
1225
|
+
// this run (the primary generateAIContextFiles call inside
|
|
1226
|
+
// runFullAnalysis, and/or the --skills regeneration above). Best-effort
|
|
1227
|
+
// — never throws, so a missing git identity etc. can't fail `analyze`.
|
|
1228
|
+
if (options.selfCommit === true && selfCommitSafety) {
|
|
1229
|
+
selfCommitContextFiles(repoPath, ['AGENTS.md', 'CLAUDE.md'], selfCommitSafety);
|
|
1230
|
+
}
|
|
1163
1231
|
const totalTime = ((Date.now() - t0) / 1000).toFixed(1);
|
|
1164
1232
|
clearInterval(elapsedTimer);
|
|
1165
1233
|
process.removeListener('SIGINT', sigintHandler);
|
|
@@ -1172,6 +1240,25 @@ const analyzeCommandImpl = async (inputPath, cliOptions, runnerIdentityAtBootstr
|
|
|
1172
1240
|
bar.stop();
|
|
1173
1241
|
// ── Summary ────────────────────────────────────────────────────
|
|
1174
1242
|
const s = result.stats;
|
|
1243
|
+
// A collapsed graph write is NOT a successful index. The other incomplete
|
|
1244
|
+
// reasons (`incremental-in-progress`, `embedding-checkpoint-pending`)
|
|
1245
|
+
// describe a run that did what it said and left work for next time; this
|
|
1246
|
+
// one means most of your edges are gone, so every query answers a confident
|
|
1247
|
+
// empty and the exit code is the only thing automation reads. Printing
|
|
1248
|
+
// "indexed successfully" and exiting 0 here would be the same class of
|
|
1249
|
+
// false certainty the check itself was written to remove.
|
|
1250
|
+
if (result.graphWriteCollapsed) {
|
|
1251
|
+
const { expected, persisted } = result.graphWriteCollapsed;
|
|
1252
|
+
console.log(`\n Repository indexed INCOMPLETELY (${totalTime}s)\n`);
|
|
1253
|
+
console.log(` Graph write collapsed: the pipeline produced ${expected.toLocaleString()} relationships\n` +
|
|
1254
|
+
` but only ${persisted.toLocaleString()} are readable from the index. Queries will answer\n` +
|
|
1255
|
+
` with missing edges rather than an error.\n\n` +
|
|
1256
|
+
` The index is recorded INCOMPLETE (graph-write-collapsed). Re-run\n` +
|
|
1257
|
+
` \`gitnexus analyze --force\`; if it recurs, check disk space and run \`gitnexus doctor\`.`);
|
|
1258
|
+
console.log(` ${repoPath}`);
|
|
1259
|
+
process.exitCode = 1;
|
|
1260
|
+
return;
|
|
1261
|
+
}
|
|
1175
1262
|
console.log(`\n Repository indexed successfully (${totalTime}s)\n`);
|
|
1176
1263
|
console.log(` ${(s.nodes ?? 0).toLocaleString()} nodes | ${(s.edges ?? 0).toLocaleString()} edges | ${s.communities ?? 0} clusters | ${s.processes ?? 0} flows`);
|
|
1177
1264
|
console.log(` ${repoPath}`);
|
|
@@ -1179,9 +1266,24 @@ const analyzeCommandImpl = async (inputPath, cliOptions, runnerIdentityAtBootstr
|
|
|
1179
1266
|
// progress-bar log() that fired mid-run has already scrolled away, so the
|
|
1180
1267
|
// degraded-search state must also appear in the final summary (#1161).
|
|
1181
1268
|
if (result.ftsSkipped) {
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1269
|
+
// #2658 review L2: a build/verify failure is NOT an extension-unavailable
|
|
1270
|
+
// problem — sending the user to install the extension is the wrong remedy.
|
|
1271
|
+
if (result.ftsSkipReason === 'build-failed') {
|
|
1272
|
+
console.log(`\n Warning: full-text/BM25 search is disabled — the search index build failed this run.\n` +
|
|
1273
|
+
` The FTS extension is available; rerun \`gitnexus analyze --repair-fts\`. If it persists,\n` +
|
|
1274
|
+
` check the disk for space or corruption. Run \`gitnexus doctor\` for details.`);
|
|
1275
|
+
}
|
|
1276
|
+
else {
|
|
1277
|
+
console.log(
|
|
1278
|
+
// NOT "then rerun" (#2841 §5.C): this run stamped `lastCommit`, so a
|
|
1279
|
+
// plain rerun on an unchanged tree takes the up-to-date fast path and
|
|
1280
|
+
// returns before Phase 3 could rebuild anything — the advice would be
|
|
1281
|
+
// ineffective exactly when the user follows it. `--repair-fts` is the
|
|
1282
|
+
// verb that rebuilds the search indexes without re-parsing the repo.
|
|
1283
|
+
`\n Warning: full-text/BM25 search is disabled — the LadybugDB FTS extension was unavailable.\n` +
|
|
1284
|
+
` Install it once with network access (GITNEXUS_LBUG_EXTENSION_INSTALL=auto), then run\n` +
|
|
1285
|
+
` \`gitnexus analyze --repair-fts\` to build the search indexes. Run \`gitnexus doctor\` for details.`);
|
|
1286
|
+
}
|
|
1185
1287
|
}
|
|
1186
1288
|
try {
|
|
1187
1289
|
await fs.access(getGlobalRegistryPath());
|
|
@@ -1212,6 +1314,18 @@ const analyzeCommandImpl = async (inputPath, cliOptions, runnerIdentityAtBootstr
|
|
|
1212
1314
|
process.exitCode = 1;
|
|
1213
1315
|
return;
|
|
1214
1316
|
}
|
|
1317
|
+
// Another analyze held the index lock past the configured wait ceiling
|
|
1318
|
+
// (#2658, GITNEXUS_INDEX_LOCK_TIMEOUT_MS). The on-disk index is being
|
|
1319
|
+
// refreshed by the holder — this is a clean, expected condition, not a
|
|
1320
|
+
// crash, so render the message without a stack trace.
|
|
1321
|
+
if (err instanceof IndexLockTimeoutError) {
|
|
1322
|
+
cliError(` Another gitnexus analyze (pid ${err.holder.pid} on ${err.holder.hostname}) is ` +
|
|
1323
|
+
`already refreshing this index and did not finish within the wait window.\n` +
|
|
1324
|
+
` The on-disk index is being updated by that run. Retry later, or raise\n` +
|
|
1325
|
+
` GITNEXUS_INDEX_LOCK_TIMEOUT_MS to wait longer.\n`, { recoveryHint: 'index-lock-timeout', holderPid: err.holder.pid });
|
|
1326
|
+
process.exitCode = 1;
|
|
1327
|
+
return;
|
|
1328
|
+
}
|
|
1215
1329
|
// Finalize invariant failure (#1169) — keep the rich actionable
|
|
1216
1330
|
// message intact and write through realStderrWrite so it can't be
|
|
1217
1331
|
// erased by a leftover bar refresh on slow terminals.
|
|
@@ -1225,6 +1339,35 @@ const analyzeCommandImpl = async (inputPath, cliOptions, runnerIdentityAtBootstr
|
|
|
1225
1339
|
process.exitCode = 1;
|
|
1226
1340
|
return;
|
|
1227
1341
|
}
|
|
1342
|
+
// An extracted edge whose FROM→TO label pair is missing from GitNexus's own
|
|
1343
|
+
// relation DDL (#2789). `assertDeclaredPair` aborts the run rather than let
|
|
1344
|
+
// the bulk COPY fail late and silently drop the edge, so the user sees a
|
|
1345
|
+
// mid-run crash inside GitNexus internals with nothing to act on. Name the
|
|
1346
|
+
// pair, the relationship and the file that produced it, and say plainly that
|
|
1347
|
+
// a re-run cannot help — this is deterministic for the same input.
|
|
1348
|
+
// Checked by TYPE (repo norm, #2385) BEFORE the message-text heuristics
|
|
1349
|
+
// below, and through the `cause` chain because the ingestion phase runner
|
|
1350
|
+
// rewraps every phase failure as `Phase 'X' failed: …`.
|
|
1351
|
+
const undeclaredPair = findUndeclaredRelationPairError(err);
|
|
1352
|
+
if (undeclaredPair !== undefined) {
|
|
1353
|
+
// Render the error's OWN message indented — same idiom as the
|
|
1354
|
+
// `LbugWipeError` and page-size branches below. `UndeclaredRelationPairError`
|
|
1355
|
+
// builds a fully self-contained message (pair, relationship type, both node
|
|
1356
|
+
// ids, source file, issue URL, `.gitnexusignore` workaround) precisely
|
|
1357
|
+
// because `gitnexus serve` forwards only `err.message` over worker IPC.
|
|
1358
|
+
// Re-rendering those fields here would be a second copy of one string, free
|
|
1359
|
+
// to drift from the first — and the actionable half would reach CLI users
|
|
1360
|
+
// only. `undeclaredPair.message`, not the outer `msg`: the real error may be
|
|
1361
|
+
// several `cause` levels below the phase wrapper `msg` came from.
|
|
1362
|
+
cliError(` ${undeclaredPair.message.replace(/\n/g, '\n ')}\n`, {
|
|
1363
|
+
recoveryHint: 'undeclared-relation-pair',
|
|
1364
|
+
labelPair: undeclaredPair.pairKey,
|
|
1365
|
+
relationType: undeclaredPair.relationType,
|
|
1366
|
+
sourceFile: undeclaredPair.sourceFile,
|
|
1367
|
+
});
|
|
1368
|
+
process.exitCode = 1;
|
|
1369
|
+
return;
|
|
1370
|
+
}
|
|
1228
1371
|
// WAL corruption — the index file is unreadable. Give a clear recovery
|
|
1229
1372
|
// path without a confusing stack trace (the native error message alone
|
|
1230
1373
|
// is enough signal).
|
|
@@ -12,7 +12,7 @@ import { type CliMessageKey, type CliMessageVars } from './i18n/index.js';
|
|
|
12
12
|
* Consumers can import this type to narrow log-record `recoveryHint`
|
|
13
13
|
* fields without restating the literal list.
|
|
14
14
|
*/
|
|
15
|
-
export type RecoveryHint = 'wal-corruption' | 'wal-checkpoint-threshold' | 'lbug-wipe-failed' | 'lbug-page-size' | 'heap-oom-respawn' | 'native-worker-abort' | 'hf-endpoint-unreachable' | 'http-embedding-endpoint-error' | 'embedding-dims-invalid' | 'local-embedding-unsupported' | 'local-embedding-stack-missing' | 'large-repo' | 'npm-resolution' | 'module-not-found' | 'gitnexusrc-invalid' | 'default-branch-invalid';
|
|
15
|
+
export type RecoveryHint = 'wal-corruption' | 'wal-checkpoint-threshold' | 'lbug-wipe-failed' | 'lbug-page-size' | 'heap-oom-respawn' | 'native-worker-abort' | 'hf-endpoint-unreachable' | 'http-embedding-endpoint-error' | 'embedding-dims-invalid' | 'local-embedding-unsupported' | 'local-embedding-stack-missing' | 'large-repo' | 'npm-resolution' | 'module-not-found' | 'gitnexusrc-invalid' | 'default-branch-invalid' | 'index-lock-timeout' | 'undeclared-relation-pair';
|
|
16
16
|
/**
|
|
17
17
|
* Common shape for the optional structured-field bag passed to
|
|
18
18
|
* `cliError`/`cliWarn`/`cliInfo`. Typed so the `recoveryHint` slot is
|
|
@@ -1,13 +1,30 @@
|
|
|
1
1
|
import { t } from './i18n/index.js';
|
|
2
|
+
import { formatSymbolLine } from './format-symbol.js';
|
|
2
3
|
export function formatDetectChangesResult(result) {
|
|
3
4
|
const payload = (result ?? {});
|
|
4
5
|
if (payload.error)
|
|
5
6
|
return t('common.error', { message: String(payload.error) });
|
|
6
7
|
const summary = payload.summary ?? {};
|
|
8
|
+
// A swallowed query failure sets `partial` and leaves the counts at zero
|
|
9
|
+
// (#2283). Printing only "No changes detected." turns a degraded run into a
|
|
10
|
+
// clean bill of health for the pre-commit gate, so say so either way.
|
|
11
|
+
// `truncated` is its sibling flag: the backend caps the changed_symbols
|
|
12
|
+
// LISTING (never the counts), so a short list is not proof of a short diff.
|
|
13
|
+
// Both lead the output — a caveat printed after the summary is read too late.
|
|
14
|
+
const notes = [];
|
|
15
|
+
if (payload.partial)
|
|
16
|
+
notes.push(t('tool.detectChanges.partial'));
|
|
17
|
+
// The plain truncation note reassures that the counts are whole. That is only
|
|
18
|
+
// true when the run did NOT also degrade — `changed_count` sums the batches
|
|
19
|
+
// that succeeded — so the two flags together get a different sentence.
|
|
20
|
+
if (payload.truncated)
|
|
21
|
+
notes.push(t(payload.partial ? 'tool.detectChanges.truncatedDegraded' : 'tool.detectChanges.truncated'));
|
|
7
22
|
if ((summary.changed_count ?? 0) === 0) {
|
|
8
|
-
return t('tool.detectChanges.noChanges');
|
|
23
|
+
return [...notes, t('tool.detectChanges.noChanges')].join('\n');
|
|
9
24
|
}
|
|
10
25
|
const lines = [];
|
|
26
|
+
if (notes.length > 0)
|
|
27
|
+
lines.push(...notes, '');
|
|
11
28
|
lines.push(t('tool.detectChanges.changesSummary', {
|
|
12
29
|
files: summary.changed_files ?? 0,
|
|
13
30
|
symbols: summary.changed_count ?? 0,
|
|
@@ -22,7 +39,7 @@ export function formatDetectChangesResult(result) {
|
|
|
22
39
|
lines.push(t('tool.detectChanges.changedSymbols'));
|
|
23
40
|
const shown = changed.slice(0, 15);
|
|
24
41
|
for (const symbol of shown) {
|
|
25
|
-
lines.push(
|
|
42
|
+
lines.push(formatSymbolLine(symbol.type, symbol.name, symbol.filePath));
|
|
26
43
|
}
|
|
27
44
|
// Overflow is measured against the TRUE total (summary.changed_count), not
|
|
28
45
|
// the array length — the array may already be `--limit`-sliced, so using its
|