@documentation-robotics/cli 0.1.0 → 0.1.7

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 (510) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +466 -693
  3. package/dist/analysis/data-model-analyzer.js +189 -0
  4. package/dist/analysis/data-model-analyzer.js.map +7 -0
  5. package/dist/analysis/index.js +3 -0
  6. package/dist/analysis/index.js.map +7 -0
  7. package/dist/analysis/relationship-classifier.js +181 -0
  8. package/dist/analysis/relationship-classifier.js.map +7 -0
  9. package/dist/analyzers/base-analyzer.js +1 -0
  10. package/dist/analyzers/base-analyzer.js.map +7 -0
  11. package/dist/analyzers/call-graph-utils.js +39 -0
  12. package/dist/analyzers/call-graph-utils.js.map +7 -0
  13. package/dist/analyzers/cbm-analyzer.js +1205 -0
  14. package/dist/analyzers/cbm-analyzer.js.map +7 -0
  15. package/dist/analyzers/heuristic-utils.js +55 -0
  16. package/dist/analyzers/heuristic-utils.js.map +7 -0
  17. package/dist/analyzers/mapping-loader.js +146 -0
  18. package/dist/analyzers/mapping-loader.js.map +7 -0
  19. package/dist/analyzers/registry.js +124 -0
  20. package/dist/analyzers/registry.js.map +7 -0
  21. package/dist/analyzers/session-state.js +176 -0
  22. package/dist/analyzers/session-state.js.map +7 -0
  23. package/dist/analyzers/stdio-client.js +208 -0
  24. package/dist/analyzers/stdio-client.js.map +7 -0
  25. package/dist/analyzers/types.js +15 -0
  26. package/dist/analyzers/types.js.map +7 -0
  27. package/dist/analyzers/verify-engine.js +209 -0
  28. package/dist/analyzers/verify-engine.js.map +7 -0
  29. package/dist/analyzers/verify-ignore.js +130 -0
  30. package/dist/analyzers/verify-ignore.js.map +7 -0
  31. package/dist/analyzers/version.js +8 -0
  32. package/dist/analyzers/version.js.map +7 -0
  33. package/dist/audit/ai/runner.js +41 -0
  34. package/dist/audit/ai/runner.js.map +7 -0
  35. package/dist/audit/differential-analyzer.js +183 -0
  36. package/dist/audit/differential-analyzer.js.map +7 -0
  37. package/dist/audit/index.js +32 -0
  38. package/dist/audit/index.js.map +7 -0
  39. package/dist/audit/nodes/ai/evaluator.js +49 -0
  40. package/dist/audit/nodes/ai/evaluator.js.map +7 -0
  41. package/dist/audit/nodes/ai/parser.js +55 -0
  42. package/dist/audit/nodes/ai/parser.js.map +7 -0
  43. package/dist/audit/nodes/ai/prompts.js +103 -0
  44. package/dist/audit/nodes/ai/prompts.js.map +7 -0
  45. package/dist/audit/nodes/analysis/node-completeness-checker.js +32 -0
  46. package/dist/audit/nodes/analysis/node-completeness-checker.js.map +7 -0
  47. package/dist/audit/nodes/analysis/node-definition-analyzer.js +47 -0
  48. package/dist/audit/nodes/analysis/node-definition-analyzer.js.map +7 -0
  49. package/dist/audit/nodes/analysis/node-overlap-detector.js +79 -0
  50. package/dist/audit/nodes/analysis/node-overlap-detector.js.map +7 -0
  51. package/dist/audit/nodes/model/orchestrator.js +82 -0
  52. package/dist/audit/nodes/model/orchestrator.js.map +7 -0
  53. package/dist/audit/nodes/spec/loader.js +116 -0
  54. package/dist/audit/nodes/spec/loader.js.map +7 -0
  55. package/dist/audit/nodes/spec/orchestrator.js +68 -0
  56. package/dist/audit/nodes/spec/orchestrator.js.map +7 -0
  57. package/dist/audit/nodes/types.js +1 -0
  58. package/dist/audit/nodes/types.js.map +7 -0
  59. package/dist/audit/pipeline/index.js +5 -0
  60. package/dist/audit/pipeline/index.js.map +7 -0
  61. package/dist/audit/pipeline/pipeline-orchestrator.js +218 -0
  62. package/dist/audit/pipeline/pipeline-orchestrator.js.map +7 -0
  63. package/dist/audit/relationships/ai/evaluator.js +235 -0
  64. package/dist/audit/relationships/ai/evaluator.js.map +7 -0
  65. package/dist/audit/relationships/ai/parser.js +197 -0
  66. package/dist/audit/relationships/ai/parser.js.map +7 -0
  67. package/dist/audit/relationships/ai/prompts.js +274 -0
  68. package/dist/audit/relationships/ai/prompts.js.map +7 -0
  69. package/dist/audit/relationships/analysis/balance-assessor.js +115 -0
  70. package/dist/audit/relationships/analysis/balance-assessor.js.map +7 -0
  71. package/dist/audit/relationships/analysis/coverage-analyzer.js +99 -0
  72. package/dist/audit/relationships/analysis/coverage-analyzer.js.map +7 -0
  73. package/dist/audit/relationships/analysis/duplicate-detector.js +95 -0
  74. package/dist/audit/relationships/analysis/duplicate-detector.js.map +7 -0
  75. package/dist/audit/relationships/analysis/gap-analyzer.js +99 -0
  76. package/dist/audit/relationships/analysis/gap-analyzer.js.map +7 -0
  77. package/dist/audit/relationships/analysis/layer-templates.js +294 -0
  78. package/dist/audit/relationships/analysis/layer-templates.js.map +7 -0
  79. package/dist/audit/relationships/graph/connectivity.js +129 -0
  80. package/dist/audit/relationships/graph/connectivity.js.map +7 -0
  81. package/dist/audit/relationships/graph/relationship-graph.js +179 -0
  82. package/dist/audit/relationships/graph/relationship-graph.js.map +7 -0
  83. package/dist/audit/relationships/model/balance-assessor.js +49 -0
  84. package/dist/audit/relationships/model/balance-assessor.js.map +7 -0
  85. package/dist/audit/relationships/model/coverage-analyzer.js +34 -0
  86. package/dist/audit/relationships/model/coverage-analyzer.js.map +7 -0
  87. package/dist/audit/relationships/model/duplicate-detector.js +68 -0
  88. package/dist/audit/relationships/model/duplicate-detector.js.map +7 -0
  89. package/dist/audit/relationships/model/gap-analyzer.js +41 -0
  90. package/dist/audit/relationships/model/gap-analyzer.js.map +7 -0
  91. package/dist/audit/relationships/model/orchestrator.js +126 -0
  92. package/dist/audit/relationships/model/orchestrator.js.map +7 -0
  93. package/dist/audit/relationships/spec/orchestrator.js +157 -0
  94. package/dist/audit/relationships/spec/orchestrator.js.map +7 -0
  95. package/dist/audit/reports/index.js +5 -0
  96. package/dist/audit/reports/index.js.map +7 -0
  97. package/dist/audit/reports/report-generator.js +118 -0
  98. package/dist/audit/reports/report-generator.js.map +7 -0
  99. package/dist/audit/snapshot-storage.js +163 -0
  100. package/dist/audit/snapshot-storage.js.map +7 -0
  101. package/dist/audit/types.js +21 -0
  102. package/dist/audit/types.js.map +7 -0
  103. package/dist/cli.js +223 -92
  104. package/dist/cli.js.map +3 -3
  105. package/dist/coding-agents/agents/claude-code.js +147 -0
  106. package/dist/coding-agents/agents/claude-code.js.map +7 -0
  107. package/dist/coding-agents/agents/index.js +5 -0
  108. package/dist/coding-agents/agents/index.js.map +7 -0
  109. package/dist/coding-agents/agents/types.js +1 -0
  110. package/dist/coding-agents/agents/types.js.map +7 -0
  111. package/dist/coding-agents/base-chat-client.js +45 -0
  112. package/dist/coding-agents/base-chat-client.js.map +7 -0
  113. package/dist/coding-agents/chat-utils.js +23 -0
  114. package/dist/coding-agents/chat-utils.js.map +7 -0
  115. package/dist/coding-agents/claude-code-client.js +246 -0
  116. package/dist/coding-agents/claude-code-client.js.map +7 -0
  117. package/dist/coding-agents/copilot-client.js +209 -0
  118. package/dist/coding-agents/copilot-client.js.map +7 -0
  119. package/dist/commands/add.js +95 -33
  120. package/dist/commands/add.js.map +2 -2
  121. package/dist/commands/analyzer.js +511 -0
  122. package/dist/commands/analyzer.js.map +7 -0
  123. package/dist/commands/audit-diff.js +49 -0
  124. package/dist/commands/audit-diff.js.map +7 -0
  125. package/dist/commands/audit-snapshots.js +62 -0
  126. package/dist/commands/audit-snapshots.js.map +7 -0
  127. package/dist/commands/audit.js +81 -0
  128. package/dist/commands/audit.js.map +7 -0
  129. package/dist/commands/catalog.js +248 -0
  130. package/dist/commands/catalog.js.map +7 -0
  131. package/dist/commands/changeset.js +577 -66
  132. package/dist/commands/changeset.js.map +2 -2
  133. package/dist/commands/chat.js +106 -83
  134. package/dist/commands/chat.js.map +2 -2
  135. package/dist/commands/claude.js +74 -0
  136. package/dist/commands/claude.js.map +7 -0
  137. package/dist/commands/conformance.js +71 -68
  138. package/dist/commands/conformance.js.map +2 -2
  139. package/dist/commands/copilot.js +75 -0
  140. package/dist/commands/copilot.js.map +7 -0
  141. package/dist/commands/delete.js +125 -11
  142. package/dist/commands/delete.js.map +3 -3
  143. package/dist/commands/discover-logic.js +44 -0
  144. package/dist/commands/discover-logic.js.map +7 -0
  145. package/dist/commands/docs.js +87 -0
  146. package/dist/commands/docs.js.map +7 -0
  147. package/dist/commands/element.js +14 -20
  148. package/dist/commands/element.js.map +2 -2
  149. package/dist/commands/export.js +13 -3
  150. package/dist/commands/export.js.map +2 -2
  151. package/dist/commands/import.js +51 -0
  152. package/dist/commands/import.js.map +7 -0
  153. package/dist/commands/info.js +30 -24
  154. package/dist/commands/info.js.map +2 -2
  155. package/dist/commands/init.js +27 -11
  156. package/dist/commands/init.js.map +2 -2
  157. package/dist/commands/list.js +63 -13
  158. package/dist/commands/list.js.map +3 -3
  159. package/dist/commands/relationship.js +225 -37
  160. package/dist/commands/relationship.js.map +2 -2
  161. package/dist/commands/report.js +54 -0
  162. package/dist/commands/report.js.map +7 -0
  163. package/dist/commands/reports.js +45 -0
  164. package/dist/commands/reports.js.map +7 -0
  165. package/dist/commands/schema.js +135 -0
  166. package/dist/commands/schema.js.map +7 -0
  167. package/dist/commands/search.js +40 -12
  168. package/dist/commands/search.js.map +2 -2
  169. package/dist/commands/show.js +58 -27
  170. package/dist/commands/show.js.map +2 -2
  171. package/dist/commands/stats.js +35 -0
  172. package/dist/commands/stats.js.map +7 -0
  173. package/dist/commands/trace.js +39 -16
  174. package/dist/commands/trace.js.map +2 -2
  175. package/dist/commands/update.js +141 -14
  176. package/dist/commands/update.js.map +2 -2
  177. package/dist/commands/upgrade.js +210 -46
  178. package/dist/commands/upgrade.js.map +3 -3
  179. package/dist/commands/validate.js +142 -23
  180. package/dist/commands/validate.js.map +3 -3
  181. package/dist/commands/version.js +8 -12
  182. package/dist/commands/version.js.map +2 -2
  183. package/dist/commands/visualize.js +162 -25
  184. package/dist/commands/visualize.js.map +2 -2
  185. package/dist/core/base-snapshot-manager.js +84 -0
  186. package/dist/core/base-snapshot-manager.js.map +7 -0
  187. package/dist/core/changeset-exporter.js +305 -0
  188. package/dist/core/changeset-exporter.js.map +7 -0
  189. package/dist/core/changeset-validator.js +41 -0
  190. package/dist/core/changeset-validator.js.map +7 -0
  191. package/dist/core/changeset.js +88 -173
  192. package/dist/core/changeset.js.map +2 -2
  193. package/dist/core/dependency-tracker.js +4 -2
  194. package/dist/core/dependency-tracker.js.map +2 -2
  195. package/dist/core/element.js +98 -27
  196. package/dist/core/element.js.map +2 -2
  197. package/dist/core/golden-copy-cache.js +290 -0
  198. package/dist/core/golden-copy-cache.js.map +7 -0
  199. package/dist/core/graph-model.js +266 -0
  200. package/dist/core/graph-model.js.map +7 -0
  201. package/dist/core/layer.js +159 -16
  202. package/dist/core/layer.js.map +2 -2
  203. package/dist/core/layers.js +32 -0
  204. package/dist/core/layers.js.map +7 -0
  205. package/dist/core/manifest.js +32 -11
  206. package/dist/core/manifest.js.map +2 -2
  207. package/dist/core/migration-registry.js +56 -1
  208. package/dist/core/migration-registry.js.map +2 -2
  209. package/dist/core/model.js +424 -217
  210. package/dist/core/model.js.map +3 -3
  211. package/dist/core/mutation-handler.js +179 -0
  212. package/dist/core/mutation-handler.js.map +7 -0
  213. package/dist/core/reference-registry.js +29 -21
  214. package/dist/core/reference-registry.js.map +2 -2
  215. package/dist/core/relationship-catalog.js +189 -0
  216. package/dist/core/relationship-catalog.js.map +7 -0
  217. package/dist/core/relationship-registry.js.map +2 -2
  218. package/dist/core/relationships.js.map +1 -1
  219. package/dist/core/report-data-model.js +285 -0
  220. package/dist/core/report-data-model.js.map +7 -0
  221. package/dist/core/spec-data-service.js +185 -0
  222. package/dist/core/spec-data-service.js.map +7 -0
  223. package/dist/core/spec-loader-types.js +1 -0
  224. package/dist/core/spec-loader-types.js.map +7 -0
  225. package/dist/core/spec-loader.js +234 -0
  226. package/dist/core/spec-loader.js.map +7 -0
  227. package/dist/core/staged-changeset-storage.js +282 -0
  228. package/dist/core/staged-changeset-storage.js.map +7 -0
  229. package/dist/core/staging-area.js +1002 -0
  230. package/dist/core/staging-area.js.map +7 -0
  231. package/dist/core/stats-collector.js +169 -0
  232. package/dist/core/stats-collector.js.map +7 -0
  233. package/dist/core/virtual-projection.js +443 -0
  234. package/dist/core/virtual-projection.js.map +7 -0
  235. package/dist/export/archimate-exporter.js +99 -60
  236. package/dist/export/archimate-exporter.js.map +2 -2
  237. package/dist/export/audit-formatters.js +479 -0
  238. package/dist/export/audit-formatters.js.map +7 -0
  239. package/dist/export/diff-formatters.js +99 -0
  240. package/dist/export/diff-formatters.js.map +7 -0
  241. package/dist/export/export-manager.js.map +2 -2
  242. package/dist/export/graphml-exporter.js +44 -27
  243. package/dist/export/graphml-exporter.js.map +2 -2
  244. package/dist/export/index.js +4 -0
  245. package/dist/export/index.js.map +2 -2
  246. package/dist/export/json-schema-exporter.js +55 -42
  247. package/dist/export/json-schema-exporter.js.map +2 -2
  248. package/dist/export/markdown-exporter.js +92 -70
  249. package/dist/export/markdown-exporter.js.map +2 -2
  250. package/dist/export/markdown-generator.js +248 -0
  251. package/dist/export/markdown-generator.js.map +7 -0
  252. package/dist/export/markdown-utils.js +30 -0
  253. package/dist/export/markdown-utils.js.map +7 -0
  254. package/dist/export/mermaid-markdown-exporter.js +37 -0
  255. package/dist/export/mermaid-markdown-exporter.js.map +7 -0
  256. package/dist/export/openapi-exporter.js +119 -71
  257. package/dist/export/openapi-exporter.js.map +2 -2
  258. package/dist/export/plantuml-exporter.js +104 -39
  259. package/dist/export/plantuml-exporter.js.map +2 -2
  260. package/dist/export/report-formatters.js +111 -0
  261. package/dist/export/report-formatters.js.map +7 -0
  262. package/dist/export/stats-formatters.js +98 -0
  263. package/dist/export/stats-formatters.js.map +7 -0
  264. package/dist/export/types.js +2 -14
  265. package/dist/export/types.js.map +2 -2
  266. package/dist/export/verify-formatters.js +153 -0
  267. package/dist/export/verify-formatters.js.map +7 -0
  268. package/dist/generated/compiled-validators.js +17 -0
  269. package/dist/generated/compiled-validators.js.map +7 -0
  270. package/dist/generated/index.js +31 -0
  271. package/dist/generated/index.js.map +7 -0
  272. package/dist/generated/layer-registry.js +190 -0
  273. package/dist/generated/layer-registry.js.map +7 -0
  274. package/dist/generated/layer-types.js +7 -0
  275. package/dist/generated/layer-types.js.map +7 -0
  276. package/dist/generated/node-types.js +1719 -0
  277. package/dist/generated/node-types.js.map +7 -0
  278. package/dist/generated/relationship-index.js +14552 -0
  279. package/dist/generated/relationship-index.js.map +7 -0
  280. package/dist/import/archimate-importer.js +166 -0
  281. package/dist/import/archimate-importer.js.map +7 -0
  282. package/dist/import/index.js +47 -0
  283. package/dist/import/index.js.map +7 -0
  284. package/dist/import/openapi-importer.js +143 -0
  285. package/dist/import/openapi-importer.js.map +7 -0
  286. package/dist/import/types.js +1 -0
  287. package/dist/import/types.js.map +7 -0
  288. package/dist/integrations/base-manager.js +311 -0
  289. package/dist/integrations/base-manager.js.map +7 -0
  290. package/dist/integrations/claude-manager.js +360 -0
  291. package/dist/integrations/claude-manager.js.map +7 -0
  292. package/dist/integrations/claude_code/agents/dr-advisor.md +253 -0
  293. package/dist/integrations/claude_code/agents/dr-architect.md +278 -0
  294. package/dist/integrations/claude_code/agents/dr-extractor.md +286 -0
  295. package/dist/integrations/claude_code/commands/dr-changeset.md +657 -0
  296. package/dist/integrations/claude_code/commands/dr-design.md +373 -0
  297. package/dist/integrations/claude_code/commands/dr-info.md +132 -0
  298. package/dist/integrations/claude_code/commands/dr-init.md +251 -0
  299. package/dist/integrations/claude_code/commands/dr-map.md +936 -0
  300. package/dist/integrations/claude_code/commands/dr-model.md +493 -0
  301. package/dist/integrations/claude_code/commands/dr-relate.md +814 -0
  302. package/dist/integrations/claude_code/commands/dr-sync.md +279 -0
  303. package/dist/integrations/claude_code/commands/dr-validate.md +654 -0
  304. package/dist/integrations/claude_code/commands/dr-verify.md +559 -0
  305. package/dist/integrations/claude_code/docs/END_TO_END_WALKTHROUGH.md +903 -0
  306. package/dist/integrations/claude_code/docs/QUICK_START.md +271 -0
  307. package/dist/integrations/claude_code/docs/README.md +347 -0
  308. package/dist/integrations/claude_code/skills/dr_01_motivation_layer/SKILL.md +550 -0
  309. package/dist/integrations/claude_code/skills/dr_02_business_layer/SKILL.md +620 -0
  310. package/dist/integrations/claude_code/skills/dr_03_security_layer/SKILL.md +642 -0
  311. package/dist/integrations/claude_code/skills/dr_04_application_layer/SKILL.md +911 -0
  312. package/dist/integrations/claude_code/skills/dr_05_technology_layer/SKILL.md +836 -0
  313. package/dist/integrations/claude_code/skills/dr_06_api_layer/SKILL.md +933 -0
  314. package/dist/integrations/claude_code/skills/dr_07_data_model_layer/SKILL.md +210 -0
  315. package/dist/integrations/claude_code/skills/dr_08_dataset_layer/SKILL.md +319 -0
  316. package/dist/integrations/claude_code/skills/dr_09_ux_layer/SKILL.md +319 -0
  317. package/dist/integrations/claude_code/skills/dr_10_navigation_layer/SKILL.md +318 -0
  318. package/dist/integrations/claude_code/skills/dr_11_apm_layer/SKILL.md +273 -0
  319. package/dist/integrations/claude_code/skills/dr_12_testing_layer/SKILL.md +273 -0
  320. package/dist/integrations/claude_code/skills/dr_changeset_reviewer/SKILL.md +187 -0
  321. package/dist/integrations/claude_code/skills/dr_codebase_memory/SKILL.md +590 -0
  322. package/dist/integrations/claude_code/skills/dr_engineering_guide/SKILL.md +295 -0
  323. package/dist/integrations/copilot-manager.js +328 -0
  324. package/dist/integrations/copilot-manager.js.map +7 -0
  325. package/dist/integrations/github_copilot/agents/dr-advisor.md +243 -0
  326. package/dist/integrations/github_copilot/agents/dr-architect.md +1567 -0
  327. package/dist/integrations/github_copilot/skills/dr_01_motivation_layer/SKILL.md +491 -0
  328. package/dist/integrations/github_copilot/skills/dr_02_business_layer/SKILL.md +539 -0
  329. package/dist/integrations/github_copilot/skills/dr_03_security_layer/SKILL.md +667 -0
  330. package/dist/integrations/github_copilot/skills/dr_04_application_layer/SKILL.md +670 -0
  331. package/dist/integrations/github_copilot/skills/dr_05_technology_layer/SKILL.md +660 -0
  332. package/dist/integrations/github_copilot/skills/dr_06_api_layer/SKILL.md +855 -0
  333. package/dist/integrations/github_copilot/skills/dr_07_data_model_layer/SKILL.md +171 -0
  334. package/dist/integrations/github_copilot/skills/dr_08_dataset_layer/SKILL.md +216 -0
  335. package/dist/integrations/github_copilot/skills/dr_09_ux_layer/SKILL.md +230 -0
  336. package/dist/integrations/github_copilot/skills/dr_10_navigation_layer/SKILL.md +228 -0
  337. package/dist/integrations/github_copilot/skills/dr_11_apm_layer/SKILL.md +234 -0
  338. package/dist/integrations/github_copilot/skills/dr_12_testing_layer/SKILL.md +230 -0
  339. package/dist/integrations/github_copilot/skills/dr_changeset_reviewer/SKILL.md +187 -0
  340. package/dist/integrations/hash-utils.js +51 -0
  341. package/dist/integrations/hash-utils.js.map +7 -0
  342. package/dist/integrations/types.js +16 -0
  343. package/dist/integrations/types.js.map +7 -0
  344. package/dist/reports/model-layer-report-generator.js +278 -0
  345. package/dist/reports/model-layer-report-generator.js.map +7 -0
  346. package/dist/reports/model-report-data.js +57 -0
  347. package/dist/reports/model-report-data.js.map +7 -0
  348. package/dist/reports/model-report-orchestrator.js +103 -0
  349. package/dist/reports/model-report-orchestrator.js.map +7 -0
  350. package/dist/schemas/bundled/analyzers/cbm.json +595 -0
  351. package/dist/schemas/bundled/analyzers/manifest.json +9 -0
  352. package/dist/schemas/bundled/api.json +3411 -0
  353. package/dist/schemas/bundled/apm.json +2371 -0
  354. package/dist/schemas/bundled/application.json +1253 -0
  355. package/dist/schemas/bundled/base.json +1622 -0
  356. package/dist/schemas/bundled/business.json +1279 -0
  357. package/dist/schemas/bundled/data-model.json +1298 -0
  358. package/dist/schemas/bundled/data-store.json +2025 -0
  359. package/dist/schemas/bundled/manifest.json +93 -0
  360. package/dist/schemas/bundled/motivation.json +1360 -0
  361. package/dist/schemas/bundled/navigation.json +1874 -0
  362. package/dist/schemas/bundled/security.json +3488 -0
  363. package/dist/schemas/bundled/technology.json +2067 -0
  364. package/dist/schemas/bundled/testing.json +3120 -0
  365. package/dist/schemas/bundled/ux.json +3592 -0
  366. package/dist/server/schemas.js +202 -0
  367. package/dist/server/schemas.js.map +7 -0
  368. package/dist/server/server.js +1336 -252
  369. package/dist/server/server.js.map +3 -3
  370. package/dist/server/telemetry-middleware.js +22 -15
  371. package/dist/server/telemetry-middleware.js.map +2 -2
  372. package/dist/server-entry.js +65 -0
  373. package/dist/server-entry.js.map +7 -0
  374. package/dist/telemetry/config.js +89 -0
  375. package/dist/telemetry/config.js.map +7 -0
  376. package/dist/telemetry/console-interceptor.js.map +1 -1
  377. package/dist/telemetry/detect.js +24 -0
  378. package/dist/telemetry/detect.js.map +7 -0
  379. package/dist/telemetry/fetch-otlp-exporter.js +112 -0
  380. package/dist/telemetry/fetch-otlp-exporter.js.map +7 -0
  381. package/dist/telemetry/index.js +153 -3
  382. package/dist/telemetry/index.js.map +2 -2
  383. package/dist/telemetry/resilient-exporter.js +22 -8
  384. package/dist/telemetry/resilient-exporter.js.map +2 -2
  385. package/dist/telemetry/resilient-log-exporter.js +17 -8
  386. package/dist/telemetry/resilient-log-exporter.js.map +2 -2
  387. package/dist/telemetry/test-instrumentation.js.map +2 -2
  388. package/dist/types/index.js +84 -0
  389. package/dist/types/index.js.map +3 -3
  390. package/dist/types/source-reference.js +1 -0
  391. package/dist/types/source-reference.js.map +7 -0
  392. package/dist/utils/chat-logger.js +292 -0
  393. package/dist/utils/chat-logger.js.map +7 -0
  394. package/dist/utils/claude-stream.js +8 -0
  395. package/dist/utils/claude-stream.js.map +7 -0
  396. package/dist/utils/date-utils.js +7 -0
  397. package/dist/utils/date-utils.js.map +7 -0
  398. package/dist/utils/element-utils.js.map +1 -1
  399. package/dist/utils/errors.js +88 -15
  400. package/dist/utils/errors.js.map +3 -3
  401. package/dist/utils/export-python-annotations.js +82 -0
  402. package/dist/utils/export-python-annotations.js.map +7 -0
  403. package/dist/utils/file-io.js +7 -2
  404. package/dist/utils/file-io.js.map +2 -2
  405. package/dist/utils/file-lock.js +156 -0
  406. package/dist/utils/file-lock.js.map +7 -0
  407. package/dist/utils/id-generator.js +18 -0
  408. package/dist/utils/id-generator.js.map +7 -0
  409. package/dist/utils/layer-name-formatter.js +16 -0
  410. package/dist/utils/layer-name-formatter.js.map +7 -0
  411. package/dist/utils/markdown-anchor.js +7 -0
  412. package/dist/utils/markdown-anchor.js.map +7 -0
  413. package/dist/utils/markdown-link.js +12 -0
  414. package/dist/utils/markdown-link.js.map +7 -0
  415. package/dist/utils/markdown-table.js +17 -0
  416. package/dist/utils/markdown-table.js.map +7 -0
  417. package/dist/utils/mermaid-utils.js +11 -0
  418. package/dist/utils/mermaid-utils.js.map +7 -0
  419. package/dist/utils/project-paths.js.map +2 -2
  420. package/dist/utils/source-reference.js +52 -0
  421. package/dist/utils/source-reference.js.map +7 -0
  422. package/dist/utils/spec-installer.js +40 -53
  423. package/dist/utils/spec-installer.js.map +2 -2
  424. package/dist/utils/spec-version.js +5 -1
  425. package/dist/utils/spec-version.js.map +2 -2
  426. package/dist/utils/string-utils.js +12 -0
  427. package/dist/utils/string-utils.js.map +7 -0
  428. package/dist/utils/table-formatting.js +19 -0
  429. package/dist/utils/table-formatting.js.map +7 -0
  430. package/dist/validators/index.js +4 -0
  431. package/dist/validators/index.js.map +2 -2
  432. package/dist/validators/naming-validator.js +20 -23
  433. package/dist/validators/naming-validator.js.map +2 -2
  434. package/dist/validators/reference-validator.js +23 -38
  435. package/dist/validators/reference-validator.js.map +2 -2
  436. package/dist/validators/relationship-schema-validator.js +243 -0
  437. package/dist/validators/relationship-schema-validator.js.map +7 -0
  438. package/dist/validators/schema-validator.js +168 -68
  439. package/dist/validators/schema-validator.js.map +2 -2
  440. package/dist/validators/semantic-validator.js +36 -60
  441. package/dist/validators/semantic-validator.js.map +2 -2
  442. package/dist/validators/types.js.map +2 -2
  443. package/dist/validators/validation-formatter.js +159 -0
  444. package/dist/validators/validation-formatter.js.map +7 -0
  445. package/dist/validators/validator.js +24 -38
  446. package/dist/validators/validator.js.map +2 -2
  447. package/dist/viewer/README.md +139 -0
  448. package/dist/viewer/assets/main-CY0Xufuj.css +1 -0
  449. package/dist/viewer/assets/main-DtgErnwF.js +81 -0
  450. package/dist/viewer/assets/vendor-CxKvDp2x.js +17 -0
  451. package/dist/viewer/favicon.svg +11 -0
  452. package/dist/viewer/fonts/inter/Inter-Black.woff2 +0 -0
  453. package/dist/viewer/fonts/inter/Inter-Bold.woff2 +0 -0
  454. package/dist/viewer/fonts/inter/Inter-ExtraBold.woff2 +0 -0
  455. package/dist/viewer/fonts/inter/Inter-Light.woff2 +0 -0
  456. package/dist/viewer/fonts/inter/Inter-Medium.woff2 +0 -0
  457. package/dist/viewer/fonts/inter/Inter-Regular.woff2 +0 -0
  458. package/dist/viewer/fonts/inter/Inter-SemiBold.woff2 +0 -0
  459. package/dist/viewer/fonts/jetbrains-mono/JetBrainsMono-Medium.woff2 +0 -0
  460. package/dist/viewer/fonts/jetbrains-mono/JetBrainsMono-Regular.woff2 +0 -0
  461. package/dist/viewer/fonts/jetbrains-mono/JetBrainsMono-SemiBold.woff2 +0 -0
  462. package/dist/viewer/index.html +15 -0
  463. package/dist/viewer/manifest.json +99 -0
  464. package/dist/viewer/version.json +1 -0
  465. package/package.json +42 -16
  466. package/PYTHON_CLI_PARITY.md +0 -265
  467. package/PYTHON_CLI_STRUCTURE_UPDATE.md +0 -246
  468. package/biome.json +0 -42
  469. package/bunfig.toml +0 -3
  470. package/dist/ai/claude-client.js +0 -71
  471. package/dist/ai/claude-client.js.map +0 -7
  472. package/dist/ai/context-provider.js +0 -129
  473. package/dist/ai/context-provider.js.map +0 -7
  474. package/dist/ai/tools.js +0 -231
  475. package/dist/ai/tools.js.map +0 -7
  476. package/dist/commands/migrate.js +0 -36
  477. package/dist/commands/migrate.js.map +0 -7
  478. package/dist/commands/project.js +0 -74
  479. package/dist/commands/project.js.map +0 -7
  480. package/dist/core/active-changeset.js +0 -52
  481. package/dist/core/active-changeset.js.map +0 -7
  482. package/dist/core/projection-engine.js +0 -288
  483. package/dist/core/projection-engine.js.map +0 -7
  484. package/dist/schemas/bundled/01-motivation-layer.schema.json +0 -942
  485. package/dist/schemas/bundled/02-business-layer.schema.json +0 -1293
  486. package/dist/schemas/bundled/03-security-layer.schema.json +0 -2177
  487. package/dist/schemas/bundled/04-application-layer.schema.json +0 -1328
  488. package/dist/schemas/bundled/05-technology-layer.schema.json +0 -1465
  489. package/dist/schemas/bundled/06-api-layer.schema.json +0 -1743
  490. package/dist/schemas/bundled/07-data-model-layer.schema.json +0 -1253
  491. package/dist/schemas/bundled/08-datastore-layer.schema.json +0 -892
  492. package/dist/schemas/bundled/09-ux-layer.schema.json +0 -1506
  493. package/dist/schemas/bundled/10-navigation-layer.schema.json +0 -843
  494. package/dist/schemas/bundled/11-apm-observability-layer.schema.json +0 -1430
  495. package/dist/schemas/bundled/12-testing-layer.schema.json +0 -1091
  496. package/dist/schemas/bundled/common/layer-extensions.schema.json +0 -266
  497. package/dist/schemas/bundled/common/predicates.schema.json +0 -493
  498. package/dist/schemas/bundled/common/relationships.schema.json +0 -791
  499. package/dist/schemas/bundled/common/source-references.schema.json +0 -71
  500. package/dist/schemas/bundled/link-registry.json +0 -1839
  501. package/dist/schemas/bundled/link-registry.schema.json +0 -339
  502. package/dist/schemas/bundled/relationship-catalog.json +0 -1302
  503. package/dist/schemas/bundled/relationship-type.schema.json +0 -221
  504. package/dist/utils/model-path.js +0 -22
  505. package/dist/utils/model-path.js.map +0 -7
  506. package/docs/TEST-INSTRUMENTATION.md +0 -405
  507. package/docs/telemetry.md +0 -427
  508. package/test-debug.js +0 -33
  509. package/test-special.mjs +0 -46
  510. package/test_runner.ts +0 -7
