@girardelli/architect 5.0.0 → 8.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (335) hide show
  1. package/dist/{cli.d.ts → src/adapters/cli.d.ts} +1 -2
  2. package/dist/{cli.js → src/adapters/cli.js} +191 -213
  3. package/dist/src/adapters/cli.js.map +1 -0
  4. package/dist/src/adapters/github-action.d.ts +9 -0
  5. package/dist/src/adapters/github-action.js +94 -0
  6. package/dist/src/adapters/github-action.js.map +1 -0
  7. package/dist/src/adapters/html-reporter/scripts.d.ts +5 -0
  8. package/dist/src/adapters/html-reporter/scripts.js +400 -0
  9. package/dist/src/adapters/html-reporter/scripts.js.map +1 -0
  10. package/dist/src/adapters/html-reporter/sections/agents.d.ts +2 -0
  11. package/dist/src/adapters/html-reporter/sections/agents.js +260 -0
  12. package/dist/src/adapters/html-reporter/sections/agents.js.map +1 -0
  13. package/dist/src/adapters/html-reporter/sections/anti-patterns.d.ts +13 -0
  14. package/dist/src/adapters/html-reporter/sections/anti-patterns.js +64 -0
  15. package/dist/src/adapters/html-reporter/sections/anti-patterns.js.map +1 -0
  16. package/dist/src/adapters/html-reporter/sections/header.d.ts +3 -0
  17. package/dist/src/adapters/html-reporter/sections/header.js +30 -0
  18. package/dist/src/adapters/html-reporter/sections/header.js.map +1 -0
  19. package/dist/src/adapters/html-reporter/sections/layers.d.ts +9 -0
  20. package/dist/src/adapters/html-reporter/sections/layers.js +143 -0
  21. package/dist/src/adapters/html-reporter/sections/layers.js.map +1 -0
  22. package/dist/src/adapters/html-reporter/sections/overview.d.ts +2 -0
  23. package/dist/src/adapters/html-reporter/sections/overview.js +58 -0
  24. package/dist/src/adapters/html-reporter/sections/overview.js.map +1 -0
  25. package/dist/src/adapters/html-reporter/sections/refactoring-plan.d.ts +3 -0
  26. package/dist/src/adapters/html-reporter/sections/refactoring-plan.js +151 -0
  27. package/dist/src/adapters/html-reporter/sections/refactoring-plan.js.map +1 -0
  28. package/dist/src/adapters/html-reporter/sections/score.d.ts +7 -0
  29. package/dist/src/adapters/html-reporter/sections/score.js +70 -0
  30. package/dist/src/adapters/html-reporter/sections/score.js.map +1 -0
  31. package/dist/src/adapters/html-reporter/sections/suggestions.d.ts +7 -0
  32. package/dist/src/adapters/html-reporter/sections/suggestions.js +34 -0
  33. package/dist/src/adapters/html-reporter/sections/suggestions.js.map +1 -0
  34. package/dist/src/adapters/html-reporter/styles.d.ts +1 -0
  35. package/dist/src/adapters/html-reporter/styles.js +526 -0
  36. package/dist/src/adapters/html-reporter/styles.js.map +1 -0
  37. package/dist/src/adapters/html-reporter/utils_adapters.d.ts +20 -0
  38. package/dist/src/adapters/html-reporter/utils_adapters.js +32 -0
  39. package/dist/src/adapters/html-reporter/utils_adapters.js.map +1 -0
  40. package/dist/src/adapters/html-reporter/utils_sections.d.ts +7 -0
  41. package/dist/src/adapters/html-reporter/utils_sections.js +58 -0
  42. package/dist/src/adapters/html-reporter/utils_sections.js.map +1 -0
  43. package/dist/src/adapters/html-reporter.d.ts +10 -0
  44. package/dist/src/adapters/html-reporter.js +97 -0
  45. package/dist/src/adapters/html-reporter.js.map +1 -0
  46. package/dist/src/adapters/progress-logger.d.ts +55 -0
  47. package/dist/src/adapters/progress-logger.js +200 -0
  48. package/dist/src/adapters/progress-logger.js.map +1 -0
  49. package/dist/{refactor-reporter.d.ts → src/adapters/refactor-reporter.d.ts} +1 -2
  50. package/dist/{refactor-reporter.js → src/adapters/refactor-reporter.js} +1 -1
  51. package/dist/src/adapters/refactor-reporter.js.map +1 -0
  52. package/dist/{reporter.d.ts → src/adapters/reporter.d.ts} +1 -2
  53. package/dist/src/adapters/reporter.js.map +1 -0
  54. package/dist/src/core/GenesisTerminal.d.ts +8 -0
  55. package/dist/src/core/GenesisTerminal.js +105 -0
  56. package/dist/src/core/GenesisTerminal.js.map +1 -0
  57. package/dist/{index.d.ts → src/core/architect.d.ts} +4 -18
  58. package/dist/{index.js → src/core/architect.js} +22 -21
  59. package/dist/src/core/architect.js.map +1 -0
  60. package/dist/tests/architect-adapter-enrichment.test.d.ts +1 -0
  61. package/dist/tests/architect-adapter-enrichment.test.js +11 -0
  62. package/dist/tests/architect-adapter-enrichment.test.js.map +1 -0
  63. package/dist/tests/github-action.test.d.ts +1 -0
  64. package/dist/tests/github-action.test.js +92 -0
  65. package/dist/tests/github-action.test.js.map +1 -0
  66. package/package.json +15 -65
  67. package/src/adapters/cli.ts +492 -0
  68. package/src/adapters/github-action.ts +109 -0
  69. package/src/adapters/html-reporter/scripts.ts +402 -0
  70. package/src/adapters/html-reporter/sections/agents.ts +267 -0
  71. package/src/adapters/html-reporter/sections/anti-patterns.ts +81 -0
  72. package/src/adapters/html-reporter/sections/header.ts +35 -0
  73. package/src/adapters/html-reporter/sections/layers.ts +165 -0
  74. package/src/adapters/html-reporter/sections/overview.ts +64 -0
  75. package/src/adapters/html-reporter/sections/refactoring-plan.ts +166 -0
  76. package/src/adapters/html-reporter/sections/score.ts +80 -0
  77. package/src/adapters/html-reporter/sections/suggestions.ts +39 -0
  78. package/src/adapters/html-reporter/styles.ts +525 -0
  79. package/src/adapters/html-reporter/utils_adapters.ts +39 -0
  80. package/src/adapters/html-reporter/utils_sections.ts +55 -0
  81. package/src/adapters/html-reporter.ts +102 -0
  82. package/src/adapters/progress-logger.ts +236 -0
  83. package/src/{refactor-reporter.ts → adapters/refactor-reporter.ts} +2 -2
  84. package/src/{reporter.ts → adapters/reporter.ts} +1 -1
  85. package/src/core/GenesisTerminal.ts +127 -0
  86. package/src/{index.ts → core/architect.ts} +27 -45
  87. package/tests/github-action.test.ts +109 -0
  88. package/tsconfig.json +12 -19
  89. package/CONTRIBUTING.md +0 -140
  90. package/LICENSE +0 -21
  91. package/PROJECT_STRUCTURE.txt +0 -168
  92. package/README.md +0 -257
  93. package/architect-run.sh +0 -431
  94. package/assets/banner-v3.html +0 -561
  95. package/dist/agent-generator/context-enricher.d.ts +0 -58
  96. package/dist/agent-generator/context-enricher.d.ts.map +0 -1
  97. package/dist/agent-generator/context-enricher.js +0 -613
  98. package/dist/agent-generator/context-enricher.js.map +0 -1
  99. package/dist/agent-generator/domain-inferrer.d.ts +0 -52
  100. package/dist/agent-generator/domain-inferrer.d.ts.map +0 -1
  101. package/dist/agent-generator/domain-inferrer.js +0 -585
  102. package/dist/agent-generator/domain-inferrer.js.map +0 -1
  103. package/dist/agent-generator/framework-detector.d.ts +0 -40
  104. package/dist/agent-generator/framework-detector.d.ts.map +0 -1
  105. package/dist/agent-generator/framework-detector.js +0 -611
  106. package/dist/agent-generator/framework-detector.js.map +0 -1
  107. package/dist/agent-generator/index.d.ts +0 -47
  108. package/dist/agent-generator/index.d.ts.map +0 -1
  109. package/dist/agent-generator/index.js +0 -545
  110. package/dist/agent-generator/index.js.map +0 -1
  111. package/dist/agent-generator/stack-detector.d.ts +0 -14
  112. package/dist/agent-generator/stack-detector.d.ts.map +0 -1
  113. package/dist/agent-generator/stack-detector.js +0 -124
  114. package/dist/agent-generator/stack-detector.js.map +0 -1
  115. package/dist/agent-generator/templates/core/agents.d.ts +0 -17
  116. package/dist/agent-generator/templates/core/agents.d.ts.map +0 -1
  117. package/dist/agent-generator/templates/core/agents.js +0 -1256
  118. package/dist/agent-generator/templates/core/agents.js.map +0 -1
  119. package/dist/agent-generator/templates/core/architecture-rules.d.ts +0 -7
  120. package/dist/agent-generator/templates/core/architecture-rules.d.ts.map +0 -1
  121. package/dist/agent-generator/templates/core/architecture-rules.js +0 -274
  122. package/dist/agent-generator/templates/core/architecture-rules.js.map +0 -1
  123. package/dist/agent-generator/templates/core/general-rules.d.ts +0 -8
  124. package/dist/agent-generator/templates/core/general-rules.d.ts.map +0 -1
  125. package/dist/agent-generator/templates/core/general-rules.js +0 -301
  126. package/dist/agent-generator/templates/core/general-rules.js.map +0 -1
  127. package/dist/agent-generator/templates/core/hooks-generator.d.ts +0 -21
  128. package/dist/agent-generator/templates/core/hooks-generator.d.ts.map +0 -1
  129. package/dist/agent-generator/templates/core/hooks-generator.js +0 -233
  130. package/dist/agent-generator/templates/core/hooks-generator.js.map +0 -1
  131. package/dist/agent-generator/templates/core/index-md.d.ts +0 -7
  132. package/dist/agent-generator/templates/core/index-md.d.ts.map +0 -1
  133. package/dist/agent-generator/templates/core/index-md.js +0 -246
  134. package/dist/agent-generator/templates/core/index-md.js.map +0 -1
  135. package/dist/agent-generator/templates/core/orchestrator.d.ts +0 -8
  136. package/dist/agent-generator/templates/core/orchestrator.d.ts.map +0 -1
  137. package/dist/agent-generator/templates/core/orchestrator.js +0 -422
  138. package/dist/agent-generator/templates/core/orchestrator.js.map +0 -1
  139. package/dist/agent-generator/templates/core/preflight.d.ts +0 -8
  140. package/dist/agent-generator/templates/core/preflight.d.ts.map +0 -1
  141. package/dist/agent-generator/templates/core/preflight.js +0 -213
  142. package/dist/agent-generator/templates/core/preflight.js.map +0 -1
  143. package/dist/agent-generator/templates/core/quality-gates.d.ts +0 -11
  144. package/dist/agent-generator/templates/core/quality-gates.d.ts.map +0 -1
  145. package/dist/agent-generator/templates/core/quality-gates.js +0 -254
  146. package/dist/agent-generator/templates/core/quality-gates.js.map +0 -1
  147. package/dist/agent-generator/templates/core/security-rules.d.ts +0 -7
  148. package/dist/agent-generator/templates/core/security-rules.d.ts.map +0 -1
  149. package/dist/agent-generator/templates/core/security-rules.js +0 -528
  150. package/dist/agent-generator/templates/core/security-rules.js.map +0 -1
  151. package/dist/agent-generator/templates/core/skills-generator.d.ts +0 -19
  152. package/dist/agent-generator/templates/core/skills-generator.d.ts.map +0 -1
  153. package/dist/agent-generator/templates/core/skills-generator.js +0 -546
  154. package/dist/agent-generator/templates/core/skills-generator.js.map +0 -1
  155. package/dist/agent-generator/templates/core/workflow-fix-bug.d.ts +0 -7
  156. package/dist/agent-generator/templates/core/workflow-fix-bug.d.ts.map +0 -1
  157. package/dist/agent-generator/templates/core/workflow-fix-bug.js +0 -237
  158. package/dist/agent-generator/templates/core/workflow-fix-bug.js.map +0 -1
  159. package/dist/agent-generator/templates/core/workflow-new-feature.d.ts +0 -8
  160. package/dist/agent-generator/templates/core/workflow-new-feature.d.ts.map +0 -1
  161. package/dist/agent-generator/templates/core/workflow-new-feature.js +0 -321
  162. package/dist/agent-generator/templates/core/workflow-new-feature.js.map +0 -1
  163. package/dist/agent-generator/templates/core/workflow-review.d.ts +0 -7
  164. package/dist/agent-generator/templates/core/workflow-review.d.ts.map +0 -1
  165. package/dist/agent-generator/templates/core/workflow-review.js +0 -104
  166. package/dist/agent-generator/templates/core/workflow-review.js.map +0 -1
  167. package/dist/agent-generator/templates/domain/index.d.ts +0 -22
  168. package/dist/agent-generator/templates/domain/index.d.ts.map +0 -1
  169. package/dist/agent-generator/templates/domain/index.js +0 -1176
  170. package/dist/agent-generator/templates/domain/index.js.map +0 -1
  171. package/dist/agent-generator/templates/stack/index.d.ts +0 -8
  172. package/dist/agent-generator/templates/stack/index.d.ts.map +0 -1
  173. package/dist/agent-generator/templates/stack/index.js +0 -695
  174. package/dist/agent-generator/templates/stack/index.js.map +0 -1
  175. package/dist/agent-generator/templates/template-helpers.d.ts +0 -75
  176. package/dist/agent-generator/templates/template-helpers.d.ts.map +0 -1
  177. package/dist/agent-generator/templates/template-helpers.js +0 -726
  178. package/dist/agent-generator/templates/template-helpers.js.map +0 -1
  179. package/dist/agent-generator/types.d.ts +0 -196
  180. package/dist/agent-generator/types.d.ts.map +0 -1
  181. package/dist/agent-generator/types.js +0 -27
  182. package/dist/agent-generator/types.js.map +0 -1
  183. package/dist/analyzer.d.ts +0 -38
  184. package/dist/analyzer.d.ts.map +0 -1
  185. package/dist/analyzer.js +0 -383
  186. package/dist/analyzer.js.map +0 -1
  187. package/dist/analyzers/forecast.d.ts +0 -85
  188. package/dist/analyzers/forecast.d.ts.map +0 -1
  189. package/dist/analyzers/forecast.js +0 -337
  190. package/dist/analyzers/forecast.js.map +0 -1
  191. package/dist/analyzers/git-cache.d.ts +0 -7
  192. package/dist/analyzers/git-cache.d.ts.map +0 -1
  193. package/dist/analyzers/git-cache.js +0 -41
  194. package/dist/analyzers/git-cache.js.map +0 -1
  195. package/dist/analyzers/git-history.d.ts +0 -113
  196. package/dist/analyzers/git-history.d.ts.map +0 -1
  197. package/dist/analyzers/git-history.js +0 -333
  198. package/dist/analyzers/git-history.js.map +0 -1
  199. package/dist/analyzers/index.d.ts +0 -10
  200. package/dist/analyzers/index.d.ts.map +0 -1
  201. package/dist/analyzers/index.js +0 -7
  202. package/dist/analyzers/index.js.map +0 -1
  203. package/dist/analyzers/temporal-scorer.d.ts +0 -72
  204. package/dist/analyzers/temporal-scorer.d.ts.map +0 -1
  205. package/dist/analyzers/temporal-scorer.js +0 -140
  206. package/dist/analyzers/temporal-scorer.js.map +0 -1
  207. package/dist/anti-patterns.d.ts +0 -24
  208. package/dist/anti-patterns.d.ts.map +0 -1
  209. package/dist/anti-patterns.js +0 -230
  210. package/dist/anti-patterns.js.map +0 -1
  211. package/dist/cli.d.ts.map +0 -1
  212. package/dist/cli.js.map +0 -1
  213. package/dist/config.d.ts +0 -12
  214. package/dist/config.d.ts.map +0 -1
  215. package/dist/config.js +0 -110
  216. package/dist/config.js.map +0 -1
  217. package/dist/diagram.d.ts +0 -9
  218. package/dist/diagram.d.ts.map +0 -1
  219. package/dist/diagram.js +0 -116
  220. package/dist/diagram.js.map +0 -1
  221. package/dist/html-reporter.d.ts +0 -47
  222. package/dist/html-reporter.d.ts.map +0 -1
  223. package/dist/html-reporter.js +0 -1747
  224. package/dist/html-reporter.js.map +0 -1
  225. package/dist/index.d.ts.map +0 -1
  226. package/dist/index.js.map +0 -1
  227. package/dist/project-summarizer.d.ts +0 -38
  228. package/dist/project-summarizer.d.ts.map +0 -1
  229. package/dist/project-summarizer.js +0 -463
  230. package/dist/project-summarizer.js.map +0 -1
  231. package/dist/refactor-engine.d.ts +0 -18
  232. package/dist/refactor-engine.d.ts.map +0 -1
  233. package/dist/refactor-engine.js +0 -86
  234. package/dist/refactor-engine.js.map +0 -1
  235. package/dist/refactor-reporter.d.ts.map +0 -1
  236. package/dist/refactor-reporter.js.map +0 -1
  237. package/dist/reporter.d.ts.map +0 -1
  238. package/dist/reporter.js.map +0 -1
  239. package/dist/rules/barrel-optimizer.d.ts +0 -13
  240. package/dist/rules/barrel-optimizer.d.ts.map +0 -1
  241. package/dist/rules/barrel-optimizer.js +0 -77
  242. package/dist/rules/barrel-optimizer.js.map +0 -1
  243. package/dist/rules/dead-code-detector.d.ts +0 -21
  244. package/dist/rules/dead-code-detector.d.ts.map +0 -1
  245. package/dist/rules/dead-code-detector.js +0 -117
  246. package/dist/rules/dead-code-detector.js.map +0 -1
  247. package/dist/rules/hub-splitter.d.ts +0 -13
  248. package/dist/rules/hub-splitter.d.ts.map +0 -1
  249. package/dist/rules/hub-splitter.js +0 -110
  250. package/dist/rules/hub-splitter.js.map +0 -1
  251. package/dist/rules/import-organizer.d.ts +0 -13
  252. package/dist/rules/import-organizer.d.ts.map +0 -1
  253. package/dist/rules/import-organizer.js +0 -85
  254. package/dist/rules/import-organizer.js.map +0 -1
  255. package/dist/rules/module-grouper.d.ts +0 -13
  256. package/dist/rules/module-grouper.d.ts.map +0 -1
  257. package/dist/rules/module-grouper.js +0 -110
  258. package/dist/rules/module-grouper.js.map +0 -1
  259. package/dist/scanner.d.ts +0 -31
  260. package/dist/scanner.d.ts.map +0 -1
  261. package/dist/scanner.js +0 -328
  262. package/dist/scanner.js.map +0 -1
  263. package/dist/scorer.d.ts +0 -27
  264. package/dist/scorer.d.ts.map +0 -1
  265. package/dist/scorer.js +0 -229
  266. package/dist/scorer.js.map +0 -1
  267. package/dist/types.d.ts +0 -186
  268. package/dist/types.d.ts.map +0 -1
  269. package/dist/types.js +0 -2
  270. package/dist/types.js.map +0 -1
  271. package/examples/sample-report.md +0 -207
  272. package/jest.config.js +0 -18
  273. package/src/agent-generator/context-enricher.ts +0 -672
  274. package/src/agent-generator/domain-inferrer.ts +0 -635
  275. package/src/agent-generator/framework-detector.ts +0 -669
  276. package/src/agent-generator/index.ts +0 -634
  277. package/src/agent-generator/stack-detector.ts +0 -115
  278. package/src/agent-generator/templates/core/agents.ts +0 -1296
  279. package/src/agent-generator/templates/core/architecture-rules.ts +0 -287
  280. package/src/agent-generator/templates/core/general-rules.ts +0 -306
  281. package/src/agent-generator/templates/core/hooks-generator.ts +0 -242
  282. package/src/agent-generator/templates/core/index-md.ts +0 -260
  283. package/src/agent-generator/templates/core/orchestrator.ts +0 -459
  284. package/src/agent-generator/templates/core/preflight.ts +0 -215
  285. package/src/agent-generator/templates/core/quality-gates.ts +0 -256
  286. package/src/agent-generator/templates/core/security-rules.ts +0 -543
  287. package/src/agent-generator/templates/core/skills-generator.ts +0 -585
  288. package/src/agent-generator/templates/core/workflow-fix-bug.ts +0 -239
  289. package/src/agent-generator/templates/core/workflow-new-feature.ts +0 -323
  290. package/src/agent-generator/templates/core/workflow-review.ts +0 -106
  291. package/src/agent-generator/templates/domain/index.ts +0 -1201
  292. package/src/agent-generator/templates/stack/index.ts +0 -705
  293. package/src/agent-generator/templates/template-helpers.ts +0 -776
  294. package/src/agent-generator/types.ts +0 -232
  295. package/src/analyzer.ts +0 -447
  296. package/src/analyzers/forecast.ts +0 -496
  297. package/src/analyzers/git-cache.ts +0 -52
  298. package/src/analyzers/git-history.ts +0 -488
  299. package/src/analyzers/index.ts +0 -33
  300. package/src/analyzers/temporal-scorer.ts +0 -227
  301. package/src/anti-patterns.ts +0 -287
  302. package/src/cli.ts +0 -517
  303. package/src/config.ts +0 -123
  304. package/src/diagram.ts +0 -144
  305. package/src/html-reporter.ts +0 -1830
  306. package/src/project-summarizer.ts +0 -521
  307. package/src/refactor-engine.ts +0 -117
  308. package/src/rules/barrel-optimizer.ts +0 -97
  309. package/src/rules/dead-code-detector.ts +0 -132
  310. package/src/rules/hub-splitter.ts +0 -123
  311. package/src/rules/import-organizer.ts +0 -98
  312. package/src/rules/module-grouper.ts +0 -124
  313. package/src/scanner.ts +0 -344
  314. package/src/scorer.ts +0 -254
  315. package/src/types.ts +0 -193
  316. package/tests/agent-generator.test.ts +0 -427
  317. package/tests/analyzers-integration.test.ts +0 -174
  318. package/tests/anti-patterns.test.ts +0 -94
  319. package/tests/context-enricher.test.ts +0 -971
  320. package/tests/fixtures/monorepo/package.json +0 -6
  321. package/tests/fixtures/monorepo/packages/app/package.json +0 -12
  322. package/tests/fixtures/monorepo/packages/app/src/index.ts +0 -6
  323. package/tests/fixtures/monorepo/packages/core/package.json +0 -7
  324. package/tests/fixtures/monorepo/packages/core/src/index.ts +0 -7
  325. package/tests/forecast.test.ts +0 -509
  326. package/tests/framework-detector.test.ts +0 -1172
  327. package/tests/git-history.test.ts +0 -254
  328. package/tests/monorepo-scan.test.ts +0 -170
  329. package/tests/scanner.test.ts +0 -54
  330. package/tests/scorer.test.ts +0 -674
  331. package/tests/stack-detector.test.ts +0 -241
  332. package/tests/template-generation.test.ts +0 -706
  333. package/tests/template-helpers.test.ts +0 -1152
  334. package/tests/temporal-scorer.test.ts +0 -307
  335. /package/dist/{reporter.js → src/adapters/reporter.js} +0 -0
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * Architect CLI v3.1
3
+ * Architect CLI v8.1
4
4
  * Enterprise Architecture Analysis — @girardelli/architect
