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.
Files changed (422) hide show
  1. package/README.md +1 -1
  2. package/dist/adapters/go-adapter.d.ts.map +1 -1
  3. package/dist/adapters/go-adapter.js +2 -0
  4. package/dist/adapters/go-adapter.js.map +1 -1
  5. package/dist/adapters/index.d.ts +1 -1
  6. package/dist/adapters/index.d.ts.map +1 -1
  7. package/dist/adapters/java-adapter.d.ts.map +1 -1
  8. package/dist/adapters/java-adapter.js +2 -0
  9. package/dist/adapters/java-adapter.js.map +1 -1
  10. package/dist/adapters/language-adapter.d.ts +47 -9
  11. package/dist/adapters/language-adapter.d.ts.map +1 -1
  12. package/dist/adapters/python-adapter.d.ts +34 -6
  13. package/dist/adapters/python-adapter.d.ts.map +1 -1
  14. package/dist/adapters/python-adapter.js +157 -59
  15. package/dist/adapters/python-adapter.js.map +1 -1
  16. package/dist/adapters/ts-js-adapter.d.ts +13 -5
  17. package/dist/adapters/ts-js-adapter.d.ts.map +1 -1
  18. package/dist/adapters/ts-js-adapter.js +55 -14
  19. package/dist/adapters/ts-js-adapter.js.map +1 -1
  20. package/dist/batch/batch-orchestrator.d.ts +30 -4
  21. package/dist/batch/batch-orchestrator.d.ts.map +1 -1
  22. package/dist/batch/batch-orchestrator.js +284 -7
  23. package/dist/batch/batch-orchestrator.js.map +1 -1
  24. package/dist/batch/delta-regenerator.d.ts +2 -2
  25. package/dist/batch/delta-regenerator.d.ts.map +1 -1
  26. package/dist/batch/delta-regenerator.js.map +1 -1
  27. package/dist/batch/module-grouper.d.ts +2 -2
  28. package/dist/batch/module-grouper.d.ts.map +1 -1
  29. package/dist/batch/module-grouper.js +1 -1
  30. package/dist/batch/module-grouper.js.map +1 -1
  31. package/dist/cli/commands/graph.js +1 -1
  32. package/dist/cli/commands/graph.js.map +1 -1
  33. package/dist/cli/commands/index.d.ts +8 -0
  34. package/dist/cli/commands/index.d.ts.map +1 -0
  35. package/dist/cli/commands/index.js +274 -0
  36. package/dist/cli/commands/index.js.map +1 -0
  37. package/dist/cli/commands/query.d.ts.map +1 -1
  38. package/dist/cli/commands/query.js +3 -1
  39. package/dist/cli/commands/query.js.map +1 -1
  40. package/dist/cli/index.js +9 -9
  41. package/dist/cli/index.js.map +1 -1
  42. package/dist/cli/utils/parse-args.d.ts +13 -1
  43. package/dist/cli/utils/parse-args.d.ts.map +1 -1
  44. package/dist/cli/utils/parse-args.js +79 -2
  45. package/dist/cli/utils/parse-args.js.map +1 -1
  46. package/dist/core/ast-analyzer.d.ts.map +1 -1
  47. package/dist/core/ast-analyzer.js +79 -5
  48. package/dist/core/ast-analyzer.js.map +1 -1
  49. package/dist/core/import-resolver.d.ts +90 -0
  50. package/dist/core/import-resolver.d.ts.map +1 -0
  51. package/dist/core/import-resolver.js +273 -0
  52. package/dist/core/import-resolver.js.map +1 -0
  53. package/dist/core/query-mappers/base-mapper.d.ts +13 -0
  54. package/dist/core/query-mappers/base-mapper.d.ts.map +1 -1
  55. package/dist/core/query-mappers/go-mapper.d.ts +68 -0
  56. package/dist/core/query-mappers/go-mapper.d.ts.map +1 -1
  57. package/dist/core/query-mappers/go-mapper.js +421 -0
  58. package/dist/core/query-mappers/go-mapper.js.map +1 -1
  59. package/dist/core/query-mappers/java-mapper.d.ts +196 -0
  60. package/dist/core/query-mappers/java-mapper.d.ts.map +1 -1
  61. package/dist/core/query-mappers/java-mapper.js +600 -0
  62. package/dist/core/query-mappers/java-mapper.js.map +1 -1
  63. package/dist/core/query-mappers/python-mapper.d.ts +55 -0
  64. package/dist/core/query-mappers/python-mapper.d.ts.map +1 -1
  65. package/dist/core/query-mappers/python-mapper.js +273 -0
  66. package/dist/core/query-mappers/python-mapper.js.map +1 -1
  67. package/dist/core/query-mappers/typescript-mapper.d.ts +102 -0
  68. package/dist/core/query-mappers/typescript-mapper.d.ts.map +1 -1
  69. package/dist/core/query-mappers/typescript-mapper.js +470 -0
  70. package/dist/core/query-mappers/typescript-mapper.js.map +1 -1
  71. package/dist/core/single-spec-orchestrator.d.ts.map +1 -1
  72. package/dist/core/single-spec-orchestrator.js +146 -9
  73. package/dist/core/single-spec-orchestrator.js.map +1 -1
  74. package/dist/core/tree-sitter-analyzer.d.ts +6 -0
  75. package/dist/core/tree-sitter-analyzer.d.ts.map +1 -1
  76. package/dist/core/tree-sitter-analyzer.js +33 -1
  77. package/dist/core/tree-sitter-analyzer.js.map +1 -1
  78. package/dist/core/tree-sitter-fallback.d.ts +7 -4
  79. package/dist/core/tree-sitter-fallback.d.ts.map +1 -1
  80. package/dist/core/tree-sitter-fallback.js +157 -12
  81. package/dist/core/tree-sitter-fallback.js.map +1 -1
  82. package/dist/extraction/extraction-types.d.ts +25 -25
  83. package/dist/generator/index-generator.d.ts +3 -3
  84. package/dist/generator/index-generator.d.ts.map +1 -1
  85. package/dist/generator/index-generator.js +1 -1
  86. package/dist/generator/index-generator.js.map +1 -1
  87. package/dist/graph/directory-graph.d.ts +14 -4
  88. package/dist/graph/directory-graph.d.ts.map +1 -1
  89. package/dist/graph/directory-graph.js +71 -128
  90. package/dist/graph/directory-graph.js.map +1 -1
  91. package/dist/graph/mermaid-renderer.d.ts +8 -5
  92. package/dist/graph/mermaid-renderer.d.ts.map +1 -1
  93. package/dist/graph/mermaid-renderer.js +3 -3
  94. package/dist/graph/mermaid-renderer.js.map +1 -1
  95. package/dist/graph/topological-sort.d.ts +13 -6
  96. package/dist/graph/topological-sort.d.ts.map +1 -1
  97. package/dist/graph/topological-sort.js +2 -2
  98. package/dist/graph/topological-sort.js.map +1 -1
  99. package/dist/knowledge-graph/call-resolver.d.ts +64 -0
  100. package/dist/knowledge-graph/call-resolver.d.ts.map +1 -0
  101. package/dist/knowledge-graph/call-resolver.js +323 -0
  102. package/dist/knowledge-graph/call-resolver.js.map +1 -0
  103. package/dist/knowledge-graph/import-resolver.d.ts +114 -0
  104. package/dist/knowledge-graph/import-resolver.d.ts.map +1 -0
  105. package/dist/knowledge-graph/import-resolver.js +537 -0
  106. package/dist/knowledge-graph/import-resolver.js.map +1 -0
  107. package/dist/knowledge-graph/incremental.d.ts +110 -0
  108. package/dist/knowledge-graph/incremental.d.ts.map +1 -0
  109. package/dist/knowledge-graph/incremental.js +410 -0
  110. package/dist/knowledge-graph/incremental.js.map +1 -0
  111. package/dist/knowledge-graph/index.d.ts +74 -0
  112. package/dist/knowledge-graph/index.d.ts.map +1 -0
  113. package/dist/knowledge-graph/index.js +156 -0
  114. package/dist/knowledge-graph/index.js.map +1 -0
  115. package/dist/knowledge-graph/module-derivation.d.ts +238 -0
  116. package/dist/knowledge-graph/module-derivation.d.ts.map +1 -0
  117. package/dist/knowledge-graph/module-derivation.js +418 -0
  118. package/dist/knowledge-graph/module-derivation.js.map +1 -0
  119. package/dist/knowledge-graph/persistence.d.ts +270 -0
  120. package/dist/knowledge-graph/persistence.d.ts.map +1 -0
  121. package/dist/knowledge-graph/persistence.js +226 -0
  122. package/dist/knowledge-graph/persistence.js.map +1 -0
  123. package/dist/knowledge-graph/query-helpers.d.ts +164 -0
  124. package/dist/knowledge-graph/query-helpers.d.ts.map +1 -0
  125. package/dist/knowledge-graph/query-helpers.js +394 -0
  126. package/dist/knowledge-graph/query-helpers.js.map +1 -0
  127. package/dist/knowledge-graph/unified-graph.d.ts +310 -0
  128. package/dist/knowledge-graph/unified-graph.d.ts.map +1 -0
  129. package/dist/knowledge-graph/unified-graph.js +182 -0
  130. package/dist/knowledge-graph/unified-graph.js.map +1 -0
  131. package/dist/mcp/agent-context-tools.d.ts +104 -0
  132. package/dist/mcp/agent-context-tools.d.ts.map +1 -0
  133. package/dist/mcp/agent-context-tools.js +854 -0
  134. package/dist/mcp/agent-context-tools.js.map +1 -0
  135. package/dist/mcp/graph-tools.d.ts +20 -0
  136. package/dist/mcp/graph-tools.d.ts.map +1 -1
  137. package/dist/mcp/graph-tools.js +71 -11
  138. package/dist/mcp/graph-tools.js.map +1 -1
  139. package/dist/mcp/lib/response-helpers.d.ts +67 -0
  140. package/dist/mcp/lib/response-helpers.d.ts.map +1 -0
  141. package/dist/mcp/lib/response-helpers.js +103 -0
  142. package/dist/mcp/lib/response-helpers.js.map +1 -0
  143. package/dist/mcp/server.d.ts +3 -1
  144. package/dist/mcp/server.d.ts.map +1 -1
  145. package/dist/mcp/server.js +9 -10
  146. package/dist/mcp/server.js.map +1 -1
  147. package/dist/models/call-site.d.ts +68 -0
  148. package/dist/models/call-site.d.ts.map +1 -0
  149. package/dist/models/call-site.js +60 -0
  150. package/dist/models/call-site.js.map +1 -0
  151. package/dist/models/code-skeleton.d.ts +78 -6
  152. package/dist/models/code-skeleton.d.ts.map +1 -1
  153. package/dist/models/code-skeleton.js +29 -0
  154. package/dist/models/code-skeleton.js.map +1 -1
  155. package/dist/models/drift-item.d.ts +4 -4
  156. package/dist/models/module-spec.d.ts +155 -94
  157. package/dist/models/module-spec.d.ts.map +1 -1
  158. package/dist/panoramic/adr-decision-pipeline.d.ts +53 -0
  159. package/dist/panoramic/adr-decision-pipeline.d.ts.map +1 -0
  160. package/dist/panoramic/adr-decision-pipeline.js +685 -0
  161. package/dist/panoramic/adr-decision-pipeline.js.map +1 -0
  162. package/dist/panoramic/api-surface-generator.d.ts +56 -0
  163. package/dist/panoramic/api-surface-generator.d.ts.map +1 -0
  164. package/dist/panoramic/api-surface-generator.js +1671 -0
  165. package/dist/panoramic/api-surface-generator.js.map +1 -0
  166. package/dist/panoramic/architecture-ir-builder.d.ts +19 -0
  167. package/dist/panoramic/architecture-ir-builder.d.ts.map +1 -0
  168. package/dist/panoramic/architecture-ir-builder.js +561 -0
  169. package/dist/panoramic/architecture-ir-builder.js.map +1 -0
  170. package/dist/panoramic/architecture-ir-exporters.d.ts +7 -0
  171. package/dist/panoramic/architecture-ir-exporters.d.ts.map +1 -0
  172. package/dist/panoramic/architecture-ir-exporters.js +183 -0
  173. package/dist/panoramic/architecture-ir-exporters.js.map +1 -0
  174. package/dist/panoramic/architecture-ir-generator.d.ts +36 -0
  175. package/dist/panoramic/architecture-ir-generator.d.ts.map +1 -0
  176. package/dist/panoramic/architecture-ir-generator.js +51 -0
  177. package/dist/panoramic/architecture-ir-generator.js.map +1 -0
  178. package/dist/panoramic/architecture-ir-mermaid-adapter.d.ts +6 -0
  179. package/dist/panoramic/architecture-ir-mermaid-adapter.d.ts.map +1 -0
  180. package/dist/panoramic/architecture-ir-mermaid-adapter.js +98 -0
  181. package/dist/panoramic/architecture-ir-mermaid-adapter.js.map +1 -0
  182. package/dist/panoramic/architecture-ir-model.d.ts +87 -0
  183. package/dist/panoramic/architecture-ir-model.d.ts.map +1 -0
  184. package/dist/panoramic/architecture-ir-model.js +20 -0
  185. package/dist/panoramic/architecture-ir-model.js.map +1 -0
  186. package/dist/panoramic/architecture-narrative.d.ts +68 -0
  187. package/dist/panoramic/architecture-narrative.d.ts.map +1 -0
  188. package/dist/panoramic/architecture-narrative.js +401 -0
  189. package/dist/panoramic/architecture-narrative.js.map +1 -0
  190. package/dist/panoramic/architecture-overview-generator.d.ts +31 -0
  191. package/dist/panoramic/architecture-overview-generator.d.ts.map +1 -0
  192. package/dist/panoramic/architecture-overview-generator.js +454 -0
  193. package/dist/panoramic/architecture-overview-generator.js.map +1 -0
  194. package/dist/panoramic/architecture-overview-model.d.ts +77 -0
  195. package/dist/panoramic/architecture-overview-model.d.ts.map +1 -0
  196. package/dist/panoramic/architecture-overview-model.js +31 -0
  197. package/dist/panoramic/architecture-overview-model.js.map +1 -0
  198. package/dist/panoramic/batch-project-docs.d.ts.map +1 -1
  199. package/dist/panoramic/batch-project-docs.js +4 -2
  200. package/dist/panoramic/batch-project-docs.js.map +1 -1
  201. package/dist/panoramic/builders/component-view-builder.d.ts +25 -1
  202. package/dist/panoramic/builders/component-view-builder.d.ts.map +1 -1
  203. package/dist/panoramic/builders/component-view-builder.js +83 -3
  204. package/dist/panoramic/builders/component-view-builder.js.map +1 -1
  205. package/dist/panoramic/builders/doc-graph-builder.d.ts +2 -2
  206. package/dist/panoramic/builders/doc-graph-builder.d.ts.map +1 -1
  207. package/dist/panoramic/builders/doc-graph-builder.js.map +1 -1
  208. package/dist/panoramic/component-view-builder.d.ts +17 -0
  209. package/dist/panoramic/component-view-builder.d.ts.map +1 -0
  210. package/dist/panoramic/component-view-builder.js +652 -0
  211. package/dist/panoramic/component-view-builder.js.map +1 -0
  212. package/dist/panoramic/component-view-model.d.ts +127 -0
  213. package/dist/panoramic/component-view-model.d.ts.map +1 -0
  214. package/dist/panoramic/component-view-model.js +65 -0
  215. package/dist/panoramic/component-view-model.js.map +1 -0
  216. package/dist/panoramic/config-reference-generator.d.ts +78 -0
  217. package/dist/panoramic/config-reference-generator.d.ts.map +1 -0
  218. package/dist/panoramic/config-reference-generator.js +199 -0
  219. package/dist/panoramic/config-reference-generator.js.map +1 -0
  220. package/dist/panoramic/coverage-auditor.d.ts +95 -0
  221. package/dist/panoramic/coverage-auditor.d.ts.map +1 -0
  222. package/dist/panoramic/coverage-auditor.js +290 -0
  223. package/dist/panoramic/coverage-auditor.js.map +1 -0
  224. package/dist/panoramic/cross-package-analyzer.d.ts +112 -0
  225. package/dist/panoramic/cross-package-analyzer.d.ts.map +1 -0
  226. package/dist/panoramic/cross-package-analyzer.js +258 -0
  227. package/dist/panoramic/cross-package-analyzer.js.map +1 -0
  228. package/dist/panoramic/data-model-generator.d.ts +528 -0
  229. package/dist/panoramic/data-model-generator.d.ts.map +1 -0
  230. package/dist/panoramic/data-model-generator.js +647 -0
  231. package/dist/panoramic/data-model-generator.js.map +1 -0
  232. package/dist/panoramic/doc-graph-builder.d.ts +80 -0
  233. package/dist/panoramic/doc-graph-builder.d.ts.map +1 -0
  234. package/dist/panoramic/doc-graph-builder.js +352 -0
  235. package/dist/panoramic/doc-graph-builder.js.map +1 -0
  236. package/dist/panoramic/docs-bundle-manifest-reader.d.ts +26 -0
  237. package/dist/panoramic/docs-bundle-manifest-reader.d.ts.map +1 -0
  238. package/dist/panoramic/docs-bundle-manifest-reader.js +106 -0
  239. package/dist/panoramic/docs-bundle-manifest-reader.js.map +1 -0
  240. package/dist/panoramic/docs-bundle-orchestrator.d.ts +14 -0
  241. package/dist/panoramic/docs-bundle-orchestrator.d.ts.map +1 -0
  242. package/dist/panoramic/docs-bundle-orchestrator.js +538 -0
  243. package/dist/panoramic/docs-bundle-orchestrator.js.map +1 -0
  244. package/dist/panoramic/docs-bundle-profiles.d.ts +4 -0
  245. package/dist/panoramic/docs-bundle-profiles.d.ts.map +1 -0
  246. package/dist/panoramic/docs-bundle-profiles.js +82 -0
  247. package/dist/panoramic/docs-bundle-profiles.js.map +1 -0
  248. package/dist/panoramic/docs-bundle-types.d.ts +94 -0
  249. package/dist/panoramic/docs-bundle-types.d.ts.map +1 -0
  250. package/dist/panoramic/docs-bundle-types.js +10 -0
  251. package/dist/panoramic/docs-bundle-types.js.map +1 -0
  252. package/dist/panoramic/docs-quality-evaluator.d.ts +31 -0
  253. package/dist/panoramic/docs-quality-evaluator.d.ts.map +1 -0
  254. package/dist/panoramic/docs-quality-evaluator.js +941 -0
  255. package/dist/panoramic/docs-quality-evaluator.js.map +1 -0
  256. package/dist/panoramic/docs-quality-model.d.ts +125 -0
  257. package/dist/panoramic/docs-quality-model.d.ts.map +1 -0
  258. package/dist/panoramic/docs-quality-model.js +166 -0
  259. package/dist/panoramic/docs-quality-model.js.map +1 -0
  260. package/dist/panoramic/dynamic-scenarios-builder.d.ts +18 -0
  261. package/dist/panoramic/dynamic-scenarios-builder.d.ts.map +1 -0
  262. package/dist/panoramic/dynamic-scenarios-builder.js +316 -0
  263. package/dist/panoramic/dynamic-scenarios-builder.js.map +1 -0
  264. package/dist/panoramic/event-surface-generator.d.ts +52 -0
  265. package/dist/panoramic/event-surface-generator.d.ts.map +1 -0
  266. package/dist/panoramic/event-surface-generator.js +507 -0
  267. package/dist/panoramic/event-surface-generator.js.map +1 -0
  268. package/dist/panoramic/generator-registry.d.ts +1 -1
  269. package/dist/panoramic/generator-registry.d.ts.map +1 -1
  270. package/dist/panoramic/generator-registry.js +5 -2
  271. package/dist/panoramic/generator-registry.js.map +1 -1
  272. package/dist/panoramic/generators/cross-package-analyzer.d.ts +5 -5
  273. package/dist/panoramic/generators/cross-package-analyzer.d.ts.map +1 -1
  274. package/dist/panoramic/generators/cross-package-analyzer.js +1 -1
  275. package/dist/panoramic/generators/cross-package-analyzer.js.map +1 -1
  276. package/dist/panoramic/generators/data-model-generator.d.ts +27 -27
  277. package/dist/panoramic/graph/confidence-mapper.d.ts +18 -0
  278. package/dist/panoramic/graph/confidence-mapper.d.ts.map +1 -1
  279. package/dist/panoramic/graph/confidence-mapper.js +26 -0
  280. package/dist/panoramic/graph/confidence-mapper.js.map +1 -1
  281. package/dist/panoramic/graph/graph-builder.d.ts.map +1 -1
  282. package/dist/panoramic/graph/graph-builder.js +78 -0
  283. package/dist/panoramic/graph/graph-builder.js.map +1 -1
  284. package/dist/panoramic/graph/graph-paths.d.ts +8 -0
  285. package/dist/panoramic/graph/graph-paths.d.ts.map +1 -1
  286. package/dist/panoramic/graph/graph-paths.js +10 -0
  287. package/dist/panoramic/graph/graph-paths.js.map +1 -1
  288. package/dist/panoramic/graph/graph-query.d.ts +33 -2
  289. package/dist/panoramic/graph/graph-query.d.ts.map +1 -1
  290. package/dist/panoramic/graph/graph-query.js +69 -19
  291. package/dist/panoramic/graph/graph-query.js.map +1 -1
  292. package/dist/panoramic/graph/graph-types.d.ts +32 -3
  293. package/dist/panoramic/graph/graph-types.d.ts.map +1 -1
  294. package/dist/panoramic/hyperedges/schema.d.ts +6 -6
  295. package/dist/panoramic/interface-surface-generator.d.ts +50 -0
  296. package/dist/panoramic/interface-surface-generator.d.ts.map +1 -0
  297. package/dist/panoramic/interface-surface-generator.js +388 -0
  298. package/dist/panoramic/interface-surface-generator.js.map +1 -0
  299. package/dist/panoramic/interfaces.d.ts +2 -2
  300. package/dist/panoramic/mock-readme-generator.d.ts +90 -0
  301. package/dist/panoramic/mock-readme-generator.d.ts.map +1 -0
  302. package/dist/panoramic/mock-readme-generator.js +111 -0
  303. package/dist/panoramic/mock-readme-generator.js.map +1 -0
  304. package/dist/panoramic/models/component-view-model.d.ts +1 -1
  305. package/dist/panoramic/models/component-view-model.d.ts.map +1 -1
  306. package/dist/panoramic/models/component-view-model.js.map +1 -1
  307. package/dist/panoramic/narrative-provenance-adapter.d.ts +8 -0
  308. package/dist/panoramic/narrative-provenance-adapter.d.ts.map +1 -0
  309. package/dist/panoramic/narrative-provenance-adapter.js +99 -0
  310. package/dist/panoramic/narrative-provenance-adapter.js.map +1 -0
  311. package/dist/panoramic/parser-registry.d.ts +1 -1
  312. package/dist/panoramic/parser-registry.js +1 -1
  313. package/dist/panoramic/parsers/types.d.ts +6 -6
  314. package/dist/panoramic/pattern-hints-generator.d.ts +28 -0
  315. package/dist/panoramic/pattern-hints-generator.d.ts.map +1 -0
  316. package/dist/panoramic/pattern-hints-generator.js +218 -0
  317. package/dist/panoramic/pattern-hints-generator.js.map +1 -0
  318. package/dist/panoramic/pattern-hints-model.d.ts +89 -0
  319. package/dist/panoramic/pattern-hints-model.d.ts.map +1 -0
  320. package/dist/panoramic/pattern-hints-model.js +61 -0
  321. package/dist/panoramic/pattern-hints-model.js.map +1 -0
  322. package/dist/panoramic/pattern-knowledge-base.d.ts +31 -0
  323. package/dist/panoramic/pattern-knowledge-base.d.ts.map +1 -0
  324. package/dist/panoramic/pattern-knowledge-base.js +407 -0
  325. package/dist/panoramic/pattern-knowledge-base.js.map +1 -0
  326. package/dist/panoramic/pipelines/coverage-auditor.d.ts.map +1 -1
  327. package/dist/panoramic/pipelines/coverage-auditor.js +4 -2
  328. package/dist/panoramic/pipelines/coverage-auditor.js.map +1 -1
  329. package/dist/panoramic/pipelines/docs-bundle-orchestrator.js +13 -6
  330. package/dist/panoramic/pipelines/docs-bundle-orchestrator.js.map +1 -1
  331. package/dist/panoramic/pipelines/product-ux-docs.d.ts +5 -0
  332. package/dist/panoramic/pipelines/product-ux-docs.d.ts.map +1 -1
  333. package/dist/panoramic/pipelines/product-ux-docs.js +34 -6
  334. package/dist/panoramic/pipelines/product-ux-docs.js.map +1 -1
  335. package/dist/panoramic/product-ux-docs.d.ts +104 -0
  336. package/dist/panoramic/product-ux-docs.d.ts.map +1 -0
  337. package/dist/panoramic/product-ux-docs.js +817 -0
  338. package/dist/panoramic/product-ux-docs.js.map +1 -0
  339. package/dist/panoramic/qa/__tests__/citation.test.d.ts +2 -0
  340. package/dist/panoramic/qa/__tests__/citation.test.d.ts.map +1 -0
  341. package/dist/panoramic/qa/__tests__/citation.test.js +193 -0
  342. package/dist/panoramic/qa/__tests__/citation.test.js.map +1 -0
  343. package/dist/panoramic/qa/__tests__/debt-context.test.d.ts +2 -0
  344. package/dist/panoramic/qa/__tests__/debt-context.test.d.ts.map +1 -0
  345. package/dist/panoramic/qa/__tests__/debt-context.test.js +154 -0
  346. package/dist/panoramic/qa/__tests__/debt-context.test.js.map +1 -0
  347. package/dist/panoramic/qa/__tests__/graph-retriever.test.d.ts +2 -0
  348. package/dist/panoramic/qa/__tests__/graph-retriever.test.d.ts.map +1 -0
  349. package/dist/panoramic/qa/__tests__/graph-retriever.test.js +148 -0
  350. package/dist/panoramic/qa/__tests__/graph-retriever.test.js.map +1 -0
  351. package/dist/panoramic/qa/__tests__/index.test.d.ts +2 -0
  352. package/dist/panoramic/qa/__tests__/index.test.d.ts.map +1 -0
  353. package/dist/panoramic/qa/__tests__/index.test.js +246 -0
  354. package/dist/panoramic/qa/__tests__/index.test.js.map +1 -0
  355. package/dist/panoramic/qa/__tests__/llm-caller.test.d.ts +2 -0
  356. package/dist/panoramic/qa/__tests__/llm-caller.test.d.ts.map +1 -0
  357. package/dist/panoramic/qa/__tests__/llm-caller.test.js +168 -0
  358. package/dist/panoramic/qa/__tests__/llm-caller.test.js.map +1 -0
  359. package/dist/panoramic/qa/__tests__/prompt-builder.test.d.ts +2 -0
  360. package/dist/panoramic/qa/__tests__/prompt-builder.test.d.ts.map +1 -0
  361. package/dist/panoramic/qa/__tests__/prompt-builder.test.js +150 -0
  362. package/dist/panoramic/qa/__tests__/prompt-builder.test.js.map +1 -0
  363. package/dist/panoramic/qa/__tests__/qa-integration.test.d.ts +2 -0
  364. package/dist/panoramic/qa/__tests__/qa-integration.test.d.ts.map +1 -0
  365. package/dist/panoramic/qa/__tests__/qa-integration.test.js +296 -0
  366. package/dist/panoramic/qa/__tests__/qa-integration.test.js.map +1 -0
  367. package/dist/panoramic/qa/__tests__/rag-reranker.test.d.ts +2 -0
  368. package/dist/panoramic/qa/__tests__/rag-reranker.test.d.ts.map +1 -0
  369. package/dist/panoramic/qa/__tests__/rag-reranker.test.js +136 -0
  370. package/dist/panoramic/qa/__tests__/rag-reranker.test.js.map +1 -0
  371. package/dist/panoramic/qa/index.d.ts.map +1 -1
  372. package/dist/panoramic/qa/index.js +10 -3
  373. package/dist/panoramic/qa/index.js.map +1 -1
  374. package/dist/panoramic/runtime-topology-generator.d.ts +77 -0
  375. package/dist/panoramic/runtime-topology-generator.d.ts.map +1 -0
  376. package/dist/panoramic/runtime-topology-generator.js +676 -0
  377. package/dist/panoramic/runtime-topology-generator.js.map +1 -0
  378. package/dist/panoramic/runtime-topology-model.d.ts +145 -0
  379. package/dist/panoramic/runtime-topology-model.d.ts.map +1 -0
  380. package/dist/panoramic/runtime-topology-model.js +300 -0
  381. package/dist/panoramic/runtime-topology-model.js.map +1 -0
  382. package/dist/panoramic/troubleshooting-generator.d.ts +51 -0
  383. package/dist/panoramic/troubleshooting-generator.d.ts.map +1 -0
  384. package/dist/panoramic/troubleshooting-generator.js +451 -0
  385. package/dist/panoramic/troubleshooting-generator.js.map +1 -0
  386. package/dist/panoramic/utils/text-segmenter.d.ts +15 -0
  387. package/dist/panoramic/utils/text-segmenter.d.ts.map +1 -1
  388. package/dist/panoramic/utils/text-segmenter.js +38 -0
  389. package/dist/panoramic/utils/text-segmenter.js.map +1 -1
  390. package/dist/panoramic/workspace-index-generator.d.ts +148 -0
  391. package/dist/panoramic/workspace-index-generator.d.ts.map +1 -0
  392. package/dist/panoramic/workspace-index-generator.js +497 -0
  393. package/dist/panoramic/workspace-index-generator.js.map +1 -0
  394. package/dist/runtime-bootstrap.d.ts +9 -0
  395. package/dist/runtime-bootstrap.d.ts.map +1 -0
  396. package/dist/runtime-bootstrap.js +33 -0
  397. package/dist/runtime-bootstrap.js.map +1 -0
  398. package/dist/utils/file-scanner.js +1 -1
  399. package/dist/utils/file-scanner.js.map +1 -1
  400. package/package.json +12 -2
  401. package/plugins/spec-driver/.claude-plugin/plugin.json +1 -1
  402. package/plugins/spec-driver/README.md +18 -1
  403. package/plugins/spec-driver/agents/implement.md +20 -1
  404. package/plugins/spec-driver/agents/plan.md +20 -1
  405. package/plugins/spec-driver/agents/quality-review.md +20 -1
  406. package/plugins/spec-driver/agents/spec-review.md +20 -1
  407. package/plugins/spec-driver/agents/verify.md +20 -1
  408. package/plugins/spec-driver/docs/customization.md +134 -0
  409. package/plugins/spec-driver/docs/spectra-mcp-integration.md +165 -0
  410. package/plugins/spec-driver/lib/preference-rules.mjs +96 -0
  411. package/plugins/spec-driver/scripts/postinstall.sh +1 -1
  412. package/plugins/spec-driver/scripts/sync-preference-rules.mjs +148 -0
  413. package/plugins/spec-driver/skills/spec-driver-feature/SKILL.md +10 -0
  414. package/plugins/spec-driver/skills/spec-driver-fix/SKILL.md +10 -0
  415. package/plugins/spec-driver/skills/spec-driver-implement/SKILL.md +10 -0
  416. package/plugins/spec-driver/skills/spec-driver-refactor/SKILL.md +10 -0
  417. package/plugins/spec-driver/skills/spec-driver-story/SKILL.md +10 -0
  418. package/plugins/spec-driver/templates/preference-rules.md +39 -0
  419. package/plugins/spectra/.claude-plugin/plugin.json +1 -1
  420. package/plugins/spectra/README.md +48 -1
  421. package/plugins/spectra/hooks/post-commit.sh +40 -0
  422. package/templates/product-overview.hbs +1 -1
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  <!-- spec-driver:section:badges -->
4
4
  ![License](https://img.shields.io/badge/license-MIT-blue.svg)
5
5
  ![npm version](https://img.shields.io/npm/v/spectra-cli.svg)
6
- ![Version](https://img.shields.io/badge/version-4.1.1-green)
6
+ ![Version](https://img.shields.io/badge/version-4.2.0-green)
7
7
  ![TypeScript](https://img.shields.io/badge/TypeScript-5.x-3178C6)
8
8
  ![Node.js](https://img.shields.io/badge/Node.js-20.x+-339933)
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;IAOxB;;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"}
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;SACxC,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"}
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"}
@@ -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 { DependencyGraphOptions } from './language-adapter.js';
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,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAGpE,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
+ {"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;IAOxB;;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"}
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;SACxC,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
+ {"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 { DependencyGraph } from '../models/dependency-graph.js';
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 DependencyGraphOptions {
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 DependencyGraph
140
+ * @returns ModuleGraph(UnifiedGraph 派生视图)
103
141
  */
104
- buildDependencyGraph?(projectRoot: string, options?: DependencyGraphOptions): Promise<DependencyGraph>;
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;;;;GAIG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,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;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,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;;;;;;;OAOG;IACH,oBAAoB,CAAC,CACnB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,eAAe,CAAC,CAAC;IAE5B;;;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
+ {"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, DependencyGraphOptions, LanguageTerminology, TestPatterns } from './language-adapter.js';
4
- import type { DependencyGraph } from '../models/dependency-graph.js';
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` 与 `buildDependencyGraph` 共用,避免 DRY 违反。
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
- * 扫描所有 .py 文件,解析 import 语句,仅对本地模块构建有向边
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
- buildDependencyGraph(projectRoot: string, _options?: DependencyGraphOptions): Promise<DependencyGraph>;
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,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,YAAY,EACb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,eAAe,EAA6B,MAAM,+BAA+B,CAAC;AAIhG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,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;IAOxB;;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;;;OAGG;IACG,oBAAoB,CACxB,WAAW,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,sBAAsB,GAChC,OAAO,CAAC,eAAe,CAAC;CA2E5B"}
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` 与 `buildDependencyGraph` 共用,避免 DRY 违反。
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
- * 扫描所有 .py 文件,解析 import 语句,仅对本地模块构建有向边
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 buildDependencyGraph(projectRoot, _options) {
208
+ async buildModuleGraph(projectRoot, _options) {
192
209
  const resolvedRoot = path.resolve(projectRoot);
193
- // 递归扫描所有 .py 文件,排除语言生态常见忽略目录
210
+ // 递归扫描所有 .py 文件
194
211
  const pyFiles = this.scanPyFiles(resolvedRoot);
195
- // 构建模块名 → 绝对路径映射(basename 不含扩展名)
212
+ // 构建模块名 → 相对路径映射(绝对 import 用)
196
213
  const pyModuleMap = new Map();
197
- for (const f of pyFiles) {
198
- pyModuleMap.set(path.basename(f, '.py'), f);
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
- const nodeSet = new Set();
201
- const rawEdges = [];
202
- for (const filePath of pyFiles) {
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(filePath);
205
- const relFrom = path.relative(resolvedRoot, filePath);
206
- nodeSet.add(relFrom);
207
- for (const imp of skeleton.imports) {
208
- // 取模块路径的顶层包名(如 parser.submodule → parser)
209
- const topModule = imp.moduleSpecifier.replace(/^\.+/, '').split('.')[0];
210
- if (!topModule)
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
- const edges = rawEdges.map(e => ({
225
- from: e.from,
226
- to: e.to,
227
- isCircular: false,
228
- importType: 'static',
229
- }));
230
- // O(n) 单次遍历计算度数(避免 O(n·m) 的 3 次数组遍历)
231
- const inDegreeMap = new Map();
232
- const outDegreeMap = new Map();
233
- const connectedNodes = new Set();
234
- for (const e of rawEdges) {
235
- inDegreeMap.set(e.to, (inDegreeMap.get(e.to) ?? 0) + 1);
236
- outDegreeMap.set(e.from, (outDegreeMap.get(e.from) ?? 0) + 1);
237
- connectedNodes.add(e.from);
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
- const modules = [...nodeSet].map(source => ({
241
- source,
242
- isOrphan: !connectedNodes.has(source),
243
- inDegree: inDegreeMap.get(source) ?? 0,
244
- outDegree: outDegreeMap.get(source) ?? 0,
245
- level: 0,
246
- }));
247
- return {
248
- projectRoot: resolvedRoot,
249
- modules,
250
- edges,
251
- topologicalOrder: modules.map(m => m.source),
252
- sccs: [],
253
- totalModules: modules.length,
254
- totalEdges: edges.length,
255
- analyzedAt: new Date().toISOString(),
256
- mermaidSource: '',
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":"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"}
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 { DependencyGraph } from '../models/dependency-graph.js';
3
- import type { LanguageAdapter, AnalyzeFileOptions, DependencyGraphOptions, LanguageTerminology, TestPatterns } from './language-adapter.js';
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
- * 依赖图构建(委托 dependency-graph.ts 的 buildGraph)
20
- * 进行 options 字段名映射:configPath tsConfigPath
25
+ * 模块图构建(W1.4:委托 module-derivation.ts 的 buildModuleGraphForProject,
26
+ * 内部走 UnifiedGraph + deriveModuleGraph 派生路径,不再调用 dependency-cruiser)。
27
+ *
28
+ * options 字段名映射:configPath → tsConfigPath
21
29
  */
22
- buildDependencyGraph(projectRoot: string, options?: DependencyGraphOptions): Promise<DependencyGraph>;
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":"AASA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,YAAY,EACb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAM9D,qBAAa,mBAAoB,YAAW,eAAe;IACzD,QAAQ,CAAC,EAAE,WAAW;IAEtB,QAAQ,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,CAAgC;IAEvE,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAErC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,CAM5C;IAEH;;OAEG;IACG,WAAW,CACf,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,YAAY,CAAC;IAIxB;;OAEG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAI9D;;;OAGG;IACG,oBAAoB,CACxB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,eAAe,CAAC;IAQ3B;;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;CA0DlE"}
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"}