@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
@@ -1,18 +1,88 @@
1
1
  import ansis from "ansis";
2
2
  import { confirm } from "@clack/prompts";
3
3
  import { findProjectRoot, getSpecReferencePath, getModelPath } from "../utils/project-paths.js";
4
- import { getCliBundledSpecVersion, getInstalledSpecVersion, getModelSpecVersion } from "../utils/spec-version.js";
4
+ import { getCliVersion, getCliBundledSpecVersion, getInstalledSpecVersion, getModelSpecVersion } from "../utils/spec-version.js";
5
5
  import { MigrationRegistry } from "../core/migration-registry.js";
6
6
  import { installSpecReference } from "../utils/spec-installer.js";
7
7
  import { Model } from "../core/model.js";
8
+ import { ClaudeIntegrationManager } from "../integrations/claude-manager.js";
9
+ import { CopilotIntegrationManager } from "../integrations/copilot-manager.js";
10
+ import { getErrorMessage } from "../utils/errors.js";
11
+ import { startSpan, endSpan } from "../telemetry/index.js";
12
+ import { hasLayerReports, regenerateLayerReports } from "./reports.js";
13
+ const isTelemetryEnabled = !1;
14
+ async function buildIntegrationActions(cliVersion, force) {
15
+ const actions = [], upToDate = [], claudeManager = new ClaudeIntegrationManager();
16
+ if (await claudeManager.isInstalled()) {
17
+ const installedVersion = (await claudeManager.loadVersionFile())?.version;
18
+ force || installedVersion && installedVersion !== cliVersion ? actions.push({
19
+ type: "integration",
20
+ description: force ? "Reinstall Claude Code integration (forced)" : "Upgrade Claude Code integration",
21
+ fromVersion: installedVersion,
22
+ toVersion: cliVersion,
23
+ integrationName: "claude"
24
+ }) : installedVersion && upToDate.push(` ${ansis.green("\u2713")} Claude Code integration up to date (v${installedVersion})`);
25
+ }
26
+ const copilotManager = new CopilotIntegrationManager();
27
+ if (await copilotManager.isInstalled()) {
28
+ const installedVersion = (await copilotManager.loadVersionFile())?.version;
29
+ force || installedVersion && installedVersion !== cliVersion ? actions.push({
30
+ type: "integration",
31
+ description: force ? "Reinstall GitHub Copilot integration (forced)" : "Upgrade GitHub Copilot integration",
32
+ fromVersion: installedVersion,
33
+ toVersion: cliVersion,
34
+ integrationName: "copilot"
35
+ }) : installedVersion && upToDate.push(` ${ansis.green("\u2713")} GitHub Copilot integration up to date (v${installedVersion})`);
36
+ }
37
+ return { actions, upToDate };
38
+ }
39
+ async function checkAndGenerateReports(projectRoot, options) {
40
+ if (await hasLayerReports(projectRoot))
41
+ return;
42
+ if (console.log(ansis.yellow(`
43
+ \u26A0 No layer reports found`)), options.dryRun) {
44
+ console.log(ansis.yellow(`[DRY RUN] Would generate all 12 layer reports
45
+ `));
46
+ return;
47
+ }
48
+ let shouldGenerate;
49
+ const isInteractive = process.stdin.isTTY && process.stdout.isTTY;
50
+ if (options.yes ? shouldGenerate = !0 : isInteractive ? shouldGenerate = await confirm({
51
+ message: "Generate layer reports?",
52
+ initialValue: !0
53
+ }) === !0 : shouldGenerate = !0, !shouldGenerate) {
54
+ console.log(ansis.dim(`Skipping report generation
55
+ `));
56
+ return;
57
+ }
58
+ try {
59
+ console.log(), await regenerateLayerReports(projectRoot);
60
+ } catch (error) {
61
+ console.warn(ansis.yellow(`
62
+ \u26A0 Failed to generate reports: ${getErrorMessage(error)}
63
+ `));
64
+ }
65
+ }
8
66
  async function upgradeCommand(options = {}) {
67
+ const commandSpan = isTelemetryEnabled ? startSpan("upgrade.execute", {
68
+ "upgrade.yes": options.yes || !1,
69
+ "upgrade.dry_run": options.dryRun || !1,
70
+ "upgrade.force": options.force || !1
71
+ }) : null;
9
72
  try {
10
73
  console.log(ansis.bold(`
11
74
  Scanning for available upgrades...
12
75
  `));
13
76
  const projectRoot = await findProjectRoot();
14
- projectRoot || (console.error(ansis.red("Error: No DR project found")), console.error(ansis.dim('Run "dr init" to create a new project')), process.exit(1));
15
- const bundledSpecVersion = getCliBundledSpecVersion(), actions = [], drPath = await getSpecReferencePath();
77
+ if (!projectRoot) {
78
+ const error = new Error('No DR project found. Run "dr init" to create a new project');
79
+ throw commandSpan && (commandSpan.recordException(error), commandSpan.setStatus({
80
+ code: 2,
81
+ // SpanStatusCode.ERROR
82
+ message: error.message
83
+ }), commandSpan.setAttribute("upgrade.result", "no_project")), console.error(ansis.red("Error: No DR project found")), console.error(ansis.dim('Run "dr init" to create a new project')), error;
84
+ }
85
+ const bundledSpecVersion = getCliBundledSpecVersion(), cliVersion = getCliVersion(), actions = [], drPath = await getSpecReferencePath();
16
86
  let currentSpecVersion = null;
17
87
  if (!drPath)
18
88
  actions.push({
@@ -26,16 +96,19 @@ Scanning for available upgrades...
26
96
  ]
27
97
  });
28
98
  else {
29
- const installedSpecVersion = await getInstalledSpecVersion(drPath);
30
- currentSpecVersion = installedSpecVersion, installedSpecVersion ? installedSpecVersion !== bundledSpecVersion && actions.push({
99
+ let installedSpecVersion = null;
100
+ try {
101
+ installedSpecVersion = await getInstalledSpecVersion(drPath);
102
+ } catch (error) {
103
+ const message = error instanceof Error ? error.message : String(error);
104
+ throw console.error(ansis.red(`Error: ${message}`)), error;
105
+ }
106
+ currentSpecVersion = installedSpecVersion, installedSpecVersion ? (installedSpecVersion !== bundledSpecVersion || options.force) && actions.push({
31
107
  type: "spec",
32
- description: "Upgrade spec reference",
108
+ description: installedSpecVersion !== bundledSpecVersion ? "Upgrade spec reference" : "Reinstall spec reference (forced)",
33
109
  fromVersion: installedSpecVersion,
34
110
  toVersion: bundledSpecVersion,
35
- details: [
36
- "Update schema files",
37
- "Update .dr/manifest.json"
38
- ]
111
+ details: ["Update schema files", "Update .dr/manifest.json"]
39
112
  }) : actions.push({
40
113
  type: "spec",
41
114
  description: "Reinstall spec reference (manifest missing)",
@@ -49,27 +122,54 @@ Scanning for available upgrades...
49
122
  }
50
123
  const modelPath = await getModelPath();
51
124
  if (!modelPath) {
52
- console.log(ansis.yellow("\u26A0 No model found")), console.log(ansis.dim(` Run "dr init" to create a model
53
- `)), actions.length > 0 && await handleUpgrade(projectRoot, actions, options);
125
+ if (console.log(ansis.yellow("\u26A0 No model found")), console.log(ansis.dim(` Run "dr init" to create a model
126
+ `)), actions.length > 0) {
127
+ const { actions: integrationActions2, upToDate: integrationUpToDate2 } = await buildIntegrationActions(cliVersion, options.force ?? !1);
128
+ actions.push(...integrationActions2), await handleUpgrade(projectRoot, actions, options, integrationUpToDate2, commandSpan);
129
+ }
54
130
  return;
55
131
  }
56
- const modelSpecVersion = await getModelSpecVersion(modelPath);
132
+ let modelSpecVersion = null;
133
+ try {
134
+ modelSpecVersion = await getModelSpecVersion(modelPath);
135
+ } catch (error) {
136
+ const message = error instanceof Error ? error.message : String(error);
137
+ throw console.error(ansis.red(`Error: ${message}`)), error;
138
+ }
57
139
  if (!modelSpecVersion) {
58
- console.log(ansis.yellow("\u26A0 Model manifest.yaml not found or missing specVersion")), console.log(ansis.dim(` Check documentation_robotics/model/manifest.yaml
59
- `)), actions.length > 0 && await handleUpgrade(projectRoot, actions, options);
140
+ if (console.log(ansis.yellow("\u26A0 Model manifest.yaml not found or missing specVersion")), console.log(ansis.dim(` Check documentation_robotics/model/manifest.yaml
141
+ `)), actions.length > 0) {
142
+ const { actions: integrationActions2, upToDate: integrationUpToDate2 } = await buildIntegrationActions(cliVersion, options.force ?? !1);
143
+ actions.push(...integrationActions2), await handleUpgrade(projectRoot, actions, options, integrationUpToDate2, commandSpan);
144
+ }
60
145
  return;
61
146
  }
62
147
  const targetSpecVersion = currentSpecVersion || bundledSpecVersion;
63
148
  if (modelSpecVersion !== targetSpecVersion) {
64
149
  const registry = new MigrationRegistry(), summary = registry.getMigrationSummary(modelSpecVersion, targetSpecVersion);
65
- if (summary.migrationsNeeded === 0) {
66
- console.log(ansis.yellow(`\u26A0 No migration path found from model v${modelSpecVersion} to v${targetSpecVersion}`)), console.log(ansis.dim(`
150
+ if (summary.migrationsNeeded === 0)
151
+ if (options.force)
152
+ actions.push({
153
+ type: "model",
154
+ description: "Force-update model spec version (no migration required)",
155
+ fromVersion: modelSpecVersion,
156
+ toVersion: targetSpecVersion,
157
+ details: ["Update manifest.yaml specVersion (no data changes needed)"],
158
+ versionBumpOnly: !0
159
+ });
160
+ else {
161
+ const error = new Error(`No migration path found from model v${modelSpecVersion} to v${targetSpecVersion}`);
162
+ commandSpan && (commandSpan.recordException(error), commandSpan.setStatus({
163
+ code: 2,
164
+ // SpanStatusCode.ERROR
165
+ message: error.message
166
+ }), commandSpan.setAttribute("upgrade.result", "no_migration_path")), console.log(ansis.yellow(`\u26A0 No migration path found from model v${modelSpecVersion} to v${targetSpecVersion}`)), console.log(ansis.dim(`
67
167
  Available migrations:`));
68
- const allMigrations = registry.getMigrationSummary("0.5.0").migrations;
69
- for (const migration of allMigrations)
70
- console.log(ansis.dim(` \u2022 ${migration.from} \u2192 ${migration.to}: ${migration.description}`));
71
- console.log(), process.exit(1);
72
- }
168
+ const allMigrations = registry.getMigrationSummary("0.5.0").migrations;
169
+ for (const migration of allMigrations)
170
+ console.log(ansis.dim(` \u2022 ${migration.from} \u2192 ${migration.to}: ${migration.description}`));
171
+ throw console.log(), error;
172
+ }
73
173
  const migrationDetails = summary.migrations.map((m) => `${m.from} \u2192 ${m.to}: ${m.description}`);
74
174
  actions.push({
75
175
  type: "model",
@@ -79,59 +179,100 @@ Available migrations:`));
79
179
  details: migrationDetails
80
180
  });
81
181
  }
82
- if (actions.length === 0) {
83
- console.log(ansis.green(`\u2713 Everything is up to date!
182
+ const { actions: integrationActions, upToDate: integrationUpToDate } = await buildIntegrationActions(cliVersion, options.force ?? !1);
183
+ if (actions.push(...integrationActions), actions.length === 0) {
184
+ commandSpan && (commandSpan.setAttribute("upgrade.result", "up_to_date"), commandSpan.setAttribute("upgrade.actions_count", 0)), console.log(ansis.green(`\u2713 Everything is up to date!
84
185
  `)), console.log(ansis.dim(` Spec reference: v${currentSpecVersion || bundledSpecVersion}`)), console.log(ansis.dim(` Model: v${modelSpecVersion}
85
- `));
186
+ `)), await checkAndGenerateReports(projectRoot, options);
86
187
  return;
87
188
  }
88
- await handleUpgrade(projectRoot, actions, options);
189
+ commandSpan && (commandSpan.setAttribute("upgrade.actions_count", actions.length), commandSpan.setAttribute("upgrade.has_spec_upgrade", actions.some((a) => a.type === "spec")), commandSpan.setAttribute("upgrade.has_model_migration", actions.some((a) => a.type === "model")), commandSpan.setAttribute("upgrade.has_integration_upgrade", actions.some((a) => a.type === "integration"))), await handleUpgrade(projectRoot, actions, options, integrationUpToDate, commandSpan), await checkAndGenerateReports(projectRoot, options), commandSpan && commandSpan.setAttribute("upgrade.result", "success");
89
190
  } catch (error) {
90
- console.error(ansis.red(`Error: ${error instanceof Error ? error.message : String(error)}`)), process.exit(1);
191
+ throw commandSpan && (commandSpan.recordException(error), commandSpan.setStatus({
192
+ code: 2,
193
+ // SpanStatusCode.ERROR
194
+ message: getErrorMessage(error)
195
+ }), commandSpan.setAttribute("upgrade.result", "error")), console.error(ansis.red(`Error: ${getErrorMessage(error)}`)), error;
196
+ } finally {
197
+ endSpan(commandSpan);
91
198
  }
92
199
  }
93
- async function handleUpgrade(projectRoot, actions, options) {
94
- console.log(ansis.bold(`Upgrade Plan:
200
+ async function handleUpgrade(projectRoot, actions, options, integrationUpToDate = [], parentSpan = null) {
201
+ if (actions.length > 0) {
202
+ console.log(ansis.bold(`Upgrade Plan:
95
203
  `));
96
- for (const action of actions) {
97
- const versionChange = action.fromVersion ? `${action.fromVersion} \u2192 ${action.toVersion}` : `v${action.toVersion}`;
98
- if (console.log(ansis.yellow(`${action.type === "spec" ? "\u{1F4E6}" : "\u{1F504}"} ${action.description}`)), console.log(ansis.dim(` Version: ${versionChange}`)), action.details && action.details.length > 0)
99
- for (const detail of action.details)
100
- console.log(ansis.dim(` \u2022 ${detail}`));
101
- console.log();
204
+ for (const action of actions) {
205
+ const versionChange = action.fromVersion ? `${action.fromVersion} \u2192 ${action.toVersion}` : `v${action.toVersion}`, icon = action.type === "spec" ? "\u{1F4E6}" : action.type === "integration" ? "\u{1F50C}" : "\u{1F504}";
206
+ if (console.log(ansis.yellow(`${icon} ${action.description}`)), console.log(ansis.dim(` Version: ${versionChange}`)), action.details && action.details.length > 0)
207
+ for (const detail of action.details)
208
+ console.log(ansis.dim(` \u2022 ${detail}`));
209
+ console.log();
210
+ }
102
211
  }
103
- if (options.dryRun) {
212
+ if (integrationUpToDate.length > 0 && (console.log(ansis.bold("Integration Status:")), integrationUpToDate.forEach((msg) => console.log(msg)), console.log()), options.dryRun) {
104
213
  console.log(ansis.yellow(`[DRY RUN] No changes will be made
105
- `));
214
+ `)), parentSpan && parentSpan.setAttribute("upgrade.dry_run_completed", !0);
106
215
  return;
107
216
  }
108
217
  let shouldProceed = options.yes;
109
- if (shouldProceed || (shouldProceed = await confirm({
110
- message: "Proceed with upgrade?"
111
- }) === !0), !shouldProceed) {
218
+ if (!shouldProceed)
219
+ if (process.stdin.isTTY && process.stdout.isTTY)
220
+ shouldProceed = await confirm({
221
+ message: "Proceed with upgrade?"
222
+ }) === !0;
223
+ else {
224
+ const error = new Error("Non-interactive mode requires --yes flag to proceed with upgrade");
225
+ throw parentSpan && (parentSpan.recordException(error), parentSpan.setAttribute("upgrade.result", "non_interactive_abort")), console.error(ansis.red("Error: Non-interactive mode requires --yes flag to proceed with upgrade")), error;
226
+ }
227
+ if (!shouldProceed) {
112
228
  console.log(ansis.dim(`
113
229
  Upgrade cancelled
114
- `));
230
+ `)), parentSpan && parentSpan.setAttribute("upgrade.user_cancelled", !0);
115
231
  return;
116
232
  }
117
233
  console.log(ansis.bold(`
118
234
  Executing upgrades...
119
235
  `));
120
236
  for (const action of actions)
121
- action.type === "spec" ? await executeSpecUpgrade(projectRoot, action) : action.type === "model" && await executeModelMigration(action, options);
237
+ action.type === "spec" ? await executeSpecUpgrade(projectRoot, action) : action.type === "model" ? await executeModelMigration(action, options) : action.type === "integration" && await executeIntegrationUpdate(action.description, async () => {
238
+ action.integrationName === "claude" ? await new ClaudeIntegrationManager().upgrade({ force: !0 }) : await new CopilotIntegrationManager().upgrade({ force: !0 });
239
+ });
122
240
  console.log(ansis.green(`
123
241
  \u2713 All upgrades completed successfully!
124
242
  `));
125
243
  }
126
244
  async function executeSpecUpgrade(projectRoot, action) {
245
+ const operationSpan = isTelemetryEnabled ? startSpan("upgrade.spec", {
246
+ "upgrade.spec.from_version": action.fromVersion || "none",
247
+ "upgrade.spec.to_version": action.toVersion,
248
+ "upgrade.spec.is_reinstall": !action.fromVersion
249
+ }) : null;
127
250
  try {
128
- console.log(ansis.dim(`Installing spec reference v${action.toVersion}...`)), await installSpecReference(projectRoot, !0), console.log(ansis.green(`\u2713 Spec reference upgraded to v${action.toVersion}`));
251
+ console.log(ansis.dim(`Installing spec reference v${action.toVersion}...`)), await installSpecReference(projectRoot, !0), console.log(ansis.green(`\u2713 Spec reference upgraded to v${action.toVersion}`)), operationSpan && operationSpan.setAttribute("upgrade.spec.result", "success");
129
252
  } catch (error) {
130
- throw console.error(ansis.red(`Error upgrading spec reference: ${error instanceof Error ? error.message : String(error)}`)), error;
253
+ throw operationSpan && (operationSpan.recordException(error), operationSpan.setStatus({
254
+ code: 2,
255
+ // SpanStatusCode.ERROR
256
+ message: getErrorMessage(error)
257
+ }), operationSpan.setAttribute("upgrade.spec.result", "error")), console.error(ansis.red(`Error upgrading spec reference: ${getErrorMessage(error)}`)), error;
258
+ } finally {
259
+ endSpan(operationSpan);
131
260
  }
132
261
  }
133
262
  async function executeModelMigration(action, options) {
263
+ const operationSpan = isTelemetryEnabled ? startSpan("upgrade.model", {
264
+ "upgrade.model.from_version": action.fromVersion || "unknown",
265
+ "upgrade.model.to_version": action.toVersion,
266
+ "upgrade.model.version_bump_only": action.versionBumpOnly || !1,
267
+ "upgrade.model.validate": !options.force
268
+ }) : null;
134
269
  try {
270
+ if (action.versionBumpOnly) {
271
+ console.log(ansis.dim(`Bumping model spec version from v${action.fromVersion} to v${action.toVersion}...`));
272
+ const model2 = await Model.load(process.cwd(), { lazyLoad: !0 });
273
+ model2.manifest.specVersion = action.toVersion, await model2.saveManifest(), console.log(ansis.green(`\u2713 Model spec version updated to v${action.toVersion}`)), operationSpan && operationSpan.setAttribute("upgrade.model.result", "version_bumped");
274
+ return;
275
+ }
135
276
  console.log(ansis.dim(`Migrating model from v${action.fromVersion} to v${action.toVersion}...`));
136
277
  const model = await Model.load(process.cwd(), { lazyLoad: !1 }), result = await new MigrationRegistry().applyMigrations(model, {
137
278
  fromVersion: action.fromVersion,
@@ -141,9 +282,32 @@ async function executeModelMigration(action, options) {
141
282
  });
142
283
  for (const applied of result.applied)
143
284
  console.log(ansis.green(` \u2713 ${applied.from} \u2192 ${applied.to}: ${applied.description}`)), applied.changes?.filesModified && console.log(ansis.dim(` Files modified: ${applied.changes.filesModified}`));
144
- await model.saveManifest(), await model.saveDirtyLayers(), console.log(ansis.green(`\u2713 Model migrated to v${action.toVersion}`));
285
+ await model.saveManifest(), await model.saveDirtyLayers(), console.log(ansis.green(`\u2713 Model migrated to v${action.toVersion}`)), operationSpan && (operationSpan.setAttribute("upgrade.model.result", "migrated"), operationSpan.setAttribute("upgrade.model.migrations_applied", result.applied.length));
286
+ } catch (error) {
287
+ throw operationSpan && (operationSpan.recordException(error), operationSpan.setStatus({
288
+ code: 2,
289
+ // SpanStatusCode.ERROR
290
+ message: getErrorMessage(error)
291
+ }), operationSpan.setAttribute("upgrade.model.result", "error")), console.error(ansis.red(`Error migrating model: ${getErrorMessage(error)}`)), error;
292
+ } finally {
293
+ endSpan(operationSpan);
294
+ }
295
+ }
296
+ async function executeIntegrationUpdate(label, updateFn) {
297
+ const operationSpan = isTelemetryEnabled ? startSpan("upgrade.integration", {
298
+ "upgrade.integration.label": label,
299
+ "upgrade.integration.type": label.includes("Claude") ? "claude" : label.includes("Copilot") ? "copilot" : "unknown"
300
+ }) : null;
301
+ try {
302
+ console.log(ansis.dim(`${label}...`)), await updateFn(), console.log(ansis.green(`\u2713 ${label}`)), operationSpan && operationSpan.setAttribute("upgrade.integration.result", "success");
145
303
  } catch (error) {
146
- throw console.error(ansis.red(`Error migrating model: ${error instanceof Error ? error.message : String(error)}`)), error;
304
+ throw operationSpan && (operationSpan.recordException(error), operationSpan.setStatus({
305
+ code: 2,
306
+ // SpanStatusCode.ERROR
307
+ message: getErrorMessage(error)
308
+ }), operationSpan.setAttribute("upgrade.integration.result", "error")), console.error(ansis.red(`Error: ${label} failed: ${getErrorMessage(error)}`)), error;
309
+ } finally {
310
+ endSpan(operationSpan);
147
311
  }
148
312
  }
149
313
  export {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/commands/upgrade.ts"],
4
- "sourcesContent": ["/**\n * Upgrade Command - Manages spec reference and model upgrades\n *\n * Scans the filesystem to determine what needs upgrading:\n * 1. .dr/ (spec reference) - if CLI has newer bundled version\n * 2. Model data - if model spec version doesn't match spec reference\n *\n * Shows upgrade plan and prompts for confirmation before proceeding.\n */\n\nimport ansis from 'ansis';\nimport { confirm } from '@clack/prompts';\nimport { findProjectRoot, getSpecReferencePath, getModelPath } from '../utils/project-paths.js';\nimport {\n getCliBundledSpecVersion,\n getInstalledSpecVersion,\n getModelSpecVersion,\n} from '../utils/spec-version.js';\nimport { MigrationRegistry } from '../core/migration-registry.js';\nimport { installSpecReference } from '../utils/spec-installer.js';\nimport { Model } from '../core/model.js';\n\nexport interface UpgradeOptions {\n yes?: boolean;\n dryRun?: boolean;\n force?: boolean;\n}\n\ninterface UpgradeAction {\n type: 'spec' | 'model';\n description: string;\n fromVersion?: string;\n toVersion: string;\n details?: string[];\n}\n\nexport async function upgradeCommand(options: UpgradeOptions = {}): Promise<void> {\n try {\n console.log(ansis.bold('\\nScanning for available upgrades...\\n'));\n\n // Find project root\n const projectRoot = await findProjectRoot();\n if (!projectRoot) {\n console.error(ansis.red('Error: No DR project found'));\n console.error(ansis.dim('Run \"dr init\" to create a new project'));\n process.exit(1);\n }\n\n const bundledSpecVersion = getCliBundledSpecVersion();\n const actions: UpgradeAction[] = [];\n\n // ============================================================================\n // STEP 1: Check spec reference (.dr/ folder)\n // ============================================================================\n\n const drPath = await getSpecReferencePath();\n let currentSpecVersion: string | null = null;\n\n if (!drPath) {\n actions.push({\n type: 'spec',\n description: 'Install spec reference',\n toVersion: bundledSpecVersion,\n details: [\n 'Create .dr/ folder',\n 'Install schema files',\n `Set spec version to ${bundledSpecVersion}`,\n ],\n });\n } else {\n const installedSpecVersion = await getInstalledSpecVersion(drPath);\n currentSpecVersion = installedSpecVersion;\n\n if (!installedSpecVersion) {\n actions.push({\n type: 'spec',\n description: 'Reinstall spec reference (manifest missing)',\n toVersion: bundledSpecVersion,\n details: [\n 'Recreate .dr/manifest.json',\n 'Update schema files',\n `Set spec version to ${bundledSpecVersion}`,\n ],\n });\n } else if (installedSpecVersion !== bundledSpecVersion) {\n actions.push({\n type: 'spec',\n description: 'Upgrade spec reference',\n fromVersion: installedSpecVersion,\n toVersion: bundledSpecVersion,\n details: [\n 'Update schema files',\n 'Update .dr/manifest.json',\n ],\n });\n }\n }\n\n // ============================================================================\n // STEP 2: Check model upgrade\n // ============================================================================\n\n const modelPath = await getModelPath();\n if (!modelPath) {\n console.log(ansis.yellow('\u26A0 No model found'));\n console.log(ansis.dim(' Run \"dr init\" to create a model\\n'));\n\n // If only spec needs upgrade, handle it\n if (actions.length > 0) {\n await handleUpgrade(projectRoot, actions, options);\n }\n return;\n }\n\n const modelSpecVersion = await getModelSpecVersion(modelPath);\n if (!modelSpecVersion) {\n console.log(ansis.yellow('\u26A0 Model manifest.yaml not found or missing specVersion'));\n console.log(ansis.dim(' Check documentation_robotics/model/manifest.yaml\\n'));\n\n // If only spec needs upgrade, handle it\n if (actions.length > 0) {\n await handleUpgrade(projectRoot, actions, options);\n }\n return;\n }\n\n // Determine target spec version for model\n const targetSpecVersion = currentSpecVersion || bundledSpecVersion;\n\n if (modelSpecVersion !== targetSpecVersion) {\n // Check if we have a migration path\n const registry = new MigrationRegistry();\n const summary = registry.getMigrationSummary(modelSpecVersion, targetSpecVersion);\n\n if (summary.migrationsNeeded === 0) {\n console.log(\n ansis.yellow(\n `\u26A0 No migration path found from model v${modelSpecVersion} to v${targetSpecVersion}`\n )\n );\n console.log(ansis.dim('\\nAvailable migrations:'));\n const allMigrations = registry.getMigrationSummary('0.5.0').migrations;\n for (const migration of allMigrations) {\n console.log(ansis.dim(` \u2022 ${migration.from} \u2192 ${migration.to}: ${migration.description}`));\n }\n console.log();\n process.exit(1);\n }\n\n const migrationDetails = summary.migrations.map(\n (m) => `${m.from} \u2192 ${m.to}: ${m.description}`\n );\n\n actions.push({\n type: 'model',\n description: 'Migrate model data',\n fromVersion: modelSpecVersion,\n toVersion: targetSpecVersion,\n details: migrationDetails,\n });\n }\n\n // ============================================================================\n // STEP 3: Display upgrade plan and execute\n // ============================================================================\n\n if (actions.length === 0) {\n console.log(ansis.green('\u2713 Everything is up to date!\\n'));\n console.log(ansis.dim(` Spec reference: v${currentSpecVersion || bundledSpecVersion}`));\n console.log(ansis.dim(` Model: v${modelSpecVersion}\\n`));\n return;\n }\n\n await handleUpgrade(projectRoot, actions, options);\n } catch (error) {\n console.error(\n ansis.red(`Error: ${error instanceof Error ? error.message : String(error)}`)\n );\n process.exit(1);\n }\n}\n\n/**\n * Handle the upgrade process\n */\nasync function handleUpgrade(\n projectRoot: string,\n actions: UpgradeAction[],\n options: UpgradeOptions\n): Promise<void> {\n // Display upgrade plan\n console.log(ansis.bold('Upgrade Plan:\\n'));\n\n for (const action of actions) {\n const versionChange = action.fromVersion\n ? `${action.fromVersion} \u2192 ${action.toVersion}`\n : `v${action.toVersion}`;\n\n console.log(ansis.yellow(`${action.type === 'spec' ? '\uD83D\uDCE6' : '\uD83D\uDD04'} ${action.description}`));\n console.log(ansis.dim(` Version: ${versionChange}`));\n\n if (action.details && action.details.length > 0) {\n for (const detail of action.details) {\n console.log(ansis.dim(` \u2022 ${detail}`));\n }\n }\n console.log();\n }\n\n // Handle dry-run mode\n if (options.dryRun) {\n console.log(ansis.yellow('[DRY RUN] No changes will be made\\n'));\n return;\n }\n\n // Prompt for confirmation unless --yes flag is set\n let shouldProceed = options.yes;\n if (!shouldProceed) {\n const response = await confirm({\n message: 'Proceed with upgrade?',\n });\n shouldProceed = response === true;\n }\n\n if (!shouldProceed) {\n console.log(ansis.dim('\\nUpgrade cancelled\\n'));\n return;\n }\n\n console.log(ansis.bold('\\nExecuting upgrades...\\n'));\n\n // Execute actions in order: spec first, then model\n for (const action of actions) {\n if (action.type === 'spec') {\n await executeSpecUpgrade(projectRoot, action);\n } else if (action.type === 'model') {\n await executeModelMigration(action, options);\n }\n }\n\n console.log(ansis.green('\\n\u2713 All upgrades completed successfully!\\n'));\n}\n\n/**\n * Execute spec reference upgrade\n */\nasync function executeSpecUpgrade(projectRoot: string, action: UpgradeAction): Promise<void> {\n try {\n console.log(ansis.dim(`Installing spec reference v${action.toVersion}...`));\n await installSpecReference(projectRoot, true);\n console.log(ansis.green(`\u2713 Spec reference upgraded to v${action.toVersion}`));\n } catch (error) {\n console.error(\n ansis.red(\n `Error upgrading spec reference: ${error instanceof Error ? error.message : String(error)}`\n )\n );\n throw error;\n }\n}\n\n/**\n * Execute model migration\n */\nasync function executeModelMigration(action: UpgradeAction, options: UpgradeOptions): Promise<void> {\n try {\n console.log(ansis.dim(`Migrating model from v${action.fromVersion} to v${action.toVersion}...`));\n\n // Load the model\n const model = await Model.load(process.cwd(), { lazyLoad: false });\n\n // Apply migrations\n const registry = new MigrationRegistry();\n const result = await registry.applyMigrations(model, {\n fromVersion: action.fromVersion!,\n toVersion: action.toVersion,\n dryRun: false,\n validate: !options.force,\n });\n\n // Display migration results\n for (const applied of result.applied) {\n console.log(ansis.green(` \u2713 ${applied.from} \u2192 ${applied.to}: ${applied.description}`));\n if (applied.changes?.filesModified) {\n console.log(ansis.dim(` Files modified: ${applied.changes.filesModified}`));\n }\n }\n\n // Save changes\n await model.saveManifest();\n await model.saveDirtyLayers();\n\n console.log(ansis.green(`\u2713 Model migrated to v${action.toVersion}`));\n } catch (error) {\n console.error(\n ansis.red(`Error migrating model: ${error instanceof Error ? error.message : String(error)}`)\n );\n throw error;\n }\n}\n"],
5
- "mappings": "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",
6
- "names": []
4
+ "sourcesContent": ["/**\n * Upgrade Command - Manages spec reference and model upgrades\n *\n * Scans the filesystem to determine what needs upgrading:\n * 1. .dr/ (spec reference) - if CLI has newer bundled version\n * 2. Model data - if model spec version doesn't match spec reference\n *\n * Shows upgrade plan and prompts for confirmation before proceeding.\n */\n\nimport ansis from \"ansis\";\nimport { confirm } from \"@clack/prompts\";\nimport { findProjectRoot, getSpecReferencePath, getModelPath } from \"../utils/project-paths.js\";\nimport {\n getCliVersion,\n getCliBundledSpecVersion,\n getInstalledSpecVersion,\n getModelSpecVersion,\n} from \"../utils/spec-version.js\";\nimport { MigrationRegistry } from \"../core/migration-registry.js\";\nimport { installSpecReference } from \"../utils/spec-installer.js\";\nimport { Model } from \"../core/model.js\";\nimport { ClaudeIntegrationManager } from \"../integrations/claude-manager.js\";\nimport { CopilotIntegrationManager } from \"../integrations/copilot-manager.js\";\nimport { getErrorMessage } from \"../utils/errors.js\";\nimport { startSpan, endSpan } from \"../telemetry/index.js\";\nimport { hasLayerReports, regenerateLayerReports } from \"./reports.js\";\n\n// Build-time constant for telemetry feature detection\ndeclare const TELEMETRY_ENABLED: boolean | undefined;\nconst isTelemetryEnabled = typeof TELEMETRY_ENABLED !== \"undefined\" ? TELEMETRY_ENABLED : false;\n\nexport interface UpgradeOptions {\n yes?: boolean;\n dryRun?: boolean;\n force?: boolean;\n}\n\ninterface UpgradeAction {\n type: \"spec\" | \"model\" | \"integration\";\n description: string;\n fromVersion?: string;\n toVersion: string;\n details?: string[];\n integrationName?: \"claude\" | \"copilot\";\n versionBumpOnly?: boolean;\n}\n\n/**\n * Build integration upgrade actions and collect up-to-date status lines\n */\nasync function buildIntegrationActions(\n cliVersion: string,\n force: boolean\n): Promise<{ actions: UpgradeAction[]; upToDate: string[] }> {\n const actions: UpgradeAction[] = [];\n const upToDate: string[] = [];\n\n // Check Claude integration\n const claudeManager = new ClaudeIntegrationManager();\n if (await claudeManager.isInstalled()) {\n const claudeVersion = await claudeManager.loadVersionFile();\n const installedVersion = claudeVersion?.version;\n const needsUpgrade = installedVersion && installedVersion !== cliVersion;\n\n if (force || needsUpgrade) {\n actions.push({\n type: \"integration\",\n description: force\n ? \"Reinstall Claude Code integration (forced)\"\n : \"Upgrade Claude Code integration\",\n fromVersion: installedVersion,\n toVersion: cliVersion,\n integrationName: \"claude\",\n });\n } else if (installedVersion) {\n upToDate.push(\n ` ${ansis.green(\"\u2713\")} Claude Code integration up to date (v${installedVersion})`\n );\n }\n }\n\n // Check Copilot integration\n const copilotManager = new CopilotIntegrationManager();\n if (await copilotManager.isInstalled()) {\n const copilotVersion = await copilotManager.loadVersionFile();\n const installedVersion = copilotVersion?.version;\n const needsUpgrade = installedVersion && installedVersion !== cliVersion;\n\n if (force || needsUpgrade) {\n actions.push({\n type: \"integration\",\n description: force\n ? \"Reinstall GitHub Copilot integration (forced)\"\n : \"Upgrade GitHub Copilot integration\",\n fromVersion: installedVersion,\n toVersion: cliVersion,\n integrationName: \"copilot\",\n });\n } else if (installedVersion) {\n upToDate.push(\n ` ${ansis.green(\"\u2713\")} GitHub Copilot integration up to date (v${installedVersion})`\n );\n }\n }\n\n return { actions, upToDate };\n}\n\n/**\n * Check if layer reports exist; if not, offer to generate them.\n * Defaults to generating (yes) \u2014 including in non-interactive/programmatic mode.\n */\nasync function checkAndGenerateReports(\n projectRoot: string,\n options: UpgradeOptions\n): Promise<void> {\n if (await hasLayerReports(projectRoot)) {\n return;\n }\n\n console.log(ansis.yellow(\"\\n\u26A0 No layer reports found\"));\n\n if (options.dryRun) {\n console.log(ansis.yellow(\"[DRY RUN] Would generate all 12 layer reports\\n\"));\n return;\n }\n\n // Determine whether to generate: default is yes\n let shouldGenerate: boolean;\n const isInteractive = process.stdin.isTTY && process.stdout.isTTY;\n\n if (options.yes) {\n shouldGenerate = true;\n } else if (isInteractive) {\n const response = await confirm({\n message: \"Generate layer reports?\",\n initialValue: true,\n });\n shouldGenerate = response === true;\n } else {\n // Non-interactive / programmatic: auto-generate since default is yes\n shouldGenerate = true;\n }\n\n if (!shouldGenerate) {\n console.log(ansis.dim(\"Skipping report generation\\n\"));\n return;\n }\n\n try {\n console.log();\n await regenerateLayerReports(projectRoot);\n } catch (error) {\n // Warn but don't block upgrade success\n console.warn(ansis.yellow(`\\n\u26A0 Failed to generate reports: ${getErrorMessage(error)}\\n`));\n }\n}\n\nexport async function upgradeCommand(options: UpgradeOptions = {}): Promise<void> {\n const commandSpan = isTelemetryEnabled\n ? startSpan(\"upgrade.execute\", {\n \"upgrade.yes\": options.yes || false,\n \"upgrade.dry_run\": options.dryRun || false,\n \"upgrade.force\": options.force || false,\n })\n : null;\n\n try {\n console.log(ansis.bold(\"\\nScanning for available upgrades...\\n\"));\n\n // Find project root\n const projectRoot = await findProjectRoot();\n if (!projectRoot) {\n const error = new Error(\"No DR project found. Run \\\"dr init\\\" to create a new project\");\n if (commandSpan) {\n commandSpan.recordException(error);\n commandSpan.setStatus({\n code: 2, // SpanStatusCode.ERROR\n message: error.message,\n });\n commandSpan.setAttribute(\"upgrade.result\", \"no_project\");\n }\n console.error(ansis.red(\"Error: No DR project found\"));\n console.error(ansis.dim('Run \"dr init\" to create a new project'));\n throw error;\n }\n\n const bundledSpecVersion = getCliBundledSpecVersion();\n const cliVersion = getCliVersion();\n const actions: UpgradeAction[] = [];\n\n // ============================================================================\n // STEP 1: Check spec reference (.dr/ folder)\n // ============================================================================\n\n const drPath = await getSpecReferencePath();\n let currentSpecVersion: string | null = null;\n\n if (!drPath) {\n actions.push({\n type: \"spec\",\n description: \"Install spec reference\",\n toVersion: bundledSpecVersion,\n details: [\n \"Create .dr/ folder\",\n \"Install schema files\",\n `Set spec version to ${bundledSpecVersion}`,\n ],\n });\n } else {\n let installedSpecVersion: string | null = null;\n try {\n installedSpecVersion = await getInstalledSpecVersion(drPath);\n } catch (error) {\n // Manifest file exists but is corrupted or unreadable\n const message = error instanceof Error ? error.message : String(error);\n console.error(ansis.red(`Error: ${message}`));\n throw error;\n }\n currentSpecVersion = installedSpecVersion;\n\n if (!installedSpecVersion) {\n actions.push({\n type: \"spec\",\n description: \"Reinstall spec reference (manifest missing)\",\n toVersion: bundledSpecVersion,\n details: [\n \"Recreate .dr/manifest.json\",\n \"Update schema files\",\n `Set spec version to ${bundledSpecVersion}`,\n ],\n });\n } else if (installedSpecVersion !== bundledSpecVersion || options.force) {\n actions.push({\n type: \"spec\",\n description: installedSpecVersion !== bundledSpecVersion\n ? \"Upgrade spec reference\"\n : \"Reinstall spec reference (forced)\",\n fromVersion: installedSpecVersion,\n toVersion: bundledSpecVersion,\n details: [\"Update schema files\", \"Update .dr/manifest.json\"],\n });\n }\n }\n\n // ============================================================================\n // STEP 2: Check model upgrade\n // ============================================================================\n\n const modelPath = await getModelPath();\n if (!modelPath) {\n console.log(ansis.yellow(\"\u26A0 No model found\"));\n console.log(ansis.dim(' Run \"dr init\" to create a model\\n'));\n\n // If only spec needs upgrade, handle it\n if (actions.length > 0) {\n const { actions: integrationActions, upToDate: integrationUpToDate } =\n await buildIntegrationActions(cliVersion, options.force ?? false);\n actions.push(...integrationActions);\n await handleUpgrade(projectRoot, actions, options, integrationUpToDate, commandSpan);\n }\n // No model loaded \u2014 report generation not applicable\n return;\n }\n\n let modelSpecVersion: string | null = null;\n try {\n modelSpecVersion = await getModelSpecVersion(modelPath);\n } catch (error) {\n // Manifest file exists but is corrupted or unreadable\n const message = error instanceof Error ? error.message : String(error);\n console.error(ansis.red(`Error: ${message}`));\n throw error;\n }\n\n if (!modelSpecVersion) {\n console.log(ansis.yellow(\"\u26A0 Model manifest.yaml not found or missing specVersion\"));\n console.log(ansis.dim(\" Check documentation_robotics/model/manifest.yaml\\n\"));\n\n // If only spec needs upgrade, handle it\n if (actions.length > 0) {\n const { actions: integrationActions, upToDate: integrationUpToDate } =\n await buildIntegrationActions(cliVersion, options.force ?? false);\n actions.push(...integrationActions);\n await handleUpgrade(projectRoot, actions, options, integrationUpToDate, commandSpan);\n }\n // No readable model manifest \u2014 report generation not applicable\n return;\n }\n\n // Determine target spec version for model\n const targetSpecVersion = currentSpecVersion || bundledSpecVersion;\n\n if (modelSpecVersion !== targetSpecVersion) {\n // Check if we have a migration path\n const registry = new MigrationRegistry();\n const summary = registry.getMigrationSummary(modelSpecVersion, targetSpecVersion);\n\n if (summary.migrationsNeeded === 0) {\n if (options.force) {\n // No migration path exists, but --force allows bumping the model version directly.\n // This is safe for additive spec changes (new node types / relationships) that\n // require no structural data changes.\n actions.push({\n type: \"model\",\n description: \"Force-update model spec version (no migration required)\",\n fromVersion: modelSpecVersion,\n toVersion: targetSpecVersion,\n details: [\"Update manifest.yaml specVersion (no data changes needed)\"],\n versionBumpOnly: true,\n });\n } else {\n const error = new Error(\n `No migration path found from model v${modelSpecVersion} to v${targetSpecVersion}`\n );\n if (commandSpan) {\n commandSpan.recordException(error);\n commandSpan.setStatus({\n code: 2, // SpanStatusCode.ERROR\n message: error.message,\n });\n commandSpan.setAttribute(\"upgrade.result\", \"no_migration_path\");\n }\n console.log(\n ansis.yellow(\n `\u26A0 No migration path found from model v${modelSpecVersion} to v${targetSpecVersion}`\n )\n );\n console.log(ansis.dim(\"\\nAvailable migrations:\"));\n const allMigrations = registry.getMigrationSummary(\"0.5.0\").migrations;\n for (const migration of allMigrations) {\n console.log(\n ansis.dim(` \u2022 ${migration.from} \u2192 ${migration.to}: ${migration.description}`)\n );\n }\n console.log();\n throw error;\n }\n }\n\n const migrationDetails = summary.migrations.map(\n (m) => `${m.from} \u2192 ${m.to}: ${m.description}`\n );\n\n actions.push({\n type: \"model\",\n description: \"Migrate model data\",\n fromVersion: modelSpecVersion,\n toVersion: targetSpecVersion,\n details: migrationDetails,\n });\n }\n\n // ============================================================================\n // STEP 3: Check integration versions\n // ============================================================================\n\n const { actions: integrationActions, upToDate: integrationUpToDate } =\n await buildIntegrationActions(cliVersion, options.force ?? false);\n actions.push(...integrationActions);\n\n // ============================================================================\n // STEP 4: Display upgrade plan and execute\n // ============================================================================\n\n if (actions.length === 0) {\n if (commandSpan) {\n commandSpan.setAttribute(\"upgrade.result\", \"up_to_date\");\n commandSpan.setAttribute(\"upgrade.actions_count\", 0);\n }\n console.log(ansis.green(\"\u2713 Everything is up to date!\\n\"));\n console.log(ansis.dim(` Spec reference: v${currentSpecVersion || bundledSpecVersion}`));\n console.log(ansis.dim(` Model: v${modelSpecVersion}\\n`));\n await checkAndGenerateReports(projectRoot, options);\n return;\n }\n\n if (commandSpan) {\n commandSpan.setAttribute(\"upgrade.actions_count\", actions.length);\n commandSpan.setAttribute(\n \"upgrade.has_spec_upgrade\",\n actions.some((a) => a.type === \"spec\")\n );\n commandSpan.setAttribute(\n \"upgrade.has_model_migration\",\n actions.some((a) => a.type === \"model\")\n );\n commandSpan.setAttribute(\n \"upgrade.has_integration_upgrade\",\n actions.some((a) => a.type === \"integration\")\n );\n }\n\n await handleUpgrade(projectRoot, actions, options, integrationUpToDate, commandSpan);\n await checkAndGenerateReports(projectRoot, options);\n\n if (commandSpan) {\n commandSpan.setAttribute(\"upgrade.result\", \"success\");\n }\n } catch (error) {\n if (commandSpan) {\n commandSpan.recordException(error as Error);\n commandSpan.setStatus({\n code: 2, // SpanStatusCode.ERROR\n message: getErrorMessage(error),\n });\n commandSpan.setAttribute(\"upgrade.result\", \"error\");\n }\n console.error(ansis.red(`Error: ${getErrorMessage(error)}`));\n throw error;\n } finally {\n endSpan(commandSpan);\n }\n}\n\n/**\n * Handle the upgrade process\n */\nasync function handleUpgrade(\n projectRoot: string,\n actions: UpgradeAction[],\n options: UpgradeOptions,\n integrationUpToDate: string[] = [],\n parentSpan: any = null\n): Promise<void> {\n // Display upgrade plan\n if (actions.length > 0) {\n console.log(ansis.bold(\"Upgrade Plan:\\n\"));\n\n for (const action of actions) {\n const versionChange = action.fromVersion\n ? `${action.fromVersion} \u2192 ${action.toVersion}`\n : `v${action.toVersion}`;\n\n const icon = action.type === \"spec\" ? \"\uD83D\uDCE6\" : action.type === \"integration\" ? \"\uD83D\uDD0C\" : \"\uD83D\uDD04\";\n console.log(ansis.yellow(`${icon} ${action.description}`));\n console.log(ansis.dim(` Version: ${versionChange}`));\n\n if (action.details && action.details.length > 0) {\n for (const detail of action.details) {\n console.log(ansis.dim(` \u2022 ${detail}`));\n }\n }\n console.log();\n }\n }\n\n // Display integration status for up-to-date integrations\n if (integrationUpToDate.length > 0) {\n console.log(ansis.bold(\"Integration Status:\"));\n integrationUpToDate.forEach((msg) => console.log(msg));\n console.log();\n }\n\n // Handle dry-run mode\n if (options.dryRun) {\n console.log(ansis.yellow(\"[DRY RUN] No changes will be made\\n\"));\n if (parentSpan) {\n parentSpan.setAttribute(\"upgrade.dry_run_completed\", true);\n }\n return;\n }\n\n // Prompt for confirmation unless --yes flag is set\n let shouldProceed = options.yes;\n if (!shouldProceed) {\n // Check if we're in an interactive terminal\n const isInteractive = process.stdin.isTTY && process.stdout.isTTY;\n\n if (isInteractive) {\n const response = await confirm({\n message: \"Proceed with upgrade?\",\n });\n shouldProceed = response === true;\n } else {\n const error = new Error(\"Non-interactive mode requires --yes flag to proceed with upgrade\");\n if (parentSpan) {\n parentSpan.recordException(error);\n parentSpan.setAttribute(\"upgrade.result\", \"non_interactive_abort\");\n }\n console.error(\n ansis.red(\"Error: Non-interactive mode requires --yes flag to proceed with upgrade\")\n );\n throw error;\n }\n }\n\n if (!shouldProceed) {\n console.log(ansis.dim(\"\\nUpgrade cancelled\\n\"));\n if (parentSpan) {\n parentSpan.setAttribute(\"upgrade.user_cancelled\", true);\n }\n return;\n }\n\n console.log(ansis.bold(\"\\nExecuting upgrades...\\n\"));\n\n // Execute actions in order: spec, model, then integrations\n for (const action of actions) {\n if (action.type === \"spec\") {\n await executeSpecUpgrade(projectRoot, action);\n } else if (action.type === \"model\") {\n await executeModelMigration(action, options);\n } else if (action.type === \"integration\") {\n await executeIntegrationUpdate(action.description, async () => {\n if (action.integrationName === \"claude\") {\n const m = new ClaudeIntegrationManager();\n await m.upgrade({ force: true }); // force=true skips internal prompts (user confirmed above)\n } else {\n const m = new CopilotIntegrationManager();\n await m.upgrade({ force: true });\n }\n });\n }\n }\n\n console.log(ansis.green(\"\\n\u2713 All upgrades completed successfully!\\n\"));\n}\n\n/**\n * Execute spec reference upgrade\n */\nasync function executeSpecUpgrade(projectRoot: string, action: UpgradeAction): Promise<void> {\n const operationSpan = isTelemetryEnabled\n ? startSpan(\"upgrade.spec\", {\n \"upgrade.spec.from_version\": action.fromVersion || \"none\",\n \"upgrade.spec.to_version\": action.toVersion,\n \"upgrade.spec.is_reinstall\": !action.fromVersion,\n })\n : null;\n\n try {\n console.log(ansis.dim(`Installing spec reference v${action.toVersion}...`));\n await installSpecReference(projectRoot, true);\n console.log(ansis.green(`\u2713 Spec reference upgraded to v${action.toVersion}`));\n\n if (operationSpan) {\n operationSpan.setAttribute(\"upgrade.spec.result\", \"success\");\n }\n } catch (error) {\n if (operationSpan) {\n operationSpan.recordException(error as Error);\n operationSpan.setStatus({\n code: 2, // SpanStatusCode.ERROR\n message: getErrorMessage(error),\n });\n operationSpan.setAttribute(\"upgrade.spec.result\", \"error\");\n }\n console.error(\n ansis.red(\n `Error upgrading spec reference: ${getErrorMessage(error)}`\n )\n );\n throw error;\n } finally {\n endSpan(operationSpan);\n }\n}\n\n/**\n * Execute model migration\n */\nasync function executeModelMigration(\n action: UpgradeAction,\n options: UpgradeOptions\n): Promise<void> {\n const operationSpan = isTelemetryEnabled\n ? startSpan(\"upgrade.model\", {\n \"upgrade.model.from_version\": action.fromVersion || \"unknown\",\n \"upgrade.model.to_version\": action.toVersion,\n \"upgrade.model.version_bump_only\": action.versionBumpOnly || false,\n \"upgrade.model.validate\": !options.force,\n })\n : null;\n\n try {\n if (action.versionBumpOnly) {\n console.log(\n ansis.dim(`Bumping model spec version from v${action.fromVersion} to v${action.toVersion}...`)\n );\n const model = await Model.load(process.cwd(), { lazyLoad: true });\n model.manifest.specVersion = action.toVersion;\n await model.saveManifest();\n console.log(ansis.green(`\u2713 Model spec version updated to v${action.toVersion}`));\n\n if (operationSpan) {\n operationSpan.setAttribute(\"upgrade.model.result\", \"version_bumped\");\n }\n return;\n }\n\n console.log(\n ansis.dim(`Migrating model from v${action.fromVersion} to v${action.toVersion}...`)\n );\n\n // Load the model\n const model = await Model.load(process.cwd(), { lazyLoad: false });\n\n // Apply migrations\n const registry = new MigrationRegistry();\n const result = await registry.applyMigrations(model, {\n fromVersion: action.fromVersion!,\n toVersion: action.toVersion,\n dryRun: false,\n validate: !options.force,\n });\n\n // Display migration results\n for (const applied of result.applied) {\n console.log(ansis.green(` \u2713 ${applied.from} \u2192 ${applied.to}: ${applied.description}`));\n if (applied.changes?.filesModified) {\n console.log(ansis.dim(` Files modified: ${applied.changes.filesModified}`));\n }\n }\n\n // Save changes\n await model.saveManifest();\n await model.saveDirtyLayers();\n\n console.log(ansis.green(`\u2713 Model migrated to v${action.toVersion}`));\n\n if (operationSpan) {\n operationSpan.setAttribute(\"upgrade.model.result\", \"migrated\");\n operationSpan.setAttribute(\"upgrade.model.migrations_applied\", result.applied.length);\n }\n } catch (error) {\n if (operationSpan) {\n operationSpan.recordException(error as Error);\n operationSpan.setStatus({\n code: 2, // SpanStatusCode.ERROR\n message: getErrorMessage(error),\n });\n operationSpan.setAttribute(\"upgrade.model.result\", \"error\");\n }\n console.error(\n ansis.red(`Error migrating model: ${getErrorMessage(error)}`)\n );\n throw error;\n } finally {\n endSpan(operationSpan);\n }\n}\n\n/**\n * Execute integration update\n */\nasync function executeIntegrationUpdate(\n label: string,\n updateFn: () => Promise<void>\n): Promise<void> {\n const operationSpan = isTelemetryEnabled\n ? startSpan(\"upgrade.integration\", {\n \"upgrade.integration.label\": label,\n \"upgrade.integration.type\": label.includes(\"Claude\")\n ? \"claude\"\n : label.includes(\"Copilot\")\n ? \"copilot\"\n : \"unknown\",\n })\n : null;\n\n try {\n console.log(ansis.dim(`${label}...`));\n await updateFn();\n console.log(ansis.green(`\u2713 ${label}`));\n\n if (operationSpan) {\n operationSpan.setAttribute(\"upgrade.integration.result\", \"success\");\n }\n } catch (error) {\n if (operationSpan) {\n operationSpan.recordException(error as Error);\n operationSpan.setStatus({\n code: 2, // SpanStatusCode.ERROR\n message: getErrorMessage(error),\n });\n operationSpan.setAttribute(\"upgrade.integration.result\", \"error\");\n }\n console.error(ansis.red(`Error: ${label} failed: ${getErrorMessage(error)}`));\n throw error;\n } finally {\n endSpan(operationSpan);\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["integrationActions", "integrationUpToDate", "model"]
7
7
  }