@girardelli/architect 1.3.0 โ†’ 2.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 (58) hide show
  1. package/README.md +111 -112
  2. package/dist/agent-generator.d.ts +95 -0
  3. package/dist/agent-generator.d.ts.map +1 -0
  4. package/dist/agent-generator.js +1295 -0
  5. package/dist/agent-generator.js.map +1 -0
  6. package/dist/cli.js +76 -2
  7. package/dist/cli.js.map +1 -1
  8. package/dist/html-reporter.d.ts +8 -2
  9. package/dist/html-reporter.d.ts.map +1 -1
  10. package/dist/html-reporter.js +470 -5
  11. package/dist/html-reporter.js.map +1 -1
  12. package/dist/index.d.ts +26 -2
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +25 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/refactor-engine.d.ts +18 -0
  17. package/dist/refactor-engine.d.ts.map +1 -0
  18. package/dist/refactor-engine.js +86 -0
  19. package/dist/refactor-engine.js.map +1 -0
  20. package/dist/refactor-reporter.d.ts +20 -0
  21. package/dist/refactor-reporter.d.ts.map +1 -0
  22. package/dist/refactor-reporter.js +389 -0
  23. package/dist/refactor-reporter.js.map +1 -0
  24. package/dist/rules/barrel-optimizer.d.ts +13 -0
  25. package/dist/rules/barrel-optimizer.d.ts.map +1 -0
  26. package/dist/rules/barrel-optimizer.js +77 -0
  27. package/dist/rules/barrel-optimizer.js.map +1 -0
  28. package/dist/rules/dead-code-detector.d.ts +21 -0
  29. package/dist/rules/dead-code-detector.d.ts.map +1 -0
  30. package/dist/rules/dead-code-detector.js +117 -0
  31. package/dist/rules/dead-code-detector.js.map +1 -0
  32. package/dist/rules/hub-splitter.d.ts +13 -0
  33. package/dist/rules/hub-splitter.d.ts.map +1 -0
  34. package/dist/rules/hub-splitter.js +110 -0
  35. package/dist/rules/hub-splitter.js.map +1 -0
  36. package/dist/rules/import-organizer.d.ts +13 -0
  37. package/dist/rules/import-organizer.d.ts.map +1 -0
  38. package/dist/rules/import-organizer.js +85 -0
  39. package/dist/rules/import-organizer.js.map +1 -0
  40. package/dist/rules/module-grouper.d.ts +13 -0
  41. package/dist/rules/module-grouper.d.ts.map +1 -0
  42. package/dist/rules/module-grouper.js +110 -0
  43. package/dist/rules/module-grouper.js.map +1 -0
  44. package/dist/types.d.ts +51 -0
  45. package/dist/types.d.ts.map +1 -1
  46. package/package.json +1 -1
  47. package/src/agent-generator.ts +1401 -0
  48. package/src/cli.ts +83 -2
  49. package/src/html-reporter.ts +496 -6
  50. package/src/index.ts +39 -1
  51. package/src/refactor-engine.ts +117 -0
  52. package/src/refactor-reporter.ts +408 -0
  53. package/src/rules/barrel-optimizer.ts +97 -0
  54. package/src/rules/dead-code-detector.ts +132 -0
  55. package/src/rules/hub-splitter.ts +123 -0
  56. package/src/rules/import-organizer.ts +98 -0
  57. package/src/rules/module-grouper.ts +124 -0
  58. package/src/types.ts +52 -0
@@ -3,7 +3,7 @@
3
3
  * Features: D3.js force graph, bubble charts, radar chart, animated counters.
4
4
  */
