spectra-cli 4.1.1 → 4.2.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/README.md +1 -1
- package/dist/adapters/go-adapter.d.ts.map +1 -1
- package/dist/adapters/go-adapter.js +2 -0
- package/dist/adapters/go-adapter.js.map +1 -1
- package/dist/adapters/index.d.ts +1 -1
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/java-adapter.d.ts.map +1 -1
- package/dist/adapters/java-adapter.js +2 -0
- package/dist/adapters/java-adapter.js.map +1 -1
- package/dist/adapters/language-adapter.d.ts +47 -9
- package/dist/adapters/language-adapter.d.ts.map +1 -1
- package/dist/adapters/python-adapter.d.ts +34 -6
- package/dist/adapters/python-adapter.d.ts.map +1 -1
- package/dist/adapters/python-adapter.js +157 -59
- package/dist/adapters/python-adapter.js.map +1 -1
- package/dist/adapters/ts-js-adapter.d.ts +13 -5
- package/dist/adapters/ts-js-adapter.d.ts.map +1 -1
- package/dist/adapters/ts-js-adapter.js +55 -14
- package/dist/adapters/ts-js-adapter.js.map +1 -1
- package/dist/batch/batch-orchestrator.d.ts +30 -4
- package/dist/batch/batch-orchestrator.d.ts.map +1 -1
- package/dist/batch/batch-orchestrator.js +284 -7
- package/dist/batch/batch-orchestrator.js.map +1 -1
- package/dist/batch/delta-regenerator.d.ts +2 -2
- package/dist/batch/delta-regenerator.d.ts.map +1 -1
- package/dist/batch/delta-regenerator.js.map +1 -1
- package/dist/batch/module-grouper.d.ts +2 -2
- package/dist/batch/module-grouper.d.ts.map +1 -1
- package/dist/batch/module-grouper.js +1 -1
- package/dist/batch/module-grouper.js.map +1 -1
- package/dist/cli/commands/graph.js +1 -1
- package/dist/cli/commands/graph.js.map +1 -1
- package/dist/cli/commands/index.d.ts +8 -0
- package/dist/cli/commands/index.d.ts.map +1 -0
- package/dist/cli/commands/index.js +274 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/query.d.ts.map +1 -1
- package/dist/cli/commands/query.js +3 -1
- package/dist/cli/commands/query.js.map +1 -1
- package/dist/cli/index.js +9 -9
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/utils/parse-args.d.ts +13 -1
- package/dist/cli/utils/parse-args.d.ts.map +1 -1
- package/dist/cli/utils/parse-args.js +79 -2
- package/dist/cli/utils/parse-args.js.map +1 -1
- package/dist/core/ast-analyzer.d.ts.map +1 -1
- package/dist/core/ast-analyzer.js +79 -5
- package/dist/core/ast-analyzer.js.map +1 -1
- package/dist/core/import-resolver.d.ts +90 -0
- package/dist/core/import-resolver.d.ts.map +1 -0
- package/dist/core/import-resolver.js +273 -0
- package/dist/core/import-resolver.js.map +1 -0
- package/dist/core/query-mappers/base-mapper.d.ts +13 -0
- package/dist/core/query-mappers/base-mapper.d.ts.map +1 -1
- package/dist/core/query-mappers/go-mapper.d.ts +68 -0
- package/dist/core/query-mappers/go-mapper.d.ts.map +1 -1
- package/dist/core/query-mappers/go-mapper.js +421 -0
- package/dist/core/query-mappers/go-mapper.js.map +1 -1
- package/dist/core/query-mappers/java-mapper.d.ts +196 -0
- package/dist/core/query-mappers/java-mapper.d.ts.map +1 -1
- package/dist/core/query-mappers/java-mapper.js +600 -0
- package/dist/core/query-mappers/java-mapper.js.map +1 -1
- package/dist/core/query-mappers/python-mapper.d.ts +55 -0
- package/dist/core/query-mappers/python-mapper.d.ts.map +1 -1
- package/dist/core/query-mappers/python-mapper.js +273 -0
- package/dist/core/query-mappers/python-mapper.js.map +1 -1
- package/dist/core/query-mappers/typescript-mapper.d.ts +102 -0
- package/dist/core/query-mappers/typescript-mapper.d.ts.map +1 -1
- package/dist/core/query-mappers/typescript-mapper.js +470 -0
- package/dist/core/query-mappers/typescript-mapper.js.map +1 -1
- package/dist/core/single-spec-orchestrator.d.ts.map +1 -1
- package/dist/core/single-spec-orchestrator.js +146 -9
- package/dist/core/single-spec-orchestrator.js.map +1 -1
- package/dist/core/tree-sitter-analyzer.d.ts +6 -0
- package/dist/core/tree-sitter-analyzer.d.ts.map +1 -1
- package/dist/core/tree-sitter-analyzer.js +33 -1
- package/dist/core/tree-sitter-analyzer.js.map +1 -1
- package/dist/core/tree-sitter-fallback.d.ts +7 -4
- package/dist/core/tree-sitter-fallback.d.ts.map +1 -1
- package/dist/core/tree-sitter-fallback.js +157 -12
- package/dist/core/tree-sitter-fallback.js.map +1 -1
- package/dist/extraction/extraction-types.d.ts +25 -25
- package/dist/generator/index-generator.d.ts +3 -3
- package/dist/generator/index-generator.d.ts.map +1 -1
- package/dist/generator/index-generator.js +1 -1
- package/dist/generator/index-generator.js.map +1 -1
- package/dist/graph/directory-graph.d.ts +14 -4
- package/dist/graph/directory-graph.d.ts.map +1 -1
- package/dist/graph/directory-graph.js +71 -128
- package/dist/graph/directory-graph.js.map +1 -1
- package/dist/graph/mermaid-renderer.d.ts +8 -5
- package/dist/graph/mermaid-renderer.d.ts.map +1 -1
- package/dist/graph/mermaid-renderer.js +3 -3
- package/dist/graph/mermaid-renderer.js.map +1 -1
- package/dist/graph/topological-sort.d.ts +13 -6
- package/dist/graph/topological-sort.d.ts.map +1 -1
- package/dist/graph/topological-sort.js +2 -2
- package/dist/graph/topological-sort.js.map +1 -1
- package/dist/knowledge-graph/call-resolver.d.ts +64 -0
- package/dist/knowledge-graph/call-resolver.d.ts.map +1 -0
- package/dist/knowledge-graph/call-resolver.js +323 -0
- package/dist/knowledge-graph/call-resolver.js.map +1 -0
- package/dist/knowledge-graph/import-resolver.d.ts +114 -0
- package/dist/knowledge-graph/import-resolver.d.ts.map +1 -0
- package/dist/knowledge-graph/import-resolver.js +537 -0
- package/dist/knowledge-graph/import-resolver.js.map +1 -0
- package/dist/knowledge-graph/incremental.d.ts +110 -0
- package/dist/knowledge-graph/incremental.d.ts.map +1 -0
- package/dist/knowledge-graph/incremental.js +410 -0
- package/dist/knowledge-graph/incremental.js.map +1 -0
- package/dist/knowledge-graph/index.d.ts +74 -0
- package/dist/knowledge-graph/index.d.ts.map +1 -0
- package/dist/knowledge-graph/index.js +156 -0
- package/dist/knowledge-graph/index.js.map +1 -0
- package/dist/knowledge-graph/module-derivation.d.ts +238 -0
- package/dist/knowledge-graph/module-derivation.d.ts.map +1 -0
- package/dist/knowledge-graph/module-derivation.js +418 -0
- package/dist/knowledge-graph/module-derivation.js.map +1 -0
- package/dist/knowledge-graph/persistence.d.ts +270 -0
- package/dist/knowledge-graph/persistence.d.ts.map +1 -0
- package/dist/knowledge-graph/persistence.js +226 -0
- package/dist/knowledge-graph/persistence.js.map +1 -0
- package/dist/knowledge-graph/query-helpers.d.ts +164 -0
- package/dist/knowledge-graph/query-helpers.d.ts.map +1 -0
- package/dist/knowledge-graph/query-helpers.js +394 -0
- package/dist/knowledge-graph/query-helpers.js.map +1 -0
- package/dist/knowledge-graph/unified-graph.d.ts +310 -0
- package/dist/knowledge-graph/unified-graph.d.ts.map +1 -0
- package/dist/knowledge-graph/unified-graph.js +182 -0
- package/dist/knowledge-graph/unified-graph.js.map +1 -0
- package/dist/mcp/agent-context-tools.d.ts +104 -0
- package/dist/mcp/agent-context-tools.d.ts.map +1 -0
- package/dist/mcp/agent-context-tools.js +854 -0
- package/dist/mcp/agent-context-tools.js.map +1 -0
- package/dist/mcp/graph-tools.d.ts +20 -0
- package/dist/mcp/graph-tools.d.ts.map +1 -1
- package/dist/mcp/graph-tools.js +71 -11
- package/dist/mcp/graph-tools.js.map +1 -1
- package/dist/mcp/lib/response-helpers.d.ts +67 -0
- package/dist/mcp/lib/response-helpers.d.ts.map +1 -0
- package/dist/mcp/lib/response-helpers.js +103 -0
- package/dist/mcp/lib/response-helpers.js.map +1 -0
- package/dist/mcp/server.d.ts +3 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +9 -10
- package/dist/mcp/server.js.map +1 -1
- package/dist/models/call-site.d.ts +68 -0
- package/dist/models/call-site.d.ts.map +1 -0
- package/dist/models/call-site.js +60 -0
- package/dist/models/call-site.js.map +1 -0
- package/dist/models/code-skeleton.d.ts +78 -6
- package/dist/models/code-skeleton.d.ts.map +1 -1
- package/dist/models/code-skeleton.js +29 -0
- package/dist/models/code-skeleton.js.map +1 -1
- package/dist/models/drift-item.d.ts +4 -4
- package/dist/models/module-spec.d.ts +155 -94
- package/dist/models/module-spec.d.ts.map +1 -1
- package/dist/panoramic/adr-decision-pipeline.d.ts +53 -0
- package/dist/panoramic/adr-decision-pipeline.d.ts.map +1 -0
- package/dist/panoramic/adr-decision-pipeline.js +685 -0
- package/dist/panoramic/adr-decision-pipeline.js.map +1 -0
- package/dist/panoramic/api-surface-generator.d.ts +56 -0
- package/dist/panoramic/api-surface-generator.d.ts.map +1 -0
- package/dist/panoramic/api-surface-generator.js +1671 -0
- package/dist/panoramic/api-surface-generator.js.map +1 -0
- package/dist/panoramic/architecture-ir-builder.d.ts +19 -0
- package/dist/panoramic/architecture-ir-builder.d.ts.map +1 -0
- package/dist/panoramic/architecture-ir-builder.js +561 -0
- package/dist/panoramic/architecture-ir-builder.js.map +1 -0
- package/dist/panoramic/architecture-ir-exporters.d.ts +7 -0
- package/dist/panoramic/architecture-ir-exporters.d.ts.map +1 -0
- package/dist/panoramic/architecture-ir-exporters.js +183 -0
- package/dist/panoramic/architecture-ir-exporters.js.map +1 -0
- package/dist/panoramic/architecture-ir-generator.d.ts +36 -0
- package/dist/panoramic/architecture-ir-generator.d.ts.map +1 -0
- package/dist/panoramic/architecture-ir-generator.js +51 -0
- package/dist/panoramic/architecture-ir-generator.js.map +1 -0
- package/dist/panoramic/architecture-ir-mermaid-adapter.d.ts +6 -0
- package/dist/panoramic/architecture-ir-mermaid-adapter.d.ts.map +1 -0
- package/dist/panoramic/architecture-ir-mermaid-adapter.js +98 -0
- package/dist/panoramic/architecture-ir-mermaid-adapter.js.map +1 -0
- package/dist/panoramic/architecture-ir-model.d.ts +87 -0
- package/dist/panoramic/architecture-ir-model.d.ts.map +1 -0
- package/dist/panoramic/architecture-ir-model.js +20 -0
- package/dist/panoramic/architecture-ir-model.js.map +1 -0
- package/dist/panoramic/architecture-narrative.d.ts +68 -0
- package/dist/panoramic/architecture-narrative.d.ts.map +1 -0
- package/dist/panoramic/architecture-narrative.js +401 -0
- package/dist/panoramic/architecture-narrative.js.map +1 -0
- package/dist/panoramic/architecture-overview-generator.d.ts +31 -0
- package/dist/panoramic/architecture-overview-generator.d.ts.map +1 -0
- package/dist/panoramic/architecture-overview-generator.js +454 -0
- package/dist/panoramic/architecture-overview-generator.js.map +1 -0
- package/dist/panoramic/architecture-overview-model.d.ts +77 -0
- package/dist/panoramic/architecture-overview-model.d.ts.map +1 -0
- package/dist/panoramic/architecture-overview-model.js +31 -0
- package/dist/panoramic/architecture-overview-model.js.map +1 -0
- package/dist/panoramic/batch-project-docs.d.ts.map +1 -1
- package/dist/panoramic/batch-project-docs.js +4 -2
- package/dist/panoramic/batch-project-docs.js.map +1 -1
- package/dist/panoramic/builders/component-view-builder.d.ts +25 -1
- package/dist/panoramic/builders/component-view-builder.d.ts.map +1 -1
- package/dist/panoramic/builders/component-view-builder.js +83 -3
- package/dist/panoramic/builders/component-view-builder.js.map +1 -1
- package/dist/panoramic/builders/doc-graph-builder.d.ts +2 -2
- package/dist/panoramic/builders/doc-graph-builder.d.ts.map +1 -1
- package/dist/panoramic/builders/doc-graph-builder.js.map +1 -1
- package/dist/panoramic/component-view-builder.d.ts +17 -0
- package/dist/panoramic/component-view-builder.d.ts.map +1 -0
- package/dist/panoramic/component-view-builder.js +652 -0
- package/dist/panoramic/component-view-builder.js.map +1 -0
- package/dist/panoramic/component-view-model.d.ts +127 -0
- package/dist/panoramic/component-view-model.d.ts.map +1 -0
- package/dist/panoramic/component-view-model.js +65 -0
- package/dist/panoramic/component-view-model.js.map +1 -0
- package/dist/panoramic/config-reference-generator.d.ts +78 -0
- package/dist/panoramic/config-reference-generator.d.ts.map +1 -0
- package/dist/panoramic/config-reference-generator.js +199 -0
- package/dist/panoramic/config-reference-generator.js.map +1 -0
- package/dist/panoramic/coverage-auditor.d.ts +95 -0
- package/dist/panoramic/coverage-auditor.d.ts.map +1 -0
- package/dist/panoramic/coverage-auditor.js +290 -0
- package/dist/panoramic/coverage-auditor.js.map +1 -0
- package/dist/panoramic/cross-package-analyzer.d.ts +112 -0
- package/dist/panoramic/cross-package-analyzer.d.ts.map +1 -0
- package/dist/panoramic/cross-package-analyzer.js +258 -0
- package/dist/panoramic/cross-package-analyzer.js.map +1 -0
- package/dist/panoramic/data-model-generator.d.ts +528 -0
- package/dist/panoramic/data-model-generator.d.ts.map +1 -0
- package/dist/panoramic/data-model-generator.js +647 -0
- package/dist/panoramic/data-model-generator.js.map +1 -0
- package/dist/panoramic/doc-graph-builder.d.ts +80 -0
- package/dist/panoramic/doc-graph-builder.d.ts.map +1 -0
- package/dist/panoramic/doc-graph-builder.js +352 -0
- package/dist/panoramic/doc-graph-builder.js.map +1 -0
- package/dist/panoramic/docs-bundle-manifest-reader.d.ts +26 -0
- package/dist/panoramic/docs-bundle-manifest-reader.d.ts.map +1 -0
- package/dist/panoramic/docs-bundle-manifest-reader.js +106 -0
- package/dist/panoramic/docs-bundle-manifest-reader.js.map +1 -0
- package/dist/panoramic/docs-bundle-orchestrator.d.ts +14 -0
- package/dist/panoramic/docs-bundle-orchestrator.d.ts.map +1 -0
- package/dist/panoramic/docs-bundle-orchestrator.js +538 -0
- package/dist/panoramic/docs-bundle-orchestrator.js.map +1 -0
- package/dist/panoramic/docs-bundle-profiles.d.ts +4 -0
- package/dist/panoramic/docs-bundle-profiles.d.ts.map +1 -0
- package/dist/panoramic/docs-bundle-profiles.js +82 -0
- package/dist/panoramic/docs-bundle-profiles.js.map +1 -0
- package/dist/panoramic/docs-bundle-types.d.ts +94 -0
- package/dist/panoramic/docs-bundle-types.d.ts.map +1 -0
- package/dist/panoramic/docs-bundle-types.js +10 -0
- package/dist/panoramic/docs-bundle-types.js.map +1 -0
- package/dist/panoramic/docs-quality-evaluator.d.ts +31 -0
- package/dist/panoramic/docs-quality-evaluator.d.ts.map +1 -0
- package/dist/panoramic/docs-quality-evaluator.js +941 -0
- package/dist/panoramic/docs-quality-evaluator.js.map +1 -0
- package/dist/panoramic/docs-quality-model.d.ts +125 -0
- package/dist/panoramic/docs-quality-model.d.ts.map +1 -0
- package/dist/panoramic/docs-quality-model.js +166 -0
- package/dist/panoramic/docs-quality-model.js.map +1 -0
- package/dist/panoramic/dynamic-scenarios-builder.d.ts +18 -0
- package/dist/panoramic/dynamic-scenarios-builder.d.ts.map +1 -0
- package/dist/panoramic/dynamic-scenarios-builder.js +316 -0
- package/dist/panoramic/dynamic-scenarios-builder.js.map +1 -0
- package/dist/panoramic/event-surface-generator.d.ts +52 -0
- package/dist/panoramic/event-surface-generator.d.ts.map +1 -0
- package/dist/panoramic/event-surface-generator.js +507 -0
- package/dist/panoramic/event-surface-generator.js.map +1 -0
- package/dist/panoramic/generator-registry.d.ts +1 -1
- package/dist/panoramic/generator-registry.d.ts.map +1 -1
- package/dist/panoramic/generator-registry.js +5 -2
- package/dist/panoramic/generator-registry.js.map +1 -1
- package/dist/panoramic/generators/cross-package-analyzer.d.ts +5 -5
- package/dist/panoramic/generators/cross-package-analyzer.d.ts.map +1 -1
- package/dist/panoramic/generators/cross-package-analyzer.js +1 -1
- package/dist/panoramic/generators/cross-package-analyzer.js.map +1 -1
- package/dist/panoramic/generators/data-model-generator.d.ts +27 -27
- package/dist/panoramic/graph/confidence-mapper.d.ts +18 -0
- package/dist/panoramic/graph/confidence-mapper.d.ts.map +1 -1
- package/dist/panoramic/graph/confidence-mapper.js +26 -0
- package/dist/panoramic/graph/confidence-mapper.js.map +1 -1
- package/dist/panoramic/graph/graph-builder.d.ts.map +1 -1
- package/dist/panoramic/graph/graph-builder.js +78 -0
- package/dist/panoramic/graph/graph-builder.js.map +1 -1
- package/dist/panoramic/graph/graph-paths.d.ts +8 -0
- package/dist/panoramic/graph/graph-paths.d.ts.map +1 -1
- package/dist/panoramic/graph/graph-paths.js +10 -0
- package/dist/panoramic/graph/graph-paths.js.map +1 -1
- package/dist/panoramic/graph/graph-query.d.ts +33 -2
- package/dist/panoramic/graph/graph-query.d.ts.map +1 -1
- package/dist/panoramic/graph/graph-query.js +69 -19
- package/dist/panoramic/graph/graph-query.js.map +1 -1
- package/dist/panoramic/graph/graph-types.d.ts +32 -3
- package/dist/panoramic/graph/graph-types.d.ts.map +1 -1
- package/dist/panoramic/hyperedges/schema.d.ts +6 -6
- package/dist/panoramic/interface-surface-generator.d.ts +50 -0
- package/dist/panoramic/interface-surface-generator.d.ts.map +1 -0
- package/dist/panoramic/interface-surface-generator.js +388 -0
- package/dist/panoramic/interface-surface-generator.js.map +1 -0
- package/dist/panoramic/interfaces.d.ts +2 -2
- package/dist/panoramic/mock-readme-generator.d.ts +90 -0
- package/dist/panoramic/mock-readme-generator.d.ts.map +1 -0
- package/dist/panoramic/mock-readme-generator.js +111 -0
- package/dist/panoramic/mock-readme-generator.js.map +1 -0
- package/dist/panoramic/models/component-view-model.d.ts +1 -1
- package/dist/panoramic/models/component-view-model.d.ts.map +1 -1
- package/dist/panoramic/models/component-view-model.js.map +1 -1
- package/dist/panoramic/narrative-provenance-adapter.d.ts +8 -0
- package/dist/panoramic/narrative-provenance-adapter.d.ts.map +1 -0
- package/dist/panoramic/narrative-provenance-adapter.js +99 -0
- package/dist/panoramic/narrative-provenance-adapter.js.map +1 -0
- package/dist/panoramic/parser-registry.d.ts +1 -1
- package/dist/panoramic/parser-registry.js +1 -1
- package/dist/panoramic/parsers/types.d.ts +6 -6
- package/dist/panoramic/pattern-hints-generator.d.ts +28 -0
- package/dist/panoramic/pattern-hints-generator.d.ts.map +1 -0
- package/dist/panoramic/pattern-hints-generator.js +218 -0
- package/dist/panoramic/pattern-hints-generator.js.map +1 -0
- package/dist/panoramic/pattern-hints-model.d.ts +89 -0
- package/dist/panoramic/pattern-hints-model.d.ts.map +1 -0
- package/dist/panoramic/pattern-hints-model.js +61 -0
- package/dist/panoramic/pattern-hints-model.js.map +1 -0
- package/dist/panoramic/pattern-knowledge-base.d.ts +31 -0
- package/dist/panoramic/pattern-knowledge-base.d.ts.map +1 -0
- package/dist/panoramic/pattern-knowledge-base.js +407 -0
- package/dist/panoramic/pattern-knowledge-base.js.map +1 -0
- package/dist/panoramic/pipelines/coverage-auditor.d.ts.map +1 -1
- package/dist/panoramic/pipelines/coverage-auditor.js +4 -2
- package/dist/panoramic/pipelines/coverage-auditor.js.map +1 -1
- package/dist/panoramic/pipelines/docs-bundle-orchestrator.js +13 -6
- package/dist/panoramic/pipelines/docs-bundle-orchestrator.js.map +1 -1
- package/dist/panoramic/pipelines/product-ux-docs.d.ts +5 -0
- package/dist/panoramic/pipelines/product-ux-docs.d.ts.map +1 -1
- package/dist/panoramic/pipelines/product-ux-docs.js +34 -6
- package/dist/panoramic/pipelines/product-ux-docs.js.map +1 -1
- package/dist/panoramic/product-ux-docs.d.ts +104 -0
- package/dist/panoramic/product-ux-docs.d.ts.map +1 -0
- package/dist/panoramic/product-ux-docs.js +817 -0
- package/dist/panoramic/product-ux-docs.js.map +1 -0
- package/dist/panoramic/qa/__tests__/citation.test.d.ts +2 -0
- package/dist/panoramic/qa/__tests__/citation.test.d.ts.map +1 -0
- package/dist/panoramic/qa/__tests__/citation.test.js +193 -0
- package/dist/panoramic/qa/__tests__/citation.test.js.map +1 -0
- package/dist/panoramic/qa/__tests__/debt-context.test.d.ts +2 -0
- package/dist/panoramic/qa/__tests__/debt-context.test.d.ts.map +1 -0
- package/dist/panoramic/qa/__tests__/debt-context.test.js +154 -0
- package/dist/panoramic/qa/__tests__/debt-context.test.js.map +1 -0
- package/dist/panoramic/qa/__tests__/graph-retriever.test.d.ts +2 -0
- package/dist/panoramic/qa/__tests__/graph-retriever.test.d.ts.map +1 -0
- package/dist/panoramic/qa/__tests__/graph-retriever.test.js +148 -0
- package/dist/panoramic/qa/__tests__/graph-retriever.test.js.map +1 -0
- package/dist/panoramic/qa/__tests__/index.test.d.ts +2 -0
- package/dist/panoramic/qa/__tests__/index.test.d.ts.map +1 -0
- package/dist/panoramic/qa/__tests__/index.test.js +246 -0
- package/dist/panoramic/qa/__tests__/index.test.js.map +1 -0
- package/dist/panoramic/qa/__tests__/llm-caller.test.d.ts +2 -0
- package/dist/panoramic/qa/__tests__/llm-caller.test.d.ts.map +1 -0
- package/dist/panoramic/qa/__tests__/llm-caller.test.js +168 -0
- package/dist/panoramic/qa/__tests__/llm-caller.test.js.map +1 -0
- package/dist/panoramic/qa/__tests__/prompt-builder.test.d.ts +2 -0
- package/dist/panoramic/qa/__tests__/prompt-builder.test.d.ts.map +1 -0
- package/dist/panoramic/qa/__tests__/prompt-builder.test.js +150 -0
- package/dist/panoramic/qa/__tests__/prompt-builder.test.js.map +1 -0
- package/dist/panoramic/qa/__tests__/qa-integration.test.d.ts +2 -0
- package/dist/panoramic/qa/__tests__/qa-integration.test.d.ts.map +1 -0
- package/dist/panoramic/qa/__tests__/qa-integration.test.js +296 -0
- package/dist/panoramic/qa/__tests__/qa-integration.test.js.map +1 -0
- package/dist/panoramic/qa/__tests__/rag-reranker.test.d.ts +2 -0
- package/dist/panoramic/qa/__tests__/rag-reranker.test.d.ts.map +1 -0
- package/dist/panoramic/qa/__tests__/rag-reranker.test.js +136 -0
- package/dist/panoramic/qa/__tests__/rag-reranker.test.js.map +1 -0
- package/dist/panoramic/qa/index.d.ts.map +1 -1
- package/dist/panoramic/qa/index.js +10 -3
- package/dist/panoramic/qa/index.js.map +1 -1
- package/dist/panoramic/runtime-topology-generator.d.ts +77 -0
- package/dist/panoramic/runtime-topology-generator.d.ts.map +1 -0
- package/dist/panoramic/runtime-topology-generator.js +676 -0
- package/dist/panoramic/runtime-topology-generator.js.map +1 -0
- package/dist/panoramic/runtime-topology-model.d.ts +145 -0
- package/dist/panoramic/runtime-topology-model.d.ts.map +1 -0
- package/dist/panoramic/runtime-topology-model.js +300 -0
- package/dist/panoramic/runtime-topology-model.js.map +1 -0
- package/dist/panoramic/troubleshooting-generator.d.ts +51 -0
- package/dist/panoramic/troubleshooting-generator.d.ts.map +1 -0
- package/dist/panoramic/troubleshooting-generator.js +451 -0
- package/dist/panoramic/troubleshooting-generator.js.map +1 -0
- package/dist/panoramic/utils/text-segmenter.d.ts +15 -0
- package/dist/panoramic/utils/text-segmenter.d.ts.map +1 -1
- package/dist/panoramic/utils/text-segmenter.js +38 -0
- package/dist/panoramic/utils/text-segmenter.js.map +1 -1
- package/dist/panoramic/workspace-index-generator.d.ts +148 -0
- package/dist/panoramic/workspace-index-generator.d.ts.map +1 -0
- package/dist/panoramic/workspace-index-generator.js +497 -0
- package/dist/panoramic/workspace-index-generator.js.map +1 -0
- package/dist/runtime-bootstrap.d.ts +9 -0
- package/dist/runtime-bootstrap.d.ts.map +1 -0
- package/dist/runtime-bootstrap.js +33 -0
- package/dist/runtime-bootstrap.js.map +1 -0
- package/dist/utils/file-scanner.js +1 -1
- package/dist/utils/file-scanner.js.map +1 -1
- package/package.json +12 -2
- package/plugins/spec-driver/.claude-plugin/plugin.json +1 -1
- package/plugins/spec-driver/README.md +18 -1
- package/plugins/spec-driver/agents/implement.md +20 -1
- package/plugins/spec-driver/agents/plan.md +20 -1
- package/plugins/spec-driver/agents/quality-review.md +20 -1
- package/plugins/spec-driver/agents/spec-review.md +20 -1
- package/plugins/spec-driver/agents/verify.md +20 -1
- package/plugins/spec-driver/docs/customization.md +134 -0
- package/plugins/spec-driver/docs/spectra-mcp-integration.md +165 -0
- package/plugins/spec-driver/lib/preference-rules.mjs +96 -0
- package/plugins/spec-driver/scripts/postinstall.sh +1 -1
- package/plugins/spec-driver/scripts/sync-preference-rules.mjs +148 -0
- package/plugins/spec-driver/skills/spec-driver-feature/SKILL.md +10 -0
- package/plugins/spec-driver/skills/spec-driver-fix/SKILL.md +10 -0
- package/plugins/spec-driver/skills/spec-driver-implement/SKILL.md +10 -0
- package/plugins/spec-driver/skills/spec-driver-refactor/SKILL.md +10 -0
- package/plugins/spec-driver/skills/spec-driver-story/SKILL.md +10 -0
- package/plugins/spec-driver/templates/preference-rules.md +39 -0
- package/plugins/spectra/.claude-plugin/plugin.json +1 -1
- package/plugins/spectra/README.md +48 -1
- package/plugins/spectra/hooks/post-commit.sh +40 -0
- package/templates/product-overview.hbs +1 -1
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<!-- spec-driver:section:badges -->
|
|
4
4
|