5
5
  *
6
6
  * Uso:
@@ -11,4 +11,3 @@
11
11
  * npx architect anti-patterns ./src
12
12
  */
13
13
  export {};
14
- //# sourceMappingURL=cli.d.ts.map
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * Architect CLI v3.1
3
+ * Architect CLI v8.1
4
4
  * Enterprise Architecture Analysis — @girardelli/architect
5
5
  *
6
6
  * Uso:
@@ -10,208 +10,23 @@
10
10
  * npx architect score ./src
11
11
  * npx architect anti-patterns ./src
12
12
  */
13
- import { architect } from './index.js';
13
+ import { architect } from '../core/architect.js';
14
+ import { GenesisTerminal } from '../core/GenesisTerminal.js';
15
+ import { c, ProgressReporter } from './progress-logger.js';
16
+ import { AgentExecutor } from '@girardelli/architect-agents/src/core/agent-runtime/executor.js';
14
17
  import { ReportGenerator } from './reporter.js';
15
18
  import { HtmlReportGenerator } from './html-reporter.js';
16
19
  import { RefactorReportGenerator } from './refactor-reporter.js';
17
- import { writeFileSync } from 'fs';
18
- import { resolve, basename } from 'path';
19
- // ── ANSI Colors & Styles ──
20
- const c = {
21
- reset: '\x1b[0m',
22
- bold: '\x1b[1m',
23
- dim: '\x1b[2m',
24
- italic: '\x1b[3m',
25
- // Colors
26
- red: '\x1b[38;5;196m',
27
- green: '\x1b[38;5;46m',
28
- blue: '\x1b[38;5;33m',
29
- cyan: '\x1b[38;5;51m',
30
- yellow: '\x1b[38;5;220m',
31
- magenta: '\x1b[38;5;201m',
32
- orange: '\x1b[38;5;208m',
33
- white: '\x1b[38;5;255m',
34
- gray: '\x1b[38;5;240m',
35
- darkGray: '\x1b[38;5;236m',
36
- // Bg
37
- bgBlue: '\x1b[48;5;17m',
38
- bgGreen: '\x1b[48;5;22m',
39
- bgRed: '\x1b[48;5;52m',
40
- bgCyan: '\x1b[48;5;23m',
41
- };
42
- const PHASES = {
43
- scan: { icon: '◉', label: 'FILE SCANNER', verb: 'Scanning filesystem', color: c.cyan },
44
- dependencies: { icon: '◉', label: 'DEPENDENCY MAPPER', verb: 'Mapping import graph', color: c.blue },
45
- layers: { icon: '◉', label: 'LAYER DETECTOR', verb: 'Classifying architecture', color: c.magenta },
46
- antipatterns: { icon: '◉', label: 'PATTERN ANALYZER', verb: 'Detecting anti-patterns', color: c.orange },
47
- scoring: { icon: '◉', label: 'QUALITY ENGINE', verb: 'Computing quality metrics', color: c.yellow },
48
- normalize: { icon: '◉', label: 'PATH NORMALIZER', verb: 'Normalizing paths', color: c.gray },
49
- summarize: { icon: '◉', label: 'AI SUMMARIZER', verb: 'Generating project summary', color: c.green },
50
- };
51
- const PHASE_ORDER = ['scan', 'dependencies', 'layers', 'antipatterns', 'scoring', 'normalize', 'summarize'];
52
- /**
53
- * Enterprise-Grade Progress Reporter
54
- * Real-time phase tracking with visual feedback
55
- */
56
- class ProgressReporter {
57
- constructor() {
58
- this.phaseStart = 0;
59
- this.completedPhases = [];
60
- this.scanMetrics = {};
61
- this.startTime = Date.now();
62
- this.totalPhases = PHASE_ORDER.length;
63
- }
64
- /** Print the stylized header */
65
- printHeader(projectPath) {
66
- const name = basename(projectPath);
67
- const w = process.stderr;
68
- w.write('\n');
69
- w.write(`${c.darkGray} ┌─────────────────────────────────────────────────────────────────┐${c.reset}\n`);
70
- w.write(`${c.darkGray} │${c.reset} ${c.cyan}${c.bold}⚡ ARCHITECT v3.1${c.reset} ${c.dim}Enterprise Architecture Intelligence${c.reset} ${c.darkGray}│${c.reset}\n`);
71
- w.write(`${c.darkGray} │${c.reset} ${c.dim}@girardelli/architect — powered by Girardelli Tecnologia${c.reset} ${c.darkGray}│${c.reset}\n`);
72
- w.write(`${c.darkGray} └─────────────────────────────────────────────────────────────────┘${c.reset}\n`);
73
- w.write('\n');
74
- w.write(` ${c.dim}Target:${c.reset} ${c.white}${c.bold}${name}${c.reset}\n`);
75
- w.write(` ${c.dim}Path:${c.reset} ${c.gray}${projectPath}${c.reset}\n`);
76
- w.write('\n');
77
- w.write(` ${c.dim}──── Analysis Pipeline ────────────────────────────────────────${c.reset}\n`);
78
- w.write('\n');
79
- }
80
- /** Handle a progress event from the analyzer */
81
- onProgress(event) {
82
- const phase = PHASES[event.phase];
83
- if (!phase)
84
- return;
85
- if (event.status === 'start') {
86
- this.phaseStart = Date.now();
87
- this.printPhaseStart(event.phase, phase);
88
- }
89
- else if (event.status === 'complete') {
90
- this.completedPhases.push(event.phase);
91
- this.printPhaseComplete(event.phase, phase, event.metrics);
92
- if (event.metrics) {
93
- Object.assign(this.scanMetrics, event.metrics);
94
- }
95
- }
96
- }
97
- printPhaseStart(key, phase) {
98
- const idx = PHASE_ORDER.indexOf(key) + 1;
99
- const bar = this.buildProgressBar(this.completedPhases.length, this.totalPhases);
100
- process.stderr.write(` ${c.dim}[${idx}/${this.totalPhases}]${c.reset} ${phase.color}${phase.icon}${c.reset} ${c.bold}${phase.label}${c.reset} ${c.dim}— ${phase.verb}...${c.reset} ${bar}\n`);
101
- }
102
- printPhaseComplete(key, phase, metrics) {
103
- const elapsed = Date.now() - this.phaseStart;
104
- const metricStr = metrics ? this.formatMetrics(key, metrics) : '';
105
- process.stderr.write(` ${c.dim} └─${c.reset} ${c.green}✓${c.reset} ${c.dim}${this.formatTime(elapsed)}${c.reset}${metricStr}\n`);
106
- }
107
- formatMetrics(phase, m) {
108
- const parts = [];
109
- switch (phase) {
110
- case 'scan':
111
- parts.push(`${c.white}${m.files}${c.reset}${c.dim} files${c.reset}`);
112
- parts.push(`${c.white}${Number(m.lines).toLocaleString()}${c.reset}${c.dim} lines${c.reset}`);
113
- parts.push(`${c.white}${m.languages}${c.reset}${c.dim} langs${c.reset}`);
114
- break;
115
- case 'dependencies':
116
- parts.push(`${c.white}${m.edges}${c.reset}${c.dim} edges${c.reset}`);
117
- parts.push(`${c.white}${m.modules}${c.reset}${c.dim} modules${c.reset}`);
118
- break;
119
- case 'layers':
120
- parts.push(`${c.white}${m.layers}${c.reset}${c.dim} layers${c.reset}`);
121
- parts.push(`${c.white}${m.classified}${c.reset}${c.dim} classified${c.reset}`);
122
- break;
123
- case 'antipatterns':
124
- if (Number(m.total) === 0) {
125
- parts.push(`${c.green}clean${c.reset}`);
126
- }
127
- else {
128
- parts.push(`${c.yellow}${m.total}${c.reset}${c.dim} found${c.reset}`);
129
- if (Number(m.critical) > 0)
130
- parts.push(`${c.red}${m.critical} critical${c.reset}`);
131
- if (Number(m.high) > 0)
132
- parts.push(`${c.orange}${m.high} high${c.reset}`);
133
- }
134
- break;
135
- case 'scoring': {
136
- const overall = Number(m.overall);
137
- const scoreColor = overall >= 80 ? c.green : overall >= 60 ? c.yellow : c.red;
138
- parts.push(`${scoreColor}${c.bold}${overall}/100${c.reset}`);
139
- parts.push(`${c.dim}M:${m.modularity} C:${m.coupling} Co:${m.cohesion} L:${m.layering}${c.reset}`);
140
- break;
141
- }
142
- case 'summarize':
143
- parts.push(`${c.white}${m.modules}${c.reset}${c.dim} modules${c.reset}`);
144
- parts.push(`${c.white}${m.techStack}${c.reset}${c.dim} technologies${c.reset}`);
145
- break;
146
- }
147
- return parts.length ? ` ${c.dim}│${c.reset} ${parts.join(`${c.dim} · ${c.reset}`)}` : '';
148
- }
149
- buildProgressBar(done, total) {
150
- const width = 20;
151
- const filled = Math.round((done / total) * width);
152
- const empty = width - filled;
153
- const pct = Math.round((done / total) * 100);
154
- const bar = `${c.cyan}${'█'.repeat(filled)}${c.darkGray}${'░'.repeat(empty)}${c.reset}`;
155
- return `${c.dim}[${c.reset}${bar}${c.dim}]${c.reset} ${c.dim}${pct}%${c.reset}`;
156
- }
157
- formatTime(ms) {
158
- if (ms < 1000)
159
- return `${ms}ms`;
160
- return `${(ms / 1000).toFixed(1)}s`;
161
- }
162
- /** Print extra phase for refactor/agents/report generation */
163
- printExtraPhase(label, verb, color = c.cyan) {
164
- this.phaseStart = Date.now();
165
- const idx = this.completedPhases.length + 1;
166
- process.stderr.write(` ${c.dim}[${idx}/—]${c.reset} ${color}◉${c.reset} ${c.bold}${label}${c.reset} ${c.dim}— ${verb}...${c.reset}\n`);
167
- }
168
- printExtraComplete(detail) {
169
- const elapsed = Date.now() - this.phaseStart;
170
- process.stderr.write(` ${c.dim} └─${c.reset} ${c.green}✓${c.reset} ${c.dim}${this.formatTime(elapsed)}${c.reset} ${detail}\n`);
171
- }
172
- /** Final summary with score visualization */
173
- printSummary(score, breakdown, stats) {
174
- const totalTime = Date.now() - this.startTime;
175
- const w = process.stderr;
176
- w.write('\n');
177
- w.write(` ${c.dim}──── Results ──────────────────────────────────────────────────${c.reset}\n`);
178
- w.write('\n');
179
- // Score meter
180
- const scoreColor = score >= 80 ? c.green : score >= 60 ? c.yellow : c.red;
181
- const meterWidth = 40;
182
- const filled = Math.round((score / 100) * meterWidth);
183
- const meter = `${scoreColor}${'━'.repeat(filled)}${c.darkGray}${'━'.repeat(meterWidth - filled)}${c.reset}`;
184
- const grade = score >= 90 ? 'A+' : score >= 80 ? 'A' : score >= 70 ? 'B' : score >= 60 ? 'C' : score >= 50 ? 'D' : 'F';
185
- w.write(` ${c.bold} ARCHITECTURE SCORE${c.reset}\n`);
186
- w.write(` ${meter} ${scoreColor}${c.bold}${score}/100${c.reset} ${c.dim}(${grade})${c.reset}\n`);
187
- w.write('\n');
188
- w.write(` ${c.dim} Modularity${c.reset} ${this.miniBar(breakdown.modularity)} ${c.white}${breakdown.modularity}${c.reset}\n`);
189
- w.write(` ${c.dim} Coupling${c.reset} ${this.miniBar(breakdown.coupling)} ${c.white}${breakdown.coupling}${c.reset}\n`);
190
- w.write(` ${c.dim} Cohesion${c.reset} ${this.miniBar(breakdown.cohesion)} ${c.white}${breakdown.cohesion}${c.reset}\n`);
191
- w.write(` ${c.dim} Layering${c.reset} ${this.miniBar(breakdown.layering)} ${c.white}${breakdown.layering}${c.reset}\n`);
192
- w.write('\n');
193
- // Stats line
194
- w.write(` ${c.cyan}📁${c.reset} ${c.white}${stats.files}${c.reset}${c.dim} files${c.reset}`);
195
- w.write(` ${c.cyan}📝${c.reset} ${c.white}${stats.lines.toLocaleString()}${c.reset}${c.dim} lines${c.reset}`);
196
- w.write(` ${c.cyan}⚠️${c.reset} ${c.white}${stats.antiPatterns}${c.reset}${c.dim} anti-patterns${c.reset}`);
197
- if (stats.refactorSteps !== undefined) {
198
- w.write(` ${c.cyan}🔧${c.reset} ${c.white}${stats.refactorSteps}${c.reset}${c.dim} steps${c.reset}`);
199
- }
200
- if (stats.agents !== undefined) {
201
- w.write(` ${c.cyan}🤖${c.reset} ${c.white}${stats.agents}${c.reset}${c.dim} agents${c.reset}`);
202
- }
203
- w.write('\n');
204
- // Timing
205
- w.write(`\n ${c.dim}⏱ Completed in ${this.formatTime(totalTime)}${c.reset}\n`);
206
- w.write('\n');
207
- }
208
- miniBar(value) {
209
- const w = 15;
210
- const f = Math.round((value / 100) * w);
211
- const color = value >= 80 ? c.green : value >= 60 ? c.yellow : c.red;
212
- return `${color}${'▓'.repeat(f)}${c.darkGray}${'░'.repeat(w - f)}${c.reset}`;
213
- }
214
- }
20
+ import { writeFileSync, existsSync, readFileSync } from 'fs';
21
+ import { resolve, basename, join } from 'path';
22
+ import { logger } from '@girardelli/architect-core/src/infrastructure/logger.js';
23
+ import { i18n } from '@girardelli/architect-core/src/core/i18n.js';
24
+ import * as yaml from 'yaml';
25
+ import chokidar from 'chokidar';
26
+ import { RulesEngine } from '@girardelli/architect-core/src/core/rules-engine.js';
27
+ import { execSync } from 'child_process';
28
+ import { GithubActionAdapter } from './github-action.js';
29
+ import * as github from '@actions/github';
215
30
  // ── CLI Parsing ──