5
5
  export class HtmlReportGenerator {
6
- generateHtml(report) {
6
+ generateHtml(report, plan, agentSuggestion) {
7
7
  const grouped = this.groupAntiPatterns(report.antiPatterns);
8
8
  const sugGrouped = this.groupSuggestions(report.suggestions);
9
9
  return `<!DOCTYPE html>
@@ -26,6 +26,8 @@ ${this.renderHeader(report)}
26
26
  ${this.renderAntiPatternBubbles(report, grouped)}
27
27
  ${this.renderAntiPatterns(report, grouped)}
28
28
  ${this.renderSuggestions(sugGrouped)}
29
+ ${plan ? this.renderRefactoringPlan(plan) : ''}
30
+ ${agentSuggestion ? this.renderAgentSuggestions(agentSuggestion) : ''}
29
31
  </div>
30
32
  ${this.renderFooter()}
31
33
  ${this.getScripts(report)}
@@ -345,8 +347,143 @@ ${this.getScripts(report)}
345
347
  renderFooter() {
346
348
  return `
347
349
  <div class="footer">
348
- <p>Generated by <a href="https://github.com/camilooscargbaptista/architect">๐Ÿ—๏ธ Architect</a> โ€” AI-powered architecture analysis</p>
350
+ <p>Generated by <a href="https://github.com/camilooscargbaptista/architect">๐Ÿ—๏ธ Architect v2.0</a> โ€” AI-powered architecture analysis + refactoring engine</p>
349
351
  <p>By <strong>Camilo Girardelli</strong> ยท <a href="https://www.girardellitecnologia.com">Girardelli Tecnologia</a></p>
352
+ </div>`;
353
+ }
354
+ // โ”€โ”€ Refactoring Plan Section โ”€โ”€
355
+ opColor(type) {
356
+ switch (type) {
357
+ case 'CREATE': return '#22c55e';
358
+ case 'MOVE': return '#3b82f6';
359
+ case 'MODIFY': return '#f59e0b';
360
+ case 'DELETE': return '#ef4444';
361
+ default: return '#64748b';
362
+ }
363
+ }
364
+ opIcon(type) {
365
+ switch (type) {
366
+ case 'CREATE': return 'โž•';
367
+ case 'MOVE': return '๐Ÿ“ฆ';
368
+ case 'MODIFY': return 'โœ๏ธ';
369
+ case 'DELETE': return '๐Ÿ—‘๏ธ';
370
+ default: return '๐Ÿ“„';
371
+ }
372
+ }
373
+ renderRefactoringPlan(plan) {
374
+ if (plan.steps.length === 0) {
375
+ return `
376
+ <h2 class="section-title">โœ… Refactoring Plan</h2>
377
+ <div class="card success-card">
378
+ <p>No refactoring needed! Your architecture is already in great shape.</p>
379
+ </div>`;
380
+ }
381
+ const improvement = plan.estimatedScoreAfter.overall - plan.currentScore.overall;
382
+ const metrics = Object.keys(plan.currentScore.breakdown);
383
+ const bars = metrics.map(metric => {
384
+ const before = plan.currentScore.breakdown[metric];
385
+ const after = plan.estimatedScoreAfter.breakdown[metric] ?? before;
386
+ const diff = after - before;
387
+ return `
388
+ <div class="comparison-row">
389
+ <div class="refactor-metric-name">${metric}</div>
390
+ <div class="refactor-metric-bars">
391
+ <div class="rbar-before" style="width: ${before}%; background: ${this.scoreColor(before)}40"><span>${before}</span></div>
392
+ <div class="rbar-after" style="width: ${after}%; background: ${this.scoreColor(after)}"><span>${after}</span></div>
393
+ </div>
394
+ <div class="refactor-metric-diff" style="color: ${diff > 0 ? '#22c55e' : '#64748b'}">
395
+ ${diff > 0 ? `+${diff}` : diff === 0 ? 'โ€”' : String(diff)}
396
+ </div>
397
+ </div>`;
398
+ }).join('');
399
+ const stepsHtml = plan.steps.map(step => this.renderRefactorStep(step)).join('');
400
+ const criticalCount = plan.steps.filter(s => s.priority === 'CRITICAL').length;
401
+ const highCount = plan.steps.filter(s => s.priority === 'HIGH').length;
402
+ const mediumCount = plan.steps.filter(s => s.priority === 'MEDIUM').length;
403
+ const lowCount = plan.steps.filter(s => s.priority === 'LOW').length;
404
+ return `
405
+ <h2 class="section-title">๐Ÿ”ง Refactoring Plan</h2>
406
+
407
+ <div class="card refactor-score">
408
+ <div class="refactor-score-pair">
409
+ <div class="rscore-box">
410
+ <div class="rscore-num" style="color: ${this.scoreColor(plan.currentScore.overall)}">${plan.currentScore.overall}</div>
411
+ <div class="rscore-label">Current</div>
412
+ </div>
413
+ <div class="rscore-arrow">
414
+ <svg width="60" height="30" viewBox="0 0 60 30">
415
+ <path d="M5 15 L45 15 M40 8 L48 15 L40 22" stroke="#818cf8" stroke-width="2.5" fill="none"/>
416
+ </svg>
417
+ </div>
418
+ <div class="rscore-box">
419
+ <div class="rscore-num" style="color: ${this.scoreColor(plan.estimatedScoreAfter.overall)}">${plan.estimatedScoreAfter.overall}</div>
420
+ <div class="rscore-label">Estimated</div>
421
+ </div>
422
+ <div class="rscore-improvement" style="color: #22c55e">+${improvement} pts</div>
423
+ </div>
424
+ <div class="refactor-bars-section">
425
+ <div class="refactor-legend">
426
+ <span class="rlegend-tag rbefore">Before</span>
427
+ <span class="rlegend-tag rafter">After</span>
428
+ </div>
429
+ ${bars}
430
+ </div>
431
+ </div>
432
+
433
+ <div class="refactor-stats-row">
434
+ <div class="rstat">${plan.steps.length} steps</div>
435
+ <div class="rstat">${plan.totalOperations} operations</div>
436
+ <div class="rstat">Tier 1: ${plan.tier1Steps}</div>
437
+ <div class="rstat">Tier 2: ${plan.tier2Steps}</div>
438
+ </div>
439
+
440
+ <div class="priority-bar">
441
+ ${criticalCount ? `<div class="prio-seg prio-critical" style="flex: ${criticalCount}">๐Ÿ”ด ${criticalCount}</div>` : ''}
442
+ ${highCount ? `<div class="prio-seg prio-high" style="flex: ${highCount}">๐ŸŸ  ${highCount}</div>` : ''}
443
+ ${mediumCount ? `<div class="prio-seg prio-medium" style="flex: ${mediumCount}">๐Ÿ”ต ${mediumCount}</div>` : ''}
444
+ ${lowCount ? `<div class="prio-seg prio-low" style="flex: ${lowCount}">๐ŸŸข ${lowCount}</div>` : ''}
445
+ </div>
446
+
447
+ <div class="refactor-roadmap">
448
+ ${stepsHtml}
449
+ </div>`;
450
+ }
451
+ renderRefactorStep(step) {
452
+ const operationsHtml = step.operations.map(op => `
453
+ <div class="rop">
454
+ <span class="rop-icon">${this.opIcon(op.type)}</span>
455
+ <span class="rop-badge" style="background: ${this.opColor(op.type)}20; color: ${this.opColor(op.type)}; border: 1px solid ${this.opColor(op.type)}40">${op.type}</span>
456
+ <code class="rop-path">${this.escapeHtml(op.path)}</code>
457
+ ${op.newPath ? `<span class="rop-arrow">โ†’</span> <code class="rop-path">${this.escapeHtml(op.newPath)}</code>` : ''}
458
+ <div class="rop-desc">${this.escapeHtml(op.description)}</div>
459
+ </div>
460
+ `).join('');
461
+ const impactHtml = step.scoreImpact.map(i => `<span class="rimpact-tag">${i.metric}: ${i.before}โ†’${i.after} <strong>+${i.after - i.before}</strong></span>`).join('');
462
+ return `
463
+ <div class="rstep-card">
464
+ <div class="rstep-header">
465
+ <div class="rstep-number">${step.id}</div>
466
+ <div class="rstep-info">
467
+ <div class="rstep-title-row">
468
+ <h3>${this.escapeHtml(step.title)}</h3>
469
+ <span class="severity-badge severity-${step.priority}">${step.priority}</span>
470
+ <span class="tier-badge">Tier ${step.tier}</span>
471
+ </div>
472
+ <p class="rstep-desc">${this.escapeHtml(step.description)}</p>
473
+ <details class="rstep-details">
474
+ <summary>๐Ÿ“– Why?</summary>
475
+ <p class="rstep-rationale">${this.escapeHtml(step.rationale)}</p>
476
+ </details>
477
+ </div>
478
+ </div>
479
+ <div class="rstep-ops">
480
+ <h4>๐Ÿ“‹ Operations (${step.operations.length})</h4>
481
+ ${operationsHtml}
482
+ </div>
483
+ <div class="rstep-impact">
484
+ <h4>๐Ÿ“ˆ Score Impact</h4>
485
+ <div class="rimpact-tags">${impactHtml}</div>
486
+ </div>
350
487
  </div>`;
351
488
  }
352
489
  /**
@@ -472,7 +609,7 @@ function animateCounter(el, target) {
472
609
 
473
610
  const container = document.getElementById('dep-graph');
474
611
  const width = container.clientWidth || 800;
475
- const height = Math.max(400, nodes.length * 25);
612
+ const height = 450;
476
613
  container.style.height = height + 'px';
477
614
 
478
615
  const layerColors = {
@@ -493,9 +630,11 @@ function animateCounter(el, target) {
493
630
  .attr('fill', '#475569');
494
631
 
495
632
  const simulation = d3.forceSimulation(nodes)
496
- .force('link', d3.forceLink(links).id(d => d.id).distance(80))
497
- .force('charge', d3.forceManyBody().strength(-200))
633
+ .force('link', d3.forceLink(links).id(d => d.id).distance(60))
634
+ .force('charge', d3.forceManyBody().strength(-150))
498
635
  .force('center', d3.forceCenter(width / 2, height / 2))
636
+ .force('x', d3.forceX(width / 2).strength(0.1))
637
+ .force('y', d3.forceY(height / 2).strength(0.1))
499
638
  .force('collision', d3.forceCollide().radius(d => Math.max(d.connections * 3 + 12, 15)));
500
639
 
501
640
  const link = svg.append('g')
@@ -530,6 +669,13 @@ function animateCounter(el, target) {
530
669
  .text(d => d.id + '\\nConnections: ' + d.connections + '\\nLayer: ' + d.layer);
531
670
 
532
671
  simulation.on('tick', () => {
672
+ // Clamp nodes to stay within SVG bounds
673
+ nodes.forEach(d => {
674
+ const r = Math.max(d.connections * 3 + 6, 8) + 10;
675
+ d.x = Math.max(r, Math.min(width - r, d.x));
676
+ d.y = Math.max(r, Math.min(height - r, d.y));
677
+ });
678
+
533
679
  link
534
680
  .attr('x1', d => d.source.x).attr('y1', d => d.source.y)
535
681
  .attr('x2', d => d.target.x).attr('y2', d => d.target.y);
@@ -601,6 +747,235 @@ function animateCounter(el, target) {
601
747
  .attr('text-anchor', 'middle').attr('dy', '2.5em')
602
748
  .attr('fill', '#64748b').attr('font-size', '9px').attr('text-transform', 'uppercase');
603
749
  })();
750
+ <\/script>`;
751
+ }
752
+ renderAgentSuggestions(s) {
753
+ const roleIcon = (name) => {
754
+ if (name.includes('ORCHESTRATOR'))
755
+ return '\u{1F3AD}';
756
+ if (name.includes('BACKEND') || name.includes('FRONTEND') || name.includes('DATABASE') || name.includes('FLUTTER'))
757
+ return '\u{1F4BB}';
758
+ if (name.includes('SECURITY'))
759
+ return '\u{1F6E1}\uFE0F';
760
+ if (name.includes('QA'))
761
+ return '\u{1F9EA}';
762
+ if (name.includes('TECH-DEBT'))
763
+ return '\u{1F4CA}';
764
+ return '\u{1F916}';
765
+ };
766
+ const roleLabel = (name) => {
767
+ if (name.includes('ORCHESTRATOR'))
768
+ return 'coordination';
769
+ if (name.includes('SECURITY'))
770
+ return 'protection';
771
+ if (name.includes('QA'))
772
+ return 'quality';
773
+ if (name.includes('TECH-DEBT'))
774
+ return 'governance';
775
+ return 'development';
776
+ };
777
+ const roleColor = (name) => {
778
+ if (name.includes('ORCHESTRATOR'))
779
+ return '#c084fc';
780
+ if (name.includes('SECURITY'))
781
+ return '#f87171';
782
+ if (name.includes('QA'))
783
+ return '#34d399';
784
+ if (name.includes('TECH-DEBT'))
785
+ return '#fbbf24';
786
+ return '#60a5fa';
787
+ };
788
+ const agentCards = s.suggestedAgents.map(a => `<label class="agent-toggle-card" data-category="agents" data-name="${a}">
789
+ <input type="checkbox" class="agent-check" checked data-type="agents" data-item="${a}">
790
+ <div class="agent-toggle-inner">
791
+ <div class="agent-toggle-icon">${roleIcon(a)}</div>
792
+ <div class="agent-toggle-info">
793
+ <span class="agent-toggle-name">${a}</span>
794
+ <span class="agent-toggle-role" style="color:${roleColor(a)}">${roleLabel(a)}</span>
795
+ </div>
796
+ <div class="agent-toggle-check">\u2713</div>
797
+ </div>
798
+ </label>`).join('\n');
799
+ const ruleCards = s.suggestedRules.map(r => `<label class="agent-toggle-card mini" data-category="rules">
800
+ <input type="checkbox" class="agent-check" checked data-type="rules" data-item="${r}">
801
+ <div class="agent-toggle-inner">
802
+ <span class="agent-toggle-icon">\u{1F4CF}</span>
803
+ <span class="agent-toggle-name">${r}.md</span>
804
+ <div class="agent-toggle-check">\u2713</div>
805
+ </div>
806
+ </label>`).join('\n');
807
+ const guardCards = s.suggestedGuards.map(g => `<label class="agent-toggle-card mini" data-category="guards">
808
+ <input type="checkbox" class="agent-check" checked data-type="guards" data-item="${g}">
809
+ <div class="agent-toggle-inner">
810
+ <span class="agent-toggle-icon">\u{1F6E1}\uFE0F</span>
811
+ <span class="agent-toggle-name">${g}.md</span>
812
+ <div class="agent-toggle-check">\u2713</div>
813
+ </div>
814
+ </label>`).join('\n');
815
+ const workflowCards = s.suggestedWorkflows.map(w => `<label class="agent-toggle-card mini" data-category="workflows">
816
+ <input type="checkbox" class="agent-check" checked data-type="workflows" data-item="${w}">
817
+ <div class="agent-toggle-inner">
818
+ <span class="agent-toggle-icon">\u26A1</span>
819
+ <span class="agent-toggle-name">${w}.md</span>
820
+ <div class="agent-toggle-check">\u2713</div>
821
+ </div>
822
+ </label>`).join('\n');
823
+ const skillCards = s.suggestedSkills.map(sk => `<label class="agent-toggle-card" data-category="skills">
824
+ <input type="checkbox" class="agent-check" checked data-type="skills" data-item="${sk.source}">
825
+ <div class="agent-toggle-inner">
826
+ <span class="agent-toggle-icon">\u{1F9E0}</span>
827
+ <div class="agent-toggle-info">
828
+ <span class="agent-toggle-name">${sk.name}</span>
829
+ <span class="agent-toggle-role" style="color:#34d399">${sk.description}</span>
830
+ </div>
831
+ <div class="agent-toggle-check">\u2713</div>
832
+ </div>
833
+ </label>`).join('\n');
834
+ const auditSection = s.audit.filter(f => f.type !== 'OK').length > 0 ? `
835
+ <div class="agent-audit-section">
836
+ <h3 class="agent-section-subtitle">\u{1F50D} Audit Findings</h3>
837
+ <div class="agent-audit-grid">
838
+ ${s.audit.filter(f => f.type !== 'OK').map(f => {
839
+ const icon = f.type === 'MISSING' ? '\u274C' : f.type === 'IMPROVEMENT' ? '\u{1F4A1}' : '\u26A0\uFE0F';
840
+ const cls = f.type === 'MISSING' ? 'audit-missing' : 'audit-improvement';
841
+ return `<div class="agent-audit-item ${cls}">
842
+ <span class="audit-icon">${icon}</span>
843
+ <div class="audit-content">
844
+ <span class="audit-desc">${f.description}</span>
845
+ ${f.suggestion ? `<span class="audit-suggestion">\u2192 ${f.suggestion}</span>` : ''}
846
+ </div>
847
+ </div>`;
848
+ }).join('\n')}
849
+ </div>
850
+ </div>` : '';
851
+ const stackPills = [
852
+ `\u{1F527} ${s.stack.primary}`,
853
+ `\u{1F4E6} ${s.stack.frameworks.length > 0 ? s.stack.frameworks.join(', ') : 'No framework'}`,
854
+ s.hasExistingAgents ? '\u{1F4C1} Existing .agent/' : '\u{1F4C1} New .agent/',
855
+ [s.stack.hasBackend ? '\u{1F519} Backend' : '', s.stack.hasFrontend ? '\u{1F5A5}\uFE0F Frontend' : '', s.stack.hasMobile ? '\u{1F4F1} Mobile' : '', s.stack.hasDatabase ? '\u{1F5C4}\uFE0F DB' : ''].filter(Boolean).join('\n ')
856
+ ];
857
+ const totalItems = s.suggestedAgents.length + s.suggestedRules.length + s.suggestedGuards.length + s.suggestedWorkflows.length + s.suggestedSkills.length;
858
+ return `
859
+ <h2 class="section-title">\u{1F916} Agent System (Suggested)</h2>
860
+
861
+ <div class="card agent-system-card">
862
+ <div class="agent-stack-banner">
863
+ ${stackPills.map(p => `<div class="stack-pill">${p}</div>`).join('\n ')}
864
+ </div>
865
+
866
+ <div class="agent-controls">
867
+ <button class="agent-ctrl-btn" onclick="toggleAll(true)">\u2705 Select All</button>
868
+ <button class="agent-ctrl-btn" onclick="toggleAll(false)">\u2B1C Select None</button>
869
+ <span class="agent-count-label"><span id="agentSelectedCount">${totalItems}</span> selected</span>
870
+ </div>
871
+
872
+ <h3 class="agent-section-subtitle">\u{1F916} Agents</h3>
873
+ <div class="agent-toggle-grid">
874
+ ${agentCards}
875
+ </div>
876
+
877
+ <div class="agent-extras-grid">
878
+ <div>
879
+ <h3 class="agent-section-subtitle">\u{1F4CF} Rules</h3>
880
+ <div class="agent-toggle-list">${ruleCards}</div>
881
+ </div>
882
+ <div>
883
+ <h3 class="agent-section-subtitle">\u{1F6E1}\uFE0F Guards</h3>
884
+ <div class="agent-toggle-list">${guardCards}</div>
885
+ </div>
886
+ <div>
887
+ <h3 class="agent-section-subtitle">\u26A1 Workflows</h3>
888
+ <div class="agent-toggle-list">${workflowCards}</div>
889
+ </div>
890
+ </div>
891
+
892
+ <h3 class="agent-section-subtitle">\u{1F9E0} Skills <span style="font-size:0.7rem;color:#94a3b8;font-weight:400">from skills.sh</span></h3>
893
+ <div class="agent-toggle-grid">
894
+ ${skillCards}
895
+ </div>
896
+
897
+ ${auditSection}
898
+
899
+ <div class="agent-command-box">
900
+ <div class="agent-command-header">
901
+ <span>\u{1F4A1} Command to generate selected items:</span>
902
+ <button class="agent-copy-btn" onclick="copyAgentCommand()">
903
+ <span id="copyIcon">\u{1F4CB}</span> Copy
904
+ </button>
905
+ </div>
906
+ <code id="agentCommandOutput" class="agent-command-code">${s.command}</code>
907
+ </div>
908
+ </div>
909
+
910
+ <style>
911
+ .agent-system-card { padding: 1.5rem; }
912
+ .agent-stack-banner { display: flex; gap: 0.5rem; flex-wrap: wrap; margin-bottom: 1.5rem; }
913
+ .stack-pill { background: #1e293b; border: 1px solid #334155; border-radius: 99px; padding: 0.4rem 1rem; font-size: 0.8rem; color: #94a3b8; white-space: pre-line; }
914
+ .agent-controls { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 1.5rem; }
915
+ .agent-ctrl-btn { background: #1e293b; border: 1px solid #334155; color: #e2e8f0; padding: 0.4rem 1rem; border-radius: 8px; font-size: 0.8rem; cursor: pointer; transition: all 0.2s; }
916
+ .agent-ctrl-btn:hover { background: #334155; }
917
+ .agent-count-label { color: #94a3b8; font-size: 0.85rem; margin-left: auto; }
918
+ #agentSelectedCount { color: #c084fc; font-weight: 700; }
919
+ .agent-section-subtitle { color: #e2e8f0; font-size: 1.05rem; font-weight: 700; margin: 1.25rem 0 0.75rem; }
920
+ .agent-toggle-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 0.75rem; }
921
+ .agent-toggle-card { cursor: pointer; transition: all 0.3s; }
922
+ .agent-toggle-card input { display: none; }
923
+ .agent-toggle-inner { display: flex; align-items: center; gap: 0.75rem; background: #1e293b; border: 2px solid #334155; border-radius: 12px; padding: 0.75rem 1rem; transition: all 0.3s; }
924
+ .agent-toggle-card input:checked + .agent-toggle-inner { border-color: #818cf8; background: #1e1b4b; }
925
+ .agent-toggle-icon { font-size: 1.3rem; flex-shrink: 0; }
926
+ .agent-toggle-info { flex: 1; min-width: 0; }
927
+ .agent-toggle-name { display: block; color: #e2e8f0; font-weight: 600; font-size: 0.85rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
928
+ .agent-toggle-role { display: block; font-size: 0.7rem; margin-top: 0.15rem; }
929
+ .agent-toggle-check { color: #334155; font-size: 1rem; flex-shrink: 0; transition: color 0.3s; }
930
+ .agent-toggle-card input:checked + .agent-toggle-inner .agent-toggle-check { color: #818cf8; }
931
+ .agent-toggle-card.mini .agent-toggle-inner { padding: 0.5rem 0.75rem; border-radius: 8px; }
932
+ .agent-extras-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; margin-top: 0.5rem; }
933
+ @media (max-width: 768px) { .agent-extras-grid { grid-template-columns: 1fr; } }
934
+ .agent-toggle-list { display: flex; flex-direction: column; gap: 0.5rem; }
935
+ .agent-audit-section { margin-top: 1.5rem; }
936
+ .agent-audit-grid { display: flex; flex-direction: column; gap: 0.5rem; }
937
+ .agent-audit-item { display: flex; gap: 0.75rem; align-items: flex-start; background: #1e293b; padding: 0.75rem 1rem; border-radius: 8px; }
938
+ .agent-audit-item.audit-missing { border-left: 3px solid #ef4444; }
939
+ .agent-audit-item.audit-improvement { border-left: 3px solid #fbbf24; }
940
+ .audit-icon { font-size: 1rem; flex-shrink: 0; margin-top: 2px; }
941
+ .audit-content { display: flex; flex-direction: column; gap: 0.25rem; }
942
+ .audit-desc { color: #e2e8f0; font-size: 0.85rem; }
943
+ .audit-suggestion { color: #94a3b8; font-size: 0.8rem; font-style: italic; }
944
+ .agent-command-box { margin-top: 1.5rem; background: #0f172a; border-radius: 12px; border: 1px solid #334155; overflow: hidden; }
945
+ .agent-command-header { display: flex; justify-content: space-between; align-items: center; padding: 0.75rem 1rem; background: #1e293b; font-size: 0.8rem; color: #94a3b8; }
946
+ .agent-copy-btn { background: #c084fc; color: #0f172a; border: none; border-radius: 6px; padding: 0.4rem 0.8rem; cursor: pointer; font-size: 0.75rem; font-weight: 600; transition: all 0.2s; }
947
+ .agent-copy-btn:hover { background: #a855f7; transform: scale(1.05); }
948
+ .agent-command-code { display: block; padding: 1rem; color: #c084fc; font-size: 0.85rem; word-break: break-all; font-family: 'Fira Code', monospace; }
949
+ </style>
950
+
951
+ <script>
952
+ (function() {
953
+ var basePath = ${JSON.stringify(s.command.replace('architect agents ', ''))};
954
+ var totalItems = ${totalItems};
955
+ function updateCommand() {
956
+ var checks = document.querySelectorAll('.agent-check');
957
+ var selected = { agents: [], rules: [], guards: [], workflows: [], skills: [] };
958
+ var count = 0;
959
+ checks.forEach(function(cb) { if (cb.checked) { selected[cb.dataset.type].push(cb.dataset.item); count++; } });
960
+ document.getElementById('agentSelectedCount').textContent = count;
961
+ var cmd;
962
+ if (count === totalItems) { cmd = 'architect agents ' + basePath; }
963
+ else if (count === 0) { cmd = '# No items selected'; }
964
+ else {
965
+ var parts = ['architect agents ' + basePath];
966
+ if (selected.agents.length > 0) parts.push('--agents ' + selected.agents.join(','));
967
+ if (selected.rules.length > 0) parts.push('--rules ' + selected.rules.join(','));
968
+ if (selected.guards.length > 0) parts.push('--guards ' + selected.guards.join(','));
969
+ if (selected.workflows.length > 0) parts.push('--workflows ' + selected.workflows.join(','));
970
+ if (selected.skills.length > 0) parts.push('&& ' + selected.skills.map(function(sk){ return 'npx skills add ' + sk; }).join(' && '));
971
+ cmd = parts.join(' ');
972
+ }
973
+ document.getElementById('agentCommandOutput').textContent = cmd;
974
+ }
975
+ document.querySelectorAll('.agent-check').forEach(function(cb) { cb.addEventListener('change', updateCommand); });
976
+ window.toggleAll = function(state) { document.querySelectorAll('.agent-check').forEach(function(cb) { cb.checked = state; }); updateCommand(); };
977
+ window.copyAgentCommand = function() { var cmd = document.getElementById('agentCommandOutput').textContent; navigator.clipboard.writeText(cmd).then(function() { var btn = document.getElementById('copyIcon'); btn.textContent = '\u2705'; setTimeout(function() { btn.textContent = '\ud83d\udccb'; }, 2000); }); };
978
+ })();
604
979
  <\/script>`;
605
980
  }
606
981
  getStyles() {
@@ -765,12 +1140,102 @@ function animateCounter(el, target) {
765
1140
  .footer a { color: #818cf8; text-decoration: none; }
766
1141
  .footer a:hover { text-decoration: underline; }
767
1142
 
1143
+ /* โ”€โ”€ Refactoring Plan โ”€โ”€ */
1144
+ .refactor-score { padding: 2rem; }
1145
+ .refactor-score-pair {
1146
+ display: flex; align-items: center; justify-content: center; gap: 1.5rem;
1147
+ margin-bottom: 2rem; flex-wrap: wrap;
1148
+ }
1149
+ .rscore-box { text-align: center; }
1150
+ .rscore-num { font-size: 3rem; font-weight: 900; line-height: 1; }
1151
+ .rscore-label { font-size: 0.8rem; color: #94a3b8; text-transform: uppercase; letter-spacing: 1px; }
1152
+ .rscore-improvement { font-size: 1.3rem; font-weight: 700; }
1153
+
1154
+ .refactor-legend { display: flex; gap: 1rem; margin-bottom: 0.5rem; }
1155
+ .rlegend-tag { font-size: 0.75rem; padding: 0.2rem 0.6rem; border-radius: 6px; }
1156
+ .rlegend-tag.rbefore { background: rgba(255,255,255,0.05); color: #94a3b8; }
1157
+ .rlegend-tag.rafter { background: rgba(129,140,248,0.2); color: #818cf8; }
1158
+
1159
+ .refactor-metric-name { width: 100px; font-size: 0.8rem; text-transform: uppercase; color: #94a3b8; font-weight: 600; }
1160
+ .refactor-metric-bars { flex: 1; position: relative; height: 30px; }
1161
+ .rbar-before, .rbar-after {
1162
+ position: absolute; left: 0; height: 14px; border-radius: 4px;
1163
+ display: flex; align-items: center; padding-left: 6px;
1164
+ font-size: 0.7rem; font-weight: 600;
1165
+ }
1166
+ .rbar-before { top: 0; }
1167
+ .rbar-after { top: 15px; }
1168
+ .refactor-metric-diff { width: 50px; text-align: right; font-weight: 700; font-size: 0.85rem; }
1169
+
1170
+ .refactor-stats-row {
1171
+ display: flex; gap: 1rem; margin-bottom: 1rem; flex-wrap: wrap;
1172
+ }
1173
+ .rstat {
1174
+ background: #1e293b; border: 1px solid #334155; border-radius: 99px;
1175
+ padding: 0.4rem 1rem; font-size: 0.85rem; color: #94a3b8; font-weight: 500;
1176
+ }
1177
+
1178
+ .priority-bar {
1179
+ display: flex; border-radius: 12px; overflow: hidden; height: 32px; margin-bottom: 2rem;
1180
+ }
1181
+ .prio-seg {
1182
+ display: flex; align-items: center; justify-content: center;
1183
+ font-size: 0.75rem; font-weight: 600;
1184
+ }
1185
+ .prio-critical { background: #ef444430; color: #ef4444; }
1186
+ .prio-high { background: #f59e0b30; color: #f59e0b; }
1187
+ .prio-medium { background: #3b82f630; color: #60a5fa; }
1188
+ .prio-low { background: #22c55e30; color: #22c55e; }
1189
+
1190
+ .refactor-roadmap { display: flex; flex-direction: column; gap: 1rem; }
1191
+ .rstep-card {
1192
+ background: #1e293b; border-radius: 16px; border: 1px solid #334155;
1193
+ padding: 1.5rem; transition: border-color 0.2s;
1194
+ }
1195
+ .rstep-card:hover { border-color: #818cf8; }
1196
+ .rstep-header { display: flex; gap: 1rem; margin-bottom: 1rem; }
1197
+ .rstep-number {
1198
+ width: 40px; height: 40px; border-radius: 50%;
1199
+ background: linear-gradient(135deg, #818cf8, #c084fc);
1200
+ display: flex; align-items: center; justify-content: center;
1201
+ font-weight: 800; font-size: 1rem; color: white; flex-shrink: 0;
1202
+ }
1203
+ .rstep-info { flex: 1; }
1204
+ .rstep-title-row { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; }
1205
+ .rstep-title-row h3 { font-size: 1.1rem; font-weight: 700; }
1206
+ .rstep-desc { color: #94a3b8; font-size: 0.9rem; margin-top: 0.3rem; }
1207
+ .tier-badge {
1208
+ background: #818cf815; color: #818cf8; border: 1px solid #818cf830;
1209
+ padding: 0.15rem 0.5rem; border-radius: 99px; font-size: 0.65rem; font-weight: 600;
1210
+ }
1211
+ .rstep-details { margin-top: 0.5rem; }
1212
+ .rstep-details summary { cursor: pointer; color: #818cf8; font-size: 0.85rem; font-weight: 500; }
1213
+ .rstep-rationale { color: #64748b; font-size: 0.85rem; margin-top: 0.3rem; font-style: italic; }
1214
+
1215
+ .rstep-ops { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid #334155; }
1216
+ .rstep-ops h4 { font-size: 0.85rem; color: #94a3b8; margin-bottom: 0.5rem; }
1217
+ .rop { display: flex; align-items: flex-start; gap: 0.5rem; margin-bottom: 0.5rem; flex-wrap: wrap; }
1218
+ .rop-icon { font-size: 0.9rem; }
1219
+ .rop-badge { padding: 0.1rem 0.4rem; border-radius: 6px; font-size: 0.65rem; font-weight: 700; }
1220
+ .rop-path { background: #0f172a; padding: 1px 6px; border-radius: 4px; font-size: 0.8rem; color: #c084fc; }
1221
+ .rop-arrow { color: #818cf8; font-weight: 700; }
1222
+ .rop-desc { width: 100%; color: #64748b; font-size: 0.8rem; padding-left: 1.8rem; }
1223
+
1224
+ .rstep-impact { margin-top: 0.5rem; }
1225
+ .rstep-impact h4 { font-size: 0.85rem; color: #94a3b8; margin-bottom: 0.3rem; }
1226
+ .rimpact-tags { display: flex; gap: 0.5rem; flex-wrap: wrap; }
1227
+ .rimpact-tag {
1228
+ background: #22c55e10; color: #22c55e; border: 1px solid #22c55e30;
1229
+ padding: 0.2rem 0.6rem; border-radius: 8px; font-size: 0.75rem; font-weight: 500;
1230
+ }
1231
+
768
1232
  /* โ”€โ”€ Responsive โ”€โ”€ */
769
1233
  @media (max-width: 768px) {
770
1234
  .score-hero { flex-direction: column; gap: 1.5rem; }
771
1235
  .score-breakdown { grid-template-columns: 1fr; }
772
1236
  .header h1 { font-size: 1.8rem; }
773
1237
  .container { padding: 1rem; }
1238
+ .refactor-score-pair { flex-direction: column; }
774
1239
  }
775
1240
 
776
1241
  /* โ”€โ”€ Print โ”€โ”€ */
@@ -1 +1 @@
1
- {"version":3,"file":"html-reporter.js","sourceRoot":"","sources":["../src/html-reporter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"html-reporter.js","sourceRoot":"","sources":["../src/html-reporter.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -5,10 +5,12 @@ import { ArchitectureScorer } from './scorer.js';
5
5
  import { DiagramGenerator } from './diagram.js';
6
6
  import { ReportGenerator } from './reporter.js';
7
7
  import { HtmlReportGenerator } from './html-reporter.js';
8
+ import { AgentGenerator, AgentSuggestion } from './agent-generator.js';
8
9
  import { ConfigLoader } from './config.js';
9
- import { AnalysisReport } from './types.js';
10
+ import { AnalysisReport, RefactoringPlan } from './types.js';
10
11
  export interface ArchitectCommand {
11
12
  analyze: (path: string) => Promise<AnalysisReport>;
13
+ refactor: (report: AnalysisReport, projectPath: string) => RefactoringPlan;
12
14
  diagram: (path: string) => Promise<string>;
13
15
  score: (path: string) => Promise<{
14
16
  overall: number;
@@ -26,6 +28,28 @@ export interface ArchitectCommand {
26
28
  }
27
29
  declare class Architect implements ArchitectCommand {
28
30
  analyze(projectPath: string): Promise<AnalysisReport>;
31
+ /**
32
+ * Generate a refactoring plan from an analysis report.
33
+ * Uses Tier 1 (rule engine) and Tier 2 (AST) transforms.
34
+ */
35
+ refactor(report: AnalysisReport, projectPath: string): RefactoringPlan;
36
+ /**
37
+ * Generate or audit .agent/ directory for a project.
38
+ */
39
+ agents(report: AnalysisReport, plan: RefactoringPlan, projectPath: string, outputDir?: string): {
40
+ generated: string[];
41
+ audit: Array<{
42
+ type: string;
43
+ category: string;
44
+ file: string;
45
+ description: string;
46
+ suggestion?: string;
47
+ }>;
48
+ };
49
+ /**
50
+ * Suggest agents without writing files โ€” dry-run for unified report.
51
+ */
52
+ suggestAgents(report: AnalysisReport, plan: RefactoringPlan, projectPath: string): AgentSuggestion;
29
53
  private relativizePaths;
30
54
  diagram(projectPath: string): Promise<string>;
31
55
  score(projectPath: string): Promise<{
@@ -44,5 +68,5 @@ declare class Architect implements ArchitectCommand {
44
68
  private generateSuggestions;
45
69
  }
46
70
  export declare const architect: Architect;
47
- export { ProjectScanner, ArchitectureAnalyzer, AntiPatternDetector, ArchitectureScorer, DiagramGenerator, ReportGenerator, HtmlReportGenerator, ConfigLoader, };
71
+ export { ProjectScanner, ArchitectureAnalyzer, AntiPatternDetector, ArchitectureScorer, DiagramGenerator, ReportGenerator, HtmlReportGenerator, AgentGenerator, ConfigLoader, };
48
72
  //# sourceMappingURL=index.d.ts.map