@mcp-graph-workflow/mcp-graph 5.16.0 → 5.18.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 (351) hide show
  1. package/dist/api/router.d.ts.map +1 -1
  2. package/dist/api/router.js +2 -0
  3. package/dist/api/router.js.map +1 -1
  4. package/dist/api/routes/translation.d.ts +8 -0
  5. package/dist/api/routes/translation.d.ts.map +1 -0
  6. package/dist/api/routes/translation.js +174 -0
  7. package/dist/api/routes/translation.js.map +1 -0
  8. package/dist/cli/commands/import-cmd.d.ts.map +1 -1
  9. package/dist/cli/commands/import-cmd.js +2 -0
  10. package/dist/cli/commands/import-cmd.js.map +1 -1
  11. package/dist/core/analyzer/definition-of-ready.d.ts.map +1 -1
  12. package/dist/core/analyzer/definition-of-ready.js +12 -7
  13. package/dist/core/analyzer/definition-of-ready.js.map +1 -1
  14. package/dist/core/analyzer/risk-assessment.d.ts.map +1 -1
  15. package/dist/core/analyzer/risk-assessment.js +2 -0
  16. package/dist/core/analyzer/risk-assessment.js.map +1 -1
  17. package/dist/core/analyzer/scope-analyzer.d.ts.map +1 -1
  18. package/dist/core/analyzer/scope-analyzer.js +6 -3
  19. package/dist/core/analyzer/scope-analyzer.js.map +1 -1
  20. package/dist/core/config/ai-memory-generator.js +3 -3
  21. package/dist/core/context/bm25-compressor.d.ts.map +1 -1
  22. package/dist/core/context/bm25-compressor.js +5 -3
  23. package/dist/core/context/bm25-compressor.js.map +1 -1
  24. package/dist/core/context/compact-context.d.ts +2 -0
  25. package/dist/core/context/compact-context.d.ts.map +1 -1
  26. package/dist/core/context/compact-context.js +12 -12
  27. package/dist/core/context/compact-context.js.map +1 -1
  28. package/dist/core/designer/coupling-analyzer.d.ts.map +1 -1
  29. package/dist/core/designer/coupling-analyzer.js +2 -1
  30. package/dist/core/designer/coupling-analyzer.js.map +1 -1
  31. package/dist/core/events/event-types.d.ts +32 -1
  32. package/dist/core/events/event-types.d.ts.map +1 -1
  33. package/dist/core/handoff/delivery-checklist.d.ts.map +1 -1
  34. package/dist/core/handoff/delivery-checklist.js +6 -6
  35. package/dist/core/handoff/delivery-checklist.js.map +1 -1
  36. package/dist/core/implementer/sprint-progress.d.ts.map +1 -1
  37. package/dist/core/implementer/sprint-progress.js +3 -1
  38. package/dist/core/implementer/sprint-progress.js.map +1 -1
  39. package/dist/core/importer/prd-to-graph.d.ts.map +1 -1
  40. package/dist/core/importer/prd-to-graph.js +18 -6
  41. package/dist/core/importer/prd-to-graph.js.map +1 -1
  42. package/dist/core/insights/skill-recommender.d.ts.map +1 -1
  43. package/dist/core/insights/skill-recommender.js +3 -0
  44. package/dist/core/insights/skill-recommender.js.map +1 -1
  45. package/dist/core/listener/backlog-health.d.ts.map +1 -1
  46. package/dist/core/listener/backlog-health.js +3 -1
  47. package/dist/core/listener/backlog-health.js.map +1 -1
  48. package/dist/core/listener/feedback-readiness.d.ts.map +1 -1
  49. package/dist/core/listener/feedback-readiness.js +4 -5
  50. package/dist/core/listener/feedback-readiness.js.map +1 -1
  51. package/dist/core/lsp/lsp-bridge.d.ts +12 -2
  52. package/dist/core/lsp/lsp-bridge.d.ts.map +1 -1
  53. package/dist/core/lsp/lsp-bridge.js +139 -3
  54. package/dist/core/lsp/lsp-bridge.js.map +1 -1
  55. package/dist/core/lsp/lsp-edit-applier.d.ts +23 -0
  56. package/dist/core/lsp/lsp-edit-applier.d.ts.map +1 -0
  57. package/dist/core/lsp/lsp-edit-applier.js +204 -0
  58. package/dist/core/lsp/lsp-edit-applier.js.map +1 -0
  59. package/dist/core/lsp/lsp-server-manager.d.ts.map +1 -1
  60. package/dist/core/lsp/lsp-server-manager.js +18 -0
  61. package/dist/core/lsp/lsp-server-manager.js.map +1 -1
  62. package/dist/core/lsp/lsp-types.d.ts +35 -0
  63. package/dist/core/lsp/lsp-types.d.ts.map +1 -1
  64. package/dist/core/lsp/lsp-types.js +20 -0
  65. package/dist/core/lsp/lsp-types.js.map +1 -1
  66. package/dist/core/memory/memory-reader.d.ts.map +1 -1
  67. package/dist/core/memory/memory-reader.js +18 -3
  68. package/dist/core/memory/memory-reader.js.map +1 -1
  69. package/dist/core/parser/read-file.d.ts.map +1 -1
  70. package/dist/core/parser/read-file.js +11 -0
  71. package/dist/core/parser/read-file.js.map +1 -1
  72. package/dist/core/planner/decompose.d.ts.map +1 -1
  73. package/dist/core/planner/decompose.js +8 -3
  74. package/dist/core/planner/decompose.js.map +1 -1
  75. package/dist/core/planner/lifecycle-phase.d.ts +18 -0
  76. package/dist/core/planner/lifecycle-phase.d.ts.map +1 -1
  77. package/dist/core/planner/lifecycle-phase.js +112 -0
  78. package/dist/core/planner/lifecycle-phase.js.map +1 -1
  79. package/dist/core/planner/next-task.js +3 -3
  80. package/dist/core/planner/next-task.js.map +1 -1
  81. package/dist/core/planner/planning-report.js +3 -2
  82. package/dist/core/planner/planning-report.js.map +1 -1
  83. package/dist/core/planner/velocity.js +3 -0
  84. package/dist/core/planner/velocity.js.map +1 -1
  85. package/dist/core/rag/query-cache.js +2 -2
  86. package/dist/core/rag/query-cache.js.map +1 -1
  87. package/dist/core/rag/response-cache.d.ts +38 -0
  88. package/dist/core/rag/response-cache.d.ts.map +1 -0
  89. package/dist/core/rag/response-cache.js +84 -0
  90. package/dist/core/rag/response-cache.js.map +1 -0
  91. package/dist/core/rag/translation-indexer.d.ts +35 -0
  92. package/dist/core/rag/translation-indexer.d.ts.map +1 -0
  93. package/dist/core/rag/translation-indexer.js +70 -0
  94. package/dist/core/rag/translation-indexer.js.map +1 -0
  95. package/dist/core/reviewer/review-readiness.d.ts.map +1 -1
  96. package/dist/core/reviewer/review-readiness.js +4 -3
  97. package/dist/core/reviewer/review-readiness.js.map +1 -1
  98. package/dist/core/search/fts-search.d.ts.map +1 -1
  99. package/dist/core/search/fts-search.js +12 -6
  100. package/dist/core/search/fts-search.js.map +1 -1
  101. package/dist/core/siebel/wsdl-contract-validator.d.ts +25 -0
  102. package/dist/core/siebel/wsdl-contract-validator.d.ts.map +1 -0
  103. package/dist/core/siebel/wsdl-contract-validator.js +80 -0
  104. package/dist/core/siebel/wsdl-contract-validator.js.map +1 -0
  105. package/dist/core/siebel/wsdl-correlation.d.ts.map +1 -1
  106. package/dist/core/siebel/wsdl-correlation.js +2 -13
  107. package/dist/core/siebel/wsdl-correlation.js.map +1 -1
  108. package/dist/core/siebel/wsdl-doc-generator.d.ts +10 -0
  109. package/dist/core/siebel/wsdl-doc-generator.d.ts.map +1 -0
  110. package/dist/core/siebel/wsdl-doc-generator.js +95 -0
  111. package/dist/core/siebel/wsdl-doc-generator.js.map +1 -0
  112. package/dist/core/store/knowledge-store.d.ts +1 -0
  113. package/dist/core/store/knowledge-store.d.ts.map +1 -1
  114. package/dist/core/store/knowledge-store.js +28 -13
  115. package/dist/core/store/knowledge-store.js.map +1 -1
  116. package/dist/core/store/migrations.d.ts.map +1 -1
  117. package/dist/core/store/migrations.js +97 -0
  118. package/dist/core/store/migrations.js.map +1 -1
  119. package/dist/core/store/path-resolver.d.ts.map +1 -1
  120. package/dist/core/store/path-resolver.js +8 -3
  121. package/dist/core/store/path-resolver.js.map +1 -1
  122. package/dist/core/store/sqlite-store.d.ts.map +1 -1
  123. package/dist/core/store/sqlite-store.js +37 -12
  124. package/dist/core/store/sqlite-store.js.map +1 -1
  125. package/dist/core/store/store-manager.d.ts.map +1 -1
  126. package/dist/core/store/store-manager.js +3 -1
  127. package/dist/core/store/store-manager.js.map +1 -1
  128. package/dist/core/store/tool-call-log.d.ts +26 -0
  129. package/dist/core/store/tool-call-log.d.ts.map +1 -0
  130. package/dist/core/store/tool-call-log.js +70 -0
  131. package/dist/core/store/tool-call-log.js.map +1 -0
  132. package/dist/core/translation/confidence/ambiguity-detector.d.ts +18 -0
  133. package/dist/core/translation/confidence/ambiguity-detector.d.ts.map +1 -0
  134. package/dist/core/translation/confidence/ambiguity-detector.js +80 -0
  135. package/dist/core/translation/confidence/ambiguity-detector.js.map +1 -0
  136. package/dist/core/translation/confidence/equivalence-scorer.d.ts +22 -0
  137. package/dist/core/translation/confidence/equivalence-scorer.d.ts.map +1 -0
  138. package/dist/core/translation/confidence/equivalence-scorer.js +72 -0
  139. package/dist/core/translation/confidence/equivalence-scorer.js.map +1 -0
  140. package/dist/core/translation/generators/generator-adapter.d.ts +22 -0
  141. package/dist/core/translation/generators/generator-adapter.d.ts.map +1 -0
  142. package/dist/core/translation/generators/generator-adapter.js +6 -0
  143. package/dist/core/translation/generators/generator-adapter.js.map +1 -0
  144. package/dist/core/translation/generators/python-generator.d.ts +15 -0
  145. package/dist/core/translation/generators/python-generator.d.ts.map +1 -0
  146. package/dist/core/translation/generators/python-generator.js +74 -0
  147. package/dist/core/translation/generators/python-generator.js.map +1 -0
  148. package/dist/core/translation/generators/ts-generator.d.ts +14 -0
  149. package/dist/core/translation/generators/ts-generator.d.ts.map +1 -0
  150. package/dist/core/translation/generators/ts-generator.js +56 -0
  151. package/dist/core/translation/generators/ts-generator.js.map +1 -0
  152. package/dist/core/translation/language-detect.d.ts +12 -0
  153. package/dist/core/translation/language-detect.d.ts.map +1 -0
  154. package/dist/core/translation/language-detect.js +140 -0
  155. package/dist/core/translation/language-detect.js.map +1 -0
  156. package/dist/core/translation/parsers/parser-adapter.d.ts +23 -0
  157. package/dist/core/translation/parsers/parser-adapter.d.ts.map +1 -0
  158. package/dist/core/translation/parsers/parser-adapter.js +6 -0
  159. package/dist/core/translation/parsers/parser-adapter.js.map +1 -0
  160. package/dist/core/translation/parsers/python-parser-adapter.d.ts +10 -0
  161. package/dist/core/translation/parsers/python-parser-adapter.d.ts.map +1 -0
  162. package/dist/core/translation/parsers/python-parser-adapter.js +85 -0
  163. package/dist/core/translation/parsers/python-parser-adapter.js.map +1 -0
  164. package/dist/core/translation/parsers/ts-parser-adapter.d.ts +10 -0
  165. package/dist/core/translation/parsers/ts-parser-adapter.d.ts.map +1 -0
  166. package/dist/core/translation/parsers/ts-parser-adapter.js +145 -0
  167. package/dist/core/translation/parsers/ts-parser-adapter.js.map +1 -0
  168. package/dist/core/translation/prompt-builder.d.ts +34 -0
  169. package/dist/core/translation/prompt-builder.d.ts.map +1 -0
  170. package/dist/core/translation/prompt-builder.js +137 -0
  171. package/dist/core/translation/prompt-builder.js.map +1 -0
  172. package/dist/core/translation/translation-orchestrator.d.ts +67 -0
  173. package/dist/core/translation/translation-orchestrator.d.ts.map +1 -0
  174. package/dist/core/translation/translation-orchestrator.js +204 -0
  175. package/dist/core/translation/translation-orchestrator.js.map +1 -0
  176. package/dist/core/translation/translation-store.d.ts +35 -0
  177. package/dist/core/translation/translation-store.d.ts.map +1 -0
  178. package/dist/core/translation/translation-store.js +96 -0
  179. package/dist/core/translation/translation-store.js.map +1 -0
  180. package/dist/core/translation/translation-types.d.ts +156 -0
  181. package/dist/core/translation/translation-types.d.ts.map +1 -0
  182. package/dist/core/translation/translation-types.js +86 -0
  183. package/dist/core/translation/translation-types.js.map +1 -0
  184. package/dist/core/translation/ucr/construct-registry.d.ts +36 -0
  185. package/dist/core/translation/ucr/construct-registry.d.ts.map +1 -0
  186. package/dist/core/translation/ucr/construct-registry.js +159 -0
  187. package/dist/core/translation/ucr/construct-registry.js.map +1 -0
  188. package/dist/core/translation/ucr/construct-seed.d.ts +12 -0
  189. package/dist/core/translation/ucr/construct-seed.d.ts.map +1 -0
  190. package/dist/core/translation/ucr/construct-seed.js +35 -0
  191. package/dist/core/translation/ucr/construct-seed.js.map +1 -0
  192. package/dist/core/translation/ucr/construct-types.d.ts +174 -0
  193. package/dist/core/translation/ucr/construct-types.d.ts.map +1 -0
  194. package/dist/core/translation/ucr/construct-types.js +88 -0
  195. package/dist/core/translation/ucr/construct-types.js.map +1 -0
  196. package/dist/core/utils/ac-helpers.d.ts +5 -2
  197. package/dist/core/utils/ac-helpers.d.ts.map +1 -1
  198. package/dist/core/utils/ac-helpers.js +35 -4
  199. package/dist/core/utils/ac-helpers.js.map +1 -1
  200. package/dist/core/utils/blocked-helpers.d.ts.map +1 -1
  201. package/dist/core/utils/blocked-helpers.js +9 -1
  202. package/dist/core/utils/blocked-helpers.js.map +1 -1
  203. package/dist/core/utils/constants.d.ts +19 -0
  204. package/dist/core/utils/constants.d.ts.map +1 -1
  205. package/dist/core/utils/constants.js +23 -0
  206. package/dist/core/utils/constants.js.map +1 -1
  207. package/dist/core/utils/errors.d.ts +12 -0
  208. package/dist/core/utils/errors.d.ts.map +1 -1
  209. package/dist/core/utils/errors.js +25 -0
  210. package/dist/core/utils/errors.js.map +1 -1
  211. package/dist/core/utils/similarity.d.ts +9 -0
  212. package/dist/core/utils/similarity.d.ts.map +1 -0
  213. package/dist/core/utils/similarity.js +20 -0
  214. package/dist/core/utils/similarity.js.map +1 -0
  215. package/dist/core/validator/done-integrity-checker.d.ts.map +1 -1
  216. package/dist/core/validator/done-integrity-checker.js +4 -2
  217. package/dist/core/validator/done-integrity-checker.js.map +1 -1
  218. package/dist/core/validator/status-flow-checker.d.ts.map +1 -1
  219. package/dist/core/validator/status-flow-checker.js +2 -1
  220. package/dist/core/validator/status-flow-checker.js.map +1 -1
  221. package/dist/mcp/code-intelligence-wrapper.d.ts +79 -0
  222. package/dist/mcp/code-intelligence-wrapper.d.ts.map +1 -0
  223. package/dist/mcp/code-intelligence-wrapper.js +291 -0
  224. package/dist/mcp/code-intelligence-wrapper.js.map +1 -0
  225. package/dist/mcp/lifecycle-wrapper.d.ts.map +1 -1
  226. package/dist/mcp/lifecycle-wrapper.js +57 -6
  227. package/dist/mcp/lifecycle-wrapper.js.map +1 -1
  228. package/dist/mcp/tool-classification.d.ts +20 -0
  229. package/dist/mcp/tool-classification.d.ts.map +1 -0
  230. package/dist/mcp/tool-classification.js +52 -0
  231. package/dist/mcp/tool-classification.js.map +1 -0
  232. package/dist/mcp/tools/analyze-translation.d.ts +8 -0
  233. package/dist/mcp/tools/analyze-translation.d.ts.map +1 -0
  234. package/dist/mcp/tools/analyze-translation.js +53 -0
  235. package/dist/mcp/tools/analyze-translation.js.map +1 -0
  236. package/dist/mcp/tools/analyze.d.ts.map +1 -1
  237. package/dist/mcp/tools/analyze.js +8 -0
  238. package/dist/mcp/tools/analyze.js.map +1 -1
  239. package/dist/mcp/tools/clone-node.d.ts.map +1 -1
  240. package/dist/mcp/tools/clone-node.js +5 -1
  241. package/dist/mcp/tools/clone-node.js.map +1 -1
  242. package/dist/mcp/tools/code-intelligence.d.ts +2 -0
  243. package/dist/mcp/tools/code-intelligence.d.ts.map +1 -1
  244. package/dist/mcp/tools/code-intelligence.js +168 -8
  245. package/dist/mcp/tools/code-intelligence.js.map +1 -1
  246. package/dist/mcp/tools/context.d.ts.map +1 -1
  247. package/dist/mcp/tools/context.js +3 -1
  248. package/dist/mcp/tools/context.js.map +1 -1
  249. package/dist/mcp/tools/delete-node.js +1 -1
  250. package/dist/mcp/tools/delete-node.js.map +1 -1
  251. package/dist/mcp/tools/edge.d.ts.map +1 -1
  252. package/dist/mcp/tools/edge.js +33 -20
  253. package/dist/mcp/tools/edge.js.map +1 -1
  254. package/dist/mcp/tools/export.d.ts.map +1 -1
  255. package/dist/mcp/tools/export.js +26 -1
  256. package/dist/mcp/tools/export.js.map +1 -1
  257. package/dist/mcp/tools/import-prd.js +1 -1
  258. package/dist/mcp/tools/import-prd.js.map +1 -1
  259. package/dist/mcp/tools/index.d.ts.map +1 -1
  260. package/dist/mcp/tools/index.js +8 -0
  261. package/dist/mcp/tools/index.js.map +1 -1
  262. package/dist/mcp/tools/init.d.ts.map +1 -1
  263. package/dist/mcp/tools/init.js +5 -1
  264. package/dist/mcp/tools/init.js.map +1 -1
  265. package/dist/mcp/tools/knowledge-feedback.d.ts.map +1 -1
  266. package/dist/mcp/tools/knowledge-feedback.js +3 -2
  267. package/dist/mcp/tools/knowledge-feedback.js.map +1 -1
  268. package/dist/mcp/tools/list.d.ts.map +1 -1
  269. package/dist/mcp/tools/list.js +6 -1
  270. package/dist/mcp/tools/list.js.map +1 -1
  271. package/dist/mcp/tools/manage-skill.d.ts.map +1 -1
  272. package/dist/mcp/tools/manage-skill.js +6 -0
  273. package/dist/mcp/tools/manage-skill.js.map +1 -1
  274. package/dist/mcp/tools/memory.js +4 -4
  275. package/dist/mcp/tools/memory.js.map +1 -1
  276. package/dist/mcp/tools/metrics.d.ts.map +1 -1
  277. package/dist/mcp/tools/metrics.js +32 -2
  278. package/dist/mcp/tools/metrics.js.map +1 -1
  279. package/dist/mcp/tools/move-node.js +1 -1
  280. package/dist/mcp/tools/move-node.js.map +1 -1
  281. package/dist/mcp/tools/node.d.ts.map +1 -1
  282. package/dist/mcp/tools/node.js +38 -35
  283. package/dist/mcp/tools/node.js.map +1 -1
  284. package/dist/mcp/tools/rag-context.d.ts +1 -1
  285. package/dist/mcp/tools/rag-context.d.ts.map +1 -1
  286. package/dist/mcp/tools/rag-context.js +21 -2
  287. package/dist/mcp/tools/rag-context.js.map +1 -1
  288. package/dist/mcp/tools/search.d.ts.map +1 -1
  289. package/dist/mcp/tools/search.js +8 -4
  290. package/dist/mcp/tools/search.js.map +1 -1
  291. package/dist/mcp/tools/set-phase.d.ts.map +1 -1
  292. package/dist/mcp/tools/set-phase.js +26 -5
  293. package/dist/mcp/tools/set-phase.js.map +1 -1
  294. package/dist/mcp/tools/show.js +1 -1
  295. package/dist/mcp/tools/show.js.map +1 -1
  296. package/dist/mcp/tools/siebel-import-sif.d.ts.map +1 -1
  297. package/dist/mcp/tools/siebel-import-sif.js +67 -36
  298. package/dist/mcp/tools/siebel-import-sif.js.map +1 -1
  299. package/dist/mcp/tools/translate-code.d.ts +8 -0
  300. package/dist/mcp/tools/translate-code.d.ts.map +1 -0
  301. package/dist/mcp/tools/translate-code.js +73 -0
  302. package/dist/mcp/tools/translate-code.js.map +1 -0
  303. package/dist/mcp/tools/update-node.js +1 -1
  304. package/dist/mcp/tools/update-node.js.map +1 -1
  305. package/dist/mcp/tools/update-status.js +1 -1
  306. package/dist/mcp/tools/update-status.js.map +1 -1
  307. package/dist/schemas/analyzer-schema.d.ts +5 -3
  308. package/dist/schemas/analyzer-schema.d.ts.map +1 -1
  309. package/dist/schemas/analyzer-schema.js +1 -0
  310. package/dist/schemas/analyzer-schema.js.map +1 -1
  311. package/dist/schemas/designer-schema.d.ts +4 -4
  312. package/dist/schemas/implementer-schema.d.ts +1 -0
  313. package/dist/schemas/implementer-schema.d.ts.map +1 -1
  314. package/dist/schemas/implementer-schema.js +1 -0
  315. package/dist/schemas/implementer-schema.js.map +1 -1
  316. package/dist/schemas/knowledge.schema.d.ts +2 -0
  317. package/dist/schemas/knowledge.schema.d.ts.map +1 -1
  318. package/dist/schemas/knowledge.schema.js +1 -0
  319. package/dist/schemas/knowledge.schema.js.map +1 -1
  320. package/dist/schemas/node.schema.js +1 -1
  321. package/dist/schemas/node.schema.js.map +1 -1
  322. package/dist/schemas/siebel.schema.d.ts +14 -14
  323. package/dist/schemas/validator-schema.d.ts +1 -0
  324. package/dist/schemas/validator-schema.d.ts.map +1 -1
  325. package/dist/schemas/validator-schema.js +1 -0
  326. package/dist/schemas/validator-schema.js.map +1 -1
  327. package/dist/web/dashboard/dist/assets/{benchmark-tab-LbjYcnjd.js → benchmark-tab-BWbrm3fF.js} +1 -1
  328. package/dist/web/dashboard/dist/assets/{context-tab-u_l0XUXT.js → context-tab-CD1pqDb2.js} +1 -1
  329. package/dist/web/dashboard/dist/assets/{gitnexus-tab-K304jKR3.js → gitnexus-tab-DWfMYYIO.js} +1 -1
  330. package/dist/web/dashboard/dist/assets/{graph-section-3_2LPo7V.js → graph-section-ByabPxrl.js} +1 -1
  331. package/dist/web/dashboard/dist/assets/{graph-tab-KG6GQq1a.js → graph-tab-Bd2SQl25.js} +1 -1
  332. package/dist/web/dashboard/dist/assets/{graph-utils-cpyaBhnE.js → graph-utils-C3ZvD-eu.js} +1 -1
  333. package/dist/web/dashboard/dist/assets/{index-DY9euqve.js → index-CLbo-4nU.js} +1 -1
  334. package/dist/web/dashboard/dist/assets/{index-Co7yktBf.js → index-DknXi6Cq.js} +47 -42
  335. package/dist/web/dashboard/dist/assets/{index-Clwhz2ad.js → index-LPQ6gwAy.js} +1 -1
  336. package/dist/web/dashboard/dist/assets/index-jxbHgBUe.css +1 -0
  337. package/dist/web/dashboard/dist/assets/{insights-tab-yrnRR8CL.js → insights-tab-Kqy1BThw.js} +1 -1
  338. package/dist/web/dashboard/dist/assets/{journey-tab-Cfh-qkYk.js → journey-tab-CjfOzBFl.js} +1 -1
  339. package/dist/web/dashboard/dist/assets/languages-tab-BsE3pPKO.js +63 -0
  340. package/dist/web/dashboard/dist/assets/{logs-tab-B-8O6WzQ.js → logs-tab-D9XtpaKf.js} +1 -1
  341. package/dist/web/dashboard/dist/assets/lsp-tab-DN-wImxK.js +64 -0
  342. package/dist/web/dashboard/dist/assets/{memories-tab-5t0pfAsS.js → memories-tab-C9CgvCRH.js} +1 -1
  343. package/dist/web/dashboard/dist/assets/{prd-backlog-tab-Bgt2qin9.js → prd-backlog-tab-BOFkQdFu.js} +1 -1
  344. package/dist/web/dashboard/dist/assets/{siebel-tab-CjYyszVw.js → siebel-tab-BVSi4Va2.js} +3 -3
  345. package/dist/web/dashboard/dist/assets/{skills-tab-D-6Tem1J.js → skills-tab-DJpG9cOQ.js} +1 -1
  346. package/dist/web/dashboard/dist/assets/{style-Ci_RUKMJ.js → style-FoeO1y9E.js} +1 -1
  347. package/dist/web/dashboard/dist/assets/triangle-alert-B0LFw3Ht.js +11 -0
  348. package/dist/web/dashboard/dist/index.html +2 -2
  349. package/package.json +2 -2
  350. package/dist/web/dashboard/dist/assets/index-C1UckjqB.css +0 -1
  351. package/dist/web/dashboard/dist/assets/lsp-tab-CBM8pixC.js +0 -74
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Python Generator — emits Python code from canonical constructs
3
+ * using UCR syntax patterns. Handles indentation, snake_case naming,
4
+ * and Python-specific imports.
5
+ */
6
+ export class PythonGenerator {
7
+ registry;
8
+ languageId = "python";
9
+ constructor(registry) {
10
+ this.registry = registry;
11
+ }
12
+ generate(constructs) {
13
+ if (constructs.length === 0) {
14
+ return { code: "", mappedConstructs: [], unmappedConstructs: [] };
15
+ }
16
+ const lines = [];
17
+ const mapped = [];
18
+ const unmapped = [];
19
+ for (const construct of constructs) {
20
+ const mapping = this.registry.getPrimaryMapping(construct.constructId, this.languageId);
21
+ if (!mapping || !mapping.syntaxPattern) {
22
+ unmapped.push(construct.constructId);
23
+ continue;
24
+ }
25
+ const code = substitutePattern(mapping.syntaxPattern, construct);
26
+ lines.push(code);
27
+ mapped.push(construct.constructId);
28
+ }
29
+ return {
30
+ code: lines.join("\n\n"),
31
+ mappedConstructs: mapped,
32
+ unmappedConstructs: unmapped,
33
+ };
34
+ }
35
+ }
36
+ /** Convert camelCase to snake_case for Python naming conventions. */
37
+ function toSnakeCase(name) {
38
+ return name
39
+ .replace(/([a-z])([A-Z])/g, "$1_$2")
40
+ .replace(/([A-Z])([A-Z][a-z])/g, "$1_$2")
41
+ .toLowerCase();
42
+ }
43
+ /** Check if a name is PascalCase (class-like). */
44
+ function isPascalCase(name) {
45
+ return /^[A-Z][a-zA-Z0-9]*$/.test(name);
46
+ }
47
+ /** Substitute {{placeholders}} in a syntax pattern with construct data. */
48
+ function substitutePattern(pattern, construct) {
49
+ let result = pattern;
50
+ if (construct.name) {
51
+ // Keep PascalCase for classes, convert functions/variables to snake_case
52
+ const isClass = construct.constructId === "uc_class_def" || construct.constructId === "uc_abstract_class";
53
+ const name = isClass || isPascalCase(construct.name) && isClass
54
+ ? construct.name
55
+ : toSnakeCase(construct.name);
56
+ result = result.replace(/\{\{name\}\}/g, name);
57
+ }
58
+ // Default placeholders for unresolved template vars
59
+ result = result.replace(/\{\{members\}\}/g, "pass # TODO: members");
60
+ result = result.replace(/\{\{params\}\}/g, "");
61
+ result = result.replace(/\{\{body\}\}/g, "pass # TODO: implement");
62
+ result = result.replace(/\{\{value\}\}/g, "None");
63
+ result = result.replace(/\{\{condition\}\}/g, "True # condition");
64
+ result = result.replace(/\{\{type\}\}/g, "Any");
65
+ result = result.replace(/\{\{module\}\}/g, "module");
66
+ result = result.replace(/\{\{items\}\}/g, "items");
67
+ result = result.replace(/\{\{item\}\}/g, "item");
68
+ result = result.replace(/\{\{expression\}\}/g, "None # expression");
69
+ result = result.replace(/\{\{error\}\}/g, "e");
70
+ result = result.replace(/\{\{message\}\}/g, "'Error'");
71
+ result = result.replace(/\{\{parent\}\}/g, "object");
72
+ return result;
73
+ }
74
+ //# sourceMappingURL=python-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python-generator.js","sourceRoot":"","sources":["../../../../src/core/translation/generators/python-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * TypeScript Generator — emits TypeScript code from canonical constructs
3
+ * using UCR syntax patterns with {{placeholder}} substitution.
4
+ */
5
+ import { ConstructRegistry } from "../ucr/construct-registry.js";
6
+ import type { GeneratorAdapter, GeneratedCode } from "./generator-adapter.js";
7
+ import type { ParsedConstruct } from "../parsers/parser-adapter.js";
8
+ export declare class TsGenerator implements GeneratorAdapter {
9
+ private readonly registry;
10
+ readonly languageId = "typescript";
11
+ constructor(registry: ConstructRegistry);
12
+ generate(constructs: ParsedConstruct[]): GeneratedCode;
13
+ }
14
+ //# sourceMappingURL=ts-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-generator.d.ts","sourceRoot":"","sources":["../../../../src/core/translation/generators/ts-generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEpE,qBAAa,WAAY,YAAW,gBAAgB;IAGtC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAFrC,QAAQ,CAAC,UAAU,gBAAgB;gBAEN,QAAQ,EAAE,iBAAiB;IAExD,QAAQ,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,aAAa;CA4BvD"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * TypeScript Generator — emits TypeScript code from canonical constructs
3
+ * using UCR syntax patterns with {{placeholder}} substitution.
4
+ */
5
+ export class TsGenerator {
6
+ registry;
7
+ languageId = "typescript";
8
+ constructor(registry) {
9
+ this.registry = registry;
10
+ }
11
+ generate(constructs) {
12
+ if (constructs.length === 0) {
13
+ return { code: "", mappedConstructs: [], unmappedConstructs: [] };
14
+ }
15
+ const lines = [];
16
+ const mapped = [];
17
+ const unmapped = [];
18
+ for (const construct of constructs) {
19
+ const mapping = this.registry.getPrimaryMapping(construct.constructId, this.languageId);
20
+ if (!mapping || !mapping.syntaxPattern) {
21
+ unmapped.push(construct.constructId);
22
+ continue;
23
+ }
24
+ const code = substitutePattern(mapping.syntaxPattern, construct);
25
+ lines.push(code);
26
+ mapped.push(construct.constructId);
27
+ }
28
+ return {
29
+ code: lines.join("\n\n"),
30
+ mappedConstructs: mapped,
31
+ unmappedConstructs: unmapped,
32
+ };
33
+ }
34
+ }
35
+ /** Substitute {{placeholders}} in a syntax pattern with construct data. */
36
+ function substitutePattern(pattern, construct) {
37
+ let result = pattern;
38
+ if (construct.name) {
39
+ result = result.replace(/\{\{name\}\}/g, construct.name);
40
+ }
41
+ // Default placeholders for unresolved template vars
42
+ result = result.replace(/\{\{members\}\}/g, "// TODO: members");
43
+ result = result.replace(/\{\{params\}\}/g, "");
44
+ result = result.replace(/\{\{body\}\}/g, "// TODO: implement");
45
+ result = result.replace(/\{\{value\}\}/g, "undefined");
46
+ result = result.replace(/\{\{condition\}\}/g, "/* condition */");
47
+ result = result.replace(/\{\{type\}\}/g, "unknown");
48
+ result = result.replace(/\{\{module\}\}/g, "'./module'");
49
+ result = result.replace(/\{\{items\}\}/g, "items");
50
+ result = result.replace(/\{\{item\}\}/g, "item");
51
+ result = result.replace(/\{\{expression\}\}/g, "/* expression */");
52
+ result = result.replace(/\{\{error\}\}/g, "e");
53
+ result = result.replace(/\{\{message\}\}/g, "'Error'");
54
+ return result;
55
+ }
56
+ //# sourceMappingURL=ts-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-generator.js","sourceRoot":"","sources":["../../../../src/core/translation/generators/ts-generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,OAAO,WAAW;IAGO;IAFpB,UAAU,GAAG,YAAY,CAAC;IAEnC,YAA6B,QAA2B;QAA3B,aAAQ,GAAR,QAAQ,CAAmB;IAAG,CAAC;IAE5D,QAAQ,CAAC,UAA6B;QACpC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC;QACpE,CAAC;QAED,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAExF,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;gBACvC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBACrC,SAAS;YACX,CAAC;YAED,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;YACjE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACrC,CAAC;QAED,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;YACxB,gBAAgB,EAAE,MAAM;YACxB,kBAAkB,EAAE,QAAQ;SAC7B,CAAC;IACJ,CAAC;CACF;AAED,2EAA2E;AAC3E,SAAS,iBAAiB,CAAC,OAAe,EAAE,SAA0B;IACpE,IAAI,MAAM,GAAG,OAAO,CAAC;IACrB,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;QACnB,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IACD,oDAAoD;IACpD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;IAChE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;IAC/D,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;IACvD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,oBAAoB,EAAE,iBAAiB,CAAC,CAAC;IACjE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IACpD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;IACzD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CAAC;IACnE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IAC/C,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;IACvD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Language Detection from Code Snippets — heuristic keyword/pattern detection.
3
+ * Returns languageId, confidence (0-1), and indicators explaining the detection.
4
+ */
5
+ export { detectProjectLanguages } from "../lsp/language-detector.js";
6
+ export interface LanguageDetectionResult {
7
+ languageId: string;
8
+ confidence: number;
9
+ indicators: string[];
10
+ }
11
+ export declare function detectLanguageFromCode(code: string): LanguageDetectionResult;
12
+ //# sourceMappingURL=language-detect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language-detect.d.ts","sourceRoot":"","sources":["../../../src/core/translation/language-detect.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AA6GD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,uBAAuB,CA4C5E"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Language Detection from Code Snippets — heuristic keyword/pattern detection.
3
+ * Returns languageId, confidence (0-1), and indicators explaining the detection.
4
+ */
5
+ export { detectProjectLanguages } from "../lsp/language-detector.js";
6
+ const PROFILES = [
7
+ {
8
+ id: "typescript",
9
+ unique: [
10
+ /\binterface\s+\w+\s*\{/, /\btype\s+\w+\s*=/, /\benum\s+\w+\s*\{/,
11
+ /:\s*(string|number|boolean|void)\b/, /\bas\s+(string|number|boolean)\b/,
12
+ ],
13
+ strong: [
14
+ /\bconst\s+\w+\s*[:=]/, /\bimport\s*\{[^}]+\}\s*from\s*['"]/, /\bexport\s+(function|class|const|interface|type)\b/,
15
+ /=>\s*\{/, /\bPromise</, /\bconsole\.\w+\(/,
16
+ ],
17
+ weak: [
18
+ /\bfunction\s+\w+/, /\bclass\s+\w+/, /\breturn\s+/, /\bnew\s+\w+/,
19
+ ],
20
+ },
21
+ {
22
+ id: "python",
23
+ unique: [
24
+ /^(\s*)def\s+\w+\s*\(/m, /^(\s*)class\s+\w+.*:\s*$/m,
25
+ /^from\s+\S+\s+import\s+/m, /^\s*elif\s+/m,
26
+ /\bprint\s*\(/, /\bTrue\b/, /\bFalse\b/, /\bNone\b/,
27
+ /^\s*@\w+/m, /\basync\s+def\b/,
28
+ ],
29
+ strong: [
30
+ /^import\s+\w+\s*$/m, /\bself\.\w+/, /\bpass\b/,
31
+ /:\s*$\n\s+/m, /\bf["']/, /\braise\s+\w+/,
32
+ ],
33
+ weak: [
34
+ /\bif\s+.*:\s*$/m, /\bfor\s+\w+\s+in\s+/m, /\bwhile\s+/m,
35
+ ],
36
+ },
37
+ {
38
+ id: "go",
39
+ unique: [
40
+ /^package\s+\w+/m, /\bfunc\s+\w*\s*\(/, /\b:=\s*/,
41
+ /\bgo\s+func\b/, /\bdefer\s+/, /\bchan\s+/,
42
+ /\bfmt\.\w+/, /\bgoroutine/,
43
+ ],
44
+ strong: [
45
+ /\bvar\s+\w+\s+\w+/, /\bstruct\s*\{/, /\binterface\s*\{/,
46
+ /\berr\s*!=\s*nil/, /\brange\s+/,
47
+ ],
48
+ weak: [
49
+ /\breturn\s+/, /\bif\s+.*\{/,
50
+ ],
51
+ },
52
+ {
53
+ id: "java",
54
+ unique: [
55
+ /\bpublic\s+(static\s+)?void\s+main\b/, /\bSystem\.out\.print/,
56
+ /\bpublic\s+class\s+\w+/, /\bprivate\s+(static\s+)?\w+\s+\w+/,
57
+ /\bnew\s+ArrayList</, /\bextends\s+\w+\s*\{/,
58
+ ],
59
+ strong: [
60
+ /\b@Override\b/, /\b@Autowired\b/, /\bimport\s+java\./,
61
+ /\bList<\w+>/, /\bString\[\]\s+\w+/, /\bthrows\s+\w+/,
62
+ ],
63
+ weak: [
64
+ /\bpublic\s+\w+/, /\bprivate\s+\w+/, /\bprotected\s+\w+/,
65
+ ],
66
+ },
67
+ {
68
+ id: "csharp",
69
+ unique: [
70
+ /\busing\s+System\b/, /\bnamespace\s+\w+/, /\bConsole\.Write/,
71
+ /\.Where\(/, /\.Select\(/, /\.ToList\(\)/,
72
+ /\bvar\s+\w+\s*=\s*.*\.Where/, /\basync\s+Task</,
73
+ ],
74
+ strong: [
75
+ /\busing\s+\w+\.\w+;/, /\bstring\.\w+/, /\bint\s+\w+/,
76
+ /\bpublic\s+(override|virtual)\b/,
77
+ ],
78
+ weak: [
79
+ /\bpublic\s+\w+/, /\bclass\s+\w+/,
80
+ ],
81
+ },
82
+ {
83
+ id: "rust",
84
+ unique: [
85
+ /\bfn\s+\w+\s*\(/, /\blet\s+mut\s+/, /\bimpl\s+\w+/,
86
+ /\bprintln!\(/, /\b->\s*(Self|&)/, /\bstruct\s+\w+\s*\{/,
87
+ /\bmatch\s+\w+\s*\{/, /\bOption</, /\bResult</,
88
+ ],
89
+ strong: [
90
+ /\buse\s+\w+::/, /\bpub\s+(fn|struct|enum)\b/, /\b&self\b/,
91
+ /\bunwrap\(\)/, /\b\.clone\(\)/,
92
+ ],
93
+ weak: [
94
+ /\blet\s+\w+/, /\breturn\s+/,
95
+ ],
96
+ },
97
+ ];
98
+ const UNIQUE_WEIGHT = 3;
99
+ const STRONG_WEIGHT = 1.5;
100
+ const WEAK_WEIGHT = 0.5;
101
+ export function detectLanguageFromCode(code) {
102
+ if (!code.trim()) {
103
+ return { languageId: "unknown", confidence: 0, indicators: [] };
104
+ }
105
+ let bestLang = "unknown";
106
+ let bestScore = 0;
107
+ let bestIndicators = [];
108
+ for (const profile of PROFILES) {
109
+ let score = 0;
110
+ const indicators = [];
111
+ for (const pattern of profile.unique) {
112
+ if (pattern.test(code)) {
113
+ score += UNIQUE_WEIGHT;
114
+ indicators.push(`unique: ${pattern.source.substring(0, 40)}`);
115
+ }
116
+ }
117
+ for (const pattern of profile.strong) {
118
+ if (pattern.test(code)) {
119
+ score += STRONG_WEIGHT;
120
+ indicators.push(`strong: ${pattern.source.substring(0, 40)}`);
121
+ }
122
+ }
123
+ for (const pattern of profile.weak) {
124
+ if (pattern.test(code)) {
125
+ score += WEAK_WEIGHT;
126
+ indicators.push(`weak: ${pattern.source.substring(0, 40)}`);
127
+ }
128
+ }
129
+ if (score > bestScore) {
130
+ bestScore = score;
131
+ bestLang = profile.id;
132
+ bestIndicators = indicators;
133
+ }
134
+ }
135
+ // Normalize confidence: map score to 0-1 range
136
+ // A score of ~6+ is high confidence, ~3 is medium, <2 is low
137
+ const confidence = Math.min(bestScore / 8, 1);
138
+ return { languageId: bestLang, confidence, indicators: bestIndicators };
139
+ }
140
+ //# sourceMappingURL=language-detect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language-detect.js","sourceRoot":"","sources":["../../../src/core/translation/language-detect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Parser Adapter interface — language-agnostic contract for parsing code into
3
+ * canonical constructs from the UCR (Universal Construct Registry).
4
+ */
5
+ /** A construct detected in source code, mapped to a UCR canonical ID. */
6
+ export interface ParsedConstruct {
7
+ /** UCR canonical construct ID (e.g., "uc_fn_def", "uc_class_def") */
8
+ constructId: string;
9
+ /** Name of the construct if applicable (function name, class name, etc.) */
10
+ name?: string;
11
+ /** 1-based start line in source */
12
+ startLine: number;
13
+ /** 1-based end line in source */
14
+ endLine: number;
15
+ }
16
+ /** Adapter interface for language-specific parsers. */
17
+ export interface ParserAdapter {
18
+ /** Language identifier (matches UCR language_id, e.g., "typescript", "python") */
19
+ readonly languageId: string;
20
+ /** Parse a code snippet and return detected canonical constructs. */
21
+ parseSnippet(code: string): ParsedConstruct[];
22
+ }
23
+ //# sourceMappingURL=parser-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser-adapter.d.ts","sourceRoot":"","sources":["../../../../src/core/translation/parsers/parser-adapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,yEAAyE;AACzE,MAAM,WAAW,eAAe;IAC9B,qEAAqE;IACrE,WAAW,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,uDAAuD;AACvD,MAAM,WAAW,aAAa;IAC5B,kFAAkF;IAClF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,qEAAqE;IACrE,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE,CAAC;CAC/C"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Parser Adapter interface — language-agnostic contract for parsing code into
3
+ * canonical constructs from the UCR (Universal Construct Registry).
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=parser-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser-adapter.js","sourceRoot":"","sources":["../../../../src/core/translation/parsers/parser-adapter.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Python Parser Adapter — heuristic regex + line-based parser for Python code.
3
+ * Maps detected constructs to UCR canonical IDs without requiring a Python AST library.
4
+ */
5
+ import type { ParserAdapter, ParsedConstruct } from "./parser-adapter.js";
6
+ export declare class PythonParserAdapter implements ParserAdapter {
7
+ readonly languageId = "python";
8
+ parseSnippet(code: string): ParsedConstruct[];
9
+ }
10
+ //# sourceMappingURL=python-parser-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python-parser-adapter.d.ts","sourceRoot":"","sources":["../../../../src/core/translation/parsers/python-parser-adapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AA+C1E,qBAAa,mBAAoB,YAAW,aAAa;IACvD,QAAQ,CAAC,UAAU,YAAY;IAE/B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE;CA8C9C"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Python Parser Adapter — heuristic regex + line-based parser for Python code.
3
+ * Maps detected constructs to UCR canonical IDs without requiring a Python AST library.
4
+ */
5
+ const LINE_RULES = [
6
+ // async def must come before def
7
+ { pattern: /^(\s*)async\s+def\s+(\w+)/, constructId: "uc_async_fn", nameGroup: 2 },
8
+ { pattern: /^(\s*)def\s+(\w+)/, constructId: "uc_fn_def", nameGroup: 2 },
9
+ // class with inheritance
10
+ {
11
+ pattern: /^(\s*)class\s+(\w+)\s*\([^)]+\)\s*:/,
12
+ constructId: "uc_class_def",
13
+ nameGroup: 2,
14
+ also: [{ constructId: "uc_extends" }],
15
+ },
16
+ // class without inheritance
17
+ { pattern: /^(\s*)class\s+(\w+)/, constructId: "uc_class_def", nameGroup: 2 },
18
+ // from x import y (named import)
19
+ { pattern: /^from\s+\S+\s+import\s+/, constructId: "uc_import_named" },
20
+ // import x (default/module import)
21
+ { pattern: /^import\s+\w+/, constructId: "uc_import_default" },
22
+ // if/elif/else
23
+ { pattern: /^(\s*)(if|elif)\s+.+:/, constructId: "uc_if_else" },
24
+ // for loop (Python for is always for-each style)
25
+ { pattern: /^(\s*)for\s+\w+\s+in\s+/, constructId: "uc_for_each" },
26
+ // while loop
27
+ { pattern: /^(\s*)while\s+/, constructId: "uc_while" },
28
+ // try/except
29
+ { pattern: /^(\s*)try\s*:/, constructId: "uc_try_catch" },
30
+ // raise (throw)
31
+ { pattern: /^(\s*)raise\s+/, constructId: "uc_throw" },
32
+ // return
33
+ { pattern: /^(\s*)return\b/, constructId: "uc_return" },
34
+ // await expression
35
+ { pattern: /\bawait\s+/, constructId: "uc_await" },
36
+ // continue
37
+ { pattern: /^(\s*)continue\s*$/, constructId: "uc_continue" },
38
+ // break
39
+ { pattern: /^(\s*)break\s*$/, constructId: "uc_break" },
40
+ ];
41
+ export class PythonParserAdapter {
42
+ languageId = "python";
43
+ parseSnippet(code) {
44
+ if (!code.trim())
45
+ return [];
46
+ const lines = code.split("\n");
47
+ const constructs = [];
48
+ const seen = new Set();
49
+ for (let i = 0; i < lines.length; i++) {
50
+ const line = lines[i];
51
+ const lineNum = i + 1;
52
+ for (const rule of LINE_RULES) {
53
+ const match = rule.pattern.exec(line);
54
+ if (!match)
55
+ continue;
56
+ // Deduplicate if/else — only emit once per if block
57
+ if (rule.constructId === "uc_if_else") {
58
+ const key = `${rule.constructId}:${lineNum}`;
59
+ if (seen.has(key))
60
+ continue;
61
+ seen.add(key);
62
+ }
63
+ const name = rule.nameGroup ? match[rule.nameGroup] : undefined;
64
+ constructs.push({
65
+ constructId: rule.constructId,
66
+ name,
67
+ startLine: lineNum,
68
+ endLine: lineNum,
69
+ });
70
+ if (rule.also) {
71
+ for (const extra of rule.also) {
72
+ constructs.push({
73
+ constructId: extra.constructId,
74
+ startLine: lineNum,
75
+ endLine: lineNum,
76
+ });
77
+ }
78
+ }
79
+ break; // Only first matching rule per line
80
+ }
81
+ }
82
+ return constructs;
83
+ }
84
+ }
85
+ //# sourceMappingURL=python-parser-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python-parser-adapter.js","sourceRoot":"","sources":["../../../../src/core/translation/parsers/python-parser-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * TypeScript Parser Adapter — parses TS/JS code into UCR canonical constructs
3
+ * using the TypeScript compiler API (ts.createSourceFile + AST walk).
4
+ */
5
+ import type { ParserAdapter, ParsedConstruct } from "./parser-adapter.js";
6
+ export declare class TsParserAdapter implements ParserAdapter {
7
+ readonly languageId = "typescript";
8
+ parseSnippet(code: string): ParsedConstruct[];
9
+ }
10
+ //# sourceMappingURL=ts-parser-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-parser-adapter.d.ts","sourceRoot":"","sources":["../../../../src/core/translation/parsers/ts-parser-adapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE1E,qBAAa,eAAgB,YAAW,aAAa;IACnD,QAAQ,CAAC,UAAU,gBAAgB;IAEnC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE;CAe9C"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * TypeScript Parser Adapter — parses TS/JS code into UCR canonical constructs
3
+ * using the TypeScript compiler API (ts.createSourceFile + AST walk).
4
+ */
5
+ import ts from "typescript";
6
+ export class TsParserAdapter {
7
+ languageId = "typescript";
8
+ parseSnippet(code) {
9
+ if (!code.trim())
10
+ return [];
11
+ const sourceFile = ts.createSourceFile("snippet.ts", code, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
12
+ const constructs = [];
13
+ const visit = (node) => {
14
+ const mapped = mapNode(node, sourceFile);
15
+ if (mapped)
16
+ constructs.push(...mapped);
17
+ ts.forEachChild(node, visit);
18
+ };
19
+ ts.forEachChild(sourceFile, visit);
20
+ return constructs;
21
+ }
22
+ }
23
+ function getLines(node, sf) {
24
+ const start = sf.getLineAndCharacterOfPosition(node.getStart(sf));
25
+ const end = sf.getLineAndCharacterOfPosition(node.getEnd());
26
+ return { startLine: start.line + 1, endLine: end.line + 1 };
27
+ }
28
+ function mapNode(node, sf) {
29
+ const lines = getLines(node, sf);
30
+ // Function declaration
31
+ if (ts.isFunctionDeclaration(node) && node.name) {
32
+ const results = [{ constructId: "uc_fn_def", name: node.name.text, ...lines }];
33
+ if (hasAsyncModifier(node)) {
34
+ results.push({ constructId: "uc_async_fn", name: node.name.text, ...lines });
35
+ }
36
+ return results;
37
+ }
38
+ // Arrow function (const x = (...) => ...)
39
+ if (ts.isVariableDeclaration(node) && node.initializer && ts.isArrowFunction(node.initializer)) {
40
+ const name = ts.isIdentifier(node.name) ? node.name.text : undefined;
41
+ return [{ constructId: "uc_arrow_fn", name, ...lines }];
42
+ }
43
+ // Class declaration
44
+ if (ts.isClassDeclaration(node) && node.name) {
45
+ const results = [{ constructId: "uc_class_def", name: node.name.text, ...lines }];
46
+ if (node.heritageClauses) {
47
+ for (const clause of node.heritageClauses) {
48
+ if (clause.token === ts.SyntaxKind.ExtendsKeyword) {
49
+ results.push({ constructId: "uc_extends", ...lines });
50
+ }
51
+ if (clause.token === ts.SyntaxKind.ImplementsKeyword) {
52
+ results.push({ constructId: "uc_implements", ...lines });
53
+ }
54
+ }
55
+ }
56
+ return results;
57
+ }
58
+ // Interface declaration
59
+ if (ts.isInterfaceDeclaration(node)) {
60
+ return [{ constructId: "uc_interface", name: node.name.text, ...lines }];
61
+ }
62
+ // Type alias
63
+ if (ts.isTypeAliasDeclaration(node)) {
64
+ return [{ constructId: "uc_type_alias", name: node.name.text, ...lines }];
65
+ }
66
+ // Enum declaration
67
+ if (ts.isEnumDeclaration(node)) {
68
+ return [{ constructId: "uc_type_enum", name: node.name.text, ...lines }];
69
+ }
70
+ // Import declaration
71
+ if (ts.isImportDeclaration(node) && node.importClause) {
72
+ const results = [];
73
+ const clause = node.importClause;
74
+ if (clause.name) {
75
+ results.push({ constructId: "uc_import_default", ...lines });
76
+ }
77
+ if (clause.namedBindings) {
78
+ if (ts.isNamedImports(clause.namedBindings)) {
79
+ results.push({ constructId: "uc_import_named", ...lines });
80
+ }
81
+ if (ts.isNamespaceImport(clause.namedBindings)) {
82
+ results.push({ constructId: "uc_import_namespace", ...lines });
83
+ }
84
+ }
85
+ return results.length > 0 ? results : null;
86
+ }
87
+ // If statement
88
+ if (ts.isIfStatement(node)) {
89
+ return [{ constructId: "uc_if_else", ...lines }];
90
+ }
91
+ // For statement
92
+ if (ts.isForStatement(node)) {
93
+ return [{ constructId: "uc_for_loop", ...lines }];
94
+ }
95
+ // ForOf / ForIn
96
+ if (ts.isForOfStatement(node) || ts.isForInStatement(node)) {
97
+ return [{ constructId: "uc_for_each", ...lines }];
98
+ }
99
+ // While
100
+ if (ts.isWhileStatement(node)) {
101
+ return [{ constructId: "uc_while", ...lines }];
102
+ }
103
+ // Do/While
104
+ if (ts.isDoStatement(node)) {
105
+ return [{ constructId: "uc_do_while", ...lines }];
106
+ }
107
+ // Try/Catch
108
+ if (ts.isTryStatement(node)) {
109
+ const results = [{ constructId: "uc_try_catch", ...lines }];
110
+ if (node.finallyBlock) {
111
+ results.push({ constructId: "uc_try_finally", ...lines });
112
+ }
113
+ return results;
114
+ }
115
+ // Switch
116
+ if (ts.isSwitchStatement(node)) {
117
+ return [{ constructId: "uc_switch", ...lines }];
118
+ }
119
+ // Throw
120
+ if (ts.isThrowStatement(node)) {
121
+ return [{ constructId: "uc_throw", ...lines }];
122
+ }
123
+ // Return
124
+ if (ts.isReturnStatement(node)) {
125
+ return [{ constructId: "uc_return", ...lines }];
126
+ }
127
+ // Await expression
128
+ if (ts.isAwaitExpression(node)) {
129
+ return [{ constructId: "uc_await", ...lines }];
130
+ }
131
+ // Export (named)
132
+ if (ts.isExportDeclaration(node)) {
133
+ return [{ constructId: "uc_export_named", ...lines }];
134
+ }
135
+ // Export default
136
+ if (ts.isExportAssignment(node)) {
137
+ return [{ constructId: "uc_export_default", ...lines }];
138
+ }
139
+ return null;
140
+ }
141
+ function hasAsyncModifier(node) {
142
+ const modifiers = ts.getModifiers(node);
143
+ return modifiers?.some((m) => m.kind === ts.SyntaxKind.AsyncKeyword) ?? false;
144
+ }
145
+ //# sourceMappingURL=ts-parser-adapter.js.map