216
31
  function parseArgs(args) {
217
32
  const command = args[0] || 'analyze';
@@ -220,17 +35,36 @@ function parseArgs(args) {
220
35
  const format = (formatIdx >= 0 ? args[formatIdx + 1] : 'html');
221
36
  const outputIdx = args.indexOf('--output');
222
37
  const output = outputIdx >= 0 ? args[outputIdx + 1] : undefined;
223
- return { command, path: resolve(pathArg), format, output };
38
+ const verbose = args.includes('--verbose') || args.includes('-v');
39
+ const localeIdx = args.indexOf('--locale');
40
+ let locale = 'en'; // default
41
+ if (localeIdx >= 0 && args[localeIdx + 1]) {
42
+ locale = args[localeIdx + 1];
43
+ }
44
+ else {
45
+ // Attempt detect via ENV
46
+ const envLang = process.env.LANG || process.env.LANGUAGE || '';
47
+ if (envLang.toLowerCase().includes('pt')) {
48
+ locale = 'pt-BR';
49
+ }
50
+ }
51
+ const watch = args.includes('--watch') || args.includes('-w');
52
+ const auto = args.includes('--auto');
53
+ return { command, path: resolve(pathArg), format, output, verbose, locale, watch, auto };
224
54
  }
225
55
  function printUsage() {
226
56
  console.log(`
227
- ${c.cyan}${c.bold}⚡ Architect v3.1${c.reset} — Enterprise Architecture Intelligence
57
+ ${c.cyan}${c.bold}⚡ Architect Agent v7.0${c.reset} — Enterprise Architecture Intelligence
228
58
 
229
59
  ${c.bold}Usage:${c.reset}
230
60
  architect <command> [path] [options]
231
61
 
232
62
  ${c.bold}Commands:${c.reset}
233
63
  ${c.cyan}analyze${c.reset} Full architecture analysis (default)
64
+ ${c.cyan}genesis${c.reset} [NEW] Interactive God Mode Terminal (TUI)
65
+ ${c.cyan}execute${c.reset} Autonomous Agent Runtime - auto-refactor project
66
+ ${c.cyan}check${c.reset} Run architecture-as-code validation against .architect.rules.yml
67
+ ${c.cyan}pr-review${c.reset} Run in GitHub Actions to comment on PRs with Score Delta
234
68
  ${c.cyan}refactor${c.reset} Generate refactoring plan with actionable steps
235
69
  ${c.cyan}agents${c.reset} Generate/audit .agent/ directory with AI agents
236
70
  ${c.cyan}diagram${c.reset} Generate architecture diagram only
@@ -241,12 +75,16 @@ ${c.bold}Commands:${c.reset}
241
75
  ${c.bold}Options:${c.reset}
242
76
  --format <type> Output format: html, json, markdown (default: html)
243
77
  --output <file> Output file path
78
+ --locale <lang> Language (en or pt-BR)
79
+ --verbose, -v Enable verbose debug logging
80
+ --watch, -w Watch mode (re-run check on file changes)
81
+ --auto Agent YOLO Mode - auto-approve structural changes
244
82
  --help Show this help message
245
83
 
246
84
  ${c.bold}Examples:${c.reset}
247
- ${c.dim}$${c.reset} architect analyze ./src
85
+ ${c.dim}$${c.reset} architect execute ./src
86
+ ${c.dim}$${c.reset} architect execute ./src --auto
248
87
  ${c.dim}$${c.reset} architect analyze ./src --format html --output report.html
249
- ${c.dim}$${c.reset} architect score ./src --format json
250
88
 
251
89
  ${c.dim}@girardelli/architect — Girardelli Tecnologia${c.reset}
252
90
  `);
@@ -258,8 +96,16 @@ async function main() {
258
96
  process.exit(0);
259
97
  }
260
98
  const options = parseArgs(args);
99
+ logger.setup({ verbose: options.verbose, json: options.format === 'json' });
100
+ // Set global locale
101
+ i18n.setLocale(options.locale);
261
102
  try {
262
103
  switch (options.command) {
104
+ case 'genesis': {
105
+ const terminal = new GenesisTerminal(architect);
106
+ await terminal.start();
107
+ break;
108
+ }
263
109
  case 'analyze': {
264
110
  const progress = new ProgressReporter();
265
111
  progress.printHeader(options.path);
@@ -272,7 +118,7 @@ async function main() {
272
118
  progress.printExtraPhase('AGENT SYSTEM', 'Analyzing agent requirements', c.magenta);
273
119
  const agentSuggestion = architect.suggestAgents(report, plan, options.path);
274
120
  progress.printExtraComplete(`${c.white}${agentSuggestion.suggestedAgents.length}${c.reset}${c.dim} agents suggested${agentSuggestion.hasExistingAgents ? ' (existing .agent/ audited)' : ''}${c.reset}`);
275
- const projectName = report.projectInfo.name || basename(options.path);
121
+ const projectName = String(report.projectInfo.name || basename(options.path)).replace(/[^a-zA-Z0-9-]/g, '-');
276
122
  // Report generation
277
123
  if (options.format === 'html') {
278
124
  progress.printExtraPhase('REPORT BUILDER', 'Generating interactive HTML report', c.cyan);
@@ -313,7 +159,7 @@ async function main() {
313
159
  const report = await architect.analyze(options.path, (e) => progress.onProgress(e));
314
160
  progress.printExtraPhase('REFACTOR ENGINE', 'Building refactoring plan', c.orange);
315
161
  const plan = architect.refactor(report, options.path);
316
- const projectName = report.projectInfo.name || basename(options.path);
162
+ const projectName = String(report.projectInfo.name || basename(options.path)).replace(/[^a-zA-Z0-9-]/g, '-');
317
163
  if (options.format === 'json') {
318
164
  const outputPath = options.output || `refactor-plan-${projectName}.json`;
319
165
  writeFileSync(outputPath, JSON.stringify(plan, null, 2));
@@ -331,6 +177,128 @@ async function main() {
331
177
  process.stderr.write(` ${c.dim}Score:${c.reset} ${c.white}${plan.currentScore.overall}${c.reset}${c.dim} → ${c.reset}${c.green}${plan.estimatedScoreAfter.overall}${c.reset} ${c.dim}(+${plan.estimatedScoreAfter.overall - plan.currentScore.overall})${c.reset}\n\n`);
332
178
  break;
333
179
  }
180
+ case 'check': {
181
+ const rulesPath = join(options.path, '.architect.rules.yml');
182
+ const executeCheck = async () => {
183
+ if (!existsSync(rulesPath)) {
184
+ logger.error(`Rules file not found at: ${rulesPath}`);
185
+ logger.error(`Create a '.architect.rules.yml' file to use the 'check' command.`);
186
+ return false;
187
+ }
188
+ let rules;
189
+ try {
190
+ const raw = readFileSync(rulesPath, 'utf8');
191
+ rules = yaml.parse(raw);
192
+ }
193
+ catch (e) {
194
+ logger.error(`Failed to parse ${rulesPath}: ${e.message}`);
195
+ return false;
196
+ }
197
+ process.stderr.write(`\n ${c.cyan}◉${c.reset} ${c.bold}RULES ENGINE${c.reset} ${c.dim}— Validating against .architect.rules.yml...${c.reset}\n`);
198
+ const report = await architect.analyze(options.path);
199
+ const engine = new RulesEngine();
200
+ const result = engine.validate(report, rules);
201
+ if (result.violations.length === 0) {
202
+ process.stderr.write(`\n ${c.green}✓ All quality gates and boundaries passed!${c.reset} ${c.dim}(Score: ${report.score.overall}/100)${c.reset}\n\n`);
203
+ return true;
204
+ }
205
+ process.stderr.write(`\n ${c.red}✗ Architecture validation failed!${c.reset} ${c.dim}(Score: ${report.score.overall}/100)${c.reset}\n\n`);
206
+ let errors = 0;
207
+ let warnings = 0;
208
+ for (const v of result.violations) {
209
+ if (v.level === 'error') {
210
+ errors++;
211
+ process.stderr.write(` ${c.red}[ERROR]${c.reset} ${c.bold}${v.rule}${c.reset}: ${v.message}\n`);
212
+ }
213
+ else {
214
+ warnings++;
215
+ process.stderr.write(` ${c.yellow}[WARN]${c.reset} ${c.bold}${v.rule}${c.reset}: ${v.message}\n`);
216
+ }
217
+ }
218
+ process.stderr.write(`\n ${c.dim}Total: ${errors} errors, ${warnings} warnings.${c.reset}\n\n`);
219
+ return result.success;
220
+ };
221
+ if (options.watch) {
222
+ process.stderr.write(`\n ${c.dim}👀 Watch mode enabled. Listening for changes in ${options.path}...${c.reset}\n`);
223
+ await executeCheck();
224
+ const watcher = chokidar.watch([
225
+ join(options.path, '**/*.ts'),
226
+ join(options.path, '**/*.js'),
227
+ rulesPath
228
+ ], {
229
+ ignored: /(^|[\/\\])\../, // ignore dotfiles
230
+ persistent: true,
231
+ ignoreInitial: true,
232
+ });
233
+ watcher.on('all', async (_event, path) => {
234
+ console.clear();
235
+ process.stderr.write(` ${c.dim}↻ File changed: ${basename(path)}. Re-running checks...${c.reset}\n`);
236
+ await executeCheck();
237
+ });
238
+ // Keep process alive
239
+ return new Promise(() => { });
240
+ }
241
+ else {
242
+ const success = await executeCheck();
243
+ if (!success)
244
+ process.exit(1);
245
+ }
246
+ break;
247
+ }
248
+ case 'pr-review': {
249
+ const githubToken = process.env.GITHUB_TOKEN;
250
+ if (!githubToken) {
251
+ logger.error('GITHUB_TOKEN environment variable is required for pr-review');
252
+ process.exit(1);
253
+ return;
254
+ }
255
+ if (!github.context.payload.pull_request) {
256
+ logger.error('Not running in a Pull Request context. Exiting.');
257
+ process.exit(0);
258
+ return;
259
+ }
260
+ process.stderr.write(`\n ${c.cyan}◉${c.reset} ${c.bold}PR REVIEWER${c.reset} ${c.dim}— Analyzing HEAD vs BASE...${c.reset}\n`);
261
+ const headReport = await architect.analyze(options.path);
262
+ let baseReport = null;
263
+ try {
264
+ const baseRef = github.context.payload.pull_request.base.ref;
265
+ process.stderr.write(` ${c.dim}↳ Fetching and checking out base branch: ${baseRef}${c.reset}\n`);
266
+ execSync(`git fetch origin ${baseRef} || true`, { stdio: 'ignore', cwd: options.path });
267
+ const currentBranch = execSync(`git rev-parse --abbrev-ref HEAD`, { cwd: options.path }).toString().trim();
268
+ execSync(`git checkout ${baseRef}`, { stdio: 'ignore', cwd: options.path });
269
+ process.stderr.write(` ${c.dim}↳ Analyzing base branch...${c.reset}\n`);
270
+ baseReport = await architect.analyze(options.path);
271
+ process.stderr.write(` ${c.dim}↳ Reverting to original branch: ${currentBranch}${c.reset}\n`);
272
+ execSync(`git checkout ${currentBranch}`, { stdio: 'ignore', cwd: options.path });
273
+ }
274
+ catch (e) {
275
+ logger.error(`Failed to analyze base branch: ${e.message}`);
276
+ process.stderr.write(` ${c.yellow}⚠️ Falling back to single-scan (no delta)${c.reset}\n`);
277
+ // Ensure we try to checkout back just in case
278
+ try {
279
+ execSync(`git checkout -`, { stdio: 'ignore', cwd: options.path });
280
+ }
281
+ catch { }
282
+ }
283
+ let validationResult;
284
+ const rulesPath = join(options.path, '.architect.rules.yml');
285
+ if (existsSync(rulesPath)) {
286
+ process.stderr.write(` ${c.dim}↳ Validating Architecture Rules...${c.reset}\n`);
287
+ const raw = readFileSync(rulesPath, 'utf8');
288
+ const rules = yaml.parse(raw);
289
+ const engine = new RulesEngine();
290
+ validationResult = engine.validate(headReport, rules);
291
+ }
292
+ process.stderr.write(` ${c.dim}↳ Posting comment to GitHub PR #${github.context.payload.pull_request.number}...${c.reset}\n`);
293
+ const adapter = new GithubActionAdapter(githubToken);
294
+ await adapter.postComment(headReport, baseReport, validationResult);
295
+ process.stderr.write(`\n ${c.green}✓ PR Comment successfully posted!${c.reset}\n\n`);
296
+ if (validationResult && !validationResult.success) {
297
+ process.stderr.write(` ${c.red}✗ Architecture rules validation failed (Action blocked).${c.reset}\n\n`);
298
+ process.exit(1);
299
+ }
300
+ break;
301
+ }
334
302
  case 'agents': {
335
303
  const progress = new ProgressReporter();
336
304
  progress.printHeader(options.path);
@@ -350,9 +318,9 @@ async function main() {
350
318
  }
351
319
  }
352
320
  if (result.audit.length > 0) {
353
- const missing = result.audit.filter(f => f.type === 'MISSING');
354
- const improvements = result.audit.filter(f => f.type === 'IMPROVEMENT');
355
- const ok = result.audit.filter(f => f.type === 'OK');
321
+ const missing = result.audit.filter((f) => f.type === 'MISSING');
322
+ const improvements = result.audit.filter((f) => f.type === 'IMPROVEMENT');
323
+ const ok = result.audit.filter((f) => f.type === 'OK');
356
324
  if (ok.length > 0)
357
325
  process.stderr.write(`\n ${c.green}✓ ${ok.length} checks passed${c.reset}\n`);
358
326
  if (missing.length > 0) {
@@ -372,6 +340,17 @@ async function main() {
372
340
  process.stderr.write(`\n ${c.dim}Score: ${report.score.overall}/100${c.reset}\n\n`);
373
341
  break;
374
342
  }
343
+ case 'execute': {
344
+ const progress = new ProgressReporter();
345
+ progress.printHeader(options.path);
346
+ const report = await architect.analyze(options.path, (e) => progress.onProgress(e));
347
+ progress.printExtraPhase('REFACTOR ENGINE', 'Building automated refactoring plan', c.orange);
348
+ const plan = architect.refactor(report, options.path);
349
+ progress.printExtraComplete(`${c.white}${plan.steps.length}${c.reset}${c.dim} steps generated${c.reset}`);
350
+ const executor = new AgentExecutor(options.auto);
351
+ await executor.executePlan(plan);
352
+ break;
353
+ }
375
354
  case 'diagram': {
376
355
  const diagram = await architect.diagram(options.path);
377
356
  if (options.output) {
@@ -429,13 +408,12 @@ async function main() {
429
408
  break;
430
409
  }
431
410
  default:
432
- console.error(`${c.red}✗${c.reset} Unknown command: ${options.command}`);
433
- printUsage();
411
+ logger.error(`Unknown command: ${options.command}`);
434
412
  process.exit(1);
435
413
  }
436
414
  }
437
- catch (error) {
438
- process.stderr.write(`\n ${c.red}${c.bold}✗ ERROR${c.reset}: ${error instanceof Error ? error.message : error}\n\n`);
415
+ catch (err) {
416
+ logger.error('Fatal execution error', err);
439
417
  process.exit(1);
440
418
  }
441
419
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/adapters/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { AnalysisReport } from '@girardelli/architect-core/src/core/types/core.js';
2
+ import { ValidationResult } from '@girardelli/architect-core/src/core/types/architect-rules.js';
3
+ export declare class GithubActionAdapter {
4
+ private octokit;
5
+ private context;
6
+ constructor(token: string);
7
+ postComment(headReport: AnalysisReport, baseReport?: AnalysisReport | null, validationResult?: ValidationResult): Promise<void>;
8
+ private buildMarkdownBody;
9
+ }