@documentation-robotics/cli 0.1.0 → 0.1.5

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 +206 -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 +155 -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 +37 -13
  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
package/dist/cli.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { Command } from "commander";
2
+ import { Command, CommanderError } from "commander";
3
3
  import { setGlobalOptions } from "./utils/globals.js";
4
4
  import { initCommand } from "./commands/init.js";
5
5
  import { addCommand } from "./commands/add.js";
@@ -10,77 +10,104 @@ import { listCommand } from "./commands/list.js";
10
10
  import { searchCommand } from "./commands/search.js";
11
11
  import { validateCommand } from "./commands/validate.js";
12
12
  import { infoCommand } from "./commands/info.js";
13
- import { elementCommands } from "./commands/element.js";
14
13
  import { relationshipCommands } from "./commands/relationship.js";
14
+ import { elementCommands } from "./commands/element.js";
15
+ import { schemaCommands } from "./commands/schema.js";
16
+ import { catalogCommands } from "./commands/catalog.js";
17
+ import { docsCommands } from "./commands/docs.js";
15
18
  import { traceCommand } from "./commands/trace.js";
16
- import { projectCommand, projectAllCommand } from "./commands/project.js";
17
19
  import { exportCommand } from "./commands/export.js";
20
+ import { importCommand } from "./commands/import.js";
18
21
  import { chatCommand } from "./commands/chat.js";
19
22
  import { upgradeCommand } from "./commands/upgrade.js";
20
23
  import { conformanceCommand } from "./commands/conformance.js";
21
24
  import { changesetCommands } from "./commands/changeset.js";
25
+ import { claudeCommands } from "./commands/claude.js";
26
+ import { copilotCommands } from "./commands/copilot.js";
27
+ import { analyzerCommands } from "./commands/analyzer.js";
22
28
  import { versionCommand } from "./commands/version.js";
29
+ import { statsCommand } from "./commands/stats.js";
30
+ import { reportCommand } from "./commands/report.js";
31
+ import { reportsCommands } from "./commands/reports.js";
32
+ import { auditCommand } from "./commands/audit.js";
33
+ import { auditDiffCommand } from "./commands/audit-diff.js";
34
+ import { auditSnapshotsCommand } from "./commands/audit-snapshots.js";
23
35
  import { initTelemetry, startActiveSpan, shutdownTelemetry } from "./telemetry/index.js";
24
36
  import { installConsoleInterceptor } from "./telemetry/console-interceptor.js";
