@girardelli/architect 4.0.0 → 6.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.
- package/.agent/INDEX.md +197 -0
- package/.agent/agents/AGENT-ORCHESTRATOR.md +408 -0
- package/{__test_agent_output__ → .agent}/agents/QA-TEST-ENGINEER.md +31 -17
- package/{__test_agent_output__ → .agent}/agents/SECURITY-AUDITOR.md +9 -28
- package/.agent/agents/TECH-DEBT-CONTROLLER.md +154 -0
- package/.agent/agents/TYPESCRIPT-BACKEND-DEVELOPER.md +484 -0
- package/{__test_agent_output__ → .agent}/guards/CODE-REVIEW-CHECKLIST.md +7 -8
- package/{__test_agent_output__ → .agent}/guards/PREFLIGHT.md +3 -3
- package/.agent/guards/QUALITY-GATES.md +212 -0
- package/.agent/hooks/post-analysis.sh +64 -0
- package/.agent/hooks/pre-commit.sh +68 -0
- package/.agent/hooks/pre-push.sh +59 -0
- package/{__test_agent_output__ → .agent}/rules/00-general.md +8 -8
- package/{__test_agent_output__ → .agent}/rules/01-architecture.md +18 -27
- package/{__test_agent_output__ → .agent}/rules/02-security.md +34 -48
- package/.agent/skills/ARCHITECT-INTEGRATION.md +103 -0
- package/.agent/skills/CI-PIPELINE.md +113 -0
- package/.agent/skills/PROJECT-PATTERNS.md +62 -0
- package/{__test_agent_output__ → .agent}/templates/ADR.md +3 -3
- package/{__test_agent_output__ → .agent}/templates/BDD.md +13 -14
- package/{__test_agent_output__ → .agent}/templates/C4.md +10 -11
- package/{__test_agent_output__ → .agent}/templates/TDD.md +4 -4
- package/{__test_agent_output__ → .agent}/templates/THREAT-MODEL.md +5 -24
- package/{__test_agent_output__ → .agent}/workflows/fix-bug.md +2 -2
- package/{__test_agent_output__ → .agent}/workflows/new-feature.md +3 -3
- package/{__test_agent_output__ → .agent}/workflows/review.md +2 -2
- package/.github/workflows/ci.yml +43 -0
- package/.github/workflows/publish.yml +40 -0
- package/README.md +6 -2
- package/architect-report--girardelli-architect.json +5332 -0
- package/architect-run.sh +6 -10
- package/debug.js +6 -0
- package/dist/adapters/cli.d.ts +14 -0
- package/dist/adapters/cli.d.ts.map +1 -0
- package/dist/{cli.js → adapters/cli.js} +11 -8
- package/dist/adapters/cli.js.map +1 -0
- package/dist/adapters/html-reporter/scripts.d.ts +6 -0
- package/dist/adapters/html-reporter/scripts.d.ts.map +1 -0
- package/dist/adapters/html-reporter/scripts.js +400 -0
- package/dist/adapters/html-reporter/scripts.js.map +1 -0
- package/dist/adapters/html-reporter/sections/agents.d.ts +3 -0
- package/dist/adapters/html-reporter/sections/agents.d.ts.map +1 -0
- package/dist/adapters/html-reporter/sections/agents.js +259 -0
- package/dist/adapters/html-reporter/sections/agents.js.map +1 -0
- package/dist/adapters/html-reporter/sections/anti-patterns.d.ts +14 -0
- package/dist/adapters/html-reporter/sections/anti-patterns.d.ts.map +1 -0
- package/dist/adapters/html-reporter/sections/anti-patterns.js +64 -0
- package/dist/adapters/html-reporter/sections/anti-patterns.js.map +1 -0
- package/dist/adapters/html-reporter/sections/header.d.ts +4 -0
- package/dist/adapters/html-reporter/sections/header.d.ts.map +1 -0
- package/dist/adapters/html-reporter/sections/header.js +30 -0
- package/dist/adapters/html-reporter/sections/header.js.map +1 -0
- package/dist/adapters/html-reporter/sections/layers.d.ts +10 -0
- package/dist/adapters/html-reporter/sections/layers.d.ts.map +1 -0
- package/dist/adapters/html-reporter/sections/layers.js +143 -0
- package/dist/adapters/html-reporter/sections/layers.js.map +1 -0
- package/dist/adapters/html-reporter/sections/overview.d.ts +3 -0
- package/dist/adapters/html-reporter/sections/overview.d.ts.map +1 -0
- package/dist/adapters/html-reporter/sections/overview.js +58 -0
- package/dist/adapters/html-reporter/sections/overview.js.map +1 -0
- package/dist/adapters/html-reporter/sections/refactoring-plan.d.ts +4 -0
- package/dist/adapters/html-reporter/sections/refactoring-plan.d.ts.map +1 -0
- package/dist/adapters/html-reporter/sections/refactoring-plan.js +151 -0
- package/dist/adapters/html-reporter/sections/refactoring-plan.js.map +1 -0
- package/dist/adapters/html-reporter/sections/score.d.ts +8 -0
- package/dist/adapters/html-reporter/sections/score.d.ts.map +1 -0
- package/dist/adapters/html-reporter/sections/score.js +69 -0
- package/dist/adapters/html-reporter/sections/score.js.map +1 -0
- package/dist/adapters/html-reporter/sections/suggestions.d.ts +8 -0
- package/dist/adapters/html-reporter/sections/suggestions.d.ts.map +1 -0
- package/dist/adapters/html-reporter/sections/suggestions.js +34 -0
- package/dist/adapters/html-reporter/sections/suggestions.js.map +1 -0
- package/dist/adapters/html-reporter/styles.d.ts +2 -0
- package/dist/adapters/html-reporter/styles.d.ts.map +1 -0
- package/dist/adapters/html-reporter/styles.js +526 -0
- package/dist/adapters/html-reporter/styles.js.map +1 -0
- package/dist/adapters/html-reporter/utils.d.ts +27 -0
- package/dist/adapters/html-reporter/utils.d.ts.map +1 -0
- package/dist/adapters/html-reporter/utils.js +82 -0
- package/dist/adapters/html-reporter/utils.js.map +1 -0
- package/dist/adapters/html-reporter/utils_adapters.d.ts +21 -0
- package/dist/adapters/html-reporter/utils_adapters.d.ts.map +1 -0
- package/dist/adapters/html-reporter/utils_adapters.js +32 -0
- package/dist/adapters/html-reporter/utils_adapters.js.map +1 -0
- package/dist/adapters/html-reporter/utils_sections.d.ts +8 -0
- package/dist/adapters/html-reporter/utils_sections.d.ts.map +1 -0
- package/dist/adapters/html-reporter/utils_sections.js +58 -0
- package/dist/adapters/html-reporter/utils_sections.js.map +1 -0
- package/dist/adapters/html-reporter.d.ts +9 -0
- package/dist/adapters/html-reporter.d.ts.map +1 -0
- package/dist/adapters/html-reporter.js +87 -0
- package/dist/adapters/html-reporter.js.map +1 -0
- package/dist/adapters/html-reporter_deps.d.ts +15 -0
- package/dist/adapters/html-reporter_deps.d.ts.map +1 -0
- package/dist/adapters/html-reporter_deps.js +12 -0
- package/dist/adapters/html-reporter_deps.js.map +1 -0
- package/dist/adapters/refactor-reporter.d.ts +20 -0
- package/dist/adapters/refactor-reporter.d.ts.map +1 -0
- package/dist/adapters/refactor-reporter.js +389 -0
- package/dist/adapters/refactor-reporter.js.map +1 -0
- package/dist/adapters/reporter.d.ts +13 -0
- package/dist/adapters/reporter.d.ts.map +1 -0
- package/dist/adapters/reporter.js +135 -0
- package/dist/adapters/reporter.js.map +1 -0
- package/dist/agent-generator/context-enricher.d.ts +4 -47
- package/dist/agent-generator/context-enricher.d.ts.map +1 -1
- package/dist/agent-generator/context-enricher.js +19 -547
- package/dist/agent-generator/context-enricher.js.map +1 -1
- package/dist/agent-generator/detectors/base-detector.d.ts +9 -0
- package/dist/agent-generator/detectors/base-detector.d.ts.map +1 -0
- package/dist/agent-generator/detectors/base-detector.js +12 -0
- package/dist/agent-generator/detectors/base-detector.js.map +1 -0
- package/dist/agent-generator/detectors/dart-detector.d.ts +6 -0
- package/dist/agent-generator/detectors/dart-detector.d.ts.map +1 -0
- package/dist/agent-generator/detectors/dart-detector.js +15 -0
- package/dist/agent-generator/detectors/dart-detector.js.map +1 -0
- package/dist/agent-generator/detectors/framework-registry.d.ts +6 -0
- package/dist/agent-generator/detectors/framework-registry.d.ts.map +1 -0
- package/dist/agent-generator/detectors/framework-registry.js +81 -0
- package/dist/agent-generator/detectors/framework-registry.js.map +1 -0
- package/dist/agent-generator/detectors/go-detector.d.ts +6 -0
- package/dist/agent-generator/detectors/go-detector.d.ts.map +1 -0
- package/dist/agent-generator/detectors/go-detector.js +25 -0
- package/dist/agent-generator/detectors/go-detector.js.map +1 -0
- package/dist/agent-generator/detectors/java-detector.d.ts +6 -0
- package/dist/agent-generator/detectors/java-detector.d.ts.map +1 -0
- package/dist/agent-generator/detectors/java-detector.js +44 -0
- package/dist/agent-generator/detectors/java-detector.js.map +1 -0
- package/dist/agent-generator/detectors/node-detector.d.ts +6 -0
- package/dist/agent-generator/detectors/node-detector.d.ts.map +1 -0
- package/dist/agent-generator/detectors/node-detector.js +28 -0
- package/dist/agent-generator/detectors/node-detector.js.map +1 -0
- package/dist/agent-generator/detectors/php-detector.d.ts +6 -0
- package/dist/agent-generator/detectors/php-detector.d.ts.map +1 -0
- package/dist/agent-generator/detectors/php-detector.js +28 -0
- package/dist/agent-generator/detectors/php-detector.js.map +1 -0
- package/dist/agent-generator/detectors/python-detector.d.ts +8 -0
- package/dist/agent-generator/detectors/python-detector.d.ts.map +1 -0
- package/dist/agent-generator/detectors/python-detector.js +116 -0
- package/dist/agent-generator/detectors/python-detector.js.map +1 -0
- package/dist/agent-generator/detectors/ruby-detector.d.ts +6 -0
- package/dist/agent-generator/detectors/ruby-detector.d.ts.map +1 -0
- package/dist/agent-generator/detectors/ruby-detector.js +22 -0
- package/dist/agent-generator/detectors/ruby-detector.js.map +1 -0
- package/dist/agent-generator/detectors/rust-detector.d.ts +6 -0
- package/dist/agent-generator/detectors/rust-detector.d.ts.map +1 -0
- package/dist/agent-generator/detectors/rust-detector.js +18 -0
- package/dist/agent-generator/detectors/rust-detector.js.map +1 -0
- package/dist/agent-generator/detectors/structure-detector.d.ts +5 -0
- package/dist/agent-generator/detectors/structure-detector.d.ts.map +1 -0
- package/dist/agent-generator/detectors/structure-detector.js +35 -0
- package/dist/agent-generator/detectors/structure-detector.js.map +1 -0
- package/dist/agent-generator/detectors/toolchain-detector.d.ts +6 -0
- package/dist/agent-generator/detectors/toolchain-detector.d.ts.map +1 -0
- package/dist/agent-generator/detectors/toolchain-detector.js +163 -0
- package/dist/agent-generator/detectors/toolchain-detector.js.map +1 -0
- package/dist/agent-generator/domain-inferrer.d.ts.map +1 -1
- package/dist/agent-generator/domain-inferrer.js +10 -0
- package/dist/agent-generator/domain-inferrer.js.map +1 -1
- package/dist/agent-generator/engines/audit-engine.d.ts +7 -0
- package/dist/agent-generator/engines/audit-engine.d.ts.map +1 -0
- package/dist/agent-generator/engines/audit-engine.js +84 -0
- package/dist/agent-generator/engines/audit-engine.js.map +1 -0
- package/dist/agent-generator/engines/context-builder.d.ts +11 -0
- package/dist/agent-generator/engines/context-builder.d.ts.map +1 -0
- package/dist/agent-generator/engines/context-builder.js +86 -0
- package/dist/agent-generator/engines/context-builder.js.map +1 -0
- package/dist/agent-generator/engines/generation-engine.d.ts +9 -0
- package/dist/agent-generator/engines/generation-engine.d.ts.map +1 -0
- package/dist/agent-generator/engines/generation-engine.js +177 -0
- package/dist/agent-generator/engines/generation-engine.js.map +1 -0
- package/dist/agent-generator/engines/suggestion-engine.d.ts +15 -0
- package/dist/agent-generator/engines/suggestion-engine.d.ts.map +1 -0
- package/dist/agent-generator/engines/suggestion-engine.js +176 -0
- package/dist/agent-generator/engines/suggestion-engine.js.map +1 -0
- package/dist/agent-generator/enrichers/analysis-helpers.d.ts +9 -0
- package/dist/agent-generator/enrichers/analysis-helpers.d.ts.map +1 -0
- package/dist/agent-generator/enrichers/analysis-helpers.js +51 -0
- package/dist/agent-generator/enrichers/analysis-helpers.js.map +1 -0
- package/dist/agent-generator/enrichers/description-generator.d.ts +5 -0
- package/dist/agent-generator/enrichers/description-generator.d.ts.map +1 -0
- package/dist/agent-generator/enrichers/description-generator.js +81 -0
- package/dist/agent-generator/enrichers/description-generator.js.map +1 -0
- package/dist/agent-generator/enrichers/endpoint-extractor.d.ts +8 -0
- package/dist/agent-generator/enrichers/endpoint-extractor.d.ts.map +1 -0
- package/dist/agent-generator/enrichers/endpoint-extractor.js +91 -0
- package/dist/agent-generator/enrichers/endpoint-extractor.js.map +1 -0
- package/dist/agent-generator/enrichers/layer-classifier.d.ts +13 -0
- package/dist/agent-generator/enrichers/layer-classifier.d.ts.map +1 -0
- package/dist/agent-generator/enrichers/layer-classifier.js +150 -0
- package/dist/agent-generator/enrichers/layer-classifier.js.map +1 -0
- package/dist/agent-generator/enrichers/module-extractor.d.ts +11 -0
- package/dist/agent-generator/enrichers/module-extractor.d.ts.map +1 -0
- package/dist/agent-generator/enrichers/module-extractor.js +174 -0
- package/dist/agent-generator/enrichers/module-extractor.js.map +1 -0
- package/dist/agent-generator/framework-detector.d.ts +4 -26
- package/dist/agent-generator/framework-detector.d.ts.map +1 -1
- package/dist/agent-generator/framework-detector.js +31 -584
- package/dist/agent-generator/framework-detector.js.map +1 -1
- package/dist/agent-generator/index.d.ts +8 -19
- package/dist/agent-generator/index.d.ts.map +1 -1
- package/dist/agent-generator/index.js +19 -457
- package/dist/agent-generator/index.js.map +1 -1
- package/dist/agent-generator/stack-detector.d.ts +3 -1
- package/dist/agent-generator/stack-detector.d.ts.map +1 -1
- package/dist/agent-generator/stack-detector.js +29 -33
- package/dist/agent-generator/stack-detector.js.map +1 -1
- package/dist/agent-generator/templates/core/agents.d.ts.map +1 -1
- package/dist/agent-generator/templates/core/agents.js +5 -1
- package/dist/agent-generator/templates/core/agents.js.map +1 -1
- package/dist/agent-generator/templates/core/hooks-generator.d.ts +21 -0
- package/dist/agent-generator/templates/core/hooks-generator.d.ts.map +1 -0
- package/dist/agent-generator/templates/core/hooks-generator.js +233 -0
- package/dist/agent-generator/templates/core/hooks-generator.js.map +1 -0
- package/dist/agent-generator/templates/core/skills-generator.d.ts +13 -0
- package/dist/agent-generator/templates/core/skills-generator.d.ts.map +1 -1
- package/dist/agent-generator/templates/core/skills-generator.js +339 -0
- package/dist/agent-generator/templates/core/skills-generator.js.map +1 -1
- package/dist/agent-generator/templates/helpers/base-helpers.d.ts +11 -0
- package/dist/agent-generator/templates/helpers/base-helpers.d.ts.map +1 -0
- package/dist/agent-generator/templates/helpers/base-helpers.js +20 -0
- package/dist/agent-generator/templates/helpers/base-helpers.js.map +1 -0
- package/dist/agent-generator/templates/helpers/cross-ref-helpers.d.ts +3 -0
- package/dist/agent-generator/templates/helpers/cross-ref-helpers.d.ts.map +1 -0
- package/dist/agent-generator/templates/helpers/cross-ref-helpers.js +77 -0
- package/dist/agent-generator/templates/helpers/cross-ref-helpers.js.map +1 -0
- package/dist/agent-generator/templates/helpers/security-helpers.d.ts +3 -0
- package/dist/agent-generator/templates/helpers/security-helpers.d.ts.map +1 -0
- package/dist/agent-generator/templates/helpers/security-helpers.js +182 -0
- package/dist/agent-generator/templates/helpers/security-helpers.js.map +1 -0
- package/dist/agent-generator/templates/helpers/stack-helpers.d.ts +5 -0
- package/dist/agent-generator/templates/helpers/stack-helpers.d.ts.map +1 -0
- package/dist/agent-generator/templates/helpers/stack-helpers.js +69 -0
- package/dist/agent-generator/templates/helpers/stack-helpers.js.map +1 -0
- package/dist/agent-generator/templates/helpers/structure-helpers.d.ts +3 -0
- package/dist/agent-generator/templates/helpers/structure-helpers.d.ts.map +1 -0
- package/dist/agent-generator/templates/helpers/structure-helpers.js +275 -0
- package/dist/agent-generator/templates/helpers/structure-helpers.js.map +1 -0
- package/dist/agent-generator/templates/helpers/summary-helpers.d.ts +7 -0
- package/dist/agent-generator/templates/helpers/summary-helpers.d.ts.map +1 -0
- package/dist/agent-generator/templates/helpers/summary-helpers.js +56 -0
- package/dist/agent-generator/templates/helpers/summary-helpers.js.map +1 -0
- package/dist/agent-generator/templates/template-helpers.d.ts +9 -72
- package/dist/agent-generator/templates/template-helpers.d.ts.map +1 -1
- package/dist/agent-generator/templates/template-helpers.js +9 -723
- package/dist/agent-generator/templates/template-helpers.js.map +1 -1
- package/dist/analyzer.d.ts.map +1 -1
- package/dist/analyzer.js +11 -1
- package/dist/analyzer.js.map +1 -1
- package/dist/analyzers/git-history.d.ts +1 -1
- package/dist/analyzers/git-history.d.ts.map +1 -1
- package/dist/analyzers/git-history.js +16 -10
- package/dist/analyzers/git-history.js.map +1 -1
- package/dist/anti-patterns.d.ts +7 -0
- package/dist/anti-patterns.d.ts.map +1 -1
- package/dist/anti-patterns.js +25 -6
- package/dist/anti-patterns.js.map +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +6 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +48 -11
- package/dist/config.js.map +1 -1
- package/dist/core/agent-generator/context-enricher.d.ts +18 -0
- package/dist/core/agent-generator/context-enricher.d.ts.map +1 -0
- package/dist/core/agent-generator/context-enricher.js +53 -0
- package/dist/core/agent-generator/context-enricher.js.map +1 -0
- package/dist/core/agent-generator/detectors/base-detector.d.ts +9 -0
- package/dist/core/agent-generator/detectors/base-detector.d.ts.map +1 -0
- package/dist/core/agent-generator/detectors/base-detector.js +12 -0
- package/dist/core/agent-generator/detectors/base-detector.js.map +1 -0
- package/dist/core/agent-generator/detectors/dart-detector.d.ts +6 -0
- package/dist/core/agent-generator/detectors/dart-detector.d.ts.map +1 -0
- package/dist/core/agent-generator/detectors/dart-detector.js +15 -0
- package/dist/core/agent-generator/detectors/dart-detector.js.map +1 -0
- package/dist/core/agent-generator/detectors/framework-registry.d.ts +6 -0
- package/dist/core/agent-generator/detectors/framework-registry.d.ts.map +1 -0
- package/dist/core/agent-generator/detectors/framework-registry.js +81 -0
- package/dist/core/agent-generator/detectors/framework-registry.js.map +1 -0
- package/dist/core/agent-generator/detectors/go-detector.d.ts +6 -0
- package/dist/core/agent-generator/detectors/go-detector.d.ts.map +1 -0
- package/dist/core/agent-generator/detectors/go-detector.js +25 -0
- package/dist/core/agent-generator/detectors/go-detector.js.map +1 -0
- package/dist/core/agent-generator/detectors/java-detector.d.ts +6 -0
- package/dist/core/agent-generator/detectors/java-detector.d.ts.map +1 -0
- package/dist/core/agent-generator/detectors/java-detector.js +44 -0
- package/dist/core/agent-generator/detectors/java-detector.js.map +1 -0
- package/dist/core/agent-generator/detectors/node-detector.d.ts +6 -0
- package/dist/core/agent-generator/detectors/node-detector.d.ts.map +1 -0
- package/dist/core/agent-generator/detectors/node-detector.js +28 -0
- package/dist/core/agent-generator/detectors/node-detector.js.map +1 -0
- package/dist/core/agent-generator/detectors/php-detector.d.ts +6 -0
- package/dist/core/agent-generator/detectors/php-detector.d.ts.map +1 -0
- package/dist/core/agent-generator/detectors/php-detector.js +28 -0
- package/dist/core/agent-generator/detectors/php-detector.js.map +1 -0
- package/dist/core/agent-generator/detectors/python-detector.d.ts +8 -0
- package/dist/core/agent-generator/detectors/python-detector.d.ts.map +1 -0
- package/dist/core/agent-generator/detectors/python-detector.js +116 -0
- package/dist/core/agent-generator/detectors/python-detector.js.map +1 -0
- package/dist/core/agent-generator/detectors/ruby-detector.d.ts +6 -0
- package/dist/core/agent-generator/detectors/ruby-detector.d.ts.map +1 -0
- package/dist/core/agent-generator/detectors/ruby-detector.js +22 -0
- package/dist/core/agent-generator/detectors/ruby-detector.js.map +1 -0
- package/dist/core/agent-generator/detectors/rust-detector.d.ts +6 -0
- package/dist/core/agent-generator/detectors/rust-detector.d.ts.map +1 -0
- package/dist/core/agent-generator/detectors/rust-detector.js +18 -0
- package/dist/core/agent-generator/detectors/rust-detector.js.map +1 -0
- package/dist/core/agent-generator/detectors/structure-detector.d.ts +5 -0
- package/dist/core/agent-generator/detectors/structure-detector.d.ts.map +1 -0
- package/dist/core/agent-generator/detectors/structure-detector.js +35 -0
- package/dist/core/agent-generator/detectors/structure-detector.js.map +1 -0
- package/dist/core/agent-generator/detectors/toolchain-detector.d.ts +6 -0
- package/dist/core/agent-generator/detectors/toolchain-detector.d.ts.map +1 -0
- package/dist/core/agent-generator/detectors/toolchain-detector.js +163 -0
- package/dist/core/agent-generator/detectors/toolchain-detector.js.map +1 -0
- package/dist/core/agent-generator/domain-inferrer.d.ts +52 -0
- package/dist/core/agent-generator/domain-inferrer.d.ts.map +1 -0
- package/dist/core/agent-generator/domain-inferrer.js +585 -0
- package/dist/core/agent-generator/domain-inferrer.js.map +1 -0
- package/dist/core/agent-generator/engines/audit-engine.d.ts +9 -0
- package/dist/core/agent-generator/engines/audit-engine.d.ts.map +1 -0
- package/dist/core/agent-generator/engines/audit-engine.js +84 -0
- package/dist/core/agent-generator/engines/audit-engine.js.map +1 -0
- package/dist/core/agent-generator/engines/context-builder.d.ts +13 -0
- package/dist/core/agent-generator/engines/context-builder.d.ts.map +1 -0
- package/dist/core/agent-generator/engines/context-builder.js +86 -0
- package/dist/core/agent-generator/engines/context-builder.js.map +1 -0
- package/dist/core/agent-generator/engines/generation-engine.d.ts +8 -0
- package/dist/core/agent-generator/engines/generation-engine.d.ts.map +1 -0
- package/dist/core/agent-generator/engines/generation-engine.js +162 -0
- package/dist/core/agent-generator/engines/generation-engine.js.map +1 -0
- package/dist/core/agent-generator/engines/generation-engine_deps.d.ts +22 -0
- package/dist/core/agent-generator/engines/generation-engine_deps.d.ts.map +1 -0
- package/dist/core/agent-generator/engines/generation-engine_deps.js +17 -0
- package/dist/core/agent-generator/engines/generation-engine_deps.js.map +1 -0
- package/dist/core/agent-generator/engines/suggestion-engine.d.ts +14 -0
- package/dist/core/agent-generator/engines/suggestion-engine.d.ts.map +1 -0
- package/dist/core/agent-generator/engines/suggestion-engine.js +173 -0
- package/dist/core/agent-generator/engines/suggestion-engine.js.map +1 -0
- package/dist/core/agent-generator/engines/suggestion-engine_deps.d.ts +9 -0
- package/dist/core/agent-generator/engines/suggestion-engine_deps.d.ts.map +1 -0
- package/dist/core/agent-generator/engines/suggestion-engine_deps.js +5 -0
- package/dist/core/agent-generator/engines/suggestion-engine_deps.js.map +1 -0
- package/dist/core/agent-generator/enrichers/analysis-helpers.d.ts +10 -0
- package/dist/core/agent-generator/enrichers/analysis-helpers.d.ts.map +1 -0
- package/dist/core/agent-generator/enrichers/analysis-helpers.js +51 -0
- package/dist/core/agent-generator/enrichers/analysis-helpers.js.map +1 -0
- package/dist/core/agent-generator/enrichers/description-generator.d.ts +5 -0
- package/dist/core/agent-generator/enrichers/description-generator.d.ts.map +1 -0
- package/dist/core/agent-generator/enrichers/description-generator.js +81 -0
- package/dist/core/agent-generator/enrichers/description-generator.js.map +1 -0
- package/dist/core/agent-generator/enrichers/endpoint-extractor.d.ts +8 -0
- package/dist/core/agent-generator/enrichers/endpoint-extractor.d.ts.map +1 -0
- package/dist/core/agent-generator/enrichers/endpoint-extractor.js +91 -0
- package/dist/core/agent-generator/enrichers/endpoint-extractor.js.map +1 -0
- package/dist/core/agent-generator/enrichers/layer-classifier.d.ts +13 -0
- package/dist/core/agent-generator/enrichers/layer-classifier.d.ts.map +1 -0
- package/dist/core/agent-generator/enrichers/layer-classifier.js +150 -0
- package/dist/core/agent-generator/enrichers/layer-classifier.js.map +1 -0
- package/dist/core/agent-generator/enrichers/module-extractor.d.ts +11 -0
- package/dist/core/agent-generator/enrichers/module-extractor.d.ts.map +1 -0
- package/dist/core/agent-generator/enrichers/module-extractor.js +174 -0
- package/dist/core/agent-generator/enrichers/module-extractor.js.map +1 -0
- package/dist/core/agent-generator/framework-detector.d.ts +18 -0
- package/dist/core/agent-generator/framework-detector.d.ts.map +1 -0
- package/dist/core/agent-generator/framework-detector.js +58 -0
- package/dist/core/agent-generator/framework-detector.js.map +1 -0
- package/dist/core/agent-generator/index.d.ts +26 -0
- package/dist/core/agent-generator/index.d.ts.map +1 -0
- package/dist/core/agent-generator/index.js +39 -0
- package/dist/core/agent-generator/index.js.map +1 -0
- package/dist/core/agent-generator/stack-detector.d.ts +14 -0
- package/dist/core/agent-generator/stack-detector.d.ts.map +1 -0
- package/dist/core/agent-generator/stack-detector.js +124 -0
- package/dist/core/agent-generator/stack-detector.js.map +1 -0
- package/dist/core/agent-generator/templates/core/agents.d.ts +17 -0
- package/dist/core/agent-generator/templates/core/agents.d.ts.map +1 -0
- package/dist/core/agent-generator/templates/core/agents.js +1256 -0
- package/dist/core/agent-generator/templates/core/agents.js.map +1 -0
- package/dist/core/agent-generator/templates/core/architecture-rules.d.ts +7 -0
- package/dist/core/agent-generator/templates/core/architecture-rules.d.ts.map +1 -0
- package/dist/core/agent-generator/templates/core/architecture-rules.js +274 -0
- package/dist/core/agent-generator/templates/core/architecture-rules.js.map +1 -0
- package/dist/core/agent-generator/templates/core/general-rules.d.ts +8 -0
- package/dist/core/agent-generator/templates/core/general-rules.d.ts.map +1 -0
- package/dist/core/agent-generator/templates/core/general-rules.js +301 -0
- package/dist/core/agent-generator/templates/core/general-rules.js.map +1 -0
- package/dist/core/agent-generator/templates/core/hooks-generator.d.ts +21 -0
- package/dist/core/agent-generator/templates/core/hooks-generator.d.ts.map +1 -0
- package/dist/core/agent-generator/templates/core/hooks-generator.js +233 -0
- package/dist/core/agent-generator/templates/core/hooks-generator.js.map +1 -0
- package/dist/core/agent-generator/templates/core/index-md.d.ts +7 -0
- package/dist/core/agent-generator/templates/core/index-md.d.ts.map +1 -0
- package/dist/core/agent-generator/templates/core/index-md.js +246 -0
- package/dist/core/agent-generator/templates/core/index-md.js.map +1 -0
- package/dist/core/agent-generator/templates/core/orchestrator.d.ts +8 -0
- package/dist/core/agent-generator/templates/core/orchestrator.d.ts.map +1 -0
- package/dist/core/agent-generator/templates/core/orchestrator.js +422 -0
- package/dist/core/agent-generator/templates/core/orchestrator.js.map +1 -0
- package/dist/core/agent-generator/templates/core/preflight.d.ts +8 -0
- package/dist/core/agent-generator/templates/core/preflight.d.ts.map +1 -0
- package/dist/core/agent-generator/templates/core/preflight.js +213 -0
- package/dist/core/agent-generator/templates/core/preflight.js.map +1 -0
- package/dist/core/agent-generator/templates/core/quality-gates.d.ts +11 -0
- package/dist/core/agent-generator/templates/core/quality-gates.d.ts.map +1 -0
- package/dist/core/agent-generator/templates/core/quality-gates.js +254 -0
- package/dist/core/agent-generator/templates/core/quality-gates.js.map +1 -0
- package/dist/core/agent-generator/templates/core/security-rules.d.ts +7 -0
- package/dist/core/agent-generator/templates/core/security-rules.d.ts.map +1 -0
- package/dist/core/agent-generator/templates/core/security-rules.js +528 -0
- package/dist/core/agent-generator/templates/core/security-rules.js.map +1 -0
- package/dist/core/agent-generator/templates/core/skills-generator.d.ts +19 -0
- package/dist/core/agent-generator/templates/core/skills-generator.d.ts.map +1 -0
- package/dist/core/agent-generator/templates/core/skills-generator.js +546 -0
- package/dist/core/agent-generator/templates/core/skills-generator.js.map +1 -0
- package/dist/core/agent-generator/templates/core/workflow-fix-bug.d.ts +7 -0
- package/dist/core/agent-generator/templates/core/workflow-fix-bug.d.ts.map +1 -0
- package/dist/core/agent-generator/templates/core/workflow-fix-bug.js +237 -0
- package/dist/core/agent-generator/templates/core/workflow-fix-bug.js.map +1 -0
- package/dist/core/agent-generator/templates/core/workflow-new-feature.d.ts +8 -0
- package/dist/core/agent-generator/templates/core/workflow-new-feature.d.ts.map +1 -0
- package/dist/core/agent-generator/templates/core/workflow-new-feature.js +321 -0
- package/dist/core/agent-generator/templates/core/workflow-new-feature.js.map +1 -0
- package/dist/core/agent-generator/templates/core/workflow-review.d.ts +7 -0
- package/dist/core/agent-generator/templates/core/workflow-review.d.ts.map +1 -0
- package/dist/core/agent-generator/templates/core/workflow-review.js +104 -0
- package/dist/core/agent-generator/templates/core/workflow-review.js.map +1 -0
- package/dist/core/agent-generator/templates/domain/index.d.ts +22 -0
- package/dist/core/agent-generator/templates/domain/index.d.ts.map +1 -0
- package/dist/core/agent-generator/templates/domain/index.js +1176 -0
- package/dist/core/agent-generator/templates/domain/index.js.map +1 -0
- package/dist/core/agent-generator/templates/helpers/base-helpers.d.ts +11 -0
- package/dist/core/agent-generator/templates/helpers/base-helpers.d.ts.map +1 -0
- package/dist/core/agent-generator/templates/helpers/base-helpers.js +20 -0
- package/dist/core/agent-generator/templates/helpers/base-helpers.js.map +1 -0
- package/dist/core/agent-generator/templates/helpers/cross-ref-helpers.d.ts +3 -0
- package/dist/core/agent-generator/templates/helpers/cross-ref-helpers.d.ts.map +1 -0
- package/dist/core/agent-generator/templates/helpers/cross-ref-helpers.js +77 -0
- package/dist/core/agent-generator/templates/helpers/cross-ref-helpers.js.map +1 -0
- package/dist/core/agent-generator/templates/helpers/security-helpers.d.ts +3 -0
- package/dist/core/agent-generator/templates/helpers/security-helpers.d.ts.map +1 -0
- package/dist/core/agent-generator/templates/helpers/security-helpers.js +182 -0
- package/dist/core/agent-generator/templates/helpers/security-helpers.js.map +1 -0
- package/dist/core/agent-generator/templates/helpers/stack-helpers.d.ts +5 -0
- package/dist/core/agent-generator/templates/helpers/stack-helpers.d.ts.map +1 -0
- package/dist/core/agent-generator/templates/helpers/stack-helpers.js +69 -0
- package/dist/core/agent-generator/templates/helpers/stack-helpers.js.map +1 -0
- package/dist/core/agent-generator/templates/helpers/structure-helpers.d.ts +3 -0
- package/dist/core/agent-generator/templates/helpers/structure-helpers.d.ts.map +1 -0
- package/dist/core/agent-generator/templates/helpers/structure-helpers.js +275 -0
- package/dist/core/agent-generator/templates/helpers/structure-helpers.js.map +1 -0
- package/dist/core/agent-generator/templates/helpers/summary-helpers.d.ts +7 -0
- package/dist/core/agent-generator/templates/helpers/summary-helpers.d.ts.map +1 -0
- package/dist/core/agent-generator/templates/helpers/summary-helpers.js +56 -0
- package/dist/core/agent-generator/templates/helpers/summary-helpers.js.map +1 -0
- package/dist/core/agent-generator/templates/stack/index.d.ts +8 -0
- package/dist/core/agent-generator/templates/stack/index.d.ts.map +1 -0
- package/dist/core/agent-generator/templates/stack/index.js +695 -0
- package/dist/core/agent-generator/templates/stack/index.js.map +1 -0
- package/dist/core/agent-generator/templates/template-helpers.d.ts +12 -0
- package/dist/core/agent-generator/templates/template-helpers.d.ts.map +1 -0
- package/dist/core/agent-generator/templates/template-helpers.js +12 -0
- package/dist/core/agent-generator/templates/template-helpers.js.map +1 -0
- package/dist/core/agent-generator/types/agent.d.ts +40 -0
- package/dist/core/agent-generator/types/agent.d.ts.map +1 -0
- package/dist/core/agent-generator/types/agent.js +27 -0
- package/dist/core/agent-generator/types/agent.js.map +1 -0
- package/dist/core/agent-generator/types/domain.d.ts +59 -0
- package/dist/core/agent-generator/types/domain.d.ts.map +1 -0
- package/dist/core/agent-generator/types/domain.js +2 -0
- package/dist/core/agent-generator/types/domain.js.map +1 -0
- package/dist/core/agent-generator/types/stack.d.ts +37 -0
- package/dist/core/agent-generator/types/stack.d.ts.map +1 -0
- package/dist/core/agent-generator/types/stack.js +2 -0
- package/dist/core/agent-generator/types/stack.js.map +1 -0
- package/dist/core/agent-generator/types/template.d.ts +30 -0
- package/dist/core/agent-generator/types/template.d.ts.map +1 -0
- package/dist/core/agent-generator/types/template.js +2 -0
- package/dist/core/agent-generator/types/template.js.map +1 -0
- package/dist/core/agent-generator/types.d.ts +197 -0
- package/dist/core/agent-generator/types.d.ts.map +1 -0
- package/dist/core/agent-generator/types.js +27 -0
- package/dist/core/agent-generator/types.js.map +1 -0
- package/dist/core/analyzer.d.ts +39 -0
- package/dist/core/analyzer.d.ts.map +1 -0
- package/dist/core/analyzer.js +383 -0
- package/dist/core/analyzer.js.map +1 -0
- package/dist/core/analyzers/forecast.d.ts +85 -0
- package/dist/core/analyzers/forecast.d.ts.map +1 -0
- package/dist/core/analyzers/forecast.js +337 -0
- package/dist/core/analyzers/forecast.js.map +1 -0
- package/dist/core/analyzers/index.d.ts +10 -0
- package/dist/core/analyzers/index.d.ts.map +1 -0
- package/dist/core/analyzers/index.js +7 -0
- package/dist/core/analyzers/index.js.map +1 -0
- package/dist/core/analyzers/temporal-scorer.d.ts +72 -0
- package/dist/core/analyzers/temporal-scorer.d.ts.map +1 -0
- package/dist/core/analyzers/temporal-scorer.js +140 -0
- package/dist/core/analyzers/temporal-scorer.js.map +1 -0
- package/dist/core/anti-patterns.d.ts +25 -0
- package/dist/core/anti-patterns.d.ts.map +1 -0
- package/dist/core/anti-patterns.js +239 -0
- package/dist/core/anti-patterns.js.map +1 -0
- package/dist/core/architect.d.ts +70 -0
- package/dist/core/architect.d.ts.map +1 -0
- package/dist/core/architect.js +273 -0
- package/dist/core/architect.js.map +1 -0
- package/dist/core/architect_deps.d.ts +14 -0
- package/dist/core/architect_deps.d.ts.map +1 -0
- package/dist/core/architect_deps.js +12 -0
- package/dist/core/architect_deps.js.map +1 -0
- package/dist/core/config.d.ts +12 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +110 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/diagram.d.ts +10 -0
- package/dist/core/diagram.d.ts.map +1 -0
- package/dist/core/diagram.js +101 -0
- package/dist/core/diagram.js.map +1 -0
- package/dist/core/project-summarizer.d.ts +17 -0
- package/dist/core/project-summarizer.d.ts.map +1 -0
- package/dist/core/project-summarizer.js +39 -0
- package/dist/core/project-summarizer.js.map +1 -0
- package/dist/core/refactor-engine.d.ts +19 -0
- package/dist/core/refactor-engine.d.ts.map +1 -0
- package/dist/core/refactor-engine.js +86 -0
- package/dist/core/refactor-engine.js.map +1 -0
- package/dist/core/rules/barrel-optimizer.d.ts +14 -0
- package/dist/core/rules/barrel-optimizer.d.ts.map +1 -0
- package/dist/core/rules/barrel-optimizer.js +78 -0
- package/dist/core/rules/barrel-optimizer.js.map +1 -0
- package/dist/core/rules/dead-code-detector.d.ts +22 -0
- package/dist/core/rules/dead-code-detector.d.ts.map +1 -0
- package/dist/core/rules/dead-code-detector.js +118 -0
- package/dist/core/rules/dead-code-detector.js.map +1 -0
- package/dist/core/rules/hub-splitter.d.ts +14 -0
- package/dist/core/rules/hub-splitter.d.ts.map +1 -0
- package/dist/core/rules/hub-splitter.js +119 -0
- package/dist/core/rules/hub-splitter.js.map +1 -0
- package/dist/core/rules/import-organizer.d.ts +14 -0
- package/dist/core/rules/import-organizer.d.ts.map +1 -0
- package/dist/core/rules/import-organizer.js +86 -0
- package/dist/core/rules/import-organizer.js.map +1 -0
- package/dist/core/rules/module-grouper.d.ts +14 -0
- package/dist/core/rules/module-grouper.d.ts.map +1 -0
- package/dist/core/rules/module-grouper.js +118 -0
- package/dist/core/rules/module-grouper.js.map +1 -0
- package/dist/core/scorer.d.ts +27 -0
- package/dist/core/scorer.d.ts.map +1 -0
- package/dist/core/scorer.js +229 -0
- package/dist/core/scorer.js.map +1 -0
- package/dist/core/summarizer/keyword-extractor.d.ts +7 -0
- package/dist/core/summarizer/keyword-extractor.d.ts.map +1 -0
- package/dist/core/summarizer/keyword-extractor.js +37 -0
- package/dist/core/summarizer/keyword-extractor.js.map +1 -0
- package/dist/core/summarizer/module-inferrer.d.ts +12 -0
- package/dist/core/summarizer/module-inferrer.d.ts.map +1 -0
- package/dist/core/summarizer/module-inferrer.js +171 -0
- package/dist/core/summarizer/module-inferrer.js.map +1 -0
- package/dist/core/summarizer/package-reader.d.ts +4 -0
- package/dist/core/summarizer/package-reader.d.ts.map +1 -0
- package/dist/core/summarizer/package-reader.js +30 -0
- package/dist/core/summarizer/package-reader.js.map +1 -0
- package/dist/core/summarizer/purpose-inferrer.d.ts +9 -0
- package/dist/core/summarizer/purpose-inferrer.d.ts.map +1 -0
- package/dist/core/summarizer/purpose-inferrer.js +178 -0
- package/dist/core/summarizer/purpose-inferrer.js.map +1 -0
- package/dist/core/summarizer/readme-reader.d.ts +4 -0
- package/dist/core/summarizer/readme-reader.d.ts.map +1 -0
- package/dist/core/summarizer/readme-reader.js +21 -0
- package/dist/core/summarizer/readme-reader.js.map +1 -0
- package/dist/core/types/core.d.ts +87 -0
- package/dist/core/types/core.d.ts.map +1 -0
- package/dist/core/types/core.js +2 -0
- package/dist/core/types/core.js.map +1 -0
- package/dist/core/types/infrastructure.d.ts +39 -0
- package/dist/core/types/infrastructure.d.ts.map +1 -0
- package/dist/core/types/infrastructure.js +2 -0
- package/dist/core/types/infrastructure.js.map +1 -0
- package/dist/core/types/rules.d.ts +54 -0
- package/dist/core/types/rules.d.ts.map +1 -0
- package/dist/core/types/rules.js +2 -0
- package/dist/core/types/rules.js.map +1 -0
- package/dist/core/types/summarizer.d.ts +13 -0
- package/dist/core/types/summarizer.d.ts.map +1 -0
- package/dist/core/types/summarizer.js +2 -0
- package/dist/core/types/summarizer.js.map +1 -0
- package/dist/core/types.d.ts +187 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +2 -0
- package/dist/core/types.js.map +1 -0
- package/dist/diagram.d.ts +1 -0
- package/dist/diagram.d.ts.map +1 -1
- package/dist/diagram.js +24 -39
- package/dist/diagram.js.map +1 -1
- package/dist/html-reporter/scripts.d.ts +6 -0
- package/dist/html-reporter/scripts.d.ts.map +1 -0
- package/dist/html-reporter/scripts.js +316 -0
- package/dist/html-reporter/scripts.js.map +1 -0
- package/dist/html-reporter/sections/agents.d.ts +3 -0
- package/dist/html-reporter/sections/agents.d.ts.map +1 -0
- package/dist/html-reporter/sections/agents.js +259 -0
- package/dist/html-reporter/sections/agents.js.map +1 -0
- package/dist/html-reporter/sections/anti-patterns.d.ts +14 -0
- package/dist/html-reporter/sections/anti-patterns.d.ts.map +1 -0
- package/dist/html-reporter/sections/anti-patterns.js +64 -0
- package/dist/html-reporter/sections/anti-patterns.js.map +1 -0
- package/dist/html-reporter/sections/header.d.ts +4 -0
- package/dist/html-reporter/sections/header.d.ts.map +1 -0
- package/dist/html-reporter/sections/header.js +30 -0
- package/dist/html-reporter/sections/header.js.map +1 -0
- package/dist/html-reporter/sections/layers.d.ts +10 -0
- package/dist/html-reporter/sections/layers.d.ts.map +1 -0
- package/dist/html-reporter/sections/layers.js +143 -0
- package/dist/html-reporter/sections/layers.js.map +1 -0
- package/dist/html-reporter/sections/overview.d.ts +3 -0
- package/dist/html-reporter/sections/overview.d.ts.map +1 -0
- package/dist/html-reporter/sections/overview.js +58 -0
- package/dist/html-reporter/sections/overview.js.map +1 -0
- package/dist/html-reporter/sections/refactoring-plan.d.ts +4 -0
- package/dist/html-reporter/sections/refactoring-plan.d.ts.map +1 -0
- package/dist/html-reporter/sections/refactoring-plan.js +120 -0
- package/dist/html-reporter/sections/refactoring-plan.js.map +1 -0
- package/dist/html-reporter/sections/score.d.ts +8 -0
- package/dist/html-reporter/sections/score.d.ts.map +1 -0
- package/dist/html-reporter/sections/score.js +69 -0
- package/dist/html-reporter/sections/score.js.map +1 -0
- package/dist/html-reporter/sections/suggestions.d.ts +8 -0
- package/dist/html-reporter/sections/suggestions.d.ts.map +1 -0
- package/dist/html-reporter/sections/suggestions.js +34 -0
- package/dist/html-reporter/sections/suggestions.js.map +1 -0
- package/dist/html-reporter/styles.d.ts +2 -0
- package/dist/html-reporter/styles.d.ts.map +1 -0
- package/dist/html-reporter/styles.js +504 -0
- package/dist/html-reporter/styles.js.map +1 -0
- package/dist/html-reporter/utils.d.ts +27 -0
- package/dist/html-reporter/utils.d.ts.map +1 -0
- package/dist/html-reporter/utils.js +82 -0
- package/dist/html-reporter/utils.js.map +1 -0
- package/dist/html-reporter.d.ts +0 -37
- package/dist/html-reporter.d.ts.map +1 -1
- package/dist/html-reporter.js +29 -1679
- package/dist/html-reporter.js.map +1 -1
- package/dist/index.d.ts +16 -84
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -285
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/git-cache.d.ts +7 -0
- package/dist/infrastructure/git-cache.d.ts.map +1 -0
- package/dist/infrastructure/git-cache.js +41 -0
- package/dist/infrastructure/git-cache.js.map +1 -0
- package/dist/infrastructure/git-history.d.ts +113 -0
- package/dist/infrastructure/git-history.d.ts.map +1 -0
- package/dist/infrastructure/git-history.js +339 -0
- package/dist/infrastructure/git-history.js.map +1 -0
- package/dist/infrastructure/logger.d.ts +21 -0
- package/dist/infrastructure/logger.d.ts.map +1 -0
- package/dist/infrastructure/logger.js +59 -0
- package/dist/infrastructure/logger.js.map +1 -0
- package/dist/infrastructure/scanner.d.ts +32 -0
- package/dist/infrastructure/scanner.d.ts.map +1 -0
- package/dist/infrastructure/scanner.js +330 -0
- package/dist/infrastructure/scanner.js.map +1 -0
- package/dist/logger.d.ts +21 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +59 -0
- package/dist/logger.js.map +1 -0
- package/dist/project-summarizer.d.ts +7 -9
- package/dist/project-summarizer.d.ts.map +1 -1
- package/dist/project-summarizer.js +22 -289
- package/dist/project-summarizer.js.map +1 -1
- package/dist/scanner.d.ts +8 -2
- package/dist/scanner.d.ts.map +1 -1
- package/dist/scanner.js +157 -115
- package/dist/scanner.js.map +1 -1
- package/dist/scorer.d.ts.map +1 -1
- package/dist/scorer.js +24 -11
- package/dist/scorer.js.map +1 -1
- package/dist/summarizer/keyword-extractor.d.ts +6 -0
- package/dist/summarizer/keyword-extractor.d.ts.map +1 -0
- package/dist/summarizer/keyword-extractor.js +37 -0
- package/dist/summarizer/keyword-extractor.js.map +1 -0
- package/dist/summarizer/module-inferrer.d.ts +10 -0
- package/dist/summarizer/module-inferrer.d.ts.map +1 -0
- package/dist/summarizer/module-inferrer.js +171 -0
- package/dist/summarizer/module-inferrer.js.map +1 -0
- package/dist/summarizer/package-reader.d.ts +4 -0
- package/dist/summarizer/package-reader.d.ts.map +1 -0
- package/dist/summarizer/package-reader.js +30 -0
- package/dist/summarizer/package-reader.js.map +1 -0
- package/dist/summarizer/purpose-inferrer.d.ts +8 -0
- package/dist/summarizer/purpose-inferrer.d.ts.map +1 -0
- package/dist/summarizer/purpose-inferrer.js +178 -0
- package/dist/summarizer/purpose-inferrer.js.map +1 -0
- package/dist/summarizer/readme-reader.d.ts +4 -0
- package/dist/summarizer/readme-reader.d.ts.map +1 -0
- package/dist/summarizer/readme-reader.js +21 -0
- package/dist/summarizer/readme-reader.js.map +1 -0
- package/dist/types.d.ts +16 -0
- package/dist/types.d.ts.map +1 -1
- package/fix-scorer.js +18 -0
- package/fix-tests.js +73 -0
- package/package.json +3 -3
- package/scripts/decompose-detectors.ts +183 -0
- package/scripts/decompose-detectors_deps.ts +16 -0
- package/scripts/decompose-enrichers.ts +191 -0
- package/scripts/decompose-enrichers_deps.ts +10 -0
- package/scripts/decompose-helpers.ts +92 -0
- package/scripts/decompose-summarizer.ts +127 -0
- package/setup-refactor.sh +21 -0
- package/src/{cli.ts → adapters/cli.ts} +14 -10
- package/src/adapters/html-reporter/scripts.ts +402 -0
- package/src/adapters/html-reporter/sections/agents.ts +267 -0
- package/src/adapters/html-reporter/sections/anti-patterns.ts +81 -0
- package/src/adapters/html-reporter/sections/header.ts +35 -0
- package/src/adapters/html-reporter/sections/layers.ts +165 -0
- package/src/adapters/html-reporter/sections/overview.ts +64 -0
- package/src/adapters/html-reporter/sections/refactoring-plan.ts +166 -0
- package/src/adapters/html-reporter/sections/score.ts +79 -0
- package/src/adapters/html-reporter/sections/suggestions.ts +39 -0
- package/src/adapters/html-reporter/styles.ts +525 -0
- package/src/adapters/html-reporter/utils_adapters.ts +39 -0
- package/src/adapters/html-reporter/utils_sections.ts +55 -0
- package/src/adapters/html-reporter.ts +89 -0
- package/src/adapters/html-reporter_deps.ts +14 -0
- package/src/{refactor-reporter.ts → adapters/refactor-reporter.ts} +1 -1
- package/src/{reporter.ts → adapters/reporter.ts} +1 -1
- package/src/core/agent-generator/context-enricher.ts +67 -0
- package/src/core/agent-generator/detectors/base-detector.ts +18 -0
- package/src/core/agent-generator/detectors/dart-detector.ts +17 -0
- package/src/core/agent-generator/detectors/framework-registry.ts +82 -0
- package/src/core/agent-generator/detectors/go-detector.ts +26 -0
- package/src/core/agent-generator/detectors/java-detector.ts +46 -0
- package/src/core/agent-generator/detectors/node-detector.ts +28 -0
- package/src/core/agent-generator/detectors/php-detector.ts +28 -0
- package/src/core/agent-generator/detectors/python-detector.ts +125 -0
- package/src/core/agent-generator/detectors/ruby-detector.ts +24 -0
- package/src/core/agent-generator/detectors/rust-detector.ts +19 -0
- package/src/core/agent-generator/detectors/structure-detector.ts +38 -0
- package/src/core/agent-generator/detectors/toolchain-detector.ts +180 -0
- package/src/{agent-generator → core/agent-generator}/domain-inferrer.ts +12 -7
- package/src/core/agent-generator/engines/audit-engine.ts +98 -0
- package/src/core/agent-generator/engines/context-builder.ts +96 -0
- package/src/core/agent-generator/engines/generation-engine.ts +184 -0
- package/src/core/agent-generator/engines/generation-engine_deps.ts +21 -0
- package/src/core/agent-generator/engines/suggestion-engine.ts +202 -0
- package/src/core/agent-generator/engines/suggestion-engine_deps.ts +8 -0
- package/src/core/agent-generator/enrichers/analysis-helpers.ts +58 -0
- package/src/core/agent-generator/enrichers/description-generator.ts +91 -0
- package/src/core/agent-generator/enrichers/endpoint-extractor.ts +114 -0
- package/src/core/agent-generator/enrichers/layer-classifier.ts +156 -0
- package/src/core/agent-generator/enrichers/module-extractor.ts +203 -0
- package/src/core/agent-generator/framework-detector.ts +66 -0
- package/src/core/agent-generator/index.ts +55 -0
- package/src/{agent-generator → core/agent-generator}/stack-detector.ts +34 -22
- package/src/{agent-generator → core/agent-generator}/templates/core/agents.ts +6 -3
- package/src/{agent-generator → core/agent-generator}/templates/core/architecture-rules.ts +1 -1
- package/src/{agent-generator → core/agent-generator}/templates/core/general-rules.ts +1 -1
- package/src/core/agent-generator/templates/core/hooks-generator.ts +242 -0
- package/src/{agent-generator → core/agent-generator}/templates/core/index-md.ts +1 -1
- package/src/{agent-generator → core/agent-generator}/templates/core/orchestrator.ts +1 -1
- package/src/{agent-generator → core/agent-generator}/templates/core/preflight.ts +1 -1
- package/src/{agent-generator → core/agent-generator}/templates/core/quality-gates.ts +1 -1
- package/src/{agent-generator → core/agent-generator}/templates/core/security-rules.ts +1 -1
- package/src/core/agent-generator/templates/core/skills-generator.ts +585 -0
- package/src/{agent-generator → core/agent-generator}/templates/core/workflow-fix-bug.ts +1 -1
- package/src/{agent-generator → core/agent-generator}/templates/core/workflow-new-feature.ts +1 -1
- package/src/{agent-generator → core/agent-generator}/templates/core/workflow-review.ts +1 -1
- package/src/{agent-generator → core/agent-generator}/templates/domain/index.ts +1 -1
- package/src/core/agent-generator/templates/helpers/base-helpers.ts +32 -0
- package/src/core/agent-generator/templates/helpers/cross-ref-helpers.ts +79 -0
- package/src/core/agent-generator/templates/helpers/security-helpers.ts +196 -0
- package/src/core/agent-generator/templates/helpers/stack-helpers.ts +78 -0
- package/src/core/agent-generator/templates/helpers/structure-helpers.ts +291 -0
- package/src/core/agent-generator/templates/helpers/summary-helpers.ts +65 -0
- package/src/{agent-generator → core/agent-generator}/templates/stack/index.ts +1 -1
- package/src/core/agent-generator/templates/template-helpers.ts +12 -0
- package/src/core/agent-generator/types/agent.ts +65 -0
- package/src/core/agent-generator/types/domain.ts +63 -0
- package/src/core/agent-generator/types/stack.ts +38 -0
- package/src/core/agent-generator/types/template.ts +31 -0
- package/src/{analyzer.ts → core/analyzer.ts} +15 -2
- package/src/{analyzers → core/analyzers}/forecast.ts +1 -1
- package/src/{analyzers → core/analyzers}/index.ts +2 -2
- package/src/{analyzers → core/analyzers}/temporal-scorer.ts +1 -1
- package/src/{anti-patterns.ts → core/anti-patterns.ts} +41 -8
- package/src/core/architect.ts +356 -0
- package/src/core/architect_deps.ts +13 -0
- package/src/{config.ts → core/config.ts} +53 -12
- package/src/{diagram.ts → core/diagram.ts} +27 -42
- package/src/core/project-summarizer.ts +42 -0
- package/src/{refactor-engine.ts → core/refactor-engine.ts} +2 -7
- package/src/{rules → core/rules}/barrel-optimizer.ts +3 -1
- package/src/{rules → core/rules}/dead-code-detector.ts +3 -1
- package/src/{rules → core/rules}/hub-splitter.ts +14 -2
- package/src/{rules → core/rules}/import-organizer.ts +5 -3
- package/src/{rules → core/rules}/module-grouper.ts +11 -2
- package/src/{scorer.ts → core/scorer.ts} +31 -16
- package/src/core/summarizer/keyword-extractor.ts +53 -0
- package/src/core/summarizer/module-inferrer.ts +194 -0
- package/src/core/summarizer/package-reader.ts +34 -0
- package/src/core/summarizer/purpose-inferrer.ts +197 -0
- package/src/core/summarizer/readme-reader.ts +24 -0
- package/src/core/types/core.ts +93 -0
- package/src/core/types/infrastructure.ts +41 -0
- package/src/core/types/rules.ts +51 -0
- package/src/core/types/summarizer.ts +8 -0
- package/src/index.ts +17 -384
- package/src/{analyzers → infrastructure}/git-history.ts +19 -10
- package/src/infrastructure/logger.ts +68 -0
- package/src/infrastructure/scanner.ts +347 -0
- package/src/scripts/bundle-deps.js +123 -0
- package/src/scripts/fix-imports.mjs +106 -0
- package/src/scripts/refactor-imports.js +74 -0
- package/src/scripts/refactor-utils.js +23 -0
- package/test-shotgun.js +7 -0
- package/tests/agent-generator.test.ts +19 -2
- package/tests/analyzers-integration.test.ts +9 -9
- package/tests/anti-patterns.test.ts +3 -2
- package/tests/context-enricher.test.ts +3 -2
- package/tests/fixtures/monorepo/package.json +6 -0
- package/tests/fixtures/monorepo/packages/app/package.json +12 -0
- package/tests/fixtures/monorepo/packages/app/src/index.ts +6 -0
- package/tests/fixtures/monorepo/packages/core/package.json +7 -0
- package/tests/fixtures/monorepo/packages/core/src/index.ts +7 -0
- package/tests/forecast.test.ts +4 -4
- package/tests/framework-detector.test.ts +2 -2
- package/tests/git-history.test.ts +20 -20
- package/tests/monorepo-scan.test.ts +170 -0
- package/tests/scanner.test.ts +3 -3
- package/tests/scorer.test.ts +38 -32
- package/tests/stack-detector.test.ts +21 -21
- package/tests/template-generation.test.ts +31 -30
- package/tests/template-helpers.test.ts +6 -28
- package/tests/temporal-scorer.test.ts +3 -3
- package/__test_agent_output__/INDEX.md +0 -1
- package/__test_agent_output__/agents/AGENT-ORCHESTRATOR.md +0 -1
- package/__test_agent_output__/agents/DATABASE-ENGINEER.md +0 -174
- package/__test_agent_output__/agents/TECH-DEBT-CONTROLLER.md +0 -104
- package/__test_agent_output__/agents/TYPESCRIPT-BACKEND-DEVELOPER.md +0 -135
- package/__test_agent_output__/guards/QUALITY-GATES.md +0 -1
- package/__test_agent_output__/rules/03-nestjs.md +0 -124
- package/__test_context_7RvUrO/src/modules/empty/empty.ts +0 -0
- package/__test_context_Rf5fNJ/src/modules/mixed/mixed.ts +0 -5
- package/__test_context_WRCnYH/src/modules/test/test.ts +0 -10
- package/__test_context_YsnVS3/src/modules/test/test.ts +0 -10
- package/__test_context_w7XZeH/src/modules/mixed/mixed.ts +0 -5
- package/__test_context_y5noh6/src/modules/empty/empty.ts +0 -0
- package/__test_framework__24OjAu/package.json +0 -1
- package/__test_framework__3ZDZsx/pyproject.toml +0 -8
- package/__test_framework__4T54Jn/package.json +0 -1
- package/__test_framework__4tlXu9/pyproject.toml +0 -8
- package/__test_framework__6boWqQ/Pipfile +0 -6
- package/__test_framework__6gygMU/pom.xml +0 -10
- package/__test_framework__6kxj0N/go.mod +0 -8
- package/__test_framework__7CEoXw/pom.xml +0 -10
- package/__test_framework__85DDz0/Pipfile +0 -6
- package/__test_framework__9WrRIr/pom.xml +0 -7
- package/__test_framework__ANqGKl/Gemfile +0 -5
- package/__test_framework__BCXTEM/go.mod +0 -3
- package/__test_framework__BHiPNq/setup.py +0 -2
- package/__test_framework__BqkiKv/package.json +0 -1
- package/__test_framework__C5yd8X/Pipfile.lock +0 -1
- package/__test_framework__C5yd8X/requirements.txt +0 -1
- package/__test_framework__C87d3a/manage.py +0 -1
- package/__test_framework__C87d3a/requirements.txt +0 -2
- package/__test_framework__DXNwc5/build.gradle +0 -7
- package/__test_framework__GhHSt3/build.gradle.kts +0 -4
- package/__test_framework__GzklJP/Cargo.toml +0 -7
- package/__test_framework__H4hd13/go.mod +0 -8
- package/__test_framework__HKjOXO/composer.json +0 -1
- package/__test_framework__HaDN45/Gemfile +0 -3
- package/__test_framework__IBO7YG/pyproject.toml +0 -9
- package/__test_framework__JwSOyF/pyproject.toml +0 -6
- package/__test_framework__K6HrCr/build.gradle +0 -2
- package/__test_framework__KzRPlh/pubspec.yaml +0 -9
- package/__test_framework__L6uIym/pyproject.toml +0 -6
- package/__test_framework__LOdoGK/requirements.txt +0 -4
- package/__test_framework__LgHzss/package.json +0 -1
- package/__test_framework__M76M6q/Gemfile +0 -5
- package/__test_framework__Mr9vWW/composer.json +0 -1
- package/__test_framework__N03Gnv/package.json +0 -1
- package/__test_framework__Num4UE/requirements +0 -1
- package/__test_framework__OAGw3Y/build.gradle +0 -7
- package/__test_framework__OQc8yG/pubspec.yaml +0 -9
- package/__test_framework__OwKZcd/requirements.txt +0 -3
- package/__test_framework__P0gFv7/requirements +0 -1
- package/__test_framework__PN55Rq/package.json +0 -1
- package/__test_framework__PQiqX8/pubspec.yaml +0 -3
- package/__test_framework__RBHsg7/composer.json +0 -1
- package/__test_framework__RHxif4/Cargo.toml +0 -7
- package/__test_framework__T0v0p1/Cargo.toml +0 -4
- package/__test_framework__Tu0clt/Pipfile.lock +0 -1
- package/__test_framework__Tu0clt/requirements.txt +0 -1
- package/__test_framework__TwDj9P/Cargo.toml +0 -4
- package/__test_framework__VQJNC4/pom.xml +0 -7
- package/__test_framework__W6sm05/package.json +0 -1
- package/__test_framework__W7vBLy/pyproject.toml +0 -4
- package/__test_framework__WNJOWT/setup.py +0 -2
- package/__test_framework__WSJs7U/package.json +0 -1
- package/__test_framework__YQ5VpA/build.gradle.kts +0 -4
- package/__test_framework__ZNEUEs/package.json +0 -1
- package/__test_framework__Znt922/pom.xml +0 -7
- package/__test_framework__azyg0h/pom.xml +0 -7
- package/__test_framework__c6otLr/package.json +0 -1
- package/__test_framework__cl9S9G/build.gradle +0 -2
- package/__test_framework__eilvV4/composer.json +0 -1
- package/__test_framework__gQZxXO/manage.py +0 -1
- package/__test_framework__gQZxXO/requirements.txt +0 -2
- package/__test_framework__ghvl26/poetry.lock +0 -1
- package/__test_framework__ghvl26/pyproject.toml +0 -2
- package/__test_framework__hR7b9U/Makefile +0 -11
- package/__test_framework__iESVsi/composer.json +0 -1
- package/__test_framework__jm6TJy/package.json +0 -1
- package/__test_framework__kBUpjs/pyproject.toml +0 -9
- package/__test_framework__kqoZrw/requirements.txt +0 -4
- package/__test_framework__lWkoyO/pyproject.toml +0 -4
- package/__test_framework__mTKnUO/package.json +0 -1
- package/__test_framework__nCeZwe/Makefile +0 -11
- package/__test_framework__oljsU0/package.json +0 -1
- package/__test_framework__osRG4q/go.mod +0 -3
- package/__test_framework__pCHH4F/package.json +0 -1
- package/__test_framework__pExx6E/Gemfile +0 -3
- package/__test_framework__pyBoGd/pyproject.toml +0 -5
- package/__test_framework__qw16VQ/package.json +0 -1
- package/__test_framework__rRayrG/package.json +0 -1
- package/__test_framework__s82zO5/package.json +0 -1
- package/__test_framework__tp8MFK/pyproject.toml +0 -5
- package/__test_framework__w44k4w/composer.json +0 -1
- package/__test_framework__yefPZY/poetry.lock +0 -1
- package/__test_framework__yefPZY/pyproject.toml +0 -2
- package/__test_framework__zCiyDT/requirements.txt +0 -3
- package/__test_framework__zGZN3j/pubspec.yaml +0 -3
- package/__test_framework__zXpnxL/package.json +0 -1
- package/src/agent-generator/context-enricher.ts +0 -643
- package/src/agent-generator/framework-detector.ts +0 -669
- package/src/agent-generator/index.ts +0 -555
- package/src/agent-generator/templates/core/skills-generator.ts +0 -236
- package/src/agent-generator/templates/template-helpers.ts +0 -776
- package/src/agent-generator/types.ts +0 -232
- package/src/html-reporter.ts +0 -1830
- package/src/project-summarizer.ts +0 -347
- package/src/scanner.ts +0 -298
- package/src/types.ts +0 -176
- /package/src/{analyzers → infrastructure}/git-cache.ts +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@girardelli/architect",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "AI-powered architecture analysis with temporal intelligence — git history, velocity vectors, pre-anti-pattern detection, and architecture weather forecast",
|
|
6
6
|
"author": {
|
|
@@ -22,13 +22,13 @@
|
|
|
22
22
|
}
|
|
23
23
|
},
|
|
24
24
|
"bin": {
|
|
25
|
-
"architect": "./dist/cli.js"
|
|
25
|
+
"architect": "./dist/adapters/cli.js"
|
|
26
26
|
},
|
|
27
27
|
"scripts": {
|
|
28
28
|
"build": "tsc",
|
|
29
29
|
"clean": "rm -rf dist",
|
|
30
30
|
"dev": "tsc --watch",
|
|
31
|
-
"analyze": "node dist/cli.js analyze",
|
|
31
|
+
"analyze": "node dist/adapters/cli.js analyze",
|
|
32
32
|
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
|
|
33
33
|
"test:watch": "node --experimental-vm-modules node_modules/jest/bin/jest.js --watch",
|
|
34
34
|
"lint": "eslint src --ext .ts",
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { FrameworkInfo, BaseDetector, FRAMEWORK_MAP, AnalysisReport, FrameworkInfo, DetectedToolchain, FrameworkInfo, DetectedToolchain, PythonDetector, NodeDetector, JavaDetector, PhpDetector, GoDetector, RubyDetector, DartDetector, RustDetector, ToolchainDetector, StructureDetector } from './decompose-detectors_deps.js';
|
|
2
|
+
|
|
3
|
+
import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'fs';
|
|
4
|
+
import { join } from 'path';
|
|
5
|
+
|
|
6
|
+
const SRC = 'src/agent-generator/framework-detector.ts';
|
|
7
|
+
const DEST_DIR = 'src/agent-generator/detectors';
|
|
8
|
+
|
|
9
|
+
if (!existsSync(DEST_DIR)) mkdirSync(DEST_DIR, { recursive: true });
|
|
10
|
+
|
|
11
|
+
// Read original
|
|
12
|
+
const content = readFileSync(SRC, 'utf8');
|
|
13
|
+
|
|
14
|
+
// 1. EXTRACT FRAMEWORK_MAP into framework-registry.ts
|
|
15
|
+
const mapMatch = content.match(/(private static readonly FRAMEWORK_MAP[\s\S]*?);/);
|
|
16
|
+
let mapCode = mapMatch ? mapMatch[1].replace('private static readonly', 'export const') + ';' : '';
|
|
17
|
+
|
|
18
|
+
writeFileSync(join(DEST_DIR, 'framework-registry.ts'), `\n\n${mapCode}\n`);
|
|
19
|
+
|
|
20
|
+
// 2. Base Detector Strategy
|
|
21
|
+
const baseStrategy = `import { FrameworkInfo } from '../types.js';
|
|
22
|
+
import { readFileSync } from 'fs';
|
|
23
|
+
|
|
24
|
+
export interface FrameworkDetectorStrategy {
|
|
25
|
+
detect(projectPath: string, out: FrameworkInfo[]): void;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export abstract class BaseDetector implements FrameworkDetectorStrategy {
|
|
29
|
+
abstract detect(projectPath: string, out: FrameworkInfo[]): void;
|
|
30
|
+
|
|
31
|
+
protected safeReadFile(path: string): string {
|
|
32
|
+
try {
|
|
33
|
+
return readFileSync(path, 'utf-8');
|
|
34
|
+
} catch {
|
|
35
|
+
return '';
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
`;
|
|
40
|
+
writeFileSync(join(DEST_DIR, 'base-detector.ts'), baseStrategy);
|
|
41
|
+
|
|
42
|
+
// 3. Extract languages
|
|
43
|
+
const methods = [
|
|
44
|
+
{ file: 'python-detector.ts', class: 'PythonDetector', method: 'detectFromPython', helpers: ['parsePythonRequirements', 'parsePyprojectToml'] },
|
|
45
|
+
{ file: 'node-detector.ts', class: 'NodeDetector', method: 'detectFromNodejs', helpers: [] },
|
|
46
|
+
{ file: 'java-detector.ts', class: 'JavaDetector', method: 'detectFromJava', helpers: [] },
|
|
47
|
+
{ file: 'php-detector.ts', class: 'PhpDetector', method: 'detectFromPhp', helpers: [] },
|
|
48
|
+
{ file: 'go-detector.ts', class: 'GoDetector', method: 'detectFromGo', helpers: [] },
|
|
49
|
+
{ file: 'ruby-detector.ts', class: 'RubyDetector', method: 'detectFromRuby', helpers: [] },
|
|
50
|
+
{ file: 'dart-detector.ts', class: 'DartDetector', method: 'detectFromDart', helpers: [] },
|
|
51
|
+
{ file: 'rust-detector.ts', class: 'RustDetector', method: 'detectFromRust', helpers: [] }
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
methods.forEach(def => {
|
|
55
|
+
let clsBody = '';
|
|
56
|
+
|
|
57
|
+
// Extract main method
|
|
58
|
+
const methodRegex = new RegExp(`(private ${def.method}\\([\\s\\S]*?\\n })\\n\\n`, 'g');
|
|
59
|
+
const mainMatch = content.match(methodRegex);
|
|
60
|
+
if (mainMatch) clsBody += mainMatch[0].replace('private ', 'public ') + '\n';
|
|
61
|
+
else {
|
|
62
|
+
const singleMatch = content.match(new RegExp(`(private ${def.method}[\\s\\S]*?)(?:\\n private |\\n\\n /|\\n})`));
|
|
63
|
+
if (singleMatch) clsBody += singleMatch[1].replace('private ', 'public ') + '\n';
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// Extract helpers
|
|
67
|
+
def.helpers.forEach(h => {
|
|
68
|
+
const r = new RegExp(`private ${h}\\([\\s\\S]*?\\n(?: })\\n`);
|
|
69
|
+
const m = content.match(r);
|
|
70
|
+
if (m) clsBody += m[0];
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
// Inject FRAMEWORK_MAP usage
|
|
74
|
+
clsBody = clsBody.replace(/FrameworkDetector\.FRAMEWORK_MAP/g, 'FRAMEWORK_MAP');
|
|
75
|
+
|
|
76
|
+
const fileContent = `import { join } from 'path';
|
|
77
|
+
import { existsSync } from 'fs';
|
|
78
|
+
import { FrameworkInfo } from '../types.js';
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
export class ${def.class} extends BaseDetector {
|
|
83
|
+
${clsBody.trim()}
|
|
84
|
+
}
|
|
85
|
+
`;
|
|
86
|
+
writeFileSync(join(DEST_DIR, def.file), fileContent);
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
// 4. Extract Toolchain
|
|
90
|
+
const toolchainMatch = content.match(/(private detectToolchain[\s\S]+?)\n\n \/\//);
|
|
91
|
+
let toolchainCode = toolchainMatch ? toolchainMatch[1].replace('private detectToolchain', 'public detectToolchain') : '';
|
|
92
|
+
|
|
93
|
+
const structMatch = content.match(/(private detectProjectStructure[\s\S]+?})\n\n/);
|
|
94
|
+
let structCode = structMatch ? structMatch[1].replace('private detectProjectStructure', 'public detectProjectStructure') : '';
|
|
95
|
+
|
|
96
|
+
writeFileSync(join(DEST_DIR, 'toolchain-detector.ts'), `import { existsSync } from 'fs';
|
|
97
|
+
import { join } from 'path';
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
export class ToolchainDetector {
|
|
102
|
+
${toolchainCode}
|
|
103
|
+
}
|
|
104
|
+
`);
|
|
105
|
+
|
|
106
|
+
writeFileSync(join(DEST_DIR, 'structure-detector.ts'), `import { AnalysisReport } from '../../types.js';
|
|
107
|
+
|
|
108
|
+
export class StructureDetector {
|
|
109
|
+
${structCode}
|
|
110
|
+
}
|
|
111
|
+
`);
|
|
112
|
+
|
|
113
|
+
// 5. Build Facade Index
|
|
114
|
+
const facade = `import { AnalysisReport } from '../../types.js';
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* FrameworkDetector — Detects actual frameworks and toolchain from dependency files.
|
|
129
|
+
* Re-architected as a Strategy/Registry Facade.
|
|
130
|
+
*/
|
|
131
|
+
export class FrameworkDetector {
|
|
132
|
+
private detectors = [
|
|
133
|
+
new PythonDetector(),
|
|
134
|
+
new NodeDetector(),
|
|
135
|
+
new JavaDetector(),
|
|
136
|
+
new PhpDetector(),
|
|
137
|
+
new GoDetector(),
|
|
138
|
+
new RubyDetector(),
|
|
139
|
+
new DartDetector(),
|
|
140
|
+
new RustDetector()
|
|
141
|
+
];
|
|
142
|
+
private toolchainDetector = new ToolchainDetector();
|
|
143
|
+
private structureDetector = new StructureDetector();
|
|
144
|
+
|
|
145
|
+
detect(projectPath: string, report: AnalysisReport): {
|
|
146
|
+
frameworks: FrameworkInfo[];
|
|
147
|
+
primaryFramework: FrameworkInfo | null;
|
|
148
|
+
toolchain: DetectedToolchain;
|
|
149
|
+
projectStructure: 'clean-architecture' | 'mvc' | 'modular' | 'flat' | 'monorepo' | 'unknown';
|
|
150
|
+
} {
|
|
151
|
+
const frameworks: FrameworkInfo[] = [];
|
|
152
|
+
|
|
153
|
+
// Run all detectors
|
|
154
|
+
for (const detector of this.detectors) {
|
|
155
|
+
detector.detect(projectPath, frameworks);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// Deduplicate by name
|
|
159
|
+
const seen = new Set<string>();
|
|
160
|
+
const unique = frameworks.filter(f => {
|
|
161
|
+
if (seen.has(f.name)) return false;
|
|
162
|
+
seen.add(f.name);
|
|
163
|
+
return true;
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
// Sort: web frameworks first, then by confidence
|
|
167
|
+
unique.sort((a, b) => {
|
|
168
|
+
if (a.category === 'web' && b.category !== 'web') return -1;
|
|
169
|
+
if (a.category !== 'web' && b.category === 'web') return 1;
|
|
170
|
+
return b.confidence - a.confidence;
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
const primaryFramework = unique.find(f => f.category === 'web') || null;
|
|
174
|
+
const toolchain = this.toolchainDetector.detectToolchain(projectPath, report, primaryFramework, unique);
|
|
175
|
+
const projectStructure = this.structureDetector.detectProjectStructure(report);
|
|
176
|
+
|
|
177
|
+
return { frameworks: unique, primaryFramework, toolchain, projectStructure };
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
`;
|
|
181
|
+
|
|
182
|
+
writeFileSync('src/agent-generator/framework-detector.ts', facade);
|
|
183
|
+
console.log('Done mapping components!');
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export { FrameworkInfo } from '../types.js';
|
|
2
|
+
export { BaseDetector } from './base-detector.js';
|
|
3
|
+
export { FRAMEWORK_MAP } from './framework-registry.js';
|
|
4
|
+
export { AnalysisReport } from '../../types.js';
|
|
5
|
+
export { FrameworkInfo, DetectedToolchain } from '../types.js';
|
|
6
|
+
export { FrameworkInfo, DetectedToolchain } from './types.js';
|
|
7
|
+
export { PythonDetector } from './detectors/python-detector.js';
|
|
8
|
+
export { NodeDetector } from './detectors/node-detector.js';
|
|
9
|
+
export { JavaDetector } from './detectors/java-detector.js';
|
|
10
|
+
export { PhpDetector } from './detectors/php-detector.js';
|
|
11
|
+
export { GoDetector } from './detectors/go-detector.js';
|
|
12
|
+
export { RubyDetector } from './detectors/ruby-detector.js';
|
|
13
|
+
export { DartDetector } from './detectors/dart-detector.js';
|
|
14
|
+
export { RustDetector } from './detectors/rust-detector.js';
|
|
15
|
+
export { ToolchainDetector } from './detectors/toolchain-detector.js';
|
|
16
|
+
export { StructureDetector } from './detectors/structure-detector.js';
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { AnalysisReport, ModuleDetail, DetectedEndpoint, EnrichedTemplateContext, DescriptionGenerator, AnalysisHelpers, StackInfo, EnrichedTemplateContext, AgentGeneratorConfig, DEFAULT_AGENT_CONFIG, DomainInferrer, FrameworkDetector, ModuleExtractor, EndpointExtractor, AnalysisHelpers } from './decompose-enrichers_deps.js';
|
|
2
|
+
|
|
3
|
+
import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'fs';
|
|
4
|
+
import { join } from 'path';
|
|
5
|
+
|
|
6
|
+
const SRC = 'src/agent-generator/context-enricher.ts';
|
|
7
|
+
const DEST_DIR = 'src/agent-generator/enrichers';
|
|
8
|
+
|
|
9
|
+
if (!existsSync(DEST_DIR)) mkdirSync(DEST_DIR, { recursive: true });
|
|
10
|
+
|
|
11
|
+
const content = readFileSync(SRC, 'utf8');
|
|
12
|
+
|
|
13
|
+
// 1. DTO and TYPES
|
|
14
|
+
const baseImports = `import { existsSync, readFileSync, statSync } from 'fs';
|
|
15
|
+
import { join } from 'path';
|
|
16
|
+
|
|
17
|
+
\n\n`;
|
|
18
|
+
|
|
19
|
+
// Extract Classifiers
|
|
20
|
+
// Layer Classifier (isTest, isEntity, isController, isGenericDir, inferFileLayer, etc)
|
|
21
|
+
|
|
22
|
+
let layerClassifier = baseImports + `export class LayerClassifier {
|
|
23
|
+
`;
|
|
24
|
+
const layerMethods = [
|
|
25
|
+
'isTestFile', 'isEntityFile', 'isControllerOrRouteFile',
|
|
26
|
+
'isServiceFile', 'isGenericDir', 'inferFileLayer', 'extractEntityName',
|
|
27
|
+
'fileReferencesAuth', 'fileReferencesValidation'
|
|
28
|
+
];
|
|
29
|
+
|
|
30
|
+
layerMethods.forEach(m => {
|
|
31
|
+
const r = new RegExp(`private ${m}\\([\\w\\W]*?\\n(?: }\\n(?:\\n| //))`);
|
|
32
|
+
const match = content.match(r);
|
|
33
|
+
if (match) {
|
|
34
|
+
layerClassifier += match[0].replace('private ', 'public ') + '\n';
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
layerClassifier += `}\n`;
|
|
38
|
+
writeFileSync(join(DEST_DIR, 'layer-classifier.ts'), layerClassifier);
|
|
39
|
+
|
|
40
|
+
// Description Generator
|
|
41
|
+
let descGenerator = baseImports + `export class DescriptionGenerator {
|
|
42
|
+
`;
|
|
43
|
+
const descMatch = content.match(/(private generateSmartDescription[\w\W]*?\n }\n)/);
|
|
44
|
+
if (descMatch) {
|
|
45
|
+
descGenerator += descMatch[1].replace('private ', 'public ') + '\n';
|
|
46
|
+
}
|
|
47
|
+
descGenerator += `}\n`;
|
|
48
|
+
writeFileSync(join(DEST_DIR, 'description-generator.ts'), descGenerator);
|
|
49
|
+
|
|
50
|
+
// Analysis Helpers (findUntestedModules, countFileLines, classifyProjectDepth, findCriticalPaths)
|
|
51
|
+
let analysisHelpers = baseImports + `export class AnalysisHelpers {
|
|
52
|
+
`;
|
|
53
|
+
['findUntestedModules', 'findCriticalPaths', 'classifyProjectDepth', 'countFileLines'].forEach(m => {
|
|
54
|
+
const r = new RegExp(`private ${m}\\([\\w\\W]*?\\n(?: }\\n(?:\\n| //))`);
|
|
55
|
+
const match = content.match(r);
|
|
56
|
+
if (match) {
|
|
57
|
+
analysisHelpers += match[0].replace('private ', 'public ') + '\n';
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
analysisHelpers += `}\n`;
|
|
61
|
+
writeFileSync(join(DEST_DIR, 'analysis-helpers.ts'), analysisHelpers);
|
|
62
|
+
|
|
63
|
+
// Module Extractor
|
|
64
|
+
let modExtractor = baseImports + `import { LayerClassifier } from './layer-classifier.js';
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
export class ModuleExtractor {
|
|
69
|
+
private layerClassifier = new LayerClassifier();
|
|
70
|
+
private descriptionGenerator = new DescriptionGenerator();
|
|
71
|
+
private analysisHelpers = new AnalysisHelpers();
|
|
72
|
+
|
|
73
|
+
`;
|
|
74
|
+
['extractModules', 'inferModuleName', 'inferModulePath'].forEach(m => {
|
|
75
|
+
const r = new RegExp(`private ${m}\\([\\w\\W]*?\\n(?: }\\n(?:\\n| //))`);
|
|
76
|
+
const match = content.match(r);
|
|
77
|
+
if (match) {
|
|
78
|
+
let methodBody = match[0].replace('private ', 'public ');
|
|
79
|
+
|
|
80
|
+
// Rewrite "this." references
|
|
81
|
+
methodBody = methodBody.replace(/this\.inferModuleName/g, 'this.inferModuleName');
|
|
82
|
+
methodBody = methodBody.replace(/this\.inferModulePath/g, 'this.inferModulePath');
|
|
83
|
+
methodBody = methodBody.replace(/this\.countFileLines/g, 'this.analysisHelpers.countFileLines');
|
|
84
|
+
methodBody = methodBody.replace(/this\.inferFileLayer/g, 'this.layerClassifier.inferFileLayer');
|
|
85
|
+
methodBody = methodBody.replace(/this\.isTestFile/g, 'this.layerClassifier.isTestFile');
|
|
86
|
+
methodBody = methodBody.replace(/this\.isEntityFile/g, 'this.layerClassifier.isEntityFile');
|
|
87
|
+
methodBody = methodBody.replace(/this\.isControllerOrRouteFile/g, 'this.layerClassifier.isControllerOrRouteFile');
|
|
88
|
+
methodBody = methodBody.replace(/this\.isServiceFile/g, 'this.layerClassifier.isServiceFile');
|
|
89
|
+
methodBody = methodBody.replace(/this\.extractEntityName/g, 'this.layerClassifier.extractEntityName');
|
|
90
|
+
methodBody = methodBody.replace(/this\.generateSmartDescription/g, 'this.descriptionGenerator.generateSmartDescription');
|
|
91
|
+
methodBody = methodBody.replace(/this\.isGenericDir/g, 'this.layerClassifier.isGenericDir');
|
|
92
|
+
|
|
93
|
+
modExtractor += methodBody + '\n';
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
modExtractor += `}\n`;
|
|
97
|
+
writeFileSync(join(DEST_DIR, 'module-extractor.ts'), modExtractor);
|
|
98
|
+
|
|
99
|
+
// Endpoint Extractor
|
|
100
|
+
let endExtractor = baseImports + `import { LayerClassifier } from './layer-classifier.js';
|
|
101
|
+
|
|
102
|
+
export class EndpointExtractor {
|
|
103
|
+
private layerClassifier = new LayerClassifier();
|
|
104
|
+
|
|
105
|
+
`;
|
|
106
|
+
['extractEndpoints', 'extractResourceFromFile'].forEach(m => {
|
|
107
|
+
const r = new RegExp(`private ${m}\\([\\w\\W]*?\\n(?: }\\n(?:\\n| //))`);
|
|
108
|
+
const match = content.match(r);
|
|
109
|
+
if (match) {
|
|
110
|
+
let methodBody = match[0].replace('private ', 'public ');
|
|
111
|
+
|
|
112
|
+
// Rewrite "this." references
|
|
113
|
+
methodBody = methodBody.replace(/this\.isControllerOrRouteFile/g, 'this.layerClassifier.isControllerOrRouteFile');
|
|
114
|
+
methodBody = methodBody.replace(/this\.fileReferencesAuth/g, 'this.layerClassifier.fileReferencesAuth');
|
|
115
|
+
methodBody = methodBody.replace(/this\.fileReferencesValidation/g, 'this.layerClassifier.fileReferencesValidation');
|
|
116
|
+
methodBody = methodBody.replace(/this\.extractResourceFromFile/g, 'this.extractResourceFromFile');
|
|
117
|
+
|
|
118
|
+
endExtractor += methodBody + '\n';
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
endExtractor += `}\n`;
|
|
122
|
+
writeFileSync(join(DEST_DIR, 'endpoint-extractor.ts'), endExtractor);
|
|
123
|
+
|
|
124
|
+
// Finally, rebuild context-enricher.ts Facade
|
|
125
|
+
const facade = `import { AnalysisReport, RefactoringPlan } from '../types.js';
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
// Engines
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* ContextEnricher — Builds an EnrichedTemplateContext from AnalysisReport.
|
|
137
|
+
* Refactored via Strategy/Facade into separate Extractor engines.
|
|
138
|
+
*/
|
|
139
|
+
export class ContextEnricher {
|
|
140
|
+
private domainInferrer = new DomainInferrer();
|
|
141
|
+
private frameworkDetector = new FrameworkDetector();
|
|
142
|
+
|
|
143
|
+
private moduleExtractor = new ModuleExtractor();
|
|
144
|
+
private endpointExtractor = new EndpointExtractor();
|
|
145
|
+
private analysisHelpers = new AnalysisHelpers();
|
|
146
|
+
|
|
147
|
+
enrich(
|
|
148
|
+
report: AnalysisReport,
|
|
149
|
+
plan: RefactoringPlan,
|
|
150
|
+
stack: StackInfo,
|
|
151
|
+
projectPath: string,
|
|
152
|
+
config: AgentGeneratorConfig = DEFAULT_AGENT_CONFIG,
|
|
153
|
+
): EnrichedTemplateContext {
|
|
154
|
+
const modules = this.moduleExtractor.extractModules(report, projectPath);
|
|
155
|
+
const endpoints = this.endpointExtractor.extractEndpoints(report, modules);
|
|
156
|
+
const untestedModules = this.analysisHelpers.findUntestedModules(modules);
|
|
157
|
+
const criticalPaths = this.analysisHelpers.findCriticalPaths(report);
|
|
158
|
+
const projectDepth = this.analysisHelpers.classifyProjectDepth(report);
|
|
159
|
+
const domain = this.domainInferrer.infer(report, projectPath);
|
|
160
|
+
|
|
161
|
+
const fwResult = this.frameworkDetector.detect(projectPath, report);
|
|
162
|
+
|
|
163
|
+
const webFrameworks = (report.projectInfo?.frameworks || [])
|
|
164
|
+
.filter(f => !['Jest', 'Vitest', 'Mocha', 'ESLint', 'Prettier', 'Biome',
|
|
165
|
+
'pytest', 'Ruff', 'mypy', 'Black', 'Flake8', 'RSpec',
|
|
166
|
+
'@jest/globals', '@types/jest', 'ts-jest'].includes(f));
|
|
167
|
+
const stackLabel = [...new Set([...stack.languages, ...webFrameworks])].join(' + ');
|
|
168
|
+
|
|
169
|
+
return {
|
|
170
|
+
report,
|
|
171
|
+
plan,
|
|
172
|
+
stack,
|
|
173
|
+
projectName: report.projectInfo.name || 'Project',
|
|
174
|
+
stackLabel,
|
|
175
|
+
config,
|
|
176
|
+
domain,
|
|
177
|
+
modules,
|
|
178
|
+
endpoints,
|
|
179
|
+
untestedModules,
|
|
180
|
+
criticalPaths,
|
|
181
|
+
projectDepth,
|
|
182
|
+
detectedFrameworks: fwResult.frameworks,
|
|
183
|
+
primaryFramework: fwResult.primaryFramework,
|
|
184
|
+
toolchain: fwResult.toolchain,
|
|
185
|
+
projectStructure: fwResult.projectStructure,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
`;
|
|
190
|
+
writeFileSync(SRC, facade);
|
|
191
|
+
console.log('Enrichers created and context-enricher Facade compiled!');
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { AnalysisReport } from '../../types.js';
|
|
2
|
+
export { ModuleDetail, DetectedEndpoint, EnrichedTemplateContext } from '../types.js';
|
|
3
|
+
export { DescriptionGenerator } from './description-generator.js';
|
|
4
|
+
export { AnalysisHelpers } from './analysis-helpers.js';
|
|
5
|
+
export { StackInfo, EnrichedTemplateContext, AgentGeneratorConfig, DEFAULT_AGENT_CONFIG } from './types.js';
|
|
6
|
+
export { DomainInferrer } from './domain-inferrer.js';
|
|
7
|
+
export { FrameworkDetector } from './framework-detector.js';
|
|
8
|
+
export { ModuleExtractor } from './enrichers/module-extractor.js';
|
|
9
|
+
export { EndpointExtractor } from './enrichers/endpoint-extractor.js';
|
|
10
|
+
export { AnalysisHelpers } from './enrichers/analysis-helpers.js';
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'fs';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
|
|
4
|
+
const SRC = 'src/agent-generator/templates/template-helpers.ts';
|
|
5
|
+
const DEST_DIR = 'src/agent-generator/templates/helpers';
|
|
6
|
+
|
|
7
|
+
if (!existsSync(DEST_DIR)) mkdirSync(DEST_DIR, { recursive: true });
|
|
8
|
+
|
|
9
|
+
const content = readFileSync(SRC, 'utf8');
|
|
10
|
+
|
|
11
|
+
const baseImports = `import { TemplateContext, EnrichedTemplateContext, FrameworkInfo } from '../../types.js';\n\n`;
|
|
12
|
+
|
|
13
|
+
// 1. Base Helpers
|
|
14
|
+
let baseHelpers = baseImports + `export function getEnriched(ctx: TemplateContext): Partial<EnrichedTemplateContext> {
|
|
15
|
+
if ('domain' in ctx) return ctx as EnrichedTemplateContext;
|
|
16
|
+
return {};
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function isEnriched(ctx: TemplateContext): ctx is EnrichedTemplateContext {
|
|
20
|
+
return 'domain' in ctx;
|
|
21
|
+
}
|
|
22
|
+
`;
|
|
23
|
+
['depthScale', 'depthAtLeast'].forEach(m => {
|
|
24
|
+
const r = new RegExp(`(export function ${m}[\\w\\W]*?\\n}\\n)`);
|
|
25
|
+
const match = content.match(r);
|
|
26
|
+
if (match) baseHelpers += '\n' + match[1];
|
|
27
|
+
});
|
|
28
|
+
// Need to replace getEnriched inside baseHelpers if it lacked an import
|
|
29
|
+
writeFileSync(join(DEST_DIR, 'base-helpers.ts'), baseHelpers);
|
|
30
|
+
|
|
31
|
+
// 2. Cross Ref Helpers
|
|
32
|
+
let crossRef = `import { TemplateContext } from '../../types.js';\n\n`;
|
|
33
|
+
['crossRef'].forEach(m => {
|
|
34
|
+
const r = new RegExp(`(export function ${m}[\\w\\W]*?\\n}\\n)`);
|
|
35
|
+
const match = content.match(r);
|
|
36
|
+
if (match) crossRef += match[1] + '\n';
|
|
37
|
+
});
|
|
38
|
+
writeFileSync(join(DEST_DIR, 'cross-ref-helpers.ts'), crossRef);
|
|
39
|
+
|
|
40
|
+
// 3. Summary Helpers
|
|
41
|
+
let summaryHelpers = baseImports + `import { getEnriched, depthScale } from './base-helpers.js';\n\n`;
|
|
42
|
+
['domainBadge', 'complianceBadges', 'depthIndicator', 'modulesSummaryTable', 'integrationsSummary'].forEach(m => {
|
|
43
|
+
const r = new RegExp(`(export function ${m}[\\w\\W]*?\\n}\\n)`);
|
|
44
|
+
const match = content.match(r);
|
|
45
|
+
if (match) summaryHelpers += match[1] + '\n';
|
|
46
|
+
});
|
|
47
|
+
writeFileSync(join(DEST_DIR, 'summary-helpers.ts'), summaryHelpers);
|
|
48
|
+
|
|
49
|
+
// 4. Stack Helpers
|
|
50
|
+
let stackHelpers = baseImports + `import { getEnriched } from './base-helpers.js';\n\n`;
|
|
51
|
+
['frameworkBadge', 'projectStructureBadge', 'toolchainCommands'].forEach(m => {
|
|
52
|
+
const r = new RegExp(`(export function ${m}[\\w\\W]*?\\n}\\n)`);
|
|
53
|
+
const match = content.match(r);
|
|
54
|
+
if (match) stackHelpers += match[1] + '\n';
|
|
55
|
+
});
|
|
56
|
+
writeFileSync(join(DEST_DIR, 'stack-helpers.ts'), stackHelpers);
|
|
57
|
+
|
|
58
|
+
// 5. Structure Helpers
|
|
59
|
+
let structureHelpers = baseImports + `import { getEnriched } from './base-helpers.js';\n\n`;
|
|
60
|
+
['frameworkModuleStructure'].forEach(m => {
|
|
61
|
+
const r = new RegExp(`(export function ${m}[\\w\\W]*?\\n}\\n)`);
|
|
62
|
+
const match = content.match(r);
|
|
63
|
+
if (match) structureHelpers += match[1] + '\n';
|
|
64
|
+
});
|
|
65
|
+
writeFileSync(join(DEST_DIR, 'structure-helpers.ts'), structureHelpers);
|
|
66
|
+
|
|
67
|
+
// 6. Security Helpers
|
|
68
|
+
let securityHelpers = baseImports + `import { getEnriched } from './base-helpers.js';\n\n`;
|
|
69
|
+
['frameworkSecurityChecklist'].forEach(m => {
|
|
70
|
+
const r = new RegExp(`(export function ${m}[\\w\\W]*?\\n}\\n)`);
|
|
71
|
+
const match = content.match(r);
|
|
72
|
+
if (match) securityHelpers += match[1] + '\n';
|
|
73
|
+
});
|
|
74
|
+
writeFileSync(join(DEST_DIR, 'security-helpers.ts'), securityHelpers);
|
|
75
|
+
|
|
76
|
+
// 7. Rebuild Facade template-helpers.ts
|
|
77
|
+
const facade = `/**
|
|
78
|
+
* Template Helpers v3.2 — Facade para todos os utilitários agnósticos e estruturais.
|
|
79
|
+
*
|
|
80
|
+
* Refatorado na Fase 2.3.4: Erradicação final da God Class (777 → 20 linhas).
|
|
81
|
+
*/
|
|
82
|
+
|
|
83
|
+
export * from './helpers/base-helpers.js';
|
|
84
|
+
export * from './helpers/cross-ref-helpers.js';
|
|
85
|
+
export * from './helpers/summary-helpers.js';
|
|
86
|
+
export * from './helpers/stack-helpers.js';
|
|
87
|
+
export * from './helpers/structure-helpers.js';
|
|
88
|
+
export * from './helpers/security-helpers.js';
|
|
89
|
+
`;
|
|
90
|
+
writeFileSync(SRC, facade);
|
|
91
|
+
|
|
92
|
+
console.log('FINAL God Class template-helpers.ts has been shattered into shards!');
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'fs';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
|
|
4
|
+
const SRC = 'src/project-summarizer.ts';
|
|
5
|
+
const DEST_DIR = 'src/summarizer';
|
|
6
|
+
|
|
7
|
+
if (!existsSync(DEST_DIR)) mkdirSync(DEST_DIR, { recursive: true });
|
|
8
|
+
|
|
9
|
+
const content = readFileSync(SRC, 'utf8');
|
|
10
|
+
|
|
11
|
+
const baseImports = `import { existsSync, readFileSync } from 'fs';
|
|
12
|
+
import { join, basename } from 'path';
|
|
13
|
+
import { AnalysisReport, ProjectSummary, FileNode, WorkspaceInfo } from '../types.js';\n\n`;
|
|
14
|
+
|
|
15
|
+
// 1. PackageReader
|
|
16
|
+
let packageReader = baseImports + `export class PackageReader {
|
|
17
|
+
`;
|
|
18
|
+
const mPackage = content.match(/(private readPackageJson[\w\W]*?\n }\n)/);
|
|
19
|
+
if(mPackage) packageReader += mPackage[1].replace('private ', 'public ') + '\n';
|
|
20
|
+
packageReader += `}\n`;
|
|
21
|
+
writeFileSync(join(DEST_DIR, 'package-reader.ts'), packageReader);
|
|
22
|
+
|
|
23
|
+
// 2. ReadmeReader
|
|
24
|
+
let readmeReader = baseImports + `export class ReadmeReader {
|
|
25
|
+
`;
|
|
26
|
+
const mReadme = content.match(/(private readReadme[\w\W]*?\n }\n)/);
|
|
27
|
+
if(mReadme) readmeReader += mReadme[1].replace('private ', 'public ') + '\n';
|
|
28
|
+
readmeReader += `}\n`;
|
|
29
|
+
writeFileSync(join(DEST_DIR, 'readme-reader.ts'), readmeReader);
|
|
30
|
+
|
|
31
|
+
// 3. KeywordExtractor
|
|
32
|
+
let keywordExt = baseImports + `export class KeywordExtractor {
|
|
33
|
+
public static readonly KEYWORD_BLACKLIST = new Set([
|
|
34
|
+
'node_modules', 'dist', 'build', '.git', '.next', 'coverage',
|
|
35
|
+
'__tests__', '__mocks__', 'src', 'lib', 'index', 'main',
|
|
36
|
+
'out', 'tmp', '.cache', 'vendor', '.vscode', '.idea',
|
|
37
|
+
]);
|
|
38
|
+
|
|
39
|
+
`;
|
|
40
|
+
const mKey = content.match(/(private extractKeywords[\w\W]*?\n }\n)/);
|
|
41
|
+
if(mKey) {
|
|
42
|
+
let body = mKey[1].replace('private ', 'public ');
|
|
43
|
+
body = body.replace(/ProjectSummarizer\.KEYWORD_BLACKLIST/g, 'KeywordExtractor.KEYWORD_BLACKLIST');
|
|
44
|
+
keywordExt += body + '\n';
|
|
45
|
+
}
|
|
46
|
+
keywordExt += `}\n`;
|
|
47
|
+
writeFileSync(join(DEST_DIR, 'keyword-extractor.ts'), keywordExt);
|
|
48
|
+
|
|
49
|
+
// 4. PurposeInferrer (buildTechStack, buildDescription, inferPurpose)
|
|
50
|
+
let purposeInf = baseImports + `export class PurposeInferrer {
|
|
51
|
+
`;
|
|
52
|
+
['buildTechStack', 'buildDescription', 'inferPurpose', 'findEntryPoints'].forEach(m => {
|
|
53
|
+
const r = new RegExp(`(private ${m}\\([\\w\\W]*?\\n }\\n)`);
|
|
54
|
+
const match = content.match(r);
|
|
55
|
+
if (match) purposeInf += match[1].replace('private ', 'public ') + '\n';
|
|
56
|
+
});
|
|
57
|
+
purposeInf += `}\n`;
|
|
58
|
+
writeFileSync(join(DEST_DIR, 'purpose-inferrer.ts'), purposeInf);
|
|
59
|
+
|
|
60
|
+
// 5. ModuleInferrer
|
|
61
|
+
let modInf = `import { existsSync, readFileSync } from 'fs';
|
|
62
|
+
import { join, basename } from 'path';
|
|
63
|
+
import { AnalysisReport, ProjectSummary, WorkspaceInfo } from '../types.js';
|
|
64
|
+
|
|
65
|
+
export class ModuleInferrer {
|
|
66
|
+
`;
|
|
67
|
+
['inferModules', 'inferModulesFromWorkspaces', 'getWorkspaceDescription', 'countFilesInDir', 'inferModulesFromStructure', 'describeModule'].forEach(m => {
|
|
68
|
+
const r = new RegExp(`(private ${m}\\([\\w\\W]*?\\n }\\n)`);
|
|
69
|
+
const match = content.match(r);
|
|
70
|
+
if (match) {
|
|
71
|
+
let mb = match[1].replace('private ', 'public ');
|
|
72
|
+
mb = mb.replace(/this\.inferModulesFromWorkspaces/g, 'this.inferModulesFromWorkspaces');
|
|
73
|
+
mb = mb.replace(/this\.inferModulesFromStructure/g, 'this.inferModulesFromStructure');
|
|
74
|
+
mb = mb.replace(/this\.getWorkspaceDescription/g, 'this.getWorkspaceDescription');
|
|
75
|
+
mb = mb.replace(/this\.countFilesInDir/g, 'this.countFilesInDir');
|
|
76
|
+
mb = mb.replace(/this\.describeModule/g, 'this.describeModule');
|
|
77
|
+
modInf += mb + '\n';
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
modInf += `}\n`;
|
|
81
|
+
writeFileSync(join(DEST_DIR, 'module-inferrer.ts'), modInf);
|
|
82
|
+
|
|
83
|
+
// 6. ProjectSummarizer Facade
|
|
84
|
+
const facade = `import { AnalysisReport, ProjectSummary } from './types.js';
|
|
85
|
+
|
|
86
|
+
import { PackageReader } from './summarizer/package-reader.js';
|
|
87
|
+
import { ReadmeReader } from './summarizer/readme-reader.js';
|
|
88
|
+
import { KeywordExtractor } from './summarizer/keyword-extractor.js';
|
|
89
|
+
import { PurposeInferrer } from './summarizer/purpose-inferrer.js';
|
|
90
|
+
import { ModuleInferrer } from './summarizer/module-inferrer.js';
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* ProjectSummarizer — infers what a project does from its metadata,
|
|
94
|
+
* structure, README, package.json, and file naming conventions.
|
|
95
|
+
*
|
|
96
|
+
* Refactored via Facade pattern in v5.0.0
|
|
97
|
+
*/
|
|
98
|
+
export class ProjectSummarizer {
|
|
99
|
+
private packageReader = new PackageReader();
|
|
100
|
+
private readmeReader = new ReadmeReader();
|
|
101
|
+
private keywordExtractor = new KeywordExtractor();
|
|
102
|
+
private purposeInferrer = new PurposeInferrer();
|
|
103
|
+
private moduleInferrer = new ModuleInferrer();
|
|
104
|
+
|
|
105
|
+
summarize(projectPath: string, report: AnalysisReport): ProjectSummary {
|
|
106
|
+
const packageInfo = this.packageReader.readPackageJson(projectPath);
|
|
107
|
+
const readmeContent = this.readmeReader.readReadme(projectPath);
|
|
108
|
+
const modules = this.moduleInferrer.inferModules(report, projectPath);
|
|
109
|
+
const entryPoints = this.purposeInferrer.findEntryPoints(report, projectPath);
|
|
110
|
+
const keywords = this.keywordExtractor.extractKeywords(packageInfo, readmeContent, modules, report);
|
|
111
|
+
const techStack = this.purposeInferrer.buildTechStack(report, packageInfo);
|
|
112
|
+
const description = this.purposeInferrer.buildDescription(packageInfo, readmeContent, report);
|
|
113
|
+
const purpose = this.purposeInferrer.inferPurpose(keywords, modules, report);
|
|
114
|
+
|
|
115
|
+
return {
|
|
116
|
+
description,
|
|
117
|
+
purpose,
|
|
118
|
+
modules,
|
|
119
|
+
techStack,
|
|
120
|
+
entryPoints,
|
|
121
|
+
keywords,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
`;
|
|
126
|
+
writeFileSync(SRC, facade);
|
|
127
|
+
console.log('ProjectSummarizer decomposed and facade generated flawlessly!');
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
echo "=== Iniciando Setup de Refatoração (Fase 2.1) ==="
|
|
3
|
+
|
|
4
|
+
echo "1. Criando Issue no GitHub..."
|
|
5
|
+
gh issue create \
|
|
6
|
+
--title "Refatoração (Fase 2.1): Quebrar html-reporter.ts (God File)" \
|
|
7
|
+
--body "O arquivo src/html-reporter.ts cresceu para ~1800 linhas. Objetivo: Separar CSS, scripts client-side e separar o HTML em sub-seções isoladas (header, score, antipatterns, etc). Requisito: Saída de HTML deve manter 100% de paridade com a versão original." \
|
|
8
|
+
--label "refactor"
|
|
9
|
+
|
|
10
|
+
echo "2. Criando Branch..."
|
|
11
|
+
git checkout main
|
|
12
|
+
git pull origin main
|
|
13
|
+
git checkout -b feature/refactor-html-reporter
|
|
14
|
+
|
|
15
|
+
echo "3. Gerando Snapshot de Referência (Anti-Quebra)..."
|
|
16
|
+
npm run build
|
|
17
|
+
npx architect analyze . > /dev/null
|
|
18
|
+
cp architect-report.html referencia-v5-original.html
|
|
19
|
+
|
|
20
|
+
echo "=== Setup Concluído! ==="
|
|
21
|
+
echo "O arquivo referencia-v5-original.html foi criado para checagem byte a byte."
|