@opencodehub/ingestion 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/README.md +69 -0
- package/dist/extract/index.d.ts +8 -0
- package/dist/extract/index.d.ts.map +1 -0
- package/dist/extract/index.js +6 -0
- package/dist/extract/index.js.map +1 -0
- package/dist/extract/orm-detector.d.ts +19 -0
- package/dist/extract/orm-detector.d.ts.map +1 -0
- package/dist/extract/orm-detector.js +209 -0
- package/dist/extract/orm-detector.js.map +1 -0
- package/dist/extract/property-access.d.ts +76 -0
- package/dist/extract/property-access.d.ts.map +1 -0
- package/dist/extract/property-access.js +260 -0
- package/dist/extract/property-access.js.map +1 -0
- package/dist/extract/receiver-resolver.d.ts +86 -0
- package/dist/extract/receiver-resolver.d.ts.map +1 -0
- package/dist/extract/receiver-resolver.js +77 -0
- package/dist/extract/receiver-resolver.js.map +1 -0
- package/dist/extract/route-detector-java.d.ts +29 -0
- package/dist/extract/route-detector-java.d.ts.map +1 -0
- package/dist/extract/route-detector-java.js +190 -0
- package/dist/extract/route-detector-java.js.map +1 -0
- package/dist/extract/route-detector-nestjs.d.ts +30 -0
- package/dist/extract/route-detector-nestjs.d.ts.map +1 -0
- package/dist/extract/route-detector-nestjs.js +134 -0
- package/dist/extract/route-detector-nestjs.js.map +1 -0
- package/dist/extract/route-detector-python.d.ts +28 -0
- package/dist/extract/route-detector-python.d.ts.map +1 -0
- package/dist/extract/route-detector-python.js +100 -0
- package/dist/extract/route-detector-python.js.map +1 -0
- package/dist/extract/route-detector-rails.d.ts +28 -0
- package/dist/extract/route-detector-rails.d.ts.map +1 -0
- package/dist/extract/route-detector-rails.js +162 -0
- package/dist/extract/route-detector-rails.js.map +1 -0
- package/dist/extract/route-detector.d.ts +45 -0
- package/dist/extract/route-detector.d.ts.map +1 -0
- package/dist/extract/route-detector.js +467 -0
- package/dist/extract/route-detector.js.map +1 -0
- package/dist/extract/tool-detector.d.ts +26 -0
- package/dist/extract/tool-detector.d.ts.map +1 -0
- package/dist/extract/tool-detector.js +364 -0
- package/dist/extract/tool-detector.js.map +1 -0
- package/dist/extract/types.d.ts +89 -0
- package/dist/extract/types.d.ts.map +1 -0
- package/dist/extract/types.js +11 -0
- package/dist/extract/types.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/parse/cobol-regex.d.ts +85 -0
- package/dist/parse/cobol-regex.d.ts.map +1 -0
- package/dist/parse/cobol-regex.js +355 -0
- package/dist/parse/cobol-regex.js.map +1 -0
- package/dist/parse/grammar-registry.d.ts +115 -0
- package/dist/parse/grammar-registry.d.ts.map +1 -0
- package/dist/parse/grammar-registry.js +278 -0
- package/dist/parse/grammar-registry.js.map +1 -0
- package/dist/parse/index.d.ts +14 -0
- package/dist/parse/index.d.ts.map +1 -0
- package/dist/parse/index.js +10 -0
- package/dist/parse/index.js.map +1 -0
- package/dist/parse/language-detector.d.ts +17 -0
- package/dist/parse/language-detector.d.ts.map +1 -0
- package/dist/parse/language-detector.js +104 -0
- package/dist/parse/language-detector.js.map +1 -0
- package/dist/parse/parse-worker.d.ts +24 -0
- package/dist/parse/parse-worker.d.ts.map +1 -0
- package/dist/parse/parse-worker.js +230 -0
- package/dist/parse/parse-worker.js.map +1 -0
- package/dist/parse/types.d.ts +49 -0
- package/dist/parse/types.d.ts.map +1 -0
- package/dist/parse/types.js +11 -0
- package/dist/parse/types.js.map +1 -0
- package/dist/parse/unified-queries.d.ts +37 -0
- package/dist/parse/unified-queries.d.ts.map +1 -0
- package/dist/parse/unified-queries.js +623 -0
- package/dist/parse/unified-queries.js.map +1 -0
- package/dist/parse/wasm-fallback.d.ts +88 -0
- package/dist/parse/wasm-fallback.d.ts.map +1 -0
- package/dist/parse/wasm-fallback.js +258 -0
- package/dist/parse/wasm-fallback.js.map +1 -0
- package/dist/parse/worker-pool.d.ts +48 -0
- package/dist/parse/worker-pool.d.ts.map +1 -0
- package/dist/parse/worker-pool.js +97 -0
- package/dist/parse/worker-pool.js.map +1 -0
- package/dist/pipeline/dep-parsers/go.d.ts +25 -0
- package/dist/pipeline/dep-parsers/go.d.ts.map +1 -0
- package/dist/pipeline/dep-parsers/go.js +146 -0
- package/dist/pipeline/dep-parsers/go.js.map +1 -0
- package/dist/pipeline/dep-parsers/index.d.ts +17 -0
- package/dist/pipeline/dep-parsers/index.d.ts.map +1 -0
- package/dist/pipeline/dep-parsers/index.js +16 -0
- package/dist/pipeline/dep-parsers/index.js.map +1 -0
- package/dist/pipeline/dep-parsers/maven.d.ts +24 -0
- package/dist/pipeline/dep-parsers/maven.d.ts.map +1 -0
- package/dist/pipeline/dep-parsers/maven.js +131 -0
- package/dist/pipeline/dep-parsers/maven.js.map +1 -0
- package/dist/pipeline/dep-parsers/npm.d.ts +30 -0
- package/dist/pipeline/dep-parsers/npm.d.ts.map +1 -0
- package/dist/pipeline/dep-parsers/npm.js +309 -0
- package/dist/pipeline/dep-parsers/npm.js.map +1 -0
- package/dist/pipeline/dep-parsers/nuget.d.ts +24 -0
- package/dist/pipeline/dep-parsers/nuget.d.ts.map +1 -0
- package/dist/pipeline/dep-parsers/nuget.js +178 -0
- package/dist/pipeline/dep-parsers/nuget.js.map +1 -0
- package/dist/pipeline/dep-parsers/python.d.ts +21 -0
- package/dist/pipeline/dep-parsers/python.d.ts.map +1 -0
- package/dist/pipeline/dep-parsers/python.js +369 -0
- package/dist/pipeline/dep-parsers/python.js.map +1 -0
- package/dist/pipeline/dep-parsers/rust.d.ts +18 -0
- package/dist/pipeline/dep-parsers/rust.d.ts.map +1 -0
- package/dist/pipeline/dep-parsers/rust.js +134 -0
- package/dist/pipeline/dep-parsers/rust.js.map +1 -0
- package/dist/pipeline/dep-parsers/spdx-normalize.d.ts +15 -0
- package/dist/pipeline/dep-parsers/spdx-normalize.d.ts.map +1 -0
- package/dist/pipeline/dep-parsers/spdx-normalize.js +31 -0
- package/dist/pipeline/dep-parsers/spdx-normalize.js.map +1 -0
- package/dist/pipeline/dep-parsers/types.d.ts +63 -0
- package/dist/pipeline/dep-parsers/types.d.ts.map +1 -0
- package/dist/pipeline/dep-parsers/types.js +56 -0
- package/dist/pipeline/dep-parsers/types.js.map +1 -0
- package/dist/pipeline/gitignore-stack.d.ts +44 -0
- package/dist/pipeline/gitignore-stack.d.ts.map +1 -0
- package/dist/pipeline/gitignore-stack.js +69 -0
- package/dist/pipeline/gitignore-stack.js.map +1 -0
- package/dist/pipeline/gitignore.d.ts +67 -0
- package/dist/pipeline/gitignore.d.ts.map +1 -0
- package/dist/pipeline/gitignore.js +210 -0
- package/dist/pipeline/gitignore.js.map +1 -0
- package/dist/pipeline/index.d.ts +53 -0
- package/dist/pipeline/index.d.ts.map +1 -0
- package/dist/pipeline/index.js +29 -0
- package/dist/pipeline/index.js.map +1 -0
- package/dist/pipeline/orchestrator.d.ts +105 -0
- package/dist/pipeline/orchestrator.d.ts.map +1 -0
- package/dist/pipeline/orchestrator.js +175 -0
- package/dist/pipeline/orchestrator.js.map +1 -0
- package/dist/pipeline/ownership-helpers/drift.d.ts +41 -0
- package/dist/pipeline/ownership-helpers/drift.d.ts.map +1 -0
- package/dist/pipeline/ownership-helpers/drift.js +122 -0
- package/dist/pipeline/ownership-helpers/drift.js.map +1 -0
- package/dist/pipeline/ownership-helpers/gini-community.d.ts +24 -0
- package/dist/pipeline/ownership-helpers/gini-community.d.ts.map +1 -0
- package/dist/pipeline/ownership-helpers/gini-community.js +32 -0
- package/dist/pipeline/ownership-helpers/gini-community.js.map +1 -0
- package/dist/pipeline/ownership-helpers/git-blame-batcher.d.ts +71 -0
- package/dist/pipeline/ownership-helpers/git-blame-batcher.d.ts.map +1 -0
- package/dist/pipeline/ownership-helpers/git-blame-batcher.js +178 -0
- package/dist/pipeline/ownership-helpers/git-blame-batcher.js.map +1 -0
- package/dist/pipeline/ownership-helpers/line-overlap.d.ts +35 -0
- package/dist/pipeline/ownership-helpers/line-overlap.d.ts.map +1 -0
- package/dist/pipeline/ownership-helpers/line-overlap.js +62 -0
- package/dist/pipeline/ownership-helpers/line-overlap.js.map +1 -0
- package/dist/pipeline/ownership-helpers/orphan.d.ts +73 -0
- package/dist/pipeline/ownership-helpers/orphan.d.ts.map +1 -0
- package/dist/pipeline/ownership-helpers/orphan.js +117 -0
- package/dist/pipeline/ownership-helpers/orphan.js.map +1 -0
- package/dist/pipeline/phases/accesses.d.ts +44 -0
- package/dist/pipeline/phases/accesses.d.ts.map +1 -0
- package/dist/pipeline/phases/accesses.js +194 -0
- package/dist/pipeline/phases/accesses.js.map +1 -0
- package/dist/pipeline/phases/annotate.d.ts +28 -0
- package/dist/pipeline/phases/annotate.d.ts.map +1 -0
- package/dist/pipeline/phases/annotate.js +60 -0
- package/dist/pipeline/phases/annotate.js.map +1 -0
- package/dist/pipeline/phases/cochange.d.ts +42 -0
- package/dist/pipeline/phases/cochange.d.ts.map +1 -0
- package/dist/pipeline/phases/cochange.js +0 -0
- package/dist/pipeline/phases/cochange.js.map +1 -0
- package/dist/pipeline/phases/communities.d.ts +34 -0
- package/dist/pipeline/phases/communities.d.ts.map +1 -0
- package/dist/pipeline/phases/communities.js +412 -0
- package/dist/pipeline/phases/communities.js.map +1 -0
- package/dist/pipeline/phases/complexity.d.ts +50 -0
- package/dist/pipeline/phases/complexity.d.ts.map +1 -0
- package/dist/pipeline/phases/complexity.js +794 -0
- package/dist/pipeline/phases/complexity.js.map +1 -0
- package/dist/pipeline/phases/confidence-demote.d.ts +23 -0
- package/dist/pipeline/phases/confidence-demote.d.ts.map +1 -0
- package/dist/pipeline/phases/confidence-demote.js +113 -0
- package/dist/pipeline/phases/confidence-demote.js.map +1 -0
- package/dist/pipeline/phases/content-cache.d.ts +166 -0
- package/dist/pipeline/phases/content-cache.d.ts.map +1 -0
- package/dist/pipeline/phases/content-cache.js +323 -0
- package/dist/pipeline/phases/content-cache.js.map +1 -0
- package/dist/pipeline/phases/coverage-parsers/cobertura.d.ts +25 -0
- package/dist/pipeline/phases/coverage-parsers/cobertura.d.ts.map +1 -0
- package/dist/pipeline/phases/coverage-parsers/cobertura.js +139 -0
- package/dist/pipeline/phases/coverage-parsers/cobertura.js.map +1 -0
- package/dist/pipeline/phases/coverage-parsers/coverage-py.d.ts +25 -0
- package/dist/pipeline/phases/coverage-parsers/coverage-py.d.ts.map +1 -0
- package/dist/pipeline/phases/coverage-parsers/coverage-py.js +51 -0
- package/dist/pipeline/phases/coverage-parsers/coverage-py.js.map +1 -0
- package/dist/pipeline/phases/coverage-parsers/jacoco.d.ts +32 -0
- package/dist/pipeline/phases/coverage-parsers/jacoco.d.ts.map +1 -0
- package/dist/pipeline/phases/coverage-parsers/jacoco.js +98 -0
- package/dist/pipeline/phases/coverage-parsers/jacoco.js.map +1 -0
- package/dist/pipeline/phases/coverage-parsers/lcov.d.ts +21 -0
- package/dist/pipeline/phases/coverage-parsers/lcov.d.ts.map +1 -0
- package/dist/pipeline/phases/coverage-parsers/lcov.js +104 -0
- package/dist/pipeline/phases/coverage-parsers/lcov.js.map +1 -0
- package/dist/pipeline/phases/coverage-parsers/types.d.ts +27 -0
- package/dist/pipeline/phases/coverage-parsers/types.d.ts.map +1 -0
- package/dist/pipeline/phases/coverage-parsers/types.js +39 -0
- package/dist/pipeline/phases/coverage-parsers/types.js.map +1 -0
- package/dist/pipeline/phases/coverage.d.ts +39 -0
- package/dist/pipeline/phases/coverage.d.ts.map +1 -0
- package/dist/pipeline/phases/coverage.js +154 -0
- package/dist/pipeline/phases/coverage.js.map +1 -0
- package/dist/pipeline/phases/cross-file.d.ts +40 -0
- package/dist/pipeline/phases/cross-file.d.ts.map +1 -0
- package/dist/pipeline/phases/cross-file.js +411 -0
- package/dist/pipeline/phases/cross-file.js.map +1 -0
- package/dist/pipeline/phases/dead-code.d.ts +28 -0
- package/dist/pipeline/phases/dead-code.d.ts.map +1 -0
- package/dist/pipeline/phases/dead-code.js +157 -0
- package/dist/pipeline/phases/dead-code.js.map +1 -0
- package/dist/pipeline/phases/default-set.d.ts +24 -0
- package/dist/pipeline/phases/default-set.d.ts.map +1 -0
- package/dist/pipeline/phases/default-set.js +133 -0
- package/dist/pipeline/phases/default-set.js.map +1 -0
- package/dist/pipeline/phases/dependencies.d.ts +59 -0
- package/dist/pipeline/phases/dependencies.d.ts.map +1 -0
- package/dist/pipeline/phases/dependencies.js +281 -0
- package/dist/pipeline/phases/dependencies.js.map +1 -0
- package/dist/pipeline/phases/embedder-pool.d.ts +31 -0
- package/dist/pipeline/phases/embedder-pool.d.ts.map +1 -0
- package/dist/pipeline/phases/embedder-pool.js +79 -0
- package/dist/pipeline/phases/embedder-pool.js.map +1 -0
- package/dist/pipeline/phases/embedder-worker.d.ts +28 -0
- package/dist/pipeline/phases/embedder-worker.d.ts.map +1 -0
- package/dist/pipeline/phases/embedder-worker.js +43 -0
- package/dist/pipeline/phases/embedder-worker.js.map +1 -0
- package/dist/pipeline/phases/embeddings.d.ts +117 -0
- package/dist/pipeline/phases/embeddings.d.ts.map +1 -0
- package/dist/pipeline/phases/embeddings.js +697 -0
- package/dist/pipeline/phases/embeddings.js.map +1 -0
- package/dist/pipeline/phases/fetches.d.ts +47 -0
- package/dist/pipeline/phases/fetches.d.ts.map +1 -0
- package/dist/pipeline/phases/fetches.js +207 -0
- package/dist/pipeline/phases/fetches.js.map +1 -0
- package/dist/pipeline/phases/incremental-helper.d.ts +96 -0
- package/dist/pipeline/phases/incremental-helper.d.ts.map +1 -0
- package/dist/pipeline/phases/incremental-helper.js +125 -0
- package/dist/pipeline/phases/incremental-helper.js.map +1 -0
- package/dist/pipeline/phases/incremental-scope.d.ts +67 -0
- package/dist/pipeline/phases/incremental-scope.d.ts.map +1 -0
- package/dist/pipeline/phases/incremental-scope.js +225 -0
- package/dist/pipeline/phases/incremental-scope.js.map +1 -0
- package/dist/pipeline/phases/markdown.d.ts +29 -0
- package/dist/pipeline/phases/markdown.d.ts.map +1 -0
- package/dist/pipeline/phases/markdown.js +298 -0
- package/dist/pipeline/phases/markdown.js.map +1 -0
- package/dist/pipeline/phases/mro.d.ts +24 -0
- package/dist/pipeline/phases/mro.d.ts.map +1 -0
- package/dist/pipeline/phases/mro.js +303 -0
- package/dist/pipeline/phases/mro.js.map +1 -0
- package/dist/pipeline/phases/openapi.d.ts +52 -0
- package/dist/pipeline/phases/openapi.d.ts.map +1 -0
- package/dist/pipeline/phases/openapi.js +285 -0
- package/dist/pipeline/phases/openapi.js.map +1 -0
- package/dist/pipeline/phases/orm.d.ts +26 -0
- package/dist/pipeline/phases/orm.d.ts.map +1 -0
- package/dist/pipeline/phases/orm.js +183 -0
- package/dist/pipeline/phases/orm.js.map +1 -0
- package/dist/pipeline/phases/ownership.d.ts +88 -0
- package/dist/pipeline/phases/ownership.d.ts.map +1 -0
- package/dist/pipeline/phases/ownership.js +479 -0
- package/dist/pipeline/phases/ownership.js.map +1 -0
- package/dist/pipeline/phases/parse.d.ts +63 -0
- package/dist/pipeline/phases/parse.d.ts.map +1 -0
- package/dist/pipeline/phases/parse.js +994 -0
- package/dist/pipeline/phases/parse.js.map +1 -0
- package/dist/pipeline/phases/processes.d.ts +47 -0
- package/dist/pipeline/phases/processes.d.ts.map +1 -0
- package/dist/pipeline/phases/processes.js +620 -0
- package/dist/pipeline/phases/processes.js.map +1 -0
- package/dist/pipeline/phases/profile.d.ts +33 -0
- package/dist/pipeline/phases/profile.d.ts.map +1 -0
- package/dist/pipeline/phases/profile.js +91 -0
- package/dist/pipeline/phases/profile.js.map +1 -0
- package/dist/pipeline/phases/repo-node.d.ts +112 -0
- package/dist/pipeline/phases/repo-node.d.ts.map +1 -0
- package/dist/pipeline/phases/repo-node.js +272 -0
- package/dist/pipeline/phases/repo-node.js.map +1 -0
- package/dist/pipeline/phases/risk-snapshot.d.ts +34 -0
- package/dist/pipeline/phases/risk-snapshot.d.ts.map +1 -0
- package/dist/pipeline/phases/risk-snapshot.js +63 -0
- package/dist/pipeline/phases/risk-snapshot.js.map +1 -0
- package/dist/pipeline/phases/routes.d.ts +31 -0
- package/dist/pipeline/phases/routes.d.ts.map +1 -0
- package/dist/pipeline/phases/routes.js +262 -0
- package/dist/pipeline/phases/routes.js.map +1 -0
- package/dist/pipeline/phases/sbom.d.ts +45 -0
- package/dist/pipeline/phases/sbom.d.ts.map +1 -0
- package/dist/pipeline/phases/sbom.js +289 -0
- package/dist/pipeline/phases/sbom.js.map +1 -0
- package/dist/pipeline/phases/scan.d.ts +54 -0
- package/dist/pipeline/phases/scan.d.ts.map +1 -0
- package/dist/pipeline/phases/scan.js +340 -0
- package/dist/pipeline/phases/scan.js.map +1 -0
- package/dist/pipeline/phases/scip-index.d.ts +54 -0
- package/dist/pipeline/phases/scip-index.d.ts.map +1 -0
- package/dist/pipeline/phases/scip-index.js +469 -0
- package/dist/pipeline/phases/scip-index.js.map +1 -0
- package/dist/pipeline/phases/structure.d.ts +21 -0
- package/dist/pipeline/phases/structure.d.ts.map +1 -0
- package/dist/pipeline/phases/structure.js +115 -0
- package/dist/pipeline/phases/structure.js.map +1 -0
- package/dist/pipeline/phases/summarize.d.ts +126 -0
- package/dist/pipeline/phases/summarize.d.ts.map +1 -0
- package/dist/pipeline/phases/summarize.js +401 -0
- package/dist/pipeline/phases/summarize.js.map +1 -0
- package/dist/pipeline/phases/temporal-helpers/branch-divergence.d.ts +42 -0
- package/dist/pipeline/phases/temporal-helpers/branch-divergence.d.ts.map +1 -0
- package/dist/pipeline/phases/temporal-helpers/branch-divergence.js +96 -0
- package/dist/pipeline/phases/temporal-helpers/branch-divergence.js.map +1 -0
- package/dist/pipeline/phases/temporal-helpers/churn-decay.d.ts +22 -0
- package/dist/pipeline/phases/temporal-helpers/churn-decay.d.ts.map +1 -0
- package/dist/pipeline/phases/temporal-helpers/churn-decay.js +32 -0
- package/dist/pipeline/phases/temporal-helpers/churn-decay.js.map +1 -0
- package/dist/pipeline/phases/temporal-helpers/conventional-commits.d.ts +21 -0
- package/dist/pipeline/phases/temporal-helpers/conventional-commits.d.ts.map +1 -0
- package/dist/pipeline/phases/temporal-helpers/conventional-commits.js +37 -0
- package/dist/pipeline/phases/temporal-helpers/conventional-commits.js.map +1 -0
- package/dist/pipeline/phases/temporal-helpers/gini.d.ts +32 -0
- package/dist/pipeline/phases/temporal-helpers/gini.d.ts.map +1 -0
- package/dist/pipeline/phases/temporal-helpers/gini.js +78 -0
- package/dist/pipeline/phases/temporal-helpers/gini.js.map +1 -0
- package/dist/pipeline/phases/temporal-helpers/revert-detect.d.ts +14 -0
- package/dist/pipeline/phases/temporal-helpers/revert-detect.d.ts.map +1 -0
- package/dist/pipeline/phases/temporal-helpers/revert-detect.js +25 -0
- package/dist/pipeline/phases/temporal-helpers/revert-detect.js.map +1 -0
- package/dist/pipeline/phases/temporal-helpers/test-pair.d.ts +18 -0
- package/dist/pipeline/phases/temporal-helpers/test-pair.d.ts.map +1 -0
- package/dist/pipeline/phases/temporal-helpers/test-pair.js +119 -0
- package/dist/pipeline/phases/temporal-helpers/test-pair.js.map +1 -0
- package/dist/pipeline/phases/temporal.d.ts +65 -0
- package/dist/pipeline/phases/temporal.d.ts.map +1 -0
- package/dist/pipeline/phases/temporal.js +621 -0
- package/dist/pipeline/phases/temporal.js.map +1 -0
- package/dist/pipeline/phases/tools.d.ts +21 -0
- package/dist/pipeline/phases/tools.d.ts.map +1 -0
- package/dist/pipeline/phases/tools.js +118 -0
- package/dist/pipeline/phases/tools.js.map +1 -0
- package/dist/pipeline/profile-detectors/api-contracts.d.ts +18 -0
- package/dist/pipeline/profile-detectors/api-contracts.d.ts.map +1 -0
- package/dist/pipeline/profile-detectors/api-contracts.js +78 -0
- package/dist/pipeline/profile-detectors/api-contracts.js.map +1 -0
- package/dist/pipeline/profile-detectors/framework-detector.d.ts +11 -0
- package/dist/pipeline/profile-detectors/framework-detector.d.ts.map +1 -0
- package/dist/pipeline/profile-detectors/framework-detector.js +11 -0
- package/dist/pipeline/profile-detectors/framework-detector.js.map +1 -0
- package/dist/pipeline/profile-detectors/frameworks-catalog.d.ts +7 -0
- package/dist/pipeline/profile-detectors/frameworks-catalog.d.ts.map +1 -0
- package/dist/pipeline/profile-detectors/frameworks-catalog.js +7 -0
- package/dist/pipeline/profile-detectors/frameworks-catalog.js.map +1 -0
- package/dist/pipeline/profile-detectors/frameworks.d.ts +7 -0
- package/dist/pipeline/profile-detectors/frameworks.d.ts.map +1 -0
- package/dist/pipeline/profile-detectors/frameworks.js +7 -0
- package/dist/pipeline/profile-detectors/frameworks.js.map +1 -0
- package/dist/pipeline/profile-detectors/iac.d.ts +22 -0
- package/dist/pipeline/profile-detectors/iac.d.ts.map +1 -0
- package/dist/pipeline/profile-detectors/iac.js +97 -0
- package/dist/pipeline/profile-detectors/iac.js.map +1 -0
- package/dist/pipeline/profile-detectors/languages.d.ts +18 -0
- package/dist/pipeline/profile-detectors/languages.d.ts.map +1 -0
- package/dist/pipeline/profile-detectors/languages.js +60 -0
- package/dist/pipeline/profile-detectors/languages.js.map +1 -0
- package/dist/pipeline/profile-detectors/manifests.d.ts +7 -0
- package/dist/pipeline/profile-detectors/manifests.d.ts.map +1 -0
- package/dist/pipeline/profile-detectors/manifests.js +7 -0
- package/dist/pipeline/profile-detectors/manifests.js.map +1 -0
- package/dist/pipeline/profile-detectors/src-dirs.d.ts +17 -0
- package/dist/pipeline/profile-detectors/src-dirs.d.ts.map +1 -0
- package/dist/pipeline/profile-detectors/src-dirs.js +89 -0
- package/dist/pipeline/profile-detectors/src-dirs.js.map +1 -0
- package/dist/pipeline/profile-detectors/variant-detectors.d.ts +7 -0
- package/dist/pipeline/profile-detectors/variant-detectors.d.ts.map +1 -0
- package/dist/pipeline/profile-detectors/variant-detectors.js +7 -0
- package/dist/pipeline/profile-detectors/variant-detectors.js.map +1 -0
- package/dist/pipeline/runner.d.ts +54 -0
- package/dist/pipeline/runner.d.ts.map +1 -0
- package/dist/pipeline/runner.js +247 -0
- package/dist/pipeline/runner.js.map +1 -0
- package/dist/pipeline/types.d.ts +235 -0
- package/dist/pipeline/types.d.ts.map +1 -0
- package/dist/pipeline/types.js +15 -0
- package/dist/pipeline/types.js.map +1 -0
- package/dist/providers/c.d.ts +3 -0
- package/dist/providers/c.d.ts.map +1 -0
- package/dist/providers/c.js +162 -0
- package/dist/providers/c.js.map +1 -0
- package/dist/providers/cobol.d.ts +19 -0
- package/dist/providers/cobol.d.ts.map +1 -0
- package/dist/providers/cobol.js +44 -0
- package/dist/providers/cobol.js.map +1 -0
- package/dist/providers/cpp.d.ts +3 -0
- package/dist/providers/cpp.d.ts.map +1 -0
- package/dist/providers/cpp.js +200 -0
- package/dist/providers/cpp.js.map +1 -0
- package/dist/providers/csharp.d.ts +3 -0
- package/dist/providers/csharp.d.ts.map +1 -0
- package/dist/providers/csharp.js +292 -0
- package/dist/providers/csharp.js.map +1 -0
- package/dist/providers/dart.d.ts +3 -0
- package/dist/providers/dart.d.ts.map +1 -0
- package/dist/providers/dart.js +214 -0
- package/dist/providers/dart.js.map +1 -0
- package/dist/providers/definition-ids.d.ts +18 -0
- package/dist/providers/definition-ids.d.ts.map +1 -0
- package/dist/providers/definition-ids.js +23 -0
- package/dist/providers/definition-ids.js.map +1 -0
- package/dist/providers/extract-helpers.d.ts +60 -0
- package/dist/providers/extract-helpers.d.ts.map +1 -0
- package/dist/providers/extract-helpers.js +296 -0
- package/dist/providers/extract-helpers.js.map +1 -0
- package/dist/providers/extraction-types.d.ts +85 -0
- package/dist/providers/extraction-types.d.ts.map +1 -0
- package/dist/providers/extraction-types.js +13 -0
- package/dist/providers/extraction-types.js.map +1 -0
- package/dist/providers/go.d.ts +3 -0
- package/dist/providers/go.d.ts.map +1 -0
- package/dist/providers/go.js +359 -0
- package/dist/providers/go.js.map +1 -0
- package/dist/providers/http-detect.d.ts +44 -0
- package/dist/providers/http-detect.d.ts.map +1 -0
- package/dist/providers/http-detect.js +307 -0
- package/dist/providers/http-detect.js.map +1 -0
- package/dist/providers/index.d.ts +38 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +33 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/java.d.ts +3 -0
- package/dist/providers/java.d.ts.map +1 -0
- package/dist/providers/java.js +259 -0
- package/dist/providers/java.js.map +1 -0
- package/dist/providers/javascript.d.ts +3 -0
- package/dist/providers/javascript.d.ts.map +1 -0
- package/dist/providers/javascript.js +139 -0
- package/dist/providers/javascript.js.map +1 -0
- package/dist/providers/kotlin.d.ts +3 -0
- package/dist/providers/kotlin.d.ts.map +1 -0
- package/dist/providers/kotlin.js +175 -0
- package/dist/providers/kotlin.js.map +1 -0
- package/dist/providers/php.d.ts +3 -0
- package/dist/providers/php.d.ts.map +1 -0
- package/dist/providers/php.js +218 -0
- package/dist/providers/php.js.map +1 -0
- package/dist/providers/python-accesses.d.ts +9 -0
- package/dist/providers/python-accesses.d.ts.map +1 -0
- package/dist/providers/python-accesses.js +22 -0
- package/dist/providers/python-accesses.js.map +1 -0
- package/dist/providers/python.d.ts +3 -0
- package/dist/providers/python.d.ts.map +1 -0
- package/dist/providers/python.js +323 -0
- package/dist/providers/python.js.map +1 -0
- package/dist/providers/registry.d.ts +4 -0
- package/dist/providers/registry.d.ts.map +1 -0
- package/dist/providers/registry.js +46 -0
- package/dist/providers/registry.js.map +1 -0
- package/dist/providers/resolution/c3.d.ts +6 -0
- package/dist/providers/resolution/c3.d.ts.map +1 -0
- package/dist/providers/resolution/c3.js +76 -0
- package/dist/providers/resolution/c3.js.map +1 -0
- package/dist/providers/resolution/context.d.ts +38 -0
- package/dist/providers/resolution/context.d.ts.map +1 -0
- package/dist/providers/resolution/context.js +45 -0
- package/dist/providers/resolution/context.js.map +1 -0
- package/dist/providers/resolution/first-wins.d.ts +3 -0
- package/dist/providers/resolution/first-wins.d.ts.map +1 -0
- package/dist/providers/resolution/first-wins.js +27 -0
- package/dist/providers/resolution/first-wins.js.map +1 -0
- package/dist/providers/resolution/mro.d.ts +16 -0
- package/dist/providers/resolution/mro.d.ts.map +1 -0
- package/dist/providers/resolution/mro.js +14 -0
- package/dist/providers/resolution/mro.js.map +1 -0
- package/dist/providers/resolution/none.d.ts +3 -0
- package/dist/providers/resolution/none.d.ts.map +1 -0
- package/dist/providers/resolution/none.js +11 -0
- package/dist/providers/resolution/none.js.map +1 -0
- package/dist/providers/resolution/python-all-filter.d.ts +25 -0
- package/dist/providers/resolution/python-all-filter.d.ts.map +1 -0
- package/dist/providers/resolution/python-all-filter.js +64 -0
- package/dist/providers/resolution/python-all-filter.js.map +1 -0
- package/dist/providers/resolution/resolver-strategy.d.ts +42 -0
- package/dist/providers/resolution/resolver-strategy.d.ts.map +1 -0
- package/dist/providers/resolution/resolver-strategy.js +50 -0
- package/dist/providers/resolution/resolver-strategy.js.map +1 -0
- package/dist/providers/resolution/single-inheritance.d.ts +3 -0
- package/dist/providers/resolution/single-inheritance.d.ts.map +1 -0
- package/dist/providers/resolution/single-inheritance.js +21 -0
- package/dist/providers/resolution/single-inheritance.js.map +1 -0
- package/dist/providers/resolution/stack-graphs/__fixtures__/mock-tree.d.ts +16 -0
- package/dist/providers/resolution/stack-graphs/__fixtures__/mock-tree.d.ts.map +1 -0
- package/dist/providers/resolution/stack-graphs/__fixtures__/mock-tree.js +50 -0
- package/dist/providers/resolution/stack-graphs/__fixtures__/mock-tree.js.map +1 -0
- package/dist/providers/resolution/stack-graphs/glue.d.ts +15 -0
- package/dist/providers/resolution/stack-graphs/glue.d.ts.map +1 -0
- package/dist/providers/resolution/stack-graphs/glue.js +44 -0
- package/dist/providers/resolution/stack-graphs/glue.js.map +1 -0
- package/dist/providers/resolution/stack-graphs/node-edge-builder.d.ts +30 -0
- package/dist/providers/resolution/stack-graphs/node-edge-builder.d.ts.map +1 -0
- package/dist/providers/resolution/stack-graphs/node-edge-builder.js +366 -0
- package/dist/providers/resolution/stack-graphs/node-edge-builder.js.map +1 -0
- package/dist/providers/resolution/stack-graphs/partial-path-engine.d.ts +9 -0
- package/dist/providers/resolution/stack-graphs/partial-path-engine.d.ts.map +1 -0
- package/dist/providers/resolution/stack-graphs/partial-path-engine.js +152 -0
- package/dist/providers/resolution/stack-graphs/partial-path-engine.js.map +1 -0
- package/dist/providers/resolution/stack-graphs/rule-parser.d.ts +11 -0
- package/dist/providers/resolution/stack-graphs/rule-parser.d.ts.map +1 -0
- package/dist/providers/resolution/stack-graphs/rule-parser.js +247 -0
- package/dist/providers/resolution/stack-graphs/rule-parser.js.map +1 -0
- package/dist/providers/resolution/stack-graphs/types.d.ts +93 -0
- package/dist/providers/resolution/stack-graphs/types.d.ts.map +1 -0
- package/dist/providers/resolution/stack-graphs/types.js +11 -0
- package/dist/providers/resolution/stack-graphs/types.js.map +1 -0
- package/dist/providers/resolution/stack-graphs-python.d.ts +27 -0
- package/dist/providers/resolution/stack-graphs-python.d.ts.map +1 -0
- package/dist/providers/resolution/stack-graphs-python.js +104 -0
- package/dist/providers/resolution/stack-graphs-python.js.map +1 -0
- package/dist/providers/resolution/stack-graphs-ts.d.ts +134 -0
- package/dist/providers/resolution/stack-graphs-ts.d.ts.map +1 -0
- package/dist/providers/resolution/stack-graphs-ts.js +372 -0
- package/dist/providers/resolution/stack-graphs-ts.js.map +1 -0
- package/dist/providers/ruby.d.ts +3 -0
- package/dist/providers/ruby.d.ts.map +1 -0
- package/dist/providers/ruby.js +259 -0
- package/dist/providers/ruby.js.map +1 -0
- package/dist/providers/rust.d.ts +3 -0
- package/dist/providers/rust.d.ts.map +1 -0
- package/dist/providers/rust.js +318 -0
- package/dist/providers/rust.js.map +1 -0
- package/dist/providers/swift.d.ts +3 -0
- package/dist/providers/swift.d.ts.map +1 -0
- package/dist/providers/swift.js +177 -0
- package/dist/providers/swift.js.map +1 -0
- package/dist/providers/test-helpers.d.ts +24 -0
- package/dist/providers/test-helpers.d.ts.map +1 -0
- package/dist/providers/test-helpers.js +33 -0
- package/dist/providers/test-helpers.js.map +1 -0
- package/dist/providers/ts-shared.d.ts +30 -0
- package/dist/providers/ts-shared.d.ts.map +1 -0
- package/dist/providers/ts-shared.js +328 -0
- package/dist/providers/ts-shared.js.map +1 -0
- package/dist/providers/tsx.d.ts +7 -0
- package/dist/providers/tsx.d.ts.map +1 -0
- package/dist/providers/tsx.js +79 -0
- package/dist/providers/tsx.js.map +1 -0
- package/dist/providers/types.d.ts +166 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +7 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/providers/typescript-family-accesses.d.ts +14 -0
- package/dist/providers/typescript-family-accesses.d.ts.map +1 -0
- package/dist/providers/typescript-family-accesses.js +27 -0
- package/dist/providers/typescript-family-accesses.js.map +1 -0
- package/dist/providers/typescript.d.ts +9 -0
- package/dist/providers/typescript.d.ts.map +1 -0
- package/dist/providers/typescript.js +84 -0
- package/dist/providers/typescript.js.map +1 -0
- package/package.json +108 -0
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Summarize phase — emit structured LLM summaries for callable symbols.
|
|
3
|
+
*
|
|
4
|
+
* This is the first hop of the SACL-style two-lane retrieval stack. Every
|
|
5
|
+
* Function / Method / Class that the LSP oracle has independently confirmed
|
|
6
|
+
* gets a Zod 4-validated `SymbolSummary` generated by `@opencodehub/summarizer`
|
|
7
|
+
* (Bedrock Haiku 4.5 via Converse + tool_use). The summaries live in a
|
|
8
|
+
* separate `symbol_summaries` storage table; they never participate in the
|
|
9
|
+
* graph edge set.
|
|
10
|
+
*
|
|
11
|
+
* The phase is gated four ways, in strict precedence:
|
|
12
|
+
* 1. `opts.offline === true` → skip with `skippedReason: "offline"`. The
|
|
13
|
+
* offline invariant is non-negotiable; no summarizer call path may
|
|
14
|
+
* execute when offline is set.
|
|
15
|
+
* 2. `opts.summaries !== true` → skip with `skippedReason: "not-enabled"`.
|
|
16
|
+
* The flag defaults off so re-index runs stay free until the operator
|
|
17
|
+
* explicitly opts in.
|
|
18
|
+
* 3. Trust filter — a symbol is summarized only when at least one edge
|
|
19
|
+
* incident on it is SCIP-confirmed (confidence 1.0 and
|
|
20
|
+
* `reason` starts with an {@link SCIP_PROVENANCE_PREFIXES} entry). This
|
|
21
|
+
* cuts noise from tree-sitter-only resolution where the symbol's
|
|
22
|
+
* existence is uncertain.
|
|
23
|
+
* 4. Cost cap — `maxSummariesPerRun` bounds how many Bedrock calls we
|
|
24
|
+
* actually issue. `maxSummariesPerRun = 0` (the default) runs the
|
|
25
|
+
* phase in dry-run mode: we record how many symbols WOULD have been
|
|
26
|
+
* summarized, but never contact Bedrock. Session A ships in this
|
|
27
|
+
* mode so the operator can inspect the counter before spending
|
|
28
|
+
* anything on Session B.
|
|
29
|
+
*
|
|
30
|
+
* The LSP phases run upstream, so by the time we get here every high-
|
|
31
|
+
* confidence edge carries its `scip:scip-python@…` / `scip:scip-typescript@…`
|
|
32
|
+
* / `scip:scip-go@…` / `scip:rust-analyzer@…` provenance. The trust filter reads that
|
|
33
|
+
* directly off `ctx.graph`.
|
|
34
|
+
*
|
|
35
|
+
* Cache semantics:
|
|
36
|
+
* - Content hash = sha256 hex of the UTF-8 bytes of the symbol's source
|
|
37
|
+
* span `[startLine, endLine]`. A whitespace-only edit to a different
|
|
38
|
+
* symbol leaves the target symbol's hash stable → cache hit.
|
|
39
|
+
* - The cache key is `(nodeId, contentHash, promptVersion)`. Bumping
|
|
40
|
+
* `SUMMARIZER_PROMPT_VERSION` invalidates prior rows without deleting
|
|
41
|
+
* them; multiple prompt versions can coexist during rollout.
|
|
42
|
+
* - Cache hits are counted but do NOT re-enter the output `rows` array
|
|
43
|
+
* — the CLI only persists freshly produced rows. The prior row is
|
|
44
|
+
* already on disk.
|
|
45
|
+
*
|
|
46
|
+
* Provenance:
|
|
47
|
+
* - The phase never emits graph edges.
|
|
48
|
+
* - The phase never mutates graph nodes (no summary text stored inline).
|
|
49
|
+
* - All output is side-channel, keyed by node id.
|
|
50
|
+
*/
|
|
51
|
+
import type { SymbolSummaryRow } from "@opencodehub/storage";
|
|
52
|
+
import { type SummarizeInput, type SummarizerResult } from "@opencodehub/summarizer";
|
|
53
|
+
import type { PipelinePhase } from "../types.js";
|
|
54
|
+
export declare const SUMMARIZE_PHASE_NAME: "summarize";
|
|
55
|
+
export interface SummarizePhaseOutput {
|
|
56
|
+
/** `true` when the phase actually considered symbols for summarization. */
|
|
57
|
+
readonly enabled: boolean;
|
|
58
|
+
/** Populated when `enabled=false`; a human-readable hint for logs. */
|
|
59
|
+
readonly skippedReason?: string;
|
|
60
|
+
/** Prompt version that gated the cache key for this run. */
|
|
61
|
+
readonly promptVersion: string;
|
|
62
|
+
/** Model id that WOULD (or did) be invoked — resolved for diagnostics. */
|
|
63
|
+
readonly modelId: string;
|
|
64
|
+
/** Symbols walked after kind filtering. */
|
|
65
|
+
readonly considered: number;
|
|
66
|
+
/** Symbols dropped by the LSP trust filter. */
|
|
67
|
+
readonly skippedUnconfirmed: number;
|
|
68
|
+
/** Symbols whose cached summary already covered the content hash. */
|
|
69
|
+
readonly cacheHits: number;
|
|
70
|
+
/**
|
|
71
|
+
* Symbols eligible but dropped by the cost cap (dry-run or when the
|
|
72
|
+
* batch exceeds `maxSummariesPerRun`).
|
|
73
|
+
*/
|
|
74
|
+
readonly wouldHaveSummarized: number;
|
|
75
|
+
/** Bedrock calls that returned a validated summary. */
|
|
76
|
+
readonly summarized: number;
|
|
77
|
+
/** Bedrock calls that threw (retry loop exhausted or transport error). */
|
|
78
|
+
readonly failed: number;
|
|
79
|
+
/** Fresh rows the CLI will persist via `store.bulkLoadSymbolSummaries`. */
|
|
80
|
+
readonly rows: readonly SymbolSummaryRow[];
|
|
81
|
+
readonly durationMs: number;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Shape the phase uses to talk to the summarizer. Narrower than the full
|
|
85
|
+
* Bedrock client so tests can substitute a fake without instantiating
|
|
86
|
+
* `@aws-sdk/client-bedrock-runtime`. The production path wraps
|
|
87
|
+
* {@link summarizeSymbol} against a real `BedrockRuntimeClient`.
|
|
88
|
+
*/
|
|
89
|
+
export interface SummarizerAdapter {
|
|
90
|
+
summarize(input: SummarizeInput): Promise<SummarizerResult>;
|
|
91
|
+
}
|
|
92
|
+
export interface SummarizePhaseTestHooks {
|
|
93
|
+
/**
|
|
94
|
+
* Override the summarizer adapter. When provided, the phase uses this
|
|
95
|
+
* instead of instantiating a real Bedrock client. Tests MUST set this
|
|
96
|
+
* so Bedrock is never contacted.
|
|
97
|
+
*/
|
|
98
|
+
readonly summarizerFactory?: (opts: {
|
|
99
|
+
readonly modelId: string;
|
|
100
|
+
}) => SummarizerAdapter;
|
|
101
|
+
/** Override the source-text reader (test-only). */
|
|
102
|
+
readonly sourceReader?: (absPath: string) => string;
|
|
103
|
+
/** Override the clock so `createdAt` is deterministic in tests. */
|
|
104
|
+
readonly now?: () => Date;
|
|
105
|
+
}
|
|
106
|
+
export declare function __setSummarizePhaseTestHooks__(hooks: SummarizePhaseTestHooks | undefined): void;
|
|
107
|
+
export declare const summarizePhase: PipelinePhase<SummarizePhaseOutput>;
|
|
108
|
+
/**
|
|
109
|
+
* Lightweight cache adapter a caller can plug onto `ctx.options` to let the
|
|
110
|
+
* phase probe existing summaries before emitting work. The `summarize`
|
|
111
|
+
* phase has no direct `IGraphStore` handle — phases are pure over
|
|
112
|
+
* `PipelineContext` — so we expose a narrow hook (`__summaryCache`) the
|
|
113
|
+
* CLI fills before invoking `runIngestion`. Tests plug in a fake
|
|
114
|
+
* adapter; production may or may not depending on how aggressive the
|
|
115
|
+
* operator wants cache hits to be.
|
|
116
|
+
*/
|
|
117
|
+
export interface SummaryCacheAdapter {
|
|
118
|
+
lookup(nodeId: string, contentHash: string, promptVersion: string): Promise<SymbolSummaryRow | undefined>;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Options-bag extension point. Callers attach the cache adapter via a
|
|
122
|
+
* non-enumerable-looking well-known key so existing snapshot tests that
|
|
123
|
+
* assert on option shape don't break.
|
|
124
|
+
*/
|
|
125
|
+
export declare const SUMMARY_CACHE_OPTIONS_KEY: "__summaryCache";
|
|
126
|
+
//# sourceMappingURL=summarize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summarize.d.ts","sourceRoot":"","sources":["../../../src/pipeline/phases/summarize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAMH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAmB,aAAa,EAAE,MAAM,aAAa,CAAC;AAGlE,eAAO,MAAM,oBAAoB,EAAG,WAAoB,CAAC;AAKzD,MAAM,WAAW,oBAAoB;IACnC,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,sEAAsE;IACtE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,4DAA4D;IAC5D,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,2CAA2C;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,+CAA+C;IAC/C,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,qEAAqE;IACrE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,uDAAuD;IACvD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,0EAA0E;IAC1E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,uBAAuB;IACtC;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,iBAAiB,CAAC;IACvF,mDAAmD;IACnD,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IACpD,mEAAmE;IACnE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B;AAGD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,uBAAuB,GAAG,SAAS,GAAG,IAAI,CAE/F;AAED,eAAO,MAAM,cAAc,EAAE,aAAa,CAAC,oBAAoB,CAU9D,CAAC;AA+UF;;;;;;;;GAQG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,CACJ,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;CAC1C;AAED;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,EAAG,gBAAyB,CAAC"}
|
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Summarize phase — emit structured LLM summaries for callable symbols.
|
|
3
|
+
*
|
|
4
|
+
* This is the first hop of the SACL-style two-lane retrieval stack. Every
|
|
5
|
+
* Function / Method / Class that the LSP oracle has independently confirmed
|
|
6
|
+
* gets a Zod 4-validated `SymbolSummary` generated by `@opencodehub/summarizer`
|
|
7
|
+
* (Bedrock Haiku 4.5 via Converse + tool_use). The summaries live in a
|
|
8
|
+
* separate `symbol_summaries` storage table; they never participate in the
|
|
9
|
+
* graph edge set.
|
|
10
|
+
*
|
|
11
|
+
* The phase is gated four ways, in strict precedence:
|
|
12
|
+
* 1. `opts.offline === true` → skip with `skippedReason: "offline"`. The
|
|
13
|
+
* offline invariant is non-negotiable; no summarizer call path may
|
|
14
|
+
* execute when offline is set.
|
|
15
|
+
* 2. `opts.summaries !== true` → skip with `skippedReason: "not-enabled"`.
|
|
16
|
+
* The flag defaults off so re-index runs stay free until the operator
|
|
17
|
+
* explicitly opts in.
|
|
18
|
+
* 3. Trust filter — a symbol is summarized only when at least one edge
|
|
19
|
+
* incident on it is SCIP-confirmed (confidence 1.0 and
|
|
20
|
+
* `reason` starts with an {@link SCIP_PROVENANCE_PREFIXES} entry). This
|
|
21
|
+
* cuts noise from tree-sitter-only resolution where the symbol's
|
|
22
|
+
* existence is uncertain.
|
|
23
|
+
* 4. Cost cap — `maxSummariesPerRun` bounds how many Bedrock calls we
|
|
24
|
+
* actually issue. `maxSummariesPerRun = 0` (the default) runs the
|
|
25
|
+
* phase in dry-run mode: we record how many symbols WOULD have been
|
|
26
|
+
* summarized, but never contact Bedrock. Session A ships in this
|
|
27
|
+
* mode so the operator can inspect the counter before spending
|
|
28
|
+
* anything on Session B.
|
|
29
|
+
*
|
|
30
|
+
* The LSP phases run upstream, so by the time we get here every high-
|
|
31
|
+
* confidence edge carries its `scip:scip-python@…` / `scip:scip-typescript@…`
|
|
32
|
+
* / `scip:scip-go@…` / `scip:rust-analyzer@…` provenance. The trust filter reads that
|
|
33
|
+
* directly off `ctx.graph`.
|
|
34
|
+
*
|
|
35
|
+
* Cache semantics:
|
|
36
|
+
* - Content hash = sha256 hex of the UTF-8 bytes of the symbol's source
|
|
37
|
+
* span `[startLine, endLine]`. A whitespace-only edit to a different
|
|
38
|
+
* symbol leaves the target symbol's hash stable → cache hit.
|
|
39
|
+
* - The cache key is `(nodeId, contentHash, promptVersion)`. Bumping
|
|
40
|
+
* `SUMMARIZER_PROMPT_VERSION` invalidates prior rows without deleting
|
|
41
|
+
* them; multiple prompt versions can coexist during rollout.
|
|
42
|
+
* - Cache hits are counted but do NOT re-enter the output `rows` array
|
|
43
|
+
* — the CLI only persists freshly produced rows. The prior row is
|
|
44
|
+
* already on disk.
|
|
45
|
+
*
|
|
46
|
+
* Provenance:
|
|
47
|
+
* - The phase never emits graph edges.
|
|
48
|
+
* - The phase never mutates graph nodes (no summary text stored inline).
|
|
49
|
+
* - All output is side-channel, keyed by node id.
|
|
50
|
+
*/
|
|
51
|
+
import { createHash } from "node:crypto";
|
|
52
|
+
import { readFileSync } from "node:fs";
|
|
53
|
+
import path from "node:path";
|
|
54
|
+
import { SCIP_PROVENANCE_PREFIXES } from "@opencodehub/core-types";
|
|
55
|
+
import { DEFAULT_MODEL_ID, SUMMARIZER_PROMPT_VERSION, } from "@opencodehub/summarizer";
|
|
56
|
+
import { CONFIDENCE_DEMOTE_PHASE_NAME } from "./confidence-demote.js";
|
|
57
|
+
export const SUMMARIZE_PHASE_NAME = "summarize";
|
|
58
|
+
const LSP_CONFIDENCE = 1.0;
|
|
59
|
+
const SUMMARIZABLE_KINDS = new Set(["Function", "Method", "Class"]);
|
|
60
|
+
let testHooks;
|
|
61
|
+
export function __setSummarizePhaseTestHooks__(hooks) {
|
|
62
|
+
testHooks = hooks;
|
|
63
|
+
}
|
|
64
|
+
export const summarizePhase = {
|
|
65
|
+
name: SUMMARIZE_PHASE_NAME,
|
|
66
|
+
// Depend on confidence-demote so every LSP phase (and the demotion pass)
|
|
67
|
+
// has finished before we inspect edge provenance. The dep graph guarantees
|
|
68
|
+
// all four lsp-* phases ran upstream, so trust filtering sees the final
|
|
69
|
+
// confidence scores.
|
|
70
|
+
deps: [CONFIDENCE_DEMOTE_PHASE_NAME],
|
|
71
|
+
async run(ctx) {
|
|
72
|
+
return runSummarize(ctx);
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
async function runSummarize(ctx) {
|
|
76
|
+
const start = Date.now();
|
|
77
|
+
// Accept `summaryModel` via the options bag — the CLI surface threads
|
|
78
|
+
// `--summary-model <id>` through `PipelineOptions.summaryModel`. A string
|
|
79
|
+
// override replaces the compile-time default; anything else falls back to
|
|
80
|
+
// `DEFAULT_MODEL_ID` so production deployments stay pinned.
|
|
81
|
+
const summaryModelOpt = ctx.options.summaryModel;
|
|
82
|
+
const modelId = typeof summaryModelOpt === "string" && summaryModelOpt.length > 0
|
|
83
|
+
? summaryModelOpt
|
|
84
|
+
: DEFAULT_MODEL_ID;
|
|
85
|
+
const promptVersion = SUMMARIZER_PROMPT_VERSION;
|
|
86
|
+
// ---- Offline gate (INVARIANT) ----------------------------------------
|
|
87
|
+
if (ctx.options.offline === true) {
|
|
88
|
+
return emptyOutput(start, {
|
|
89
|
+
skippedReason: "offline",
|
|
90
|
+
promptVersion,
|
|
91
|
+
modelId,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
// ---- Feature flag gate -----------------------------------------------
|
|
95
|
+
if (ctx.options.summaries !== true) {
|
|
96
|
+
return emptyOutput(start, {
|
|
97
|
+
skippedReason: "not-enabled",
|
|
98
|
+
promptVersion,
|
|
99
|
+
modelId,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
// ---- Walk candidates --------------------------------------------------
|
|
103
|
+
// Build per-node inbound/outbound incidence sets so we can apply the LSP
|
|
104
|
+
// trust filter in O(|edges| + |nodes|) rather than O(|edges| × |nodes|).
|
|
105
|
+
const lspConfirmedNodes = new Set();
|
|
106
|
+
for (const edge of ctx.graph.edges()) {
|
|
107
|
+
if (edge.confidence < LSP_CONFIDENCE)
|
|
108
|
+
continue;
|
|
109
|
+
if (!isLspReason(edge.reason))
|
|
110
|
+
continue;
|
|
111
|
+
lspConfirmedNodes.add(edge.from);
|
|
112
|
+
lspConfirmedNodes.add(edge.to);
|
|
113
|
+
}
|
|
114
|
+
let considered = 0;
|
|
115
|
+
let skippedUnconfirmed = 0;
|
|
116
|
+
const candidates = [];
|
|
117
|
+
for (const node of ctx.graph.nodes()) {
|
|
118
|
+
if (!SUMMARIZABLE_KINDS.has(node.kind))
|
|
119
|
+
continue;
|
|
120
|
+
considered += 1;
|
|
121
|
+
if (!lspConfirmedNodes.has(node.id)) {
|
|
122
|
+
skippedUnconfirmed += 1;
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
const startLine = node.startLine;
|
|
126
|
+
const endLine = node.endLine;
|
|
127
|
+
if (startLine === undefined || endLine === undefined)
|
|
128
|
+
continue;
|
|
129
|
+
const enclosingClass = typeof node.enclosingClass === "string"
|
|
130
|
+
? (node.enclosingClass ?? null)
|
|
131
|
+
: null;
|
|
132
|
+
const docstring = typeof node.description === "string"
|
|
133
|
+
? (node.description ?? null)
|
|
134
|
+
: null;
|
|
135
|
+
candidates.push({
|
|
136
|
+
nodeId: node.id,
|
|
137
|
+
filePath: node.filePath,
|
|
138
|
+
startLine,
|
|
139
|
+
endLine,
|
|
140
|
+
enclosingClass,
|
|
141
|
+
docstring,
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
// Deterministic order: sort by node id so cap truncation picks a stable
|
|
145
|
+
// subset across runs.
|
|
146
|
+
candidates.sort((a, b) => (a.nodeId < b.nodeId ? -1 : a.nodeId > b.nodeId ? 1 : 0));
|
|
147
|
+
// ---- Read source + hash, classify hit vs miss -------------------------
|
|
148
|
+
const readSource = testHooks?.sourceReader ?? defaultSourceReader;
|
|
149
|
+
let cacheHits = 0;
|
|
150
|
+
const misses = [];
|
|
151
|
+
// Resolve a cache adapter from the options bag if the CLI attached one.
|
|
152
|
+
// Phases have no direct store handle, so we route cache probes through a
|
|
153
|
+
// narrow hook on `ctx.options`. Production attaches the DuckDB-backed
|
|
154
|
+
// adapter; tests supply an in-memory fake.
|
|
155
|
+
const cacheAdapter = resolveCacheAdapter(ctx);
|
|
156
|
+
for (const c of candidates) {
|
|
157
|
+
const source = safeReadSpan(readSource, ctx.repoPath, c.filePath, c.startLine, c.endLine);
|
|
158
|
+
if (source === undefined)
|
|
159
|
+
continue;
|
|
160
|
+
const contentHash = sha256Hex(source);
|
|
161
|
+
if (cacheAdapter !== undefined) {
|
|
162
|
+
const hit = await cacheAdapter.lookup(c.nodeId, contentHash, promptVersion);
|
|
163
|
+
if (hit !== undefined) {
|
|
164
|
+
cacheHits += 1;
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
misses.push({ candidate: c, source, contentHash });
|
|
169
|
+
}
|
|
170
|
+
// ---- Cost cap ---------------------------------------------------------
|
|
171
|
+
const cap = Math.max(0, Math.floor(ctx.options.maxSummariesPerRun ?? 0));
|
|
172
|
+
// When cap === 0 the phase runs in dry-run mode: every miss contributes
|
|
173
|
+
// to wouldHaveSummarized and we skip Bedrock entirely. When cap > 0 we
|
|
174
|
+
// slice the first `cap` misses into the effective batch and count the
|
|
175
|
+
// overflow (if any) as wouldHaveSummarized too.
|
|
176
|
+
const effectiveBatch = cap === 0 ? [] : misses.slice(0, cap);
|
|
177
|
+
const effectiveWouldHave = cap === 0 ? misses.length : misses.length - effectiveBatch.length;
|
|
178
|
+
if (effectiveBatch.length === 0) {
|
|
179
|
+
return {
|
|
180
|
+
enabled: true,
|
|
181
|
+
promptVersion,
|
|
182
|
+
modelId,
|
|
183
|
+
considered,
|
|
184
|
+
skippedUnconfirmed,
|
|
185
|
+
cacheHits,
|
|
186
|
+
wouldHaveSummarized: effectiveWouldHave,
|
|
187
|
+
summarized: 0,
|
|
188
|
+
failed: 0,
|
|
189
|
+
rows: [],
|
|
190
|
+
durationMs: Date.now() - start,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
// ---- Summarize --------------------------------------------------------
|
|
194
|
+
// Instantiating the summarizer resolves the AWS SDK credential chain, which
|
|
195
|
+
// throws `CredentialsProviderError` / `NoCredentialsError` when no creds
|
|
196
|
+
// are configured. Catch that family here so contributors without Bedrock
|
|
197
|
+
// access still get a green analyze — the missing-credentials path emits a
|
|
198
|
+
// skip note and zero rows, while every other factory error continues to
|
|
199
|
+
// surface so real bugs don't go silent.
|
|
200
|
+
let summarizer;
|
|
201
|
+
try {
|
|
202
|
+
summarizer = (testHooks?.summarizerFactory ?? defaultSummarizerFactory)({ modelId });
|
|
203
|
+
}
|
|
204
|
+
catch (err) {
|
|
205
|
+
if (isMissingCredentialsError(err)) {
|
|
206
|
+
ctx.onProgress?.({
|
|
207
|
+
phase: SUMMARIZE_PHASE_NAME,
|
|
208
|
+
kind: "note",
|
|
209
|
+
message: "summarize: skipped (no AWS credentials)",
|
|
210
|
+
});
|
|
211
|
+
return emptyOutput(start, {
|
|
212
|
+
skippedReason: "no-credentials",
|
|
213
|
+
promptVersion,
|
|
214
|
+
modelId,
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
throw err;
|
|
218
|
+
}
|
|
219
|
+
const now = testHooks?.now ?? (() => new Date());
|
|
220
|
+
const rows = [];
|
|
221
|
+
let summarized = 0;
|
|
222
|
+
let failed = 0;
|
|
223
|
+
for (const [idx, entry] of effectiveBatch.entries()) {
|
|
224
|
+
const input = {
|
|
225
|
+
source: entry.source,
|
|
226
|
+
filePath: entry.candidate.filePath,
|
|
227
|
+
lineStart: entry.candidate.startLine,
|
|
228
|
+
lineEnd: entry.candidate.endLine,
|
|
229
|
+
docstring: entry.candidate.docstring,
|
|
230
|
+
enclosingClass: entry.candidate.enclosingClass,
|
|
231
|
+
};
|
|
232
|
+
try {
|
|
233
|
+
const result = await summarizer.summarize(input);
|
|
234
|
+
const summary = result.summary;
|
|
235
|
+
const signatureSummary = buildSignatureSummary(summary);
|
|
236
|
+
const row = {
|
|
237
|
+
nodeId: entry.candidate.nodeId,
|
|
238
|
+
contentHash: entry.contentHash,
|
|
239
|
+
promptVersion,
|
|
240
|
+
modelId,
|
|
241
|
+
summaryText: summary.purpose,
|
|
242
|
+
...(signatureSummary !== undefined ? { signatureSummary } : {}),
|
|
243
|
+
returnsTypeSummary: summary.returns.type_summary,
|
|
244
|
+
createdAt: now().toISOString(),
|
|
245
|
+
};
|
|
246
|
+
rows.push(row);
|
|
247
|
+
summarized += 1;
|
|
248
|
+
}
|
|
249
|
+
catch (err) {
|
|
250
|
+
// Credential errors can surface on the first Bedrock call rather than
|
|
251
|
+
// at client construction (e.g. SSO profile expired mid-run). Treat
|
|
252
|
+
// the first such error on the first candidate as a soft-fail for the
|
|
253
|
+
// whole phase so we don't waste the batch on a guaranteed-failing
|
|
254
|
+
// credential chain.
|
|
255
|
+
if (idx === 0 && isMissingCredentialsError(err)) {
|
|
256
|
+
ctx.onProgress?.({
|
|
257
|
+
phase: SUMMARIZE_PHASE_NAME,
|
|
258
|
+
kind: "note",
|
|
259
|
+
message: "summarize: skipped (no AWS credentials)",
|
|
260
|
+
});
|
|
261
|
+
return emptyOutput(start, {
|
|
262
|
+
skippedReason: "no-credentials",
|
|
263
|
+
promptVersion,
|
|
264
|
+
modelId,
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
failed += 1;
|
|
268
|
+
ctx.onProgress?.({
|
|
269
|
+
phase: SUMMARIZE_PHASE_NAME,
|
|
270
|
+
kind: "warn",
|
|
271
|
+
message: `summarize: ${entry.candidate.nodeId} failed: ${err.message}`,
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
return {
|
|
276
|
+
enabled: true,
|
|
277
|
+
promptVersion,
|
|
278
|
+
modelId,
|
|
279
|
+
considered,
|
|
280
|
+
skippedUnconfirmed,
|
|
281
|
+
cacheHits,
|
|
282
|
+
wouldHaveSummarized: effectiveWouldHave,
|
|
283
|
+
summarized,
|
|
284
|
+
failed,
|
|
285
|
+
rows,
|
|
286
|
+
durationMs: Date.now() - start,
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
// ---- Helpers ------------------------------------------------------------
|
|
290
|
+
function emptyOutput(start, partial) {
|
|
291
|
+
return {
|
|
292
|
+
enabled: false,
|
|
293
|
+
skippedReason: partial.skippedReason,
|
|
294
|
+
promptVersion: partial.promptVersion,
|
|
295
|
+
modelId: partial.modelId,
|
|
296
|
+
considered: 0,
|
|
297
|
+
skippedUnconfirmed: 0,
|
|
298
|
+
cacheHits: 0,
|
|
299
|
+
wouldHaveSummarized: 0,
|
|
300
|
+
summarized: 0,
|
|
301
|
+
failed: 0,
|
|
302
|
+
rows: [],
|
|
303
|
+
durationMs: Date.now() - start,
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
function isLspReason(reason) {
|
|
307
|
+
if (reason === undefined)
|
|
308
|
+
return false;
|
|
309
|
+
for (const prefix of SCIP_PROVENANCE_PREFIXES) {
|
|
310
|
+
if (reason.startsWith(prefix))
|
|
311
|
+
return true;
|
|
312
|
+
}
|
|
313
|
+
return false;
|
|
314
|
+
}
|
|
315
|
+
function sha256Hex(s) {
|
|
316
|
+
return createHash("sha256").update(s, "utf8").digest("hex");
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Recognize the AWS SDK v3 credential-missing error family. The SDK
|
|
320
|
+
* throws `CredentialsProviderError` (name) / `NoCredentialsError`
|
|
321
|
+
* depending on the provider in the chain, plus pure-string errors from
|
|
322
|
+
* `from*` providers ("Could not load credentials from any providers").
|
|
323
|
+
*
|
|
324
|
+
* We match on a small set of well-known shapes rather than importing
|
|
325
|
+
* `@smithy/types` to keep the phase independent of the SDK's type
|
|
326
|
+
* surface and safe to call with a test fake that merely sets `name`.
|
|
327
|
+
*/
|
|
328
|
+
function isMissingCredentialsError(err) {
|
|
329
|
+
if (err === null || err === undefined)
|
|
330
|
+
return false;
|
|
331
|
+
const errObj = err;
|
|
332
|
+
const name = typeof errObj.name === "string" ? errObj.name : "";
|
|
333
|
+
if (name === "CredentialsProviderError" ||
|
|
334
|
+
name === "NoCredentialsError" ||
|
|
335
|
+
name === "ExpiredTokenException") {
|
|
336
|
+
return true;
|
|
337
|
+
}
|
|
338
|
+
const message = typeof errObj.message === "string" ? errObj.message : "";
|
|
339
|
+
return (message.includes("Could not load credentials") ||
|
|
340
|
+
message.includes("credentials is missing") ||
|
|
341
|
+
message.includes("Unable to load credentials") ||
|
|
342
|
+
message.includes("The security token included in the request is expired"));
|
|
343
|
+
}
|
|
344
|
+
function defaultSourceReader(absPath) {
|
|
345
|
+
return readFileSync(absPath, "utf-8");
|
|
346
|
+
}
|
|
347
|
+
function safeReadSpan(reader, repoPath, filePath, startLine, endLine) {
|
|
348
|
+
try {
|
|
349
|
+
const abs = path.isAbsolute(filePath) ? filePath : path.join(repoPath, filePath);
|
|
350
|
+
const all = reader(abs);
|
|
351
|
+
const lines = all.split(/\r?\n/);
|
|
352
|
+
const from = Math.max(0, startLine - 1);
|
|
353
|
+
const to = Math.min(lines.length, endLine);
|
|
354
|
+
if (to <= from)
|
|
355
|
+
return undefined;
|
|
356
|
+
return lines.slice(from, to).join("\n");
|
|
357
|
+
}
|
|
358
|
+
catch {
|
|
359
|
+
return undefined;
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
function buildSignatureSummary(summary) {
|
|
363
|
+
if (summary.inputs.length === 0)
|
|
364
|
+
return undefined;
|
|
365
|
+
return summary.inputs.map((i) => `${i.name}: ${i.type}`).join(", ");
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Options-bag extension point. Callers attach the cache adapter via a
|
|
369
|
+
* non-enumerable-looking well-known key so existing snapshot tests that
|
|
370
|
+
* assert on option shape don't break.
|
|
371
|
+
*/
|
|
372
|
+
export const SUMMARY_CACHE_OPTIONS_KEY = "__summaryCache";
|
|
373
|
+
function resolveCacheAdapter(ctx) {
|
|
374
|
+
const opts = ctx.options;
|
|
375
|
+
const cache = opts[SUMMARY_CACHE_OPTIONS_KEY];
|
|
376
|
+
if (cache === undefined || cache === null || typeof cache !== "object")
|
|
377
|
+
return undefined;
|
|
378
|
+
const adapter = cache;
|
|
379
|
+
if (typeof adapter.lookup !== "function")
|
|
380
|
+
return undefined;
|
|
381
|
+
return adapter;
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Default summarizer factory. Defers importing `@aws-sdk/client-bedrock-runtime`
|
|
385
|
+
* until the phase actually needs to issue a call, so test runs with
|
|
386
|
+
* `maxSummariesPerRun=0` or `summaries=false` never touch the SDK's
|
|
387
|
+
* credential provider chain.
|
|
388
|
+
*/
|
|
389
|
+
function defaultSummarizerFactory(opts) {
|
|
390
|
+
return {
|
|
391
|
+
summarize: async (input) => {
|
|
392
|
+
const [{ BedrockRuntimeClient }, { summarizeSymbol }] = await Promise.all([
|
|
393
|
+
import("@aws-sdk/client-bedrock-runtime"),
|
|
394
|
+
import("@opencodehub/summarizer"),
|
|
395
|
+
]);
|
|
396
|
+
const client = new BedrockRuntimeClient({});
|
|
397
|
+
return summarizeSymbol(client, input, { modelId: opts.modelId });
|
|
398
|
+
},
|
|
399
|
+
};
|
|
400
|
+
}
|
|
401
|
+
//# sourceMappingURL=summarize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summarize.js","sourceRoot":"","sources":["../../../src/pipeline/phases/summarize.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Branch divergence — counts `ahead` and `behind` commits relative to the
|
|
3
|
+
* configured base branch, plus the list of files uniquely touched by the
|
|
4
|
+
* ahead commits.
|
|
5
|
+
*
|
|
6
|
+
* Uses two git subprocesses per branch:
|
|
7
|
+
* 1. `git rev-list --left-right --count <base>...<ref>` → tab-separated
|
|
8
|
+
* pair "behind<TAB>ahead".
|
|
9
|
+
* 2. `git log <base>..<ref> --name-only --format=` → newline-separated
|
|
10
|
+
* file paths, deduplicated in first-seen order.
|
|
11
|
+
*
|
|
12
|
+
* The caller supplies the base branch name (typically `main`) and the list
|
|
13
|
+
* of candidate head refs. The function fails open: any git error leaves the
|
|
14
|
+
* affected branch's entry absent from the returned map.
|
|
15
|
+
*/
|
|
16
|
+
export interface BranchDivergenceEntry {
|
|
17
|
+
readonly ahead: number;
|
|
18
|
+
readonly behind: number;
|
|
19
|
+
readonly overlapFiles: readonly string[];
|
|
20
|
+
}
|
|
21
|
+
export interface BranchDivergenceResult {
|
|
22
|
+
readonly entries: ReadonlyMap<string, BranchDivergenceEntry>;
|
|
23
|
+
}
|
|
24
|
+
export interface BranchDivergenceOptions {
|
|
25
|
+
readonly repoPath: string;
|
|
26
|
+
readonly baseBranch: string;
|
|
27
|
+
readonly branches: readonly string[];
|
|
28
|
+
readonly maxOverlapFiles?: number;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* List local branches via `git for-each-ref refs/heads/`. Returns short ref
|
|
32
|
+
* names sorted lexicographically so downstream iteration is deterministic.
|
|
33
|
+
*/
|
|
34
|
+
export declare function listLocalBranches(repoPath: string): Promise<readonly string[]>;
|
|
35
|
+
/**
|
|
36
|
+
* Compute divergence for each branch relative to `baseBranch`.
|
|
37
|
+
*
|
|
38
|
+
* Branches equal to the base or failing to resolve are omitted from the
|
|
39
|
+
* result map.
|
|
40
|
+
*/
|
|
41
|
+
export declare function computeBranchDivergence(opts: BranchDivergenceOptions): Promise<BranchDivergenceResult>;
|
|
42
|
+
//# sourceMappingURL=branch-divergence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branch-divergence.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/temporal-helpers/branch-divergence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAUH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;CAC9D;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAepF;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,uBAAuB,GAC5B,OAAO,CAAC,sBAAsB,CAAC,CAYjC"}
|