25
- import { readJSON, fileExists } from "./utils/file-io.js";
26
- const isTelemetryEnabled = !1;
27
- async function getCliVersion() {
28
- const possiblePaths = [
29
- `${process.cwd()}/package.json`,
30
- `${import.meta.url.replace("file://", "").split("/src/")[0]}/package.json`
31
- ];
32
- for (const path of possiblePaths)
33
- if (await fileExists(path))
34
- try {
35
- return (await readJSON(path)).version;
36
- } catch {
37
- continue;
38
- }
39
- return "0.1.0";
40
- }
41
- const cliVersion = await getCliVersion(), program = new Command();
42
- if (process.argv.includes("--version") || process.argv.includes("-V")) {
43
- const { versionCommand: versionCommand2 } = await import("./commands/version.js");
44
- await versionCommand2(), process.exit(0);
37
+ import { getErrorMessage } from "./utils/errors.js";
38
+ const isTelemetryEnabled = !1, CONSOLE_LOGGING_COMMANDS = /* @__PURE__ */ new Set(["chat", "validate", "import", "export"]);
39
+ async function extractExitCode(error) {
40
+ const { CLIError } = await import("./utils/errors.js");
41
+ if (error instanceof CLIError || error instanceof CommanderError)
42
+ return error.exitCode;
43
+ if (error && typeof error == "object" && "exitCode" in error) {
44
+ const errorObj = error;
45
+ if (typeof errorObj.exitCode == "number" && (errorObj.name === "CLIError" || errorObj.message))
46
+ return process.argv.includes("--debug") && console.warn("[DEBUG] Using duck-typed error object as fallback - this may indicate a module loading issue"), errorObj.exitCode;
47
+ }
48
+ return 1;
45
49
  }
46
- program.name("dr").description("Documentation Robotics CLI - Architecture Model Management").option("-v, --verbose", "Enable verbose output").option("--debug", "Enable debug mode").hook("preAction", async (thisCommand) => {
50
+ const cliVersion = "0.1.5", program = new Command();
51
+ (process.argv.includes("--version") || process.argv.includes("-V")) && (process.argv = ["node", "dr", "version"]), program.name("dr").description("Documentation Robotics CLI - Architecture Model Management").option("-v, --verbose", "Enable verbose output").option("--debug", "Enable debug mode").exitOverride().showSuggestionAfterError().hook("preAction", async (thisCommand) => {
47
52
  const options = thisCommand.opts();
48
53
  setGlobalOptions({
49
54
  verbose: options.verbose,
50
55
  debug: options.debug
51
56
  });
52
- }), program.command("init").description("Initialize a new architecture model").option("--name <name>", "Model name").option("--author <author>", "Model author").option("--description <desc>", "Model description").addHelpText("after", `
57
+ }), program.command("init [name]").description("Initialize a new architecture model").option("--name <name>", "Model name (overrides positional argument)").option("--author <author>", "Model author").option("--description <desc>", "Model description").addHelpText("after", `
53
58
  Examples:
54
59
  $ dr init
55
- $ dr init --name "Enterprise Architecture" --author "Team A"
56
- $ dr init --description "12-layer federated model"`).action(initCommand), program.command("add <layer> <type> <id>").description("Add an element to a layer").option("--name <name>", "Element name (defaults to ID)").option("--description <desc>", "Element description").option("--properties <json>", "Element properties as JSON object").addHelpText("after", `
60
+ $ dr init claudetoreum
61
+ $ dr init "Enterprise Architecture" --author "Team A"
62
+ $ dr init --name "My Project" --description "12-layer federated model"`).action((name, options) => initCommand({ ...options, name: options.name || name })), program.command("add <layer> <type> <name>").description("Add an element to a layer").option("--name <name>", "Element display name (defaults to the name argument)").option("--description <desc>", "Element description").option("--attributes <json>", "Element type-specific attributes as JSON object").option("--source-file <path>", "Source file path (relative from repository root)").option("--source-symbol <name>", "Symbol name (class, function, variable) in source file").option("--source-provenance <type>", "Provenance type: extracted, manual, inferred, generated").option("--source-repo-remote <url>", "Git remote URL for repository context").option("--source-repo-commit <sha>", "Git commit SHA (40 hex characters) for repository context").addHelpText("after", `
57
63
  Examples:
58
- $ dr add business business-service customer-mgmt --name "Customer Management"
59
- $ dr add api endpoint create-customer --properties '{"method":"POST","path":"/customers"}'
60
- $ dr add application component customer-api --description "REST API for customer operations"`).action(addCommand), program.command("update <id>").description("Update an element").option("--name <name>", "New element name").option("--description <desc>", "New description").option("--properties <json>", "Updated properties (JSON)").addHelpText("after", `
64
+ $ dr add business service "Customer Management"
65
+ $ dr add api operation "Create Customer" --attributes '{"operationId":"createCustomer","summary":"Create a customer","tags":"customers"}'
66
+ $ dr add application component "Customer API" --description "REST API for customer operations"
67
+ $ dr add security policy "Auth Validator" --source-file "src/auth/validator.ts" --source-symbol "validateToken" --source-provenance "extracted"
68
+
69
+ Note: Element IDs are generated automatically in format {layer}.{type}.{kebab-name}`).action(addCommand), program.command("update <id>").description("Update an element").option("--name <name>", "New element name").option("--description <desc>", "New description").option("--type <new-type>", "Change element type (must be valid for the element's layer; incompatible attributes must be cleaned up manually)").option("--attributes <json>", "Updated type-specific attributes (JSON)").option("--source-file <path>", "Source file path (relative from repository root)").option("--source-symbol <name>", "Symbol name (class, function, variable) in source file").option("--source-provenance <type>", "Provenance type: extracted, manual, inferred, generated").option("--source-repo-remote <url>", "Git remote URL for repository context").option("--source-repo-commit <sha>", "Git commit SHA (40 hex characters) for repository context").option("--clear-source-reference", "Remove source reference from element").addHelpText("after", `
70
+ Note: Changes are written immediately to model files.
71
+ To track changes for review, activate a changeset first:
72
+ $ dr changeset activate my-changeset
73
+
61
74
  Examples:
62
75
  $ dr update api-endpoint-create-customer --name "Create Customer (v2)"
63
- $ dr update business-service-order --description "Updated description"`).action(updateCommand), program.command("delete <id>").description("Delete an element").option("--force", "Skip confirmation prompt").addHelpText("after", `
76
+ $ dr update business-service-order --description "Updated description"
77
+ $ dr update application-applicationfunction-process-orders --type applicationservice
78
+ $ dr update security-policy-auth --source-file "src/auth/policy.ts" --source-provenance "extracted"`).action(updateCommand), program.command("delete <id>").description("Delete an element").option("--force", "Skip dependency checks (confirmation is also skipped in non-TTY environments)").option("--cascade", "Remove dependent elements automatically").option("--dry-run", "Show what would be removed without actually removing").addHelpText("after", `
64
79
  Examples:
65
80
  $ dr delete api-endpoint-old-endpoint
66
- $ dr delete api-endpoint-old-endpoint --force`).action(deleteCommand), program.command("show <id>").description("Display element details").option("--model <path>", "Path to model root (contains model/manifest.yaml)").addHelpText("after", `
81
+ $ dr delete api-endpoint-old-endpoint --force
82
+ $ dr delete api-endpoint-old-endpoint --cascade
83
+ $ dr delete api-endpoint-old-endpoint --dry-run
84
+ $ dr delete api-endpoint-old-endpoint --cascade --dry-run`).action(deleteCommand), program.command("show <id>").description("Display element details").option("--model <path>", "Path to model root (contains model/manifest.yaml)").addHelpText("after", `
67
85
  Examples:
68
86
  $ dr show api-endpoint-create-customer
69
- $ dr show business-service-order-mgmt`).action((id, options) => showCommand(id, options)), program.command("list <layer>").description("List elements in a layer").option("--type <type>", "Filter by element type").option("--json", "Output as JSON").option("--model <path>", "Path to model root (contains model/manifest.yaml)").addHelpText("after", `
87
+ $ dr show business-service-order-mgmt`).action((id, options) => showCommand(id, options)), program.command("list [layer]").description("List elements in a layer (or all layers if omitted)").option("--type <type>", "Filter by element type").option("--json", "Output as JSON").option("--model <path>", "Path to model root (contains model/manifest.yaml)").addHelpText("after", `
70
88
  Examples:
89
+ $ dr list
71
90
  $ dr list api
72
- $ dr list business --type business-service
73
- $ dr list api --json`).action(listCommand), program.command("search <query>").description("Search for elements by name or ID").option("--layer <layer>", "Limit search to specific layer").option("--type <type>", "Filter by element type").option("--json", "Output as JSON").addHelpText("after", `
91
+ $ dr list business --type businessservice
92
+ $ dr list api --json
93
+ $ dr list --json`).action(listCommand), program.command("search <query>").description("Search for elements by name or ID").option("--layer <layer>", "Limit search to specific layer").option("--type <type>", "Filter by element type").option("--source-file <path>", "Find elements referencing a source file (takes precedence over pattern matching)").option("--json", "Output as JSON").addHelpText("after", `
74
94
  Examples:
75
95
  $ dr search customer
76
96
  $ dr search "order processing" --layer business
77
- $ dr search create-* --type endpoint`).action(searchCommand), program.command("validate").description("Validate the architecture model").option("--layers <layers...>", "Specific layers to validate").option("--strict", "Treat warnings as errors").option("--model <path>", "Path to model root (contains model/manifest.yaml)").option("--all", "Run all validations (default behavior)").option("--markdown", "Validate markdown structure").option("--schemas", "Validate JSON schemas").option("--schema", "Validate JSON schemas (alias for --schemas)").option("--relationships", "Validate relationships").option("--structure", "Validate documentation structure").option("--naming", "Validate naming conventions").option("--references", "Validate cross-layer references").addHelpText("after", `
97
+ $ dr search create-* --type endpoint
98
+ $ dr search "" --source-file src/api/customer.ts`).action(searchCommand), program.command("validate").description("Validate the architecture model").option("--layers <layers...>", "Specific layers to validate").option("--strict", "Treat warnings as errors").option("--verbose", "Show detailed validation output with relationship breakdown").option("--quiet", "Show minimal output").option("--output <path>", "Export validation report to file (JSON or Markdown)").option("--model <path>", "Path to model root (contains model/manifest.yaml)").option("--orphans", "Show only orphaned elements grouped by layer with relationship suggestions").option("--all", "Run all validations (default behavior)").option("--markdown", "Validate markdown structure").option("--schemas", "Validate JSON schemas").option("--schema", "Validate JSON schemas (alias for --schemas)").option("--relationships", "Validate relationships").option("--structure", "Validate documentation structure").option("--naming", "Validate naming conventions").option("--references", "Validate cross-layer references").addHelpText("after", `
78
99
  Examples:
79
100
  $ dr validate
80
101
  $ dr validate --all --strict
102
+ $ dr validate --verbose
103
+ $ dr validate --quiet
104
+ $ dr validate --output report.json
105
+ $ dr validate --output report.md
81
106
  $ dr validate --schemas
82
107
  $ dr validate --relationships
83
- $ dr validate --layers business api`).action(validateCommand), program.command("export <format>").description("Export the architecture model to various formats").option("--output <path>", "Output file path (default: print to stdout)").option("--layers <layers...>", "Specific layers to export").option("--model <path>", "Path to model root directory or manifest.yaml file").addHelpText("after", `
108
+ $ dr validate --layers business api
109
+ $ dr validate --orphans
110
+ $ dr validate --orphans --output orphans.json`).action(validateCommand), program.command("export <format>").description("Export the architecture model to various formats").option("--output <path>", "Output file path (default: print to stdout)").option("--layers <layers...>", "Specific layers to export").option("--model <path>", "Path to model root directory or manifest.yaml file").option("--include-sources", "Include source file paths in PlantUML diagrams as notes").addHelpText("after", `
84
111
  Supported formats:
85
112
  archimate Export to ArchiMate XML (layers 1, 2, 4, 5)
86
113
  openapi Export to OpenAPI 3.0 specification (layer 6)
@@ -92,21 +119,107 @@ Supported formats:
92
119
  Examples:
93
120
  $ dr export archimate --output model.xml
94
121
  $ dr export openapi --layers api
122
+ $ dr export plantuml --include-sources --output diagram.puml
95
123
  $ dr export markdown --output docs/architecture.md`).action(async (format, options) => {
96
124
  await exportCommand({
97
125
  format,
98
126
  output: options.output,
99
127
  layers: options.layers,
100
- model: options.model
128
+ model: options.model,
129
+ includeSources: options.includeSources
130
+ });
131
+ }), program.command("import <format>").description("Import architecture model from various formats").option("--input <path>", "Input file path (required)", void 0).option("--model <path>", "Path to model root directory or manifest.yaml file").option("--merge-strategy <strategy>", "How to handle existing elements: add, update, skip (default: add)").addHelpText("after", `
132
+ Supported formats:
133
+ archimate Import from ArchiMate XML (layers 1, 2, 4, 5)
134
+ openapi Import from OpenAPI 3.0 specification (layer 6)
135
+
136
+ Examples:
137
+ $ dr import archimate --input model.xml
138
+ $ dr import openapi --input api.json --merge-strategy add
139
+ $ dr import archimate --input model.xml --model ./myproject`).action(async (format, options) => {
140
+ options.input || (console.error("Error: --input path is required"), process.exit(1)), await importCommand({
141
+ format,
142
+ input: options.input,
143
+ model: options.model,
144
+ mergeStrategy: options.mergeStrategy
101
145
  });
102
- }), program.command("info").description("Show model information").option("--layer <layer>", "Show specific layer details").addHelpText("after", `
146
+ }), program.command("info").description("Show model information").option("--layer <layer>", "Show specific layer details").option("--verbose", "Show detailed breakdown by element type").addHelpText("after", `
103
147
  Examples:
104
148
  $ dr info
105
- $ dr info --layer business`).action(infoCommand);
106
- const elementGroup = program.command("element").description("Element operations");
107
- elementCommands(elementGroup);
149
+ $ dr info --layer business
150
+ $ dr info --layer api --verbose`).action(infoCommand), program.command("stats").description("Display model statistics and health metrics").option("--model <path>", "Path to the model directory").option("--format <format>", "Output format: text (default), json, markdown, compact").option("--output <path>", "Output file path (auto-detects format from extension)").option("--compact", "Show compact one-line summary").option("--verbose", "Show detailed information").addHelpText("after", `
151
+ Output formats:
152
+ text Full formatted statistics (default)
153
+ json JSON output for automation
154
+ markdown Markdown report format
155
+ compact Single-line summary
156
+
157
+ Examples:
158
+ $ dr stats # Show full statistics
159
+ $ dr stats --compact # Show one-line summary
160
+ $ dr stats --format json # Output as JSON
161
+ $ dr stats --output stats.md # Save as markdown file
162
+ $ dr stats --output stats.json # Save as JSON file
163
+ $ dr stats --verbose # Show detailed information`).action((options) => statsCommand(options)), program.command("report").description("Generate comprehensive architecture reports").option("--model <path>", "Path to the model directory").option("--type <type>", "Report type: comprehensive (default), statistics, relationships, data-model, quality").option("--format <format>", "Output format: text (default), json, markdown").option("--output <path>", "Output file path (auto-detects format from extension)").option("--verbose", "Show detailed information").option("--include-data-model", "Include data model analysis (default: true)").option("--include-quality", "Include quality metrics (default: true)").addHelpText("after", `
164
+ Report types:
165
+ comprehensive Full report with statistics, relationships, and data model (default)
166
+ statistics Statistics and quality metrics
167
+ relationships Relationship analysis and classification
168
+ data-model Layer 7 data model analysis
169
+ quality Quality metrics and recommendations
170
+
171
+ Output formats:
172
+ text Full formatted report (default)
173
+ json JSON output for automation
174
+ markdown Markdown report format
175
+
176
+ Examples:
177
+ $ dr report # Show comprehensive report
178
+ $ dr report --type relationships # Show relationship analysis
179
+ $ dr report --format json # Output as JSON
180
+ $ dr report --output report.md # Save as markdown file
181
+ $ dr report --type data-model --output dm.md # Data model report as markdown
182
+ $ dr report --verbose # Show detailed information`).action((options) => reportCommand(options));
183
+ const reportsGroup = program.command("reports").description("Manage architecture layer reports");
184
+ reportsCommands(reportsGroup), program.command("audit [layer]").description("Analyze relationship coverage, gaps, duplicates, and balance").option("--type <type>", "Audit type: relationships (default), nodes, all").option("--format <format>", "Output format: text (default), json, markdown").option("--output <path>", "Output file path (auto-detects format from extension)").option("--verbose", "Show detailed analysis").option("--save-snapshot", "Save audit report as snapshot for differential analysis").addHelpText("after", `
185
+ Audit types:
186
+ relationships Relationship coverage, gaps, duplicates, balance (default)
187
+ nodes Node type usage distribution across model layers
188
+ all Both relationship and node audits
189
+
190
+ Output formats:
191
+ text Full formatted audit report (default)
192
+ json JSON output for automation
193
+ markdown Markdown audit report format
194
+
195
+ Examples:
196
+ $ dr audit # Full relationship audit of all layers
197
+ $ dr audit security # Audit security layer only
198
+ $ dr audit --type nodes # Node type distribution audit
199
+ $ dr audit --type all # Combined relationship + node audit
200
+ $ dr audit --format json # Output as JSON
201
+ $ dr audit --output audit.md # Save as markdown file
202
+ $ dr audit --verbose # Show detailed analysis
203
+ $ dr audit --save-snapshot # Save snapshot for later comparison
204
+ $ dr audit api --output api-audit.json # API layer audit as JSON`).action((layer, options) => auditCommand({ ...options, layer, verbose: options.verbose ?? program.opts().verbose })), program.command("audit:diff").description("Compare before/after audit snapshots").option("--before <id>", "Before snapshot ID or timestamp").option("--after <id>", "After snapshot ID or timestamp").option("--format <format>", "Output format: text (default), json, markdown").option("--output <path>", "Output file path").option("--verbose", "Show detailed comparison").addHelpText("after", `
205
+ Examples:
206
+ $ dr audit:diff # Compare latest two snapshots
207
+ $ dr audit:diff --before 20260220-100000 --after 20260220-150000
208
+ $ dr audit:diff --format markdown --output diff.md
209
+ $ dr audit:diff --verbose # Show detailed changes`).action((options) => auditDiffCommand(options)), program.command("audit:snapshots <action>").description("Manage audit snapshots (list, delete, clear)").option("--id <id>", "Snapshot ID (for delete action)").addHelpText("after", `
210
+ Actions:
211
+ list List all available snapshots
212
+ delete Delete a specific snapshot (requires --id)
213
+ clear Delete all snapshots
214
+
215
+ Examples:
216
+ $ dr audit:snapshots list
217
+ $ dr audit:snapshots delete --id 20260220-100000
218
+ $ dr audit:snapshots clear`).action((action, options) => auditSnapshotsCommand({ ...options, action }));
108
219
  const relationshipGroup = program.command("relationship").description("Relationship operations");
109
- relationshipCommands(relationshipGroup), program.command("trace <elementId>").description("Trace dependencies for an element").option("--direction <dir>", "Trace direction: up (dependencies), down (dependents), both (default)").option("--depth <num>", "Maximum traversal depth").option("--metrics", "Show graph and element metrics").option("--model <path>", "Path to model root (contains model/manifest.yaml)").addHelpText("after", `
220
+ relationshipCommands(relationshipGroup);
221
+ const elementGroup = program.command("element").description("Element operations");
222
+ elementCommands(elementGroup), schemaCommands(program), catalogCommands(program), docsCommands(program), program.command("trace <elementId>").description("Trace dependencies for an element").option("--direction <dir>", "Trace direction: up (dependencies), down (dependents), both (default)").option("--depth <num>", "Maximum traversal depth").option("--metrics", "Show graph and element metrics").option("--model <path>", "Path to model root (contains model/manifest.yaml)").addHelpText("after", `
110
223
  Examples:
111
224
  $ dr trace api-endpoint-create-customer
112
225
  $ dr trace business-service-order --direction down --metrics
@@ -117,35 +230,23 @@ Examples:
117
230
  showMetrics: options.metrics,
118
231
  model: options.model
119
232
  });
120
- }), program.command("project <elementId> <targetLayers>").description("Project an element to other layers using projection rules").option("--rule <name>", "Specific projection rule to use").option("--dry-run", "Show what would be created without saving").option("--force", "Overwrite existing elements").option("--model <path>", "Path to model directory").addHelpText("after", `
121
- Examples:
122
- $ dr project application.service.api-service "api,data-model"
123
- $ dr project business.process.order-fulfillment application --dry-run
124
- $ dr project api.endpoint.create-order data-model --rule api-to-data`).action(async (elementId, targetLayers, options) => {
125
- await projectCommand(elementId, targetLayers, {
126
- rule: options.rule,
127
- dryRun: options.dryRun,
128
- force: options.force,
129
- model: options.model
130
- });
131
- }), program.command("project-all").description("Project all applicable elements based on rules").option("--from <layer>", "Source layer filter").option("--to <layer>", "Target layer filter").option("--dry-run", "Show what would be created without saving").option("--model <path>", "Path to model directory").addHelpText("after", `
132
- Examples:
133
- $ dr project-all --from application --to api
134
- $ dr project-all --to data-model --dry-run
135
- $ dr project-all`).action(async (options) => {
136
- await projectAllCommand({
137
- from: options.from,
138
- to: options.to,
139
- dryRun: options.dryRun,
140
- model: options.model
141
- });
142
- }), program.command("visualize").description("Launch visualization server with WebSocket support").option("--port <num>", "Server port (default: 8080)").option("--no-browser", "Do not auto-open browser").option("--no-auth", "Disable authentication (enabled by default)").option("--token <token>", "Custom auth token (auto-generated by default)").addHelpText("after", `
233
+ }), program.command("visualize").description("Launch visualization server with WebSocket support").option("--port <num>", "Server port (default: 8080)").option("--no-browser", "Do not auto-open browser").option("--no-auth", "Disable authentication (enabled by default)").option("--token <token>", "Custom auth token (auto-generated by default)").option("--with-danger", "Enable dangerous mode for chat (skip permissions)").option("--viewer-path <path>", "Path to custom viewer build (e.g., ./dist/embedded/dr-viewer-bundle)").addHelpText("after", `
143
234
  Examples:
144
235
  $ dr visualize
145
236
  $ dr visualize --port 3000
146
237
  $ dr visualize --no-browser
147
238
  $ dr visualize --no-auth
148
- $ dr visualize --token my-secret-token`).action(async (options) => {
239
+ $ dr visualize --token my-secret-token
240
+ $ dr visualize --with-danger
241
+ $ dr visualize --viewer-path ./dist/embedded/dr-viewer-bundle
242
+
243
+ The --with-danger flag enables dangerous mode for chat functionality:
244
+ - Claude Code: --dangerously-skip-permissions
245
+ - GitHub Copilot: --allow-all-tools
246
+
247
+ The --viewer-path option allows loading a local build of the web UI:
248
+ - Point to a directory containing index.html and supporting files
249
+ - Useful for developing custom viewers or using bundled distributions`).action(async (options) => {
149
250
  const { visualizeCommand } = await import("./commands/visualize.js");
150
251
  await visualizeCommand({
151
252
  port: options.port,
@@ -153,25 +254,45 @@ Examples:
153
254
  // Commander sets 'browser' to false when --no-browser is used
154
255
  noAuth: options.auth === !1,
155
256
  // Commander sets 'auth' to false when --no-auth is used
156
- token: options.token
257
+ token: options.token,
258
+ withDanger: options.withDanger,
259
+ viewerPath: options.viewerPath
157
260
  });
158
- }), program.command("chat").description("Interactive chat with Claude about the architecture model").addHelpText("after", `
261
+ }), program.command("chat [client] [withDanger]").description("Interactive chat with AI about the architecture model").addHelpText("after", `
262
+ Arguments:
263
+ client Optional AI client to use: "claude-code" or "github-copilot"
264
+ withDanger Enable dangerous mode: "with-danger"
265
+
159
266
  Examples:
160
- $ dr chat
267
+ $ dr chat # Auto-detect or use saved preference
268
+ $ dr chat claude-code # Use Claude Code, save as preference
269
+ $ dr chat github-copilot # Use GitHub Copilot, save as preference
270
+ $ dr chat with-danger # Auto-detect with dangerous mode
271
+ $ dr chat claude-code with-danger # Use Claude Code with dangerous mode
272
+ $ dr chat github-copilot with-danger # Use GitHub Copilot with dangerous mode
273
+
274
+ Dangerous mode enables:
275
+ - Claude Code: --dangerously-skip-permissions
276
+ - GitHub Copilot: --allow-all-tools
161
277
 
162
- This launches an interactive chat interface where you can ask Claude questions
163
- about your architecture model. Requires Claude Code CLI to be installed and authenticated.`).action(async () => {
164
- await chatCommand();
278
+ This launches an interactive chat interface where you can ask AI questions
279
+ about your architecture model. Supports Claude Code CLI and GitHub Copilot CLI.
280
+
281
+ Install instructions:
282
+ - Claude Code: https://claude.ai
283
+ - GitHub Copilot: gh extension install github/gh-copilot`).action(async (client, withDangerArg) => {
284
+ let selectedClient, withDanger = !1;
285
+ client === "with-danger" ? (withDanger = !0, selectedClient = void 0) : (withDangerArg === "with-danger" && (withDanger = !0), selectedClient = client), await chatCommand(selectedClient, withDanger);
165
286
  }), program.command("version").description("Show CLI and embedded spec version information").addHelpText("after", `
166
287
  Examples:
167
288
  $ dr version`).action(async () => {
168
289
  await versionCommand();
169
- }), program.command("upgrade").description("Upgrade spec reference and migrate model to latest versions").option("-y, --yes", "Automatically upgrade without prompting").option("--dry-run", "Show what would be upgraded without making changes").option("--force", "Skip validation during migration").addHelpText("after", `
290
+ }), program.command("upgrade").description("Upgrade spec reference and migrate model to latest versions").option("-y, --yes", "Automatically upgrade without prompting").option("--dry-run", "Show what would be upgraded without making changes").option("--force", "Force all upgrades regardless of current versions; skips migration validation").addHelpText("after", `
170
291
  Examples:
171
292
  $ dr upgrade # Scan, show plan, and prompt for upgrades
172
293
  $ dr upgrade --dry-run # Preview available upgrades
173
294
  $ dr upgrade --yes # Upgrade without prompting
174
- $ dr upgrade --force # Skip validation during migration`).action(async (options) => {
295
+ $ dr upgrade --force # Force all upgrades, ignoring version checks`).action(async (options) => {
175
296
  await upgradeCommand({
176
297
  yes: options.yes,
177
298
  dryRun: options.dryRun,
@@ -186,39 +307,49 @@ Examples:
186
307
  await conformanceCommand({
187
308
  layers: options.layers,
188
309
  json: options.json,
189
- verbose: options.verbose
310
+ verbose: options.verbose ?? program.opts().verbose
190
311
  });
191
- }), changesetCommands(program), (async () => {
312
+ }), changesetCommands(program), claudeCommands(program), copilotCommands(program), analyzerCommands(program), (async () => {
313
+ let exitCode = 0;
192
314
  try {
193
315
  if (isTelemetryEnabled) {
194
- await initTelemetry(), await installConsoleInterceptor();
195
- const commandName = process.argv[2] || "unknown", args = process.argv.slice(3).join(" ");
316
+ await initTelemetry();
317
+ const commandName = process.argv[2] || "unknown";
318
+ CONSOLE_LOGGING_COMMANDS.has(commandName) && await installConsoleInterceptor();
319
+ const args = process.argv.slice(3).join(" ");
196
320
  await startActiveSpan("cli.execute", async (span) => {
197
- span.setAttributes({
198
- "cli.command": commandName,
199
- "cli.args": args,
200
- "cli.cwd": process.cwd(),
201
- "cli.version": cliVersion
202
- });
203
321
  try {
204
322
  await program.parseAsync(process.argv), span.setStatus({ code: 0 });
205
323
  } catch (error) {
206
- throw span.recordException(error), span.setStatus({
324
+ error instanceof CommanderError ? error.exitCode === 0 ? span.setStatus({ code: 0 }) : (span.recordException(error), span.setStatus({
325
+ code: 2,
326
+ // SpanStatusCode.ERROR
327
+ message: error.message
328
+ })) : (span.recordException(error), span.setStatus({
207
329
  code: 2,
208
330
  // SpanStatusCode.ERROR
209
- message: error instanceof Error ? error.message : String(error)
210
- }), error;
331
+ message: getErrorMessage(error)
332
+ }));
333
+ const { CLIError } = await import("./utils/errors.js");
334
+ error instanceof CommanderError || (error instanceof CLIError ? console.error(error.format()) : error instanceof Error ? console.error(error.message) : console.error(String(error))), exitCode = await extractExitCode(error);
211
335
  }
212
336
  }, {
213
337
  "cli.command": commandName,
214
338
  "cli.args": args,
215
339
  "cli.cwd": process.cwd(),
216
340
  "cli.version": cliVersion
217
- }), await shutdownTelemetry();
341
+ }), await shutdownTelemetry(), process.exit(exitCode);
218
342
  } else
219
- await program.parseAsync(process.argv);
220
- } catch (error) {
221
- throw error;
343
+ try {
344
+ await program.parseAsync(process.argv);
345
+ } catch (error) {
346
+ const { CLIError } = await import("./utils/errors.js");
347
+ error instanceof CommanderError || (error instanceof CLIError ? console.error(error.format()) : error instanceof Error ? console.error(error.message) : console.error(String(error)));
348
+ const exitCodeFromError = await extractExitCode(error);
349
+ process.exit(exitCodeFromError);
350
+ }
351
+ } catch {
352
+ isTelemetryEnabled || process.exit(1), await shutdownTelemetry(), process.exit(1);
222
353
  }
223
354
  })();
224
355
  //# sourceMappingURL=cli.js.map