@@ -1,41 +1,64 @@
1
1
  import { escapeXml } from "./types.js";
2
+ import { isTelemetryEnabled, startSpan, endSpan } from "../telemetry/index.js";
3
+ import { getErrorMessage } from "../utils/errors.js";
2
4
  class ArchiMateExporter {
3
5
  name = "ArchiMate";
4
6
  supportedLayers = ["motivation", "business", "application", "technology"];
5
7
  async export(model, options = {}) {
6
- const lines = [];
7
- lines.push('<?xml version="1.0" encoding="UTF-8"?>'), lines.push('<model xmlns="http://www.opengroup.org/xsd/archimate/3.0/"'), lines.push(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"'), lines.push(' xsi:schemaLocation="http://www.opengroup.org/xsd/archimate/3.0/ http://www.opengroup.org/xsd/archimate/3.1/archimate3_Diagram.xsd">'), lines.push(` <name>${escapeXml(model.manifest.name)}</name>`), model.manifest.description && lines.push(` <documentation>${escapeXml(model.manifest.description)}</documentation>`), lines.push(" <elements>");
8
- const layersToExport = options.layers || this.supportedLayers, elements = [];
9
- for (const layerName of layersToExport) {
10
- if (!this.supportedLayers.includes(layerName))
11
- continue;
12
- const layer = await model.getLayer(layerName);
13
- if (layer)
14
- for (const element of layer.listElements())
15
- elements.push({ layer: layerName, element });
16
- }
17
- for (const { layer, element } of elements) {
18
- const archiType = this.mapToArchiMateType(element.type, layer);
19
- lines.push(` <element identifier="${element.id}" xsi:type="${archiType}">`), lines.push(` <name>${escapeXml(element.name)}</name>`), element.description && lines.push(` <documentation>${escapeXml(element.description)}</documentation>`);
20
- const propKeys = Object.keys(element.properties);
21
- if (propKeys.length > 0) {
22
- const propsStr = propKeys.map((key) => {
23
- const val = element.properties[key];
24
- return `${key}: ${this.valueToString(val)}`;
25
- }).join("; ");
26
- propsStr && lines.push(` <documentation>Properties: ${escapeXml(propsStr)}</documentation>`);
8
+ const span = isTelemetryEnabled ? startSpan("export.format.archimate", {
9
+ "export.layerCount": options.layers?.length || this.supportedLayers.length
10
+ }) : null;
11
+ try {
12
+ const lines = [];
13
+ lines.push('<?xml version="1.0" encoding="UTF-8"?>'), lines.push('<model xmlns="http://www.opengroup.org/xsd/archimate/3.0/"'), lines.push(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"'), lines.push(' xsi:schemaLocation="http://www.opengroup.org/xsd/archimate/3.0/ http://www.opengroup.org/xsd/archimate/3.1/archimate3_Diagram.xsd">'), lines.push(` <name>${escapeXml(model.manifest.name)}</name>`), model.manifest.description && lines.push(` <documentation>${escapeXml(model.manifest.description)}</documentation>`), lines.push(" <elements>");
14
+ const layersToExport = options.layers || this.supportedLayers, elementsByLayer = [];
15
+ for (const layerName of layersToExport) {
16
+ if (!this.supportedLayers.includes(layerName))
17
+ continue;
18
+ const layer = await model.getLayer(layerName);
19
+ if (!layer)
20
+ continue;
21
+ const layerElements = layer.listElements();
22
+ for (const element of layerElements)
23
+ elementsByLayer.push({ layer: layerName, element });
27
24
  }
28
- lines.push(" </element>");
29
- }
30
- lines.push(" </elements>"), lines.push(" <relationships>");
31
- for (const { element } of elements) {
32
- for (const ref of element.references)
33
- lines.push(` <relationship identifier="${this.escapeId(element.id)}-ref-${this.escapeId(ref.target)}" `), lines.push(` source="${element.id}" target="${ref.target}" `), lines.push(' xsi:type="Association">'), ref.description && lines.push(` <documentation>${escapeXml(ref.description)}</documentation>`), lines.push(` <name>${ref.type}</name>`), lines.push(" </relationship>");
34
- for (const rel of element.relationships)
35
- lines.push(` <relationship identifier="${this.escapeId(element.id)}-${this.escapeId(rel.predicate)}-${this.escapeId(rel.target)}" `), lines.push(` source="${element.id}" target="${rel.target}" `), lines.push(' xsi:type="Association">'), lines.push(` <name>${rel.predicate}</name>`), lines.push(" </relationship>");
36
- }
37
- return lines.push(" </relationships>"), lines.push("</model>"), lines.join(`
25
+ isTelemetryEnabled && span && span.setAttribute("export.elementCount", elementsByLayer.length);
26
+ for (const { layer, element } of elementsByLayer) {
27
+ const archiType = this.mapToArchiMateType(element.type, layer);
28
+ if (lines.push(` <element identifier="${element.path}" xsi:type="${archiType}">`), lines.push(` <name>${escapeXml(element.name)}</name>`), element.description && lines.push(` <documentation>${escapeXml(element.description)}</documentation>`), lines.push(" <properties>"), element.source_reference) {
29
+ const flattenedProps = this.flattenSourceReference(element.source_reference);
30
+ for (const [flatKey, flatValue] of Object.entries(flattenedProps))
31
+ lines.push(` <property key="${escapeXml(flatKey)}" value="${escapeXml(String(flatValue))}" />`);
32
+ }
33
+ const attrKeys = Object.keys(element.attributes || {});
34
+ if (attrKeys.length > 0)
35
+ for (const key of attrKeys) {
36
+ const val = element.attributes?.[key], strValue = this.valueToString(val);
37
+ lines.push(` <property key="${escapeXml(key)}" value="${escapeXml(strValue)}" />`);
38
+ }
39
+ lines.push(" </properties>"), lines.push(" </element>");
40
+ }
41
+ lines.push(" </elements>"), lines.push(" <relationships>");
42
+ let relationshipCount = 0;
43
+ const elementIds = new Set(elementsByLayer.map((e) => e.element.path));
44
+ for (const rel of model.relationships.getAll()) {
45
+ if (!elementIds.has(rel.source) || !elementIds.has(rel.target))
46
+ continue;
47
+ const relId = this.escapeId(`${rel.source}-${rel.predicate}-${rel.target}`);
48
+ lines.push(` <relationship identifier="${relId}" `), lines.push(` source="${rel.source}" target="${rel.target}" `), lines.push(' xsi:type="Association">'), lines.push(` <name>${rel.predicate}</name>`), lines.push(" </relationship>"), relationshipCount++;
49
+ }
50
+ lines.push(" </relationships>"), lines.push("</model>");
51
+ const result = lines.join(`
38
52
  `);
53
+ return isTelemetryEnabled && span && (span.setAttribute("export.relationshipCount", relationshipCount), span.setAttribute("export.size", result.length), span.setStatus({ code: 0 })), result;
54
+ } catch (error) {
55
+ throw isTelemetryEnabled && span && (span.recordException(error), span.setStatus({
56
+ code: 2,
57
+ message: getErrorMessage(error)
58
+ })), error;
59
+ } finally {
60
+ endSpan(span);
61
+ }
39
62
  }
40
63
  /**
41
64
  * Map element type and layer to ArchiMate type
@@ -50,44 +73,49 @@ class ArchiMateExporter {
50
73
  outcome: "Outcome",
51
74
  principle: "Principle",
52
75
  requirement: "Requirement",
53
- constraint: "Constraint"
76
+ constraint: "Constraint",
77
+ meaning: "Meaning",
78
+ value: "Value"
54
79
  },
55
80
  business: {
56
- "business-actor": "BusinessActor",
57
- "business-role": "BusinessRole",
58
- "business-collaboration": "BusinessCollaboration",
59
- "business-interface": "BusinessInterface",
60
- "business-process": "BusinessProcess",
61
- "business-function": "BusinessFunction",
62
- "business-interaction": "BusinessInteraction",
63
- "business-event": "BusinessEvent",
64
- "business-service": "BusinessService",
65
- "business-object": "BusinessObject"
81
+ businessactor: "BusinessActor",
82
+ businessrole: "BusinessRole",
83
+ businesscollaboration: "BusinessCollaboration",
84
+ businessinterface: "BusinessInterface",
85
+ businessprocess: "BusinessProcess",
86
+ businessfunction: "BusinessFunction",
87
+ businessinteraction: "BusinessInteraction",
88
+ businessevent: "BusinessEvent",
89
+ businessservice: "BusinessService",
90
+ businessobject: "BusinessObject",
91
+ contract: "Contract",
92
+ product: "Product",
93
+ representation: "Representation"
66
94
  },
67
95
  application: {
68
- "application-component": "ApplicationComponent",
69
- "application-collaboration": "ApplicationCollaboration",
70
- "application-interface": "ApplicationInterface",
71
- "application-function": "ApplicationFunction",
72
- "application-interaction": "ApplicationInteraction",
73
- "application-process": "ApplicationProcess",
74
- "application-event": "ApplicationEvent",
75
- "application-service": "ApplicationService",
76
- "data-object": "DataObject"
96
+ applicationcomponent: "ApplicationComponent",
97
+ applicationcollaboration: "ApplicationCollaboration",
98
+ applicationinterface: "ApplicationInterface",
99
+ applicationfunction: "ApplicationFunction",
100
+ applicationinteraction: "ApplicationInteraction",
101
+ applicationprocess: "ApplicationProcess",
102
+ applicationevent: "ApplicationEvent",
103
+ applicationservice: "ApplicationService",
104
+ dataobject: "DataObject"
77
105
  },
78
106
  technology: {
79
107
  node: "Node",
80
108
  device: "Device",
81
- "system-software": "SystemSoftware",
82
- "technology-collaboration": "TechnologyCollaboration",
83
- "technology-interface": "TechnologyInterface",
109
+ systemsoftware: "SystemSoftware",
110
+ technologycollaboration: "TechnologyCollaboration",
111
+ technologyinterface: "TechnologyInterface",
84
112
  path: "Path",
85
- "communication-network": "CommunicationNetwork",
86
- "technology-function": "TechnologyFunction",
87
- "technology-process": "TechnologyProcess",
88
- "technology-interaction": "TechnologyInteraction",
89
- "technology-event": "TechnologyEvent",
90
- "technology-service": "TechnologyService",
113
+ communicationnetwork: "CommunicationNetwork",
114
+ technologyfunction: "TechnologyFunction",
115
+ technologyprocess: "TechnologyProcess",
116
+ technologyinteraction: "TechnologyInteraction",
117
+ technologyevent: "TechnologyEvent",
118
+ technologyservice: "TechnologyService",
91
119
  artifact: "Artifact"
92
120
  }
93
121
  }[layer]?.[type] || "Element";
@@ -104,6 +132,17 @@ class ArchiMateExporter {
104
132
  valueToString(value) {
105
133
  return typeof value == "string" ? value : typeof value == "number" || typeof value == "boolean" ? String(value) : Array.isArray(value) ? `[${value.map((v) => this.valueToString(v)).join(", ")}]` : value && typeof value == "object" ? JSON.stringify(value) : String(value);
106
134
  }
135
+ /**
136
+ * Flatten source reference structure into ArchiMate properties
137
+ * Converts nested structure like { provenance: "extracted", locations: [...] }
138
+ * into flat properties like "source.provenance", "source.file.0", etc.
139
+ */
140
+ flattenSourceReference(sourceRef) {
141
+ const props = {};
142
+ return !sourceRef || typeof sourceRef != "object" || (sourceRef.provenance && (props["source.provenance"] = sourceRef.provenance), Array.isArray(sourceRef.locations) && sourceRef.locations.forEach((location, index) => {
143
+ location.file && (props[`source.file.${index}`] = location.file), location.symbol && (props[`source.symbol.${index}`] = location.symbol), location.line !== void 0 && (props[`source.line.${index}`] = String(location.line)), location.column !== void 0 && (props[`source.column.${index}`] = String(location.column));
144
+ }), sourceRef.repository && (sourceRef.repository.url && (props["source.repository.url"] = sourceRef.repository.url), sourceRef.repository.commit && (props["source.repository.commit"] = sourceRef.repository.commit), sourceRef.repository.branch && (props["source.repository.branch"] = sourceRef.repository.branch))), props;
145
+ }
107
146
  }
108
147
  export {
109
148
  ArchiMateExporter
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/export/archimate-exporter.ts"],
4
- "sourcesContent": ["import type { Model } from \"../core/model.js\";\nimport type { Exporter, ExportOptions } from \"./types.js\";\nimport { escapeXml } from \"./types.js\";\n\n/**\n * ArchiMate XML Exporter for layers 1, 2, 4, 5\n * Generates valid ArchiMate 3.2 XML format\n */\nexport class ArchiMateExporter implements Exporter {\n name = \"ArchiMate\";\n supportedLayers = [\"motivation\", \"business\", \"application\", \"technology\"];\n\n async export(model: Model, options: ExportOptions = {}): Promise<string> {\n const lines: string[] = [];\n\n // XML declaration\n lines.push('<?xml version=\"1.0\" encoding=\"UTF-8\"?>');\n\n // Root element with namespaces\n lines.push(\n '<model xmlns=\"http://www.opengroup.org/xsd/archimate/3.0/\"'\n );\n lines.push(\n ' xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"'\n );\n lines.push(\n ' xsi:schemaLocation=\"http://www.opengroup.org/xsd/archimate/3.0/ http://www.opengroup.org/xsd/archimate/3.1/archimate3_Diagram.xsd\">'\n );\n\n // Model metadata\n lines.push(` <name>${escapeXml(model.manifest.name)}</name>`);\n if (model.manifest.description) {\n lines.push(\n ` <documentation>${escapeXml(model.manifest.description)}</documentation>`\n );\n }\n\n // Export elements\n lines.push(\" <elements>\");\n\n const layersToExport = options.layers || this.supportedLayers;\n const elements: Array<{ layer: string; element: any }> = [];\n\n for (const layerName of layersToExport) {\n if (!this.supportedLayers.includes(layerName)) continue;\n\n const layer = await model.getLayer(layerName);\n if (!layer) continue;\n\n for (const element of layer.listElements()) {\n elements.push({ layer: layerName, element });\n }\n }\n\n for (const { layer, element } of elements) {\n const archiType = this.mapToArchiMateType(element.type, layer);\n lines.push(` <element identifier=\"${element.id}\" xsi:type=\"${archiType}\">`);\n lines.push(` <name>${escapeXml(element.name)}</name>`);\n\n if (element.description) {\n lines.push(\n ` <documentation>${escapeXml(element.description)}</documentation>`\n );\n }\n\n // Add properties as additional attributes or documentation\n const propKeys = Object.keys(element.properties);\n if (propKeys.length > 0) {\n const propsStr = propKeys\n .map((key) => {\n const val = element.properties[key];\n return `${key}: ${this.valueToString(val)}`;\n })\n .join(\"; \");\n if (propsStr) {\n lines.push(\n ` <documentation>Properties: ${escapeXml(propsStr)}</documentation>`\n );\n }\n }\n\n lines.push(\" </element>\");\n }\n\n lines.push(\" </elements>\");\n\n // Export relationships and references\n lines.push(\" <relationships>\");\n\n for (const { element } of elements) {\n // Handle cross-layer references\n for (const ref of element.references) {\n lines.push(\n ` <relationship identifier=\"${this.escapeId(element.id)}-ref-${this.escapeId(ref.target)}\" `\n );\n lines.push(` source=\"${element.id}\" target=\"${ref.target}\" `);\n lines.push(` xsi:type=\"Association\">`);\n if (ref.description) {\n lines.push(\n ` <documentation>${escapeXml(ref.description)}</documentation>`\n );\n }\n lines.push(` <name>${ref.type}</name>`);\n lines.push(` </relationship>`);\n }\n\n // Handle intra-layer relationships\n for (const rel of element.relationships) {\n lines.push(\n ` <relationship identifier=\"${this.escapeId(element.id)}-${this.escapeId(rel.predicate)}-${this.escapeId(rel.target)}\" `\n );\n lines.push(` source=\"${element.id}\" target=\"${rel.target}\" `);\n lines.push(` xsi:type=\"Association\">`);\n lines.push(` <name>${rel.predicate}</name>`);\n lines.push(` </relationship>`);\n }\n }\n\n lines.push(\" </relationships>\");\n lines.push(\"</model>\");\n\n return lines.join(\"\\n\");\n }\n\n /**\n * Map element type and layer to ArchiMate type\n */\n private mapToArchiMateType(type: string, layer: string): string {\n const mapping: Record<string, Record<string, string>> = {\n motivation: {\n stakeholder: \"Stakeholder\",\n driver: \"Driver\",\n assessment: \"Assessment\",\n goal: \"Goal\",\n outcome: \"Outcome\",\n principle: \"Principle\",\n requirement: \"Requirement\",\n constraint: \"Constraint\",\n },\n business: {\n \"business-actor\": \"BusinessActor\",\n \"business-role\": \"BusinessRole\",\n \"business-collaboration\": \"BusinessCollaboration\",\n \"business-interface\": \"BusinessInterface\",\n \"business-process\": \"BusinessProcess\",\n \"business-function\": \"BusinessFunction\",\n \"business-interaction\": \"BusinessInteraction\",\n \"business-event\": \"BusinessEvent\",\n \"business-service\": \"BusinessService\",\n \"business-object\": \"BusinessObject\",\n },\n application: {\n \"application-component\": \"ApplicationComponent\",\n \"application-collaboration\": \"ApplicationCollaboration\",\n \"application-interface\": \"ApplicationInterface\",\n \"application-function\": \"ApplicationFunction\",\n \"application-interaction\": \"ApplicationInteraction\",\n \"application-process\": \"ApplicationProcess\",\n \"application-event\": \"ApplicationEvent\",\n \"application-service\": \"ApplicationService\",\n \"data-object\": \"DataObject\",\n },\n technology: {\n node: \"Node\",\n device: \"Device\",\n \"system-software\": \"SystemSoftware\",\n \"technology-collaboration\": \"TechnologyCollaboration\",\n \"technology-interface\": \"TechnologyInterface\",\n path: \"Path\",\n \"communication-network\": \"CommunicationNetwork\",\n \"technology-function\": \"TechnologyFunction\",\n \"technology-process\": \"TechnologyProcess\",\n \"technology-interaction\": \"TechnologyInteraction\",\n \"technology-event\": \"TechnologyEvent\",\n \"technology-service\": \"TechnologyService\",\n artifact: \"Artifact\",\n },\n };\n\n return mapping[layer]?.[type] || \"Element\";\n }\n\n /**\n * Escape ID characters for use in identifiers\n */\n private escapeId(str: string): string {\n return str.replace(/[^a-zA-Z0-9_-]/g, \"_\");\n }\n\n /**\n * Convert value to string representation\n */\n private valueToString(value: unknown): string {\n if (typeof value === \"string\") return value;\n if (typeof value === \"number\") return String(value);\n if (typeof value === \"boolean\") return String(value);\n if (Array.isArray(value)) return `[${value.map((v) => this.valueToString(v)).join(\", \")}]`;\n if (value && typeof value === \"object\") {\n return JSON.stringify(value);\n }\n return String(value);\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import type { Model } from \"../core/model.js\";\nimport type { Exporter, ExportOptions } from \"./types.js\";\nimport { escapeXml } from \"./types.js\";\nimport { isTelemetryEnabled, startSpan, endSpan } from \"../telemetry/index.js\";\nimport { getErrorMessage } from \"../utils/errors.js\";\n\n/**\n * ArchiMate XML Exporter for layers 1, 2, 4, 5\n * Generates valid ArchiMate 3.2 XML format\n */\nexport class ArchiMateExporter implements Exporter {\n name = \"ArchiMate\";\n supportedLayers = [\"motivation\", \"business\", \"application\", \"technology\"];\n\n async export(model: Model, options: ExportOptions = {}): Promise<string> {\n const span = isTelemetryEnabled\n ? startSpan(\"export.format.archimate\", {\n \"export.layerCount\": options.layers?.length || this.supportedLayers.length,\n })\n : null;\n\n try {\n const lines: string[] = [];\n\n // XML declaration\n lines.push('<?xml version=\"1.0\" encoding=\"UTF-8\"?>');\n\n // Root element with namespaces\n lines.push('<model xmlns=\"http://www.opengroup.org/xsd/archimate/3.0/\"');\n lines.push(' xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"');\n lines.push(\n ' xsi:schemaLocation=\"http://www.opengroup.org/xsd/archimate/3.0/ http://www.opengroup.org/xsd/archimate/3.1/archimate3_Diagram.xsd\">'\n );\n\n // Model metadata\n lines.push(` <name>${escapeXml(model.manifest.name)}</name>`);\n if (model.manifest.description) {\n lines.push(` <documentation>${escapeXml(model.manifest.description)}</documentation>`);\n }\n\n // Export elements - load from each layer directly\n lines.push(\" <elements>\");\n\n const layersToExport = options.layers || this.supportedLayers;\n const elementsByLayer: Array<{ layer: string; element: any }> = [];\n\n // Load elements from each supported layer\n for (const layerName of layersToExport) {\n if (!this.supportedLayers.includes(layerName)) continue;\n\n const layer = await model.getLayer(layerName);\n if (!layer) continue;\n const layerElements = layer.listElements();\n for (const element of layerElements) {\n elementsByLayer.push({ layer: layerName, element });\n }\n }\n\n if (isTelemetryEnabled && span) {\n (span as any).setAttribute(\"export.elementCount\", elementsByLayer.length);\n }\n\n for (const { layer, element } of elementsByLayer) {\n const archiType = this.mapToArchiMateType(element.type, layer);\n lines.push(` <element identifier=\"${element.path}\" xsi:type=\"${archiType}\">`);\n lines.push(` <name>${escapeXml(element.name)}</name>`);\n\n if (element.description) {\n lines.push(` <documentation>${escapeXml(element.description)}</documentation>`);\n }\n\n // Add properties section\n lines.push(\" <properties>\");\n\n // Handle source_reference from element (if present)\n if (element.source_reference) {\n const flattenedProps = this.flattenSourceReference(element.source_reference);\n for (const [flatKey, flatValue] of Object.entries(flattenedProps)) {\n lines.push(\n ` <property key=\"${escapeXml(flatKey)}\" value=\"${escapeXml(String(flatValue))}\" />`\n );\n }\n }\n\n // Add element attributes as properties\n const attrKeys = Object.keys(element.attributes || {});\n if (attrKeys.length > 0) {\n for (const key of attrKeys) {\n const val = element.attributes?.[key];\n const strValue = this.valueToString(val);\n lines.push(\n ` <property key=\"${escapeXml(key)}\" value=\"${escapeXml(strValue)}\" />`\n );\n }\n }\n\n lines.push(\" </properties>\");\n lines.push(\" </element>\");\n }\n\n lines.push(\" </elements>\");\n\n // Export relationships\n lines.push(\" <relationships>\");\n\n let relationshipCount = 0;\n const elementIds = new Set(elementsByLayer.map((e) => e.element.path));\n\n // Filter relationships to those between exported elements\n for (const rel of model.relationships.getAll()) {\n if (!elementIds.has(rel.source) || !elementIds.has(rel.target)) {\n continue;\n }\n\n const relId = this.escapeId(`${rel.source}-${rel.predicate}-${rel.target}`);\n lines.push(` <relationship identifier=\"${relId}\" `);\n lines.push(` source=\"${rel.source}\" target=\"${rel.target}\" `);\n lines.push(` xsi:type=\"Association\">`);\n lines.push(` <name>${rel.predicate}</name>`);\n lines.push(` </relationship>`);\n relationshipCount++;\n }\n\n lines.push(\" </relationships>\");\n lines.push(\"</model>\");\n\n const result = lines.join(\"\\n\");\n\n if (isTelemetryEnabled && span) {\n (span as any).setAttribute(\"export.relationshipCount\", relationshipCount);\n (span as any).setAttribute(\"export.size\", result.length);\n (span as any).setStatus({ code: 0 });\n }\n\n return result;\n } catch (error) {\n if (isTelemetryEnabled && span) {\n (span as any).recordException(error as Error);\n (span as any).setStatus({\n code: 2,\n message: getErrorMessage(error),\n });\n }\n throw error;\n } finally {\n endSpan(span);\n }\n }\n\n /**\n * Map element type and layer to ArchiMate type\n */\n private mapToArchiMateType(type: string, layer: string): string {\n const mapping: Record<string, Record<string, string>> = {\n motivation: {\n stakeholder: \"Stakeholder\",\n driver: \"Driver\",\n assessment: \"Assessment\",\n goal: \"Goal\",\n outcome: \"Outcome\",\n principle: \"Principle\",\n requirement: \"Requirement\",\n constraint: \"Constraint\",\n meaning: \"Meaning\",\n value: \"Value\",\n },\n business: {\n businessactor: \"BusinessActor\",\n businessrole: \"BusinessRole\",\n businesscollaboration: \"BusinessCollaboration\",\n businessinterface: \"BusinessInterface\",\n businessprocess: \"BusinessProcess\",\n businessfunction: \"BusinessFunction\",\n businessinteraction: \"BusinessInteraction\",\n businessevent: \"BusinessEvent\",\n businessservice: \"BusinessService\",\n businessobject: \"BusinessObject\",\n contract: \"Contract\",\n product: \"Product\",\n representation: \"Representation\",\n },\n application: {\n applicationcomponent: \"ApplicationComponent\",\n applicationcollaboration: \"ApplicationCollaboration\",\n applicationinterface: \"ApplicationInterface\",\n applicationfunction: \"ApplicationFunction\",\n applicationinteraction: \"ApplicationInteraction\",\n applicationprocess: \"ApplicationProcess\",\n applicationevent: \"ApplicationEvent\",\n applicationservice: \"ApplicationService\",\n dataobject: \"DataObject\",\n },\n technology: {\n node: \"Node\",\n device: \"Device\",\n systemsoftware: \"SystemSoftware\",\n technologycollaboration: \"TechnologyCollaboration\",\n technologyinterface: \"TechnologyInterface\",\n path: \"Path\",\n communicationnetwork: \"CommunicationNetwork\",\n technologyfunction: \"TechnologyFunction\",\n technologyprocess: \"TechnologyProcess\",\n technologyinteraction: \"TechnologyInteraction\",\n technologyevent: \"TechnologyEvent\",\n technologyservice: \"TechnologyService\",\n artifact: \"Artifact\",\n },\n };\n\n return mapping[layer]?.[type] || \"Element\";\n }\n\n /**\n * Escape ID characters for use in identifiers\n */\n private escapeId(str: string): string {\n return str.replace(/[^a-zA-Z0-9_-]/g, \"_\");\n }\n\n /**\n * Convert value to string representation\n */\n private valueToString(value: unknown): string {\n if (typeof value === \"string\") return value;\n if (typeof value === \"number\") return String(value);\n if (typeof value === \"boolean\") return String(value);\n if (Array.isArray(value)) return `[${value.map((v) => this.valueToString(v)).join(\", \")}]`;\n if (value && typeof value === \"object\") {\n return JSON.stringify(value);\n }\n return String(value);\n }\n\n /**\n * Flatten source reference structure into ArchiMate properties\n * Converts nested structure like { provenance: \"extracted\", locations: [...] }\n * into flat properties like \"source.provenance\", \"source.file.0\", etc.\n */\n private flattenSourceReference(sourceRef: any): Record<string, string> {\n const props: Record<string, string> = {};\n\n if (!sourceRef || typeof sourceRef !== \"object\") {\n return props;\n }\n\n // Add provenance\n if (sourceRef.provenance) {\n props[\"source.provenance\"] = sourceRef.provenance;\n }\n\n // Add locations\n if (Array.isArray(sourceRef.locations)) {\n sourceRef.locations.forEach((location: any, index: number) => {\n if (location.file) {\n props[`source.file.${index}`] = location.file;\n }\n if (location.symbol) {\n props[`source.symbol.${index}`] = location.symbol;\n }\n if (location.line !== undefined) {\n props[`source.line.${index}`] = String(location.line);\n }\n if (location.column !== undefined) {\n props[`source.column.${index}`] = String(location.column);\n }\n });\n }\n\n // Add repository info\n if (sourceRef.repository) {\n if (sourceRef.repository.url) {\n props[\"source.repository.url\"] = sourceRef.repository.url;\n }\n if (sourceRef.repository.commit) {\n props[\"source.repository.commit\"] = sourceRef.repository.commit;\n }\n if (sourceRef.repository.branch) {\n props[\"source.repository.branch\"] = sourceRef.repository.branch;\n }\n }\n\n return props;\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }