aios-core 2.1.6 → 2.2.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/core/README.md +229 -229
- package/.aios-core/core/data/agent-config-requirements.yaml +368 -368
- package/.aios-core/core/data/aios-kb.md +923 -923
- package/.aios-core/core/data/workflow-patterns.yaml +267 -267
- package/.aios-core/core/docs/SHARD-TRANSLATION-GUIDE.md +335 -335
- package/.aios-core/core/docs/component-creation-guide.md +457 -457
- package/.aios-core/core/docs/session-update-pattern.md +307 -307
- package/.aios-core/core/docs/template-syntax.md +266 -266
- package/.aios-core/core/docs/troubleshooting-guide.md +624 -624
- package/.aios-core/core/elicitation/elicitation-engine.js +1 -1
- package/.aios-core/core/index.esm.js +42 -42
- package/.aios-core/core/index.js +1 -1
- package/.aios-core/core/migration/migration-config.yaml +83 -83
- package/.aios-core/core/migration/module-mapping.yaml +89 -89
- package/.aios-core/core/quality-gates/layer2-pr-automation.js +1 -1
- package/.aios-core/core/quality-gates/quality-gate-config.yaml +86 -86
- package/.aios-core/core/registry/README.md +179 -179
- package/.aios-core/core/utils/security-utils.js +1 -1
- package/.aios-core/core-config.yaml +391 -382
- package/.aios-core/data/agent-config-requirements.yaml +368 -368
- package/.aios-core/data/aios-kb.md +923 -923
- package/.aios-core/data/technical-preferences.md +3 -3
- package/.aios-core/data/workflow-patterns.yaml +267 -267
- package/.aios-core/development/README.md +142 -142
- package/.aios-core/development/agent-teams/team-all.yaml +15 -15
- package/.aios-core/development/agent-teams/team-fullstack.yaml +18 -18
- package/.aios-core/development/agent-teams/team-ide-minimal.yaml +10 -10
- package/.aios-core/development/agent-teams/team-no-ui.yaml +13 -13
- package/.aios-core/development/agent-teams/team-qa-focused.yaml +155 -155
- package/.aios-core/development/agents/aios-master.md +339 -339
- package/.aios-core/development/agents/analyst.md +195 -195
- package/.aios-core/development/agents/architect.md +359 -359
- package/.aios-core/development/agents/data-engineer.md +468 -468
- package/.aios-core/development/agents/dev.md +390 -390
- package/.aios-core/development/agents/devops.md +398 -398
- package/.aios-core/development/agents/pm.md +198 -198
- package/.aios-core/development/agents/po.md +256 -256
- package/.aios-core/development/agents/qa.md +312 -312
- package/.aios-core/development/agents/sm.md +220 -220
- package/.aios-core/development/agents/ux-design-expert.md +451 -451
- package/.aios-core/development/scripts/greeting-config-cli.js +85 -85
- package/.aios-core/development/tasks/add-mcp.md +319 -319
- package/.aios-core/development/tasks/advanced-elicitation.md +318 -318
- package/.aios-core/development/tasks/analyst-facilitate-brainstorming.md +341 -341
- package/.aios-core/development/tasks/analyze-framework.md +696 -696
- package/.aios-core/development/tasks/analyze-performance.md +637 -637
- package/.aios-core/development/tasks/apply-qa-fixes.md +340 -340
- package/.aios-core/development/tasks/architect-analyze-impact.md +826 -826
- package/.aios-core/development/tasks/audit-codebase.md +429 -429
- package/.aios-core/development/tasks/audit-tailwind-config.md +270 -270
- package/.aios-core/development/tasks/audit-utilities.md +358 -358
- package/.aios-core/development/tasks/bootstrap-shadcn-library.md +286 -286
- package/.aios-core/development/tasks/brownfield-create-epic.md +485 -485
- package/.aios-core/development/tasks/brownfield-create-story.md +356 -356
- package/.aios-core/development/tasks/build-component.md +478 -478
- package/.aios-core/development/tasks/calculate-roi.md +455 -455
- package/.aios-core/development/tasks/ci-cd-configuration.md +764 -764
- package/.aios-core/development/tasks/cleanup-utilities.md +670 -670
- package/.aios-core/development/tasks/collaborative-edit.md +1108 -1108
- package/.aios-core/development/tasks/compose-molecule.md +284 -284
- package/.aios-core/development/tasks/consolidate-patterns.md +414 -414
- package/.aios-core/development/tasks/correct-course.md +279 -279
- package/.aios-core/development/tasks/create-agent.md +321 -321
- package/.aios-core/development/tasks/create-brownfield-story.md +726 -726
- package/.aios-core/development/tasks/create-deep-research-prompt.md +498 -498
- package/.aios-core/development/tasks/create-doc.md +316 -316
- package/.aios-core/development/tasks/create-next-story.md +774 -774
- package/.aios-core/development/tasks/create-suite.md +283 -283
- package/.aios-core/development/tasks/create-task.md +371 -371
- package/.aios-core/development/tasks/create-workflow.md +370 -370
- package/.aios-core/development/tasks/db-analyze-hotpaths.md +572 -572
- package/.aios-core/development/tasks/db-apply-migration.md +381 -381
- package/.aios-core/development/tasks/db-bootstrap.md +642 -642
- package/.aios-core/development/tasks/db-domain-modeling.md +693 -693
- package/.aios-core/development/tasks/db-dry-run.md +293 -293
- package/.aios-core/development/tasks/db-env-check.md +260 -260
- package/.aios-core/development/tasks/db-expansion-pack-integration.md +663 -663
- package/.aios-core/development/tasks/db-explain.md +631 -631
- package/.aios-core/development/tasks/db-impersonate.md +495 -495
- package/.aios-core/development/tasks/db-load-csv.md +593 -593
- package/.aios-core/development/tasks/db-policy-apply.md +653 -653
- package/.aios-core/development/tasks/db-rls-audit.md +411 -411
- package/.aios-core/development/tasks/db-rollback.md +739 -739
- package/.aios-core/development/tasks/db-run-sql.md +613 -613
- package/.aios-core/development/tasks/db-schema-audit.md +1011 -1011
- package/.aios-core/development/tasks/db-seed.md +390 -390
- package/.aios-core/development/tasks/db-smoke-test.md +351 -351
- package/.aios-core/development/tasks/db-snapshot.md +569 -569
- package/.aios-core/development/tasks/db-supabase-setup.md +712 -712
- package/.aios-core/development/tasks/db-verify-order.md +515 -515
- package/.aios-core/development/tasks/deprecate-component.md +956 -956
- package/.aios-core/development/tasks/dev-apply-qa-fixes.md +318 -318
- package/.aios-core/development/tasks/dev-backlog-debt.md +469 -469
- package/.aios-core/development/tasks/dev-develop-story.md +846 -846
- package/.aios-core/development/tasks/dev-improve-code-quality.md +872 -872
- package/.aios-core/development/tasks/dev-optimize-performance.md +1033 -1033
- package/.aios-core/development/tasks/dev-suggest-refactoring.md +870 -870
- package/.aios-core/development/tasks/dev-validate-next-story.md +348 -348
- package/.aios-core/development/tasks/document-project.md +552 -552
- package/.aios-core/development/tasks/environment-bootstrap.md +1311 -1311
- package/.aios-core/development/tasks/execute-checklist.md +301 -301
- package/.aios-core/development/tasks/export-design-tokens-dtcg.md +274 -274
- package/.aios-core/development/tasks/extend-pattern.md +269 -269
- package/.aios-core/development/tasks/extract-tokens.md +467 -467
- package/.aios-core/development/tasks/facilitate-brainstorming-session.md +518 -518
- package/.aios-core/development/tasks/generate-ai-frontend-prompt.md +260 -260
- package/.aios-core/development/tasks/generate-documentation.md +284 -284
- package/.aios-core/development/tasks/generate-migration-strategy.md +522 -522
- package/.aios-core/development/tasks/generate-shock-report.md +501 -501
- package/.aios-core/development/tasks/github-devops-github-pr-automation.md +427 -427
- package/.aios-core/development/tasks/github-devops-pre-push-quality-gate.md +733 -733
- package/.aios-core/development/tasks/github-devops-repository-cleanup.md +374 -374
- package/.aios-core/development/tasks/github-devops-version-management.md +483 -483
- package/.aios-core/development/tasks/improve-self.md +822 -822
- package/.aios-core/development/tasks/index-docs.md +387 -387
- package/.aios-core/development/tasks/init-project-status.md +506 -506
- package/.aios-core/development/tasks/integrate-expansion-pack.md +314 -314
- package/.aios-core/development/tasks/kb-mode-interaction.md +283 -283
- package/.aios-core/development/tasks/learn-patterns.md +900 -900
- package/.aios-core/development/tasks/mcp-workflow.md +437 -437
- package/.aios-core/development/tasks/modify-agent.md +381 -381
- package/.aios-core/development/tasks/modify-task.md +424 -424
- package/.aios-core/development/tasks/modify-workflow.md +465 -465
- package/.aios-core/development/tasks/po-backlog-add.md +370 -370
- package/.aios-core/development/tasks/po-manage-story-backlog.md +523 -523
- package/.aios-core/development/tasks/po-pull-story-from-clickup.md +540 -540
- package/.aios-core/development/tasks/po-pull-story.md +316 -316
- package/.aios-core/development/tasks/po-stories-index.md +351 -351
- package/.aios-core/development/tasks/po-sync-story-to-clickup.md +457 -457
- package/.aios-core/development/tasks/po-sync-story.md +303 -303
- package/.aios-core/development/tasks/pr-automation.md +701 -701
- package/.aios-core/development/tasks/propose-modification.md +842 -842
- package/.aios-core/development/tasks/qa-backlog-add-followup.md +425 -425
- package/.aios-core/development/tasks/qa-gate.md +373 -373
- package/.aios-core/development/tasks/qa-generate-tests.md +1174 -1174
- package/.aios-core/development/tasks/qa-nfr-assess.md +557 -557
- package/.aios-core/development/tasks/qa-review-proposal.md +1157 -1157
- package/.aios-core/development/tasks/qa-review-story.md +682 -682
- package/.aios-core/development/tasks/qa-risk-profile.md +566 -566
- package/.aios-core/development/tasks/qa-run-tests.md +277 -277
- package/.aios-core/development/tasks/qa-test-design.md +387 -387
- package/.aios-core/development/tasks/qa-trace-requirements.md +476 -476
- package/.aios-core/development/tasks/release-management.md +723 -723
- package/.aios-core/development/tasks/security-audit.md +554 -554
- package/.aios-core/development/tasks/security-scan.md +790 -790
- package/.aios-core/development/tasks/setup-database.md +741 -741
- package/.aios-core/development/tasks/setup-design-system.md +462 -462
- package/.aios-core/development/tasks/setup-github.md +874 -874
- package/.aios-core/development/tasks/setup-llm-routing.md +1 -1
- package/.aios-core/development/tasks/setup-mcp-docker.md +584 -584
- package/.aios-core/development/tasks/setup-project-docs.md +1 -1
- package/.aios-core/development/tasks/shard-doc.md +537 -537
- package/.aios-core/development/tasks/sm-create-next-story.md +480 -480
- package/.aios-core/development/tasks/sync-documentation.md +864 -864
- package/.aios-core/development/tasks/tailwind-upgrade.md +294 -294
- package/.aios-core/development/tasks/test-as-user.md +621 -621
- package/.aios-core/development/tasks/test-validation-task.md +171 -171
- package/.aios-core/development/tasks/undo-last.md +346 -346
- package/.aios-core/development/tasks/update-manifest.md +409 -409
- package/.aios-core/development/tasks/ux-create-wireframe.md +617 -617
- package/.aios-core/development/tasks/ux-ds-scan-artifact.md +672 -672
- package/.aios-core/development/tasks/ux-user-research.md +559 -559
- package/.aios-core/development/tasks/validate-next-story.md +422 -422
- package/.aios-core/development/workflows/README.md +83 -83
- package/.aios-core/development/workflows/brownfield-fullstack.yaml +297 -297
- package/.aios-core/development/workflows/brownfield-service.yaml +187 -187
- package/.aios-core/development/workflows/brownfield-ui.yaml +197 -197
- package/.aios-core/development/workflows/greenfield-fullstack.yaml +333 -333
- package/.aios-core/development/workflows/greenfield-service.yaml +206 -206
- package/.aios-core/development/workflows/greenfield-ui.yaml +235 -235
- package/.aios-core/docs/SHARD-TRANSLATION-GUIDE.md +335 -335
- package/.aios-core/docs/component-creation-guide.md +457 -457
- package/.aios-core/docs/session-update-pattern.md +307 -307
- package/.aios-core/docs/standards/AGENT-PERSONALIZATION-STANDARD-V1.md +572 -572
- package/.aios-core/docs/standards/AIOS-COLOR-PALETTE-QUICK-REFERENCE.md +185 -185
- package/.aios-core/docs/standards/AIOS-COLOR-PALETTE-V2.1.md +354 -354
- package/.aios-core/docs/standards/AIOS-FRAMEWORK-MASTER.md +1963 -1963
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1-COMPLETE.md +821 -821
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1-SUMMARY.md +1190 -1190
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1.md +439 -439
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.2-SUMMARY.md +1339 -1339
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO.md +5398 -5398
- package/.aios-core/docs/standards/EXECUTOR-DECISION-TREE.md +697 -697
- package/.aios-core/docs/standards/OPEN-SOURCE-VS-SERVICE-DIFFERENCES.md +511 -511
- package/.aios-core/docs/standards/QUALITY-GATES-SPECIFICATION.md +556 -556
- package/.aios-core/docs/standards/STANDARDS-INDEX.md +210 -210
- package/.aios-core/docs/standards/STORY-TEMPLATE-V2-SPECIFICATION.md +550 -550
- package/.aios-core/docs/standards/TASK-FORMAT-SPECIFICATION-V1.md +1414 -1414
- package/.aios-core/docs/standards/V3-ARCHITECTURAL-DECISIONS.md +523 -523
- package/.aios-core/docs/template-syntax.md +266 -266
- package/.aios-core/docs/troubleshooting-guide.md +624 -624
- package/.aios-core/index.esm.js +15 -15
- package/.aios-core/index.js +1 -1
- package/.aios-core/infrastructure/README.md +126 -126
- package/.aios-core/infrastructure/integrations/pm-adapters/README.md +59 -59
- package/.aios-core/infrastructure/scripts/approval-workflow.js +1 -1
- package/.aios-core/infrastructure/scripts/batch-creator.js +1 -1
- package/.aios-core/infrastructure/scripts/component-generator.js +3 -3
- package/.aios-core/infrastructure/scripts/component-metadata.js +1 -1
- package/.aios-core/infrastructure/scripts/component-search.js +1 -1
- package/.aios-core/infrastructure/scripts/coverage-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/dependency-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/dependency-impact-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/framework-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/improvement-engine.js +1 -1
- package/.aios-core/infrastructure/scripts/llm-routing/install-llm-routing.js +26 -13
- package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-free-tracked.cmd +127 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-free-tracked.sh +108 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-proxy.cmd +71 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-proxy.sh +65 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-usage.cmd +51 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-usage.sh +16 -0
- package/.aios-core/infrastructure/scripts/llm-routing/usage-tracker/index.js +549 -0
- package/.aios-core/infrastructure/scripts/modification-risk-assessment.js +1 -1
- package/.aios-core/infrastructure/scripts/performance-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/pm-adapter.js +134 -134
- package/.aios-core/infrastructure/scripts/repository-detector.js +3 -3
- package/.aios-core/infrastructure/scripts/template-engine.js +1 -1
- package/.aios-core/infrastructure/scripts/template-validator.js +1 -1
- package/.aios-core/infrastructure/scripts/test-generator.js +1 -1
- package/.aios-core/infrastructure/scripts/test-quality-assessment.js +1 -1
- package/.aios-core/infrastructure/scripts/transaction-manager.js +1 -1
- package/.aios-core/infrastructure/scripts/usage-analytics.js +1 -1
- package/.aios-core/infrastructure/scripts/visual-impact-generator.js +2 -2
- package/.aios-core/infrastructure/templates/github-workflows/README.md +109 -109
- package/.aios-core/infrastructure/tests/regression-suite-v2.md +621 -621
- package/.aios-core/infrastructure/tools/README.md +222 -222
- package/.aios-core/infrastructure/tools/cli/github-cli.yaml +200 -200
- package/.aios-core/infrastructure/tools/cli/railway-cli.yaml +260 -260
- package/.aios-core/infrastructure/tools/cli/supabase-cli.yaml +224 -224
- package/.aios-core/infrastructure/tools/local/ffmpeg.yaml +261 -261
- package/.aios-core/infrastructure/tools/mcp/21st-dev-magic.yaml +127 -127
- package/.aios-core/infrastructure/tools/mcp/browser.yaml +103 -103
- package/.aios-core/infrastructure/tools/mcp/clickup.yaml +534 -534
- package/.aios-core/infrastructure/tools/mcp/context7.yaml +78 -78
- package/.aios-core/infrastructure/tools/mcp/desktop-commander.yaml +180 -180
- package/.aios-core/infrastructure/tools/mcp/exa.yaml +103 -103
- package/.aios-core/infrastructure/tools/mcp/google-workspace.yaml +930 -930
- package/.aios-core/infrastructure/tools/mcp/n8n.yaml +551 -551
- package/.aios-core/infrastructure/tools/mcp/supabase.yaml +808 -808
- package/.aios-core/install-manifest.yaml +347 -347
- package/.aios-core/product/README.md +56 -56
- package/.aios-core/product/checklists/accessibility-wcag-checklist.md +80 -0
- package/.aios-core/product/checklists/architect-checklist.md +443 -443
- package/.aios-core/product/checklists/change-checklist.md +182 -182
- package/.aios-core/product/checklists/component-quality-checklist.md +74 -0
- package/.aios-core/product/checklists/database-design-checklist.md +119 -119
- package/.aios-core/product/checklists/dba-predeploy-checklist.md +97 -97
- package/.aios-core/product/checklists/dba-rollback-checklist.md +99 -99
- package/.aios-core/product/checklists/migration-readiness-checklist.md +75 -0
- package/.aios-core/product/checklists/pattern-audit-checklist.md +88 -0
- package/.aios-core/product/checklists/pm-checklist.md +375 -375
- package/.aios-core/product/checklists/po-master-checklist.md +441 -441
- package/.aios-core/product/checklists/pre-push-checklist.md +108 -108
- package/.aios-core/product/checklists/release-checklist.md +122 -122
- package/.aios-core/product/checklists/story-dod-checklist.md +101 -101
- package/.aios-core/product/checklists/story-draft-checklist.md +215 -215
- package/.aios-core/product/data/atomic-design-principles.md +108 -0
- package/.aios-core/product/data/brainstorming-techniques.md +36 -36
- package/.aios-core/product/data/consolidation-algorithms.md +142 -0
- package/.aios-core/product/data/database-best-practices.md +182 -0
- package/.aios-core/product/data/design-token-best-practices.md +107 -0
- package/.aios-core/product/data/elicitation-methods.md +134 -134
- package/.aios-core/product/data/integration-patterns.md +207 -0
- package/.aios-core/product/data/migration-safety-guide.md +329 -0
- package/.aios-core/product/data/mode-selection-best-practices.md +471 -471
- package/.aios-core/product/data/postgres-tuning-guide.md +300 -0
- package/.aios-core/product/data/rls-security-patterns.md +333 -0
- package/.aios-core/product/data/roi-calculation-guide.md +142 -0
- package/.aios-core/product/data/supabase-patterns.md +330 -0
- package/.aios-core/product/data/test-levels-framework.md +148 -148
- package/.aios-core/product/data/test-priorities-matrix.md +174 -174
- package/.aios-core/product/data/wcag-compliance-guide.md +267 -0
- package/.aios-core/product/templates/1mcp-config.yaml +225 -225
- package/.aios-core/product/templates/activation-instructions-inline-greeting.yaml +63 -63
- package/.aios-core/product/templates/activation-instructions-template.md +258 -258
- package/.aios-core/product/templates/agent-template.yaml +120 -120
- package/.aios-core/product/templates/architecture-tmpl.yaml +650 -650
- package/.aios-core/product/templates/brainstorming-output-tmpl.yaml +155 -155
- package/.aios-core/product/templates/brownfield-architecture-tmpl.yaml +475 -475
- package/.aios-core/product/templates/brownfield-prd-tmpl.yaml +279 -279
- package/.aios-core/product/templates/changelog-template.md +134 -134
- package/.aios-core/product/templates/command-rationalization-matrix.md +152 -152
- package/.aios-core/product/templates/competitor-analysis-tmpl.yaml +292 -292
- package/.aios-core/product/templates/design-story-tmpl.yaml +587 -587
- package/.aios-core/product/templates/ds-artifact-analysis.md +70 -70
- package/.aios-core/product/templates/front-end-architecture-tmpl.yaml +205 -205
- package/.aios-core/product/templates/front-end-spec-tmpl.yaml +348 -348
- package/.aios-core/product/templates/fullstack-architecture-tmpl.yaml +804 -804
- package/.aios-core/product/templates/github-pr-template.md +67 -67
- package/.aios-core/product/templates/gordon-mcp.yaml +140 -140
- package/.aios-core/product/templates/ide-rules/antigravity-rules.md +115 -115
- package/.aios-core/product/templates/ide-rules/claude-rules.md +221 -221
- package/.aios-core/product/templates/ide-rules/cline-rules.md +84 -84
- package/.aios-core/product/templates/ide-rules/copilot-rules.md +92 -92
- package/.aios-core/product/templates/ide-rules/cursor-rules.md +115 -115
- package/.aios-core/product/templates/ide-rules/gemini-rules.md +85 -85
- package/.aios-core/product/templates/ide-rules/roo-rules.md +86 -86
- package/.aios-core/product/templates/ide-rules/trae-rules.md +104 -104
- package/.aios-core/product/templates/ide-rules/windsurf-rules.md +80 -80
- package/.aios-core/product/templates/index-strategy-tmpl.yaml +53 -53
- package/.aios-core/product/templates/market-research-tmpl.yaml +251 -251
- package/.aios-core/product/templates/mcp-workflow.js +271 -271
- package/.aios-core/product/templates/migration-plan-tmpl.yaml +1022 -1022
- package/.aios-core/product/templates/migration-strategy-tmpl.md +524 -524
- package/.aios-core/product/templates/personalized-agent-template.md +258 -258
- package/.aios-core/product/templates/personalized-checklist-template.md +340 -340
- package/.aios-core/product/templates/personalized-task-template-v2.md +905 -905
- package/.aios-core/product/templates/personalized-task-template.md +344 -344
- package/.aios-core/product/templates/personalized-template-file.yaml +322 -322
- package/.aios-core/product/templates/personalized-workflow-template.yaml +460 -460
- package/.aios-core/product/templates/prd-tmpl.yaml +201 -201
- package/.aios-core/product/templates/project-brief-tmpl.yaml +220 -220
- package/.aios-core/product/templates/qa-gate-tmpl.yaml +240 -240
- package/.aios-core/product/templates/rls-policies-tmpl.yaml +1203 -1203
- package/.aios-core/product/templates/schema-design-tmpl.yaml +428 -428
- package/.aios-core/product/templates/state-persistence-tmpl.yaml +219 -219
- package/.aios-core/product/templates/story-tmpl.yaml +331 -331
- package/.aios-core/product/templates/task-execution-report.md +495 -495
- package/.aios-core/product/templates/task-template.md +122 -122
- package/.aios-core/product/templates/token-exports-tailwind-tmpl.js +395 -395
- package/.aios-core/product/templates/tokens-schema-tmpl.yaml +305 -305
- package/.aios-core/product/templates/workflow-template.yaml +133 -133
- package/.aios-core/scripts/README.md +354 -354
- package/.aios-core/scripts/aios-doc-template.md +325 -325
- package/.aios-core/scripts/elicitation-engine.js +1 -1
- package/.aios-core/scripts/test-template-system.js +1 -1
- package/.aios-core/scripts/workflow-management.md +69 -69
- package/.aios-core/user-guide.md +1413 -1413
- package/.aios-core/working-in-the-brownfield.md +361 -361
- package/LICENSE +1 -1
- package/README.md +702 -703
- package/bin/aios-init-old.js +3 -3
- package/bin/aios-init-v4.js +1 -1
- package/bin/aios-init.backup-v1.1.4.js +1 -1
- package/bin/aios-init.js +3 -3
- package/bin/aios.js +279 -279
- package/bin/utils/install-errors.js +339 -339
- package/bin/utils/install-transaction.js +445 -445
- package/index.d.ts +18 -18
- package/index.esm.js +20 -20
- package/index.js +6 -6
- package/package.json +8 -10
- package/packages/installer/src/config/templates/env-template.js +27 -4
- package/packages/installer/src/detection/detect-project-type.js +81 -81
- package/packages/installer/tests/integration/wizard-detection.test.js +8 -6
- package/packages/installer/tests/unit/env-template.test.js +8 -8
- package/src/config/ide-configs.js +1 -1
- package/src/wizard/feedback.js +2 -2
- package/src/wizard/index.js +1 -1
- package/src/wizard/validation/report-generator.js +1 -1
- package/src/wizard/validation/troubleshooting-system.js +13 -13
- package/.aios-core/infrastructure/scripts/_archived/final-todo-count.js +0 -122
- package/.aios-core/infrastructure/scripts/_archived/fix-yaml-formatting.js +0 -89
- package/.aios-core/infrastructure/scripts/_archived/migration-generator.js +0 -780
- package/.aios-core/infrastructure/scripts/_archived/migration-path-generator.js +0 -950
- package/.aios-core/infrastructure/scripts/_archived/phase2-entrada-saida-errors.js +0 -425
- package/.aios-core/infrastructure/scripts/_archived/phase2-spot-check.js +0 -132
- package/.aios-core/infrastructure/scripts/_archived/phase3-tools-scripts-validation.js +0 -381
- package/.aios-core/infrastructure/scripts/_archived/phase4-metadata-performance.js +0 -203
- package/.aios-core/infrastructure/scripts/_archived/test-yaml-parsing.js +0 -24
- package/.aios-core/infrastructure/scripts/_archived/verify-yaml-fix.js +0 -51
- package/.aios-core/tasks/find-component.md.legacy +0 -391
- package/.aios-core/tasks/generate-commit-message.md.legacy +0 -426
- package/.aios-core/tasks/generate-migration.md.legacy +0 -382
- package/.aios-core/tasks/rollback-modification.md.legacy +0 -307
- package/.aios-core/tasks/update-tests.md.legacy +0 -283
|
@@ -1,827 +1,827 @@
|
|
|
1
|
-
# An
|
|
2
|
-
## Execution Modes
|
|
3
|
-
|
|
4
|
-
**Choose your execution mode:**
|
|
5
|
-
|
|
6
|
-
### 1. YOLO Mode - Fast, Autonomous (0-1 prompts)
|
|
7
|
-
- Autonomous decision making with logging
|
|
8
|
-
- Minimal user interaction
|
|
9
|
-
- **Best for:** Simple, deterministic tasks
|
|
10
|
-
|
|
11
|
-
### 2. Interactive Mode - Balanced, Educational (5-10 prompts) **[DEFAULT]**
|
|
12
|
-
- Explicit decision checkpoints
|
|
13
|
-
- Educational explanations
|
|
14
|
-
- **Best for:** Learning, complex decisions
|
|
15
|
-
|
|
16
|
-
### 3. Pre-Flight Planning - Comprehensive Upfront Planning
|
|
17
|
-
- Task analysis phase (identify all ambiguities)
|
|
18
|
-
- Zero ambiguity execution
|
|
19
|
-
- **Best for:** Ambiguous requirements, critical work
|
|
20
|
-
|
|
21
|
-
**Parameter:** `mode` (optional, default: `interactive`)
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
## Task Definition (AIOS Task Format V1.0)
|
|
26
|
-
|
|
27
|
-
```yaml
|
|
28
|
-
task: architectAnalyzeImpact()
|
|
29
|
-
responsável: Aria (Visionary)
|
|
30
|
-
responsavel_type: Agente
|
|
31
|
-
atomic_layer: Strategy
|
|
32
|
-
|
|
33
|
-
**Entrada:**
|
|
34
|
-
- campo: task
|
|
35
|
-
tipo: string
|
|
36
|
-
origem: User Input
|
|
37
|
-
obrigatório: true
|
|
38
|
-
validação: Must be registered task
|
|
39
|
-
|
|
40
|
-
- campo: parameters
|
|
41
|
-
tipo: object
|
|
42
|
-
origem: User Input
|
|
43
|
-
obrigatório: false
|
|
44
|
-
validação: Valid task parameters
|
|
45
|
-
|
|
46
|
-
- campo: mode
|
|
47
|
-
tipo: string
|
|
48
|
-
origem: User Input
|
|
49
|
-
obrigatório: false
|
|
50
|
-
validação: yolo|interactive|pre-flight
|
|
51
|
-
|
|
52
|
-
**Saída:**
|
|
53
|
-
- campo: execution_result
|
|
54
|
-
tipo: object
|
|
55
|
-
destino: Memory
|
|
56
|
-
persistido: false
|
|
57
|
-
|
|
58
|
-
- campo: logs
|
|
59
|
-
tipo: array
|
|
60
|
-
destino: File (.ai/logs/*)
|
|
61
|
-
persistido: true
|
|
62
|
-
|
|
63
|
-
- campo: state
|
|
64
|
-
tipo: object
|
|
65
|
-
destino: State management
|
|
66
|
-
persistido: true
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
---
|
|
70
|
-
|
|
71
|
-
## Pre-Conditions
|
|
72
|
-
|
|
73
|
-
**Purpose:** Validate prerequisites BEFORE task execution (blocking)
|
|
74
|
-
|
|
75
|
-
**Checklist:**
|
|
76
|
-
|
|
77
|
-
```yaml
|
|
78
|
-
pre-conditions:
|
|
79
|
-
- [ ] Task is registered; required parameters provided; dependencies met
|
|
80
|
-
tipo: pre-condition
|
|
81
|
-
blocker: true
|
|
82
|
-
validação: |
|
|
83
|
-
Check task is registered; required parameters provided; dependencies met
|
|
84
|
-
error_message: "Pre-condition failed: Task is registered; required parameters provided; dependencies met"
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
---
|
|
88
|
-
|
|
89
|
-
## Post-Conditions
|
|
90
|
-
|
|
91
|
-
**Purpose:** Validate execution success AFTER task completes
|
|
92
|
-
|
|
93
|
-
**Checklist:**
|
|
94
|
-
|
|
95
|
-
```yaml
|
|
96
|
-
post-conditions:
|
|
97
|
-
- [ ] Task completed; exit code 0; expected outputs created
|
|
98
|
-
tipo: post-condition
|
|
99
|
-
blocker: true
|
|
100
|
-
validação: |
|
|
101
|
-
Verify task completed; exit code 0; expected outputs created
|
|
102
|
-
error_message: "Post-condition failed: Task completed; exit code 0; expected outputs created"
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
---
|
|
106
|
-
|
|
107
|
-
## Acceptance Criteria
|
|
108
|
-
|
|
109
|
-
**Purpose:** Definitive pass/fail criteria for task completion
|
|
110
|
-
|
|
111
|
-
**Checklist:**
|
|
112
|
-
|
|
113
|
-
```yaml
|
|
114
|
-
acceptance-criteria:
|
|
115
|
-
- [ ] Task completed as expected; side effects documented
|
|
116
|
-
tipo: acceptance-criterion
|
|
117
|
-
blocker: true
|
|
118
|
-
validação: |
|
|
119
|
-
Assert task completed as expected; side effects documented
|
|
120
|
-
error_message: "Acceptance criterion not met: Task completed as expected; side effects documented"
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
---
|
|
124
|
-
|
|
125
|
-
## Tools
|
|
126
|
-
|
|
127
|
-
**External/shared resources used by this task:**
|
|
128
|
-
|
|
129
|
-
- **Tool:** task-runner
|
|
130
|
-
- **Purpose:** Task execution and orchestration
|
|
131
|
-
- **Source:** .aios-core/core/task-runner.js
|
|
132
|
-
|
|
133
|
-
- **Tool:** logger
|
|
134
|
-
- **Purpose:** Execution logging and error tracking
|
|
135
|
-
- **Source:** .aios-core/utils/logger.js
|
|
136
|
-
|
|
137
|
-
---
|
|
138
|
-
|
|
139
|
-
## Scripts
|
|
140
|
-
|
|
141
|
-
**Agent-specific code for this task:**
|
|
142
|
-
|
|
143
|
-
- **Script:** execute-task.js
|
|
144
|
-
- **Purpose:** Generic task execution wrapper
|
|
145
|
-
- **Language:** JavaScript
|
|
146
|
-
- **Location:** .aios-core/scripts/execute-task.js
|
|
147
|
-
|
|
148
|
-
---
|
|
149
|
-
|
|
150
|
-
## Error Handling
|
|
151
|
-
|
|
152
|
-
**Strategy:** retry
|
|
153
|
-
|
|
154
|
-
**Common Errors:**
|
|
155
|
-
|
|
156
|
-
1. **Error:** Task Not Found
|
|
157
|
-
- **Cause:** Specified task not registered in system
|
|
158
|
-
- **Resolution:** Verify task name and registration
|
|
159
|
-
- **Recovery:** List available tasks, suggest similar
|
|
160
|
-
|
|
161
|
-
2. **Error:** Invalid Parameters
|
|
162
|
-
- **Cause:** Task parameters do not match expected schema
|
|
163
|
-
- **Resolution:** Validate parameters against task definition
|
|
164
|
-
- **Recovery:** Provide parameter template, reject execution
|
|
165
|
-
|
|
166
|
-
3. **Error:** Execution Timeout
|
|
167
|
-
- **Cause:** Task exceeds maximum execution time
|
|
168
|
-
- **Resolution:** Optimize task or increase timeout
|
|
169
|
-
- **Recovery:** Kill task, cleanup resources, log state
|
|
170
|
-
|
|
171
|
-
---
|
|
172
|
-
|
|
173
|
-
## Performance
|
|
174
|
-
|
|
175
|
-
**Expected Metrics:**
|
|
176
|
-
|
|
177
|
-
```yaml
|
|
178
|
-
duration_expected: 5-20 min (estimated)
|
|
179
|
-
cost_estimated: $0.003-0.015
|
|
180
|
-
token_usage: ~2,000-8,000 tokens
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
**Optimization Notes:**
|
|
184
|
-
- Iterative analysis with depth limits; cache intermediate results; batch similar operations
|
|
185
|
-
|
|
186
|
-
---
|
|
187
|
-
|
|
188
|
-
## Metadata
|
|
189
|
-
|
|
190
|
-
```yaml
|
|
191
|
-
story: N/A
|
|
192
|
-
version: 1.0.0
|
|
193
|
-
dependencies:
|
|
194
|
-
- N/A
|
|
195
|
-
tags:
|
|
196
|
-
- analysis
|
|
197
|
-
- metrics
|
|
198
|
-
updated_at: 2025-11-17
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
---
|
|
202
|
-
|
|
203
|
-
alyze Impact - AIOS Developer Task
|
|
204
|
-
|
|
205
|
-
## Purpose
|
|
206
|
-
Analyze the potential impact of proposed component modifications on the broader AIOS
|
|
207
|
-
|
|
208
|
-
## Command Pattern
|
|
209
|
-
```
|
|
210
|
-
*analyze-impact <modification-type> <component-path> [options]
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
## Parameters
|
|
214
|
-
- `modification-type`: Type of modification (modify, deprecate, remove, refactor)
|
|
215
|
-
- `component-path`: Path to the component being modified
|
|
216
|
-
- `options`: Impact analysis configuration
|
|
217
|
-
|
|
218
|
-
### Options
|
|
219
|
-
- `--depth <level>`: Analysis depth (shallow, medium, deep)
|
|
220
|
-
- `--include-tests`: Include test file impact analysis
|
|
221
|
-
- `--risk-threshold <level>`: Risk threshold for warnings (low, medium, high, critical)
|
|
222
|
-
- `--output-format <format>`: Output format (text, json, visual, html)
|
|
223
|
-
- `--save-report <path>`: Save detailed report to file
|
|
224
|
-
- `--approve-high-risk`: Skip approval workflow for high-risk changes
|
|
225
|
-
- `--exclude-external`: Exclude external dependency analysis
|
|
226
|
-
|
|
227
|
-
## Examples
|
|
228
|
-
```bash
|
|
229
|
-
# Analyze impact of modifying an agent
|
|
230
|
-
*analyze-impact modify aios-core/agents/weather-agent.md --depth deep --include-tests
|
|
231
|
-
|
|
232
|
-
# Analyze deprecation impact with visual output
|
|
233
|
-
*analyze-impact deprecate aios-core/scripts/old-helper.js --output-format visual --save-report reports/deprecation-impact.html
|
|
234
|
-
|
|
235
|
-
# Quick impact check for refactoring
|
|
236
|
-
*analyze-impact refactor aios-core/tasks/process-data.md --depth shallow --risk-threshold medium
|
|
237
|
-
|
|
238
|
-
# Analyze removal with approval workflow
|
|
239
|
-
*analyze-impact remove aios-core/workflows/legacy-workflow.yaml --depth deep --save-report reports/removal-impact.json
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
## Implementation
|
|
243
|
-
|
|
244
|
-
```javascript
|
|
245
|
-
const fs = require('fs').promises;
|
|
246
|
-
const path = require('path');
|
|
247
|
-
const chalk = require('chalk');
|
|
248
|
-
const inquirer = require('inquirer');
|
|
249
|
-
|
|
250
|
-
class AnalyzeImpactTask {
|
|
251
|
-
constructor() {
|
|
252
|
-
this.taskName = 'analyze-impact';
|
|
253
|
-
this.description = 'Analyze potential impact of component modifications';
|
|
254
|
-
this.rootPath = process.cwd();
|
|
255
|
-
this.dependencyAnalyzer = null;
|
|
256
|
-
this.propagationPredictor = null;
|
|
257
|
-
this.riskAssessment = null;
|
|
258
|
-
this.visualGenerator = null;
|
|
259
|
-
this.approvalWorkflow = null;
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
async execute(params) {
|
|
263
|
-
try {
|
|
264
|
-
console.log(chalk.blue('🔍 AIOS Impact Analysis'));
|
|
265
|
-
console.log(chalk.gray('Analyzing potential impact of component modifications\\n'));
|
|
266
|
-
|
|
267
|
-
// Parse and validate parameters
|
|
268
|
-
const config = await this.parseParameters(params);
|
|
269
|
-
|
|
270
|
-
// Initialize dependencies
|
|
271
|
-
await this.initializeDependencies();
|
|
272
|
-
|
|
273
|
-
// Validate target component exists
|
|
274
|
-
const targetComponent = await this.validateTargetComponent(config);
|
|
275
|
-
|
|
276
|
-
// Perform dependency impact analysis
|
|
277
|
-
console.log(chalk.gray('Analyzing dependency impact...'));
|
|
278
|
-
const dependencyImpact = await this.analyzeDependencyImpact(targetComponent, config);
|
|
279
|
-
|
|
280
|
-
// Predict change propagation
|
|
281
|
-
console.log(chalk.gray('Predicting change propagation...'));
|
|
282
|
-
const propagationAnalysis = await this.predictChangePropagation(targetComponent, dependencyImpact, config);
|
|
283
|
-
|
|
284
|
-
// Assess modification risks
|
|
285
|
-
console.log(chalk.gray('Assessing modification risks...'));
|
|
286
|
-
const riskAssessment = await this.assessModificationRisks(targetComponent, dependencyImpact, propagationAnalysis, config);
|
|
287
|
-
|
|
288
|
-
// Generate comprehensive impact report
|
|
289
|
-
const impactReport = await this.generateImpactReport(targetComponent, {
|
|
290
|
-
dependencyImpact,
|
|
291
|
-
propagationAnalysis,
|
|
292
|
-
riskAssessment
|
|
293
|
-
}, config);
|
|
294
|
-
|
|
295
|
-
// Display impact summary
|
|
296
|
-
await this.displayImpactSummary(impactReport);
|
|
297
|
-
|
|
298
|
-
// Generate visual representation if requested
|
|
299
|
-
if (config.outputFormat === 'visual' || config.outputFormat === 'html') {
|
|
300
|
-
console.log(chalk.gray('Generating visual impact representation...'));
|
|
301
|
-
await this.generateVisualRepresentation(impactReport, config);
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
// Save detailed report if requested
|
|
305
|
-
if (config.saveReport) {
|
|
306
|
-
await this.saveDetailedReport(impactReport, config.saveReport, config.outputFormat);
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
// Handle high-risk change approval workflow
|
|
310
|
-
if (riskAssessment.overallRisk === 'high' || riskAssessment.overallRisk === 'critical') {
|
|
311
|
-
if (!config.approveHighRisk) {
|
|
312
|
-
const approved = await this.handleHighRiskApproval(impactReport);
|
|
313
|
-
if (!approved) {
|
|
314
|
-
console.log(chalk.yellow('\\n⚠ High-risk modification requires approval before proceeding'));
|
|
315
|
-
return {
|
|
316
|
-
success: true,
|
|
317
|
-
requiresApproval: true,
|
|
318
|
-
riskLevel: riskAssessment.overallRisk,
|
|
319
|
-
impactSummary: impactReport.summary
|
|
320
|
-
};
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
// Display completion summary
|
|
326
|
-
console.log(chalk.green('\\n✅ Impact analysis completed'));
|
|
327
|
-
console.log(chalk.gray(` Components analyzed: ${dependencyImpact.affectedComponents.length}`));
|
|
328
|
-
console.log(chalk.gray(` Risk level: ${this.formatRiskLevel(riskAssessment.overallRisk)}`));
|
|
329
|
-
console.log(chalk.gray(` Propagation depth: ${propagationAnalysis.maxDepth}`));
|
|
330
|
-
|
|
331
|
-
return {
|
|
332
|
-
success: true,
|
|
333
|
-
targetComponent: targetComponent.path,
|
|
334
|
-
riskLevel: riskAssessment.overallRisk,
|
|
335
|
-
affectedComponents: dependencyImpact.affectedComponents.length,
|
|
336
|
-
propagationDepth: propagationAnalysis.maxDepth,
|
|
337
|
-
requiresApproval: false,
|
|
338
|
-
impactReport: config.outputFormat === 'json' ? impactReport : impactReport.summary
|
|
339
|
-
};
|
|
340
|
-
|
|
341
|
-
} catch (error) {
|
|
342
|
-
console.error(chalk.red(`\\n❌ Impact analysis failed: ${error.message}`));
|
|
343
|
-
throw error;
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
async parseParameters(params) {
|
|
348
|
-
if (params.length < 2) {
|
|
349
|
-
throw new Error('Usage: *analyze-impact <modification-type> <component-path> [options]');
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
const config = {
|
|
353
|
-
modificationType: params[0],
|
|
354
|
-
componentPath: params[1],
|
|
355
|
-
depth: 'medium',
|
|
356
|
-
includeTests: false,
|
|
357
|
-
riskThreshold: 'medium',
|
|
358
|
-
outputFormat: 'text',
|
|
359
|
-
saveReport: null,
|
|
360
|
-
approveHighRisk: false,
|
|
361
|
-
excludeExternal: false
|
|
362
|
-
};
|
|
363
|
-
|
|
364
|
-
// Parse options
|
|
365
|
-
for (let i = 2; i < params.length; i++) {
|
|
366
|
-
const param = params[i];
|
|
367
|
-
|
|
368
|
-
if (param === '--include-tests') {
|
|
369
|
-
config.includeTests = true;
|
|
370
|
-
} else if (param === '--approve-high-risk') {
|
|
371
|
-
config.approveHighRisk = true;
|
|
372
|
-
} else if (param === '--exclude-external') {
|
|
373
|
-
config.excludeExternal = true;
|
|
374
|
-
} else if (param.startsWith('--depth') && params[i + 1]) {
|
|
375
|
-
config.depth = params[++i];
|
|
376
|
-
} else if (param.startsWith('--risk-threshold') && params[i + 1]) {
|
|
377
|
-
config.riskThreshold = params[++i];
|
|
378
|
-
} else if (param.startsWith('--output-format') && params[i + 1]) {
|
|
379
|
-
config.outputFormat = params[++i];
|
|
380
|
-
} else if (param.startsWith('--save-report') && params[i + 1]) {
|
|
381
|
-
config.saveReport = params[++i];
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
// Validation
|
|
386
|
-
const validModificationTypes = ['modify', 'deprecate', 'remove', 'refactor'];
|
|
387
|
-
if (!validModificationTypes.includes(config.modificationType)) {
|
|
388
|
-
throw new Error(`Invalid modification type: ${config.modificationType}. Must be one of: ${validModificationTypes.join(', ')}`);
|
|
389
|
-
}
|
|
390
|
-
|
|
391
|
-
const validDepths = ['shallow', 'medium', 'deep'];
|
|
392
|
-
if (!validDepths.includes(config.depth)) {
|
|
393
|
-
throw new Error(`Invalid depth: ${config.depth}. Must be one of: ${validDepths.join(', ')}`);
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
const validRiskThresholds = ['low', 'medium', 'high', 'critical'];
|
|
397
|
-
if (!validRiskThresholds.includes(config.riskThreshold)) {
|
|
398
|
-
throw new Error(`Invalid risk threshold: ${config.riskThreshold}. Must be one of: ${validRiskThresholds.join(', ')}`);
|
|
399
|
-
}
|
|
400
|
-
|
|
401
|
-
const validOutputFormats = ['text', 'json', 'visual', 'html'];
|
|
402
|
-
if (!validOutputFormats.includes(config.outputFormat)) {
|
|
403
|
-
throw new Error(`Invalid output format: ${config.outputFormat}. Must be one of: ${validOutputFormats.join(', ')}`);
|
|
404
|
-
}
|
|
405
|
-
|
|
406
|
-
return config;
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
async initializeDependencies() {
|
|
410
|
-
try {
|
|
411
|
-
// Initialize dependency impact analyzer
|
|
412
|
-
const DependencyImpactAnalyzer = require('../scripts/dependency-impact-analyzer');
|
|
413
|
-
this.dependencyAnalyzer = new DependencyImpactAnalyzer({ rootPath: this.rootPath });
|
|
414
|
-
await this.dependencyAnalyzer.initialize();
|
|
415
|
-
|
|
416
|
-
// Initialize change propagation predictor
|
|
417
|
-
// const ChangePropagationPredictor = require('../scripts/change-propagation-predictor'); // Archived in archived-utilities/ (Story 3.1.2)
|
|
418
|
-
// this.propagationPredictor = new ChangePropagationPredictor({ rootPath: this.rootPath }); // Archived in archived-utilities/ (Story 3.1.2)
|
|
419
|
-
|
|
420
|
-
// Initialize risk assessment
|
|
421
|
-
const ModificationRiskAssessment = require('../scripts/modification-risk-assessment');
|
|
422
|
-
this.riskAssessment = new ModificationRiskAssessment({ rootPath: this.rootPath });
|
|
423
|
-
|
|
424
|
-
// Initialize visual impact generator
|
|
425
|
-
const VisualImpactGenerator = require('../scripts/visual-impact-generator');
|
|
426
|
-
this.visualGenerator = new VisualImpactGenerator({ rootPath: this.rootPath });
|
|
427
|
-
|
|
428
|
-
// Initialize approval workflow
|
|
429
|
-
const ApprovalWorkflow = require('../scripts/approval-workflow');
|
|
430
|
-
this.approvalWorkflow = new ApprovalWorkflow({ rootPath: this.rootPath });
|
|
431
|
-
|
|
432
|
-
} catch (error) {
|
|
433
|
-
throw new Error(`Failed to initialize dependencies: ${error.message}`);
|
|
434
|
-
}
|
|
435
|
-
}
|
|
436
|
-
|
|
437
|
-
async validateTargetComponent(config) {
|
|
438
|
-
const fullPath = path.resolve(this.rootPath, config.componentPath);
|
|
439
|
-
|
|
440
|
-
try {
|
|
441
|
-
const stats = await fs.stat(fullPath);
|
|
442
|
-
if (!stats.isFile()) {
|
|
443
|
-
throw new Error(`Target path is not a file: ${config.componentPath}`);
|
|
444
|
-
}
|
|
445
|
-
|
|
446
|
-
const content = await fs.readFile(fullPath, 'utf-8');
|
|
447
|
-
const componentType = this.determineComponentType(fullPath, content);
|
|
448
|
-
|
|
449
|
-
return {
|
|
450
|
-
path: config.componentPath,
|
|
451
|
-
fullPath: fullPath,
|
|
452
|
-
type: componentType,
|
|
453
|
-
content: content,
|
|
454
|
-
size: stats.size,
|
|
455
|
-
lastModified: stats.mtime.toISOString()
|
|
456
|
-
};
|
|
457
|
-
|
|
458
|
-
} catch (error) {
|
|
459
|
-
if (error.code === 'ENOENT') {
|
|
460
|
-
throw new Error(`Component not found: ${config.componentPath}`);
|
|
461
|
-
}
|
|
462
|
-
throw error;
|
|
463
|
-
}
|
|
464
|
-
}
|
|
465
|
-
|
|
466
|
-
async analyzeDependencyImpact(targetComponent, config) {
|
|
467
|
-
return await this.dependencyAnalyzer.analyzeDependencyImpact(targetComponent, {
|
|
468
|
-
depth: config.depth,
|
|
469
|
-
includeTests: config.includeTests,
|
|
470
|
-
excludeExternal: config.excludeExternal,
|
|
471
|
-
modificationType: config.modificationType
|
|
472
|
-
});
|
|
473
|
-
}
|
|
474
|
-
|
|
475
|
-
async predictChangePropagation(targetComponent, dependencyImpact, config) {
|
|
476
|
-
return await this.propagationPredictor.predictPropagation(targetComponent, dependencyImpact, {
|
|
477
|
-
depth: config.depth,
|
|
478
|
-
modificationType: config.modificationType
|
|
479
|
-
});
|
|
480
|
-
}
|
|
481
|
-
|
|
482
|
-
async assessModificationRisks(targetComponent, dependencyImpact, propagationAnalysis, config) {
|
|
483
|
-
return await this.riskAssessment.assessRisks(targetComponent, {
|
|
484
|
-
dependencyImpact,
|
|
485
|
-
propagationAnalysis,
|
|
486
|
-
modificationType: config.modificationType,
|
|
487
|
-
riskThreshold: config.riskThreshold
|
|
488
|
-
});
|
|
489
|
-
}
|
|
490
|
-
|
|
491
|
-
async generateImpactReport(targetComponent, analyses, config) {
|
|
492
|
-
const { dependencyImpact, propagationAnalysis, riskAssessment } = analyses;
|
|
493
|
-
|
|
494
|
-
const report = {
|
|
495
|
-
reportId: `impact-${Date.now()}-${Math.random().toString(36).substr(2, 6)}`,
|
|
496
|
-
timestamp: new Date().toISOString(),
|
|
497
|
-
targetComponent: {
|
|
498
|
-
path: targetComponent.path,
|
|
499
|
-
type: targetComponent.type,
|
|
500
|
-
size: targetComponent.size
|
|
501
|
-
},
|
|
502
|
-
modificationType: config.modificationType,
|
|
503
|
-
analysisDepth: config.depth,
|
|
504
|
-
summary: {
|
|
505
|
-
overallRisk: riskAssessment.overallRisk,
|
|
506
|
-
affectedComponents: dependencyImpact.affectedComponents.length,
|
|
507
|
-
propagationDepth: propagationAnalysis.maxDepth,
|
|
508
|
-
criticalIssues: riskAssessment.criticalIssues.length,
|
|
509
|
-
recommendations: riskAssessment.recommendations.length
|
|
510
|
-
},
|
|
511
|
-
dependencyAnalysis: dependencyImpact,
|
|
512
|
-
propagationAnalysis: propagationAnalysis,
|
|
513
|
-
riskAssessment: riskAssessment,
|
|
514
|
-
metadata: {
|
|
515
|
-
analysisTimestamp: new Date().toISOString(),
|
|
516
|
-
configUsed: config
|
|
517
|
-
}
|
|
518
|
-
};
|
|
519
|
-
|
|
520
|
-
return report;
|
|
521
|
-
}
|
|
522
|
-
|
|
523
|
-
async displayImpactSummary(report) {
|
|
524
|
-
console.log(chalk.blue('\\n📊 Impact Analysis Results'));
|
|
525
|
-
console.log(chalk.gray('━'.repeat(50)));
|
|
526
|
-
|
|
527
|
-
console.log(`Target: ${chalk.white(report.targetComponent.path)}`);
|
|
528
|
-
console.log(`Modification: ${chalk.white(report.modificationType)}`);
|
|
529
|
-
console.log(`Risk Level: ${this.formatRiskLevel(report.summary.overallRisk)}`);
|
|
530
|
-
console.log(`Affected Components: ${chalk.white(report.summary.affectedComponents)}`);
|
|
531
|
-
console.log(`Propagation Depth: ${chalk.white(report.summary.propagationDepth)}`);
|
|
532
|
-
|
|
533
|
-
if (report.summary.criticalIssues > 0) {
|
|
534
|
-
console.log(`${chalk.red('⚠ Critical Issues:')} ${report.summary.criticalIssues}`);
|
|
535
|
-
}
|
|
536
|
-
|
|
537
|
-
if (report.riskAssessment.recommendations.length > 0) {
|
|
538
|
-
console.log(chalk.blue('\\n💡 Key Recommendations:'));
|
|
539
|
-
report.riskAssessment.recommendations.slice(0, 3).forEach((rec, index) => {
|
|
540
|
-
console.log(` ${index + 1}. ${rec.title}`);
|
|
541
|
-
});
|
|
542
|
-
}
|
|
543
|
-
|
|
544
|
-
// Display most critical affected components
|
|
545
|
-
if (report.dependencyAnalysis.affectedComponents.length > 0) {
|
|
546
|
-
console.log(chalk.blue('\\n🔗 Most Impacted Components:'));
|
|
547
|
-
const topImpacted = report.dependencyAnalysis.affectedComponents
|
|
548
|
-
.sort((a, b) => b.impactScore - a.impactScore)
|
|
549
|
-
.slice(0, 5);
|
|
550
|
-
|
|
551
|
-
topImpacted.forEach(component => {
|
|
552
|
-
const riskIcon = component.impactScore > 8 ? '🔴' : component.impactScore > 5 ? '🟡' : '🟢';
|
|
553
|
-
console.log(` ${riskIcon} ${component.path} (impact: ${component.impactScore}/10)`);
|
|
554
|
-
});
|
|
555
|
-
}
|
|
556
|
-
}
|
|
557
|
-
|
|
558
|
-
async generateVisualRepresentation(report, config) {
|
|
559
|
-
const visualData = await this.visualGenerator.generateImpactVisualization(report, {
|
|
560
|
-
format: config.outputFormat,
|
|
561
|
-
includeInteractive: config.outputFormat === 'html'
|
|
562
|
-
});
|
|
563
|
-
|
|
564
|
-
if (config.outputFormat === 'visual') {
|
|
565
|
-
// Display ASCII-based visual representation
|
|
566
|
-
console.log(chalk.blue('\\n📈 Visual Impact Map:'));
|
|
567
|
-
console.log(visualData.asciiGraph);
|
|
568
|
-
}
|
|
569
|
-
|
|
570
|
-
return visualData;
|
|
571
|
-
}
|
|
572
|
-
|
|
573
|
-
async saveDetailedReport(report, savePath, format) {
|
|
574
|
-
const fullPath = path.resolve(this.rootPath, savePath);
|
|
575
|
-
await fs.mkdir(path.dirname(fullPath), { recursive: true });
|
|
576
|
-
|
|
577
|
-
let content;
|
|
578
|
-
switch (format) {
|
|
579
|
-
case 'json':
|
|
580
|
-
content = JSON.stringify(report, null, 2);
|
|
581
|
-
break;
|
|
582
|
-
case 'html':
|
|
583
|
-
content = await this.generateHtmlReport(report);
|
|
584
|
-
break;
|
|
585
|
-
default:
|
|
586
|
-
content = await this.generateTextReport(report);
|
|
587
|
-
}
|
|
588
|
-
|
|
589
|
-
await fs.writeFile(fullPath, content);
|
|
590
|
-
console.log(chalk.green(`\\n📄 Detailed report saved to: ${savePath}`));
|
|
591
|
-
}
|
|
592
|
-
|
|
593
|
-
async handleHighRiskApproval(report) {
|
|
594
|
-
console.log(chalk.yellow('\\n⚠ HIGH RISK MODIFICATION DETECTED'));
|
|
595
|
-
console.log(chalk.gray('This modification may have significant impact on the framework.\\n'));
|
|
596
|
-
|
|
597
|
-
const { approved } = await inquirer.prompt([{
|
|
598
|
-
type: 'confirm',
|
|
599
|
-
name: 'approved',
|
|
600
|
-
message: `Proceed with ${report.summary.overallRisk} risk modification of ${report.targetComponent.path}?`,
|
|
601
|
-
default: false
|
|
602
|
-
}]);
|
|
603
|
-
|
|
604
|
-
if (approved) {
|
|
605
|
-
// Log approval for audit trail
|
|
606
|
-
await this.approvalWorkflow.logApproval(report, {
|
|
607
|
-
approvedBy: 'user',
|
|
608
|
-
approvalTimestamp: new Date().toISOString(),
|
|
609
|
-
riskLevel: report.summary.overallRisk
|
|
610
|
-
});
|
|
611
|
-
}
|
|
612
|
-
|
|
613
|
-
return approved;
|
|
614
|
-
}
|
|
615
|
-
|
|
616
|
-
// Helper methods
|
|
617
|
-
|
|
618
|
-
determineComponentType(filePath, content) {
|
|
619
|
-
if (filePath.includes('/agents/')) return 'agent';
|
|
620
|
-
if (filePath.includes('/tasks/')) return 'task';
|
|
621
|
-
if (filePath.includes('/workflows/')) return 'workflow';
|
|
622
|
-
if (filePath.includes('/utils/')) return 'util';
|
|
623
|
-
|
|
624
|
-
// Analyze content for type hints
|
|
625
|
-
if (content.includes('class') && content.includes('execute')) return 'task';
|
|
626
|
-
if (content.includes('agent_name') || content.includes('Agent')) return 'agent';
|
|
627
|
-
if (content.includes('workflow_steps') || content.includes('Workflow')) return 'workflow';
|
|
628
|
-
|
|
629
|
-
return 'unknown';
|
|
630
|
-
}
|
|
631
|
-
|
|
632
|
-
formatRiskLevel(riskLevel) {
|
|
633
|
-
const colors = {
|
|
634
|
-
low: chalk.green,
|
|
635
|
-
medium: chalk.yellow,
|
|
636
|
-
high: chalk.red,
|
|
637
|
-
critical: chalk.red.bold
|
|
638
|
-
};
|
|
639
|
-
return colors[riskLevel] ? colors[riskLevel](riskLevel.toUpperCase()) : riskLevel;
|
|
640
|
-
}
|
|
641
|
-
|
|
642
|
-
async generateHtmlReport(report) {
|
|
643
|
-
// Generate comprehensive HTML report with charts and interactivity
|
|
644
|
-
return `<!DOCTYPE html>
|
|
645
|
-
<html>
|
|
646
|
-
<head>
|
|
647
|
-
<title>Impact Analysis Report - ${report.targetComponent.path}</title>
|
|
648
|
-
<style>
|
|
649
|
-
body { font-family: Arial, sans-serif; margin: 20px; }
|
|
650
|
-
.risk-${report.summary.overallRisk} { color: ${this.getRiskColor(report.summary.overallRisk)}; }
|
|
651
|
-
.component-list { margin: 10px 0; }
|
|
652
|
-
.component-item { padding: 5px; margin: 2px 0; border-left: 3px solid #ccc; }
|
|
653
|
-
.chart-container { margin: 20px 0; }
|
|
654
|
-
</style>
|
|
655
|
-
</head>
|
|
656
|
-
<body>
|
|
657
|
-
<h1>Impact Analysis Report</h1>
|
|
658
|
-
<h2>Target: ${report.targetComponent.path}</h2>
|
|
659
|
-
<p><strong>Risk Level:</strong> <span class="risk-${report.summary.overallRisk}">${report.summary.overallRisk.toUpperCase()}</span></p>
|
|
660
|
-
<p><strong>Affected Components:</strong> ${report.summary.affectedComponents}</p>
|
|
661
|
-
<p><strong>Analysis Date:</strong> ${report.timestamp}</p>
|
|
662
|
-
|
|
663
|
-
<h3>Dependency Impact</h3>
|
|
664
|
-
<div class="component-list">
|
|
665
|
-
${report.dependencyAnalysis.affectedComponents.map(comp =>
|
|
666
|
-
`<div class="component-item">
|
|
667
|
-
<strong>${comp.path}</strong> (Impact: ${comp.impactScore}/10)
|
|
668
|
-
<br><small>${comp.reason}</small>
|
|
669
|
-
</div>`
|
|
670
|
-
).join('')}
|
|
671
|
-
</div>
|
|
672
|
-
|
|
673
|
-
<h3>Risk Assessment</h3>
|
|
674
|
-
<ul>
|
|
675
|
-
${report.riskAssessment.recommendations.map(rec =>
|
|
676
|
-
`<li><strong>${rec.title}</strong><br>${rec.description}</li>`
|
|
677
|
-
).join('')}
|
|
678
|
-
</ul>
|
|
679
|
-
</body>
|
|
680
|
-
</html>`;
|
|
681
|
-
}
|
|
682
|
-
|
|
683
|
-
async generateTextReport(report) {
|
|
684
|
-
return `
|
|
685
|
-
IMPACT ANALYSIS REPORT
|
|
686
|
-
=====================
|
|
687
|
-
|
|
688
|
-
Target Component: ${report.targetComponent.path}
|
|
689
|
-
Modification Type: ${report.modificationType}
|
|
690
|
-
Analysis Depth: ${report.analysisDepth}
|
|
691
|
-
Risk Level: ${report.summary.overallRisk.toUpperCase()}
|
|
692
|
-
Analysis Date: ${report.timestamp}
|
|
693
|
-
|
|
694
|
-
SUMMARY
|
|
695
|
-
-------
|
|
696
|
-
Affected Components: ${report.summary.affectedComponents}
|
|
697
|
-
Propagation Depth: ${report.summary.propagationDepth}
|
|
698
|
-
Critical Issues: ${report.summary.criticalIssues}
|
|
699
|
-
Recommendations: ${report.summary.recommendations}
|
|
700
|
-
|
|
701
|
-
AFFECTED COMPONENTS
|
|
702
|
-
------------------
|
|
703
|
-
${report.dependencyAnalysis.affectedComponents.map(comp =>
|
|
704
|
-
`- ${comp.path} (Impact: ${comp.impactScore}/10)
|
|
705
|
-
Reason: ${comp.reason}`
|
|
706
|
-
).join('\\n')}
|
|
707
|
-
|
|
708
|
-
RECOMMENDATIONS
|
|
709
|
-
--------------
|
|
710
|
-
${report.riskAssessment.recommendations.map((rec, index) =>
|
|
711
|
-
`${index + 1}. ${rec.title}
|
|
712
|
-
${rec.description}`
|
|
713
|
-
).join('\\n\\n')}
|
|
714
|
-
|
|
715
|
-
RISK FACTORS
|
|
716
|
-
-----------
|
|
717
|
-
${report.riskAssessment.riskFactors.map(factor =>
|
|
718
|
-
`- ${factor.type}: ${factor.description} (Severity: ${factor.severity})`
|
|
719
|
-
).join('\\n')}
|
|
720
|
-
`;
|
|
721
|
-
}
|
|
722
|
-
|
|
723
|
-
getRiskColor(riskLevel) {
|
|
724
|
-
const colors = {
|
|
725
|
-
low: '#28a745',
|
|
726
|
-
medium: '#ffc107',
|
|
727
|
-
high: '#dc3545',
|
|
728
|
-
critical: '#721c24'
|
|
729
|
-
};
|
|
730
|
-
return colors[riskLevel] || '#6c757d';
|
|
731
|
-
}
|
|
732
|
-
}
|
|
733
|
-
|
|
734
|
-
module.exports = AnalyzeImpactTask;
|
|
735
|
-
```
|
|
736
|
-
|
|
737
|
-
## Validation Rules
|
|
738
|
-
|
|
739
|
-
### Input Validation
|
|
740
|
-
- Modification type must be valid (modify, deprecate, remove, refactor)
|
|
741
|
-
- Component path must exist and be accessible
|
|
742
|
-
- Analysis depth must be recognized level
|
|
743
|
-
- Risk threshold must be valid level
|
|
744
|
-
|
|
745
|
-
### Safety Checks
|
|
746
|
-
- High-risk modifications require approval workflow
|
|
747
|
-
- Critical modifications generate detailed warnings
|
|
748
|
-
- External dependency analysis can be excluded for security
|
|
749
|
-
- Report generation validates output paths
|
|
750
|
-
|
|
751
|
-
### Analysis Requirements
|
|
752
|
-
- Dependency analysis must trace all connections
|
|
753
|
-
- Risk assessment must consider modification type
|
|
754
|
-
- Propagation prediction must respect analysis depth
|
|
755
|
-
- Visual representation must be accessible
|
|
756
|
-
|
|
757
|
-
## Integration Points
|
|
758
|
-
|
|
759
|
-
### Dependency Impact Analyzer
|
|
760
|
-
- Analyzes component dependencies and reverse dependencies
|
|
761
|
-
- Calculates impact scores for affected components
|
|
762
|
-
- Traces dependency chains to specified depth
|
|
763
|
-
- Identifies breaking change potential
|
|
764
|
-
|
|
765
|
-
### Change Propagation Predictor
|
|
766
|
-
- Predicts how changes will propagate through the system
|
|
767
|
-
- Models cascading effects of modifications
|
|
768
|
-
- Estimates propagation depth and scope
|
|
769
|
-
- Identifies potential bottlenecks and failure points
|
|
770
|
-
|
|
771
|
-
### Risk Assessment System
|
|
772
|
-
- Evaluates modification risks across multiple dimensions
|
|
773
|
-
- Considers component criticality and usage patterns
|
|
774
|
-
- Generates actionable recommendations
|
|
775
|
-
- Provides risk mitigation strategies
|
|
776
|
-
|
|
777
|
-
### Visual Impact Generator
|
|
778
|
-
- Creates visual representations of impact analysis
|
|
779
|
-
- Supports multiple output formats (ASCII, HTML, JSON)
|
|
780
|
-
- Generates interactive impact maps for complex scenarios
|
|
781
|
-
- Provides exportable reports and visualizations
|
|
782
|
-
|
|
783
|
-
### Approval Workflow
|
|
784
|
-
- Manages approval process for high-risk modifications
|
|
785
|
-
- Maintains audit trail of approval decisions
|
|
786
|
-
- Integrates with user approval prompts
|
|
787
|
-
- Supports automated approval rules for trusted scenarios
|
|
788
|
-
|
|
789
|
-
## Output Structure
|
|
790
|
-
|
|
791
|
-
### Success Response
|
|
792
|
-
```json
|
|
793
|
-
{
|
|
794
|
-
"success": true,
|
|
795
|
-
"targetComponent": "aios-core/agents/weather-agent.md",
|
|
796
|
-
"riskLevel": "medium",
|
|
797
|
-
"affectedComponents": 12,
|
|
798
|
-
"propagationDepth": 3,
|
|
799
|
-
"requiresApproval": false,
|
|
800
|
-
"impactReport": {
|
|
801
|
-
"summary": { ... },
|
|
802
|
-
"dependencyAnalysis": { ... },
|
|
803
|
-
"riskAssessment": { ... }
|
|
804
|
-
}
|
|
805
|
-
}
|
|
806
|
-
```
|
|
807
|
-
|
|
808
|
-
### High-Risk Response
|
|
809
|
-
```json
|
|
810
|
-
{
|
|
811
|
-
"success": true,
|
|
812
|
-
"requiresApproval": true,
|
|
813
|
-
"riskLevel": "high",
|
|
814
|
-
"impactSummary": {
|
|
815
|
-
"criticalIssues": 3,
|
|
816
|
-
"affectedComponents": 25,
|
|
817
|
-
"recommendations": 8
|
|
818
|
-
}
|
|
819
|
-
}
|
|
820
|
-
```
|
|
821
|
-
|
|
822
|
-
## Security Considerations
|
|
823
|
-
- Validate all file paths to prevent directory traversal
|
|
824
|
-
- Sanitize component paths and modification descriptions
|
|
825
|
-
- Ensure approval workflow cannot be bypassed for critical changes
|
|
826
|
-
- Validate output file paths for report generation
|
|
1
|
+
# An
|
|
2
|
+
## Execution Modes
|
|
3
|
+
|
|
4
|
+
**Choose your execution mode:**
|
|
5
|
+
|
|
6
|
+
### 1. YOLO Mode - Fast, Autonomous (0-1 prompts)
|
|
7
|
+
- Autonomous decision making with logging
|
|
8
|
+
- Minimal user interaction
|
|
9
|
+
- **Best for:** Simple, deterministic tasks
|
|
10
|
+
|
|
11
|
+
### 2. Interactive Mode - Balanced, Educational (5-10 prompts) **[DEFAULT]**
|
|
12
|
+
- Explicit decision checkpoints
|
|
13
|
+
- Educational explanations
|
|
14
|
+
- **Best for:** Learning, complex decisions
|
|
15
|
+
|
|
16
|
+
### 3. Pre-Flight Planning - Comprehensive Upfront Planning
|
|
17
|
+
- Task analysis phase (identify all ambiguities)
|
|
18
|
+
- Zero ambiguity execution
|
|
19
|
+
- **Best for:** Ambiguous requirements, critical work
|
|
20
|
+
|
|
21
|
+
**Parameter:** `mode` (optional, default: `interactive`)
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Task Definition (AIOS Task Format V1.0)
|
|
26
|
+
|
|
27
|
+
```yaml
|
|
28
|
+
task: architectAnalyzeImpact()
|
|
29
|
+
responsável: Aria (Visionary)
|
|
30
|
+
responsavel_type: Agente
|
|
31
|
+
atomic_layer: Strategy
|
|
32
|
+
|
|
33
|
+
**Entrada:**
|
|
34
|
+
- campo: task
|
|
35
|
+
tipo: string
|
|
36
|
+
origem: User Input
|
|
37
|
+
obrigatório: true
|
|
38
|
+
validação: Must be registered task
|
|
39
|
+
|
|
40
|
+
- campo: parameters
|
|
41
|
+
tipo: object
|
|
42
|
+
origem: User Input
|
|
43
|
+
obrigatório: false
|
|
44
|
+
validação: Valid task parameters
|
|
45
|
+
|
|
46
|
+
- campo: mode
|
|
47
|
+
tipo: string
|
|
48
|
+
origem: User Input
|
|
49
|
+
obrigatório: false
|
|
50
|
+
validação: yolo|interactive|pre-flight
|
|
51
|
+
|
|
52
|
+
**Saída:**
|
|
53
|
+
- campo: execution_result
|
|
54
|
+
tipo: object
|
|
55
|
+
destino: Memory
|
|
56
|
+
persistido: false
|
|
57
|
+
|
|
58
|
+
- campo: logs
|
|
59
|
+
tipo: array
|
|
60
|
+
destino: File (.ai/logs/*)
|
|
61
|
+
persistido: true
|
|
62
|
+
|
|
63
|
+
- campo: state
|
|
64
|
+
tipo: object
|
|
65
|
+
destino: State management
|
|
66
|
+
persistido: true
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Pre-Conditions
|
|
72
|
+
|
|
73
|
+
**Purpose:** Validate prerequisites BEFORE task execution (blocking)
|
|
74
|
+
|
|
75
|
+
**Checklist:**
|
|
76
|
+
|
|
77
|
+
```yaml
|
|
78
|
+
pre-conditions:
|
|
79
|
+
- [ ] Task is registered; required parameters provided; dependencies met
|
|
80
|
+
tipo: pre-condition
|
|
81
|
+
blocker: true
|
|
82
|
+
validação: |
|
|
83
|
+
Check task is registered; required parameters provided; dependencies met
|
|
84
|
+
error_message: "Pre-condition failed: Task is registered; required parameters provided; dependencies met"
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Post-Conditions
|
|
90
|
+
|
|
91
|
+
**Purpose:** Validate execution success AFTER task completes
|
|
92
|
+
|
|
93
|
+
**Checklist:**
|
|
94
|
+
|
|
95
|
+
```yaml
|
|
96
|
+
post-conditions:
|
|
97
|
+
- [ ] Task completed; exit code 0; expected outputs created
|
|
98
|
+
tipo: post-condition
|
|
99
|
+
blocker: true
|
|
100
|
+
validação: |
|
|
101
|
+
Verify task completed; exit code 0; expected outputs created
|
|
102
|
+
error_message: "Post-condition failed: Task completed; exit code 0; expected outputs created"
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Acceptance Criteria
|
|
108
|
+
|
|
109
|
+
**Purpose:** Definitive pass/fail criteria for task completion
|
|
110
|
+
|
|
111
|
+
**Checklist:**
|
|
112
|
+
|
|
113
|
+
```yaml
|
|
114
|
+
acceptance-criteria:
|
|
115
|
+
- [ ] Task completed as expected; side effects documented
|
|
116
|
+
tipo: acceptance-criterion
|
|
117
|
+
blocker: true
|
|
118
|
+
validação: |
|
|
119
|
+
Assert task completed as expected; side effects documented
|
|
120
|
+
error_message: "Acceptance criterion not met: Task completed as expected; side effects documented"
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## Tools
|
|
126
|
+
|
|
127
|
+
**External/shared resources used by this task:**
|
|
128
|
+
|
|
129
|
+
- **Tool:** task-runner
|
|
130
|
+
- **Purpose:** Task execution and orchestration
|
|
131
|
+
- **Source:** .aios-core/core/task-runner.js
|
|
132
|
+
|
|
133
|
+
- **Tool:** logger
|
|
134
|
+
- **Purpose:** Execution logging and error tracking
|
|
135
|
+
- **Source:** .aios-core/utils/logger.js
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Scripts
|
|
140
|
+
|
|
141
|
+
**Agent-specific code for this task:**
|
|
142
|
+
|
|
143
|
+
- **Script:** execute-task.js
|
|
144
|
+
- **Purpose:** Generic task execution wrapper
|
|
145
|
+
- **Language:** JavaScript
|
|
146
|
+
- **Location:** .aios-core/scripts/execute-task.js
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## Error Handling
|
|
151
|
+
|
|
152
|
+
**Strategy:** retry
|
|
153
|
+
|
|
154
|
+
**Common Errors:**
|
|
155
|
+
|
|
156
|
+
1. **Error:** Task Not Found
|
|
157
|
+
- **Cause:** Specified task not registered in system
|
|
158
|
+
- **Resolution:** Verify task name and registration
|
|
159
|
+
- **Recovery:** List available tasks, suggest similar
|
|
160
|
+
|
|
161
|
+
2. **Error:** Invalid Parameters
|
|
162
|
+
- **Cause:** Task parameters do not match expected schema
|
|
163
|
+
- **Resolution:** Validate parameters against task definition
|
|
164
|
+
- **Recovery:** Provide parameter template, reject execution
|
|
165
|
+
|
|
166
|
+
3. **Error:** Execution Timeout
|
|
167
|
+
- **Cause:** Task exceeds maximum execution time
|
|
168
|
+
- **Resolution:** Optimize task or increase timeout
|
|
169
|
+
- **Recovery:** Kill task, cleanup resources, log state
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Performance
|
|
174
|
+
|
|
175
|
+
**Expected Metrics:**
|
|
176
|
+
|
|
177
|
+
```yaml
|
|
178
|
+
duration_expected: 5-20 min (estimated)
|
|
179
|
+
cost_estimated: $0.003-0.015
|
|
180
|
+
token_usage: ~2,000-8,000 tokens
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
**Optimization Notes:**
|
|
184
|
+
- Iterative analysis with depth limits; cache intermediate results; batch similar operations
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## Metadata
|
|
189
|
+
|
|
190
|
+
```yaml
|
|
191
|
+
story: N/A
|
|
192
|
+
version: 1.0.0
|
|
193
|
+
dependencies:
|
|
194
|
+
- N/A
|
|
195
|
+
tags:
|
|
196
|
+
- analysis
|
|
197
|
+
- metrics
|
|
198
|
+
updated_at: 2025-11-17
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
alyze Impact - AIOS Developer Task
|
|
204
|
+
|
|
205
|
+
## Purpose
|
|
206
|
+
Analyze the potential impact of proposed component modifications on the broader Synkra AIOS framework.
|
|
207
|
+
|
|
208
|
+
## Command Pattern
|
|
209
|
+
```
|
|
210
|
+
*analyze-impact <modification-type> <component-path> [options]
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
## Parameters
|
|
214
|
+
- `modification-type`: Type of modification (modify, deprecate, remove, refactor)
|
|
215
|
+
- `component-path`: Path to the component being modified
|
|
216
|
+
- `options`: Impact analysis configuration
|
|
217
|
+
|
|
218
|
+
### Options
|
|
219
|
+
- `--depth <level>`: Analysis depth (shallow, medium, deep)
|
|
220
|
+
- `--include-tests`: Include test file impact analysis
|
|
221
|
+
- `--risk-threshold <level>`: Risk threshold for warnings (low, medium, high, critical)
|
|
222
|
+
- `--output-format <format>`: Output format (text, json, visual, html)
|
|
223
|
+
- `--save-report <path>`: Save detailed report to file
|
|
224
|
+
- `--approve-high-risk`: Skip approval workflow for high-risk changes
|
|
225
|
+
- `--exclude-external`: Exclude external dependency analysis
|
|
226
|
+
|
|
227
|
+
## Examples
|
|
228
|
+
```bash
|
|
229
|
+
# Analyze impact of modifying an agent
|
|
230
|
+
*analyze-impact modify aios-core/agents/weather-agent.md --depth deep --include-tests
|
|
231
|
+
|
|
232
|
+
# Analyze deprecation impact with visual output
|
|
233
|
+
*analyze-impact deprecate aios-core/scripts/old-helper.js --output-format visual --save-report reports/deprecation-impact.html
|
|
234
|
+
|
|
235
|
+
# Quick impact check for refactoring
|
|
236
|
+
*analyze-impact refactor aios-core/tasks/process-data.md --depth shallow --risk-threshold medium
|
|
237
|
+
|
|
238
|
+
# Analyze removal with approval workflow
|
|
239
|
+
*analyze-impact remove aios-core/workflows/legacy-workflow.yaml --depth deep --save-report reports/removal-impact.json
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
## Implementation
|
|
243
|
+
|
|
244
|
+
```javascript
|
|
245
|
+
const fs = require('fs').promises;
|
|
246
|
+
const path = require('path');
|
|
247
|
+
const chalk = require('chalk');
|
|
248
|
+
const inquirer = require('inquirer');
|
|
249
|
+
|
|
250
|
+
class AnalyzeImpactTask {
|
|
251
|
+
constructor() {
|
|
252
|
+
this.taskName = 'analyze-impact';
|
|
253
|
+
this.description = 'Analyze potential impact of component modifications';
|
|
254
|
+
this.rootPath = process.cwd();
|
|
255
|
+
this.dependencyAnalyzer = null;
|
|
256
|
+
this.propagationPredictor = null;
|
|
257
|
+
this.riskAssessment = null;
|
|
258
|
+
this.visualGenerator = null;
|
|
259
|
+
this.approvalWorkflow = null;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
async execute(params) {
|
|
263
|
+
try {
|
|
264
|
+
console.log(chalk.blue('🔍 AIOS Impact Analysis'));
|
|
265
|
+
console.log(chalk.gray('Analyzing potential impact of component modifications\\n'));
|
|
266
|
+
|
|
267
|
+
// Parse and validate parameters
|
|
268
|
+
const config = await this.parseParameters(params);
|
|
269
|
+
|
|
270
|
+
// Initialize dependencies
|
|
271
|
+
await this.initializeDependencies();
|
|
272
|
+
|
|
273
|
+
// Validate target component exists
|
|
274
|
+
const targetComponent = await this.validateTargetComponent(config);
|
|
275
|
+
|
|
276
|
+
// Perform dependency impact analysis
|
|
277
|
+
console.log(chalk.gray('Analyzing dependency impact...'));
|
|
278
|
+
const dependencyImpact = await this.analyzeDependencyImpact(targetComponent, config);
|
|
279
|
+
|
|
280
|
+
// Predict change propagation
|
|
281
|
+
console.log(chalk.gray('Predicting change propagation...'));
|
|
282
|
+
const propagationAnalysis = await this.predictChangePropagation(targetComponent, dependencyImpact, config);
|
|
283
|
+
|
|
284
|
+
// Assess modification risks
|
|
285
|
+
console.log(chalk.gray('Assessing modification risks...'));
|
|
286
|
+
const riskAssessment = await this.assessModificationRisks(targetComponent, dependencyImpact, propagationAnalysis, config);
|
|
287
|
+
|
|
288
|
+
// Generate comprehensive impact report
|
|
289
|
+
const impactReport = await this.generateImpactReport(targetComponent, {
|
|
290
|
+
dependencyImpact,
|
|
291
|
+
propagationAnalysis,
|
|
292
|
+
riskAssessment
|
|
293
|
+
}, config);
|
|
294
|
+
|
|
295
|
+
// Display impact summary
|
|
296
|
+
await this.displayImpactSummary(impactReport);
|
|
297
|
+
|
|
298
|
+
// Generate visual representation if requested
|
|
299
|
+
if (config.outputFormat === 'visual' || config.outputFormat === 'html') {
|
|
300
|
+
console.log(chalk.gray('Generating visual impact representation...'));
|
|
301
|
+
await this.generateVisualRepresentation(impactReport, config);
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
// Save detailed report if requested
|
|
305
|
+
if (config.saveReport) {
|
|
306
|
+
await this.saveDetailedReport(impactReport, config.saveReport, config.outputFormat);
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
// Handle high-risk change approval workflow
|
|
310
|
+
if (riskAssessment.overallRisk === 'high' || riskAssessment.overallRisk === 'critical') {
|
|
311
|
+
if (!config.approveHighRisk) {
|
|
312
|
+
const approved = await this.handleHighRiskApproval(impactReport);
|
|
313
|
+
if (!approved) {
|
|
314
|
+
console.log(chalk.yellow('\\n⚠ High-risk modification requires approval before proceeding'));
|
|
315
|
+
return {
|
|
316
|
+
success: true,
|
|
317
|
+
requiresApproval: true,
|
|
318
|
+
riskLevel: riskAssessment.overallRisk,
|
|
319
|
+
impactSummary: impactReport.summary
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
// Display completion summary
|
|
326
|
+
console.log(chalk.green('\\n✅ Impact analysis completed'));
|
|
327
|
+
console.log(chalk.gray(` Components analyzed: ${dependencyImpact.affectedComponents.length}`));
|
|
328
|
+
console.log(chalk.gray(` Risk level: ${this.formatRiskLevel(riskAssessment.overallRisk)}`));
|
|
329
|
+
console.log(chalk.gray(` Propagation depth: ${propagationAnalysis.maxDepth}`));
|
|
330
|
+
|
|
331
|
+
return {
|
|
332
|
+
success: true,
|
|
333
|
+
targetComponent: targetComponent.path,
|
|
334
|
+
riskLevel: riskAssessment.overallRisk,
|
|
335
|
+
affectedComponents: dependencyImpact.affectedComponents.length,
|
|
336
|
+
propagationDepth: propagationAnalysis.maxDepth,
|
|
337
|
+
requiresApproval: false,
|
|
338
|
+
impactReport: config.outputFormat === 'json' ? impactReport : impactReport.summary
|
|
339
|
+
};
|
|
340
|
+
|
|
341
|
+
} catch (error) {
|
|
342
|
+
console.error(chalk.red(`\\n❌ Impact analysis failed: ${error.message}`));
|
|
343
|
+
throw error;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
async parseParameters(params) {
|
|
348
|
+
if (params.length < 2) {
|
|
349
|
+
throw new Error('Usage: *analyze-impact <modification-type> <component-path> [options]');
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
const config = {
|
|
353
|
+
modificationType: params[0],
|
|
354
|
+
componentPath: params[1],
|
|
355
|
+
depth: 'medium',
|
|
356
|
+
includeTests: false,
|
|
357
|
+
riskThreshold: 'medium',
|
|
358
|
+
outputFormat: 'text',
|
|
359
|
+
saveReport: null,
|
|
360
|
+
approveHighRisk: false,
|
|
361
|
+
excludeExternal: false
|
|
362
|
+
};
|
|
363
|
+
|
|
364
|
+
// Parse options
|
|
365
|
+
for (let i = 2; i < params.length; i++) {
|
|
366
|
+
const param = params[i];
|
|
367
|
+
|
|
368
|
+
if (param === '--include-tests') {
|
|
369
|
+
config.includeTests = true;
|
|
370
|
+
} else if (param === '--approve-high-risk') {
|
|
371
|
+
config.approveHighRisk = true;
|
|
372
|
+
} else if (param === '--exclude-external') {
|
|
373
|
+
config.excludeExternal = true;
|
|
374
|
+
} else if (param.startsWith('--depth') && params[i + 1]) {
|
|
375
|
+
config.depth = params[++i];
|
|
376
|
+
} else if (param.startsWith('--risk-threshold') && params[i + 1]) {
|
|
377
|
+
config.riskThreshold = params[++i];
|
|
378
|
+
} else if (param.startsWith('--output-format') && params[i + 1]) {
|
|
379
|
+
config.outputFormat = params[++i];
|
|
380
|
+
} else if (param.startsWith('--save-report') && params[i + 1]) {
|
|
381
|
+
config.saveReport = params[++i];
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
// Validation
|
|
386
|
+
const validModificationTypes = ['modify', 'deprecate', 'remove', 'refactor'];
|
|
387
|
+
if (!validModificationTypes.includes(config.modificationType)) {
|
|
388
|
+
throw new Error(`Invalid modification type: ${config.modificationType}. Must be one of: ${validModificationTypes.join(', ')}`);
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
const validDepths = ['shallow', 'medium', 'deep'];
|
|
392
|
+
if (!validDepths.includes(config.depth)) {
|
|
393
|
+
throw new Error(`Invalid depth: ${config.depth}. Must be one of: ${validDepths.join(', ')}`);
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
const validRiskThresholds = ['low', 'medium', 'high', 'critical'];
|
|
397
|
+
if (!validRiskThresholds.includes(config.riskThreshold)) {
|
|
398
|
+
throw new Error(`Invalid risk threshold: ${config.riskThreshold}. Must be one of: ${validRiskThresholds.join(', ')}`);
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
const validOutputFormats = ['text', 'json', 'visual', 'html'];
|
|
402
|
+
if (!validOutputFormats.includes(config.outputFormat)) {
|
|
403
|
+
throw new Error(`Invalid output format: ${config.outputFormat}. Must be one of: ${validOutputFormats.join(', ')}`);
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
return config;
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
async initializeDependencies() {
|
|
410
|
+
try {
|
|
411
|
+
// Initialize dependency impact analyzer
|
|
412
|
+
const DependencyImpactAnalyzer = require('../scripts/dependency-impact-analyzer');
|
|
413
|
+
this.dependencyAnalyzer = new DependencyImpactAnalyzer({ rootPath: this.rootPath });
|
|
414
|
+
await this.dependencyAnalyzer.initialize();
|
|
415
|
+
|
|
416
|
+
// Initialize change propagation predictor
|
|
417
|
+
// const ChangePropagationPredictor = require('../scripts/change-propagation-predictor'); // Archived in archived-utilities/ (Story 3.1.2)
|
|
418
|
+
// this.propagationPredictor = new ChangePropagationPredictor({ rootPath: this.rootPath }); // Archived in archived-utilities/ (Story 3.1.2)
|
|
419
|
+
|
|
420
|
+
// Initialize risk assessment
|
|
421
|
+
const ModificationRiskAssessment = require('../scripts/modification-risk-assessment');
|
|
422
|
+
this.riskAssessment = new ModificationRiskAssessment({ rootPath: this.rootPath });
|
|
423
|
+
|
|
424
|
+
// Initialize visual impact generator
|
|
425
|
+
const VisualImpactGenerator = require('../scripts/visual-impact-generator');
|
|
426
|
+
this.visualGenerator = new VisualImpactGenerator({ rootPath: this.rootPath });
|
|
427
|
+
|
|
428
|
+
// Initialize approval workflow
|
|
429
|
+
const ApprovalWorkflow = require('../scripts/approval-workflow');
|
|
430
|
+
this.approvalWorkflow = new ApprovalWorkflow({ rootPath: this.rootPath });
|
|
431
|
+
|
|
432
|
+
} catch (error) {
|
|
433
|
+
throw new Error(`Failed to initialize dependencies: ${error.message}`);
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
async validateTargetComponent(config) {
|
|
438
|
+
const fullPath = path.resolve(this.rootPath, config.componentPath);
|
|
439
|
+
|
|
440
|
+
try {
|
|
441
|
+
const stats = await fs.stat(fullPath);
|
|
442
|
+
if (!stats.isFile()) {
|
|
443
|
+
throw new Error(`Target path is not a file: ${config.componentPath}`);
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
const content = await fs.readFile(fullPath, 'utf-8');
|
|
447
|
+
const componentType = this.determineComponentType(fullPath, content);
|
|
448
|
+
|
|
449
|
+
return {
|
|
450
|
+
path: config.componentPath,
|
|
451
|
+
fullPath: fullPath,
|
|
452
|
+
type: componentType,
|
|
453
|
+
content: content,
|
|
454
|
+
size: stats.size,
|
|
455
|
+
lastModified: stats.mtime.toISOString()
|
|
456
|
+
};
|
|
457
|
+
|
|
458
|
+
} catch (error) {
|
|
459
|
+
if (error.code === 'ENOENT') {
|
|
460
|
+
throw new Error(`Component not found: ${config.componentPath}`);
|
|
461
|
+
}
|
|
462
|
+
throw error;
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
async analyzeDependencyImpact(targetComponent, config) {
|
|
467
|
+
return await this.dependencyAnalyzer.analyzeDependencyImpact(targetComponent, {
|
|
468
|
+
depth: config.depth,
|
|
469
|
+
includeTests: config.includeTests,
|
|
470
|
+
excludeExternal: config.excludeExternal,
|
|
471
|
+
modificationType: config.modificationType
|
|
472
|
+
});
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
async predictChangePropagation(targetComponent, dependencyImpact, config) {
|
|
476
|
+
return await this.propagationPredictor.predictPropagation(targetComponent, dependencyImpact, {
|
|
477
|
+
depth: config.depth,
|
|
478
|
+
modificationType: config.modificationType
|
|
479
|
+
});
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
async assessModificationRisks(targetComponent, dependencyImpact, propagationAnalysis, config) {
|
|
483
|
+
return await this.riskAssessment.assessRisks(targetComponent, {
|
|
484
|
+
dependencyImpact,
|
|
485
|
+
propagationAnalysis,
|
|
486
|
+
modificationType: config.modificationType,
|
|
487
|
+
riskThreshold: config.riskThreshold
|
|
488
|
+
});
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
async generateImpactReport(targetComponent, analyses, config) {
|
|
492
|
+
const { dependencyImpact, propagationAnalysis, riskAssessment } = analyses;
|
|
493
|
+
|
|
494
|
+
const report = {
|
|
495
|
+
reportId: `impact-${Date.now()}-${Math.random().toString(36).substr(2, 6)}`,
|
|
496
|
+
timestamp: new Date().toISOString(),
|
|
497
|
+
targetComponent: {
|
|
498
|
+
path: targetComponent.path,
|
|
499
|
+
type: targetComponent.type,
|
|
500
|
+
size: targetComponent.size
|
|
501
|
+
},
|
|
502
|
+
modificationType: config.modificationType,
|
|
503
|
+
analysisDepth: config.depth,
|
|
504
|
+
summary: {
|
|
505
|
+
overallRisk: riskAssessment.overallRisk,
|
|
506
|
+
affectedComponents: dependencyImpact.affectedComponents.length,
|
|
507
|
+
propagationDepth: propagationAnalysis.maxDepth,
|
|
508
|
+
criticalIssues: riskAssessment.criticalIssues.length,
|
|
509
|
+
recommendations: riskAssessment.recommendations.length
|
|
510
|
+
},
|
|
511
|
+
dependencyAnalysis: dependencyImpact,
|
|
512
|
+
propagationAnalysis: propagationAnalysis,
|
|
513
|
+
riskAssessment: riskAssessment,
|
|
514
|
+
metadata: {
|
|
515
|
+
analysisTimestamp: new Date().toISOString(),
|
|
516
|
+
configUsed: config
|
|
517
|
+
}
|
|
518
|
+
};
|
|
519
|
+
|
|
520
|
+
return report;
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
async displayImpactSummary(report) {
|
|
524
|
+
console.log(chalk.blue('\\n📊 Impact Analysis Results'));
|
|
525
|
+
console.log(chalk.gray('━'.repeat(50)));
|
|
526
|
+
|
|
527
|
+
console.log(`Target: ${chalk.white(report.targetComponent.path)}`);
|
|
528
|
+
console.log(`Modification: ${chalk.white(report.modificationType)}`);
|
|
529
|
+
console.log(`Risk Level: ${this.formatRiskLevel(report.summary.overallRisk)}`);
|
|
530
|
+
console.log(`Affected Components: ${chalk.white(report.summary.affectedComponents)}`);
|
|
531
|
+
console.log(`Propagation Depth: ${chalk.white(report.summary.propagationDepth)}`);
|
|
532
|
+
|
|
533
|
+
if (report.summary.criticalIssues > 0) {
|
|
534
|
+
console.log(`${chalk.red('⚠ Critical Issues:')} ${report.summary.criticalIssues}`);
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
if (report.riskAssessment.recommendations.length > 0) {
|
|
538
|
+
console.log(chalk.blue('\\n💡 Key Recommendations:'));
|
|
539
|
+
report.riskAssessment.recommendations.slice(0, 3).forEach((rec, index) => {
|
|
540
|
+
console.log(` ${index + 1}. ${rec.title}`);
|
|
541
|
+
});
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
// Display most critical affected components
|
|
545
|
+
if (report.dependencyAnalysis.affectedComponents.length > 0) {
|
|
546
|
+
console.log(chalk.blue('\\n🔗 Most Impacted Components:'));
|
|
547
|
+
const topImpacted = report.dependencyAnalysis.affectedComponents
|
|
548
|
+
.sort((a, b) => b.impactScore - a.impactScore)
|
|
549
|
+
.slice(0, 5);
|
|
550
|
+
|
|
551
|
+
topImpacted.forEach(component => {
|
|
552
|
+
const riskIcon = component.impactScore > 8 ? '🔴' : component.impactScore > 5 ? '🟡' : '🟢';
|
|
553
|
+
console.log(` ${riskIcon} ${component.path} (impact: ${component.impactScore}/10)`);
|
|
554
|
+
});
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
async generateVisualRepresentation(report, config) {
|
|
559
|
+
const visualData = await this.visualGenerator.generateImpactVisualization(report, {
|
|
560
|
+
format: config.outputFormat,
|
|
561
|
+
includeInteractive: config.outputFormat === 'html'
|
|
562
|
+
});
|
|
563
|
+
|
|
564
|
+
if (config.outputFormat === 'visual') {
|
|
565
|
+
// Display ASCII-based visual representation
|
|
566
|
+
console.log(chalk.blue('\\n📈 Visual Impact Map:'));
|
|
567
|
+
console.log(visualData.asciiGraph);
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
return visualData;
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
async saveDetailedReport(report, savePath, format) {
|
|
574
|
+
const fullPath = path.resolve(this.rootPath, savePath);
|
|
575
|
+
await fs.mkdir(path.dirname(fullPath), { recursive: true });
|
|
576
|
+
|
|
577
|
+
let content;
|
|
578
|
+
switch (format) {
|
|
579
|
+
case 'json':
|
|
580
|
+
content = JSON.stringify(report, null, 2);
|
|
581
|
+
break;
|
|
582
|
+
case 'html':
|
|
583
|
+
content = await this.generateHtmlReport(report);
|
|
584
|
+
break;
|
|
585
|
+
default:
|
|
586
|
+
content = await this.generateTextReport(report);
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
await fs.writeFile(fullPath, content);
|
|
590
|
+
console.log(chalk.green(`\\n📄 Detailed report saved to: ${savePath}`));
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
async handleHighRiskApproval(report) {
|
|
594
|
+
console.log(chalk.yellow('\\n⚠ HIGH RISK MODIFICATION DETECTED'));
|
|
595
|
+
console.log(chalk.gray('This modification may have significant impact on the framework.\\n'));
|
|
596
|
+
|
|
597
|
+
const { approved } = await inquirer.prompt([{
|
|
598
|
+
type: 'confirm',
|
|
599
|
+
name: 'approved',
|
|
600
|
+
message: `Proceed with ${report.summary.overallRisk} risk modification of ${report.targetComponent.path}?`,
|
|
601
|
+
default: false
|
|
602
|
+
}]);
|
|
603
|
+
|
|
604
|
+
if (approved) {
|
|
605
|
+
// Log approval for audit trail
|
|
606
|
+
await this.approvalWorkflow.logApproval(report, {
|
|
607
|
+
approvedBy: 'user',
|
|
608
|
+
approvalTimestamp: new Date().toISOString(),
|
|
609
|
+
riskLevel: report.summary.overallRisk
|
|
610
|
+
});
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
return approved;
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
// Helper methods
|
|
617
|
+
|
|
618
|
+
determineComponentType(filePath, content) {
|
|
619
|
+
if (filePath.includes('/agents/')) return 'agent';
|
|
620
|
+
if (filePath.includes('/tasks/')) return 'task';
|
|
621
|
+
if (filePath.includes('/workflows/')) return 'workflow';
|
|
622
|
+
if (filePath.includes('/utils/')) return 'util';
|
|
623
|
+
|
|
624
|
+
// Analyze content for type hints
|
|
625
|
+
if (content.includes('class') && content.includes('execute')) return 'task';
|
|
626
|
+
if (content.includes('agent_name') || content.includes('Agent')) return 'agent';
|
|
627
|
+
if (content.includes('workflow_steps') || content.includes('Workflow')) return 'workflow';
|
|
628
|
+
|
|
629
|
+
return 'unknown';
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
formatRiskLevel(riskLevel) {
|
|
633
|
+
const colors = {
|
|
634
|
+
low: chalk.green,
|
|
635
|
+
medium: chalk.yellow,
|
|
636
|
+
high: chalk.red,
|
|
637
|
+
critical: chalk.red.bold
|
|
638
|
+
};
|
|
639
|
+
return colors[riskLevel] ? colors[riskLevel](riskLevel.toUpperCase()) : riskLevel;
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
async generateHtmlReport(report) {
|
|
643
|
+
// Generate comprehensive HTML report with charts and interactivity
|
|
644
|
+
return `<!DOCTYPE html>
|
|
645
|
+
<html>
|
|
646
|
+
<head>
|
|
647
|
+
<title>Impact Analysis Report - ${report.targetComponent.path}</title>
|
|
648
|
+
<style>
|
|
649
|
+
body { font-family: Arial, sans-serif; margin: 20px; }
|
|
650
|
+
.risk-${report.summary.overallRisk} { color: ${this.getRiskColor(report.summary.overallRisk)}; }
|
|
651
|
+
.component-list { margin: 10px 0; }
|
|
652
|
+
.component-item { padding: 5px; margin: 2px 0; border-left: 3px solid #ccc; }
|
|
653
|
+
.chart-container { margin: 20px 0; }
|
|
654
|
+
</style>
|
|
655
|
+
</head>
|
|
656
|
+
<body>
|
|
657
|
+
<h1>Impact Analysis Report</h1>
|
|
658
|
+
<h2>Target: ${report.targetComponent.path}</h2>
|
|
659
|
+
<p><strong>Risk Level:</strong> <span class="risk-${report.summary.overallRisk}">${report.summary.overallRisk.toUpperCase()}</span></p>
|
|
660
|
+
<p><strong>Affected Components:</strong> ${report.summary.affectedComponents}</p>
|
|
661
|
+
<p><strong>Analysis Date:</strong> ${report.timestamp}</p>
|
|
662
|
+
|
|
663
|
+
<h3>Dependency Impact</h3>
|
|
664
|
+
<div class="component-list">
|
|
665
|
+
${report.dependencyAnalysis.affectedComponents.map(comp =>
|
|
666
|
+
`<div class="component-item">
|
|
667
|
+
<strong>${comp.path}</strong> (Impact: ${comp.impactScore}/10)
|
|
668
|
+
<br><small>${comp.reason}</small>
|
|
669
|
+
</div>`
|
|
670
|
+
).join('')}
|
|
671
|
+
</div>
|
|
672
|
+
|
|
673
|
+
<h3>Risk Assessment</h3>
|
|
674
|
+
<ul>
|
|
675
|
+
${report.riskAssessment.recommendations.map(rec =>
|
|
676
|
+
`<li><strong>${rec.title}</strong><br>${rec.description}</li>`
|
|
677
|
+
).join('')}
|
|
678
|
+
</ul>
|
|
679
|
+
</body>
|
|
680
|
+
</html>`;
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
async generateTextReport(report) {
|
|
684
|
+
return `
|
|
685
|
+
IMPACT ANALYSIS REPORT
|
|
686
|
+
=====================
|
|
687
|
+
|
|
688
|
+
Target Component: ${report.targetComponent.path}
|
|
689
|
+
Modification Type: ${report.modificationType}
|
|
690
|
+
Analysis Depth: ${report.analysisDepth}
|
|
691
|
+
Risk Level: ${report.summary.overallRisk.toUpperCase()}
|
|
692
|
+
Analysis Date: ${report.timestamp}
|
|
693
|
+
|
|
694
|
+
SUMMARY
|
|
695
|
+
-------
|
|
696
|
+
Affected Components: ${report.summary.affectedComponents}
|
|
697
|
+
Propagation Depth: ${report.summary.propagationDepth}
|
|
698
|
+
Critical Issues: ${report.summary.criticalIssues}
|
|
699
|
+
Recommendations: ${report.summary.recommendations}
|
|
700
|
+
|
|
701
|
+
AFFECTED COMPONENTS
|
|
702
|
+
------------------
|
|
703
|
+
${report.dependencyAnalysis.affectedComponents.map(comp =>
|
|
704
|
+
`- ${comp.path} (Impact: ${comp.impactScore}/10)
|
|
705
|
+
Reason: ${comp.reason}`
|
|
706
|
+
).join('\\n')}
|
|
707
|
+
|
|
708
|
+
RECOMMENDATIONS
|
|
709
|
+
--------------
|
|
710
|
+
${report.riskAssessment.recommendations.map((rec, index) =>
|
|
711
|
+
`${index + 1}. ${rec.title}
|
|
712
|
+
${rec.description}`
|
|
713
|
+
).join('\\n\\n')}
|
|
714
|
+
|
|
715
|
+
RISK FACTORS
|
|
716
|
+
-----------
|
|
717
|
+
${report.riskAssessment.riskFactors.map(factor =>
|
|
718
|
+
`- ${factor.type}: ${factor.description} (Severity: ${factor.severity})`
|
|
719
|
+
).join('\\n')}
|
|
720
|
+
`;
|
|
721
|
+
}
|
|
722
|
+
|
|
723
|
+
getRiskColor(riskLevel) {
|
|
724
|
+
const colors = {
|
|
725
|
+
low: '#28a745',
|
|
726
|
+
medium: '#ffc107',
|
|
727
|
+
high: '#dc3545',
|
|
728
|
+
critical: '#721c24'
|
|
729
|
+
};
|
|
730
|
+
return colors[riskLevel] || '#6c757d';
|
|
731
|
+
}
|
|
732
|
+
}
|
|
733
|
+
|
|
734
|
+
module.exports = AnalyzeImpactTask;
|
|
735
|
+
```
|
|
736
|
+
|
|
737
|
+
## Validation Rules
|
|
738
|
+
|
|
739
|
+
### Input Validation
|
|
740
|
+
- Modification type must be valid (modify, deprecate, remove, refactor)
|
|
741
|
+
- Component path must exist and be accessible
|
|
742
|
+
- Analysis depth must be recognized level
|
|
743
|
+
- Risk threshold must be valid level
|
|
744
|
+
|
|
745
|
+
### Safety Checks
|
|
746
|
+
- High-risk modifications require approval workflow
|
|
747
|
+
- Critical modifications generate detailed warnings
|
|
748
|
+
- External dependency analysis can be excluded for security
|
|
749
|
+
- Report generation validates output paths
|
|
750
|
+
|
|
751
|
+
### Analysis Requirements
|
|
752
|
+
- Dependency analysis must trace all connections
|
|
753
|
+
- Risk assessment must consider modification type
|
|
754
|
+
- Propagation prediction must respect analysis depth
|
|
755
|
+
- Visual representation must be accessible
|
|
756
|
+
|
|
757
|
+
## Integration Points
|
|
758
|
+
|
|
759
|
+
### Dependency Impact Analyzer
|
|
760
|
+
- Analyzes component dependencies and reverse dependencies
|
|
761
|
+
- Calculates impact scores for affected components
|
|
762
|
+
- Traces dependency chains to specified depth
|
|
763
|
+
- Identifies breaking change potential
|
|
764
|
+
|
|
765
|
+
### Change Propagation Predictor
|
|
766
|
+
- Predicts how changes will propagate through the system
|
|
767
|
+
- Models cascading effects of modifications
|
|
768
|
+
- Estimates propagation depth and scope
|
|
769
|
+
- Identifies potential bottlenecks and failure points
|
|
770
|
+
|
|
771
|
+
### Risk Assessment System
|
|
772
|
+
- Evaluates modification risks across multiple dimensions
|
|
773
|
+
- Considers component criticality and usage patterns
|
|
774
|
+
- Generates actionable recommendations
|
|
775
|
+
- Provides risk mitigation strategies
|
|
776
|
+
|
|
777
|
+
### Visual Impact Generator
|
|
778
|
+
- Creates visual representations of impact analysis
|
|
779
|
+
- Supports multiple output formats (ASCII, HTML, JSON)
|
|
780
|
+
- Generates interactive impact maps for complex scenarios
|
|
781
|
+
- Provides exportable reports and visualizations
|
|
782
|
+
|
|
783
|
+
### Approval Workflow
|
|
784
|
+
- Manages approval process for high-risk modifications
|
|
785
|
+
- Maintains audit trail of approval decisions
|
|
786
|
+
- Integrates with user approval prompts
|
|
787
|
+
- Supports automated approval rules for trusted scenarios
|
|
788
|
+
|
|
789
|
+
## Output Structure
|
|
790
|
+
|
|
791
|
+
### Success Response
|
|
792
|
+
```json
|
|
793
|
+
{
|
|
794
|
+
"success": true,
|
|
795
|
+
"targetComponent": "aios-core/agents/weather-agent.md",
|
|
796
|
+
"riskLevel": "medium",
|
|
797
|
+
"affectedComponents": 12,
|
|
798
|
+
"propagationDepth": 3,
|
|
799
|
+
"requiresApproval": false,
|
|
800
|
+
"impactReport": {
|
|
801
|
+
"summary": { ... },
|
|
802
|
+
"dependencyAnalysis": { ... },
|
|
803
|
+
"riskAssessment": { ... }
|
|
804
|
+
}
|
|
805
|
+
}
|
|
806
|
+
```
|
|
807
|
+
|
|
808
|
+
### High-Risk Response
|
|
809
|
+
```json
|
|
810
|
+
{
|
|
811
|
+
"success": true,
|
|
812
|
+
"requiresApproval": true,
|
|
813
|
+
"riskLevel": "high",
|
|
814
|
+
"impactSummary": {
|
|
815
|
+
"criticalIssues": 3,
|
|
816
|
+
"affectedComponents": 25,
|
|
817
|
+
"recommendations": 8
|
|
818
|
+
}
|
|
819
|
+
}
|
|
820
|
+
```
|
|
821
|
+
|
|
822
|
+
## Security Considerations
|
|
823
|
+
- Validate all file paths to prevent directory traversal
|
|
824
|
+
- Sanitize component paths and modification descriptions
|
|
825
|
+
- Ensure approval workflow cannot be bypassed for critical changes
|
|
826
|
+
- Validate output file paths for report generation
|
|
827
827
|
- Log all high-risk modification attempts for audit
|