@codragraph/cli 1.6.2
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 +341 -0
- package/dist/_shared/graph/types.d.ts +81 -0
- package/dist/_shared/graph/types.d.ts.map +1 -0
- package/dist/_shared/graph/types.js +8 -0
- package/dist/_shared/graph/types.js.map +1 -0
- package/dist/_shared/index.d.ts +55 -0
- package/dist/_shared/index.d.ts.map +1 -0
- package/dist/_shared/index.js +39 -0
- package/dist/_shared/index.js.map +1 -0
- package/dist/_shared/language-detection.d.ts +23 -0
- package/dist/_shared/language-detection.d.ts.map +1 -0
- package/dist/_shared/language-detection.js +139 -0
- package/dist/_shared/language-detection.js.map +1 -0
- package/dist/_shared/languages.d.ts +26 -0
- package/dist/_shared/languages.d.ts.map +1 -0
- package/dist/_shared/languages.js +27 -0
- package/dist/_shared/languages.js.map +1 -0
- package/dist/_shared/lbug/schema-constants.d.ts +16 -0
- package/dist/_shared/lbug/schema-constants.d.ts.map +1 -0
- package/dist/_shared/lbug/schema-constants.js +67 -0
- package/dist/_shared/lbug/schema-constants.js.map +1 -0
- package/dist/_shared/mro-strategy.d.ts +41 -0
- package/dist/_shared/mro-strategy.d.ts.map +1 -0
- package/dist/_shared/mro-strategy.js +2 -0
- package/dist/_shared/mro-strategy.js.map +1 -0
- package/dist/_shared/pipeline.d.ts +16 -0
- package/dist/_shared/pipeline.d.ts.map +1 -0
- package/dist/_shared/pipeline.js +5 -0
- package/dist/_shared/pipeline.js.map +1 -0
- package/dist/_shared/scope-resolution/def-index.d.ts +36 -0
- package/dist/_shared/scope-resolution/def-index.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/def-index.js +51 -0
- package/dist/_shared/scope-resolution/def-index.js.map +1 -0
- package/dist/_shared/scope-resolution/evidence-weights.d.ts +69 -0
- package/dist/_shared/scope-resolution/evidence-weights.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/evidence-weights.js +84 -0
- package/dist/_shared/scope-resolution/evidence-weights.js.map +1 -0
- package/dist/_shared/scope-resolution/finalize-algorithm.d.ts +139 -0
- package/dist/_shared/scope-resolution/finalize-algorithm.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/finalize-algorithm.js +479 -0
- package/dist/_shared/scope-resolution/finalize-algorithm.js.map +1 -0
- package/dist/_shared/scope-resolution/language-classification.d.ts +26 -0
- package/dist/_shared/scope-resolution/language-classification.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/language-classification.js +44 -0
- package/dist/_shared/scope-resolution/language-classification.js.map +1 -0
- package/dist/_shared/scope-resolution/method-dispatch-index.d.ts +80 -0
- package/dist/_shared/scope-resolution/method-dispatch-index.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/method-dispatch-index.js +79 -0
- package/dist/_shared/scope-resolution/method-dispatch-index.js.map +1 -0
- package/dist/_shared/scope-resolution/module-scope-index.d.ts +46 -0
- package/dist/_shared/scope-resolution/module-scope-index.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/module-scope-index.js +58 -0
- package/dist/_shared/scope-resolution/module-scope-index.js.map +1 -0
- package/dist/_shared/scope-resolution/origin-priority.d.ts +14 -0
- package/dist/_shared/scope-resolution/origin-priority.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/origin-priority.js +21 -0
- package/dist/_shared/scope-resolution/origin-priority.js.map +1 -0
- package/dist/_shared/scope-resolution/parsed-file.d.ts +76 -0
- package/dist/_shared/scope-resolution/parsed-file.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/parsed-file.js +54 -0
- package/dist/_shared/scope-resolution/parsed-file.js.map +1 -0
- package/dist/_shared/scope-resolution/position-index.d.ts +62 -0
- package/dist/_shared/scope-resolution/position-index.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/position-index.js +134 -0
- package/dist/_shared/scope-resolution/position-index.js.map +1 -0
- package/dist/_shared/scope-resolution/qualified-name-index.d.ts +44 -0
- package/dist/_shared/scope-resolution/qualified-name-index.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/qualified-name-index.js +75 -0
- package/dist/_shared/scope-resolution/qualified-name-index.js.map +1 -0
- package/dist/_shared/scope-resolution/reference-site.d.ts +75 -0
- package/dist/_shared/scope-resolution/reference-site.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/reference-site.js +24 -0
- package/dist/_shared/scope-resolution/reference-site.js.map +1 -0
- package/dist/_shared/scope-resolution/registries/class-registry.d.ts +27 -0
- package/dist/_shared/scope-resolution/registries/class-registry.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/registries/class-registry.js +30 -0
- package/dist/_shared/scope-resolution/registries/class-registry.js.map +1 -0
- package/dist/_shared/scope-resolution/registries/context.d.ts +69 -0
- package/dist/_shared/scope-resolution/registries/context.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/registries/context.js +44 -0
- package/dist/_shared/scope-resolution/registries/context.js.map +1 -0
- package/dist/_shared/scope-resolution/registries/evidence.d.ts +56 -0
- package/dist/_shared/scope-resolution/registries/evidence.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/registries/evidence.js +150 -0
- package/dist/_shared/scope-resolution/registries/evidence.js.map +1 -0
- package/dist/_shared/scope-resolution/registries/field-registry.d.ts +26 -0
- package/dist/_shared/scope-resolution/registries/field-registry.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/registries/field-registry.js +31 -0
- package/dist/_shared/scope-resolution/registries/field-registry.js.map +1 -0
- package/dist/_shared/scope-resolution/registries/lookup-core.d.ts +81 -0
- package/dist/_shared/scope-resolution/registries/lookup-core.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/registries/lookup-core.js +332 -0
- package/dist/_shared/scope-resolution/registries/lookup-core.js.map +1 -0
- package/dist/_shared/scope-resolution/registries/lookup-qualified.d.ts +33 -0
- package/dist/_shared/scope-resolution/registries/lookup-qualified.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/registries/lookup-qualified.js +56 -0
- package/dist/_shared/scope-resolution/registries/lookup-qualified.js.map +1 -0
- package/dist/_shared/scope-resolution/registries/method-registry.d.ts +36 -0
- package/dist/_shared/scope-resolution/registries/method-registry.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/registries/method-registry.js +32 -0
- package/dist/_shared/scope-resolution/registries/method-registry.js.map +1 -0
- package/dist/_shared/scope-resolution/registries/tie-breaks.d.ts +43 -0
- package/dist/_shared/scope-resolution/registries/tie-breaks.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/registries/tie-breaks.js +60 -0
- package/dist/_shared/scope-resolution/registries/tie-breaks.js.map +1 -0
- package/dist/_shared/scope-resolution/resolve-type-ref.d.ts +53 -0
- package/dist/_shared/scope-resolution/resolve-type-ref.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/resolve-type-ref.js +126 -0
- package/dist/_shared/scope-resolution/resolve-type-ref.js.map +1 -0
- package/dist/_shared/scope-resolution/scope-id.d.ts +43 -0
- package/dist/_shared/scope-resolution/scope-id.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/scope-id.js +46 -0
- package/dist/_shared/scope-resolution/scope-id.js.map +1 -0
- package/dist/_shared/scope-resolution/scope-tree.d.ts +61 -0
- package/dist/_shared/scope-resolution/scope-tree.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/scope-tree.js +186 -0
- package/dist/_shared/scope-resolution/scope-tree.js.map +1 -0
- package/dist/_shared/scope-resolution/shadow/aggregate.d.ts +63 -0
- package/dist/_shared/scope-resolution/shadow/aggregate.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/shadow/aggregate.js +122 -0
- package/dist/_shared/scope-resolution/shadow/aggregate.js.map +1 -0
- package/dist/_shared/scope-resolution/shadow/diff.d.ts +59 -0
- package/dist/_shared/scope-resolution/shadow/diff.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/shadow/diff.js +79 -0
- package/dist/_shared/scope-resolution/shadow/diff.js.map +1 -0
- package/dist/_shared/scope-resolution/symbol-definition.d.ts +34 -0
- package/dist/_shared/scope-resolution/symbol-definition.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/symbol-definition.js +12 -0
- package/dist/_shared/scope-resolution/symbol-definition.js.map +1 -0
- package/dist/_shared/scope-resolution/types.d.ts +356 -0
- package/dist/_shared/scope-resolution/types.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/types.js +17 -0
- package/dist/_shared/scope-resolution/types.js.map +1 -0
- package/dist/cli/ai-context.d.ts +27 -0
- package/dist/cli/ai-context.js +270 -0
- package/dist/cli/analyze.d.ts +43 -0
- package/dist/cli/analyze.js +312 -0
- package/dist/cli/augment.d.ts +13 -0
- package/dist/cli/augment.js +33 -0
- package/dist/cli/clean.d.ts +10 -0
- package/dist/cli/clean.js +78 -0
- package/dist/cli/config.d.ts +27 -0
- package/dist/cli/config.js +106 -0
- package/dist/cli/eval-server.d.ts +37 -0
- package/dist/cli/eval-server.js +398 -0
- package/dist/cli/graphstore.d.ts +40 -0
- package/dist/cli/graphstore.js +639 -0
- package/dist/cli/group.d.ts +2 -0
- package/dist/cli/group.js +306 -0
- package/dist/cli/index-repo.d.ts +15 -0
- package/dist/cli/index-repo.js +120 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +236 -0
- package/dist/cli/lazy-action.d.ts +6 -0
- package/dist/cli/lazy-action.js +18 -0
- package/dist/cli/list.d.ts +6 -0
- package/dist/cli/list.js +40 -0
- package/dist/cli/mcp.d.ts +8 -0
- package/dist/cli/mcp.js +36 -0
- package/dist/cli/remove.d.ts +30 -0
- package/dist/cli/remove.js +99 -0
- package/dist/cli/serve.d.ts +4 -0
- package/dist/cli/serve.js +37 -0
- package/dist/cli/setup.d.ts +8 -0
- package/dist/cli/setup.js +543 -0
- package/dist/cli/skill-gen.d.ts +26 -0
- package/dist/cli/skill-gen.js +555 -0
- package/dist/cli/status.d.ts +6 -0
- package/dist/cli/status.js +36 -0
- package/dist/cli/tool.d.ts +43 -0
- package/dist/cli/tool.js +168 -0
- package/dist/cli/wiki.d.ts +21 -0
- package/dist/cli/wiki.js +579 -0
- package/dist/config/ignore-service.d.ts +35 -0
- package/dist/config/ignore-service.js +436 -0
- package/dist/config/supported-languages.d.ts +13 -0
- package/dist/config/supported-languages.js +13 -0
- package/dist/core/augmentation/engine.d.ts +26 -0
- package/dist/core/augmentation/engine.js +252 -0
- package/dist/core/embeddings/ast-utils.d.ts +22 -0
- package/dist/core/embeddings/ast-utils.js +105 -0
- package/dist/core/embeddings/character-chunk.d.ts +12 -0
- package/dist/core/embeddings/character-chunk.js +43 -0
- package/dist/core/embeddings/chunker.d.ts +14 -0
- package/dist/core/embeddings/chunker.js +239 -0
- package/dist/core/embeddings/embedder.d.ts +65 -0
- package/dist/core/embeddings/embedder.js +320 -0
- package/dist/core/embeddings/embedding-pipeline.d.ts +62 -0
- package/dist/core/embeddings/embedding-pipeline.js +486 -0
- package/dist/core/embeddings/http-client.d.ts +31 -0
- package/dist/core/embeddings/http-client.js +179 -0
- package/dist/core/embeddings/index.d.ts +10 -0
- package/dist/core/embeddings/index.js +10 -0
- package/dist/core/embeddings/line-index.d.ts +7 -0
- package/dist/core/embeddings/line-index.js +42 -0
- package/dist/core/embeddings/server-mapping.d.ts +15 -0
- package/dist/core/embeddings/server-mapping.js +33 -0
- package/dist/core/embeddings/structural-extractor.d.ts +15 -0
- package/dist/core/embeddings/structural-extractor.js +58 -0
- package/dist/core/embeddings/text-generator.d.ts +31 -0
- package/dist/core/embeddings/text-generator.js +208 -0
- package/dist/core/embeddings/types.d.ts +207 -0
- package/dist/core/embeddings/types.js +200 -0
- package/dist/core/git-staleness.d.ts +31 -0
- package/dist/core/git-staleness.js +137 -0
- package/dist/core/graph/graph.d.ts +2 -0
- package/dist/core/graph/graph.js +173 -0
- package/dist/core/graph/types.d.ts +36 -0
- package/dist/core/graph/types.js +1 -0
- package/dist/core/graphstore/index.d.ts +46 -0
- package/dist/core/graphstore/index.js +80 -0
- package/dist/core/graphstore/lbug-row-source.d.ts +19 -0
- package/dist/core/graphstore/lbug-row-source.js +141 -0
- package/dist/core/group/bridge-db.d.ts +82 -0
- package/dist/core/group/bridge-db.js +460 -0
- package/dist/core/group/bridge-schema.d.ts +27 -0
- package/dist/core/group/bridge-schema.js +55 -0
- package/dist/core/group/config-parser.d.ts +7 -0
- package/dist/core/group/config-parser.js +100 -0
- package/dist/core/group/contract-extractor.d.ts +7 -0
- package/dist/core/group/contract-extractor.js +1 -0
- package/dist/core/group/cross-impact.d.ts +41 -0
- package/dist/core/group/cross-impact.js +441 -0
- package/dist/core/group/extractors/fs-utils.d.ts +10 -0
- package/dist/core/group/extractors/fs-utils.js +24 -0
- package/dist/core/group/extractors/grpc-extractor.d.ts +25 -0
- package/dist/core/group/extractors/grpc-extractor.js +401 -0
- package/dist/core/group/extractors/grpc-patterns/go.d.ts +2 -0
- package/dist/core/group/extractors/grpc-patterns/go.js +97 -0
- package/dist/core/group/extractors/grpc-patterns/index.d.ts +19 -0
- package/dist/core/group/extractors/grpc-patterns/index.js +46 -0
- package/dist/core/group/extractors/grpc-patterns/java.d.ts +2 -0
- package/dist/core/group/extractors/grpc-patterns/java.js +173 -0
- package/dist/core/group/extractors/grpc-patterns/node.d.ts +4 -0
- package/dist/core/group/extractors/grpc-patterns/node.js +290 -0
- package/dist/core/group/extractors/grpc-patterns/proto.d.ts +9 -0
- package/dist/core/group/extractors/grpc-patterns/proto.js +134 -0
- package/dist/core/group/extractors/grpc-patterns/python.d.ts +2 -0
- package/dist/core/group/extractors/grpc-patterns/python.js +67 -0
- package/dist/core/group/extractors/grpc-patterns/types.d.ts +50 -0
- package/dist/core/group/extractors/grpc-patterns/types.js +1 -0
- package/dist/core/group/extractors/http-patterns/go.d.ts +2 -0
- package/dist/core/group/extractors/http-patterns/go.js +215 -0
- package/dist/core/group/extractors/http-patterns/index.d.ts +17 -0
- package/dist/core/group/extractors/http-patterns/index.js +44 -0
- package/dist/core/group/extractors/http-patterns/java.d.ts +2 -0
- package/dist/core/group/extractors/http-patterns/java.js +253 -0
- package/dist/core/group/extractors/http-patterns/node.d.ts +4 -0
- package/dist/core/group/extractors/http-patterns/node.js +484 -0
- package/dist/core/group/extractors/http-patterns/php.d.ts +2 -0
- package/dist/core/group/extractors/http-patterns/php.js +178 -0
- package/dist/core/group/extractors/http-patterns/python.d.ts +2 -0
- package/dist/core/group/extractors/http-patterns/python.js +133 -0
- package/dist/core/group/extractors/http-patterns/types.d.ts +61 -0
- package/dist/core/group/extractors/http-patterns/types.js +1 -0
- package/dist/core/group/extractors/http-route-extractor.d.ts +21 -0
- package/dist/core/group/extractors/http-route-extractor.js +421 -0
- package/dist/core/group/extractors/manifest-extractor.d.ts +54 -0
- package/dist/core/group/extractors/manifest-extractor.js +292 -0
- package/dist/core/group/extractors/topic-extractor.d.ts +8 -0
- package/dist/core/group/extractors/topic-extractor.js +97 -0
- package/dist/core/group/extractors/topic-patterns/go.d.ts +2 -0
- package/dist/core/group/extractors/topic-patterns/go.js +120 -0
- package/dist/core/group/extractors/topic-patterns/index.d.ts +14 -0
- package/dist/core/group/extractors/topic-patterns/index.js +38 -0
- package/dist/core/group/extractors/topic-patterns/java.d.ts +2 -0
- package/dist/core/group/extractors/topic-patterns/java.js +80 -0
- package/dist/core/group/extractors/topic-patterns/node.d.ts +4 -0
- package/dist/core/group/extractors/topic-patterns/node.js +155 -0
- package/dist/core/group/extractors/topic-patterns/python.d.ts +2 -0
- package/dist/core/group/extractors/topic-patterns/python.js +116 -0
- package/dist/core/group/extractors/topic-patterns/types.d.ts +25 -0
- package/dist/core/group/extractors/topic-patterns/types.js +10 -0
- package/dist/core/group/extractors/tree-sitter-scanner.d.ts +113 -0
- package/dist/core/group/extractors/tree-sitter-scanner.js +94 -0
- package/dist/core/group/group-path-utils.d.ts +17 -0
- package/dist/core/group/group-path-utils.js +40 -0
- package/dist/core/group/matching.d.ts +13 -0
- package/dist/core/group/matching.js +198 -0
- package/dist/core/group/normalization.d.ts +3 -0
- package/dist/core/group/normalization.js +115 -0
- package/dist/core/group/resolve-at-member.d.ts +10 -0
- package/dist/core/group/resolve-at-member.js +31 -0
- package/dist/core/group/service-boundary-detector.d.ts +8 -0
- package/dist/core/group/service-boundary-detector.js +155 -0
- package/dist/core/group/service.d.ts +55 -0
- package/dist/core/group/service.js +394 -0
- package/dist/core/group/storage.d.ts +9 -0
- package/dist/core/group/storage.js +91 -0
- package/dist/core/group/sync.d.ts +21 -0
- package/dist/core/group/sync.js +196 -0
- package/dist/core/group/types.d.ts +160 -0
- package/dist/core/group/types.js +1 -0
- package/dist/core/ingestion/ast-cache.d.ts +26 -0
- package/dist/core/ingestion/ast-cache.js +47 -0
- package/dist/core/ingestion/binding-accumulator.d.ts +212 -0
- package/dist/core/ingestion/binding-accumulator.js +336 -0
- package/dist/core/ingestion/call-extractors/configs/c-cpp.d.ts +3 -0
- package/dist/core/ingestion/call-extractors/configs/c-cpp.js +8 -0
- package/dist/core/ingestion/call-extractors/configs/csharp.d.ts +2 -0
- package/dist/core/ingestion/call-extractors/configs/csharp.js +6 -0
- package/dist/core/ingestion/call-extractors/configs/dart.d.ts +2 -0
- package/dist/core/ingestion/call-extractors/configs/dart.js +5 -0
- package/dist/core/ingestion/call-extractors/configs/go.d.ts +2 -0
- package/dist/core/ingestion/call-extractors/configs/go.js +5 -0
- package/dist/core/ingestion/call-extractors/configs/jvm.d.ts +3 -0
- package/dist/core/ingestion/call-extractors/configs/jvm.js +51 -0
- package/dist/core/ingestion/call-extractors/configs/php.d.ts +2 -0
- package/dist/core/ingestion/call-extractors/configs/php.js +5 -0
- package/dist/core/ingestion/call-extractors/configs/python.d.ts +2 -0
- package/dist/core/ingestion/call-extractors/configs/python.js +5 -0
- package/dist/core/ingestion/call-extractors/configs/ruby.d.ts +2 -0
- package/dist/core/ingestion/call-extractors/configs/ruby.js +5 -0
- package/dist/core/ingestion/call-extractors/configs/rust.d.ts +2 -0
- package/dist/core/ingestion/call-extractors/configs/rust.js +5 -0
- package/dist/core/ingestion/call-extractors/configs/swift.d.ts +2 -0
- package/dist/core/ingestion/call-extractors/configs/swift.js +5 -0
- package/dist/core/ingestion/call-extractors/configs/typescript-javascript.d.ts +3 -0
- package/dist/core/ingestion/call-extractors/configs/typescript-javascript.js +8 -0
- package/dist/core/ingestion/call-extractors/generic.d.ts +5 -0
- package/dist/core/ingestion/call-extractors/generic.js +59 -0
- package/dist/core/ingestion/call-processor.d.ts +235 -0
- package/dist/core/ingestion/call-processor.js +2639 -0
- package/dist/core/ingestion/call-routing.d.ts +55 -0
- package/dist/core/ingestion/call-routing.js +95 -0
- package/dist/core/ingestion/call-types.d.ts +135 -0
- package/dist/core/ingestion/call-types.js +2 -0
- package/dist/core/ingestion/class-extractors/configs/c-cpp.d.ts +3 -0
- package/dist/core/ingestion/class-extractors/configs/c-cpp.js +11 -0
- package/dist/core/ingestion/class-extractors/configs/csharp.d.ts +2 -0
- package/dist/core/ingestion/class-extractors/configs/csharp.js +21 -0
- package/dist/core/ingestion/class-extractors/configs/dart.d.ts +2 -0
- package/dist/core/ingestion/class-extractors/configs/dart.js +7 -0
- package/dist/core/ingestion/class-extractors/configs/go.d.ts +2 -0
- package/dist/core/ingestion/class-extractors/configs/go.js +20 -0
- package/dist/core/ingestion/class-extractors/configs/jvm.d.ts +3 -0
- package/dist/core/ingestion/class-extractors/configs/jvm.js +35 -0
- package/dist/core/ingestion/class-extractors/configs/php.d.ts +2 -0
- package/dist/core/ingestion/class-extractors/configs/php.js +7 -0
- package/dist/core/ingestion/class-extractors/configs/python.d.ts +2 -0
- package/dist/core/ingestion/class-extractors/configs/python.js +7 -0
- package/dist/core/ingestion/class-extractors/configs/ruby.d.ts +2 -0
- package/dist/core/ingestion/class-extractors/configs/ruby.js +7 -0
- package/dist/core/ingestion/class-extractors/configs/rust.d.ts +2 -0
- package/dist/core/ingestion/class-extractors/configs/rust.js +7 -0
- package/dist/core/ingestion/class-extractors/configs/swift.d.ts +2 -0
- package/dist/core/ingestion/class-extractors/configs/swift.js +18 -0
- package/dist/core/ingestion/class-extractors/configs/typescript-javascript.d.ts +4 -0
- package/dist/core/ingestion/class-extractors/configs/typescript-javascript.js +28 -0
- package/dist/core/ingestion/class-extractors/generic.d.ts +2 -0
- package/dist/core/ingestion/class-extractors/generic.js +135 -0
- package/dist/core/ingestion/class-types.d.ts +34 -0
- package/dist/core/ingestion/class-types.js +1 -0
- package/dist/core/ingestion/cluster-enricher.d.ts +38 -0
- package/dist/core/ingestion/cluster-enricher.js +168 -0
- package/dist/core/ingestion/cobol/cobol-copy-expander.d.ts +57 -0
- package/dist/core/ingestion/cobol/cobol-copy-expander.js +392 -0
- package/dist/core/ingestion/cobol/cobol-preprocessor.d.ts +210 -0
- package/dist/core/ingestion/cobol/cobol-preprocessor.js +1715 -0
- package/dist/core/ingestion/cobol/jcl-parser.d.ts +68 -0
- package/dist/core/ingestion/cobol/jcl-parser.js +217 -0
- package/dist/core/ingestion/cobol/jcl-processor.d.ts +33 -0
- package/dist/core/ingestion/cobol/jcl-processor.js +229 -0
- package/dist/core/ingestion/cobol-processor.d.ts +54 -0
- package/dist/core/ingestion/cobol-processor.js +1232 -0
- package/dist/core/ingestion/community-processor.d.ts +39 -0
- package/dist/core/ingestion/community-processor.js +318 -0
- package/dist/core/ingestion/constants.d.ts +16 -0
- package/dist/core/ingestion/constants.js +16 -0
- package/dist/core/ingestion/emit-references.d.ts +88 -0
- package/dist/core/ingestion/emit-references.js +229 -0
- package/dist/core/ingestion/entry-point-scoring.d.ts +58 -0
- package/dist/core/ingestion/entry-point-scoring.js +380 -0
- package/dist/core/ingestion/export-detection.d.ts +57 -0
- package/dist/core/ingestion/export-detection.js +233 -0
- package/dist/core/ingestion/field-extractor.d.ts +29 -0
- package/dist/core/ingestion/field-extractor.js +25 -0
- package/dist/core/ingestion/field-extractors/configs/c-cpp.d.ts +3 -0
- package/dist/core/ingestion/field-extractors/configs/c-cpp.js +104 -0
- package/dist/core/ingestion/field-extractors/configs/csharp.d.ts +8 -0
- package/dist/core/ingestion/field-extractors/configs/csharp.js +116 -0
- package/dist/core/ingestion/field-extractors/configs/dart.d.ts +8 -0
- package/dist/core/ingestion/field-extractors/configs/dart.js +78 -0
- package/dist/core/ingestion/field-extractors/configs/go.d.ts +11 -0
- package/dist/core/ingestion/field-extractors/configs/go.js +60 -0
- package/dist/core/ingestion/field-extractors/configs/helpers.d.ts +53 -0
- package/dist/core/ingestion/field-extractors/configs/helpers.js +158 -0
- package/dist/core/ingestion/field-extractors/configs/jvm.d.ts +3 -0
- package/dist/core/ingestion/field-extractors/configs/jvm.js +118 -0
- package/dist/core/ingestion/field-extractors/configs/php.d.ts +8 -0
- package/dist/core/ingestion/field-extractors/configs/php.js +65 -0
- package/dist/core/ingestion/field-extractors/configs/python.d.ts +12 -0
- package/dist/core/ingestion/field-extractors/configs/python.js +91 -0
- package/dist/core/ingestion/field-extractors/configs/ruby.d.ts +16 -0
- package/dist/core/ingestion/field-extractors/configs/ruby.js +76 -0
- package/dist/core/ingestion/field-extractors/configs/rust.d.ts +9 -0
- package/dist/core/ingestion/field-extractors/configs/rust.js +52 -0
- package/dist/core/ingestion/field-extractors/configs/swift.d.ts +8 -0
- package/dist/core/ingestion/field-extractors/configs/swift.js +65 -0
- package/dist/core/ingestion/field-extractors/configs/typescript-javascript.d.ts +3 -0
- package/dist/core/ingestion/field-extractors/configs/typescript-javascript.js +56 -0
- package/dist/core/ingestion/field-extractors/generic.d.ts +49 -0
- package/dist/core/ingestion/field-extractors/generic.js +117 -0
- package/dist/core/ingestion/field-extractors/typescript.d.ts +77 -0
- package/dist/core/ingestion/field-extractors/typescript.js +291 -0
- package/dist/core/ingestion/field-types.d.ts +61 -0
- package/dist/core/ingestion/field-types.js +2 -0
- package/dist/core/ingestion/filesystem-walker.d.ts +28 -0
- package/dist/core/ingestion/filesystem-walker.js +91 -0
- package/dist/core/ingestion/finalize-orchestrator.d.ts +63 -0
- package/dist/core/ingestion/finalize-orchestrator.js +139 -0
- package/dist/core/ingestion/framework-detection.d.ts +150 -0
- package/dist/core/ingestion/framework-detection.js +786 -0
- package/dist/core/ingestion/heritage-extractors/configs/go.d.ts +13 -0
- package/dist/core/ingestion/heritage-extractors/configs/go.js +20 -0
- package/dist/core/ingestion/heritage-extractors/configs/ruby.d.ts +18 -0
- package/dist/core/ingestion/heritage-extractors/configs/ruby.js +65 -0
- package/dist/core/ingestion/heritage-extractors/generic.d.ts +23 -0
- package/dist/core/ingestion/heritage-extractors/generic.js +47 -0
- package/dist/core/ingestion/heritage-processor.d.ts +54 -0
- package/dist/core/ingestion/heritage-processor.js +360 -0
- package/dist/core/ingestion/heritage-types.d.ts +73 -0
- package/dist/core/ingestion/heritage-types.js +2 -0
- package/dist/core/ingestion/import-processor.d.ts +23 -0
- package/dist/core/ingestion/import-processor.js +373 -0
- package/dist/core/ingestion/import-resolvers/configs/c-cpp.d.ts +7 -0
- package/dist/core/ingestion/import-resolvers/configs/c-cpp.js +14 -0
- package/dist/core/ingestion/import-resolvers/configs/csharp.d.ts +8 -0
- package/dist/core/ingestion/import-resolvers/configs/csharp.js +27 -0
- package/dist/core/ingestion/import-resolvers/configs/dart.d.ts +17 -0
- package/dist/core/ingestion/import-resolvers/configs/dart.js +54 -0
- package/dist/core/ingestion/import-resolvers/configs/go.d.ts +8 -0
- package/dist/core/ingestion/import-resolvers/configs/go.js +26 -0
- package/dist/core/ingestion/import-resolvers/configs/jvm.d.ts +13 -0
- package/dist/core/ingestion/import-resolvers/configs/jvm.js +68 -0
- package/dist/core/ingestion/import-resolvers/configs/php.d.ts +8 -0
- package/dist/core/ingestion/import-resolvers/configs/php.js +15 -0
- package/dist/core/ingestion/import-resolvers/configs/python.d.ts +12 -0
- package/dist/core/ingestion/import-resolvers/configs/python.js +41 -0
- package/dist/core/ingestion/import-resolvers/configs/ruby.d.ts +8 -0
- package/dist/core/ingestion/import-resolvers/configs/ruby.js +16 -0
- package/dist/core/ingestion/import-resolvers/configs/rust.d.ts +8 -0
- package/dist/core/ingestion/import-resolvers/configs/rust.js +54 -0
- package/dist/core/ingestion/import-resolvers/configs/swift.d.ts +8 -0
- package/dist/core/ingestion/import-resolvers/configs/swift.js +29 -0
- package/dist/core/ingestion/import-resolvers/configs/typescript-javascript.d.ts +9 -0
- package/dist/core/ingestion/import-resolvers/configs/typescript-javascript.js +23 -0
- package/dist/core/ingestion/import-resolvers/csharp.d.ts +18 -0
- package/dist/core/ingestion/import-resolvers/csharp.js +115 -0
- package/dist/core/ingestion/import-resolvers/go.d.ts +17 -0
- package/dist/core/ingestion/import-resolvers/go.js +46 -0
- package/dist/core/ingestion/import-resolvers/jvm.d.ts +27 -0
- package/dist/core/ingestion/import-resolvers/jvm.js +106 -0
- package/dist/core/ingestion/import-resolvers/php.d.ts +24 -0
- package/dist/core/ingestion/import-resolvers/php.js +77 -0
- package/dist/core/ingestion/import-resolvers/python.d.ts +22 -0
- package/dist/core/ingestion/import-resolvers/python.js +72 -0
- package/dist/core/ingestion/import-resolvers/resolver-factory.d.ts +24 -0
- package/dist/core/ingestion/import-resolvers/resolver-factory.js +33 -0
- package/dist/core/ingestion/import-resolvers/ruby.d.ts +14 -0
- package/dist/core/ingestion/import-resolvers/ruby.js +17 -0
- package/dist/core/ingestion/import-resolvers/rust.d.ts +17 -0
- package/dist/core/ingestion/import-resolvers/rust.js +75 -0
- package/dist/core/ingestion/import-resolvers/standard.d.ts +30 -0
- package/dist/core/ingestion/import-resolvers/standard.js +142 -0
- package/dist/core/ingestion/import-resolvers/types.d.ts +68 -0
- package/dist/core/ingestion/import-resolvers/types.js +6 -0
- package/dist/core/ingestion/import-resolvers/utils.d.ts +35 -0
- package/dist/core/ingestion/import-resolvers/utils.js +149 -0
- package/dist/core/ingestion/import-target-adapter.d.ts +73 -0
- package/dist/core/ingestion/import-target-adapter.js +95 -0
- package/dist/core/ingestion/language-config.d.ts +52 -0
- package/dist/core/ingestion/language-config.js +181 -0
- package/dist/core/ingestion/language-provider.d.ts +410 -0
- package/dist/core/ingestion/language-provider.js +24 -0
- package/dist/core/ingestion/languages/c-cpp.d.ts +12 -0
- package/dist/core/ingestion/languages/c-cpp.js +329 -0
- package/dist/core/ingestion/languages/cobol.d.ts +1 -0
- package/dist/core/ingestion/languages/cobol.js +26 -0
- package/dist/core/ingestion/languages/csharp/accessor-unwrap.d.ts +21 -0
- package/dist/core/ingestion/languages/csharp/accessor-unwrap.js +56 -0
- package/dist/core/ingestion/languages/csharp/arity-metadata.d.ts +26 -0
- package/dist/core/ingestion/languages/csharp/arity-metadata.js +46 -0
- package/dist/core/ingestion/languages/csharp/arity.d.ts +23 -0
- package/dist/core/ingestion/languages/csharp/arity.js +37 -0
- package/dist/core/ingestion/languages/csharp/cache-stats.d.ts +15 -0
- package/dist/core/ingestion/languages/csharp/cache-stats.js +26 -0
- package/dist/core/ingestion/languages/csharp/captures.d.ts +19 -0
- package/dist/core/ingestion/languages/csharp/captures.js +249 -0
- package/dist/core/ingestion/languages/csharp/import-decomposer.d.ts +19 -0
- package/dist/core/ingestion/languages/csharp/import-decomposer.js +93 -0
- package/dist/core/ingestion/languages/csharp/import-target.d.ts +25 -0
- package/dist/core/ingestion/languages/csharp/import-target.js +123 -0
- package/dist/core/ingestion/languages/csharp/index.d.ts +82 -0
- package/dist/core/ingestion/languages/csharp/index.js +82 -0
- package/dist/core/ingestion/languages/csharp/interpret.d.ts +15 -0
- package/dist/core/ingestion/languages/csharp/interpret.js +132 -0
- package/dist/core/ingestion/languages/csharp/merge-bindings.d.ts +27 -0
- package/dist/core/ingestion/languages/csharp/merge-bindings.js +55 -0
- package/dist/core/ingestion/languages/csharp/namespace-siblings.d.ts +50 -0
- package/dist/core/ingestion/languages/csharp/namespace-siblings.js +374 -0
- package/dist/core/ingestion/languages/csharp/query.d.ts +35 -0
- package/dist/core/ingestion/languages/csharp/query.js +515 -0
- package/dist/core/ingestion/languages/csharp/receiver-binding.d.ts +31 -0
- package/dist/core/ingestion/languages/csharp/receiver-binding.js +135 -0
- package/dist/core/ingestion/languages/csharp/scope-resolver.d.ts +10 -0
- package/dist/core/ingestion/languages/csharp/scope-resolver.js +63 -0
- package/dist/core/ingestion/languages/csharp/simple-hooks.d.ts +53 -0
- package/dist/core/ingestion/languages/csharp/simple-hooks.js +76 -0
- package/dist/core/ingestion/languages/csharp.d.ts +8 -0
- package/dist/core/ingestion/languages/csharp.js +152 -0
- package/dist/core/ingestion/languages/dart.d.ts +12 -0
- package/dist/core/ingestion/languages/dart.js +102 -0
- package/dist/core/ingestion/languages/go.d.ts +11 -0
- package/dist/core/ingestion/languages/go.js +44 -0
- package/dist/core/ingestion/languages/index.d.ts +39 -0
- package/dist/core/ingestion/languages/index.js +64 -0
- package/dist/core/ingestion/languages/java.d.ts +9 -0
- package/dist/core/ingestion/languages/java.js +44 -0
- package/dist/core/ingestion/languages/kotlin.d.ts +9 -0
- package/dist/core/ingestion/languages/kotlin.js +123 -0
- package/dist/core/ingestion/languages/php.d.ts +8 -0
- package/dist/core/ingestion/languages/php.js +240 -0
- package/dist/core/ingestion/languages/python/arity-metadata.d.ts +24 -0
- package/dist/core/ingestion/languages/python/arity-metadata.js +45 -0
- package/dist/core/ingestion/languages/python/arity.d.ts +22 -0
- package/dist/core/ingestion/languages/python/arity.js +38 -0
- package/dist/core/ingestion/languages/python/cache-stats.d.ts +17 -0
- package/dist/core/ingestion/languages/python/cache-stats.js +28 -0
- package/dist/core/ingestion/languages/python/captures.d.ts +19 -0
- package/dist/core/ingestion/languages/python/captures.js +106 -0
- package/dist/core/ingestion/languages/python/import-decomposer.d.ts +15 -0
- package/dist/core/ingestion/languages/python/import-decomposer.js +112 -0
- package/dist/core/ingestion/languages/python/import-target.d.ts +21 -0
- package/dist/core/ingestion/languages/python/import-target.js +99 -0
- package/dist/core/ingestion/languages/python/index.d.ts +80 -0
- package/dist/core/ingestion/languages/python/index.js +80 -0
- package/dist/core/ingestion/languages/python/interpret.d.ts +15 -0
- package/dist/core/ingestion/languages/python/interpret.js +191 -0
- package/dist/core/ingestion/languages/python/merge-bindings.d.ts +16 -0
- package/dist/core/ingestion/languages/python/merge-bindings.js +44 -0
- package/dist/core/ingestion/languages/python/query.d.ts +9 -0
- package/dist/core/ingestion/languages/python/query.js +267 -0
- package/dist/core/ingestion/languages/python/receiver-binding.d.ts +21 -0
- package/dist/core/ingestion/languages/python/receiver-binding.js +116 -0
- package/dist/core/ingestion/languages/python/scope-resolver.d.ts +16 -0
- package/dist/core/ingestion/languages/python/scope-resolver.js +53 -0
- package/dist/core/ingestion/languages/python/simple-hooks.d.ts +23 -0
- package/dist/core/ingestion/languages/python/simple-hooks.js +35 -0
- package/dist/core/ingestion/languages/python.d.ts +12 -0
- package/dist/core/ingestion/languages/python.js +91 -0
- package/dist/core/ingestion/languages/ruby.d.ts +9 -0
- package/dist/core/ingestion/languages/ruby.js +210 -0
- package/dist/core/ingestion/languages/rust.d.ts +12 -0
- package/dist/core/ingestion/languages/rust.js +132 -0
- package/dist/core/ingestion/languages/swift.d.ts +12 -0
- package/dist/core/ingestion/languages/swift.js +244 -0
- package/dist/core/ingestion/languages/typescript.d.ts +11 -0
- package/dist/core/ingestion/languages/typescript.js +184 -0
- package/dist/core/ingestion/languages/vue.d.ts +13 -0
- package/dist/core/ingestion/languages/vue.js +77 -0
- package/dist/core/ingestion/markdown-processor.d.ts +17 -0
- package/dist/core/ingestion/markdown-processor.js +124 -0
- package/dist/core/ingestion/method-extractors/configs/c-cpp.d.ts +3 -0
- package/dist/core/ingestion/method-extractors/configs/c-cpp.js +387 -0
- package/dist/core/ingestion/method-extractors/configs/csharp.d.ts +2 -0
- package/dist/core/ingestion/method-extractors/configs/csharp.js +287 -0
- package/dist/core/ingestion/method-extractors/configs/dart.d.ts +2 -0
- package/dist/core/ingestion/method-extractors/configs/dart.js +376 -0
- package/dist/core/ingestion/method-extractors/configs/go.d.ts +2 -0
- package/dist/core/ingestion/method-extractors/configs/go.js +176 -0
- package/dist/core/ingestion/method-extractors/configs/jvm.d.ts +3 -0
- package/dist/core/ingestion/method-extractors/configs/jvm.js +336 -0
- package/dist/core/ingestion/method-extractors/configs/php.d.ts +2 -0
- package/dist/core/ingestion/method-extractors/configs/php.js +304 -0
- package/dist/core/ingestion/method-extractors/configs/python.d.ts +2 -0
- package/dist/core/ingestion/method-extractors/configs/python.js +309 -0
- package/dist/core/ingestion/method-extractors/configs/ruby.d.ts +2 -0
- package/dist/core/ingestion/method-extractors/configs/ruby.js +286 -0
- package/dist/core/ingestion/method-extractors/configs/rust.d.ts +2 -0
- package/dist/core/ingestion/method-extractors/configs/rust.js +195 -0
- package/dist/core/ingestion/method-extractors/configs/swift.d.ts +2 -0
- package/dist/core/ingestion/method-extractors/configs/swift.js +277 -0
- package/dist/core/ingestion/method-extractors/configs/typescript-javascript.d.ts +3 -0
- package/dist/core/ingestion/method-extractors/configs/typescript-javascript.js +338 -0
- package/dist/core/ingestion/method-extractors/generic.d.ts +11 -0
- package/dist/core/ingestion/method-extractors/generic.js +204 -0
- package/dist/core/ingestion/method-types.d.ts +90 -0
- package/dist/core/ingestion/method-types.js +2 -0
- package/dist/core/ingestion/model/field-registry.d.ts +18 -0
- package/dist/core/ingestion/model/field-registry.js +22 -0
- package/dist/core/ingestion/model/heritage-map.d.ts +105 -0
- package/dist/core/ingestion/model/heritage-map.js +260 -0
- package/dist/core/ingestion/model/index.d.ts +20 -0
- package/dist/core/ingestion/model/index.js +43 -0
- package/dist/core/ingestion/model/method-registry.d.ts +71 -0
- package/dist/core/ingestion/model/method-registry.js +134 -0
- package/dist/core/ingestion/model/registration-table.d.ts +138 -0
- package/dist/core/ingestion/model/registration-table.js +224 -0
- package/dist/core/ingestion/model/resolution-context.d.ts +93 -0
- package/dist/core/ingestion/model/resolution-context.js +337 -0
- package/dist/core/ingestion/model/resolve.d.ts +61 -0
- package/dist/core/ingestion/model/resolve.js +381 -0
- package/dist/core/ingestion/model/scope-resolution-indexes.d.ts +59 -0
- package/dist/core/ingestion/model/scope-resolution-indexes.js +42 -0
- package/dist/core/ingestion/model/semantic-model.d.ts +150 -0
- package/dist/core/ingestion/model/semantic-model.js +175 -0
- package/dist/core/ingestion/model/symbol-table.d.ts +200 -0
- package/dist/core/ingestion/model/symbol-table.js +206 -0
- package/dist/core/ingestion/model/type-registry.d.ts +39 -0
- package/dist/core/ingestion/model/type-registry.js +62 -0
- package/dist/core/ingestion/mro-processor.d.ts +46 -0
- package/dist/core/ingestion/mro-processor.js +597 -0
- package/dist/core/ingestion/named-bindings/csharp.d.ts +3 -0
- package/dist/core/ingestion/named-bindings/csharp.js +37 -0
- package/dist/core/ingestion/named-bindings/java.d.ts +3 -0
- package/dist/core/ingestion/named-bindings/java.js +29 -0
- package/dist/core/ingestion/named-bindings/kotlin.d.ts +3 -0
- package/dist/core/ingestion/named-bindings/kotlin.js +36 -0
- package/dist/core/ingestion/named-bindings/php.d.ts +3 -0
- package/dist/core/ingestion/named-bindings/php.js +61 -0
- package/dist/core/ingestion/named-bindings/python.d.ts +3 -0
- package/dist/core/ingestion/named-bindings/python.js +49 -0
- package/dist/core/ingestion/named-bindings/rust.d.ts +3 -0
- package/dist/core/ingestion/named-bindings/rust.js +66 -0
- package/dist/core/ingestion/named-bindings/types.d.ts +16 -0
- package/dist/core/ingestion/named-bindings/types.js +6 -0
- package/dist/core/ingestion/named-bindings/typescript.d.ts +3 -0
- package/dist/core/ingestion/named-bindings/typescript.js +58 -0
- package/dist/core/ingestion/parsing-processor.d.ts +40 -0
- package/dist/core/ingestion/parsing-processor.js +576 -0
- package/dist/core/ingestion/pipeline-phases/cobol.d.ts +16 -0
- package/dist/core/ingestion/pipeline-phases/cobol.js +45 -0
- package/dist/core/ingestion/pipeline-phases/communities.d.ts +16 -0
- package/dist/core/ingestion/pipeline-phases/communities.js +62 -0
- package/dist/core/ingestion/pipeline-phases/cross-file-impl.d.ts +17 -0
- package/dist/core/ingestion/pipeline-phases/cross-file-impl.js +156 -0
- package/dist/core/ingestion/pipeline-phases/cross-file.d.ts +37 -0
- package/dist/core/ingestion/pipeline-phases/cross-file.js +63 -0
- package/dist/core/ingestion/pipeline-phases/index.d.ts +22 -0
- package/dist/core/ingestion/pipeline-phases/index.js +23 -0
- package/dist/core/ingestion/pipeline-phases/markdown.d.ts +17 -0
- package/dist/core/ingestion/pipeline-phases/markdown.js +33 -0
- package/dist/core/ingestion/pipeline-phases/mro.d.ts +18 -0
- package/dist/core/ingestion/pipeline-phases/mro.js +36 -0
- package/dist/core/ingestion/pipeline-phases/orm-extraction.d.ts +22 -0
- package/dist/core/ingestion/pipeline-phases/orm-extraction.js +92 -0
- package/dist/core/ingestion/pipeline-phases/orm.d.ts +15 -0
- package/dist/core/ingestion/pipeline-phases/orm.js +74 -0
- package/dist/core/ingestion/pipeline-phases/parse-impl.d.ts +58 -0
- package/dist/core/ingestion/pipeline-phases/parse-impl.js +458 -0
- package/dist/core/ingestion/pipeline-phases/parse.d.ts +74 -0
- package/dist/core/ingestion/pipeline-phases/parse.js +33 -0
- package/dist/core/ingestion/pipeline-phases/processes.d.ts +16 -0
- package/dist/core/ingestion/pipeline-phases/processes.js +143 -0
- package/dist/core/ingestion/pipeline-phases/routes.d.ts +21 -0
- package/dist/core/ingestion/pipeline-phases/routes.js +243 -0
- package/dist/core/ingestion/pipeline-phases/runner.d.ts +22 -0
- package/dist/core/ingestion/pipeline-phases/runner.js +203 -0
- package/dist/core/ingestion/pipeline-phases/scan.d.ts +21 -0
- package/dist/core/ingestion/pipeline-phases/scan.js +46 -0
- package/dist/core/ingestion/pipeline-phases/structure.d.ts +27 -0
- package/dist/core/ingestion/pipeline-phases/structure.js +35 -0
- package/dist/core/ingestion/pipeline-phases/tools.d.ts +20 -0
- package/dist/core/ingestion/pipeline-phases/tools.js +79 -0
- package/dist/core/ingestion/pipeline-phases/types.d.ts +79 -0
- package/dist/core/ingestion/pipeline-phases/types.js +37 -0
- package/dist/core/ingestion/pipeline-phases/wildcard-synthesis.d.ts +70 -0
- package/dist/core/ingestion/pipeline-phases/wildcard-synthesis.js +312 -0
- package/dist/core/ingestion/pipeline.d.ts +36 -0
- package/dist/core/ingestion/pipeline.js +89 -0
- package/dist/core/ingestion/process-processor.d.ts +51 -0
- package/dist/core/ingestion/process-processor.js +317 -0
- package/dist/core/ingestion/registry-primary-flag.d.ts +86 -0
- package/dist/core/ingestion/registry-primary-flag.js +111 -0
- package/dist/core/ingestion/resolve-references.d.ts +63 -0
- package/dist/core/ingestion/resolve-references.js +175 -0
- package/dist/core/ingestion/route-extractors/expo.d.ts +1 -0
- package/dist/core/ingestion/route-extractors/expo.js +36 -0
- package/dist/core/ingestion/route-extractors/middleware.d.ts +47 -0
- package/dist/core/ingestion/route-extractors/middleware.js +167 -0
- package/dist/core/ingestion/route-extractors/nextjs.d.ts +3 -0
- package/dist/core/ingestion/route-extractors/nextjs.js +76 -0
- package/dist/core/ingestion/route-extractors/php.d.ts +7 -0
- package/dist/core/ingestion/route-extractors/php.js +22 -0
- package/dist/core/ingestion/route-extractors/response-shapes.d.ts +20 -0
- package/dist/core/ingestion/route-extractors/response-shapes.js +294 -0
- package/dist/core/ingestion/scope-extractor-bridge.d.ts +32 -0
- package/dist/core/ingestion/scope-extractor-bridge.js +44 -0
- package/dist/core/ingestion/scope-extractor.d.ts +86 -0
- package/dist/core/ingestion/scope-extractor.js +758 -0
- package/dist/core/ingestion/scope-resolution/contract/scope-resolver.d.ts +372 -0
- package/dist/core/ingestion/scope-resolution/contract/scope-resolver.js +212 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/edges.d.ts +43 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/edges.js +79 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/ids.d.ts +57 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/ids.js +112 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.d.ts +17 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.js +46 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/method-dispatch.d.ts +19 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/method-dispatch.js +30 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.d.ts +37 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +113 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.d.ts +38 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +73 -0
- package/dist/core/ingestion/scope-resolution/passes/compound-receiver.d.ts +42 -0
- package/dist/core/ingestion/scope-resolution/passes/compound-receiver.js +198 -0
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.d.ts +27 -0
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.js +131 -0
- package/dist/core/ingestion/scope-resolution/passes/imported-return-types.d.ts +48 -0
- package/dist/core/ingestion/scope-resolution/passes/imported-return-types.js +130 -0
- package/dist/core/ingestion/scope-resolution/passes/mro.d.ts +42 -0
- package/dist/core/ingestion/scope-resolution/passes/mro.js +99 -0
- package/dist/core/ingestion/scope-resolution/passes/overload-narrowing.d.ts +26 -0
- package/dist/core/ingestion/scope-resolution/passes/overload-narrowing.js +61 -0
- package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.d.ts +46 -0
- package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +327 -0
- package/dist/core/ingestion/scope-resolution/pipeline/phase.d.ts +47 -0
- package/dist/core/ingestion/scope-resolution/pipeline/phase.js +130 -0
- package/dist/core/ingestion/scope-resolution/pipeline/reconcile-ownership.d.ts +68 -0
- package/dist/core/ingestion/scope-resolution/pipeline/reconcile-ownership.js +125 -0
- package/dist/core/ingestion/scope-resolution/pipeline/registry.d.ts +17 -0
- package/dist/core/ingestion/scope-resolution/pipeline/registry.js +21 -0
- package/dist/core/ingestion/scope-resolution/pipeline/run.d.ts +66 -0
- package/dist/core/ingestion/scope-resolution/pipeline/run.js +157 -0
- package/dist/core/ingestion/scope-resolution/scope/namespace-targets.d.ts +36 -0
- package/dist/core/ingestion/scope-resolution/scope/namespace-targets.js +52 -0
- package/dist/core/ingestion/scope-resolution/scope/walkers.d.ts +127 -0
- package/dist/core/ingestion/scope-resolution/scope/walkers.js +349 -0
- package/dist/core/ingestion/scope-resolution/workspace-index.d.ts +52 -0
- package/dist/core/ingestion/scope-resolution/workspace-index.js +61 -0
- package/dist/core/ingestion/shadow-harness.d.ts +113 -0
- package/dist/core/ingestion/shadow-harness.js +148 -0
- package/dist/core/ingestion/structure-processor.d.ts +2 -0
- package/dist/core/ingestion/structure-processor.js +36 -0
- package/dist/core/ingestion/tree-sitter-queries.d.ts +16 -0
- package/dist/core/ingestion/tree-sitter-queries.js +1338 -0
- package/dist/core/ingestion/type-env.d.ts +86 -0
- package/dist/core/ingestion/type-env.js +1128 -0
- package/dist/core/ingestion/type-extractors/c-cpp.d.ts +7 -0
- package/dist/core/ingestion/type-extractors/c-cpp.js +532 -0
- package/dist/core/ingestion/type-extractors/csharp.d.ts +2 -0
- package/dist/core/ingestion/type-extractors/csharp.js +583 -0
- package/dist/core/ingestion/type-extractors/dart.d.ts +15 -0
- package/dist/core/ingestion/type-extractors/dart.js +369 -0
- package/dist/core/ingestion/type-extractors/go.d.ts +2 -0
- package/dist/core/ingestion/type-extractors/go.js +513 -0
- package/dist/core/ingestion/type-extractors/jvm.d.ts +3 -0
- package/dist/core/ingestion/type-extractors/jvm.js +856 -0
- package/dist/core/ingestion/type-extractors/php.d.ts +2 -0
- package/dist/core/ingestion/type-extractors/php.js +534 -0
- package/dist/core/ingestion/type-extractors/python.d.ts +2 -0
- package/dist/core/ingestion/type-extractors/python.js +474 -0
- package/dist/core/ingestion/type-extractors/ruby.d.ts +2 -0
- package/dist/core/ingestion/type-extractors/ruby.js +377 -0
- package/dist/core/ingestion/type-extractors/rust.d.ts +2 -0
- package/dist/core/ingestion/type-extractors/rust.js +515 -0
- package/dist/core/ingestion/type-extractors/shared.d.ts +131 -0
- package/dist/core/ingestion/type-extractors/shared.js +796 -0
- package/dist/core/ingestion/type-extractors/swift.d.ts +2 -0
- package/dist/core/ingestion/type-extractors/swift.js +484 -0
- package/dist/core/ingestion/type-extractors/types.d.ts +172 -0
- package/dist/core/ingestion/type-extractors/types.js +1 -0
- package/dist/core/ingestion/type-extractors/typescript.d.ts +2 -0
- package/dist/core/ingestion/type-extractors/typescript.js +661 -0
- package/dist/core/ingestion/utils/ast-helpers.d.ts +89 -0
- package/dist/core/ingestion/utils/ast-helpers.js +535 -0
- package/dist/core/ingestion/utils/call-analysis.d.ts +75 -0
- package/dist/core/ingestion/utils/call-analysis.js +574 -0
- package/dist/core/ingestion/utils/env.d.ts +10 -0
- package/dist/core/ingestion/utils/env.js +10 -0
- package/dist/core/ingestion/utils/event-loop.d.ts +5 -0
- package/dist/core/ingestion/utils/event-loop.js +5 -0
- package/dist/core/ingestion/utils/graph-sort.d.ts +58 -0
- package/dist/core/ingestion/utils/graph-sort.js +100 -0
- package/dist/core/ingestion/utils/max-file-size.d.ts +20 -0
- package/dist/core/ingestion/utils/max-file-size.js +52 -0
- package/dist/core/ingestion/utils/method-props.d.ts +32 -0
- package/dist/core/ingestion/utils/method-props.js +147 -0
- package/dist/core/ingestion/utils/ruby-self-call.d.ts +52 -0
- package/dist/core/ingestion/utils/ruby-self-call.js +59 -0
- package/dist/core/ingestion/utils/verbose.d.ts +1 -0
- package/dist/core/ingestion/utils/verbose.js +7 -0
- package/dist/core/ingestion/variable-extractors/configs/c-cpp.d.ts +3 -0
- package/dist/core/ingestion/variable-extractors/configs/c-cpp.js +81 -0
- package/dist/core/ingestion/variable-extractors/configs/csharp.d.ts +9 -0
- package/dist/core/ingestion/variable-extractors/configs/csharp.js +63 -0
- package/dist/core/ingestion/variable-extractors/configs/dart.d.ts +2 -0
- package/dist/core/ingestion/variable-extractors/configs/dart.js +94 -0
- package/dist/core/ingestion/variable-extractors/configs/go.d.ts +2 -0
- package/dist/core/ingestion/variable-extractors/configs/go.js +83 -0
- package/dist/core/ingestion/variable-extractors/configs/jvm.d.ts +18 -0
- package/dist/core/ingestion/variable-extractors/configs/jvm.js +115 -0
- package/dist/core/ingestion/variable-extractors/configs/php.d.ts +14 -0
- package/dist/core/ingestion/variable-extractors/configs/php.js +58 -0
- package/dist/core/ingestion/variable-extractors/configs/python.d.ts +2 -0
- package/dist/core/ingestion/variable-extractors/configs/python.js +101 -0
- package/dist/core/ingestion/variable-extractors/configs/ruby.d.ts +11 -0
- package/dist/core/ingestion/variable-extractors/configs/ruby.js +52 -0
- package/dist/core/ingestion/variable-extractors/configs/rust.d.ts +2 -0
- package/dist/core/ingestion/variable-extractors/configs/rust.js +76 -0
- package/dist/core/ingestion/variable-extractors/configs/swift.d.ts +2 -0
- package/dist/core/ingestion/variable-extractors/configs/swift.js +88 -0
- package/dist/core/ingestion/variable-extractors/configs/typescript-javascript.d.ts +3 -0
- package/dist/core/ingestion/variable-extractors/configs/typescript-javascript.js +83 -0
- package/dist/core/ingestion/variable-extractors/generic.d.ts +5 -0
- package/dist/core/ingestion/variable-extractors/generic.js +80 -0
- package/dist/core/ingestion/variable-types.d.ts +82 -0
- package/dist/core/ingestion/variable-types.js +2 -0
- package/dist/core/ingestion/vue-sfc-extractor.d.ts +44 -0
- package/dist/core/ingestion/vue-sfc-extractor.js +94 -0
- package/dist/core/ingestion/workers/parse-worker.d.ts +198 -0
- package/dist/core/ingestion/workers/parse-worker.js +1928 -0
- package/dist/core/ingestion/workers/worker-pool.d.ts +16 -0
- package/dist/core/ingestion/workers/worker-pool.js +126 -0
- package/dist/core/lbug/csv-generator.d.ts +33 -0
- package/dist/core/lbug/csv-generator.js +459 -0
- package/dist/core/lbug/lbug-adapter.d.ts +173 -0
- package/dist/core/lbug/lbug-adapter.js +1188 -0
- package/dist/core/lbug/pool-adapter.d.ts +93 -0
- package/dist/core/lbug/pool-adapter.js +543 -0
- package/dist/core/lbug/schema.d.ts +62 -0
- package/dist/core/lbug/schema.js +484 -0
- package/dist/core/run-analyze.d.ts +72 -0
- package/dist/core/run-analyze.js +315 -0
- package/dist/core/search/bm25-index.d.ts +41 -0
- package/dist/core/search/bm25-index.js +209 -0
- package/dist/core/search/hybrid-search.d.ts +49 -0
- package/dist/core/search/hybrid-search.js +118 -0
- package/dist/core/search/phase-timer.d.ts +72 -0
- package/dist/core/search/phase-timer.js +106 -0
- package/dist/core/tree-sitter/parser-loader.d.ts +8 -0
- package/dist/core/tree-sitter/parser-loader.js +84 -0
- package/dist/core/wiki/cursor-client.d.ts +31 -0
- package/dist/core/wiki/cursor-client.js +122 -0
- package/dist/core/wiki/generator.d.ts +129 -0
- package/dist/core/wiki/generator.js +898 -0
- package/dist/core/wiki/graph-queries.d.ts +84 -0
- package/dist/core/wiki/graph-queries.js +244 -0
- package/dist/core/wiki/html-viewer.d.ts +10 -0
- package/dist/core/wiki/html-viewer.js +303 -0
- package/dist/core/wiki/llm-client.d.ts +63 -0
- package/dist/core/wiki/llm-client.js +234 -0
- package/dist/core/wiki/prompts.d.ts +53 -0
- package/dist/core/wiki/prompts.js +181 -0
- package/dist/lib/utils.d.ts +1 -0
- package/dist/lib/utils.js +3 -0
- package/dist/mcp/compatible-stdio-transport.d.ts +25 -0
- package/dist/mcp/compatible-stdio-transport.js +200 -0
- package/dist/mcp/core/embedder.d.ts +27 -0
- package/dist/mcp/core/embedder.js +122 -0
- package/dist/mcp/core/lbug-adapter.d.ts +5 -0
- package/dist/mcp/core/lbug-adapter.js +5 -0
- package/dist/mcp/local/graphstore-handler.d.ts +214 -0
- package/dist/mcp/local/graphstore-handler.js +272 -0
- package/dist/mcp/local/local-backend.d.ts +347 -0
- package/dist/mcp/local/local-backend.js +3218 -0
- package/dist/mcp/resources.d.ts +62 -0
- package/dist/mcp/resources.js +696 -0
- package/dist/mcp/server.d.ts +23 -0
- package/dist/mcp/server.js +533 -0
- package/dist/mcp/staleness.d.ts +5 -0
- package/dist/mcp/staleness.js +4 -0
- package/dist/mcp/tools.d.ts +27 -0
- package/dist/mcp/tools.js +823 -0
- package/dist/server/analyze-job.d.ts +55 -0
- package/dist/server/analyze-job.js +150 -0
- package/dist/server/analyze-worker.d.ts +13 -0
- package/dist/server/analyze-worker.js +59 -0
- package/dist/server/api.d.ts +47 -0
- package/dist/server/api.js +1727 -0
- package/dist/server/git-clone.d.ts +26 -0
- package/dist/server/git-clone.js +184 -0
- package/dist/server/mcp-http.d.ts +13 -0
- package/dist/server/mcp-http.js +100 -0
- package/dist/storage/git.d.ts +80 -0
- package/dist/storage/git.js +190 -0
- package/dist/storage/repo-manager.d.ts +458 -0
- package/dist/storage/repo-manager.js +766 -0
- package/dist/types/pipeline.d.ts +18 -0
- package/dist/types/pipeline.js +1 -0
- package/hooks/claude/codragraph-hook.cjs +268 -0
- package/hooks/claude/pre-tool-use.sh +79 -0
- package/hooks/claude/session-start.sh +42 -0
- package/package.json +127 -0
- package/scripts/bench-scope-resolution.ts +134 -0
- package/scripts/build-tree-sitter-proto.cjs +82 -0
- package/scripts/build.js +90 -0
- package/scripts/ci-list-migrated-languages.ts +24 -0
- package/scripts/patch-tree-sitter-swift.cjs +78 -0
- package/skills/codragraph-cli.md +82 -0
- package/skills/codragraph-debugging.md +89 -0
- package/skills/codragraph-exploring.md +78 -0
- package/skills/codragraph-guide.md +64 -0
- package/skills/codragraph-impact-analysis.md +97 -0
- package/skills/codragraph-pr-review.md +163 -0
- package/skills/codragraph-refactoring.md +121 -0
- package/vendor/leiden/index.cjs +355 -0
- package/vendor/leiden/utils.cjs +392 -0
- package/vendor/tree-sitter-proto/binding.gyp +30 -0
- package/vendor/tree-sitter-proto/bindings/node/binding.cc +20 -0
- package/vendor/tree-sitter-proto/bindings/node/index.d.ts +28 -0
- package/vendor/tree-sitter-proto/bindings/node/index.js +7 -0
- package/vendor/tree-sitter-proto/package.json +12 -0
- package/vendor/tree-sitter-proto/src/node-types.json +1145 -0
- package/vendor/tree-sitter-proto/src/parser.c +10149 -0
- package/vendor/tree-sitter-proto/src/tree_sitter/alloc.h +54 -0
- package/vendor/tree-sitter-proto/src/tree_sitter/array.h +291 -0
- package/vendor/tree-sitter-proto/src/tree_sitter/parser.h +266 -0
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hybrid Search with Reciprocal Rank Fusion (RRF)
|
|
3
|
+
*
|
|
4
|
+
* Combines BM25 (keyword) and semantic (embedding) search results.
|
|
5
|
+
* Uses RRF to merge rankings without needing score normalization.
|
|
6
|
+
*
|
|
7
|
+
* This is the same approach used by Elasticsearch, Pinecone, and other
|
|
8
|
+
* production search systems.
|
|
9
|
+
*/
|
|
10
|
+
import { searchFTSFromLbug } from './bm25-index.js';
|
|
11
|
+
/**
|
|
12
|
+
* RRF constant - standard value used in the literature
|
|
13
|
+
* Higher values give more weight to lower-ranked results
|
|
14
|
+
*/
|
|
15
|
+
const RRF_K = 60;
|
|
16
|
+
/**
|
|
17
|
+
* Perform hybrid search combining BM25 and semantic results
|
|
18
|
+
*
|
|
19
|
+
* @param bm25Results - Results from BM25 keyword search
|
|
20
|
+
* @param semanticResults - Results from semantic/embedding search
|
|
21
|
+
* @param limit - Maximum results to return
|
|
22
|
+
* @returns Merged and re-ranked results
|
|
23
|
+
*/
|
|
24
|
+
export const mergeWithRRF = (bm25Results, semanticResults, limit = 10) => {
|
|
25
|
+
const merged = new Map();
|
|
26
|
+
// Process BM25 results
|
|
27
|
+
for (let i = 0; i < bm25Results.length; i++) {
|
|
28
|
+
const r = bm25Results[i];
|
|
29
|
+
const rrfScore = 1 / (RRF_K + i + 1); // i+1 because rank starts at 1
|
|
30
|
+
merged.set(r.filePath, {
|
|
31
|
+
filePath: r.filePath,
|
|
32
|
+
score: rrfScore,
|
|
33
|
+
rank: 0, // Will be set after sorting
|
|
34
|
+
sources: ['bm25'],
|
|
35
|
+
bm25Score: r.score,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
// Process semantic results and merge
|
|
39
|
+
for (let i = 0; i < semanticResults.length; i++) {
|
|
40
|
+
const r = semanticResults[i];
|
|
41
|
+
const rrfScore = 1 / (RRF_K + i + 1);
|
|
42
|
+
const existing = merged.get(r.filePath);
|
|
43
|
+
if (existing) {
|
|
44
|
+
// Found by both methods - add scores
|
|
45
|
+
existing.score += rrfScore;
|
|
46
|
+
existing.sources.push('semantic');
|
|
47
|
+
existing.semanticScore = 1 - r.distance;
|
|
48
|
+
// Add semantic metadata
|
|
49
|
+
existing.nodeId = r.nodeId;
|
|
50
|
+
existing.name = r.name;
|
|
51
|
+
existing.label = r.label;
|
|
52
|
+
existing.startLine = r.startLine;
|
|
53
|
+
existing.endLine = r.endLine;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
// Only found by semantic
|
|
57
|
+
merged.set(r.filePath, {
|
|
58
|
+
filePath: r.filePath,
|
|
59
|
+
score: rrfScore,
|
|
60
|
+
rank: 0,
|
|
61
|
+
sources: ['semantic'],
|
|
62
|
+
semanticScore: 1 - r.distance,
|
|
63
|
+
nodeId: r.nodeId,
|
|
64
|
+
name: r.name,
|
|
65
|
+
label: r.label,
|
|
66
|
+
startLine: r.startLine,
|
|
67
|
+
endLine: r.endLine,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// Sort by RRF score descending
|
|
72
|
+
const sorted = Array.from(merged.values())
|
|
73
|
+
.sort((a, b) => b.score - a.score)
|
|
74
|
+
.slice(0, limit);
|
|
75
|
+
// Assign final ranks
|
|
76
|
+
sorted.forEach((r, i) => {
|
|
77
|
+
r.rank = i + 1;
|
|
78
|
+
});
|
|
79
|
+
return sorted;
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* Check if hybrid search is available
|
|
83
|
+
* LadybugDB FTS is always available once the database is initialized.
|
|
84
|
+
* Semantic search is optional - hybrid works with just FTS if embeddings aren't ready.
|
|
85
|
+
*/
|
|
86
|
+
export const isHybridSearchReady = () => {
|
|
87
|
+
return true; // FTS is always available via LadybugDB when DB is open
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* Format hybrid results for LLM consumption
|
|
91
|
+
*/
|
|
92
|
+
export const formatHybridResults = (results) => {
|
|
93
|
+
if (results.length === 0) {
|
|
94
|
+
return 'No results found.';
|
|
95
|
+
}
|
|
96
|
+
const formatted = results.map((r, i) => {
|
|
97
|
+
const sources = r.sources.join(' + ');
|
|
98
|
+
const location = r.startLine ? ` (lines ${r.startLine}-${r.endLine})` : '';
|
|
99
|
+
const label = r.label ? `${r.label}: ` : 'File: ';
|
|
100
|
+
const name = r.name || r.filePath.split('/').pop() || r.filePath;
|
|
101
|
+
return `[${i + 1}] ${label}${name}
|
|
102
|
+
File: ${r.filePath}${location}
|
|
103
|
+
Found by: ${sources}
|
|
104
|
+
Relevance: ${r.score.toFixed(4)}`;
|
|
105
|
+
});
|
|
106
|
+
return `Found ${results.length} results:\n\n${formatted.join('\n\n')}`;
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Execute BM25 + semantic search and merge with RRF.
|
|
110
|
+
* Uses LadybugDB FTS for always-fresh BM25 results (no cached data).
|
|
111
|
+
* The semanticSearch function is injected to keep this module environment-agnostic.
|
|
112
|
+
*/
|
|
113
|
+
export const hybridSearch = async (query, limit, executeQuery, semanticSearch) => {
|
|
114
|
+
// Use LadybugDB FTS for always-fresh BM25 results
|
|
115
|
+
const bm25Results = await searchFTSFromLbug(query, limit);
|
|
116
|
+
const semanticResults = await semanticSearch(executeQuery, query, limit);
|
|
117
|
+
return mergeWithRRF(bm25Results, semanticResults, limit);
|
|
118
|
+
};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-phase wall-clock timing for the search pipeline and similar
|
|
3
|
+
* multi-stage flows. Designed to be called from query() with minimal
|
|
4
|
+
* ceremony and negligible overhead (< 0.1 ms per phase recorded).
|
|
5
|
+
*
|
|
6
|
+
* ### Sequential usage
|
|
7
|
+
*
|
|
8
|
+
* ```ts
|
|
9
|
+
* const t = new PhaseTimer();
|
|
10
|
+
* t.start('bm25'); await bm25Search(...); t.stop();
|
|
11
|
+
* t.start('merge'); doMerge(); t.stop();
|
|
12
|
+
* const phases = t.summary(); // { bm25: 42, merge: 3 }
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* ### Concurrent usage (Promise.all)
|
|
16
|
+
*
|
|
17
|
+
* `start`/`stop` assume a single active phase at a time, which is wrong
|
|
18
|
+
* for concurrent work inside `Promise.all` — the second `start` would
|
|
19
|
+
* auto-stop the first and only one of the two would get timed. Use
|
|
20
|
+
* {@link PhaseTimer.time} to wrap each concurrent promise instead:
|
|
21
|
+
*
|
|
22
|
+
* ```ts
|
|
23
|
+
* const [a, b] = await Promise.all([
|
|
24
|
+
* t.time('bm25', bm25Search(...)),
|
|
25
|
+
* t.time('vector', semanticSearch(...)),
|
|
26
|
+
* ]);
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* ### Pre-measured durations
|
|
30
|
+
*
|
|
31
|
+
* ```ts
|
|
32
|
+
* t.mark('inherited', 12.5);
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare class PhaseTimer {
|
|
36
|
+
private phases;
|
|
37
|
+
private current;
|
|
38
|
+
private t0;
|
|
39
|
+
/** Start a new phase. Implicitly stops the previous one, if any. */
|
|
40
|
+
start(phase: string): void;
|
|
41
|
+
/** Stop the current phase. No-op if no phase is active. */
|
|
42
|
+
stop(): void;
|
|
43
|
+
/**
|
|
44
|
+
* Record a pre-measured duration without touching the active phase.
|
|
45
|
+
* Use for concurrent operations inside `Promise.all` where
|
|
46
|
+
* `start`/`stop` would step on each other, or for durations imported
|
|
47
|
+
* from sub-systems. Additive across repeated calls with the same
|
|
48
|
+
* phase name. Ignores negative / non-finite inputs.
|
|
49
|
+
*/
|
|
50
|
+
mark(phase: string, durationMs: number): void;
|
|
51
|
+
/**
|
|
52
|
+
* Wrap a promise with automatic timing. Records wall time via
|
|
53
|
+
* {@link PhaseTimer.mark} regardless of which other phases are
|
|
54
|
+
* active — safe to use inside `Promise.all`.
|
|
55
|
+
*/
|
|
56
|
+
time<T>(phase: string, promise: Promise<T>): Promise<T>;
|
|
57
|
+
/**
|
|
58
|
+
* Snapshot of accumulated durations rounded to 0.1 ms. Stops the
|
|
59
|
+
* current phase if one is still running.
|
|
60
|
+
*/
|
|
61
|
+
summary(): Record<string, number>;
|
|
62
|
+
/**
|
|
63
|
+
* Sum of every recorded phase duration.
|
|
64
|
+
*
|
|
65
|
+
* Note: for phases recorded via {@link PhaseTimer.time} or
|
|
66
|
+
* {@link PhaseTimer.mark} this is the *sum*, not the wall time —
|
|
67
|
+
* concurrent work overlaps and the sum can exceed the end-to-end
|
|
68
|
+
* wall time. Record wall time separately with `mark('wall', …)` if
|
|
69
|
+
* that distinction matters.
|
|
70
|
+
*/
|
|
71
|
+
totalMs(): number;
|
|
72
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-phase wall-clock timing for the search pipeline and similar
|
|
3
|
+
* multi-stage flows. Designed to be called from query() with minimal
|
|
4
|
+
* ceremony and negligible overhead (< 0.1 ms per phase recorded).
|
|
5
|
+
*
|
|
6
|
+
* ### Sequential usage
|
|
7
|
+
*
|
|
8
|
+
* ```ts
|
|
9
|
+
* const t = new PhaseTimer();
|
|
10
|
+
* t.start('bm25'); await bm25Search(...); t.stop();
|
|
11
|
+
* t.start('merge'); doMerge(); t.stop();
|
|
12
|
+
* const phases = t.summary(); // { bm25: 42, merge: 3 }
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* ### Concurrent usage (Promise.all)
|
|
16
|
+
*
|
|
17
|
+
* `start`/`stop` assume a single active phase at a time, which is wrong
|
|
18
|
+
* for concurrent work inside `Promise.all` — the second `start` would
|
|
19
|
+
* auto-stop the first and only one of the two would get timed. Use
|
|
20
|
+
* {@link PhaseTimer.time} to wrap each concurrent promise instead:
|
|
21
|
+
*
|
|
22
|
+
* ```ts
|
|
23
|
+
* const [a, b] = await Promise.all([
|
|
24
|
+
* t.time('bm25', bm25Search(...)),
|
|
25
|
+
* t.time('vector', semanticSearch(...)),
|
|
26
|
+
* ]);
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* ### Pre-measured durations
|
|
30
|
+
*
|
|
31
|
+
* ```ts
|
|
32
|
+
* t.mark('inherited', 12.5);
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export class PhaseTimer {
|
|
36
|
+
phases = new Map();
|
|
37
|
+
current = null;
|
|
38
|
+
t0 = 0;
|
|
39
|
+
/** Start a new phase. Implicitly stops the previous one, if any. */
|
|
40
|
+
start(phase) {
|
|
41
|
+
this.stop();
|
|
42
|
+
this.current = phase;
|
|
43
|
+
this.t0 = performance.now();
|
|
44
|
+
}
|
|
45
|
+
/** Stop the current phase. No-op if no phase is active. */
|
|
46
|
+
stop() {
|
|
47
|
+
if (this.current !== null) {
|
|
48
|
+
const elapsed = performance.now() - this.t0;
|
|
49
|
+
this.phases.set(this.current, (this.phases.get(this.current) ?? 0) + elapsed);
|
|
50
|
+
this.current = null;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Record a pre-measured duration without touching the active phase.
|
|
55
|
+
* Use for concurrent operations inside `Promise.all` where
|
|
56
|
+
* `start`/`stop` would step on each other, or for durations imported
|
|
57
|
+
* from sub-systems. Additive across repeated calls with the same
|
|
58
|
+
* phase name. Ignores negative / non-finite inputs.
|
|
59
|
+
*/
|
|
60
|
+
mark(phase, durationMs) {
|
|
61
|
+
if (!Number.isFinite(durationMs) || durationMs < 0)
|
|
62
|
+
return;
|
|
63
|
+
this.phases.set(phase, (this.phases.get(phase) ?? 0) + durationMs);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Wrap a promise with automatic timing. Records wall time via
|
|
67
|
+
* {@link PhaseTimer.mark} regardless of which other phases are
|
|
68
|
+
* active — safe to use inside `Promise.all`.
|
|
69
|
+
*/
|
|
70
|
+
async time(phase, promise) {
|
|
71
|
+
const t0 = performance.now();
|
|
72
|
+
try {
|
|
73
|
+
return await promise;
|
|
74
|
+
}
|
|
75
|
+
finally {
|
|
76
|
+
this.mark(phase, performance.now() - t0);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Snapshot of accumulated durations rounded to 0.1 ms. Stops the
|
|
81
|
+
* current phase if one is still running.
|
|
82
|
+
*/
|
|
83
|
+
summary() {
|
|
84
|
+
this.stop();
|
|
85
|
+
const out = {};
|
|
86
|
+
for (const [k, v] of this.phases)
|
|
87
|
+
out[k] = Math.round(v * 10) / 10;
|
|
88
|
+
return out;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Sum of every recorded phase duration.
|
|
92
|
+
*
|
|
93
|
+
* Note: for phases recorded via {@link PhaseTimer.time} or
|
|
94
|
+
* {@link PhaseTimer.mark} this is the *sum*, not the wall time —
|
|
95
|
+
* concurrent work overlaps and the sum can exceed the end-to-end
|
|
96
|
+
* wall time. Record wall time separately with `mark('wall', …)` if
|
|
97
|
+
* that distinction matters.
|
|
98
|
+
*/
|
|
99
|
+
totalMs() {
|
|
100
|
+
this.stop();
|
|
101
|
+
let t = 0;
|
|
102
|
+
for (const v of this.phases.values())
|
|
103
|
+
t += v;
|
|
104
|
+
return Math.round(t * 10) / 10;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import Parser from 'tree-sitter';
|
|
2
|
+
import { SupportedLanguages } from '../../_shared/index.js';
|
|
3
|
+
export declare const isLanguageAvailable: (language: SupportedLanguages) => boolean;
|
|
4
|
+
export declare const resolveLanguageKey: (language: SupportedLanguages, filePath?: string) => string;
|
|
5
|
+
export declare const getLanguageGrammar: (language: SupportedLanguages, filePath?: string) => any;
|
|
6
|
+
export declare const loadParser: () => Promise<Parser>;
|
|
7
|
+
export declare const loadLanguage: (language: SupportedLanguages, filePath?: string) => Promise<void>;
|
|
8
|
+
export declare const createParserForLanguage: (language: SupportedLanguages, filePath?: string) => Promise<Parser>;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import Parser from 'tree-sitter';
|
|
2
|
+
import JavaScript from 'tree-sitter-javascript';
|
|
3
|
+
import TypeScript from 'tree-sitter-typescript';
|
|
4
|
+
import Python from 'tree-sitter-python';
|
|
5
|
+
import Java from 'tree-sitter-java';
|
|
6
|
+
import C from 'tree-sitter-c';
|
|
7
|
+
import CPP from 'tree-sitter-cpp';
|
|
8
|
+
// Explicit subpath import: tree-sitter-c-sharp declares `type: "module"` with
|
|
9
|
+
// `main: "bindings/node"` (no extension) and no `exports` field, which triggers
|
|
10
|
+
// Node 22's DEP0151 deprecation warning on the bare-package import. Importing
|
|
11
|
+
// the built entrypoint directly bypasses the deprecated ESM main-field
|
|
12
|
+
// resolution. (#1013)
|
|
13
|
+
import CSharp from 'tree-sitter-c-sharp/bindings/node/index.js';
|
|
14
|
+
import Go from 'tree-sitter-go';
|
|
15
|
+
import Rust from 'tree-sitter-rust';
|
|
16
|
+
import PHP from 'tree-sitter-php';
|
|
17
|
+
import Ruby from 'tree-sitter-ruby';
|
|
18
|
+
import { createRequire } from 'node:module';
|
|
19
|
+
import { SupportedLanguages } from '../../_shared/index.js';
|
|
20
|
+
// tree-sitter-swift and tree-sitter-dart are optionalDependencies — may not be installed
|
|
21
|
+
const _require = createRequire(import.meta.url);
|
|
22
|
+
let Swift = null;
|
|
23
|
+
try {
|
|
24
|
+
Swift = _require('tree-sitter-swift');
|
|
25
|
+
}
|
|
26
|
+
catch { }
|
|
27
|
+
let Dart = null;
|
|
28
|
+
try {
|
|
29
|
+
Dart = _require('tree-sitter-dart');
|
|
30
|
+
}
|
|
31
|
+
catch { }
|
|
32
|
+
// tree-sitter-kotlin is an optionalDependency — may not be installed
|
|
33
|
+
let Kotlin = null;
|
|
34
|
+
try {
|
|
35
|
+
Kotlin = _require('tree-sitter-kotlin');
|
|
36
|
+
}
|
|
37
|
+
catch { }
|
|
38
|
+
let parser = null;
|
|
39
|
+
const languageMap = {
|
|
40
|
+
[SupportedLanguages.JavaScript]: JavaScript,
|
|
41
|
+
[SupportedLanguages.TypeScript]: TypeScript.typescript,
|
|
42
|
+
[`${SupportedLanguages.TypeScript}:tsx`]: TypeScript.tsx,
|
|
43
|
+
[SupportedLanguages.Python]: Python,
|
|
44
|
+
[SupportedLanguages.Java]: Java,
|
|
45
|
+
[SupportedLanguages.C]: C,
|
|
46
|
+
[SupportedLanguages.CPlusPlus]: CPP,
|
|
47
|
+
[SupportedLanguages.CSharp]: CSharp,
|
|
48
|
+
[SupportedLanguages.Go]: Go,
|
|
49
|
+
[SupportedLanguages.Rust]: Rust,
|
|
50
|
+
...(Kotlin ? { [SupportedLanguages.Kotlin]: Kotlin } : {}),
|
|
51
|
+
[SupportedLanguages.PHP]: PHP.php_only,
|
|
52
|
+
[SupportedLanguages.Ruby]: Ruby,
|
|
53
|
+
[SupportedLanguages.Vue]: TypeScript.typescript,
|
|
54
|
+
...(Dart ? { [SupportedLanguages.Dart]: Dart } : {}),
|
|
55
|
+
...(Swift ? { [SupportedLanguages.Swift]: Swift } : {}),
|
|
56
|
+
};
|
|
57
|
+
export const isLanguageAvailable = (language) => language in languageMap;
|
|
58
|
+
export const resolveLanguageKey = (language, filePath) => language === SupportedLanguages.TypeScript && filePath?.endsWith('.tsx')
|
|
59
|
+
? `${language}:tsx`
|
|
60
|
+
: language;
|
|
61
|
+
export const getLanguageGrammar = (language, filePath) => {
|
|
62
|
+
const key = resolveLanguageKey(language, filePath);
|
|
63
|
+
const lang = languageMap[key];
|
|
64
|
+
if (!lang) {
|
|
65
|
+
throw new Error(`Unsupported language: ${language}`);
|
|
66
|
+
}
|
|
67
|
+
return lang;
|
|
68
|
+
};
|
|
69
|
+
export const loadParser = async () => {
|
|
70
|
+
if (parser)
|
|
71
|
+
return parser;
|
|
72
|
+
parser = new Parser();
|
|
73
|
+
return parser;
|
|
74
|
+
};
|
|
75
|
+
export const loadLanguage = async (language, filePath) => {
|
|
76
|
+
if (!parser)
|
|
77
|
+
await loadParser();
|
|
78
|
+
parser.setLanguage(getLanguageGrammar(language, filePath));
|
|
79
|
+
};
|
|
80
|
+
export const createParserForLanguage = async (language, filePath) => {
|
|
81
|
+
const freshParser = new Parser();
|
|
82
|
+
freshParser.setLanguage(getLanguageGrammar(language, filePath));
|
|
83
|
+
return freshParser;
|
|
84
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cursor CLI Client for Wiki Generation
|
|
3
|
+
*
|
|
4
|
+
* Wrapper for the Cursor headless CLI (`agent` command).
|
|
5
|
+
* Uses print mode for non-interactive LLM calls.
|
|
6
|
+
*
|
|
7
|
+
* Docs: https://cursor.com/docs/cli/headless
|
|
8
|
+
*/
|
|
9
|
+
import type { LLMResponse, CallLLMOptions } from './llm-client.js';
|
|
10
|
+
export interface CursorConfig {
|
|
11
|
+
model?: string;
|
|
12
|
+
workingDirectory?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Detect if Cursor CLI is available in PATH.
|
|
16
|
+
* Returns the binary name if found ('agent'), null otherwise.
|
|
17
|
+
* Result is cached after the first call.
|
|
18
|
+
*/
|
|
19
|
+
export declare function detectCursorCLI(): string | null;
|
|
20
|
+
/**
|
|
21
|
+
* Resolve Cursor CLI configuration.
|
|
22
|
+
* Model is optional - if not provided, Cursor CLI uses its default (auto).
|
|
23
|
+
*/
|
|
24
|
+
export declare function resolveCursorConfig(overrides?: Partial<CursorConfig>): CursorConfig;
|
|
25
|
+
/**
|
|
26
|
+
* Call the Cursor CLI in print mode.
|
|
27
|
+
*
|
|
28
|
+
* Uses `agent -p --output-format text` for clean non-streaming output.
|
|
29
|
+
* The prompt is passed as the final CLI argument.
|
|
30
|
+
*/
|
|
31
|
+
export declare function callCursorLLM(prompt: string, config: CursorConfig, systemPrompt?: string, options?: CallLLMOptions): Promise<LLMResponse>;
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cursor CLI Client for Wiki Generation
|
|
3
|
+
*
|
|
4
|
+
* Wrapper for the Cursor headless CLI (`agent` command).
|
|
5
|
+
* Uses print mode for non-interactive LLM calls.
|
|
6
|
+
*
|
|
7
|
+
* Docs: https://cursor.com/docs/cli/headless
|
|
8
|
+
*/
|
|
9
|
+
import { spawn, execSync } from 'child_process';
|
|
10
|
+
function isVerbose() {
|
|
11
|
+
return process.env.CODRAGRAPH_VERBOSE === '1';
|
|
12
|
+
}
|
|
13
|
+
function verboseLog(...args) {
|
|
14
|
+
if (isVerbose()) {
|
|
15
|
+
console.log('[cursor-cli]', ...args);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
let cachedCursorBin;
|
|
19
|
+
/**
|
|
20
|
+
* Detect if Cursor CLI is available in PATH.
|
|
21
|
+
* Returns the binary name if found ('agent'), null otherwise.
|
|
22
|
+
* Result is cached after the first call.
|
|
23
|
+
*/
|
|
24
|
+
export function detectCursorCLI() {
|
|
25
|
+
if (cachedCursorBin !== undefined)
|
|
26
|
+
return cachedCursorBin;
|
|
27
|
+
try {
|
|
28
|
+
execSync('agent --version', { stdio: 'ignore' });
|
|
29
|
+
cachedCursorBin = 'agent';
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
cachedCursorBin = null;
|
|
33
|
+
}
|
|
34
|
+
return cachedCursorBin;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Resolve Cursor CLI configuration.
|
|
38
|
+
* Model is optional - if not provided, Cursor CLI uses its default (auto).
|
|
39
|
+
*/
|
|
40
|
+
export function resolveCursorConfig(overrides) {
|
|
41
|
+
return {
|
|
42
|
+
model: overrides?.model,
|
|
43
|
+
workingDirectory: overrides?.workingDirectory,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Call the Cursor CLI in print mode.
|
|
48
|
+
*
|
|
49
|
+
* Uses `agent -p --output-format text` for clean non-streaming output.
|
|
50
|
+
* The prompt is passed as the final CLI argument.
|
|
51
|
+
*/
|
|
52
|
+
export async function callCursorLLM(prompt, config, systemPrompt, options) {
|
|
53
|
+
const cursorBin = detectCursorCLI();
|
|
54
|
+
if (!cursorBin) {
|
|
55
|
+
throw new Error('Cursor CLI not found. Install it from https://cursor.com/docs/cli/installation');
|
|
56
|
+
}
|
|
57
|
+
// Always use text format to get clean output without agent narration/thinking.
|
|
58
|
+
// stream-json captures assistant messages which include "Let me explore..." narration
|
|
59
|
+
// that pollutes the actual content when using thinking models.
|
|
60
|
+
const fullPrompt = systemPrompt ? `${systemPrompt}\n\n---\n\n${prompt}` : prompt;
|
|
61
|
+
const args = ['-p', '--output-format', 'text'];
|
|
62
|
+
if (config.model) {
|
|
63
|
+
args.push('--model', config.model);
|
|
64
|
+
}
|
|
65
|
+
// Add the prompt as the final argument
|
|
66
|
+
args.push(fullPrompt);
|
|
67
|
+
verboseLog('Spawning:', cursorBin, args.slice(0, -1).join(' '), '[prompt length:', fullPrompt.length, 'chars]');
|
|
68
|
+
verboseLog('Working directory:', config.workingDirectory || process.cwd());
|
|
69
|
+
if (config.model) {
|
|
70
|
+
verboseLog('Model:', config.model);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
verboseLog('Model: auto (default)');
|
|
74
|
+
}
|
|
75
|
+
const startTime = Date.now();
|
|
76
|
+
return new Promise((resolve, reject) => {
|
|
77
|
+
const child = spawn(cursorBin, args, {
|
|
78
|
+
cwd: config.workingDirectory || process.cwd(),
|
|
79
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
80
|
+
env: {
|
|
81
|
+
...process.env,
|
|
82
|
+
// Ensure non-interactive mode
|
|
83
|
+
CI: '1',
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
verboseLog('Process spawned with PID:', child.pid);
|
|
87
|
+
let stdout = '';
|
|
88
|
+
let stderr = '';
|
|
89
|
+
// Text mode - collect all output, report progress based on output size
|
|
90
|
+
child.stdout.on('data', (chunk) => {
|
|
91
|
+
const chunkStr = chunk.toString();
|
|
92
|
+
stdout += chunkStr;
|
|
93
|
+
verboseLog(`[stdout] received ${chunkStr.length} chars, total: ${stdout.length}`);
|
|
94
|
+
// Report progress if callback provided
|
|
95
|
+
if (options?.onChunk) {
|
|
96
|
+
options.onChunk(stdout.length);
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
child.on('close', (code) => {
|
|
100
|
+
const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
|
|
101
|
+
verboseLog(`Process exited with code ${code} after ${elapsed}s`);
|
|
102
|
+
verboseLog(`stdout length: ${stdout.length} chars`);
|
|
103
|
+
if (code !== 0) {
|
|
104
|
+
verboseLog('stderr:', stderr);
|
|
105
|
+
reject(new Error(`Cursor CLI exited with code ${code}: ${stderr}`));
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
resolve({ content: stdout.trim() });
|
|
109
|
+
});
|
|
110
|
+
child.stderr.on('data', (chunk) => {
|
|
111
|
+
const chunkStr = chunk.toString();
|
|
112
|
+
stderr += chunkStr;
|
|
113
|
+
verboseLog('[stderr]', chunkStr.trim());
|
|
114
|
+
});
|
|
115
|
+
child.on('error', (err) => {
|
|
116
|
+
verboseLog('Spawn error:', err.message);
|
|
117
|
+
reject(new Error(`Failed to spawn Cursor CLI: ${err.message}`));
|
|
118
|
+
});
|
|
119
|
+
// Close stdin immediately since we pass prompt as argument
|
|
120
|
+
child.stdin.end();
|
|
121
|
+
});
|
|
122
|
+
}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wiki Generator
|
|
3
|
+
*
|
|
4
|
+
* Orchestrates the full wiki generation pipeline:
|
|
5
|
+
* Phase 0: Validate prerequisites + gather graph structure
|
|
6
|
+
* Phase 1: Build module tree (one LLM call)
|
|
7
|
+
* Phase 2: Generate module pages (one LLM call per module, bottom-up)
|
|
8
|
+
* Phase 3: Generate overview page
|
|
9
|
+
*
|
|
10
|
+
* Supports incremental updates via git diff + module-file mapping.
|
|
11
|
+
*/
|
|
12
|
+
import { type LLMConfig } from './llm-client.js';
|
|
13
|
+
export interface WikiOptions {
|
|
14
|
+
force?: boolean;
|
|
15
|
+
maxTokensPerModule?: number;
|
|
16
|
+
concurrency?: number;
|
|
17
|
+
/** If true, stop after building module tree for user review */
|
|
18
|
+
reviewOnly?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface WikiMeta {
|
|
21
|
+
fromCommit: string;
|
|
22
|
+
generatedAt: string;
|
|
23
|
+
model: string;
|
|
24
|
+
moduleFiles: Record<string, string[]>;
|
|
25
|
+
moduleTree: ModuleTreeNode[];
|
|
26
|
+
}
|
|
27
|
+
export interface ModuleTreeNode {
|
|
28
|
+
name: string;
|
|
29
|
+
slug: string;
|
|
30
|
+
files: string[];
|
|
31
|
+
children?: ModuleTreeNode[];
|
|
32
|
+
}
|
|
33
|
+
export type ProgressCallback = (phase: string, percent: number, detail?: string) => void;
|
|
34
|
+
export interface WikiRunResult {
|
|
35
|
+
pagesGenerated: number;
|
|
36
|
+
mode: 'full' | 'incremental' | 'up-to-date';
|
|
37
|
+
failedModules: string[];
|
|
38
|
+
moduleTree?: ModuleTreeNode[];
|
|
39
|
+
}
|
|
40
|
+
export declare class WikiGenerator {
|
|
41
|
+
private repoPath;
|
|
42
|
+
private storagePath;
|
|
43
|
+
private wikiDir;
|
|
44
|
+
private lbugPath;
|
|
45
|
+
private llmConfig;
|
|
46
|
+
private maxTokensPerModule;
|
|
47
|
+
private concurrency;
|
|
48
|
+
private options;
|
|
49
|
+
private onProgress;
|
|
50
|
+
private failedModules;
|
|
51
|
+
constructor(repoPath: string, storagePath: string, lbugPath: string, llmConfig: LLMConfig, options?: WikiOptions, onProgress?: ProgressCallback);
|
|
52
|
+
private lastPercent;
|
|
53
|
+
/**
|
|
54
|
+
* Create streaming options that report LLM progress to the progress bar.
|
|
55
|
+
*
|
|
56
|
+
* Progress calculation:
|
|
57
|
+
* - If fixedPercent is provided, we show incremental progress within that phase
|
|
58
|
+
* based on token generation (e.g., grouping at 15% → 15-28%)
|
|
59
|
+
* - If fixedPercent is NOT provided, we only update the label with token count
|
|
60
|
+
* but keep the current percentage (avoids fluctuation during module generation)
|
|
61
|
+
*
|
|
62
|
+
* Also touches the DB connection periodically to prevent idle timeout.
|
|
63
|
+
*/
|
|
64
|
+
private streamOpts;
|
|
65
|
+
/**
|
|
66
|
+
* Route LLM call to the appropriate provider (OpenAI-compatible or Cursor CLI).
|
|
67
|
+
*/
|
|
68
|
+
private invokeLLM;
|
|
69
|
+
/**
|
|
70
|
+
* Main entry point. Runs the full pipeline or incremental update.
|
|
71
|
+
*/
|
|
72
|
+
run(): Promise<WikiRunResult>;
|
|
73
|
+
private ensureHTMLViewer;
|
|
74
|
+
private fullGeneration;
|
|
75
|
+
private buildModuleTree;
|
|
76
|
+
/**
|
|
77
|
+
* Parse LLM grouping response. Validates all files are assigned.
|
|
78
|
+
*/
|
|
79
|
+
private parseGroupingResponse;
|
|
80
|
+
/**
|
|
81
|
+
* Fallback grouping by top-level directory when LLM parsing fails.
|
|
82
|
+
*/
|
|
83
|
+
private fallbackGrouping;
|
|
84
|
+
/**
|
|
85
|
+
* Split a large module into sub-modules by subdirectory.
|
|
86
|
+
* Uses the full subDir path for naming to avoid slug collisions
|
|
87
|
+
* (e.g., "synapse-screen/src" vs "synapse-core/src").
|
|
88
|
+
*/
|
|
89
|
+
private splitBySubdirectory;
|
|
90
|
+
/**
|
|
91
|
+
* Generate a leaf module page from source code + graph data.
|
|
92
|
+
*/
|
|
93
|
+
private generateLeafPage;
|
|
94
|
+
/**
|
|
95
|
+
* Generate a parent module page from children's documentation.
|
|
96
|
+
*/
|
|
97
|
+
private generateParentPage;
|
|
98
|
+
private generateOverview;
|
|
99
|
+
private incrementalUpdate;
|
|
100
|
+
private getCurrentCommit;
|
|
101
|
+
/**
|
|
102
|
+
* Check if fromCommit is an ancestor of toCommit (reachable in git history).
|
|
103
|
+
* Returns false if commits are on divergent branches or fromCommit doesn't exist.
|
|
104
|
+
*/
|
|
105
|
+
private isCommitReachable;
|
|
106
|
+
private getChangedFiles;
|
|
107
|
+
private readSourceFiles;
|
|
108
|
+
private truncateSource;
|
|
109
|
+
private estimateModuleTokens;
|
|
110
|
+
private readProjectInfo;
|
|
111
|
+
private extractModuleFiles;
|
|
112
|
+
private countModules;
|
|
113
|
+
/**
|
|
114
|
+
* Flatten the module tree into leaf nodes and parent nodes.
|
|
115
|
+
* Leaves can be processed in parallel; parents must wait for children.
|
|
116
|
+
*/
|
|
117
|
+
private flattenModuleTree;
|
|
118
|
+
/**
|
|
119
|
+
* Run async tasks in parallel with a concurrency limit and adaptive rate limiting.
|
|
120
|
+
* If a 429 rate limit is hit, concurrency is temporarily reduced.
|
|
121
|
+
*/
|
|
122
|
+
private runParallel;
|
|
123
|
+
private findNodeBySlug;
|
|
124
|
+
private slugify;
|
|
125
|
+
private fileExists;
|
|
126
|
+
private loadWikiMeta;
|
|
127
|
+
private saveWikiMeta;
|
|
128
|
+
private saveModuleTree;
|
|
129
|
+
}
|