@girardelli/architect 2.2.0 → 5.0.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 (212) hide show
  1. package/README.md +105 -116
  2. package/architect-run.sh +431 -0
  3. package/assets/banner-v3.html +561 -0
  4. package/dist/agent-generator/context-enricher.d.ts +58 -0
  5. package/dist/agent-generator/context-enricher.d.ts.map +1 -0
  6. package/dist/agent-generator/context-enricher.js +613 -0
  7. package/dist/agent-generator/context-enricher.js.map +1 -0
  8. package/dist/agent-generator/domain-inferrer.d.ts +52 -0
  9. package/dist/agent-generator/domain-inferrer.d.ts.map +1 -0
  10. package/dist/agent-generator/domain-inferrer.js +585 -0
  11. package/dist/agent-generator/domain-inferrer.js.map +1 -0
  12. package/dist/agent-generator/framework-detector.d.ts +40 -0
  13. package/dist/agent-generator/framework-detector.d.ts.map +1 -0
  14. package/dist/agent-generator/framework-detector.js +611 -0
  15. package/dist/agent-generator/framework-detector.js.map +1 -0
  16. package/dist/agent-generator/index.d.ts +47 -0
  17. package/dist/agent-generator/index.d.ts.map +1 -0
  18. package/dist/agent-generator/index.js +545 -0
  19. package/dist/agent-generator/index.js.map +1 -0
  20. package/dist/agent-generator/stack-detector.d.ts +14 -0
  21. package/dist/agent-generator/stack-detector.d.ts.map +1 -0
  22. package/dist/agent-generator/stack-detector.js +124 -0
  23. package/dist/agent-generator/stack-detector.js.map +1 -0
  24. package/dist/agent-generator/templates/core/agents.d.ts +17 -0
  25. package/dist/agent-generator/templates/core/agents.d.ts.map +1 -0
  26. package/dist/agent-generator/templates/core/agents.js +1256 -0
  27. package/dist/agent-generator/templates/core/agents.js.map +1 -0
  28. package/dist/agent-generator/templates/core/architecture-rules.d.ts +7 -0
  29. package/dist/agent-generator/templates/core/architecture-rules.d.ts.map +1 -0
  30. package/dist/agent-generator/templates/core/architecture-rules.js +274 -0
  31. package/dist/agent-generator/templates/core/architecture-rules.js.map +1 -0
  32. package/dist/agent-generator/templates/core/general-rules.d.ts +8 -0
  33. package/dist/agent-generator/templates/core/general-rules.d.ts.map +1 -0
  34. package/dist/agent-generator/templates/core/general-rules.js +301 -0
  35. package/dist/agent-generator/templates/core/general-rules.js.map +1 -0
  36. package/dist/agent-generator/templates/core/hooks-generator.d.ts +21 -0
  37. package/dist/agent-generator/templates/core/hooks-generator.d.ts.map +1 -0
  38. package/dist/agent-generator/templates/core/hooks-generator.js +233 -0
  39. package/dist/agent-generator/templates/core/hooks-generator.js.map +1 -0
  40. package/dist/agent-generator/templates/core/index-md.d.ts +7 -0
  41. package/dist/agent-generator/templates/core/index-md.d.ts.map +1 -0
  42. package/dist/agent-generator/templates/core/index-md.js +246 -0
  43. package/dist/agent-generator/templates/core/index-md.js.map +1 -0
  44. package/dist/agent-generator/templates/core/orchestrator.d.ts +8 -0
  45. package/dist/agent-generator/templates/core/orchestrator.d.ts.map +1 -0
  46. package/dist/agent-generator/templates/core/orchestrator.js +422 -0
  47. package/dist/agent-generator/templates/core/orchestrator.js.map +1 -0
  48. package/dist/agent-generator/templates/core/preflight.d.ts +8 -0
  49. package/dist/agent-generator/templates/core/preflight.d.ts.map +1 -0
  50. package/dist/agent-generator/templates/core/preflight.js +213 -0
  51. package/dist/agent-generator/templates/core/preflight.js.map +1 -0
  52. package/dist/agent-generator/templates/core/quality-gates.d.ts +11 -0
  53. package/dist/agent-generator/templates/core/quality-gates.d.ts.map +1 -0
  54. package/dist/agent-generator/templates/core/quality-gates.js +254 -0
  55. package/dist/agent-generator/templates/core/quality-gates.js.map +1 -0
  56. package/dist/agent-generator/templates/core/security-rules.d.ts +7 -0
  57. package/dist/agent-generator/templates/core/security-rules.d.ts.map +1 -0
  58. package/dist/agent-generator/templates/core/security-rules.js +528 -0
  59. package/dist/agent-generator/templates/core/security-rules.js.map +1 -0
  60. package/dist/agent-generator/templates/core/skills-generator.d.ts +19 -0
  61. package/dist/agent-generator/templates/core/skills-generator.d.ts.map +1 -0
  62. package/dist/agent-generator/templates/core/skills-generator.js +546 -0
  63. package/dist/agent-generator/templates/core/skills-generator.js.map +1 -0
  64. package/dist/agent-generator/templates/core/workflow-fix-bug.d.ts +7 -0
  65. package/dist/agent-generator/templates/core/workflow-fix-bug.d.ts.map +1 -0
  66. package/dist/agent-generator/templates/core/workflow-fix-bug.js +237 -0
  67. package/dist/agent-generator/templates/core/workflow-fix-bug.js.map +1 -0
  68. package/dist/agent-generator/templates/core/workflow-new-feature.d.ts +8 -0
  69. package/dist/agent-generator/templates/core/workflow-new-feature.d.ts.map +1 -0
  70. package/dist/agent-generator/templates/core/workflow-new-feature.js +321 -0
  71. package/dist/agent-generator/templates/core/workflow-new-feature.js.map +1 -0
  72. package/dist/agent-generator/templates/core/workflow-review.d.ts +7 -0
  73. package/dist/agent-generator/templates/core/workflow-review.d.ts.map +1 -0
  74. package/dist/agent-generator/templates/core/workflow-review.js +104 -0
  75. package/dist/agent-generator/templates/core/workflow-review.js.map +1 -0
  76. package/dist/agent-generator/templates/domain/index.d.ts +22 -0
  77. package/dist/agent-generator/templates/domain/index.d.ts.map +1 -0
  78. package/dist/agent-generator/templates/domain/index.js +1176 -0
  79. package/dist/agent-generator/templates/domain/index.js.map +1 -0
  80. package/dist/agent-generator/templates/stack/index.d.ts +8 -0
  81. package/dist/agent-generator/templates/stack/index.d.ts.map +1 -0
  82. package/dist/agent-generator/templates/stack/index.js +695 -0
  83. package/dist/agent-generator/templates/stack/index.js.map +1 -0
  84. package/dist/agent-generator/templates/template-helpers.d.ts +75 -0
  85. package/dist/agent-generator/templates/template-helpers.d.ts.map +1 -0
  86. package/dist/agent-generator/templates/template-helpers.js +726 -0
  87. package/dist/agent-generator/templates/template-helpers.js.map +1 -0
  88. package/dist/agent-generator/types.d.ts +196 -0
  89. package/dist/agent-generator/types.d.ts.map +1 -0
  90. package/dist/agent-generator/types.js +27 -0
  91. package/dist/agent-generator/types.js.map +1 -0
  92. package/dist/analyzer.d.ts +5 -0
  93. package/dist/analyzer.d.ts.map +1 -1
  94. package/dist/analyzer.js +46 -5
  95. package/dist/analyzer.js.map +1 -1
  96. package/dist/analyzers/forecast.d.ts +85 -0
  97. package/dist/analyzers/forecast.d.ts.map +1 -0
  98. package/dist/analyzers/forecast.js +337 -0
  99. package/dist/analyzers/forecast.js.map +1 -0
  100. package/dist/analyzers/git-cache.d.ts +7 -0
  101. package/dist/analyzers/git-cache.d.ts.map +1 -0
  102. package/dist/analyzers/git-cache.js +41 -0
  103. package/dist/analyzers/git-cache.js.map +1 -0
  104. package/dist/analyzers/git-history.d.ts +113 -0
  105. package/dist/analyzers/git-history.d.ts.map +1 -0
  106. package/dist/analyzers/git-history.js +333 -0
  107. package/dist/analyzers/git-history.js.map +1 -0
  108. package/dist/analyzers/index.d.ts +10 -0
  109. package/dist/analyzers/index.d.ts.map +1 -0
  110. package/dist/analyzers/index.js +7 -0
  111. package/dist/analyzers/index.js.map +1 -0
  112. package/dist/analyzers/temporal-scorer.d.ts +72 -0
  113. package/dist/analyzers/temporal-scorer.d.ts.map +1 -0
  114. package/dist/analyzers/temporal-scorer.js +140 -0
  115. package/dist/analyzers/temporal-scorer.js.map +1 -0
  116. package/dist/anti-patterns.d.ts +7 -0
  117. package/dist/anti-patterns.d.ts.map +1 -1
  118. package/dist/anti-patterns.js +25 -6
  119. package/dist/anti-patterns.js.map +1 -1
  120. package/dist/cli.d.ts +2 -3
  121. package/dist/cli.d.ts.map +1 -1
  122. package/dist/cli.js +275 -113
  123. package/dist/cli.js.map +1 -1
  124. package/dist/config.d.ts +6 -0
  125. package/dist/config.d.ts.map +1 -1
  126. package/dist/config.js +48 -11
  127. package/dist/config.js.map +1 -1
  128. package/dist/html-reporter.d.ts +3 -1
  129. package/dist/html-reporter.d.ts.map +1 -1
  130. package/dist/html-reporter.js +248 -12
  131. package/dist/html-reporter.js.map +1 -1
  132. package/dist/index.d.ts +16 -3
  133. package/dist/index.d.ts.map +1 -1
  134. package/dist/index.js +63 -4
  135. package/dist/index.js.map +1 -1
  136. package/dist/project-summarizer.d.ts +38 -0
  137. package/dist/project-summarizer.d.ts.map +1 -0
  138. package/dist/project-summarizer.js +463 -0
  139. package/dist/project-summarizer.js.map +1 -0
  140. package/dist/refactor-reporter.js +1 -1
  141. package/dist/scanner.d.ts +8 -2
  142. package/dist/scanner.d.ts.map +1 -1
  143. package/dist/scanner.js +153 -113
  144. package/dist/scanner.js.map +1 -1
  145. package/dist/scorer.d.ts.map +1 -1
  146. package/dist/scorer.js +24 -11
  147. package/dist/scorer.js.map +1 -1
  148. package/dist/types.d.ts +29 -0
  149. package/dist/types.d.ts.map +1 -1
  150. package/package.json +12 -3
  151. package/src/agent-generator/context-enricher.ts +672 -0
  152. package/src/agent-generator/domain-inferrer.ts +635 -0
  153. package/src/agent-generator/framework-detector.ts +669 -0
  154. package/src/agent-generator/index.ts +634 -0
  155. package/src/agent-generator/stack-detector.ts +115 -0
  156. package/src/agent-generator/templates/core/agents.ts +1296 -0
  157. package/src/agent-generator/templates/core/architecture-rules.ts +287 -0
  158. package/src/agent-generator/templates/core/general-rules.ts +306 -0
  159. package/src/agent-generator/templates/core/hooks-generator.ts +242 -0
  160. package/src/agent-generator/templates/core/index-md.ts +260 -0
  161. package/src/agent-generator/templates/core/orchestrator.ts +459 -0
  162. package/src/agent-generator/templates/core/preflight.ts +215 -0
  163. package/src/agent-generator/templates/core/quality-gates.ts +256 -0
  164. package/src/agent-generator/templates/core/security-rules.ts +543 -0
  165. package/src/agent-generator/templates/core/skills-generator.ts +585 -0
  166. package/src/agent-generator/templates/core/workflow-fix-bug.ts +239 -0
  167. package/src/agent-generator/templates/core/workflow-new-feature.ts +323 -0
  168. package/src/agent-generator/templates/core/workflow-review.ts +106 -0
  169. package/src/agent-generator/templates/domain/index.ts +1201 -0
  170. package/src/agent-generator/templates/stack/index.ts +705 -0
  171. package/src/agent-generator/templates/template-helpers.ts +776 -0
  172. package/src/agent-generator/types.ts +232 -0
  173. package/src/analyzer.ts +51 -5
  174. package/src/analyzers/forecast.ts +496 -0
  175. package/src/analyzers/git-cache.ts +52 -0
  176. package/src/analyzers/git-history.ts +488 -0
  177. package/src/analyzers/index.ts +33 -0
  178. package/src/analyzers/temporal-scorer.ts +227 -0
  179. package/src/anti-patterns.ts +29 -6
  180. package/src/cli.ts +316 -117
  181. package/src/config.ts +52 -11
  182. package/src/html-reporter.ts +263 -13
  183. package/src/index.ts +93 -10
  184. package/src/project-summarizer.ts +521 -0
  185. package/src/refactor-reporter.ts +1 -1
  186. package/src/scanner.ts +136 -90
  187. package/src/scorer.ts +26 -11
  188. package/src/types.ts +27 -0
  189. package/tests/agent-generator.test.ts +427 -0
  190. package/tests/analyzers-integration.test.ts +174 -0
  191. package/tests/architect-adapter-enrichment.test.ts +9 -0
  192. package/tests/context-enricher.test.ts +971 -0
  193. package/tests/fixtures/monorepo/package.json +6 -0
  194. package/tests/fixtures/monorepo/packages/app/package.json +12 -0
  195. package/tests/fixtures/monorepo/packages/app/src/index.ts +6 -0
  196. package/tests/fixtures/monorepo/packages/core/package.json +7 -0
  197. package/tests/fixtures/monorepo/packages/core/src/index.ts +7 -0
  198. package/tests/forecast.test.ts +509 -0
  199. package/tests/framework-detector.test.ts +1172 -0
  200. package/tests/git-history.test.ts +254 -0
  201. package/tests/monorepo-scan.test.ts +170 -0
  202. package/tests/scanner.test.ts +7 -8
  203. package/tests/scorer.test.ts +594 -0
  204. package/tests/stack-detector.test.ts +241 -0
  205. package/tests/template-generation.test.ts +706 -0
  206. package/tests/template-helpers.test.ts +1152 -0
  207. package/tests/temporal-scorer.test.ts +307 -0
  208. package/dist/agent-generator.d.ts +0 -106
  209. package/dist/agent-generator.d.ts.map +0 -1
  210. package/dist/agent-generator.js +0 -1398
  211. package/dist/agent-generator.js.map +0 -1
  212. package/src/agent-generator.ts +0 -1526