|
|
5
5
|

|
|
6
|
-

|
|
7
7
|

|
|
8
8
|

|
|
9
9
|
<!-- spec-driver:section:badges:end -->
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"go-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/go-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACb,MAAM,uBAAuB,CAAC;AAI/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,qBAAa,iBAAkB,YAAW,eAAe;IACvD,QAAQ,CAAC,EAAE,QAAQ;IAEnB,QAAQ,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,CAAU;IAEjD,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAoB;IAE5D,QAAQ,CAAC,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,CAE5C;IAEH;;OAEG;IACG,WAAW,CACf,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"go-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/go-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACb,MAAM,uBAAuB,CAAC;AAI/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,qBAAa,iBAAkB,YAAW,eAAe;IACvD,QAAQ,CAAC,EAAE,QAAQ;IAEnB,QAAQ,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,CAAU;IAEjD,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAoB;IAE5D,QAAQ,CAAC,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,CAE5C;IAEH;;OAEG;IACG,WAAW,CACf,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,YAAY,CAAC;IASxB;;OAEG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAI9D;;OAEG;IACH,cAAc,IAAI,mBAAmB;IAWrC;;OAEG;IACH,eAAe,IAAI,YAAY;IAO/B;;OAEG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;CAMlE"}
|
|
@@ -15,6 +15,8 @@ export class GoLanguageAdapter {
|
|
|
15
15
|
const analyzer = TreeSitterAnalyzer.getInstance();
|
|
16
16
|
return analyzer.analyze(filePath, 'go', {
|
|
17
17
|
includePrivate: options?.includePrivate,
|
|
18
|
+
// Feature 153 — 透传 extractCallSites flag(与 PythonLanguageAdapter 行为一致)
|
|
19
|
+
extractCallSites: options?.extractCallSites,
|
|
18
20
|
});
|
|
19
21
|
}
|
|
20
22
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"go-adapter.js","sourceRoot":"","sources":["../../src/adapters/go-adapter.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,eAAe,IAAI,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACxF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAGnF,MAAM,OAAO,iBAAiB;IACnB,EAAE,GAAG,IAAI,CAAC;IAEV,SAAS,GAAwB,CAAC,IAAI,CAAC,CAAC;IAExC,UAAU,GAAwB,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAEnD,iBAAiB,GAAwB,IAAI,GAAG,CAAC;QACxD,QAAQ;KACT,CAAC,CAAC;IAEH;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,QAAgB,EAChB,OAA4B;QAE5B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,WAAW,EAAE,CAAC;QAClD,OAAO,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE;YACtC,cAAc,EAAE,OAAO,EAAE,cAAc;
|
|
1
|
+
{"version":3,"file":"go-adapter.js","sourceRoot":"","sources":["../../src/adapters/go-adapter.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,eAAe,IAAI,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACxF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAGnF,MAAM,OAAO,iBAAiB;IACnB,EAAE,GAAG,IAAI,CAAC;IAEV,SAAS,GAAwB,CAAC,IAAI,CAAC,CAAC;IAExC,UAAU,GAAwB,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAEnD,iBAAiB,GAAwB,IAAI,GAAG,CAAC;QACxD,QAAQ;KACT,CAAC,CAAC;IAEH;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,QAAgB,EAChB,OAA4B;QAE5B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,WAAW,EAAE,CAAC;QAClD,OAAO,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE;YACtC,cAAc,EAAE,OAAO,EAAE,cAAc;YACvC,uEAAuE;YACvE,gBAAgB,EAAE,OAAO,EAAE,gBAAgB;SAC5C,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,QAAgB;QACpC,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO;YACL,iBAAiB,EAAE,IAAI;YACvB,aAAa,EAAE,0BAA0B;YACzC,aAAa,EAAE,kBAAkB;YACjC,qBAAqB,EAAE,yBAAyB;YAChD,gBAAgB,EAAE,qCAAqC;YACvD,YAAY,EAAE,qCAAqC;SACpD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO;YACL,WAAW,EAAE,eAAe;YAC5B,QAAQ,EAAE,EAAE;SACb,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,QAAgB;QACpC,OAAO,6BAA6B,CAAC,QAAQ,EAAE;YAC7C,WAAW,EAAE,IAAI;YACjB,gBAAgB,EAAE,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;SACvC,CAAC,CAAC;IACL,CAAC;CACF"}
|
package/dist/adapters/index.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export type { LanguageAdapter } from './language-adapter.js';
|
|
|
6
6
|
export type { LanguageTerminology } from './language-adapter.js';
|
|
7
7
|
export type { TestPatterns } from './language-adapter.js';
|
|
8
8
|
export type { AnalyzeFileOptions } from './language-adapter.js';
|
|
9
|
-
export type {
|
|
9
|
+
export type { ModuleGraphOptions } from './language-adapter.js';
|
|
10
10
|
export { LanguageAdapterRegistry } from './language-adapter-registry.js';
|
|
11
11
|
export { TsJsLanguageAdapter } from './ts-js-adapter.js';
|
|
12
12
|
export { PythonLanguageAdapter } from './python-adapter.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,YAAY,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAGhE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAGzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAYxD;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAYxC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"java-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/java-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACb,MAAM,uBAAuB,CAAC;AAI/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,qBAAa,mBAAoB,YAAW,eAAe;IACzD,QAAQ,CAAC,EAAE,UAAU;IAErB,QAAQ,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,CAAY;IAEnD,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAsB;IAE9D,QAAQ,CAAC,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,CAQ5C;IAEH;;OAEG;IACG,WAAW,CACf,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"java-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/java-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACb,MAAM,uBAAuB,CAAC;AAI/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,qBAAa,mBAAoB,YAAW,eAAe;IACzD,QAAQ,CAAC,EAAE,UAAU;IAErB,QAAQ,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,CAAY;IAEnD,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAsB;IAE9D,QAAQ,CAAC,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,CAQ5C;IAEH;;OAEG;IACG,WAAW,CACf,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,YAAY,CAAC;IASxB;;OAEG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAI9D;;OAEG;IACH,cAAc,IAAI,mBAAmB;IAWrC;;OAEG;IACH,eAAe,IAAI,YAAY;IAO/B;;;OAGG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;CAMlE"}
|
|
@@ -21,6 +21,8 @@ export class JavaLanguageAdapter {
|
|
|
21
21
|
const analyzer = TreeSitterAnalyzer.getInstance();
|
|
22
22
|
return analyzer.analyze(filePath, 'java', {
|
|
23
23
|
includePrivate: options?.includePrivate,
|
|
24
|
+
// Feature 154 — 透传 extractCallSites flag(与 python-adapter.ts 对齐,CL-05 默认 false)
|
|
25
|
+
extractCallSites: options?.extractCallSites,
|
|
24
26
|
});
|
|
25
27
|
}
|
|
26
28
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"java-adapter.js","sourceRoot":"","sources":["../../src/adapters/java-adapter.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,eAAe,IAAI,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACxF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAGnF,MAAM,OAAO,mBAAmB;IACrB,EAAE,GAAG,MAAM,CAAC;IAEZ,SAAS,GAAwB,CAAC,MAAM,CAAC,CAAC;IAE1C,UAAU,GAAwB,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAErD,iBAAiB,GAAwB,IAAI,GAAG,CAAC;QACxD,QAAQ,EAAI,QAAQ;QACpB,OAAO,EAAK,SAAS;QACrB,KAAK,EAAO,gBAAgB;QAC5B,SAAS,EAAG,YAAY;QACxB,OAAO,EAAK,cAAc;QAC1B,WAAW,EAAE,aAAa;QAC1B,MAAM,EAAM,gBAAgB;KAC7B,CAAC,CAAC;IAEH;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,QAAgB,EAChB,OAA4B;QAE5B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,WAAW,EAAE,CAAC;QAClD,OAAO,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE;YACxC,cAAc,EAAE,OAAO,EAAE,cAAc;
|
|
1
|
+
{"version":3,"file":"java-adapter.js","sourceRoot":"","sources":["../../src/adapters/java-adapter.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,eAAe,IAAI,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACxF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAGnF,MAAM,OAAO,mBAAmB;IACrB,EAAE,GAAG,MAAM,CAAC;IAEZ,SAAS,GAAwB,CAAC,MAAM,CAAC,CAAC;IAE1C,UAAU,GAAwB,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAErD,iBAAiB,GAAwB,IAAI,GAAG,CAAC;QACxD,QAAQ,EAAI,QAAQ;QACpB,OAAO,EAAK,SAAS;QACrB,KAAK,EAAO,gBAAgB;QAC5B,SAAS,EAAG,YAAY;QACxB,OAAO,EAAK,cAAc;QAC1B,WAAW,EAAE,aAAa;QAC1B,MAAM,EAAM,gBAAgB;KAC7B,CAAC,CAAC;IAEH;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,QAAgB,EAChB,OAA4B;QAE5B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,WAAW,EAAE,CAAC;QAClD,OAAO,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE;YACxC,cAAc,EAAE,OAAO,EAAE,cAAc;YACvC,gFAAgF;YAChF,gBAAgB,EAAE,OAAO,EAAE,gBAAgB;SAC5C,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,QAAgB;QACpC,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO;YACL,iBAAiB,EAAE,MAAM;YACzB,aAAa,EAAE,+BAA+B;YAC9C,aAAa,EAAE,gCAAgC;YAC/C,qBAAqB,EAAE,mBAAmB;YAC1C,gBAAgB,EAAE,yDAAyD;YAC3E,YAAY,EAAE,sCAAsC;SACrD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO;YACL,WAAW,EAAE,sCAAsC;YACnD,QAAQ,EAAE,CAAC,eAAe,CAAC;SAC5B,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,eAAe,CAAC,QAAgB;QACpC,OAAO,6BAA6B,CAAC,QAAQ,EAAE;YAC7C,WAAW,EAAE,MAAM;YACnB,gBAAgB,EAAE,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;SAC7D,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 语言适配器接口定义
|
|
3
3
|
* 定义一种编程语言支持所需的全部能力契约:文件分析、降级分析、
|
|
4
|
-
*
|
|
4
|
+
* 模块图构建(可选)、术语映射、测试文件模式。
|
|
5
|
+
*
|
|
6
|
+
* Feature 156 W1.4:模块图统一使用 ModuleGraph
|
|
7
|
+
* (UnifiedGraph 派生视图,src/knowledge-graph/module-derivation.ts)。
|
|
5
8
|
*/
|
|
6
9
|
import type { CodeSkeleton, Language } from '../models/code-skeleton.js';
|
|
7
|
-
import type {
|
|
10
|
+
import type { ModuleGraph } from '../knowledge-graph/module-derivation.js';
|
|
8
11
|
import type { CommentRegion } from '../debt-scanner/types.js';
|
|
9
12
|
export type { CommentRegion };
|
|
10
13
|
/**
|
|
@@ -15,11 +18,43 @@ export interface AnalyzeFileOptions {
|
|
|
15
18
|
includePrivate?: boolean;
|
|
16
19
|
/** 类继承层级最大解析深度(默认 5) */
|
|
17
20
|
maxDepth?: number;
|
|
21
|
+
/**
|
|
22
|
+
* 抽取函数调用点(Feature 151 + CL-05),默认 false。
|
|
23
|
+
*
|
|
24
|
+
* 设计动机:抽 callSites 会增加 AST 遍历开销(NFR-1 性能),
|
|
25
|
+
* spec drift check / 单文件分析等无 graph 需求的场景不需要 callSites,保持默认 false。
|
|
26
|
+
* panoramic 流水线(batch-orchestrator / batch-project-docs / coverage-auditor)
|
|
27
|
+
* 必须显式传 true 才能让 graph.json 含 calls 边。
|
|
28
|
+
*/
|
|
29
|
+
extractCallSites?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* 项目根目录绝对路径(Feature 156 W1.0 新增,FR-28)。
|
|
32
|
+
*
|
|
33
|
+
* 用于 import-resolver 解析 tsconfig path alias 与跨包相对路径。
|
|
34
|
+
* 缺失时仍可解析相对路径(fallback 用 path.dirname(filePath) 作 base),
|
|
35
|
+
* 但 alias 会失效。
|
|
36
|
+
*/
|
|
37
|
+
projectRoot?: string;
|
|
38
|
+
/**
|
|
39
|
+
* tsconfig path alias 映射(Feature 156 W1.0;W1.2 v2 / CRIT-2 扩展为多候选)。
|
|
40
|
+
*
|
|
41
|
+
* 形如 `{ '@/star': './src/star' }`(单值,向后兼容;star 表示通配符)
|
|
42
|
+
* 或 `{ '@app/star': ['./packages/app/star', './apps/star/src'] }`(多候选,CRIT-2 v2);
|
|
43
|
+
* 交由 import-resolver.resolveTsJsImport 处理。
|
|
44
|
+
*/
|
|
45
|
+
pathAliases?: Record<string, string | readonly string[]>;
|
|
46
|
+
/**
|
|
47
|
+
* tsconfig.compilerOptions.baseUrl 解析后的绝对路径(Feature 156 W1.2 v2 / CRIT-2 新增)。
|
|
48
|
+
*
|
|
49
|
+
* 提供时,未命中 alias 的非相对 import specifier 会基于 baseUrl 尝试解析
|
|
50
|
+
* (如 baseUrl='/proj/src', specifier='utils/foo' → 尝试 /proj/src/utils/foo.{ts,tsx,...})。
|
|
51
|
+
*/
|
|
52
|
+
baseUrl?: string;
|
|
18
53
|
}
|
|
19
54
|
/**
|
|
20
|
-
*
|
|
55
|
+
* 模块图构建选项(W1.4:ModuleGraphOptions)
|
|
21
56
|
*/
|
|
22
|
-
export interface
|
|
57
|
+
export interface ModuleGraphOptions {
|
|
23
58
|
/** 用于过滤分析文件的 Glob 模式 */
|
|
24
59
|
includeOnly?: string;
|
|
25
60
|
/** 排除模式 */
|
|
@@ -59,7 +94,7 @@ export interface TestPatterns {
|
|
|
59
94
|
/**
|
|
60
95
|
* 语言适配器接口
|
|
61
96
|
* 定义一种编程语言支持所需的全部能力:文件分析、降级分析、
|
|
62
|
-
*
|
|
97
|
+
* 模块图构建(可选)、术语映射、测试文件模式。
|
|
63
98
|
*/
|
|
64
99
|
export interface LanguageAdapter {
|
|
65
100
|
/** 适配器唯一标识(如 'ts-js', 'python', 'go') */
|
|
@@ -94,14 +129,17 @@ export interface LanguageAdapter {
|
|
|
94
129
|
*/
|
|
95
130
|
analyzeFallback(filePath: string): Promise<CodeSkeleton>;
|
|
96
131
|
/**
|
|
97
|
-
*
|
|
98
|
-
*
|
|
132
|
+
* 构建项目级模块图(可选能力)
|
|
133
|
+
* 并非所有语言在初始阶段都需要模块图支持。
|
|
134
|
+
*
|
|
135
|
+
* Feature 156 W1.4:所有实现内部统一走 buildUnifiedGraph + deriveModuleGraph
|
|
136
|
+
* 派生路径,不再依赖 dependency-cruiser 等外部工具。
|
|
99
137
|
*
|
|
100
138
|
* @param projectRoot - 项目根目录
|
|
101
139
|
* @param options - 构建选项(可选)
|
|
102
|
-
* @returns
|
|
140
|
+
* @returns ModuleGraph(UnifiedGraph 派生视图)
|
|
103
141
|
*/
|
|
104
|
-
|
|
142
|
+
buildModuleGraph?(projectRoot: string, options?: ModuleGraphOptions): Promise<ModuleGraph>;
|
|
105
143
|
/**
|
|
106
144
|
* 返回该语言的术语映射
|
|
107
145
|
* 用于 LLM prompt 的语言参数化。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"language-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/language-adapter.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"language-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/language-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,YAAY,EAAE,aAAa,EAAE,CAAC;AAM9B;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,wBAAwB;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC,CAAC;IACzD;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW;IACX,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,8CAA8C;IAC9C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa;IACb,qBAAqB,EAAE,MAAM,CAAC;IAC9B,cAAc;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa;IACb,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,cAAc;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc;IACd,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAMD;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,yCAAyC;IACzC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,0CAA0C;IAC1C,QAAQ,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,CAAC;IAExC;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAEzC;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAEhD;;;;;;;OAOG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAEnF;;;;;;OAMG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzD;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,CACf,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,WAAW,CAAC,CAAC;IAExB;;;OAGG;IACH,cAAc,IAAI,mBAAmB,CAAC;IAEtC;;;OAGG;IACH,eAAe,IAAI,YAAY,CAAC;IAEhC;;;;;;;;;OASG;IACH,eAAe,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;CAC9D"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { CodeSkeleton, Language } from '../models/code-skeleton.js';
|
|
2
2
|
import type { ExtractionResult } from '../extraction/extraction-types.js';
|
|
3
|
-
import type { LanguageAdapter, AnalyzeFileOptions,
|
|
4
|
-
import type {
|
|
3
|
+
import type { LanguageAdapter, AnalyzeFileOptions, ModuleGraphOptions, LanguageTerminology, TestPatterns } from './language-adapter.js';
|
|
4
|
+
import type { ModuleGraph } from '../knowledge-graph/module-derivation.js';
|
|
5
5
|
import type { CommentRegion } from '../debt-scanner/types.js';
|
|
6
6
|
export declare class PythonLanguageAdapter implements LanguageAdapter {
|
|
7
7
|
readonly id = "python";
|
|
@@ -35,7 +35,7 @@ export declare class PythonLanguageAdapter implements LanguageAdapter {
|
|
|
35
35
|
* 递归扫描项目根目录下所有 `.py` 文件,排除语言生态常见忽略目录。
|
|
36
36
|
*
|
|
37
37
|
* 复用 `defaultIgnoreDirs` 并叠加 Python 项目惯例(test/tests/dist 等)。
|
|
38
|
-
* 由 `extractSymbolNodes` 与 `
|
|
38
|
+
* 由 `extractSymbolNodes` 与 `buildModuleGraph` 共用,避免 DRY 违反。
|
|
39
39
|
*
|
|
40
40
|
* @throws 当根目录不可读时抛出(调用方按需 try-catch 决定是否吞掉)
|
|
41
41
|
*/
|
|
@@ -53,9 +53,37 @@ export declare class PythonLanguageAdapter implements LanguageAdapter {
|
|
|
53
53
|
*/
|
|
54
54
|
extractSymbolNodes(projectRoot: string): Promise<ExtractionResult[]>;
|
|
55
55
|
/**
|
|
56
|
-
* 构建 Python
|
|
57
|
-
*
|
|
56
|
+
* 构建 Python 项目的模块图(Feature 156 W1.4:UnifiedGraph 派生路径)
|
|
57
|
+
*
|
|
58
|
+
* 流程:
|
|
59
|
+
* 1. 递归扫描所有 .py 文件,排除语言生态忽略目录
|
|
60
|
+
* 2. 解析 Python import → 相对路径(包含 dot-relative + namedImports 展开)
|
|
61
|
+
* 3. 把推断到的 resolvedPath 写回 CodeSkeleton.imports[i]
|
|
62
|
+
* 4. buildModuleGraphFromCodeSkeletons 一站式派生
|
|
63
|
+
*
|
|
64
|
+
* Python import 解析规则:
|
|
65
|
+
* - 绝对模块(`import foo` / `from foo import x`):用 basename map(EC-6 简化策略)
|
|
66
|
+
* - 单点相对(`from . import utils` / `from . import a, b`):
|
|
67
|
+
* * 当 moduleSpecifier === '.':把每个 namedImport 名字 N 当作候选模块,
|
|
68
|
+
* 在当前包目录尝试解析 ./N.py 或 ./N/__init__.py
|
|
69
|
+
* * 多个 named import 都命中时,取第一个命中的(resolvedPath 是单值字段);
|
|
70
|
+
* - 双点相对(`from .. import x`):同理,往上一级查
|
|
71
|
+
* - 带模块名相对(`from .nn import Module`):解析 `.nn` 子模块
|
|
72
|
+
*/
|
|
73
|
+
buildModuleGraph(projectRoot: string, _options?: ModuleGraphOptions): Promise<ModuleGraph>;
|
|
74
|
+
/**
|
|
75
|
+
* 解析单条 Python ImportReference 为 0..N 条带 resolvedPath 的 ImportReference。
|
|
76
|
+
*
|
|
77
|
+
* CRIT-4 v2:处理 dot-relative + namedImports 展开。当 specifier 为纯点号('.'/'..')时,
|
|
78
|
+
* 把 namedImports 每个名字 N 展开为候选 specifier `.N` / `..N`,用相对路径解析每个候选;
|
|
79
|
+
* 任一命中即派生一条 edge(resolvedPath 写回)。
|
|
80
|
+
*
|
|
81
|
+
* 返回 ImportReference 数组:
|
|
82
|
+
* - 命中 0 个候选:返回原 imp(不带 resolvedPath,下游 deriveImportEdges 跳过)
|
|
83
|
+
* - 命中 1 个:返回单元素数组(imp + resolvedPath)
|
|
84
|
+
* - 命中 N 个(仅 dot-relative + multi-named 才会发生):返回 N 元素数组,
|
|
85
|
+
* 每个元素是同一 imp 的副本但 resolvedPath 各异 + namedImports 收窄到对应名字
|
|
58
86
|
*/
|
|
59
|
-
|
|
87
|
+
private resolvePythonImport;
|
|
60
88
|
}
|
|
61
89
|
//# sourceMappingURL=python-adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"python-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/python-adapter.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"python-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/python-adapter.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAmB,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAI3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG9D,qBAAa,qBAAsB,YAAW,eAAe;IAC3D,QAAQ,CAAC,EAAE,YAAY;IAEvB,QAAQ,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,CAAc;IAErD,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAA4B;IAEpE,QAAQ,CAAC,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,CAQ5C;IAEH;;OAEG;IACG,WAAW,CACf,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,YAAY,CAAC;IASxB;;OAEG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAI9D;;OAEG;IACH,cAAc,IAAI,mBAAmB;IAWrC;;OAEG;IACH,eAAe,IAAI,YAAY;IAO/B;;;;;OAKG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAOjE;;;;;;;OAOG;IACH,OAAO,CAAC,WAAW;IAqBnB;;;;;;;;;;OAUG;IACG,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IA8E1E;;;;;;;;;;;;;;;;;OAiBG;IACG,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,kBAAkB,GAC5B,OAAO,CAAC,WAAW,CAAC;IA6EvB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,mBAAmB;CAyE5B"}
|
|
@@ -11,6 +11,7 @@ import * as fs from 'node:fs';
|
|
|
11
11
|
import { TreeSitterAnalyzer } from '../core/tree-sitter-analyzer.js';
|
|
12
12
|
import { analyzeFallback as treeSitterFallback } from '../core/tree-sitter-fallback.js';
|
|
13
13
|
import { extractCommentsWithTreeSitter } from './tree-sitter-comment-extractor.js';
|
|
14
|
+
import { buildModuleGraphFromCodeSkeletons } from '../knowledge-graph/module-derivation.js';
|
|
14
15
|
export class PythonLanguageAdapter {
|
|
15
16
|
id = 'python';
|
|
16
17
|
languages = ['python'];
|
|
@@ -31,6 +32,8 @@ export class PythonLanguageAdapter {
|
|
|
31
32
|
const analyzer = TreeSitterAnalyzer.getInstance();
|
|
32
33
|
return analyzer.analyze(filePath, 'python', {
|
|
33
34
|
includePrivate: options?.includePrivate,
|
|
35
|
+
// Feature 151 — 透传 extractCallSites flag(CL-05 默认 false)
|
|
36
|
+
extractCallSites: options?.extractCallSites,
|
|
34
37
|
});
|
|
35
38
|
}
|
|
36
39
|
/**
|
|
@@ -77,7 +80,7 @@ export class PythonLanguageAdapter {
|
|
|
77
80
|
* 递归扫描项目根目录下所有 `.py` 文件,排除语言生态常见忽略目录。
|
|
78
81
|
*
|
|
79
82
|
* 复用 `defaultIgnoreDirs` 并叠加 Python 项目惯例(test/tests/dist 等)。
|
|
80
|
-
* 由 `extractSymbolNodes` 与 `
|
|
83
|
+
* 由 `extractSymbolNodes` 与 `buildModuleGraph` 共用,避免 DRY 违反。
|
|
81
84
|
*
|
|
82
85
|
* @throws 当根目录不可读时抛出(调用方按需 try-catch 决定是否吞掉)
|
|
83
86
|
*/
|
|
@@ -185,76 +188,171 @@ export class PythonLanguageAdapter {
|
|
|
185
188
|
return results;
|
|
186
189
|
}
|
|
187
190
|
/**
|
|
188
|
-
* 构建 Python
|
|
189
|
-
*
|
|
191
|
+
* 构建 Python 项目的模块图(Feature 156 W1.4:UnifiedGraph 派生路径)
|
|
192
|
+
*
|
|
193
|
+
* 流程:
|
|
194
|
+
* 1. 递归扫描所有 .py 文件,排除语言生态忽略目录
|
|
195
|
+
* 2. 解析 Python import → 相对路径(包含 dot-relative + namedImports 展开)
|
|
196
|
+
* 3. 把推断到的 resolvedPath 写回 CodeSkeleton.imports[i]
|
|
197
|
+
* 4. buildModuleGraphFromCodeSkeletons 一站式派生
|
|
198
|
+
*
|
|
199
|
+
* Python import 解析规则:
|
|
200
|
+
* - 绝对模块(`import foo` / `from foo import x`):用 basename map(EC-6 简化策略)
|
|
201
|
+
* - 单点相对(`from . import utils` / `from . import a, b`):
|
|
202
|
+
* * 当 moduleSpecifier === '.':把每个 namedImport 名字 N 当作候选模块,
|
|
203
|
+
* 在当前包目录尝试解析 ./N.py 或 ./N/__init__.py
|
|
204
|
+
* * 多个 named import 都命中时,取第一个命中的(resolvedPath 是单值字段);
|
|
205
|
+
* - 双点相对(`from .. import x`):同理,往上一级查
|
|
206
|
+
* - 带模块名相对(`from .nn import Module`):解析 `.nn` 子模块
|
|
190
207
|
*/
|
|
191
|
-
async
|
|
208
|
+
async buildModuleGraph(projectRoot, _options) {
|
|
192
209
|
const resolvedRoot = path.resolve(projectRoot);
|
|
193
|
-
// 递归扫描所有 .py
|
|
210
|
+
// 递归扫描所有 .py 文件
|
|
194
211
|
const pyFiles = this.scanPyFiles(resolvedRoot);
|
|
195
|
-
// 构建模块名 →
|
|
212
|
+
// 构建模块名 → 相对路径映射(绝对 import 用)
|
|
196
213
|
const pyModuleMap = new Map();
|
|
197
|
-
|
|
198
|
-
|
|
214
|
+
const relPyFiles = [];
|
|
215
|
+
const relPySet = new Set();
|
|
216
|
+
for (const absF of pyFiles) {
|
|
217
|
+
const rel = path.relative(resolvedRoot, absF).split(path.sep).join('/');
|
|
218
|
+
relPyFiles.push(rel);
|
|
219
|
+
relPySet.add(rel);
|
|
220
|
+
pyModuleMap.set(path.basename(absF, '.py'), rel);
|
|
199
221
|
}
|
|
200
|
-
|
|
201
|
-
const
|
|
202
|
-
for (const
|
|
222
|
+
// 收集 CodeSkeleton(含推断的 resolvedPath),喂给 buildGraphFromCodeSkeletons
|
|
223
|
+
const codeSkeletons = new Map();
|
|
224
|
+
for (const absPath of pyFiles) {
|
|
225
|
+
const relFrom = path.relative(resolvedRoot, absPath).split(path.sep).join('/');
|
|
203
226
|
try {
|
|
204
|
-
const skeleton = await this.analyzeFile(
|
|
205
|
-
const
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
continue;
|
|
212
|
-
const resolvedPath = pyModuleMap.get(topModule);
|
|
213
|
-
if (resolvedPath) {
|
|
214
|
-
const relTo = path.relative(resolvedRoot, resolvedPath);
|
|
215
|
-
nodeSet.add(relTo);
|
|
216
|
-
rawEdges.push({ from: relFrom, to: relTo });
|
|
217
|
-
}
|
|
218
|
-
}
|
|
227
|
+
const skeleton = await this.analyzeFile(absPath);
|
|
228
|
+
const newImports = skeleton.imports.flatMap((imp) => this.resolvePythonImport(imp, relFrom, relPySet, pyModuleMap));
|
|
229
|
+
codeSkeletons.set(relFrom, {
|
|
230
|
+
...skeleton,
|
|
231
|
+
filePath: relFrom,
|
|
232
|
+
imports: newImports,
|
|
233
|
+
});
|
|
219
234
|
}
|
|
220
235
|
catch {
|
|
221
|
-
//
|
|
236
|
+
// WARN-2 修订:解析失败时不注入空 skeleton(loc:1 占位会污染 module 节点 + 跨语言统计)。
|
|
237
|
+
// 改为在 metadata 标 parseError,buildGraphFromCodeSkeletons 之前过滤掉。
|
|
238
|
+
// 仍保留 module 节点的最小占位(让 graph 可见该文件存在),但 imports/exports 必为空。
|
|
239
|
+
codeSkeletons.set(relFrom, {
|
|
240
|
+
filePath: relFrom,
|
|
241
|
+
language: 'python',
|
|
242
|
+
loc: 0,
|
|
243
|
+
exports: [],
|
|
244
|
+
imports: [],
|
|
245
|
+
hash: '0'.repeat(64),
|
|
246
|
+
analyzedAt: new Date().toISOString(),
|
|
247
|
+
parserUsed: 'tree-sitter',
|
|
248
|
+
metadata: { parseError: true },
|
|
249
|
+
});
|
|
222
250
|
}
|
|
223
251
|
}
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
connectedNodes.add(e.to);
|
|
252
|
+
// 兜底:scan 到的文件但 codeSkeletons 漏掉的(不应该发生),补一个空骨架
|
|
253
|
+
for (const rel of relPyFiles) {
|
|
254
|
+
if (!codeSkeletons.has(rel)) {
|
|
255
|
+
codeSkeletons.set(rel, {
|
|
256
|
+
filePath: rel,
|
|
257
|
+
language: 'python',
|
|
258
|
+
loc: 1,
|
|
259
|
+
exports: [],
|
|
260
|
+
imports: [],
|
|
261
|
+
hash: '0'.repeat(64),
|
|
262
|
+
analyzedAt: new Date().toISOString(),
|
|
263
|
+
parserUsed: 'tree-sitter',
|
|
264
|
+
});
|
|
265
|
+
}
|
|
239
266
|
}
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
267
|
+
// WARN-2:过滤掉 parseError 的 skeleton 不让它进 buildUnifiedGraph 派生 module 节点
|
|
268
|
+
// —— 但保留一条诊断日志会更好;当前为 silent 跳过(与现有 stderr noise budget 一致)。
|
|
269
|
+
const cleanSkeletons = new Map();
|
|
270
|
+
for (const [k, sk] of codeSkeletons) {
|
|
271
|
+
const md = sk.metadata;
|
|
272
|
+
if (md?.parseError)
|
|
273
|
+
continue;
|
|
274
|
+
cleanSkeletons.set(k, sk);
|
|
275
|
+
}
|
|
276
|
+
return buildModuleGraphFromCodeSkeletons(cleanSkeletons, resolvedRoot, 'python');
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* 解析单条 Python ImportReference 为 0..N 条带 resolvedPath 的 ImportReference。
|
|
280
|
+
*
|
|
281
|
+
* CRIT-4 v2:处理 dot-relative + namedImports 展开。当 specifier 为纯点号('.'/'..')时,
|
|
282
|
+
* 把 namedImports 每个名字 N 展开为候选 specifier `.N` / `..N`,用相对路径解析每个候选;
|
|
283
|
+
* 任一命中即派生一条 edge(resolvedPath 写回)。
|
|
284
|
+
*
|
|
285
|
+
* 返回 ImportReference 数组:
|
|
286
|
+
* - 命中 0 个候选:返回原 imp(不带 resolvedPath,下游 deriveImportEdges 跳过)
|
|
287
|
+
* - 命中 1 个:返回单元素数组(imp + resolvedPath)
|
|
288
|
+
* - 命中 N 个(仅 dot-relative + multi-named 才会发生):返回 N 元素数组,
|
|
289
|
+
* 每个元素是同一 imp 的副本但 resolvedPath 各异 + namedImports 收窄到对应名字
|
|
290
|
+
*/
|
|
291
|
+
resolvePythonImport(imp, fromRel, relPySet, pyModuleMap) {
|
|
292
|
+
const spec = imp.moduleSpecifier;
|
|
293
|
+
const fromDir = path.dirname(fromRel);
|
|
294
|
+
// 工具函数:从一个目录起始,解析 "moduleSegment[/subSegment...]" 为实际 .py 文件
|
|
295
|
+
// 返回相对项目根的路径,未命中返回 null
|
|
296
|
+
const tryResolveAtDir = (baseDir, segments) => {
|
|
297
|
+
const joinedSegs = segments.join('/');
|
|
298
|
+
const candidates = [
|
|
299
|
+
`${baseDir}/${joinedSegs}.py`,
|
|
300
|
+
`${baseDir}/${joinedSegs}/__init__.py`,
|
|
301
|
+
];
|
|
302
|
+
for (const c of candidates) {
|
|
303
|
+
// path.normalize 处理 './a/../b' 这类
|
|
304
|
+
const norm = path.posix.normalize(c.startsWith('/') ? c : `./${c}`).replace(/^\.\//, '');
|
|
305
|
+
if (relPySet.has(norm))
|
|
306
|
+
return norm;
|
|
307
|
+
}
|
|
308
|
+
return null;
|
|
257
309
|
};
|
|
310
|
+
// Case A: 纯点号 specifier('.', '..')—— 必须靠 namedImports 展开
|
|
311
|
+
if (/^\.+$/.test(spec)) {
|
|
312
|
+
const dots = spec.length;
|
|
313
|
+
// dots=1: 当前包;dots=2: 父包;以此类推
|
|
314
|
+
let baseDir = fromDir;
|
|
315
|
+
for (let i = 1; i < dots; i++) {
|
|
316
|
+
baseDir = path.dirname(baseDir) === '.' ? '' : path.dirname(baseDir);
|
|
317
|
+
}
|
|
318
|
+
// 如果没有 namedImports,无法展开 → 保留原 imp
|
|
319
|
+
const named = imp.namedImports ?? [];
|
|
320
|
+
if (named.length === 0)
|
|
321
|
+
return [imp];
|
|
322
|
+
const out = [];
|
|
323
|
+
for (const name of named) {
|
|
324
|
+
const resolved = tryResolveAtDir(baseDir || '.', [name]);
|
|
325
|
+
if (resolved && resolved !== fromRel) {
|
|
326
|
+
out.push({ ...imp, resolvedPath: resolved, namedImports: [name] });
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
return out.length > 0 ? out : [imp];
|
|
330
|
+
}
|
|
331
|
+
// Case B: dot-relative + 模块名('.foo' / '..foo.bar')
|
|
332
|
+
const dotRelMatch = /^(\.+)(.*)$/.exec(spec);
|
|
333
|
+
if (dotRelMatch && dotRelMatch[1].length >= 1 && dotRelMatch[2].length > 0) {
|
|
334
|
+
const dots = dotRelMatch[1].length;
|
|
335
|
+
const tail = dotRelMatch[2];
|
|
336
|
+
let baseDir = fromDir;
|
|
337
|
+
for (let i = 1; i < dots; i++) {
|
|
338
|
+
baseDir = path.dirname(baseDir) === '.' ? '' : path.dirname(baseDir);
|
|
339
|
+
}
|
|
340
|
+
const segs = tail.split('.');
|
|
341
|
+
const resolved = tryResolveAtDir(baseDir || '.', segs);
|
|
342
|
+
if (resolved && resolved !== fromRel) {
|
|
343
|
+
return [{ ...imp, resolvedPath: resolved }];
|
|
344
|
+
}
|
|
345
|
+
return [imp];
|
|
346
|
+
}
|
|
347
|
+
// Case C: 绝对 import — 用 basename map(保留原简化策略,EC-6 留给后续 Feature)
|
|
348
|
+
const topModule = spec.split('.')[0];
|
|
349
|
+
if (!topModule)
|
|
350
|
+
return [imp];
|
|
351
|
+
const resolvedRel = pyModuleMap.get(topModule);
|
|
352
|
+
if (resolvedRel && resolvedRel !== fromRel) {
|
|
353
|
+
return [{ ...imp, resolvedPath: resolvedRel }];
|
|
354
|
+
}
|
|
355
|
+
return [imp];
|
|
258
356
|
}
|
|
259
357
|
}
|
|
260
358
|
//# sourceMappingURL=python-adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"python-adapter.js","sourceRoot":"","sources":["../../src/adapters/python-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAW9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,eAAe,IAAI,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACxF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"python-adapter.js","sourceRoot":"","sources":["../../src/adapters/python-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { CodeSkeleton, Language } from '../models/code-skeleton.js';
|
|
2
|
-
import type {
|
|
3
|
-
import type { LanguageAdapter, AnalyzeFileOptions,
|
|
2
|
+
import type { ModuleGraph } from '../knowledge-graph/module-derivation.js';
|
|
3
|
+
import type { LanguageAdapter, AnalyzeFileOptions, ModuleGraphOptions, LanguageTerminology, TestPatterns } from './language-adapter.js';
|
|
4
4
|
import type { CommentRegion } from '../debt-scanner/types.js';
|
|
5
5
|
export declare class TsJsLanguageAdapter implements LanguageAdapter {
|
|
6
6
|
readonly id = "ts-js";
|
|
@@ -9,6 +9,12 @@ export declare class TsJsLanguageAdapter implements LanguageAdapter {
|
|
|
9
9
|
readonly defaultIgnoreDirs: ReadonlySet<string>;
|
|
10
10
|
/**
|
|
11
11
|
* AST 分析(委托 ast-analyzer.ts 的 analyzeFile)
|
|
12
|
+
*
|
|
13
|
+
* Feature 152 T-013/T-014 — 双路径 merge 逻辑:
|
|
14
|
+
* - 默认路径(extractCallSites=false):单路径 ts-morph,行为与原版完全一致
|
|
15
|
+
* - callSites 路径(extractCallSites=true):ts-morph 主路径 + tree-sitter callSites 覆盖
|
|
16
|
+
* EC-11:tree-sitter 仅贡献 callSites,不替换 exports/imports
|
|
17
|
+
* EC-1:tree-sitter 调用异常时降级为空 callSites,不抛异常
|
|
12
18
|
*/
|
|
13
19
|
analyzeFile(filePath: string, options?: AnalyzeFileOptions): Promise<CodeSkeleton>;
|
|
14
20
|
/**
|
|
@@ -16,10 +22,12 @@ export declare class TsJsLanguageAdapter implements LanguageAdapter {
|
|
|
16
22
|
*/
|
|
17
23
|
analyzeFallback(filePath: string): Promise<CodeSkeleton>;
|
|
18
24
|
/**
|
|
19
|
-
*
|
|
20
|
-
*
|
|
25
|
+
* 模块图构建(W1.4:委托 module-derivation.ts 的 buildModuleGraphForProject,
|
|
26
|
+
* 内部走 UnifiedGraph + deriveModuleGraph 派生路径,不再调用 dependency-cruiser)。
|
|
27
|
+
*
|
|
28
|
+
* options 字段名映射:configPath → tsConfigPath
|
|
21
29
|
*/
|
|
22
|
-
|
|
30
|
+
buildModuleGraph(projectRoot: string, options?: ModuleGraphOptions): Promise<ModuleGraph>;
|
|
23
31
|
/**
|
|
24
32
|
* TS/JS 语言术语映射
|
|
25
33
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ts-js-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/ts-js-adapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ts-js-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/ts-js-adapter.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAO9D,qBAAa,mBAAoB,YAAW,eAAe;IACzD,QAAQ,CAAC,EAAE,WAAW;IAEtB,QAAQ,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,CAAgC;IAKvE,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAErC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,CAM5C;IAEH;;;;;;;;OAQG;IACG,WAAW,CACf,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,YAAY,CAAC;IAsCxB;;OAEG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAI9D;;;;;OAKG;IACG,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,WAAW,CAAC;IAQvB;;OAEG;IACH,cAAc,IAAI,mBAAmB;IAWrC;;OAEG;IACH,eAAe,IAAI,YAAY;IAO/B;;;;OAIG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;CAsDlE"}
|