@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,695 +0,0 @@
1
- /**
2
- * Stack-specific rule generators.
3
- * Each generates a 03-[framework].md rule file tailored to the detected stack.
4
- */
5
- export function generateStackRules(ctx) {
6
- const { stack } = ctx;
7
- if (stack.frameworks.includes('NestJS'))
8
- return generateNestJSRules(ctx);
9
- if (stack.frameworks.includes('Angular'))
10
- return generateAngularRules(ctx);
11
- if (stack.frameworks.includes('Next.js'))
12
- return generateNextJSRules(ctx);
13
- if (stack.frameworks.includes('Django') || stack.frameworks.includes('FastAPI'))
14
- return generatePythonWebRules(ctx);
15
- if (stack.frameworks.includes('Flutter'))
16
- return generateFlutterRules(ctx);
17
- if (stack.frameworks.includes('Spring'))
18
- return generateSpringRules(ctx);
19
- if (stack.frameworks.includes('Express') || stack.frameworks.includes('Fastify'))
20
- return generateNodeAPIRules(ctx);
21
- return null; // No framework-specific rules needed
22
- }
23
- export function getStackRuleFileName(ctx) {
24
- const { stack } = ctx;
25
- if (stack.frameworks.includes('NestJS'))
26
- return '03-nestjs';
27
- if (stack.frameworks.includes('Angular'))
28
- return '03-angular';
29
- if (stack.frameworks.includes('Next.js'))
30
- return '03-nextjs';
31
- if (stack.frameworks.includes('Django'))
32
- return '03-django';
33
- if (stack.frameworks.includes('FastAPI'))
34
- return '03-fastapi';
35
- if (stack.frameworks.includes('Flutter'))
36
- return '03-flutter';
37
- if (stack.frameworks.includes('Spring'))
38
- return '03-spring';
39
- if (stack.frameworks.includes('Express'))
40
- return '03-express';
41
- if (stack.frameworks.includes('Fastify'))
42
- return '03-fastify';
43
- return null;
44
- }
45
- // ────────────────────────────────────────────────────
46
- // NestJS
47
- // ────────────────────────────────────────────────────
48
- function generateNestJSRules(ctx) {
49
- const { projectName, config } = ctx;
50
- return `---
51
- antigravity:
52
- trigger: 'always_on'
53
- globs: ['**/*.ts']
54
- description: 'Regras NestJS para ${projectName}'
55
- priority: HIGH
56
- ---
57
-
58
- # ⚙️ Regras NestJS — ${projectName}
59
-
60
- > **Padrões obrigatórios para desenvolvimento NestJS.**
61
-
62
- ---
63
-
64
- ## 📦 Estrutura de Módulo
65
-
66
- \`\`\`
67
- Cada feature = 1 módulo NestJS
68
-
69
- src/modules/[feature]/
70
- ├── [feature].module.ts → @Module({ imports, providers, exports })
71
- ├── [feature].controller.ts → @Controller() — HTTP endpoints
72
- ├── [feature].controller.spec.ts → Testes do controller
73
- ├── [feature].service.ts → @Injectable() — Lógica de negócio
74
- ├── [feature].service.spec.ts → Testes do service
75
- ├── dto/
76
- │ ├── create-[feature].dto.ts → class-validator + class-transformer
77
- │ ├── update-[feature].dto.ts → Partial<CreateDto>
78
- │ └── [feature]-response.dto.ts → Response shape (NUNCA entity direta)
79
- ├── entities/
80
- │ └── [feature].entity.ts → @Entity() TypeORM / Prisma model
81
- ├── guards/ → Guards específicos
82
- ├── pipes/ → Pipes customizados
83
- └── interfaces/ → Interfaces do módulo
84
- \`\`\`
85
-
86
- ---
87
-
88
- ## 🎯 Decorators — Uso Correto
89
-
90
- \`\`\`
91
- @Controller() → Routing APENAS. Sem lógica de negócio.
92
- @Injectable() → Services, Repositories. Injetáveis.
93
- @Module() → Agrupa components. Declara imports/exports.
94
- @Entity() → Modelo de banco. NUNCA expor na API.
95
-
96
- Guards:
97
- @UseGuards(AuthGuard) → Autenticação
98
- @UseGuards(RolesGuard) → Autorização
99
- @Roles('admin', 'user') → Roles necessárias
100
-
101
- Pipes:
102
- @UsePipes(ValidationPipe) → Validação de DTO
103
- { whitelist: true, forbidNonWhitelisted: true, transform: true }
104
-
105
- Interceptors:
106
- @UseInterceptors(LoggingInterceptor) → Logging
107
- @UseInterceptors(TransformInterceptor) → Response shape
108
- \`\`\`
109
-
110
- ---
111
-
112
- ## 🚫 Anti-Patterns NestJS
113
-
114
- \`\`\`
115
- ❌ PROIBIDO: Lógica de negócio no controller
116
- → Mover para service
117
-
118
- ❌ PROIBIDO: Entity como response de API
119
- → Criar DTO de response
120
-
121
- ❌ PROIBIDO: @Body() sem DTO validado
122
- → Criar DTO com class-validator
123
-
124
- ❌ PROIBIDO: Service importando Request/Response
125
- → Service recebe dados puros, controller adapta
126
-
127
- ❌ PROIBIDO: Circular module imports
128
- → Usar forwardRef() ou extrair shared module
129
-
130
- ❌ PROIBIDO: Repository no controller
131
- → Controller → Service → Repository
132
-
133
- ❌ PROIBIDO: try/catch genérico no controller
134
- → Usar exception filters
135
-
136
- ❌ PROIBIDO: console.log
137
- → Usar @nestjs/common Logger ou winston
138
- \`\`\`
139
-
140
- ---
141
-
142
- ## ✅ Patterns NestJS Obrigatórios
143
-
144
- \`\`\`
145
- ✅ Global validation pipe no bootstrap
146
- ✅ Global exception filter (HttpExceptionFilter)
147
- ✅ DTOs com class-validator para TODOS os endpoints
148
- ✅ Config via @nestjs/config + .env
149
- ✅ Database via TypeORM/Prisma com migrations
150
- ✅ Auth via Passport + JWT strategy
151
- ✅ Swagger via @nestjs/swagger + ApiProperty()
152
- ✅ Health check endpoint (/health)
153
- ✅ Cobertura ≥ ${config.coverageMinimum}%
154
- \`\`\`
155
-
156
- ---
157
-
158
- ## 📋 Checklist por Endpoint
159
-
160
- \`\`\`
161
- □ DTO de request com validação
162
- □ DTO de response (não entity)
163
- □ Guard de auth aplicado
164
- □ Swagger decorators (@ApiTags, @ApiOperation, @ApiResponse)
165
- □ Error handling (HttpException com status correto)
166
- □ Teste unitário do service method
167
- □ Teste de integração do endpoint
168
- □ Logging estruturado
169
- \`\`\`
170
-
171
- ---
172
-
173
- **Gerado por Architect v3.1**
174
- `;
175
- }
176
- // ────────────────────────────────────────────────────
177
- // Angular
178
- // ────────────────────────────────────────────────────
179
- function generateAngularRules(ctx) {
180
- const { projectName, config } = ctx;
181
- return `---
182
- antigravity:
183
- trigger: 'always_on'
184
- globs: ['**/*.ts', '**/*.html', '**/*.scss']
185
- description: 'Regras Angular para ${projectName}'
186
- priority: HIGH
187
- ---
188
-
189
- # 🅰️ Regras Angular — ${projectName}
190
-
191
- > **Padrões obrigatórios para desenvolvimento Angular.**
192
-
193
- ---
194
-
195
- ## 📦 Estrutura de Module
196
-
197
- \`\`\`
198
- src/app/modules/[feature]/
199
- ├── [feature].module.ts
200
- ├── [feature]-routing.module.ts
201
- ├── components/
202
- │ ├── [feature]-list/
203
- │ │ ├── [feature]-list.component.ts
204
- │ │ ├── [feature]-list.component.html
205
- │ │ ├── [feature]-list.component.scss
206
- │ │ └── [feature]-list.component.spec.ts
207
- │ └── [feature]-form/
208
- │ └── ...
209
- ├── services/
210
- │ ├── [feature].service.ts
211
- │ └── [feature].service.spec.ts
212
- ├── models/
213
- │ └── [feature].model.ts
214
- ├── guards/
215
- └── pipes/
216
- \`\`\`
217
-
218
- ---
219
-
220
- ## 🎯 Component Rules
221
-
222
- \`\`\`
223
- □ Smart vs Dumb components (Container vs Presentational)
224
- □ OnPush change detection por padrão
225
- □ Unsubscribe de Observables (takeUntilDestroyed ou async pipe)
226
- □ TODOS os estados: loading, error, empty, data
227
- □ Lazy loading para feature modules
228
- □ trackBy em *ngFor
229
- □ Sem lógica de negócio no template
230
- □ Sem lógica de negócio no component — usar services
231
- \`\`\`
232
-
233
- ---
234
-
235
- ## 🚫 Anti-Patterns Angular
236
-
237
- \`\`\`
238
- ❌ Component com > 200 linhas de lógica → Extrair para service
239
- ❌ Subscribe manual sem unsubscribe → Memory leak
240
- ❌ Chamadas HTTP no component → Usar service
241
- ❌ any em templates → Tipar corretamente
242
- ❌ Shared module gigante → Dividir por domínio
243
- \`\`\`
244
-
245
- ---
246
-
247
- ## ✅ Checklist por Component
248
-
249
- \`\`\`
250
- □ OnPush change detection
251
- □ Loading/error/empty states
252
- □ Responsive (mobile + desktop)
253
- □ Acessibilidade (labels, aria)
254
- □ Lazy loaded (se feature module)
255
- □ Teste unitário
256
- □ Cobertura ≥ ${config.coverageMinimum}%
257
- \`\`\`
258
-
259
- ---
260
-
261
- **Gerado por Architect v3.1**
262
- `;
263
- }
264
- // ────────────────────────────────────────────────────
265
- // Next.js
266
- // ────────────────────────────────────────────────────
267
- function generateNextJSRules(ctx) {
268
- const { projectName, config } = ctx;
269
- return `---
270
- antigravity:
271
- trigger: 'always_on'
272
- globs: ['**/*.{ts,tsx,js,jsx}']
273
- description: 'Regras Next.js para ${projectName}'
274
- priority: HIGH
275
- ---
276
-
277
- # ▲ Regras Next.js — ${projectName}
278
-
279
- > **Padrões obrigatórios para desenvolvimento Next.js.**
280
-
281
- ---
282
-
283
- ## 📦 Estrutura
284
-
285
- \`\`\`
286
- src/
287
- ├── app/ → App Router (pages, layouts, loading, error)
288
- │ ├── layout.tsx → Root layout
289
- │ ├── page.tsx → Home
290
- │ ├── [feature]/
291
- │ │ ├── page.tsx → Feature page (Server Component por padrão)
292
- │ │ ├── loading.tsx → Loading UI
293
- │ │ ├── error.tsx → Error boundary
294
- │ │ └── layout.tsx → Feature layout
295
- ├── components/ → Shared components
296
- │ ├── ui/ → Design system atoms
297
- │ └── [feature]/ → Feature-specific components
298
- ├── lib/ → Utilities, API clients
299
- ├── services/ → Business logic, data fetching
300
- ├── types/ → TypeScript types
301
- └── hooks/ → Custom React hooks
302
- \`\`\`
303
-
304
- ---
305
-
306
- ## 🎯 Server vs Client Components
307
-
308
- \`\`\`
309
- Server Components (padrão):
310
- ✅ Data fetching
311
- ✅ Acesso a backend resources
312
- ✅ Sensitive data (tokens, keys)
313
- ✅ Large dependencies server-side
314
-
315
- Client Components ('use client'):
316
- ✅ Interatividade (onClick, onChange)
317
- ✅ Hooks (useState, useEffect)
318
- ✅ Browser APIs
319
- ✅ Event listeners
320
-
321
- REGRA: Manter Client Components o menor possível.
322
- Push 'use client' para baixo na árvore.
323
- \`\`\`
324
-
325
- ---
326
-
327
- ## 🚫 Anti-Patterns Next.js
328
-
329
- \`\`\`
330
- ❌ 'use client' no layout.tsx → Quebra streaming SSR
331
- ❌ fetch sem cache strategy → Definir revalidate
332
- ❌ useEffect para data fetching → Server Component
333
- ❌ API route sem validação → Zod schema
334
- ❌ Client component gigante → Extrair server parts
335
- \`\`\`
336
-
337
- ---
338
-
339
- ## ✅ Checklist por Page
340
-
341
- \`\`\`
342
- □ loading.tsx para Suspense boundary
343
- □ error.tsx para error boundary
344
- □ Metadata (generateMetadata) para SEO
345
- □ Server Component por padrão
346
- □ Validação de params/searchParams
347
- □ Cobertura ≥ ${config.coverageMinimum}%
348
- \`\`\`
349
-
350
- ---
351
-
352
- **Gerado por Architect v3.1**
353
- `;
354
- }
355
- // ────────────────────────────────────────────────────
356
- // Python Web (Django / FastAPI)
357
- // ────────────────────────────────────────────────────
358
- function generatePythonWebRules(ctx) {
359
- const { projectName, stack, config } = ctx;
360
- const fw = stack.frameworks.includes('Django') ? 'Django' : 'FastAPI';
361
- return `---
362
- antigravity:
363
- trigger: 'always_on'
364
- globs: ['**/*.py']
365
- description: 'Regras ${fw} para ${projectName}'
366
- priority: HIGH
367
- ---
368
-
369
- # 🐍 Regras ${fw} — ${projectName}
370
-
371
- > **Padrões obrigatórios para desenvolvimento ${fw}.**
372
-
373
- ---
374
-
375
- ## 📦 Estrutura
376
-
377
- ${fw === 'Django' ? `\`\`\`
378
- apps/[feature]/
379
- ├── __init__.py
380
- ├── admin.py → Admin customizado
381
- ├── apps.py → App config
382
- ├── models.py → Models (ORM)
383
- ├── managers.py → Custom QuerySet/Manager
384
- ├── serializers.py → DRF Serializers
385
- ├── views.py → ViewSets / APIViews
386
- ├── urls.py → URL patterns
387
- ├── permissions.py → Custom permissions
388
- ├── filters.py → django-filter sets
389
- ├── signals.py → Signal handlers
390
- ├── services.py → Business logic (NÃO no view)
391
- ├── tasks.py → Celery tasks
392
- ├── tests/
393
- │ ├── test_models.py
394
- │ ├── test_views.py
395
- │ └── test_services.py
396
- └── migrations/
397
- \`\`\`` : `\`\`\`
398
- app/
399
- ├── main.py → FastAPI app, middleware
400
- ├── core/
401
- │ ├── config.py → Pydantic Settings
402
- │ ├── security.py → JWT, hashing
403
- │ └── deps.py → Dependency injection
404
- ├── modules/[feature]/
405
- │ ├── __init__.py
406
- │ ├── router.py → APIRouter endpoints
407
- │ ├── schemas.py → Pydantic models (request/response)
408
- │ ├── models.py → SQLAlchemy models
409
- │ ├── service.py → Business logic
410
- │ ├── repository.py → Data access
411
- │ └── tests/
412
- │ ├── test_router.py
413
- │ └── test_service.py
414
- └── alembic/ → Migrations
415
- \`\`\``}
416
-
417
- ---
418
-
419
- ## 🚫 Anti-Patterns ${fw}
420
-
421
- \`\`\`
422
- ${fw === 'Django' ? `❌ Fat views (lógica de negócio no view) → Usar services.py
423
- ❌ N+1 queries → select_related / prefetch_related
424
- ❌ Raw SQL sem necessidade → QuerySet API
425
- ❌ Model sem __str__ → Sempre implementar
426
- ❌ Migrations manuais → Sempre via makemigrations
427
- ❌ Signal abuse → Preferir chamada explícita em service` : `❌ Lógica no router (endpoint) → Usar service layer
428
- ❌ SQLAlchemy session no router → Dependency injection
429
- ❌ Schemas sem validação → Pydantic validators
430
- ❌ sync blocking em async → Usar run_in_executor
431
- ❌ Sem type hints → FastAPI depende de tipos`}
432
- \`\`\`
433
-
434
- ---
435
-
436
- ## ✅ Checklist
437
-
438
- \`\`\`
439
- □ Lógica de negócio em services (não views/routers)
440
- □ Schemas/Serializers para TODOS os endpoints
441
- □ Migrations reversíveis
442
- □ Testes para models, services, views
443
- □ Type hints em todo código
444
- □ Cobertura ≥ ${config.coverageMinimum}%
445
- \`\`\`
446
-
447
- ---
448
-
449
- **Gerado por Architect v3.1**
450
- `;
451
- }
452
- // ────────────────────────────────────────────────────
453
- // Flutter
454
- // ────────────────────────────────────────────────────
455
- function generateFlutterRules(ctx) {
456
- const { projectName, config } = ctx;
457
- return `---
458
- antigravity:
459
- trigger: 'always_on'
460
- globs: ['**/*.dart']
461
- description: 'Regras Flutter para ${projectName}'
462
- priority: HIGH
463
- ---
464
-
465
- # 📱 Regras Flutter — ${projectName}
466
-
467
- > **Padrões obrigatórios para desenvolvimento Flutter.**
468
-
469
- ---
470
-
471
- ## 📦 Estrutura
472
-
473
- \`\`\`
474
- lib/
475
- ├── main.dart → Entry point
476
- ├── app.dart → MaterialApp / Router
477
- ├── core/
478
- │ ├── di/ → Dependency injection (get_it/riverpod)
479
- │ ├── theme/ → AppTheme, colors, typography
480
- │ ├── network/ → Dio/HTTP client config
481
- │ ├── storage/ → SharedPreferences, secure storage
482
- │ └── utils/ → Extensions, formatters
483
- ├── features/[feature]/
484
- │ ├── data/
485
- │ │ ├── models/ → JSON models (fromJson/toJson)
486
- │ │ ├── repositories/ → Repository implementation
487
- │ │ └── datasources/ → API calls, local DB
488
- │ ├── domain/
489
- │ │ ├── entities/ → Business entities
490
- │ │ ├── repositories/ → Repository interfaces (abstract)
491
- │ │ └── usecases/ → Business logic units
492
- │ └── presentation/
493
- │ ├── pages/ → Screen widgets
494
- │ ├── widgets/ → Feature-specific widgets
495
- │ ├── bloc/ (ou cubit/) → State management
496
- │ └── providers/ → Riverpod providers (se usado)
497
- └── shared/
498
- ├── widgets/ → Reusable widgets
499
- └── models/ → Shared models
500
- \`\`\`
501
-
502
- ---
503
-
504
- ## 🎯 State Management
505
-
506
- \`\`\`
507
- Padrão: BLoC/Cubit ou Riverpod (escolher UM)
508
-
509
- BLoC:
510
- Event → BLoC → State → UI
511
- □ Events são imutáveis
512
- □ States são imutáveis
513
- □ BLoC não importa Flutter (puro Dart)
514
- □ Um BLoC por feature (não God BLoC)
515
-
516
- NUNCA:
517
- ❌ setState para lógica complexa
518
- ❌ State management misturado (BLoC + Provider + setState)
519
- ❌ BLoC acessando BuildContext
520
- \`\`\`
521
-
522
- ---
523
-
524
- ## 🚫 Anti-Patterns Flutter
525
-
526
- \`\`\`
527
- ❌ Column com muitos children para listas → ListView.builder
528
- ❌ Widget gigante (> 200 linhas) → Extrair sub-widgets
529
- ❌ Build method com lógica → Mover para BLoC/Cubit
530
- ❌ Sem const constructors → Sempre usar const
531
- ❌ FutureBuilder direto para API calls → BLoC/Cubit
532
- ❌ Hardcoded strings → Usar l10n/intl
533
- ❌ Hardcoded colors → Usar Theme.of(context)
534
- \`\`\`
535
-
536
- ---
537
-
538
- ## ✅ Checklist por Screen
539
-
540
- \`\`\`
541
- □ TODOS os estados: loading, error, empty, data
542
- □ Pull-to-refresh (se lista)
543
- □ Skeleton/shimmer para loading
544
- □ Error retry button
545
- □ Responsive (tablet support se necessário)
546
- □ Keyboard handling (dismiss, next field)
547
- □ Teste de widget
548
- □ Cobertura ≥ ${config.coverageMinimum}%
549
- \`\`\`
550
-
551
- ---
552
-
553
- **Gerado por Architect v3.1**
554
- `;
555
- }
556
- // ────────────────────────────────────────────────────
557
- // Spring Boot
558
- // ────────────────────────────────────────────────────
559
- function generateSpringRules(ctx) {
560
- const { projectName, config } = ctx;
561
- return `---
562
- antigravity:
563
- trigger: 'always_on'
564
- globs: ['**/*.java', '**/*.kt']
565
- description: 'Regras Spring Boot para ${projectName}'
566
- priority: HIGH
567
- ---
568
-
569
- # 🍃 Regras Spring Boot — ${projectName}
570
-
571
- > **Padrões obrigatórios para desenvolvimento Spring Boot.**
572
-
573
- ---
574
-
575
- ## 📦 Estrutura
576
-
577
- \`\`\`
578
- src/main/java/com/[org]/[project]/
579
- ├── [Feature]Module/
580
- │ ├── controller/
581
- │ │ └── [Feature]Controller.java → @RestController
582
- │ ├── service/
583
- │ │ ├── [Feature]Service.java → Interface
584
- │ │ └── [Feature]ServiceImpl.java → @Service
585
- │ ├── repository/
586
- │ │ └── [Feature]Repository.java → @Repository / JPA
587
- │ ├── dto/
588
- │ │ ├── Create[Feature]Request.java → @Valid annotations
589
- │ │ └── [Feature]Response.java
590
- │ ├── entity/
591
- │ │ └── [Feature].java → @Entity JPA
592
- │ └── exception/
593
- │ └── [Feature]NotFoundException.java
594
- \`\`\`
595
-
596
- ---
597
-
598
- ## 🚫 Anti-Patterns Spring
599
-
600
- \`\`\`
601
- ❌ @Autowired field injection → Constructor injection
602
- ❌ Lógica no controller → Service layer
603
- ❌ Entity como response → DTO mapping
604
- ❌ catch(Exception e) genérico → Specific exceptions + @ControllerAdvice
605
- ❌ @Transactional no controller → Service layer
606
- \`\`\`
607
-
608
- ---
609
-
610
- ## ✅ Checklist
611
-
612
- \`\`\`
613
- □ Constructor injection (não field)
614
- □ DTOs com @Valid
615
- □ @ControllerAdvice para exception handling
616
- □ @Transactional no service
617
- □ Cobertura ≥ ${config.coverageMinimum}%
618
- \`\`\`
619
-
620
- ---
621
-
622
- **Gerado por Architect v3.1**
623
- `;
624
- }
625
- // ────────────────────────────────────────────────────
626
- // Express / Fastify (Node.js API)
627
- // ────────────────────────────────────────────────────
628
- function generateNodeAPIRules(ctx) {
629
- const { projectName, stack, config } = ctx;
630
- const fw = stack.frameworks.includes('Fastify') ? 'Fastify' : 'Express';
631
- return `---
632
- antigravity:
633
- trigger: 'always_on'
634
- globs: ['**/*.{ts,js}']
635
- description: 'Regras ${fw} para ${projectName}'
636
- priority: HIGH
637
- ---
638
-
639
- # 🚀 Regras ${fw} — ${projectName}
640
-
641
- > **Padrões obrigatórios para desenvolvimento ${fw}.**
642
-
643
- ---
644
-
645
- ## 📦 Estrutura
646
-
647
- \`\`\`
648
- src/
649
- ├── app.${stack.languages.includes('TypeScript') ? 'ts' : 'js'} → ${fw} app setup, middleware
650
- ├── server.${stack.languages.includes('TypeScript') ? 'ts' : 'js'} → Server bootstrap
651
- ├── modules/[feature]/
652
- │ ├── [feature].routes.${stack.languages.includes('TypeScript') ? 'ts' : 'js'} → Route definitions
653
- │ ├── [feature].controller.${stack.languages.includes('TypeScript') ? 'ts' : 'js'} → Request handling
654
- │ ├── [feature].service.${stack.languages.includes('TypeScript') ? 'ts' : 'js'} → Business logic
655
- │ ├── [feature].schema.${stack.languages.includes('TypeScript') ? 'ts' : 'js'} → Validation (Joi/Zod)
656
- │ ├── [feature].model.${stack.languages.includes('TypeScript') ? 'ts' : 'js'} → DB model
657
- │ └── __tests__/
658
- ├── middleware/ → Auth, logging, error handler
659
- ├── config/ → Environment config
660
- └── utils/ → Shared utilities
661
- \`\`\`
662
-
663
- ---
664
-
665
- ## 🚫 Anti-Patterns ${fw}
666
-
667
- \`\`\`
668
- ❌ Lógica de negócio no route handler → Usar service layer
669
- ❌ req.body sem validação → Joi/Zod schema
670
- ❌ Callback hell → async/await
671
- ❌ Error swallowing (catch vazio) → Proper error handler middleware
672
- ❌ Secrets hardcoded → Environment variables
673
- ❌ console.log em produção → Structured logger (winston/pino)
674
- \`\`\`
675
-
676
- ---
677
-
678
- ## ✅ Checklist
679
-
680
- \`\`\`
681
- □ Validation middleware em TODOS os endpoints
682
- □ Error handling middleware global
683
- □ Auth middleware para rotas protegidas
684
- □ Rate limiting
685
- □ CORS configurado
686
- □ Helmet para security headers
687
- □ Cobertura ≥ ${config.coverageMinimum}%
688
- \`\`\`
689
-
690
- ---
691
-
692
- **Gerado por Architect v3.1**
693
- `;
694
- }
695
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/agent-generator/templates/stack/index.ts"],"names":[],"mappings":"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"}