aios-core 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.
- package/.aios-core/.session/current-session.json +14 -0
- package/.aios-core/cli/commands/generate/index.js +222 -0
- package/.aios-core/cli/commands/manifest/index.js +46 -0
- package/.aios-core/cli/commands/manifest/regenerate.js +96 -0
- package/.aios-core/cli/commands/manifest/validate.js +66 -0
- package/.aios-core/cli/commands/mcp/add.js +234 -0
- package/.aios-core/cli/commands/mcp/index.js +76 -0
- package/.aios-core/cli/commands/mcp/link.js +217 -0
- package/.aios-core/cli/commands/mcp/setup.js +164 -0
- package/.aios-core/cli/commands/mcp/status.js +183 -0
- package/.aios-core/cli/commands/metrics/cleanup.js +91 -0
- package/.aios-core/cli/commands/metrics/index.js +65 -0
- package/.aios-core/cli/commands/metrics/record.js +154 -0
- package/.aios-core/cli/commands/metrics/seed.js +126 -0
- package/.aios-core/cli/commands/metrics/show.js +209 -0
- package/.aios-core/cli/commands/migrate/analyze.js +353 -0
- package/.aios-core/cli/commands/migrate/backup.js +352 -0
- package/.aios-core/cli/commands/migrate/execute.js +292 -0
- package/.aios-core/cli/commands/migrate/index.js +441 -0
- package/.aios-core/cli/commands/migrate/rollback.js +323 -0
- package/.aios-core/cli/commands/migrate/update-imports.js +396 -0
- package/.aios-core/cli/commands/migrate/validate.js +452 -0
- package/.aios-core/cli/commands/qa/index.js +56 -0
- package/.aios-core/cli/commands/qa/run.js +163 -0
- package/.aios-core/cli/commands/qa/status.js +195 -0
- package/.aios-core/cli/commands/workers/formatters/info-formatter.js +274 -0
- package/.aios-core/cli/commands/workers/formatters/list-table.js +265 -0
- package/.aios-core/cli/commands/workers/formatters/list-tree.js +159 -0
- package/.aios-core/cli/commands/workers/index.js +56 -0
- package/.aios-core/cli/commands/workers/info.js +194 -0
- package/.aios-core/cli/commands/workers/list.js +214 -0
- package/.aios-core/cli/commands/workers/search-filters.js +185 -0
- package/.aios-core/cli/commands/workers/search-keyword.js +310 -0
- package/.aios-core/cli/commands/workers/search-semantic.js +293 -0
- package/.aios-core/cli/commands/workers/search.js +154 -0
- package/.aios-core/cli/commands/workers/utils/pagination.js +102 -0
- package/.aios-core/cli/index.js +128 -0
- package/.aios-core/cli/utils/output-formatter-cli.js +232 -0
- package/.aios-core/cli/utils/score-calculator.js +221 -0
- package/.aios-core/core/README.md +229 -0
- package/.aios-core/core/config/config-cache.js +233 -0
- package/.aios-core/core/config/config-loader.js +277 -0
- package/.aios-core/core/data/agent-config-requirements.yaml +368 -0
- package/.aios-core/core/data/aios-kb.md +924 -0
- package/.aios-core/core/data/workflow-patterns.yaml +267 -0
- package/.aios-core/core/docs/SHARD-TRANSLATION-GUIDE.md +335 -0
- package/.aios-core/core/docs/component-creation-guide.md +458 -0
- package/.aios-core/core/docs/session-update-pattern.md +307 -0
- package/.aios-core/core/docs/template-syntax.md +267 -0
- package/.aios-core/core/docs/troubleshooting-guide.md +625 -0
- package/.aios-core/core/elicitation/agent-elicitation.js +272 -0
- package/.aios-core/core/elicitation/elicitation-engine.js +479 -0
- package/.aios-core/core/elicitation/session-manager.js +320 -0
- package/.aios-core/core/elicitation/task-elicitation.js +281 -0
- package/.aios-core/core/elicitation/workflow-elicitation.js +315 -0
- package/.aios-core/core/index.esm.js +42 -0
- package/.aios-core/core/index.js +76 -0
- package/.aios-core/core/manifest/manifest-generator.js +386 -0
- package/.aios-core/core/manifest/manifest-validator.js +429 -0
- package/.aios-core/core/mcp/config-migrator.js +340 -0
- package/.aios-core/core/mcp/global-config-manager.js +369 -0
- package/.aios-core/core/mcp/index.js +34 -0
- package/.aios-core/core/mcp/os-detector.js +188 -0
- package/.aios-core/core/mcp/symlink-manager.js +413 -0
- package/.aios-core/core/migration/migration-config.yaml +83 -0
- package/.aios-core/core/migration/module-mapping.yaml +89 -0
- package/.aios-core/core/quality-gates/base-layer.js +134 -0
- package/.aios-core/core/quality-gates/checklist-generator.js +329 -0
- package/.aios-core/core/quality-gates/focus-area-recommender.js +359 -0
- package/.aios-core/core/quality-gates/human-review-orchestrator.js +529 -0
- package/.aios-core/core/quality-gates/layer1-precommit.js +336 -0
- package/.aios-core/core/quality-gates/layer2-pr-automation.js +324 -0
- package/.aios-core/core/quality-gates/layer3-human-review.js +348 -0
- package/.aios-core/core/quality-gates/notification-manager.js +550 -0
- package/.aios-core/core/quality-gates/quality-gate-config.yaml +86 -0
- package/.aios-core/core/quality-gates/quality-gate-manager.js +601 -0
- package/.aios-core/core/registry/README.md +179 -0
- package/.aios-core/core/registry/build-registry.js +452 -0
- package/.aios-core/core/registry/registry-loader.js +330 -0
- package/.aios-core/core/registry/registry-schema.json +166 -0
- package/.aios-core/core/registry/service-registry.json +6586 -0
- package/.aios-core/core/registry/validate-registry.js +340 -0
- package/.aios-core/core/session/context-detector.js +229 -0
- package/.aios-core/core/session/context-loader.js +288 -0
- package/.aios-core/core/utils/output-formatter.js +298 -0
- package/.aios-core/core/utils/security-utils.js +333 -0
- package/.aios-core/core/utils/yaml-validator.js +419 -0
- package/.aios-core/core-config.yaml +382 -0
- package/.aios-core/data/agent-config-requirements.yaml +368 -0
- package/.aios-core/data/aios-kb.md +924 -0
- package/.aios-core/data/technical-preferences.md +4 -0
- package/.aios-core/data/workflow-patterns.yaml +267 -0
- package/.aios-core/development/README.md +142 -0
- package/.aios-core/development/agent-teams/team-all.yaml +15 -0
- package/.aios-core/development/agent-teams/team-fullstack.yaml +18 -0
- package/.aios-core/development/agent-teams/team-ide-minimal.yaml +10 -0
- package/.aios-core/development/agent-teams/team-no-ui.yaml +13 -0
- package/.aios-core/development/agent-teams/team-qa-focused.yaml +155 -0
- package/.aios-core/development/agents/aios-master.md +339 -0
- package/.aios-core/development/agents/analyst.md +195 -0
- package/.aios-core/development/agents/architect.md +359 -0
- package/.aios-core/development/agents/data-engineer.md +468 -0
- package/.aios-core/development/agents/dev.md +390 -0
- package/.aios-core/development/agents/devops.md +398 -0
- package/.aios-core/development/agents/pm.md +198 -0
- package/.aios-core/development/agents/po.md +256 -0
- package/.aios-core/development/agents/qa.md +312 -0
- package/.aios-core/development/agents/sm.md +220 -0
- package/.aios-core/development/agents/ux-design-expert.md +451 -0
- package/.aios-core/development/scripts/agent-assignment-resolver.js +231 -0
- package/.aios-core/development/scripts/agent-config-loader.js +624 -0
- package/.aios-core/development/scripts/agent-exit-hooks.js +96 -0
- package/.aios-core/development/scripts/apply-inline-greeting-all-agents.js +146 -0
- package/.aios-core/development/scripts/audit-agent-config.js +380 -0
- package/.aios-core/development/scripts/backlog-manager.js +404 -0
- package/.aios-core/development/scripts/batch-update-agents-session-context.js +95 -0
- package/.aios-core/development/scripts/decision-context.js +228 -0
- package/.aios-core/development/scripts/decision-log-generator.js +293 -0
- package/.aios-core/development/scripts/decision-log-indexer.js +284 -0
- package/.aios-core/development/scripts/decision-recorder.js +168 -0
- package/.aios-core/development/scripts/dev-context-loader.js +297 -0
- package/.aios-core/development/scripts/generate-greeting.js +160 -0
- package/.aios-core/development/scripts/greeting-builder.js +866 -0
- package/.aios-core/development/scripts/greeting-config-cli.js +85 -0
- package/.aios-core/development/scripts/greeting-preference-manager.js +145 -0
- package/.aios-core/development/scripts/migrate-task-to-v2.js +377 -0
- package/.aios-core/development/scripts/story-index-generator.js +337 -0
- package/.aios-core/development/scripts/story-manager.js +375 -0
- package/.aios-core/development/scripts/story-update-hook.js +259 -0
- package/.aios-core/development/scripts/task-identifier-resolver.js +145 -0
- package/.aios-core/development/scripts/test-greeting-system.js +142 -0
- package/.aios-core/development/scripts/validate-task-v2.js +319 -0
- package/.aios-core/development/scripts/workflow-navigator.js +214 -0
- package/.aios-core/development/tasks/add-mcp.md +319 -0
- package/.aios-core/development/tasks/advanced-elicitation.md +319 -0
- package/.aios-core/development/tasks/analyst-facilitate-brainstorming.md +342 -0
- package/.aios-core/development/tasks/analyze-framework.md +697 -0
- package/.aios-core/development/tasks/analyze-performance.md +637 -0
- package/.aios-core/development/tasks/apply-qa-fixes.md +340 -0
- package/.aios-core/development/tasks/architect-analyze-impact.md +827 -0
- package/.aios-core/development/tasks/audit-codebase.md +429 -0
- package/.aios-core/development/tasks/audit-tailwind-config.md +270 -0
- package/.aios-core/development/tasks/audit-utilities.md +358 -0
- package/.aios-core/development/tasks/bootstrap-shadcn-library.md +286 -0
- package/.aios-core/development/tasks/brownfield-create-epic.md +486 -0
- package/.aios-core/development/tasks/brownfield-create-story.md +357 -0
- package/.aios-core/development/tasks/build-component.md +478 -0
- package/.aios-core/development/tasks/calculate-roi.md +455 -0
- package/.aios-core/development/tasks/ci-cd-configuration.md +764 -0
- package/.aios-core/development/tasks/cleanup-utilities.md +670 -0
- package/.aios-core/development/tasks/collaborative-edit.md +1109 -0
- package/.aios-core/development/tasks/compose-molecule.md +284 -0
- package/.aios-core/development/tasks/consolidate-patterns.md +414 -0
- package/.aios-core/development/tasks/correct-course.md +280 -0
- package/.aios-core/development/tasks/create-agent.md +322 -0
- package/.aios-core/development/tasks/create-brownfield-story.md +727 -0
- package/.aios-core/development/tasks/create-deep-research-prompt.md +499 -0
- package/.aios-core/development/tasks/create-doc.md +316 -0
- package/.aios-core/development/tasks/create-next-story.md +774 -0
- package/.aios-core/development/tasks/create-suite.md +284 -0
- package/.aios-core/development/tasks/create-task.md +372 -0
- package/.aios-core/development/tasks/create-workflow.md +371 -0
- package/.aios-core/development/tasks/db-analyze-hotpaths.md +572 -0
- package/.aios-core/development/tasks/db-apply-migration.md +381 -0
- package/.aios-core/development/tasks/db-bootstrap.md +642 -0
- package/.aios-core/development/tasks/db-domain-modeling.md +693 -0
- package/.aios-core/development/tasks/db-dry-run.md +293 -0
- package/.aios-core/development/tasks/db-env-check.md +260 -0
- package/.aios-core/development/tasks/db-expansion-pack-integration.md +663 -0
- package/.aios-core/development/tasks/db-explain.md +631 -0
- package/.aios-core/development/tasks/db-impersonate.md +495 -0
- package/.aios-core/development/tasks/db-load-csv.md +593 -0
- package/.aios-core/development/tasks/db-policy-apply.md +653 -0
- package/.aios-core/development/tasks/db-rls-audit.md +411 -0
- package/.aios-core/development/tasks/db-rollback.md +739 -0
- package/.aios-core/development/tasks/db-run-sql.md +613 -0
- package/.aios-core/development/tasks/db-schema-audit.md +1011 -0
- package/.aios-core/development/tasks/db-seed.md +390 -0
- package/.aios-core/development/tasks/db-smoke-test.md +351 -0
- package/.aios-core/development/tasks/db-snapshot.md +569 -0
- package/.aios-core/development/tasks/db-supabase-setup.md +712 -0
- package/.aios-core/development/tasks/db-verify-order.md +515 -0
- package/.aios-core/development/tasks/deprecate-component.md +957 -0
- package/.aios-core/development/tasks/dev-apply-qa-fixes.md +318 -0
- package/.aios-core/development/tasks/dev-backlog-debt.md +469 -0
- package/.aios-core/development/tasks/dev-develop-story.md +846 -0
- package/.aios-core/development/tasks/dev-improve-code-quality.md +873 -0
- package/.aios-core/development/tasks/dev-optimize-performance.md +1034 -0
- package/.aios-core/development/tasks/dev-suggest-refactoring.md +871 -0
- package/.aios-core/development/tasks/dev-validate-next-story.md +349 -0
- package/.aios-core/development/tasks/document-project.md +553 -0
- package/.aios-core/development/tasks/environment-bootstrap.md +1311 -0
- package/.aios-core/development/tasks/execute-checklist.md +301 -0
- package/.aios-core/development/tasks/export-design-tokens-dtcg.md +274 -0
- package/.aios-core/development/tasks/extend-pattern.md +269 -0
- package/.aios-core/development/tasks/extract-tokens.md +467 -0
- package/.aios-core/development/tasks/facilitate-brainstorming-session.md +518 -0
- package/.aios-core/development/tasks/generate-ai-frontend-prompt.md +261 -0
- package/.aios-core/development/tasks/generate-documentation.md +284 -0
- package/.aios-core/development/tasks/generate-migration-strategy.md +522 -0
- package/.aios-core/development/tasks/generate-shock-report.md +501 -0
- package/.aios-core/development/tasks/github-devops-github-pr-automation.md +427 -0
- package/.aios-core/development/tasks/github-devops-pre-push-quality-gate.md +733 -0
- package/.aios-core/development/tasks/github-devops-repository-cleanup.md +374 -0
- package/.aios-core/development/tasks/github-devops-version-management.md +483 -0
- package/.aios-core/development/tasks/improve-self.md +823 -0
- package/.aios-core/development/tasks/index-docs.md +388 -0
- package/.aios-core/development/tasks/init-project-status.md +506 -0
- package/.aios-core/development/tasks/integrate-expansion-pack.md +314 -0
- package/.aios-core/development/tasks/kb-mode-interaction.md +284 -0
- package/.aios-core/development/tasks/learn-patterns.md +901 -0
- package/.aios-core/development/tasks/mcp-workflow.md +437 -0
- package/.aios-core/development/tasks/modify-agent.md +382 -0
- package/.aios-core/development/tasks/modify-task.md +425 -0
- package/.aios-core/development/tasks/modify-workflow.md +466 -0
- package/.aios-core/development/tasks/po-backlog-add.md +370 -0
- package/.aios-core/development/tasks/po-manage-story-backlog.md +523 -0
- package/.aios-core/development/tasks/po-pull-story-from-clickup.md +540 -0
- package/.aios-core/development/tasks/po-pull-story.md +316 -0
- package/.aios-core/development/tasks/po-stories-index.md +351 -0
- package/.aios-core/development/tasks/po-sync-story-to-clickup.md +457 -0
- package/.aios-core/development/tasks/po-sync-story.md +303 -0
- package/.aios-core/development/tasks/pr-automation.md +701 -0
- package/.aios-core/development/tasks/propose-modification.md +843 -0
- package/.aios-core/development/tasks/qa-backlog-add-followup.md +425 -0
- package/.aios-core/development/tasks/qa-gate.md +374 -0
- package/.aios-core/development/tasks/qa-generate-tests.md +1175 -0
- package/.aios-core/development/tasks/qa-nfr-assess.md +558 -0
- package/.aios-core/development/tasks/qa-review-proposal.md +1158 -0
- package/.aios-core/development/tasks/qa-review-story.md +683 -0
- package/.aios-core/development/tasks/qa-risk-profile.md +567 -0
- package/.aios-core/development/tasks/qa-run-tests.md +277 -0
- package/.aios-core/development/tasks/qa-test-design.md +388 -0
- package/.aios-core/development/tasks/qa-trace-requirements.md +477 -0
- package/.aios-core/development/tasks/release-management.md +723 -0
- package/.aios-core/development/tasks/security-audit.md +554 -0
- package/.aios-core/development/tasks/security-scan.md +790 -0
- package/.aios-core/development/tasks/setup-database.md +741 -0
- package/.aios-core/development/tasks/setup-design-system.md +462 -0
- package/.aios-core/development/tasks/setup-github.md +874 -0
- package/.aios-core/development/tasks/setup-llm-routing.md +229 -0
- package/.aios-core/development/tasks/setup-mcp-docker.md +584 -0
- package/.aios-core/development/tasks/shard-doc.md +538 -0
- package/.aios-core/development/tasks/sm-create-next-story.md +480 -0
- package/.aios-core/development/tasks/sync-documentation.md +865 -0
- package/.aios-core/development/tasks/tailwind-upgrade.md +294 -0
- package/.aios-core/development/tasks/test-as-user.md +621 -0
- package/.aios-core/development/tasks/test-validation-task.md +171 -0
- package/.aios-core/development/tasks/undo-last.md +347 -0
- package/.aios-core/development/tasks/update-manifest.md +410 -0
- package/.aios-core/development/tasks/ux-create-wireframe.md +617 -0
- package/.aios-core/development/tasks/ux-ds-scan-artifact.md +672 -0
- package/.aios-core/development/tasks/ux-user-research.md +559 -0
- package/.aios-core/development/tasks/validate-next-story.md +423 -0
- package/.aios-core/development/tasks/validate-structure.md +243 -0
- package/.aios-core/development/workflows/README.md +84 -0
- package/.aios-core/development/workflows/brownfield-fullstack.yaml +297 -0
- package/.aios-core/development/workflows/brownfield-service.yaml +187 -0
- package/.aios-core/development/workflows/brownfield-ui.yaml +197 -0
- package/.aios-core/development/workflows/greenfield-fullstack.yaml +333 -0
- package/.aios-core/development/workflows/greenfield-service.yaml +206 -0
- package/.aios-core/development/workflows/greenfield-ui.yaml +235 -0
- package/.aios-core/docs/SHARD-TRANSLATION-GUIDE.md +335 -0
- package/.aios-core/docs/component-creation-guide.md +458 -0
- package/.aios-core/docs/session-update-pattern.md +307 -0
- package/.aios-core/docs/standards/AGENT-PERSONALIZATION-STANDARD-V1.md +572 -0
- package/.aios-core/docs/standards/AIOS-COLOR-PALETTE-QUICK-REFERENCE.md +185 -0
- package/.aios-core/docs/standards/AIOS-COLOR-PALETTE-V2.1.md +354 -0
- package/.aios-core/docs/standards/AIOS-FRAMEWORK-MASTER.md +1963 -0
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1-COMPLETE.md +821 -0
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1-SUMMARY.md +1190 -0
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1.md +439 -0
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.2-SUMMARY.md +1339 -0
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO.md +5398 -0
- package/.aios-core/docs/standards/EXECUTOR-DECISION-TREE.md +697 -0
- package/.aios-core/docs/standards/OPEN-SOURCE-VS-SERVICE-DIFFERENCES.md +511 -0
- package/.aios-core/docs/standards/QUALITY-GATES-SPECIFICATION.md +556 -0
- package/.aios-core/docs/standards/STANDARDS-INDEX.md +210 -0
- package/.aios-core/docs/standards/STORY-TEMPLATE-V2-SPECIFICATION.md +550 -0
- package/.aios-core/docs/standards/TASK-FORMAT-SPECIFICATION-V1.md +1414 -0
- package/.aios-core/docs/standards/V3-ARCHITECTURAL-DECISIONS.md +523 -0
- package/.aios-core/docs/template-syntax.md +267 -0
- package/.aios-core/docs/troubleshooting-guide.md +625 -0
- package/.aios-core/elicitation/agent-elicitation.js +272 -0
- package/.aios-core/elicitation/task-elicitation.js +281 -0
- package/.aios-core/elicitation/workflow-elicitation.js +315 -0
- package/.aios-core/index.d.ts +8 -0
- package/.aios-core/index.esm.js +16 -0
- package/.aios-core/index.js +16 -0
- package/.aios-core/infrastructure/README.md +126 -0
- package/.aios-core/infrastructure/index.js +199 -0
- package/.aios-core/infrastructure/integrations/pm-adapters/README.md +59 -0
- package/.aios-core/infrastructure/integrations/pm-adapters/clickup-adapter.js +345 -0
- package/.aios-core/infrastructure/integrations/pm-adapters/github-adapter.js +392 -0
- package/.aios-core/infrastructure/integrations/pm-adapters/jira-adapter.js +448 -0
- package/.aios-core/infrastructure/integrations/pm-adapters/local-adapter.js +175 -0
- package/.aios-core/infrastructure/scripts/_archived/final-todo-count.js +122 -0
- package/.aios-core/infrastructure/scripts/_archived/fix-yaml-formatting.js +89 -0
- package/.aios-core/infrastructure/scripts/_archived/migration-generator.js +780 -0
- package/.aios-core/infrastructure/scripts/_archived/migration-path-generator.js +950 -0
- package/.aios-core/infrastructure/scripts/_archived/phase2-entrada-saida-errors.js +425 -0
- package/.aios-core/infrastructure/scripts/_archived/phase2-spot-check.js +132 -0
- package/.aios-core/infrastructure/scripts/_archived/phase3-tools-scripts-validation.js +381 -0
- package/.aios-core/infrastructure/scripts/_archived/phase4-metadata-performance.js +203 -0
- package/.aios-core/infrastructure/scripts/_archived/test-yaml-parsing.js +24 -0
- package/.aios-core/infrastructure/scripts/_archived/verify-yaml-fix.js +51 -0
- package/.aios-core/infrastructure/scripts/aios-validator.js +294 -0
- package/.aios-core/infrastructure/scripts/approval-workflow.js +643 -0
- package/.aios-core/infrastructure/scripts/atomic-layer-classifier.js +308 -0
- package/.aios-core/infrastructure/scripts/backup-manager.js +607 -0
- package/.aios-core/infrastructure/scripts/batch-creator.js +608 -0
- package/.aios-core/infrastructure/scripts/branch-manager.js +391 -0
- package/.aios-core/infrastructure/scripts/capability-analyzer.js +535 -0
- package/.aios-core/infrastructure/scripts/clickup-helpers.js +226 -0
- package/.aios-core/infrastructure/scripts/code-quality-improver.js +1312 -0
- package/.aios-core/infrastructure/scripts/commit-message-generator.js +850 -0
- package/.aios-core/infrastructure/scripts/component-generator.js +738 -0
- package/.aios-core/infrastructure/scripts/component-metadata.js +627 -0
- package/.aios-core/infrastructure/scripts/component-search.js +277 -0
- package/.aios-core/infrastructure/scripts/config-cache.js +322 -0
- package/.aios-core/infrastructure/scripts/config-loader.js +349 -0
- package/.aios-core/infrastructure/scripts/conflict-resolver.js +675 -0
- package/.aios-core/infrastructure/scripts/coverage-analyzer.js +882 -0
- package/.aios-core/infrastructure/scripts/dependency-analyzer.js +638 -0
- package/.aios-core/infrastructure/scripts/dependency-impact-analyzer.js +703 -0
- package/.aios-core/infrastructure/scripts/diff-generator.js +129 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/brownfield-analyzer.js +501 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/config-generator.js +329 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/deployment-config-loader.js +282 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/doc-generator.js +331 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/gitignore-generator.js +313 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/index.js +74 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/mode-detector.js +358 -0
- package/.aios-core/infrastructure/scripts/documentation-synchronizer.js +1432 -0
- package/.aios-core/infrastructure/scripts/framework-analyzer.js +746 -0
- package/.aios-core/infrastructure/scripts/git-config-detector.js +293 -0
- package/.aios-core/infrastructure/scripts/git-wrapper.js +443 -0
- package/.aios-core/infrastructure/scripts/improvement-engine.js +758 -0
- package/.aios-core/infrastructure/scripts/improvement-validator.js +710 -0
- package/.aios-core/infrastructure/scripts/llm-routing/install-llm-routing.js +267 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-free.cmd +80 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-free.sh +62 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-max.cmd +26 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-max.sh +18 -0
- package/.aios-core/infrastructure/scripts/modification-risk-assessment.js +970 -0
- package/.aios-core/infrastructure/scripts/modification-validator.js +555 -0
- package/.aios-core/infrastructure/scripts/output-formatter.js +297 -0
- package/.aios-core/infrastructure/scripts/performance-analyzer.js +758 -0
- package/.aios-core/infrastructure/scripts/performance-and-error-resolver.js +258 -0
- package/.aios-core/infrastructure/scripts/performance-optimizer.js +1902 -0
- package/.aios-core/infrastructure/scripts/performance-tracker.js +452 -0
- package/.aios-core/infrastructure/scripts/pm-adapter-factory.js +181 -0
- package/.aios-core/infrastructure/scripts/pm-adapter.js +134 -0
- package/.aios-core/infrastructure/scripts/project-status-loader.js +445 -0
- package/.aios-core/infrastructure/scripts/refactoring-suggester.js +1139 -0
- package/.aios-core/infrastructure/scripts/repository-detector.js +64 -0
- package/.aios-core/infrastructure/scripts/sandbox-tester.js +618 -0
- package/.aios-core/infrastructure/scripts/security-checker.js +359 -0
- package/.aios-core/infrastructure/scripts/source-tree-guardian/index.js +375 -0
- package/.aios-core/infrastructure/scripts/source-tree-guardian/manifest-generator.js +410 -0
- package/.aios-core/infrastructure/scripts/source-tree-guardian/rules/naming-rules.yaml +285 -0
- package/.aios-core/infrastructure/scripts/source-tree-guardian/rules/placement-rules.yaml +262 -0
- package/.aios-core/infrastructure/scripts/source-tree-guardian/validator.js +468 -0
- package/.aios-core/infrastructure/scripts/spot-check-validator.js +149 -0
- package/.aios-core/infrastructure/scripts/status-mapper.js +115 -0
- package/.aios-core/infrastructure/scripts/template-engine.js +240 -0
- package/.aios-core/infrastructure/scripts/template-validator.js +279 -0
- package/.aios-core/infrastructure/scripts/test-generator.js +844 -0
- package/.aios-core/infrastructure/scripts/test-quality-assessment.js +1081 -0
- package/.aios-core/infrastructure/scripts/test-utilities-fast.js +126 -0
- package/.aios-core/infrastructure/scripts/test-utilities.js +200 -0
- package/.aios-core/infrastructure/scripts/tool-resolver.js +360 -0
- package/.aios-core/infrastructure/scripts/transaction-manager.js +590 -0
- package/.aios-core/infrastructure/scripts/usage-analytics.js +634 -0
- package/.aios-core/infrastructure/scripts/validate-output-pattern.js +213 -0
- package/.aios-core/infrastructure/scripts/visual-impact-generator.js +1056 -0
- package/.aios-core/infrastructure/scripts/yaml-validator.js +397 -0
- package/.aios-core/infrastructure/templates/coderabbit.yaml.template +279 -0
- package/.aios-core/infrastructure/templates/core-config/core-config-brownfield.tmpl.yaml +182 -0
- package/.aios-core/infrastructure/templates/core-config/core-config-greenfield.tmpl.yaml +127 -0
- package/.aios-core/infrastructure/templates/github-workflows/README.md +109 -0
- package/.aios-core/infrastructure/templates/github-workflows/ci.yml.template +169 -0
- package/.aios-core/infrastructure/templates/github-workflows/pr-automation.yml.template +330 -0
- package/.aios-core/infrastructure/templates/github-workflows/release.yml.template +196 -0
- package/.aios-core/infrastructure/templates/gitignore/gitignore-aios-base.tmpl +63 -0
- package/.aios-core/infrastructure/templates/gitignore/gitignore-brownfield-merge.tmpl +18 -0
- package/.aios-core/infrastructure/templates/gitignore/gitignore-node.tmpl +85 -0
- package/.aios-core/infrastructure/templates/gitignore/gitignore-python.tmpl +145 -0
- package/.aios-core/infrastructure/templates/project-docs/coding-standards-tmpl.md +346 -0
- package/.aios-core/infrastructure/templates/project-docs/source-tree-tmpl.md +177 -0
- package/.aios-core/infrastructure/templates/project-docs/tech-stack-tmpl.md +267 -0
- package/.aios-core/infrastructure/tests/project-status-loader.test.js +394 -0
- package/.aios-core/infrastructure/tests/regression-suite-v2.md +621 -0
- package/.aios-core/infrastructure/tests/utilities-audit-results.json +501 -0
- package/.aios-core/infrastructure/tests/validate-module.js +97 -0
- package/.aios-core/infrastructure/tools/README.md +222 -0
- package/.aios-core/infrastructure/tools/cli/github-cli.yaml +200 -0
- package/.aios-core/infrastructure/tools/cli/llm-routing.yaml +126 -0
- package/.aios-core/infrastructure/tools/cli/railway-cli.yaml +260 -0
- package/.aios-core/infrastructure/tools/cli/supabase-cli.yaml +224 -0
- package/.aios-core/infrastructure/tools/local/ffmpeg.yaml +261 -0
- package/.aios-core/infrastructure/tools/mcp/21st-dev-magic.yaml +127 -0
- package/.aios-core/infrastructure/tools/mcp/browser.yaml +103 -0
- package/.aios-core/infrastructure/tools/mcp/clickup.yaml +534 -0
- package/.aios-core/infrastructure/tools/mcp/context7.yaml +78 -0
- package/.aios-core/infrastructure/tools/mcp/desktop-commander.yaml +180 -0
- package/.aios-core/infrastructure/tools/mcp/exa.yaml +103 -0
- package/.aios-core/infrastructure/tools/mcp/google-workspace.yaml +930 -0
- package/.aios-core/infrastructure/tools/mcp/n8n.yaml +551 -0
- package/.aios-core/infrastructure/tools/mcp/supabase.yaml +808 -0
- package/.aios-core/install-manifest.yaml +347 -0
- package/.aios-core/manifests/agents.csv +1 -0
- package/.aios-core/manifests/schema/manifest-schema.json +190 -0
- package/.aios-core/manifests/tasks.csv +121 -0
- package/.aios-core/manifests/workers.csv +204 -0
- package/.aios-core/package.json +103 -0
- package/.aios-core/product/README.md +56 -0
- package/.aios-core/product/checklists/architect-checklist.md +444 -0
- package/.aios-core/product/checklists/change-checklist.md +183 -0
- package/.aios-core/product/checklists/database-design-checklist.md +119 -0
- package/.aios-core/product/checklists/dba-predeploy-checklist.md +97 -0
- package/.aios-core/product/checklists/dba-rollback-checklist.md +99 -0
- package/.aios-core/product/checklists/pm-checklist.md +376 -0
- package/.aios-core/product/checklists/po-master-checklist.md +442 -0
- package/.aios-core/product/checklists/pre-push-checklist.md +108 -0
- package/.aios-core/product/checklists/release-checklist.md +122 -0
- package/.aios-core/product/checklists/story-dod-checklist.md +102 -0
- package/.aios-core/product/checklists/story-draft-checklist.md +216 -0
- package/.aios-core/product/data/brainstorming-techniques.md +37 -0
- package/.aios-core/product/data/elicitation-methods.md +135 -0
- package/.aios-core/product/data/mode-selection-best-practices.md +471 -0
- package/.aios-core/product/data/test-levels-framework.md +149 -0
- package/.aios-core/product/data/test-priorities-matrix.md +175 -0
- package/.aios-core/product/templates/1mcp-config.yaml +225 -0
- package/.aios-core/product/templates/activation-instructions-inline-greeting.yaml +63 -0
- package/.aios-core/product/templates/activation-instructions-template.md +258 -0
- package/.aios-core/product/templates/adr.hbs +125 -0
- package/.aios-core/product/templates/agent-template.yaml +121 -0
- package/.aios-core/product/templates/architecture-tmpl.yaml +651 -0
- package/.aios-core/product/templates/brainstorming-output-tmpl.yaml +156 -0
- package/.aios-core/product/templates/brownfield-architecture-tmpl.yaml +476 -0
- package/.aios-core/product/templates/brownfield-prd-tmpl.yaml +280 -0
- package/.aios-core/product/templates/changelog-template.md +134 -0
- package/.aios-core/product/templates/command-rationalization-matrix.md +152 -0
- package/.aios-core/product/templates/competitor-analysis-tmpl.yaml +293 -0
- package/.aios-core/product/templates/component-react-tmpl.tsx +98 -0
- package/.aios-core/product/templates/dbdr.hbs +241 -0
- package/.aios-core/product/templates/design-story-tmpl.yaml +587 -0
- package/.aios-core/product/templates/ds-artifact-analysis.md +70 -0
- package/.aios-core/product/templates/engine/elicitation.js +298 -0
- package/.aios-core/product/templates/engine/index.js +308 -0
- package/.aios-core/product/templates/engine/loader.js +231 -0
- package/.aios-core/product/templates/engine/renderer.js +343 -0
- package/.aios-core/product/templates/engine/schemas/adr.schema.json +102 -0
- package/.aios-core/product/templates/engine/schemas/dbdr.schema.json +205 -0
- package/.aios-core/product/templates/engine/schemas/epic.schema.json +175 -0
- package/.aios-core/product/templates/engine/schemas/pmdr.schema.json +175 -0
- package/.aios-core/product/templates/engine/schemas/prd-v2.schema.json +300 -0
- package/.aios-core/product/templates/engine/schemas/prd.schema.json +152 -0
- package/.aios-core/product/templates/engine/schemas/story.schema.json +222 -0
- package/.aios-core/product/templates/engine/schemas/task.schema.json +154 -0
- package/.aios-core/product/templates/engine/validator.js +294 -0
- package/.aios-core/product/templates/epic.hbs +212 -0
- package/.aios-core/product/templates/eslintrc-security.json +32 -0
- package/.aios-core/product/templates/front-end-architecture-tmpl.yaml +206 -0
- package/.aios-core/product/templates/front-end-spec-tmpl.yaml +349 -0
- package/.aios-core/product/templates/fullstack-architecture-tmpl.yaml +805 -0
- package/.aios-core/product/templates/github-actions-cd.yml +212 -0
- package/.aios-core/product/templates/github-actions-ci.yml +172 -0
- package/.aios-core/product/templates/github-pr-template.md +67 -0
- package/.aios-core/product/templates/gordon-mcp.yaml +140 -0
- package/.aios-core/product/templates/ide-rules/antigravity-rules.md +115 -0
- package/.aios-core/product/templates/ide-rules/claude-rules.md +221 -0
- package/.aios-core/product/templates/ide-rules/cline-rules.md +84 -0
- package/.aios-core/product/templates/ide-rules/copilot-rules.md +92 -0
- package/.aios-core/product/templates/ide-rules/cursor-rules.md +115 -0
- package/.aios-core/product/templates/ide-rules/gemini-rules.md +85 -0
- package/.aios-core/product/templates/ide-rules/roo-rules.md +86 -0
- package/.aios-core/product/templates/ide-rules/trae-rules.md +104 -0
- package/.aios-core/product/templates/ide-rules/windsurf-rules.md +80 -0
- package/.aios-core/product/templates/index-strategy-tmpl.yaml +53 -0
- package/.aios-core/product/templates/market-research-tmpl.yaml +252 -0
- package/.aios-core/product/templates/mcp-workflow.js +271 -0
- package/.aios-core/product/templates/migration-plan-tmpl.yaml +1022 -0
- package/.aios-core/product/templates/migration-strategy-tmpl.md +524 -0
- package/.aios-core/product/templates/personalized-agent-template.md +258 -0
- package/.aios-core/product/templates/personalized-checklist-template.md +340 -0
- package/.aios-core/product/templates/personalized-task-template-v2.md +905 -0
- package/.aios-core/product/templates/personalized-task-template.md +344 -0
- package/.aios-core/product/templates/personalized-template-file.yaml +322 -0
- package/.aios-core/product/templates/personalized-workflow-template.yaml +460 -0
- package/.aios-core/product/templates/pmdr.hbs +186 -0
- package/.aios-core/product/templates/prd-tmpl.yaml +202 -0
- package/.aios-core/product/templates/prd-v2.0.hbs +216 -0
- package/.aios-core/product/templates/prd.hbs +201 -0
- package/.aios-core/product/templates/project-brief-tmpl.yaml +221 -0
- package/.aios-core/product/templates/qa-gate-tmpl.yaml +240 -0
- package/.aios-core/product/templates/rls-policies-tmpl.yaml +1203 -0
- package/.aios-core/product/templates/schema-design-tmpl.yaml +428 -0
- package/.aios-core/product/templates/shock-report-tmpl.html +502 -0
- package/.aios-core/product/templates/state-persistence-tmpl.yaml +219 -0
- package/.aios-core/product/templates/story-tmpl.yaml +332 -0
- package/.aios-core/product/templates/story.hbs +263 -0
- package/.aios-core/product/templates/task-execution-report.md +495 -0
- package/.aios-core/product/templates/task-template.md +123 -0
- package/.aios-core/product/templates/task.hbs +170 -0
- package/.aios-core/product/templates/tmpl-comment-on-examples.sql +158 -0
- package/.aios-core/product/templates/tmpl-migration-script.sql +91 -0
- package/.aios-core/product/templates/tmpl-rls-granular-policies.sql +104 -0
- package/.aios-core/product/templates/tmpl-rls-kiss-policy.sql +10 -0
- package/.aios-core/product/templates/tmpl-rls-roles.sql +135 -0
- package/.aios-core/product/templates/tmpl-rls-simple.sql +77 -0
- package/.aios-core/product/templates/tmpl-rls-tenant.sql +152 -0
- package/.aios-core/product/templates/tmpl-rollback-script.sql +77 -0
- package/.aios-core/product/templates/tmpl-seed-data.sql +140 -0
- package/.aios-core/product/templates/tmpl-smoke-test.sql +16 -0
- package/.aios-core/product/templates/tmpl-staging-copy-merge.sql +139 -0
- package/.aios-core/product/templates/tmpl-stored-proc.sql +140 -0
- package/.aios-core/product/templates/tmpl-trigger.sql +152 -0
- package/.aios-core/product/templates/tmpl-view-materialized.sql +133 -0
- package/.aios-core/product/templates/tmpl-view.sql +177 -0
- package/.aios-core/product/templates/token-exports-css-tmpl.css +240 -0
- package/.aios-core/product/templates/token-exports-tailwind-tmpl.js +395 -0
- package/.aios-core/product/templates/tokens-schema-tmpl.yaml +305 -0
- package/.aios-core/product/templates/workflow-template.yaml +134 -0
- package/.aios-core/quality/metrics-collector.js +572 -0
- package/.aios-core/quality/metrics-hook.js +260 -0
- package/.aios-core/quality/schemas/quality-metrics.schema.json +233 -0
- package/.aios-core/quality/seed-metrics.js +336 -0
- package/.aios-core/scripts/README.md +354 -0
- package/.aios-core/scripts/aios-doc-template.md +325 -0
- package/.aios-core/scripts/batch-migrate-phase1.ps1 +36 -0
- package/.aios-core/scripts/batch-migrate-phase2.ps1 +88 -0
- package/.aios-core/scripts/batch-migrate-phase3.ps1 +45 -0
- package/.aios-core/scripts/command-execution-hook.js +201 -0
- package/.aios-core/scripts/context-detector.js +226 -0
- package/.aios-core/scripts/elicitation-engine.js +385 -0
- package/.aios-core/scripts/elicitation-session-manager.js +300 -0
- package/.aios-core/scripts/migrate-framework-docs.sh +300 -0
- package/.aios-core/scripts/session-context-loader.js +286 -0
- package/.aios-core/scripts/test-template-system.js +941 -0
- package/.aios-core/scripts/validate-phase1.ps1 +35 -0
- package/.aios-core/scripts/workflow-management.md +69 -0
- package/.aios-core/tasks/find-component.md.legacy +391 -0
- package/.aios-core/tasks/generate-commit-message.md.legacy +426 -0
- package/.aios-core/tasks/generate-migration.md.legacy +382 -0
- package/.aios-core/tasks/rollback-modification.md.legacy +307 -0
- package/.aios-core/tasks/update-tests.md.legacy +283 -0
- package/.aios-core/user-guide.md +1413 -0
- package/.aios-core/working-in-the-brownfield.md +361 -0
- package/.claude/CLAUDE.md +221 -0
- package/LICENSE +48 -0
- package/README.md +703 -0
- package/bin/aios-init-old.js +532 -0
- package/bin/aios-init-v4.js +390 -0
- package/bin/aios-init.backup-v1.1.4.js +352 -0
- package/bin/aios-init.js +736 -0
- package/bin/aios-minimal.js +26 -0
- package/bin/aios.js +279 -0
- package/bin/migrate-pm-config.js +219 -0
- package/bin/modules/env-config.js +436 -0
- package/bin/modules/mcp-installer.js +383 -0
- package/bin/utils/install-errors.js +339 -0
- package/bin/utils/install-transaction.js +445 -0
- package/index.d.ts +19 -0
- package/index.esm.js +21 -0
- package/index.js +94 -0
- package/package.json +161 -0
- package/packages/installer/package.json +39 -0
- package/packages/installer/src/config/configure-environment.js +312 -0
- package/packages/installer/src/config/templates/core-config-template.js +183 -0
- package/packages/installer/src/config/templates/env-template.js +127 -0
- package/packages/installer/src/config/validation/config-validator.js +243 -0
- package/packages/installer/src/detection/detect-project-type.js +81 -0
- package/packages/installer/src/wizard/wizard.js +244 -0
- package/packages/installer/tests/integration/environment-configuration.test.js +328 -0
- package/packages/installer/tests/integration/wizard-detection.test.js +349 -0
- package/packages/installer/tests/unit/config-validator.test.js +315 -0
- package/packages/installer/tests/unit/detection/detect-project-type.test.js +401 -0
- package/packages/installer/tests/unit/env-template.test.js +185 -0
- package/src/config/ide-configs.js +189 -0
- package/src/installer/aios-core-installer.js +319 -0
- package/src/installer/dependency-installer.js +335 -0
- package/src/utils/aios-colors.js +234 -0
- package/src/wizard/feedback.js +218 -0
- package/src/wizard/ide-config-generator.js +488 -0
- package/src/wizard/ide-selector.js +84 -0
- package/src/wizard/index.js +589 -0
- package/src/wizard/questions.js +249 -0
- package/src/wizard/validation/index.js +120 -0
- package/src/wizard/validation/report-generator.js +269 -0
- package/src/wizard/validation/troubleshooting-system.js +346 -0
- package/src/wizard/validation/validators/config-validator.js +362 -0
- package/src/wizard/validation/validators/dependency-validator.js +333 -0
- package/src/wizard/validation/validators/file-structure-validator.js +181 -0
- package/src/wizard/validation/validators/mcp-health-checker.js +310 -0
- package/src/wizard/validators.js +274 -0
- package/templates/squad/LICENSE +21 -0
- package/templates/squad/README.md +37 -0
- package/templates/squad/agents/example-agent.yaml +36 -0
- package/templates/squad/package.json +19 -0
- package/templates/squad/squad.yaml +25 -0
- package/templates/squad/tasks/example-task.yaml +46 -0
- package/templates/squad/templates/example-template.md +24 -0
- package/templates/squad/tests/example-agent.test.js +53 -0
- package/templates/squad/workflows/example-workflow.yaml +54 -0
- package/tools/package-builder.js +35 -0
|
@@ -0,0 +1,1034 @@
|
|
|
1
|
+
---
|
|
2
|
+
|
|
3
|
+
## Execution Modes
|
|
4
|
+
|
|
5
|
+
**Choose your execution mode:**
|
|
6
|
+
|
|
7
|
+
### 1. YOLO Mode - Fast, Autonomous (0-1 prompts)
|
|
8
|
+
- Autonomous decision making with logging
|
|
9
|
+
- Minimal user interaction
|
|
10
|
+
- **Best for:** Simple, deterministic tasks
|
|
11
|
+
|
|
12
|
+
### 2. Interactive Mode - Balanced, Educational (5-10 prompts) **[DEFAULT]**
|
|
13
|
+
- Explicit decision checkpoints
|
|
14
|
+
- Educational explanations
|
|
15
|
+
- **Best for:** Learning, complex decisions
|
|
16
|
+
|
|
17
|
+
### 3. Pre-Flight Planning - Comprehensive Upfront Planning
|
|
18
|
+
- Task analysis phase (identify all ambiguities)
|
|
19
|
+
- Zero ambiguity execution
|
|
20
|
+
- **Best for:** Ambiguous requirements, critical work
|
|
21
|
+
|
|
22
|
+
**Parameter:** `mode` (optional, default: `interactive`)
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Task Definition (AIOS Task Format V1.0)
|
|
27
|
+
|
|
28
|
+
```yaml
|
|
29
|
+
task: devOptimizePerformance()
|
|
30
|
+
responsƔvel: Dex (Builder)
|
|
31
|
+
responsavel_type: Agente
|
|
32
|
+
atomic_layer: Strategy
|
|
33
|
+
|
|
34
|
+
**Entrada:**
|
|
35
|
+
- campo: task
|
|
36
|
+
tipo: string
|
|
37
|
+
origem: User Input
|
|
38
|
+
obrigatório: true
|
|
39
|
+
validação: Must be registered task
|
|
40
|
+
|
|
41
|
+
- campo: parameters
|
|
42
|
+
tipo: object
|
|
43
|
+
origem: User Input
|
|
44
|
+
obrigatório: false
|
|
45
|
+
validação: Valid task parameters
|
|
46
|
+
|
|
47
|
+
- campo: mode
|
|
48
|
+
tipo: string
|
|
49
|
+
origem: User Input
|
|
50
|
+
obrigatório: false
|
|
51
|
+
validação: yolo|interactive|pre-flight
|
|
52
|
+
|
|
53
|
+
**SaĆda:**
|
|
54
|
+
- campo: execution_result
|
|
55
|
+
tipo: object
|
|
56
|
+
destino: Memory
|
|
57
|
+
persistido: false
|
|
58
|
+
|
|
59
|
+
- campo: logs
|
|
60
|
+
tipo: array
|
|
61
|
+
destino: File (.ai/logs/*)
|
|
62
|
+
persistido: true
|
|
63
|
+
|
|
64
|
+
- campo: state
|
|
65
|
+
tipo: object
|
|
66
|
+
destino: State management
|
|
67
|
+
persistido: true
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Pre-Conditions
|
|
73
|
+
|
|
74
|
+
**Purpose:** Validate prerequisites BEFORE task execution (blocking)
|
|
75
|
+
|
|
76
|
+
**Checklist:**
|
|
77
|
+
|
|
78
|
+
```yaml
|
|
79
|
+
pre-conditions:
|
|
80
|
+
- [ ] Task is registered; required parameters provided; dependencies met
|
|
81
|
+
tipo: pre-condition
|
|
82
|
+
blocker: true
|
|
83
|
+
validação: |
|
|
84
|
+
Check task is registered; required parameters provided; dependencies met
|
|
85
|
+
error_message: "Pre-condition failed: Task is registered; required parameters provided; dependencies met"
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Post-Conditions
|
|
91
|
+
|
|
92
|
+
**Purpose:** Validate execution success AFTER task completes
|
|
93
|
+
|
|
94
|
+
**Checklist:**
|
|
95
|
+
|
|
96
|
+
```yaml
|
|
97
|
+
post-conditions:
|
|
98
|
+
- [ ] Task completed; exit code 0; expected outputs created
|
|
99
|
+
tipo: post-condition
|
|
100
|
+
blocker: true
|
|
101
|
+
validação: |
|
|
102
|
+
Verify task completed; exit code 0; expected outputs created
|
|
103
|
+
error_message: "Post-condition failed: Task completed; exit code 0; expected outputs created"
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Acceptance Criteria
|
|
109
|
+
|
|
110
|
+
**Purpose:** Definitive pass/fail criteria for task completion
|
|
111
|
+
|
|
112
|
+
**Checklist:**
|
|
113
|
+
|
|
114
|
+
```yaml
|
|
115
|
+
acceptance-criteria:
|
|
116
|
+
- [ ] Task completed as expected; side effects documented
|
|
117
|
+
tipo: acceptance-criterion
|
|
118
|
+
blocker: true
|
|
119
|
+
validação: |
|
|
120
|
+
Assert task completed as expected; side effects documented
|
|
121
|
+
error_message: "Acceptance criterion not met: Task completed as expected; side effects documented"
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## Tools
|
|
127
|
+
|
|
128
|
+
**External/shared resources used by this task:**
|
|
129
|
+
|
|
130
|
+
- **Tool:** task-runner
|
|
131
|
+
- **Purpose:** Task execution and orchestration
|
|
132
|
+
- **Source:** .aios-core/core/task-runner.js
|
|
133
|
+
|
|
134
|
+
- **Tool:** logger
|
|
135
|
+
- **Purpose:** Execution logging and error tracking
|
|
136
|
+
- **Source:** .aios-core/utils/logger.js
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Scripts
|
|
141
|
+
|
|
142
|
+
**Agent-specific code for this task:**
|
|
143
|
+
|
|
144
|
+
- **Script:** execute-task.js
|
|
145
|
+
- **Purpose:** Generic task execution wrapper
|
|
146
|
+
- **Language:** JavaScript
|
|
147
|
+
- **Location:** .aios-core/scripts/execute-task.js
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## Error Handling
|
|
152
|
+
|
|
153
|
+
**Strategy:** retry
|
|
154
|
+
|
|
155
|
+
**Common Errors:**
|
|
156
|
+
|
|
157
|
+
1. **Error:** Task Not Found
|
|
158
|
+
- **Cause:** Specified task not registered in system
|
|
159
|
+
- **Resolution:** Verify task name and registration
|
|
160
|
+
- **Recovery:** List available tasks, suggest similar
|
|
161
|
+
|
|
162
|
+
2. **Error:** Invalid Parameters
|
|
163
|
+
- **Cause:** Task parameters do not match expected schema
|
|
164
|
+
- **Resolution:** Validate parameters against task definition
|
|
165
|
+
- **Recovery:** Provide parameter template, reject execution
|
|
166
|
+
|
|
167
|
+
3. **Error:** Execution Timeout
|
|
168
|
+
- **Cause:** Task exceeds maximum execution time
|
|
169
|
+
- **Resolution:** Optimize task or increase timeout
|
|
170
|
+
- **Recovery:** Kill task, cleanup resources, log state
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## Performance
|
|
175
|
+
|
|
176
|
+
**Expected Metrics:**
|
|
177
|
+
|
|
178
|
+
```yaml
|
|
179
|
+
duration_expected: 5-20 min (estimated)
|
|
180
|
+
cost_estimated: $0.003-0.015
|
|
181
|
+
token_usage: ~2,000-8,000 tokens
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
**Optimization Notes:**
|
|
185
|
+
- Iterative analysis with depth limits; cache intermediate results; batch similar operations
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## Metadata
|
|
190
|
+
|
|
191
|
+
```yaml
|
|
192
|
+
story: N/A
|
|
193
|
+
version: 1.0.0
|
|
194
|
+
dependencies:
|
|
195
|
+
- N/A
|
|
196
|
+
tags:
|
|
197
|
+
- development
|
|
198
|
+
- code
|
|
199
|
+
updated_at: 2025-11-17
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
checklists:
|
|
205
|
+
- dev-master-checklist.md
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
# Optimize Performance - AIOS Developer Task
|
|
209
|
+
|
|
210
|
+
## Purpose
|
|
211
|
+
Analyze code for performance bottlenecks and suggest optimizations to improve runtime performance, memory usage, and scalability.
|
|
212
|
+
|
|
213
|
+
## Command Pattern
|
|
214
|
+
```
|
|
215
|
+
*optimize-performance <path> [options]
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
## Parameters
|
|
219
|
+
- `path`: File or directory path to analyze
|
|
220
|
+
- `options`: Performance analysis configuration
|
|
221
|
+
|
|
222
|
+
### Options
|
|
223
|
+
- `--patterns <types>`: Comma-separated optimization patterns to check
|
|
224
|
+
- `--profile`: Enable runtime profiling (if applicable)
|
|
225
|
+
- `--threshold <level>`: Minimum impact threshold for suggestions (low/medium/high)
|
|
226
|
+
- `--report <file>`: Generate performance report
|
|
227
|
+
- `--apply <optimization-id>`: Apply specific optimization
|
|
228
|
+
- `--recursive`: Analyze directories recursively
|
|
229
|
+
- `--exclude <patterns>`: Exclude file patterns
|
|
230
|
+
- `--focus <category>`: Focus on specific category (algorithm/memory/async/database/bundle/react)
|
|
231
|
+
|
|
232
|
+
## Optimization Patterns
|
|
233
|
+
- `algorithm_complexity`: High time complexity algorithms
|
|
234
|
+
- `loop_optimization`: Nested loops and iterations
|
|
235
|
+
- `memory_usage`: Memory consumption and leaks
|
|
236
|
+
- `async_operations`: Async/await patterns
|
|
237
|
+
- `caching`: Memoization opportunities
|
|
238
|
+
- `database_queries`: N+1 and query optimization
|
|
239
|
+
- `bundle_size`: JavaScript bundle optimization
|
|
240
|
+
- `react_performance`: React-specific optimizations
|
|
241
|
+
- `string_operations`: String manipulation
|
|
242
|
+
- `object_operations`: Object creation and access
|
|
243
|
+
|
|
244
|
+
## Examples
|
|
245
|
+
```bash
|
|
246
|
+
# Analyze single file
|
|
247
|
+
*optimize-performance aios-core/scripts/data-processor.js
|
|
248
|
+
|
|
249
|
+
# Analyze directory with specific patterns
|
|
250
|
+
*optimize-performance aios-core/agents --patterns algorithm_complexity,async_operations --recursive
|
|
251
|
+
|
|
252
|
+
# Generate performance report
|
|
253
|
+
*optimize-performance . --recursive --report performance-report.json
|
|
254
|
+
|
|
255
|
+
# Focus on database optimizations
|
|
256
|
+
*optimize-performance aios-core/services --focus database --recursive
|
|
257
|
+
|
|
258
|
+
# Apply specific optimization
|
|
259
|
+
*optimize-performance aios-core/scripts/calculator.js --apply opt-001
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
## Implementation
|
|
263
|
+
|
|
264
|
+
```javascript
|
|
265
|
+
const fs = require('fs').promises;
|
|
266
|
+
const path = require('path');
|
|
267
|
+
const chalk = require('chalk');
|
|
268
|
+
const inquirer = require('inquirer');
|
|
269
|
+
const glob = require('glob').promises;
|
|
270
|
+
|
|
271
|
+
class OptimizePerformanceTask {
|
|
272
|
+
constructor() {
|
|
273
|
+
this.taskName = 'optimize-performance';
|
|
274
|
+
this.description = 'Analyze and optimize code performance';
|
|
275
|
+
this.rootPath = process.cwd();
|
|
276
|
+
this.performanceOptimizer = null;
|
|
277
|
+
this.analysisResults = [];
|
|
278
|
+
this.appliedOptimizations = [];
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
async execute(params) {
|
|
282
|
+
try {
|
|
283
|
+
console.log(chalk.blue('ā” AIOS Performance Optimization'));
|
|
284
|
+
console.log(chalk.gray('Analyzing code for performance improvements\n'));
|
|
285
|
+
|
|
286
|
+
// Parse parameters
|
|
287
|
+
const config = await this.parseParameters(params);
|
|
288
|
+
|
|
289
|
+
// Initialize dependencies
|
|
290
|
+
await this.initializeDependencies();
|
|
291
|
+
|
|
292
|
+
// Get files to analyze
|
|
293
|
+
const files = await this.getFilesToAnalyze(config);
|
|
294
|
+
|
|
295
|
+
if (files.length === 0) {
|
|
296
|
+
console.log(chalk.yellow('No files found to analyze'));
|
|
297
|
+
return { success: true, results: [] };
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
console.log(chalk.gray(`Found ${files.length} files to analyze\n`));
|
|
301
|
+
|
|
302
|
+
// Execute based on mode
|
|
303
|
+
if (config.apply) {
|
|
304
|
+
// Apply specific optimization
|
|
305
|
+
await this.applyOptimization(config.apply, config);
|
|
306
|
+
} else {
|
|
307
|
+
// Analyze files
|
|
308
|
+
await this.analyzeFiles(files, config);
|
|
309
|
+
|
|
310
|
+
// Display results
|
|
311
|
+
await this.displayResults(config);
|
|
312
|
+
|
|
313
|
+
// Generate report if requested
|
|
314
|
+
if (config.report) {
|
|
315
|
+
await this.generateReport(config.report);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
return {
|
|
320
|
+
success: true,
|
|
321
|
+
filesAnalyzed: files.length,
|
|
322
|
+
totalIssues: this.getTotalIssues(),
|
|
323
|
+
criticalIssues: this.getCriticalIssues()
|
|
324
|
+
};
|
|
325
|
+
|
|
326
|
+
} catch (error) {
|
|
327
|
+
console.error(chalk.red(`\nā Performance optimization failed: ${error.message}`));
|
|
328
|
+
throw error;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
async parseParameters(params) {
|
|
333
|
+
if (params.length < 1) {
|
|
334
|
+
throw new Error('Usage: *optimize-performance <path> [options]');
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
const config = {
|
|
338
|
+
targetPath: params[0],
|
|
339
|
+
patterns: null,
|
|
340
|
+
profile: false,
|
|
341
|
+
threshold: 'low',
|
|
342
|
+
report: null,
|
|
343
|
+
apply: null,
|
|
344
|
+
recursive: false,
|
|
345
|
+
exclude: [],
|
|
346
|
+
focus: null
|
|
347
|
+
};
|
|
348
|
+
|
|
349
|
+
// Parse options
|
|
350
|
+
for (let i = 1; i < params.length; i++) {
|
|
351
|
+
const param = params[i];
|
|
352
|
+
|
|
353
|
+
if (param === '--profile') {
|
|
354
|
+
config.profile = true;
|
|
355
|
+
} else if (param === '--recursive') {
|
|
356
|
+
config.recursive = true;
|
|
357
|
+
} else if (param.startsWith('--patterns') && params[i + 1]) {
|
|
358
|
+
config.patterns = params[++i].split(',').map(p => p.trim());
|
|
359
|
+
} else if (param.startsWith('--threshold') && params[i + 1]) {
|
|
360
|
+
config.threshold = params[++i];
|
|
361
|
+
} else if (param.startsWith('--report') && params[i + 1]) {
|
|
362
|
+
config.report = params[++i];
|
|
363
|
+
} else if (param.startsWith('--apply') && params[i + 1]) {
|
|
364
|
+
config.apply = params[++i];
|
|
365
|
+
} else if (param.startsWith('--exclude') && params[i + 1]) {
|
|
366
|
+
config.exclude = params[++i].split(',').map(e => e.trim());
|
|
367
|
+
} else if (param.startsWith('--focus') && params[i + 1]) {
|
|
368
|
+
config.focus = params[++i];
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
// Validate threshold
|
|
373
|
+
if (!['low', 'medium', 'high'].includes(config.threshold)) {
|
|
374
|
+
throw new Error('Threshold must be: low, medium, or high');
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
return config;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
async initializeDependencies() {
|
|
381
|
+
try {
|
|
382
|
+
const PerformanceOptimizer = require('../scripts/performance-optimizer');
|
|
383
|
+
this.performanceOptimizer = new PerformanceOptimizer({
|
|
384
|
+
rootPath: this.rootPath,
|
|
385
|
+
enableProfiling: true
|
|
386
|
+
});
|
|
387
|
+
|
|
388
|
+
// Listen to events
|
|
389
|
+
this.performanceOptimizer.on('analyzed', (analysis) => {
|
|
390
|
+
this.analysisResults.push(analysis);
|
|
391
|
+
});
|
|
392
|
+
|
|
393
|
+
} catch (error) {
|
|
394
|
+
throw new Error(`Failed to initialize dependencies: ${error.message}`);
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
async getFilesToAnalyze(config) {
|
|
399
|
+
const targetPath = path.resolve(this.rootPath, config.targetPath);
|
|
400
|
+
const files = [];
|
|
401
|
+
|
|
402
|
+
try {
|
|
403
|
+
const stats = await fs.stat(targetPath);
|
|
404
|
+
|
|
405
|
+
if (stats.isFile()) {
|
|
406
|
+
// Single file
|
|
407
|
+
if (this.shouldAnalyzeFile(targetPath, config)) {
|
|
408
|
+
files.push(targetPath);
|
|
409
|
+
}
|
|
410
|
+
} else if (stats.isDirectory()) {
|
|
411
|
+
// Directory
|
|
412
|
+
const pattern = config.recursive ? '**/*.{js,jsx,ts,tsx}' : '*.{js,jsx,ts,tsx}';
|
|
413
|
+
const globPattern = path.join(targetPath, pattern);
|
|
414
|
+
|
|
415
|
+
const matches = await glob(globPattern, {
|
|
416
|
+
ignore: config.exclude.map(e => path.join(targetPath, '**', e)),
|
|
417
|
+
nodir: true
|
|
418
|
+
});
|
|
419
|
+
|
|
420
|
+
for (const match of matches) {
|
|
421
|
+
if (this.shouldAnalyzeFile(match, config)) {
|
|
422
|
+
files.push(match);
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
} catch (error) {
|
|
427
|
+
console.warn(chalk.yellow(`Cannot access ${targetPath}: ${error.message}`));
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
return files;
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
shouldAnalyzeFile(filePath, config) {
|
|
434
|
+
// Skip test files unless analyzing tests
|
|
435
|
+
if (filePath.includes('.test.') || filePath.includes('.spec.')) {
|
|
436
|
+
return false;
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
// Skip minified files
|
|
440
|
+
if (filePath.includes('.min.')) {
|
|
441
|
+
return false;
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
// Skip build artifacts
|
|
445
|
+
if (filePath.includes('/dist/') || filePath.includes('/build/')) {
|
|
446
|
+
return false;
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
// Skip node_modules
|
|
450
|
+
if (filePath.includes('node_modules')) {
|
|
451
|
+
return false;
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
return true;
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
async analyzeFiles(files, config) {
|
|
458
|
+
console.log(chalk.blue('š Analyzing performance...'));
|
|
459
|
+
|
|
460
|
+
const progressInterval = Math.max(1, Math.floor(files.length / 20));
|
|
461
|
+
|
|
462
|
+
for (let i = 0; i < files.length; i++) {
|
|
463
|
+
const file = files[i];
|
|
464
|
+
|
|
465
|
+
try {
|
|
466
|
+
const analysis = await this.performanceOptimizer.analyzePerformance(file, {
|
|
467
|
+
patterns: config.patterns,
|
|
468
|
+
enableProfiling: config.profile
|
|
469
|
+
});
|
|
470
|
+
|
|
471
|
+
// Filter by threshold
|
|
472
|
+
if (analysis.issues && analysis.issues.length > 0) {
|
|
473
|
+
analysis.issues = this.filterByThreshold(analysis.issues, config.threshold);
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
// Filter by focus category
|
|
477
|
+
if (config.focus && analysis.issues) {
|
|
478
|
+
analysis.issues = analysis.issues.filter(issue =>
|
|
479
|
+
issue.category === config.focus
|
|
480
|
+
);
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
// Show progress
|
|
484
|
+
if (i % progressInterval === 0) {
|
|
485
|
+
const progress = Math.floor((i / files.length) * 100);
|
|
486
|
+
process.stdout.write(`\rProgress: ${progress}%`);
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
} catch (error) {
|
|
490
|
+
console.warn(chalk.yellow(`\nFailed to analyze ${file}: ${error.message}`));
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
console.log('\rProgress: 100%\n');
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
filterByThreshold(issues, threshold) {
|
|
498
|
+
const thresholdMap = {
|
|
499
|
+
low: ['low', 'medium', 'high', 'critical'],
|
|
500
|
+
medium: ['medium', 'high', 'critical'],
|
|
501
|
+
high: ['high', 'critical']
|
|
502
|
+
};
|
|
503
|
+
|
|
504
|
+
const allowedImpacts = thresholdMap[threshold];
|
|
505
|
+
|
|
506
|
+
return issues.filter(issue =>
|
|
507
|
+
allowedImpacts.includes(issue.impact) ||
|
|
508
|
+
allowedImpacts.includes(issue.severity)
|
|
509
|
+
);
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
async displayResults(config) {
|
|
513
|
+
const totalIssues = this.getTotalIssues();
|
|
514
|
+
|
|
515
|
+
if (totalIssues === 0) {
|
|
516
|
+
console.log(chalk.green('ā
No performance issues found!'));
|
|
517
|
+
console.log(chalk.gray('Your code is already well optimized.'));
|
|
518
|
+
return;
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
console.log(chalk.blue(`\nš Performance Analysis Results\n`));
|
|
522
|
+
console.log(chalk.gray('Found ') + chalk.yellow(totalIssues) + chalk.gray(' optimization opportunities\n'));
|
|
523
|
+
|
|
524
|
+
// Group by category
|
|
525
|
+
const byCategory = this.groupByCategory();
|
|
526
|
+
|
|
527
|
+
// Display by category
|
|
528
|
+
for (const [category, results] of Object.entries(byCategory)) {
|
|
529
|
+
console.log(chalk.blue(`\n${this.getCategoryIcon(category)} ${this.getCategoryName(category)}`));
|
|
530
|
+
console.log(chalk.gray('ā'.repeat(50)));
|
|
531
|
+
|
|
532
|
+
for (const result of results) {
|
|
533
|
+
this.displayFileResults(result);
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
// Show performance scores
|
|
538
|
+
this.displayPerformanceScores();
|
|
539
|
+
|
|
540
|
+
// Show top recommendations
|
|
541
|
+
this.displayTopRecommendations();
|
|
542
|
+
|
|
543
|
+
// Show next steps
|
|
544
|
+
console.log(chalk.blue('\nš Next Steps:'));
|
|
545
|
+
console.log('1. Review critical issues first');
|
|
546
|
+
console.log('2. Apply optimizations incrementally');
|
|
547
|
+
console.log('3. Test after each optimization');
|
|
548
|
+
console.log('4. Monitor performance improvements');
|
|
549
|
+
if (config.report) {
|
|
550
|
+
console.log(`5. View detailed report: ${config.report}`);
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
displayFileResults(result) {
|
|
555
|
+
const relativePath = path.relative(this.rootPath, result.filePath);
|
|
556
|
+
|
|
557
|
+
console.log(`\nš ${chalk.blue(relativePath)}`);
|
|
558
|
+
|
|
559
|
+
if (result.metrics?.performanceScore !== undefined) {
|
|
560
|
+
const score = result.metrics.performanceScore;
|
|
561
|
+
const scoreColor = score >= 80 ? chalk.green : score >= 60 ? chalk.yellow : chalk.red;
|
|
562
|
+
console.log(` Performance Score: ${scoreColor(score + '/100')}`);
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
// Display issues
|
|
566
|
+
for (const issue of result.issues) {
|
|
567
|
+
this.displayIssue(issue);
|
|
568
|
+
|
|
569
|
+
// Display suggestions for this issue
|
|
570
|
+
const suggestion = result.suggestions?.find(s =>
|
|
571
|
+
s.issueId === issue.id || s.pattern === issue.pattern
|
|
572
|
+
);
|
|
573
|
+
|
|
574
|
+
if (suggestion) {
|
|
575
|
+
this.displaySuggestion(suggestion);
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
displayIssue(issue) {
|
|
581
|
+
const impactColors = {
|
|
582
|
+
critical: chalk.red,
|
|
583
|
+
high: chalk.red,
|
|
584
|
+
medium: chalk.yellow,
|
|
585
|
+
low: chalk.gray
|
|
586
|
+
};
|
|
587
|
+
|
|
588
|
+
const impactColor = impactColors[issue.impact || issue.severity] || chalk.gray;
|
|
589
|
+
|
|
590
|
+
console.log(`\n ${impactColor(`[${(issue.impact || issue.severity || 'info').toUpperCase()}]`)} ${issue.description}`);
|
|
591
|
+
|
|
592
|
+
if (issue.location) {
|
|
593
|
+
console.log(chalk.gray(` Location: Line ${issue.location.start?.line || '?'}`));
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
if (issue.type) {
|
|
597
|
+
console.log(chalk.gray(` Type: ${issue.type}`));
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
displaySuggestion(suggestion) {
|
|
602
|
+
console.log(chalk.green(' š” Suggestion:'));
|
|
603
|
+
|
|
604
|
+
if (suggestion.optimizations) {
|
|
605
|
+
for (const opt of suggestion.optimizations) {
|
|
606
|
+
console.log(` - ${opt.description}`);
|
|
607
|
+
|
|
608
|
+
if (opt.code) {
|
|
609
|
+
console.log(chalk.gray(' Example:'));
|
|
610
|
+
const codeLines = opt.code.split('\n');
|
|
611
|
+
for (const line of codeLines) {
|
|
612
|
+
console.log(chalk.gray(` ${line}`));
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
if (opt.improvement) {
|
|
617
|
+
console.log(chalk.green(` ā ${opt.improvement}`));
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
if (suggestion.estimatedImprovement) {
|
|
623
|
+
console.log(chalk.green(` Estimated improvement: ${suggestion.estimatedImprovement}`));
|
|
624
|
+
}
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
groupByCategory() {
|
|
628
|
+
const grouped = {};
|
|
629
|
+
|
|
630
|
+
for (const result of this.analysisResults) {
|
|
631
|
+
if (!result.issues || result.issues.length === 0) continue;
|
|
632
|
+
|
|
633
|
+
for (const issue of result.issues) {
|
|
634
|
+
const category = issue.category || 'other';
|
|
635
|
+
|
|
636
|
+
if (!grouped[category]) {
|
|
637
|
+
grouped[category] = [];
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
// Find or create file entry
|
|
641
|
+
let fileEntry = grouped[category].find(r => r.filePath === result.filePath);
|
|
642
|
+
if (!fileEntry) {
|
|
643
|
+
fileEntry = {
|
|
644
|
+
filePath: result.filePath,
|
|
645
|
+
issues: [],
|
|
646
|
+
suggestions: result.suggestions || [],
|
|
647
|
+
metrics: result.metrics
|
|
648
|
+
};
|
|
649
|
+
grouped[category].push(fileEntry);
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
fileEntry.issues.push(issue);
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
|
|
656
|
+
return grouped;
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
getCategoryIcon(category) {
|
|
660
|
+
const icons = {
|
|
661
|
+
algorithm: 'š',
|
|
662
|
+
memory: 'š¾',
|
|
663
|
+
async: 'ā”',
|
|
664
|
+
database: 'šļø',
|
|
665
|
+
bundle: 'š¦',
|
|
666
|
+
react: 'āļø',
|
|
667
|
+
caching: 'š°',
|
|
668
|
+
framework: 'šļø',
|
|
669
|
+
other: 'š§'
|
|
670
|
+
};
|
|
671
|
+
|
|
672
|
+
return icons[category] || icons.other;
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
getCategoryName(category) {
|
|
676
|
+
const names = {
|
|
677
|
+
algorithm: 'Algorithm Optimization',
|
|
678
|
+
memory: 'Memory Usage',
|
|
679
|
+
async: 'Async Operations',
|
|
680
|
+
database: 'Database Queries',
|
|
681
|
+
bundle: 'Bundle Size',
|
|
682
|
+
react: 'React Performance',
|
|
683
|
+
caching: 'Caching Opportunities',
|
|
684
|
+
framework: 'Framework-Specific',
|
|
685
|
+
other: 'Other Optimizations'
|
|
686
|
+
};
|
|
687
|
+
|
|
688
|
+
return names[category] || category;
|
|
689
|
+
}
|
|
690
|
+
|
|
691
|
+
displayPerformanceScores() {
|
|
692
|
+
console.log(chalk.blue('\nš Performance Summary'));
|
|
693
|
+
console.log(chalk.gray('ā'.repeat(50)));
|
|
694
|
+
|
|
695
|
+
let totalScore = 0;
|
|
696
|
+
let fileCount = 0;
|
|
697
|
+
|
|
698
|
+
for (const result of this.analysisResults) {
|
|
699
|
+
if (result.metrics?.performanceScore !== undefined) {
|
|
700
|
+
totalScore += result.metrics.performanceScore;
|
|
701
|
+
fileCount++;
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
|
|
705
|
+
if (fileCount > 0) {
|
|
706
|
+
const avgScore = Math.round(totalScore / fileCount);
|
|
707
|
+
const scoreColor = avgScore >= 80 ? chalk.green : avgScore >= 60 ? chalk.yellow : chalk.red;
|
|
708
|
+
|
|
709
|
+
console.log(`Average Performance Score: ${scoreColor(avgScore + '/100')}`);
|
|
710
|
+
console.log(`Files Analyzed: ${fileCount}`);
|
|
711
|
+
}
|
|
712
|
+
|
|
713
|
+
// Issue breakdown
|
|
714
|
+
const criticalCount = this.getCriticalIssues();
|
|
715
|
+
const highCount = this.getIssuesByImpact('high');
|
|
716
|
+
const mediumCount = this.getIssuesByImpact('medium');
|
|
717
|
+
const lowCount = this.getIssuesByImpact('low');
|
|
718
|
+
|
|
719
|
+
console.log('\nIssue Breakdown:');
|
|
720
|
+
if (criticalCount > 0) console.log(chalk.red(` Critical: ${criticalCount}`));
|
|
721
|
+
if (highCount > 0) console.log(chalk.red(` High: ${highCount}`));
|
|
722
|
+
if (mediumCount > 0) console.log(chalk.yellow(` Medium: ${mediumCount}`));
|
|
723
|
+
if (lowCount > 0) console.log(chalk.gray(` Low: ${lowCount}`));
|
|
724
|
+
}
|
|
725
|
+
|
|
726
|
+
displayTopRecommendations() {
|
|
727
|
+
console.log(chalk.blue('\nšÆ Top Recommendations'));
|
|
728
|
+
console.log(chalk.gray('ā'.repeat(50)));
|
|
729
|
+
|
|
730
|
+
const recommendations = this.getTopRecommendations();
|
|
731
|
+
|
|
732
|
+
if (recommendations.length === 0) {
|
|
733
|
+
console.log(chalk.gray('No specific recommendations'));
|
|
734
|
+
return;
|
|
735
|
+
}
|
|
736
|
+
|
|
737
|
+
for (let i = 0; i < Math.min(5, recommendations.length); i++) {
|
|
738
|
+
const rec = recommendations[i];
|
|
739
|
+
console.log(`\n${i + 1}. ${rec.title}`);
|
|
740
|
+
console.log(chalk.gray(` ${rec.description}`));
|
|
741
|
+
if (rec.files) {
|
|
742
|
+
console.log(chalk.gray(` Files affected: ${rec.files.length}`));
|
|
743
|
+
}
|
|
744
|
+
}
|
|
745
|
+
}
|
|
746
|
+
|
|
747
|
+
getTopRecommendations() {
|
|
748
|
+
const recommendations = [];
|
|
749
|
+
const byCategory = this.groupByCategory();
|
|
750
|
+
|
|
751
|
+
// Algorithm complexity issues
|
|
752
|
+
if (byCategory.algorithm?.length > 0) {
|
|
753
|
+
const highComplexity = byCategory.algorithm.filter(r =>
|
|
754
|
+
r.issues.some(i => i.type === 'high_complexity' && i.severity === 'critical')
|
|
755
|
+
);
|
|
756
|
+
|
|
757
|
+
if (highComplexity.length > 0) {
|
|
758
|
+
recommendations.push({
|
|
759
|
+
title: 'Optimize High-Complexity Algorithms',
|
|
760
|
+
description: 'Several functions have O(n²) or worse complexity. Consider using more efficient algorithms.',
|
|
761
|
+
priority: 'critical',
|
|
762
|
+
files: highComplexity
|
|
763
|
+
});
|
|
764
|
+
}
|
|
765
|
+
}
|
|
766
|
+
|
|
767
|
+
// Async issues
|
|
768
|
+
if (byCategory.async?.length > 0) {
|
|
769
|
+
const sequentialAwaits = byCategory.async.filter(r =>
|
|
770
|
+
r.issues.some(i => i.type === 'sequential_awaits')
|
|
771
|
+
);
|
|
772
|
+
|
|
773
|
+
if (sequentialAwaits.length > 0) {
|
|
774
|
+
recommendations.push({
|
|
775
|
+
title: 'Parallelize Async Operations',
|
|
776
|
+
description: 'Use Promise.all to run independent async operations in parallel.',
|
|
777
|
+
priority: 'high',
|
|
778
|
+
files: sequentialAwaits
|
|
779
|
+
});
|
|
780
|
+
}
|
|
781
|
+
}
|
|
782
|
+
|
|
783
|
+
// Database issues
|
|
784
|
+
if (byCategory.database?.length > 0) {
|
|
785
|
+
const nPlusOne = byCategory.database.filter(r =>
|
|
786
|
+
r.issues.some(i => i.type === 'n_plus_one')
|
|
787
|
+
);
|
|
788
|
+
|
|
789
|
+
if (nPlusOne.length > 0) {
|
|
790
|
+
recommendations.push({
|
|
791
|
+
title: 'Fix N+1 Query Problems',
|
|
792
|
+
description: 'Database queries in loops cause performance degradation. Use JOINs or batch loading.',
|
|
793
|
+
priority: 'critical',
|
|
794
|
+
files: nPlusOne
|
|
795
|
+
});
|
|
796
|
+
}
|
|
797
|
+
}
|
|
798
|
+
|
|
799
|
+
// Memory issues
|
|
800
|
+
if (byCategory.memory?.length > 0) {
|
|
801
|
+
recommendations.push({
|
|
802
|
+
title: 'Optimize Memory Usage',
|
|
803
|
+
description: 'Review memory allocations and potential leaks. Consider using more efficient data structures.',
|
|
804
|
+
priority: 'medium',
|
|
805
|
+
files: byCategory.memory
|
|
806
|
+
});
|
|
807
|
+
}
|
|
808
|
+
|
|
809
|
+
// Caching opportunities
|
|
810
|
+
if (byCategory.caching?.length > 0) {
|
|
811
|
+
recommendations.push({
|
|
812
|
+
title: 'Implement Caching',
|
|
813
|
+
description: 'Add memoization or caching for expensive repeated operations.',
|
|
814
|
+
priority: 'medium',
|
|
815
|
+
files: byCategory.caching
|
|
816
|
+
});
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
// Sort by priority
|
|
820
|
+
const priorityOrder = { critical: 0, high: 1, medium: 2, low: 3 };
|
|
821
|
+
recommendations.sort((a, b) =>
|
|
822
|
+
priorityOrder[a.priority] - priorityOrder[b.priority]
|
|
823
|
+
);
|
|
824
|
+
|
|
825
|
+
return recommendations;
|
|
826
|
+
}
|
|
827
|
+
|
|
828
|
+
async applyOptimization(optimizationId, config) {
|
|
829
|
+
console.log(chalk.blue(`\nš§ Applying optimization: ${optimizationId}`));
|
|
830
|
+
|
|
831
|
+
// Find the optimization in results
|
|
832
|
+
let targetOptimization = null;
|
|
833
|
+
let targetFile = null;
|
|
834
|
+
|
|
835
|
+
for (const result of this.analysisResults) {
|
|
836
|
+
const suggestion = result.suggestions?.find(s =>
|
|
837
|
+
s.issueId === optimizationId || s.id === optimizationId
|
|
838
|
+
);
|
|
839
|
+
|
|
840
|
+
if (suggestion) {
|
|
841
|
+
targetOptimization = suggestion;
|
|
842
|
+
targetFile = result.filePath;
|
|
843
|
+
break;
|
|
844
|
+
}
|
|
845
|
+
}
|
|
846
|
+
|
|
847
|
+
if (!targetOptimization) {
|
|
848
|
+
throw new Error(`Optimization not found: ${optimizationId}`);
|
|
849
|
+
}
|
|
850
|
+
|
|
851
|
+
console.log(chalk.gray(`File: ${path.relative(this.rootPath, targetFile)}`));
|
|
852
|
+
console.log(chalk.gray(`Type: ${targetOptimization.type || 'General optimization'}`));
|
|
853
|
+
|
|
854
|
+
// Show optimization details
|
|
855
|
+
if (targetOptimization.optimizations) {
|
|
856
|
+
console.log(chalk.blue('\nOptimizations to apply:'));
|
|
857
|
+
for (const opt of targetOptimization.optimizations) {
|
|
858
|
+
console.log(` - ${opt.description}`);
|
|
859
|
+
}
|
|
860
|
+
}
|
|
861
|
+
|
|
862
|
+
// Confirm application
|
|
863
|
+
const { confirm } = await inquirer.prompt([{
|
|
864
|
+
type: 'confirm',
|
|
865
|
+
name: 'confirm',
|
|
866
|
+
message: 'Apply this optimization?',
|
|
867
|
+
default: true
|
|
868
|
+
}]);
|
|
869
|
+
|
|
870
|
+
if (!confirm) {
|
|
871
|
+
console.log(chalk.gray('Optimization cancelled'));
|
|
872
|
+
return;
|
|
873
|
+
}
|
|
874
|
+
|
|
875
|
+
// Apply the optimization
|
|
876
|
+
try {
|
|
877
|
+
const result = await this.performanceOptimizer.applyOptimization(
|
|
878
|
+
targetFile,
|
|
879
|
+
targetOptimization
|
|
880
|
+
);
|
|
881
|
+
|
|
882
|
+
if (result.success) {
|
|
883
|
+
console.log(chalk.green('ā
Optimization applied successfully'));
|
|
884
|
+
|
|
885
|
+
// Show changes
|
|
886
|
+
for (const change of result.changes) {
|
|
887
|
+
console.log(chalk.gray(` - ${change.description}`));
|
|
888
|
+
}
|
|
889
|
+
|
|
890
|
+
this.appliedOptimizations.push({
|
|
891
|
+
file: targetFile,
|
|
892
|
+
optimization: targetOptimization,
|
|
893
|
+
result,
|
|
894
|
+
timestamp: new Date().toISOString()
|
|
895
|
+
});
|
|
896
|
+
} else {
|
|
897
|
+
console.error(chalk.red(`Failed to apply optimization: ${result.error}`));
|
|
898
|
+
}
|
|
899
|
+
} catch (error) {
|
|
900
|
+
console.error(chalk.red(`Error applying optimization: ${error.message}`));
|
|
901
|
+
}
|
|
902
|
+
}
|
|
903
|
+
|
|
904
|
+
async generateReport(reportPath) {
|
|
905
|
+
console.log(chalk.blue('\nš¤ Generating performance report...'));
|
|
906
|
+
|
|
907
|
+
const report = await this.performanceOptimizer.generateOptimizationReport();
|
|
908
|
+
|
|
909
|
+
// Add analysis results
|
|
910
|
+
report.analysisResults = this.analysisResults.map(r => ({
|
|
911
|
+
file: path.relative(this.rootPath, r.filePath),
|
|
912
|
+
performanceScore: r.metrics?.performanceScore,
|
|
913
|
+
issues: r.issues.length,
|
|
914
|
+
criticalIssues: r.issues.filter(i =>
|
|
915
|
+
i.impact === 'critical' || i.severity === 'critical'
|
|
916
|
+
).length,
|
|
917
|
+
suggestions: r.suggestions?.length || 0
|
|
918
|
+
}));
|
|
919
|
+
|
|
920
|
+
// Add applied optimizations
|
|
921
|
+
report.appliedOptimizations = this.appliedOptimizations;
|
|
922
|
+
|
|
923
|
+
await fs.writeFile(reportPath, JSON.stringify(report, null, 2));
|
|
924
|
+
console.log(chalk.green(`ā
Report generated: ${reportPath}`));
|
|
925
|
+
|
|
926
|
+
// Show report summary
|
|
927
|
+
console.log(chalk.blue('\nš Report Summary:'));
|
|
928
|
+
console.log(` Files analyzed: ${report.summary.filesAnalyzed}`);
|
|
929
|
+
console.log(` Total issues: ${report.summary.totalIssues}`);
|
|
930
|
+
console.log(` Critical issues: ${report.summary.criticalIssues}`);
|
|
931
|
+
console.log(` Optimizations applied: ${report.summary.optimizationsApplied}`);
|
|
932
|
+
}
|
|
933
|
+
|
|
934
|
+
getTotalIssues() {
|
|
935
|
+
return this.analysisResults.reduce((total, result) =>
|
|
936
|
+
total + (result.issues?.length || 0), 0
|
|
937
|
+
);
|
|
938
|
+
}
|
|
939
|
+
|
|
940
|
+
getCriticalIssues() {
|
|
941
|
+
return this.analysisResults.reduce((total, result) =>
|
|
942
|
+
total + (result.issues?.filter(i =>
|
|
943
|
+
i.impact === 'critical' || i.severity === 'critical'
|
|
944
|
+
).length || 0), 0
|
|
945
|
+
);
|
|
946
|
+
}
|
|
947
|
+
|
|
948
|
+
getIssuesByImpact(impact) {
|
|
949
|
+
return this.analysisResults.reduce((total, result) =>
|
|
950
|
+
total + (result.issues?.filter(i =>
|
|
951
|
+
i.impact === impact || i.severity === impact
|
|
952
|
+
).length || 0), 0
|
|
953
|
+
);
|
|
954
|
+
}
|
|
955
|
+
}
|
|
956
|
+
|
|
957
|
+
module.exports = OptimizePerformanceTask;
|
|
958
|
+
```
|
|
959
|
+
|
|
960
|
+
## Integration Points
|
|
961
|
+
|
|
962
|
+
### Performance Optimizer
|
|
963
|
+
- Core analysis engine
|
|
964
|
+
- Pattern detection system
|
|
965
|
+
- Optimization suggestion generator
|
|
966
|
+
- Runtime profiling capability
|
|
967
|
+
|
|
968
|
+
### Analysis Categories
|
|
969
|
+
- **Algorithm**: Time complexity, nested loops
|
|
970
|
+
- **Memory**: Allocations, leaks, data structures
|
|
971
|
+
- **Async**: Promise patterns, parallelization
|
|
972
|
+
- **Database**: Query optimization, N+1 problems
|
|
973
|
+
- **Bundle**: Import optimization, tree-shaking
|
|
974
|
+
- **React**: Component rendering, memoization
|
|
975
|
+
- **Caching**: Memoization opportunities
|
|
976
|
+
|
|
977
|
+
### Metrics Collection
|
|
978
|
+
- Static code analysis
|
|
979
|
+
- Complexity calculations
|
|
980
|
+
- Performance scoring
|
|
981
|
+
- Impact assessment
|
|
982
|
+
|
|
983
|
+
## Performance Analysis Workflow
|
|
984
|
+
|
|
985
|
+
### Detection Phase
|
|
986
|
+
1. Parse source code into AST
|
|
987
|
+
2. Run pattern detectors
|
|
988
|
+
3. Calculate complexity metrics
|
|
989
|
+
4. Identify bottlenecks
|
|
990
|
+
5. Score performance impact
|
|
991
|
+
|
|
992
|
+
### Analysis Phase
|
|
993
|
+
1. Evaluate issue severity
|
|
994
|
+
2. Group related issues
|
|
995
|
+
3. Generate optimization suggestions
|
|
996
|
+
4. Estimate improvements
|
|
997
|
+
5. Prioritize recommendations
|
|
998
|
+
|
|
999
|
+
### Optimization Phase
|
|
1000
|
+
1. Review suggestions
|
|
1001
|
+
2. Validate safety
|
|
1002
|
+
3. Apply transformations
|
|
1003
|
+
4. Test results
|
|
1004
|
+
5. Measure improvements
|
|
1005
|
+
|
|
1006
|
+
## Best Practices
|
|
1007
|
+
|
|
1008
|
+
### Performance Analysis
|
|
1009
|
+
- Start with critical issues
|
|
1010
|
+
- Focus on hot paths
|
|
1011
|
+
- Measure before and after
|
|
1012
|
+
- Test optimizations thoroughly
|
|
1013
|
+
- Consider trade-offs
|
|
1014
|
+
|
|
1015
|
+
### Optimization Strategy
|
|
1016
|
+
- Profile first, optimize second
|
|
1017
|
+
- Target biggest bottlenecks
|
|
1018
|
+
- Preserve code readability
|
|
1019
|
+
- Document optimizations
|
|
1020
|
+
- Monitor regression
|
|
1021
|
+
|
|
1022
|
+
### Continuous Improvement
|
|
1023
|
+
- Regular performance audits
|
|
1024
|
+
- Automated performance tests
|
|
1025
|
+
- Track metrics over time
|
|
1026
|
+
- Share optimization patterns
|
|
1027
|
+
- Build performance culture
|
|
1028
|
+
|
|
1029
|
+
## Security Considerations
|
|
1030
|
+
- Validate optimization safety
|
|
1031
|
+
- Preserve functionality
|
|
1032
|
+
- Avoid premature optimization
|
|
1033
|
+
- Test edge cases
|
|
1034
|
+
- Monitor side effects
|