@@ -0,0 +1,561 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=1200, height=630">
6
+ <title>Architect v3.0 — LinkedIn Banner</title>
7
+ <style>
8
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500;600;700&display=swap');
9
+
10
+ * { margin: 0; padding: 0; box-sizing: border-box; }
11
+
12
+ body {
13
+ width: 1200px;
14
+ height: 630px;
15
+ overflow: hidden;
16
+ font-family: 'Inter', -apple-system, sans-serif;
17
+ background: #0a0a0f;
18
+ color: #e2e8f0;
19
+ position: relative;
20
+ }
21
+
22
+ /* ── Animated grid background ── */
23
+ .grid-bg {
24
+ position: absolute;
25
+ inset: 0;
26
+ background-image:
27
+ linear-gradient(rgba(56, 189, 248, 0.03) 1px, transparent 1px),
28
+ linear-gradient(90deg, rgba(56, 189, 248, 0.03) 1px, transparent 1px);
29
+ background-size: 40px 40px;
30
+ z-index: 0;
31
+ }
32
+
33
+ /* ── Gradient orbs ── */
34
+ .orb {
35
+ position: absolute;
36
+ border-radius: 50%;
37
+ filter: blur(80px);
38
+ z-index: 0;
39
+ }
40
+ .orb-1 {
41
+ width: 400px; height: 400px;
42
+ background: radial-gradient(circle, rgba(6, 182, 212, 0.15), transparent 70%);
43
+ top: -100px; left: -50px;
44
+ }
45
+ .orb-2 {
46
+ width: 350px; height: 350px;
47
+ background: radial-gradient(circle, rgba(139, 92, 246, 0.12), transparent 70%);
48
+ bottom: -80px; right: 200px;
49
+ }
50
+ .orb-3 {
51
+ width: 250px; height: 250px;
52
+ background: radial-gradient(circle, rgba(236, 72, 153, 0.08), transparent 70%);
53
+ top: 100px; right: -50px;
54
+ }
55
+
56
+ /* ── Layout ── */
57
+ .container {
58
+ position: relative;
59
+ z-index: 1;
60
+ display: flex;
61
+ width: 100%;
62
+ height: 100%;
63
+ padding: 48px 56px;
64
+ gap: 48px;
65
+ }
66
+
67
+ /* ── Left column ── */
68
+ .left {
69
+ flex: 1;
70
+ display: flex;
71
+ flex-direction: column;
72
+ justify-content: space-between;
73
+ min-width: 0;
74
+ }
75
+
76
+ .top-badges {
77
+ display: flex;
78
+ align-items: center;
79
+ gap: 10px;
80
+ margin-bottom: 20px;
81
+ }
82
+
83
+ .badge {
84
+ display: inline-flex;
85
+ align-items: center;
86
+ gap: 5px;
87
+ padding: 5px 12px;
88
+ border-radius: 20px;
89
+ font-size: 11px;
90
+ font-weight: 600;
91
+ letter-spacing: 0.8px;
92
+ text-transform: uppercase;
93
+ }
94
+ .badge-os {
95
+ background: rgba(16, 185, 129, 0.15);
96
+ border: 1px solid rgba(16, 185, 129, 0.3);
97
+ color: #34d399;
98
+ }
99
+ .badge-new {
100
+ background: rgba(251, 146, 60, 0.15);
101
+ border: 1px solid rgba(251, 146, 60, 0.3);
102
+ color: #fb923c;
103
+ }
104
+ .badge-ai {
105
+ background: rgba(139, 92, 246, 0.15);
106
+ border: 1px solid rgba(139, 92, 246, 0.3);
107
+ color: #a78bfa;
108
+ }
109
+
110
+ .title-block h1 {
111
+ font-size: 72px;
112
+ font-weight: 900;
113
+ letter-spacing: -3px;
114
+ line-height: 0.95;
115
+ background: linear-gradient(135deg, #e2e8f0 0%, #38bdf8 50%, #818cf8 100%);
116
+ -webkit-background-clip: text;
117
+ -webkit-text-fill-color: transparent;
118
+ background-clip: text;
119
+ margin-bottom: 4px;
120
+ }
121
+
122
+ .version-tag {
123
+ display: inline-flex;
124
+ align-items: center;
125
+ gap: 6px;
126
+ background: linear-gradient(135deg, rgba(56, 189, 248, 0.2), rgba(139, 92, 246, 0.2));
127
+ border: 1px solid rgba(56, 189, 248, 0.3);
128
+ border-radius: 6px;
129
+ padding: 4px 14px;
130
+ font-family: 'JetBrains Mono', monospace;
131
+ font-size: 16px;
132
+ font-weight: 700;
133
+ color: #38bdf8;
134
+ margin-bottom: 16px;
135
+ letter-spacing: 0.5px;
136
+ }
137
+ .version-tag .dot {
138
+ width: 8px; height: 8px;
139
+ border-radius: 50%;
140
+ background: #38bdf8;
141
+ box-shadow: 0 0 8px rgba(56, 189, 248, 0.6);
142
+ }
143
+
144
+ .subtitle {
145
+ font-size: 18px;
146
+ font-weight: 400;
147
+ color: #94a3b8;
148
+ line-height: 1.5;
149
+ max-width: 420px;
150
+ margin-bottom: 28px;
151
+ }
152
+ .subtitle strong {
153
+ color: #e2e8f0;
154
+ font-weight: 600;
155
+ }
156
+
157
+ /* ── Feature pills ── */
158
+ .features {
159
+ display: flex;
160
+ flex-wrap: wrap;
161
+ gap: 8px;
162
+ margin-bottom: 28px;
163
+ }
164
+ .feature-pill {
165
+ display: inline-flex;
166
+ align-items: center;
167
+ gap: 6px;
168
+ padding: 7px 14px;
169
+ border-radius: 8px;
170
+ font-size: 12.5px;
171
+ font-weight: 500;
172
+ background: rgba(255, 255, 255, 0.04);
173
+ border: 1px solid rgba(255, 255, 255, 0.08);
174
+ color: #cbd5e1;
175
+ }
176
+ .feature-pill .icon {
177
+ font-size: 14px;
178
+ }
179
+ .feature-pill.highlight {
180
+ background: rgba(56, 189, 248, 0.08);
181
+ border-color: rgba(56, 189, 248, 0.2);
182
+ color: #7dd3fc;
183
+ }
184
+
185
+ /* ── Footer ── */
186
+ .footer {
187
+ display: flex;
188
+ align-items: center;
189
+ justify-content: space-between;
190
+ padding-top: 16px;
191
+ border-top: 1px solid rgba(255, 255, 255, 0.06);
192
+ }
193
+ .author {
194
+ font-size: 14px;
195
+ font-weight: 600;
196
+ color: #e2e8f0;
197
+ }
198
+ .author span {
199
+ font-weight: 400;
200
+ color: #64748b;
201
+ font-size: 12px;
202
+ }
203
+ .github-link {
204
+ font-family: 'JetBrains Mono', monospace;
205
+ font-size: 12px;
206
+ color: #64748b;
207
+ display: flex;
208
+ align-items: center;
209
+ gap: 6px;
210
+ }
211
+ .github-link .gh-icon {
212
+ width: 16px; height: 16px;
213
+ background: #64748b;
214
+ border-radius: 50%;
215
+ display: flex;
216
+ align-items: center;
217
+ justify-content: center;
218
+ font-size: 10px;
219
+ color: #0a0a0f;
220
+ font-weight: 800;
221
+ }
222
+
223
+ /* ── Right column: Terminal ── */
224
+ .right {
225
+ width: 500px;
226
+ flex-shrink: 0;
227
+ display: flex;
228
+ flex-direction: column;
229
+ gap: 0;
230
+ }
231
+
232
+ .terminal {
233
+ flex: 1;
234
+ background: #0f1219;
235
+ border: 1px solid rgba(255, 255, 255, 0.06);
236
+ border-radius: 12px;
237
+ overflow: hidden;
238
+ box-shadow:
239
+ 0 0 0 1px rgba(255, 255, 255, 0.03),
240
+ 0 20px 60px rgba(0, 0, 0, 0.5),
241
+ 0 0 40px rgba(56, 189, 248, 0.05);
242
+ }
243
+
244
+ .terminal-header {
245
+ display: flex;
246
+ align-items: center;
247
+ gap: 8px;
248
+ padding: 12px 16px;
249
+ background: rgba(255, 255, 255, 0.02);
250
+ border-bottom: 1px solid rgba(255, 255, 255, 0.04);
251
+ }
252
+ .terminal-dot { width: 12px; height: 12px; border-radius: 50%; }
253
+ .dot-r { background: #ef4444; }
254
+ .dot-y { background: #f59e0b; }
255
+ .dot-g { background: #22c55e; }
256
+ .terminal-title {
257
+ flex: 1;
258
+ text-align: center;
259
+ font-family: 'JetBrains Mono', monospace;
260
+ font-size: 12px;
261
+ color: #475569;
262
+ font-weight: 500;
263
+ }
264
+
265
+ .terminal-body {
266
+ padding: 16px 18px;
267
+ font-family: 'JetBrains Mono', monospace;
268
+ font-size: 11.5px;
269
+ line-height: 1.7;
270
+ color: #94a3b8;
271
+ }
272
+
273
+ .t-line { display: flex; align-items: baseline; gap: 0; margin-bottom: 1px; white-space: nowrap; }
274
+ .t-phase { display: flex; align-items: baseline; gap: 0; margin-bottom: 0; white-space: nowrap; }
275
+ .t-result { display: flex; align-items: baseline; gap: 0; margin-bottom: 4px; white-space: nowrap; padding-left: 30px; }
276
+
277
+ .t-dim { color: #334155; }
278
+ .t-idx { color: #475569; font-size: 10px; margin-right: 6px; }
279
+ .t-cyan { color: #22d3ee; }
280
+ .t-blue { color: #3b82f6; }
281
+ .t-magenta { color: #c084fc; }
282
+ .t-orange { color: #fb923c; }
283
+ .t-yellow { color: #fbbf24; }
284
+ .t-green { color: #4ade80; }
285
+ .t-red { color: #f87171; }
286
+ .t-white { color: #e2e8f0; font-weight: 600; }
287
+ .t-bold { font-weight: 700; }
288
+ .t-label { color: #e2e8f0; font-weight: 600; margin: 0 4px; }
289
+
290
+ .t-bar { letter-spacing: -1px; }
291
+ .t-check { color: #4ade80; margin-right: 4px; }
292
+ .t-dot { margin-right: 4px; }
293
+
294
+ /* Score section */
295
+ .score-section {
296
+ margin-top: 8px;
297
+ padding-top: 8px;
298
+ border-top: 1px solid rgba(255, 255, 255, 0.04);
299
+ }
300
+ .score-title {
301
+ color: #e2e8f0;
302
+ font-weight: 700;
303
+ font-size: 11px;
304
+ margin-bottom: 4px;
305
+ letter-spacing: 0.5px;
306
+ }
307
+ .score-meter {
308
+ display: flex;
309
+ align-items: center;
310
+ gap: 8px;
311
+ margin-bottom: 6px;
312
+ }
313
+ .meter-bar {
314
+ display: flex;
315
+ height: 8px;
316
+ border-radius: 4px;
317
+ overflow: hidden;
318
+ flex: 1;
319
+ background: #1e293b;
320
+ }
321
+ .meter-fill {
322
+ height: 100%;
323
+ border-radius: 4px;
324
+ background: linear-gradient(90deg, #38bdf8, #818cf8);
325
+ }
326
+ .score-value {
327
+ font-size: 18px;
328
+ font-weight: 800;
329
+ color: #38bdf8;
330
+ min-width: 52px;
331
+ text-align: right;
332
+ }
333
+
334
+ .breakdown {
335
+ display: grid;
336
+ grid-template-columns: 1fr 1fr;
337
+ gap: 2px 16px;
338
+ font-size: 10.5px;
339
+ }
340
+ .breakdown-item {
341
+ display: flex;
342
+ align-items: center;
343
+ gap: 6px;
344
+ }
345
+ .breakdown-label { color: #64748b; min-width: 70px; }
346
+ .breakdown-bar {
347
+ flex: 1;
348
+ height: 4px;
349
+ border-radius: 2px;
350
+ background: #1e293b;
351
+ overflow: hidden;
352
+ }
353
+ .breakdown-fill {
354
+ height: 100%;
355
+ border-radius: 2px;
356
+ }
357
+ .fill-high { background: #4ade80; }
358
+ .fill-med { background: #fbbf24; }
359
+ .fill-low { background: #f87171; }
360
+ .breakdown-val { color: #94a3b8; font-weight: 600; min-width: 20px; text-align: right; }
361
+
362
+ /* Stats row */
363
+ .stats-row {
364
+ display: flex;
365
+ gap: 12px;
366
+ margin-top: 8px;
367
+ padding-top: 6px;
368
+ border-top: 1px solid rgba(255, 255, 255, 0.04);
369
+ font-size: 10px;
370
+ color: #64748b;
371
+ }
372
+ .stat { display: flex; align-items: center; gap: 3px; }
373
+ .stat-val { color: #e2e8f0; font-weight: 600; }
374
+ </style>
375
+ </head>
376
+ <body>
377
+ <div class="grid-bg"></div>
378
+ <div class="orb orb-1"></div>
379
+ <div class="orb orb-2"></div>
380
+ <div class="orb orb-3"></div>
381
+
382
+ <div class="container">
383
+ <!-- LEFT -->
384
+ <div class="left">
385
+ <div>
386
+ <div class="top-badges">
387
+ <span class="badge badge-os">&#9679; Open Source</span>
388
+ <span class="badge badge-new">&#9733; v3.0</span>
389
+ <span class="badge badge-ai">&#9880; AI-Powered</span>
390
+ </div>
391
+
392
+ <div class="title-block">
393
+ <h1>Architect</h1>
394
+ </div>
395
+ <div class="version-tag">
396
+ <span class="dot"></span> v3.0 — Enterprise Architecture Intelligence
397
+ </div>
398
+
399
+ <p class="subtitle">
400
+ Analyze, score, and evolve your <strong>software architecture</strong> with AI.
401
+ Real-time pipeline, interactive reports, and agent generation.
402
+ </p>
403
+
404
+ <div class="features">
405
+ <span class="feature-pill highlight"><span class="icon">⚡</span> Real-time Pipeline</span>
406
+ <span class="feature-pill highlight"><span class="icon">🔒</span> Security Rules (OWASP)</span>
407
+ <span class="feature-pill"><span class="icon">📊</span> Score 0-100</span>
408
+ <span class="feature-pill"><span class="icon">🔗</span> D3 Dependency Graph</span>
409
+ <span class="feature-pill"><span class="icon">🤖</span> Agent Generation</span>
410
+ <span class="feature-pill"><span class="icon">🔧</span> Refactoring Engine</span>
411
+ <span class="feature-pill"><span class="icon">🐛</span> Anti-Pattern Detection</span>
412
+ <span class="feature-pill"><span class="icon">🏗️</span> 8+ Frameworks</span>
413
+ </div>
414
+ </div>
415
+
416
+ <div class="footer">
417
+ <div class="author">
418
+ Camilo Girardelli <span>&nbsp;· IEEE Senior Member · girardellitecnologia.com</span>
419
+ </div>
420
+ <div class="github-link">
421
+ <span class="gh-icon">G</span> github.com/camilooscargbaptista/architect
422
+ </div>
423
+ </div>
424
+ </div>
425
+
426
+ <!-- RIGHT: Terminal -->
427
+ <div class="right">
428
+ <div class="terminal">
429
+ <div class="terminal-header">
430
+ <div class="terminal-dot dot-r"></div>
431
+ <div class="terminal-dot dot-y"></div>
432
+ <div class="terminal-dot dot-g"></div>
433
+ <div class="terminal-title">architect analyze</div>
434
+ </div>
435
+ <div class="terminal-body">
436
+ <!-- Pipeline phases -->
437
+ <div class="t-phase">
438
+ <span class="t-idx">[1/7]</span>
439
+ <span class="t-cyan t-dot">◉</span>
440
+ <span class="t-label">FILE SCANNER</span>
441
+ <span class="t-dim">— Scanning filesystem...</span>
442
+ </div>
443
+ <div class="t-result">
444
+ <span class="t-check">✓</span>
445
+ <span class="t-dim">62ms │</span>
446
+ <span class="t-white"> 847</span><span class="t-dim"> files ·</span>
447
+ <span class="t-white"> 54,210</span><span class="t-dim"> lines ·</span>
448
+ <span class="t-white"> 3</span><span class="t-dim"> langs</span>
449
+ </div>
450
+
451
+ <div class="t-phase">
452
+ <span class="t-idx">[2/7]</span>
453
+ <span class="t-blue t-dot">◉</span>
454
+ <span class="t-label">DEPENDENCY MAPPER</span>
455
+ <span class="t-dim">— Mapping imports...</span>
456
+ </div>
457
+ <div class="t-result">
458
+ <span class="t-check">✓</span>
459
+ <span class="t-dim">285ms │</span>
460
+ <span class="t-white"> 312</span><span class="t-dim"> edges ·</span>
461
+ <span class="t-white"> 12</span><span class="t-dim"> modules</span>
462
+ </div>
463
+
464
+ <div class="t-phase">
465
+ <span class="t-idx">[3/7]</span>
466
+ <span class="t-magenta t-dot">◉</span>
467
+ <span class="t-label">LAYER DETECTOR</span>
468
+ <span class="t-dim">— Classifying arch...</span>
469
+ </div>
470
+ <div class="t-result">
471
+ <span class="t-check">✓</span>
472
+ <span class="t-dim">18ms │</span>
473
+ <span class="t-white"> 5</span><span class="t-dim"> layers ·</span>
474
+ <span class="t-white"> 203</span><span class="t-dim"> classified</span>
475
+ </div>
476
+
477
+ <div class="t-phase">
478
+ <span class="t-idx">[4/7]</span>
479
+ <span class="t-orange t-dot">◉</span>
480
+ <span class="t-label">PATTERN ANALYZER</span>
481
+ <span class="t-dim">— Anti-patterns...</span>
482
+ </div>
483
+ <div class="t-result">
484
+ <span class="t-check">✓</span>
485
+ <span class="t-dim">39ms │</span>
486
+ <span class="t-yellow"> 3</span><span class="t-dim"> found ·</span>
487
+ <span class="t-red"> 1 critical</span><span class="t-dim"> ·</span>
488
+ <span class="t-orange"> 2 high</span>
489
+ </div>
490
+
491
+ <div class="t-phase">
492
+ <span class="t-idx">[5/7]</span>
493
+ <span class="t-yellow t-dot">◉</span>
494
+ <span class="t-label">QUALITY ENGINE</span>
495
+ <span class="t-dim">— Computing metrics...</span>
496
+ </div>
497
+ <div class="t-result">
498
+ <span class="t-check">✓</span>
499
+ <span class="t-dim">12ms │</span>
500
+ <span class="t-cyan t-bold"> 78/100</span>
501
+ <span class="t-dim"> · M:95 C:62 Co:85 L:70</span>
502
+ </div>
503
+
504
+ <div class="t-phase">
505
+ <span class="t-idx">[6/7]</span>
506
+ <span class="t-dim t-dot">◉</span>
507
+ <span class="t-label" style="color:#94a3b8">AI SUMMARIZER</span>
508
+ <span class="t-dim">— Project summary...</span>
509
+ </div>
510
+ <div class="t-result">
511
+ <span class="t-check">✓</span>
512
+ <span class="t-dim">8ms │</span>
513
+ <span class="t-white"> 6</span><span class="t-dim"> modules ·</span>
514
+ <span class="t-white"> 4</span><span class="t-dim"> technologies</span>
515
+ </div>
516
+
517
+ <!-- Score visualization -->
518
+ <div class="score-section">
519
+ <div class="score-title">ARCHITECTURE SCORE</div>
520
+ <div class="score-meter">
521
+ <div class="meter-bar">
522
+ <div class="meter-fill" style="width: 78%"></div>
523
+ </div>
524
+ <div class="score-value">78<span style="font-size:11px;color:#64748b">/100</span></div>
525
+ </div>
526
+ <div class="breakdown">
527
+ <div class="breakdown-item">
528
+ <span class="breakdown-label">Modularity</span>
529
+ <div class="breakdown-bar"><div class="breakdown-fill fill-high" style="width:95%"></div></div>
530
+ <span class="breakdown-val">95</span>
531
+ </div>
532
+ <div class="breakdown-item">
533
+ <span class="breakdown-label">Coupling</span>
534
+ <div class="breakdown-bar"><div class="breakdown-fill fill-med" style="width:62%"></div></div>
535
+ <span class="breakdown-val">62</span>
536
+ </div>
537
+ <div class="breakdown-item">
538
+ <span class="breakdown-label">Cohesion</span>
539
+ <div class="breakdown-bar"><div class="breakdown-fill fill-high" style="width:85%"></div></div>
540
+ <span class="breakdown-val">85</span>
541
+ </div>
542
+ <div class="breakdown-item">
543
+ <span class="breakdown-label">Layering</span>
544
+ <div class="breakdown-bar"><div class="breakdown-fill fill-med" style="width:70%"></div></div>
545
+ <span class="breakdown-val">70</span>
546
+ </div>
547
+ </div>
548
+ <div class="stats-row">
549
+ <span class="stat">📁 <span class="stat-val">847</span> files</span>
550
+ <span class="stat">📝 <span class="stat-val">54K</span> lines</span>
551
+ <span class="stat">⚠️ <span class="stat-val">3</span> patterns</span>
552
+ <span class="stat">🔧 <span class="stat-val">5</span> steps</span>
553
+ <span class="stat">🤖 <span class="stat-val">5</span> agents</span>
554
+ </div>
555
+ </div>
556
+ </div>
557
+ </div>
558
+ </div>
559
+ </div>
560
+ </body>
561
+ </html>
@@ -0,0 +1,58 @@
1
+ import { AnalysisReport, RefactoringPlan } from '../types.js';
2
+ import { StackInfo, EnrichedTemplateContext, AgentGeneratorConfig } from './types.js';
3
+ /**
4
+ * ContextEnricher — Builds an EnrichedTemplateContext from AnalysisReport.
5
+ *
6
+ * Multi-stack: detects modules and endpoints for Python, TypeScript, Java, PHP,
7
+ * Go, Ruby, Dart — supports NestJS modules, Django apps, FastAPI routers,
8
+ * Spring controllers, Laravel controllers, Flask blueprints, and more.
9
+ *
10
+ * v3.1: Now includes framework detection, line counting, smart descriptions,
11
+ * and project structure detection for truly context-aware agent generation.
12
+ */
13
+ export declare class ContextEnricher {
14
+ private domainInferrer;
15
+ private frameworkDetector;
16
+ /**
17
+ * Build a fully enriched context for template generation.
18
+ */
19
+ enrich(report: AnalysisReport, plan: RefactoringPlan, stack: StackInfo, projectPath: string, config?: AgentGeneratorConfig): EnrichedTemplateContext;
20
+ private extractModules;
21
+ /**
22
+ * Count actual lines in a file. Uses a fast approach:
23
+ * reads file size and estimates if too large, counts \n for smaller files.
24
+ */
25
+ private countFileLines;
26
+ /**
27
+ * Generate intelligent descriptions based on module name patterns,
28
+ * file composition, and layer context.
29
+ */
30
+ private generateSmartDescription;
31
+ /**
32
+ * Multi-strategy module name inference.
33
+ * Strategy 1: Explicit module markers (modules/, features/, apps/, etc.)
34
+ * Strategy 2: Clean Architecture layers — use meaningful subdirectory
35
+ * Strategy 3: Django apps pattern (app_name/models.py, app_name/views.py)
36
+ * Strategy 4: Package-based (Java/PHP namespaces)
37
+ * Strategy 5: Go package
38
+ * Strategy 6: Fallback — first non-generic directory from the end
39
+ */
40
+ private inferModuleName;
41
+ /** Check if a directory name is too generic to be a module */
42
+ private isGenericDir;
43
+ private inferModulePath;
44
+ private inferFileLayer;
45
+ private extractEndpoints;
46
+ private extractResourceFromFile;
47
+ private findUntestedModules;
48
+ private findCriticalPaths;
49
+ private classifyProjectDepth;
50
+ private isTestFile;
51
+ private isEntityFile;
52
+ private isControllerOrRouteFile;
53
+ private isServiceFile;
54
+ private extractEntityName;
55
+ private fileReferencesAuth;
56
+ private fileReferencesValidation;
57
+ }
58
+ //# sourceMappingURL=context-enricher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-enricher.d.ts","sourceRoot":"","sources":["../../src/agent-generator/context-enricher.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EACL,SAAS,EACT,uBAAuB,EAGvB,oBAAoB,EAErB,MAAM,YAAY,CAAC;AAIpB;;;;;;;;;GASG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,cAAc,CAAwB;IAC9C,OAAO,CAAC,iBAAiB,CAA2B;IAEpD;;OAEG;IACH,MAAM,CACJ,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,MAAM,EACnB,MAAM,GAAE,oBAA2C,GAClD,uBAAuB;IA0C1B,OAAO,CAAC,cAAc;IA4EtB;;;OAGG;IACH,OAAO,CAAC,cAAc;IAuBtB;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAmFhC;;;;;;;;OAQG;IACH,OAAO,CAAC,eAAe;IAwGvB,8DAA8D;IAC9D,OAAO,CAAC,YAAY;IAkBpB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,cAAc;IAmDtB,OAAO,CAAC,gBAAgB;IAgFxB,OAAO,CAAC,uBAAuB;IAwB/B,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,uBAAuB;IAgB/B,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,wBAAwB;CASjC"}