aios-core 2.1.6 → 2.2.1
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 +704 -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 -11
- 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/tools/diagnose-installation.js +266 -0
- package/tools/diagnose-npx-issue.ps1 +96 -0
- package/tools/quick-diagnose.cmd +85 -0
- package/tools/quick-diagnose.ps1 +117 -0
- 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,741 +1,741 @@
|
|
|
1
|
-
# Task: Setup Database
|
|
2
|
-
|
|
3
|
-
**Purpose**: Interactive database project setup (Supabase, PostgreSQL, MongoDB, MySQL, SQLite)
|
|
4
|
-
|
|
5
|
-
**Elicit**: true
|
|
6
|
-
|
|
7
|
-
**Renamed From (Story 6.1.2.3):**
|
|
8
|
-
- `db-supabase-setup.md` - Now database-agnostic (supports 5+ DB types)
|
|
9
|
-
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
## Execution Modes
|
|
13
|
-
|
|
14
|
-
**Choose your execution mode:**
|
|
15
|
-
|
|
16
|
-
### 1. YOLO Mode - Fast, Autonomous (0-1 prompts)
|
|
17
|
-
- Autonomous decision making with logging
|
|
18
|
-
- Minimal user interaction
|
|
19
|
-
- **Best for:** Simple, deterministic tasks
|
|
20
|
-
|
|
21
|
-
### 2. Interactive Mode - Balanced, Educational (5-10 prompts) **[DEFAULT]**
|
|
22
|
-
- Explicit decision checkpoints
|
|
23
|
-
- Educational explanations
|
|
24
|
-
- **Best for:** Learning, complex decisions
|
|
25
|
-
|
|
26
|
-
### 3. Pre-Flight Planning - Comprehensive Upfront Planning
|
|
27
|
-
- Task analysis phase (identify all ambiguities)
|
|
28
|
-
- Zero ambiguity execution
|
|
29
|
-
- **Best for:** Ambiguous requirements, critical work
|
|
30
|
-
|
|
31
|
-
**Parameter:** `mode` (optional, default: `interactive`)
|
|
32
|
-
|
|
33
|
-
---
|
|
34
|
-
|
|
35
|
-
## Task Definition (AIOS Task Format V1.0)
|
|
36
|
-
|
|
37
|
-
```yaml
|
|
38
|
-
task: setupDatabase()
|
|
39
|
-
responsável: Dara (Sage)
|
|
40
|
-
responsavel_type: Agente
|
|
41
|
-
atomic_layer: Config
|
|
42
|
-
|
|
43
|
-
**Entrada:**
|
|
44
|
-
- campo: project_path
|
|
45
|
-
tipo: string
|
|
46
|
-
origem: User Input
|
|
47
|
-
obrigatório: true
|
|
48
|
-
validação: Valid directory path
|
|
49
|
-
|
|
50
|
-
- campo: options
|
|
51
|
-
tipo: object
|
|
52
|
-
origem: User Input
|
|
53
|
-
obrigatório: false
|
|
54
|
-
validação: Initialization options
|
|
55
|
-
|
|
56
|
-
**Saída:**
|
|
57
|
-
- campo: initialized_project
|
|
58
|
-
tipo: string
|
|
59
|
-
destino: File system
|
|
60
|
-
persistido: true
|
|
61
|
-
|
|
62
|
-
- campo: config_created
|
|
63
|
-
tipo: boolean
|
|
64
|
-
destino: Return value
|
|
65
|
-
persistido: false
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
---
|
|
69
|
-
|
|
70
|
-
## Pre-Conditions
|
|
71
|
-
|
|
72
|
-
**Purpose:** Validate prerequisites BEFORE task execution (blocking)
|
|
73
|
-
|
|
74
|
-
**Checklist:**
|
|
75
|
-
|
|
76
|
-
```yaml
|
|
77
|
-
pre-conditions:
|
|
78
|
-
- [ ] Directory is empty or force flag set; config valid
|
|
79
|
-
tipo: pre-condition
|
|
80
|
-
blocker: true
|
|
81
|
-
validação: |
|
|
82
|
-
Check directory is empty or force flag set; config valid
|
|
83
|
-
error_message: "Pre-condition failed: Directory is empty or force flag set; config valid"
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
---
|
|
87
|
-
|
|
88
|
-
## Post-Conditions
|
|
89
|
-
|
|
90
|
-
**Purpose:** Validate execution success AFTER task completes
|
|
91
|
-
|
|
92
|
-
**Checklist:**
|
|
93
|
-
|
|
94
|
-
```yaml
|
|
95
|
-
post-conditions:
|
|
96
|
-
- [ ] Project initialized; config files created; structure valid
|
|
97
|
-
tipo: post-condition
|
|
98
|
-
blocker: true
|
|
99
|
-
validação: |
|
|
100
|
-
Verify project initialized; config files created; structure valid
|
|
101
|
-
error_message: "Post-condition failed: Project initialized; config files created; structure valid"
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
---
|
|
105
|
-
|
|
106
|
-
## Acceptance Criteria
|
|
107
|
-
|
|
108
|
-
**Purpose:** Definitive pass/fail criteria for task completion
|
|
109
|
-
|
|
110
|
-
**Checklist:**
|
|
111
|
-
|
|
112
|
-
```yaml
|
|
113
|
-
acceptance-criteria:
|
|
114
|
-
- [ ] Project structure correct; all config files valid
|
|
115
|
-
tipo: acceptance-criterion
|
|
116
|
-
blocker: true
|
|
117
|
-
validação: |
|
|
118
|
-
Assert project structure correct; all config files valid
|
|
119
|
-
error_message: "Acceptance criterion not met: Project structure correct; all config files valid"
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
---
|
|
123
|
-
|
|
124
|
-
## Tools
|
|
125
|
-
|
|
126
|
-
**External/shared resources used by this task:**
|
|
127
|
-
|
|
128
|
-
- **Tool:** project-scaffolder
|
|
129
|
-
- **Purpose:** Generate project structure and config
|
|
130
|
-
- **Source:** .aios-core/scripts/project-scaffolder.js
|
|
131
|
-
|
|
132
|
-
- **Tool:** config-manager
|
|
133
|
-
- **Purpose:** Initialize configuration files
|
|
134
|
-
- **Source:** .aios-core/utils/config-manager.js
|
|
135
|
-
|
|
136
|
-
---
|
|
137
|
-
|
|
138
|
-
## Scripts
|
|
139
|
-
|
|
140
|
-
**Agent-specific code for this task:**
|
|
141
|
-
|
|
142
|
-
- **Script:** init-project.js
|
|
143
|
-
- **Purpose:** Project initialization workflow
|
|
144
|
-
- **Language:** JavaScript
|
|
145
|
-
- **Location:** .aios-core/scripts/init-project.js
|
|
146
|
-
|
|
147
|
-
---
|
|
148
|
-
|
|
149
|
-
## Error Handling
|
|
150
|
-
|
|
151
|
-
**Strategy:** retry
|
|
152
|
-
|
|
153
|
-
**Common Errors:**
|
|
154
|
-
|
|
155
|
-
1. **Error:** Directory Not Empty
|
|
156
|
-
- **Cause:** Target directory already contains files
|
|
157
|
-
- **Resolution:** Use force flag or choose empty directory
|
|
158
|
-
- **Recovery:** Prompt for confirmation, merge or abort
|
|
159
|
-
|
|
160
|
-
2. **Error:** Initialization Failed
|
|
161
|
-
- **Cause:** Error creating project structure
|
|
162
|
-
- **Resolution:** Check permissions and disk space
|
|
163
|
-
- **Recovery:** Cleanup partial initialization, log error
|
|
164
|
-
|
|
165
|
-
---
|
|
166
|
-
|
|
167
|
-
## Performance
|
|
168
|
-
|
|
169
|
-
**Expected Metrics:**
|
|
170
|
-
|
|
171
|
-
```yaml
|
|
172
|
-
duration_expected: 2-10 min (estimated)
|
|
173
|
-
cost_estimated: $0.001-0.008
|
|
174
|
-
token_usage: ~800-2,500 tokens
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
**Optimization Notes:**
|
|
178
|
-
- Validate configuration early; use atomic writes; implement rollback checkpoints
|
|
179
|
-
|
|
180
|
-
---
|
|
181
|
-
|
|
182
|
-
## Metadata
|
|
183
|
-
|
|
184
|
-
```yaml
|
|
185
|
-
story: N/A
|
|
186
|
-
version: 1.0.0
|
|
187
|
-
dependencies:
|
|
188
|
-
- N/A
|
|
189
|
-
tags:
|
|
190
|
-
- automation
|
|
191
|
-
- workflow
|
|
192
|
-
updated_at: 2025-11-17
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
---
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
## Elicitation
|
|
199
|
-
|
|
200
|
-
**Step 1: Detect or prompt for database type**
|
|
201
|
-
|
|
202
|
-
```bash
|
|
203
|
-
# Auto-detect from PRD or tech stack if available
|
|
204
|
-
if grep -qiE "supabase|postgres" docs/prd/*.yaml docs/architecture/*.yaml 2>/dev/null; then
|
|
205
|
-
DETECTED_DB="postgresql"
|
|
206
|
-
echo "📊 Detected database: PostgreSQL/Supabase"
|
|
207
|
-
elif grep -qiE "mongodb|mongo" docs/prd/*.yaml docs/architecture/*.yaml 2>/dev/null; then
|
|
208
|
-
DETECTED_DB="mongodb"
|
|
209
|
-
echo "📊 Detected database: MongoDB"
|
|
210
|
-
elif grep -qiE "mysql|mariadb" docs/prd/*.yaml docs/architecture/*.yaml 2>/dev/null; then
|
|
211
|
-
DETECTED_DB="mysql"
|
|
212
|
-
echo "📊 Detected database: MySQL"
|
|
213
|
-
elif grep -qiE "sqlite" docs/prd/*.yaml docs/architecture/*.yaml 2>/dev/null; then
|
|
214
|
-
DETECTED_DB="sqlite"
|
|
215
|
-
echo "📊 Detected database: SQLite"
|
|
216
|
-
else
|
|
217
|
-
DETECTED_DB=""
|
|
218
|
-
fi
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
**Prompt user:**
|
|
222
|
-
|
|
223
|
-
```
|
|
224
|
-
Select database type:
|
|
225
|
-
|
|
226
|
-
1. **supabase** - PostgreSQL + RLS + Realtime + Edge Functions
|
|
227
|
-
2. **postgresql** - Standard PostgreSQL (self-hosted or managed)
|
|
228
|
-
3. **mongodb** - NoSQL document database
|
|
229
|
-
4. **mysql** - MySQL or MariaDB relational database
|
|
230
|
-
5. **sqlite** - Embedded SQLite database
|
|
231
|
-
|
|
232
|
-
Which database? [supabase/postgresql/mongodb/mysql/sqlite]:
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
**Capture:** `{db_type}` (default: $DETECTED_DB if available)
|
|
236
|
-
|
|
237
|
-
---
|
|
238
|
-
|
|
239
|
-
## Process by Database Type
|
|
240
|
-
|
|
241
|
-
### Type: Supabase
|
|
242
|
-
|
|
243
|
-
**When:** User selects `supabase`
|
|
244
|
-
|
|
245
|
-
#### Step 1: Install Supabase CLI
|
|
246
|
-
|
|
247
|
-
```bash
|
|
248
|
-
\echo '=== Installing Supabase CLI ==='
|
|
249
|
-
|
|
250
|
-
# Check if already installed
|
|
251
|
-
if command -v supabase &> /dev/null; then
|
|
252
|
-
echo "✓ Supabase CLI already installed: $(supabase --version)"
|
|
253
|
-
else
|
|
254
|
-
echo "Installing Supabase CLI..."
|
|
255
|
-
|
|
256
|
-
# macOS/Linux
|
|
257
|
-
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
258
|
-
brew install supabase/tap/supabase
|
|
259
|
-
else
|
|
260
|
-
# Linux
|
|
261
|
-
curl -fsSL https://github.com/supabase/cli/releases/latest/download/supabase_linux_amd64.tar.gz | tar -xz
|
|
262
|
-
sudo mv supabase /usr/local/bin/
|
|
263
|
-
fi
|
|
264
|
-
|
|
265
|
-
echo "✓ Supabase CLI installed"
|
|
266
|
-
fi
|
|
267
|
-
```
|
|
268
|
-
|
|
269
|
-
#### Step 2: Initialize Supabase Project
|
|
270
|
-
|
|
271
|
-
```bash
|
|
272
|
-
\echo ''
|
|
273
|
-
\echo '=== Initializing Supabase Project ==='
|
|
274
|
-
|
|
275
|
-
# Initialize local project
|
|
276
|
-
supabase init
|
|
277
|
-
|
|
278
|
-
echo "✓ Created supabase/ directory structure"
|
|
279
|
-
```
|
|
280
|
-
|
|
281
|
-
#### Step 3: Create Standard Directories
|
|
282
|
-
|
|
283
|
-
```bash
|
|
284
|
-
mkdir -p supabase/migrations
|
|
285
|
-
mkdir -p supabase/seed.sql
|
|
286
|
-
mkdir -p supabase/tests
|
|
287
|
-
mkdir -p supabase/functions
|
|
288
|
-
|
|
289
|
-
echo "✓ Created standard Supabase directories"
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
####Step 4: Create Starter Migration
|
|
293
|
-
|
|
294
|
-
```bash
|
|
295
|
-
cat > supabase/migrations/$(date +%Y%m%d%H%M%S)_initial_schema.sql <<'SQL'
|
|
296
|
-
-- Initial Schema Migration
|
|
297
|
-
-- Generated by AIOS data-engineer
|
|
298
|
-
|
|
299
|
-
-- Enable extensions
|
|
300
|
-
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
|
301
|
-
CREATE EXTENSION IF NOT EXISTS "pg_stat_statements";
|
|
302
|
-
|
|
303
|
-
-- Example: Users table
|
|
304
|
-
CREATE TABLE IF NOT EXISTS users (
|
|
305
|
-
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
306
|
-
email TEXT UNIQUE NOT NULL,
|
|
307
|
-
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
308
|
-
updated_at TIMESTAMPTZ DEFAULT NOW()
|
|
309
|
-
);
|
|
310
|
-
|
|
311
|
-
-- Enable RLS
|
|
312
|
-
ALTER TABLE users ENABLE ROW LEVEL SECURITY;
|
|
313
|
-
|
|
314
|
-
-- Example RLS policy
|
|
315
|
-
CREATE POLICY "Users can read own data"
|
|
316
|
-
ON users
|
|
317
|
-
FOR SELECT
|
|
318
|
-
USING (auth.uid() = id);
|
|
319
|
-
|
|
320
|
-
-- Add updated_at trigger function
|
|
321
|
-
CREATE OR REPLACE FUNCTION update_updated_at_column()
|
|
322
|
-
RETURNS TRIGGER AS $$
|
|
323
|
-
BEGIN
|
|
324
|
-
NEW.updated_at = NOW();
|
|
325
|
-
RETURN NEW;
|
|
326
|
-
END;
|
|
327
|
-
$$ LANGUAGE plpgsql;
|
|
328
|
-
|
|
329
|
-
CREATE TRIGGER update_users_updated_at
|
|
330
|
-
BEFORE UPDATE ON users
|
|
331
|
-
FOR EACH ROW
|
|
332
|
-
EXECUTE FUNCTION update_updated_at_column();
|
|
333
|
-
SQL
|
|
334
|
-
|
|
335
|
-
echo "✓ Created initial migration"
|
|
336
|
-
```
|
|
337
|
-
|
|
338
|
-
#### Step 5: Create Starter Seed Data
|
|
339
|
-
|
|
340
|
-
```bash
|
|
341
|
-
cat > supabase/seed.sql <<'SQL'
|
|
342
|
-
-- Seed Data
|
|
343
|
-
-- Generated by AIOS data-engineer
|
|
344
|
-
|
|
345
|
-
-- Example seed user (for local development only)
|
|
346
|
-
INSERT INTO users (id, email)
|
|
347
|
-
VALUES
|
|
348
|
-
('550e8400-e29b-41d4-a716-446655440000', 'test@example.com')
|
|
349
|
-
ON CONFLICT (email) DO NOTHING;
|
|
350
|
-
SQL
|
|
351
|
-
|
|
352
|
-
echo "✓ Created seed data file"
|
|
353
|
-
```
|
|
354
|
-
|
|
355
|
-
#### Step 6: Start Local Development
|
|
356
|
-
|
|
357
|
-
```bash
|
|
358
|
-
\echo ''
|
|
359
|
-
\echo '=== Starting Local Supabase ==='
|
|
360
|
-
|
|
361
|
-
supabase start
|
|
362
|
-
|
|
363
|
-
echo ""
|
|
364
|
-
echo "✓ Supabase is running locally"
|
|
365
|
-
echo ""
|
|
366
|
-
echo "📋 Next steps:"
|
|
367
|
-
echo " 1. supabase migration new {name} - Create new migration"
|
|
368
|
-
echo " 2. supabase db push - Push migrations to remote"
|
|
369
|
-
echo " 3. supabase db reset - Reset local database"
|
|
370
|
-
echo " 4. supabase status - View local services"
|
|
371
|
-
```
|
|
372
|
-
|
|
373
|
-
---
|
|
374
|
-
|
|
375
|
-
### Type: PostgreSQL (Standard)
|
|
376
|
-
|
|
377
|
-
**When:** User selects `postgresql`
|
|
378
|
-
|
|
379
|
-
#### Step 1: Create Project Structure
|
|
380
|
-
|
|
381
|
-
```bash
|
|
382
|
-
\echo '=== Setting Up PostgreSQL Project ==='
|
|
383
|
-
|
|
384
|
-
mkdir -p database/migrations
|
|
385
|
-
mkdir -p database/seeds
|
|
386
|
-
mkdir -p database/scripts
|
|
387
|
-
|
|
388
|
-
echo "✓ Created PostgreSQL project structure"
|
|
389
|
-
```
|
|
390
|
-
|
|
391
|
-
#### Step 2: Create Connection Config
|
|
392
|
-
|
|
393
|
-
```bash
|
|
394
|
-
cat > database/.env.example <<'ENV'
|
|
395
|
-
# PostgreSQL Connection
|
|
396
|
-
POSTGRES_HOST=localhost
|
|
397
|
-
POSTGRES_PORT=5432
|
|
398
|
-
POSTGRES_DB=myapp_development
|
|
399
|
-
POSTGRES_USER=postgres
|
|
400
|
-
POSTGRES_PASSWORD=changeme
|
|
401
|
-
|
|
402
|
-
# Connection URL
|
|
403
|
-
DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
|
|
404
|
-
ENV
|
|
405
|
-
|
|
406
|
-
cp database/.env.example database/.env
|
|
407
|
-
|
|
408
|
-
echo "✓ Created .env configuration"
|
|
409
|
-
```
|
|
410
|
-
|
|
411
|
-
#### Step 3: Create Initial Migration
|
|
412
|
-
|
|
413
|
-
```bash
|
|
414
|
-
cat > database/migrations/001_initial_schema.sql <<'SQL'
|
|
415
|
-
-- Initial Schema Migration
|
|
416
|
-
-- Generated by AIOS data-engineer
|
|
417
|
-
|
|
418
|
-
BEGIN;
|
|
419
|
-
|
|
420
|
-
-- Example: Users table
|
|
421
|
-
CREATE TABLE IF NOT EXISTS users (
|
|
422
|
-
id SERIAL PRIMARY KEY,
|
|
423
|
-
email VARCHAR(255) UNIQUE NOT NULL,
|
|
424
|
-
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
425
|
-
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
426
|
-
);
|
|
427
|
-
|
|
428
|
-
-- Add updated_at trigger
|
|
429
|
-
CREATE OR REPLACE FUNCTION update_updated_at_column()
|
|
430
|
-
RETURNS TRIGGER AS $$
|
|
431
|
-
BEGIN
|
|
432
|
-
NEW.updated_at = CURRENT_TIMESTAMP;
|
|
433
|
-
RETURN NEW;
|
|
434
|
-
END;
|
|
435
|
-
$$ LANGUAGE plpgsql;
|
|
436
|
-
|
|
437
|
-
CREATE TRIGGER update_users_updated_at
|
|
438
|
-
BEFORE UPDATE ON users
|
|
439
|
-
FOR EACH ROW
|
|
440
|
-
EXECUTE FUNCTION update_updated_at_column();
|
|
441
|
-
|
|
442
|
-
COMMIT;
|
|
443
|
-
SQL
|
|
444
|
-
|
|
445
|
-
echo "✓ Created initial migration"
|
|
446
|
-
```
|
|
447
|
-
|
|
448
|
-
#### Step 4: Create Migration Runner Script
|
|
449
|
-
|
|
450
|
-
```bash
|
|
451
|
-
cat > database/scripts/migrate.sh <<'BASH'
|
|
452
|
-
#!/bin/bash
|
|
453
|
-
set -e
|
|
454
|
-
|
|
455
|
-
# Load environment
|
|
456
|
-
source database/.env
|
|
457
|
-
|
|
458
|
-
echo "Running migrations..."
|
|
459
|
-
|
|
460
|
-
for migration in database/migrations/*.sql; do
|
|
461
|
-
echo "Applying: $migration"
|
|
462
|
-
psql "$DATABASE_URL" -f "$migration"
|
|
463
|
-
done
|
|
464
|
-
|
|
465
|
-
echo "✓ All migrations applied"
|
|
466
|
-
BASH
|
|
467
|
-
|
|
468
|
-
chmod +x database/scripts/migrate.sh
|
|
469
|
-
|
|
470
|
-
echo "✓ Created migration runner"
|
|
471
|
-
```
|
|
472
|
-
|
|
473
|
-
---
|
|
474
|
-
|
|
475
|
-
### Type: MongoDB
|
|
476
|
-
|
|
477
|
-
**When:** User selects `mongodb`
|
|
478
|
-
|
|
479
|
-
#### Step 1: Create Project Structure
|
|
480
|
-
|
|
481
|
-
```bash
|
|
482
|
-
\echo '=== Setting Up MongoDB Project ==='
|
|
483
|
-
|
|
484
|
-
mkdir -p database/migrations
|
|
485
|
-
mkdir -p database/seeds
|
|
486
|
-
mkdir -p database/schemas
|
|
487
|
-
|
|
488
|
-
echo "✓ Created MongoDB project structure"
|
|
489
|
-
```
|
|
490
|
-
|
|
491
|
-
#### Step 2: Create Connection Config
|
|
492
|
-
|
|
493
|
-
```bash
|
|
494
|
-
cat > database/.env.example <<'ENV'
|
|
495
|
-
# MongoDB Connection
|
|
496
|
-
MONGO_HOST=localhost
|
|
497
|
-
MONGO_PORT=27017
|
|
498
|
-
MONGO_DB=myapp_development
|
|
499
|
-
MONGO_USER=admin
|
|
500
|
-
MONGO_PASSWORD=changeme
|
|
501
|
-
|
|
502
|
-
# Connection URL
|
|
503
|
-
MONGO_URL=mongodb://${MONGO_USER}:${MONGO_PASSWORD}@${MONGO_HOST}:${MONGO_PORT}/${MONGO_DB}?authSource=admin
|
|
504
|
-
ENV
|
|
505
|
-
|
|
506
|
-
cp database/.env.example database/.env
|
|
507
|
-
|
|
508
|
-
echo "✓ Created .env configuration"
|
|
509
|
-
```
|
|
510
|
-
|
|
511
|
-
#### Step 3: Create Initial Schema
|
|
512
|
-
|
|
513
|
-
```bash
|
|
514
|
-
cat > database/schemas/users.js <<'JS'
|
|
515
|
-
// User Schema
|
|
516
|
-
// Generated by AIOS data-engineer
|
|
517
|
-
|
|
518
|
-
module.exports = {
|
|
519
|
-
validator: {
|
|
520
|
-
$jsonSchema: {
|
|
521
|
-
bsonType: "object",
|
|
522
|
-
required: ["email", "createdAt"],
|
|
523
|
-
properties: {
|
|
524
|
-
email: {
|
|
525
|
-
bsonType: "string",
|
|
526
|
-
description: "must be a string and is required"
|
|
527
|
-
},
|
|
528
|
-
createdAt: {
|
|
529
|
-
bsonType: "date",
|
|
530
|
-
description: "must be a date and is required"
|
|
531
|
-
},
|
|
532
|
-
updatedAt: {
|
|
533
|
-
bsonType: "date"
|
|
534
|
-
}
|
|
535
|
-
}
|
|
536
|
-
}
|
|
537
|
-
}
|
|
538
|
-
};
|
|
539
|
-
JS
|
|
540
|
-
|
|
541
|
-
echo "✓ Created user schema"
|
|
542
|
-
```
|
|
543
|
-
|
|
544
|
-
#### Step 4: Create Seed Data
|
|
545
|
-
|
|
546
|
-
```bash
|
|
547
|
-
cat > database/seeds/users.json <<'JSON'
|
|
548
|
-
[
|
|
549
|
-
{
|
|
550
|
-
"email": "test@example.com",
|
|
551
|
-
"createdAt": {"$date": "2025-01-01T00:00:00.000Z"},
|
|
552
|
-
"updatedAt": {"$date": "2025-01-01T00:00:00.000Z"}
|
|
553
|
-
}
|
|
554
|
-
]
|
|
555
|
-
JSON
|
|
556
|
-
|
|
557
|
-
echo "✓ Created seed data"
|
|
558
|
-
```
|
|
559
|
-
|
|
560
|
-
---
|
|
561
|
-
|
|
562
|
-
### Type: MySQL
|
|
563
|
-
|
|
564
|
-
**When:** User selects `mysql`
|
|
565
|
-
|
|
566
|
-
#### Step 1: Create Project Structure
|
|
567
|
-
|
|
568
|
-
```bash
|
|
569
|
-
\echo '=== Setting Up MySQL Project ==='
|
|
570
|
-
|
|
571
|
-
mkdir -p database/migrations
|
|
572
|
-
mkdir -p database/seeds
|
|
573
|
-
mkdir -p database/scripts
|
|
574
|
-
|
|
575
|
-
echo "✓ Created MySQL project structure"
|
|
576
|
-
```
|
|
577
|
-
|
|
578
|
-
#### Step 2: Create Connection Config
|
|
579
|
-
|
|
580
|
-
```bash
|
|
581
|
-
cat > database/.env.example <<'ENV'
|
|
582
|
-
# MySQL Connection
|
|
583
|
-
MYSQL_HOST=localhost
|
|
584
|
-
MYSQL_PORT=3306
|
|
585
|
-
MYSQL_DB=myapp_development
|
|
586
|
-
MYSQL_USER=root
|
|
587
|
-
MYSQL_PASSWORD=changeme
|
|
588
|
-
|
|
589
|
-
# Connection URL
|
|
590
|
-
DATABASE_URL=mysql://${MYSQL_USER}:${MYSQL_PASSWORD}@${MYSQL_HOST}:${MYSQL_PORT}/${MYSQL_DB}
|
|
591
|
-
ENV
|
|
592
|
-
|
|
593
|
-
cp database/.env.example database/.env
|
|
594
|
-
|
|
595
|
-
echo "✓ Created .env configuration"
|
|
596
|
-
```
|
|
597
|
-
|
|
598
|
-
#### Step 3: Create Initial Migration
|
|
599
|
-
|
|
600
|
-
```bash
|
|
601
|
-
cat > database/migrations/001_initial_schema.sql <<'SQL'
|
|
602
|
-
-- Initial Schema Migration
|
|
603
|
-
-- Generated by AIOS data-engineer
|
|
604
|
-
|
|
605
|
-
-- Example: Users table
|
|
606
|
-
CREATE TABLE IF NOT EXISTS users (
|
|
607
|
-
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
608
|
-
email VARCHAR(255) UNIQUE NOT NULL,
|
|
609
|
-
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
610
|
-
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
611
|
-
INDEX idx_email (email)
|
|
612
|
-
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
613
|
-
SQL
|
|
614
|
-
|
|
615
|
-
echo "✓ Created initial migration"
|
|
616
|
-
```
|
|
617
|
-
|
|
618
|
-
---
|
|
619
|
-
|
|
620
|
-
### Type: SQLite
|
|
621
|
-
|
|
622
|
-
**When:** User selects `sqlite`
|
|
623
|
-
|
|
624
|
-
#### Step 1: Create Project Structure
|
|
625
|
-
|
|
626
|
-
```bash
|
|
627
|
-
\echo '=== Setting Up SQLite Project ==='
|
|
628
|
-
|
|
629
|
-
mkdir -p database/migrations
|
|
630
|
-
mkdir -p database/seeds
|
|
631
|
-
|
|
632
|
-
echo "✓ Created SQLite project structure"
|
|
633
|
-
```
|
|
634
|
-
|
|
635
|
-
#### Step 2: Create Initial Migration
|
|
636
|
-
|
|
637
|
-
```bash
|
|
638
|
-
cat > database/migrations/001_initial_schema.sql <<'SQL'
|
|
639
|
-
-- Initial Schema Migration
|
|
640
|
-
-- Generated by AIOS data-engineer
|
|
641
|
-
|
|
642
|
-
-- Example: Users table
|
|
643
|
-
CREATE TABLE IF NOT EXISTS users (
|
|
644
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
645
|
-
email TEXT UNIQUE NOT NULL,
|
|
646
|
-
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
647
|
-
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
648
|
-
);
|
|
649
|
-
|
|
650
|
-
-- Trigger for updated_at
|
|
651
|
-
CREATE TRIGGER IF NOT EXISTS update_users_updated_at
|
|
652
|
-
AFTER UPDATE ON users
|
|
653
|
-
BEGIN
|
|
654
|
-
UPDATE users SET updated_at = CURRENT_TIMESTAMP WHERE id = NEW.id;
|
|
655
|
-
END;
|
|
656
|
-
SQL
|
|
657
|
-
|
|
658
|
-
echo "✓ Created initial migration"
|
|
659
|
-
```
|
|
660
|
-
|
|
661
|
-
#### Step 3: Create Database
|
|
662
|
-
|
|
663
|
-
```bash
|
|
664
|
-
sqlite3 database/myapp_development.db < database/migrations/001_initial_schema.sql
|
|
665
|
-
|
|
666
|
-
echo "✓ Created SQLite database"
|
|
667
|
-
```
|
|
668
|
-
|
|
669
|
-
---
|
|
670
|
-
|
|
671
|
-
## Common Next Steps (All Databases)
|
|
672
|
-
|
|
673
|
-
```
|
|
674
|
-
📋 Database setup complete!
|
|
675
|
-
|
|
676
|
-
Next steps:
|
|
677
|
-
1. Configure environment variables (.env file)
|
|
678
|
-
2. Create your schema design (*create-schema)
|
|
679
|
-
3. Generate migrations (*create-migration-plan)
|
|
680
|
-
4. Apply migrations (*apply-migration)
|
|
681
|
-
5. Set up RLS policies (Supabase/PostgreSQL only: *policy-apply)
|
|
682
|
-
6. Add seed data (*seed)
|
|
683
|
-
|
|
684
|
-
Related commands:
|
|
685
|
-
- *create-schema - Design database schema
|
|
686
|
-
- *apply-migration {path} - Run migrations
|
|
687
|
-
- *security-audit - Check RLS coverage (PostgreSQL)
|
|
688
|
-
- *analyze-performance - Optimize queries
|
|
689
|
-
```
|
|
690
|
-
|
|
691
|
-
---
|
|
692
|
-
|
|
693
|
-
## Output Examples
|
|
694
|
-
|
|
695
|
-
### Supabase Output
|
|
696
|
-
|
|
697
|
-
```
|
|
698
|
-
=== Installing Supabase CLI ===
|
|
699
|
-
✓ Supabase CLI already installed: 1.27.7
|
|
700
|
-
|
|
701
|
-
=== Initializing Supabase Project ===
|
|
702
|
-
✓ Created supabase/ directory structure
|
|
703
|
-
✓ Created standard Supabase directories
|
|
704
|
-
✓ Created initial migration
|
|
705
|
-
✓ Created seed data file
|
|
706
|
-
|
|
707
|
-
=== Starting Local Supabase ===
|
|
708
|
-
Started supabase local development setup.
|
|
709
|
-
|
|
710
|
-
API URL: http://localhost:54321
|
|
711
|
-
DB URL: postgresql://postgres:postgres@localhost:54322/postgres
|
|
712
|
-
Studio URL: http://localhost:54323
|
|
713
|
-
|
|
714
|
-
✓ Supabase is running locally
|
|
715
|
-
```
|
|
716
|
-
|
|
717
|
-
### PostgreSQL Output
|
|
718
|
-
|
|
719
|
-
```
|
|
720
|
-
=== Setting Up PostgreSQL Project ===
|
|
721
|
-
✓ Created PostgreSQL project structure
|
|
722
|
-
✓ Created .env configuration
|
|
723
|
-
✓ Created initial migration
|
|
724
|
-
✓ Created migration runner
|
|
725
|
-
|
|
726
|
-
📋 Database setup complete!
|
|
727
|
-
```
|
|
728
|
-
|
|
729
|
-
---
|
|
730
|
-
|
|
731
|
-
## Related Commands
|
|
732
|
-
|
|
733
|
-
- `*env-check` - Validate database environment variables
|
|
734
|
-
- `*bootstrap` - Alternative setup command with more options
|
|
735
|
-
- `*create-schema` - Design database schema
|
|
736
|
-
- `*apply-migration` - Run migrations
|
|
737
|
-
- `*setup-supabase` - Legacy command (deprecated, use `*setup-database supabase`)
|
|
738
|
-
|
|
739
|
-
---
|
|
740
|
-
|
|
741
|
-
**Note:** This task replaces `db-supabase-setup.md` with database-agnostic version (renamed in Story 6.1.2.3)
|
|
1
|
+
# Task: Setup Database
|
|
2
|
+
|
|
3
|
+
**Purpose**: Interactive database project setup (Supabase, PostgreSQL, MongoDB, MySQL, SQLite)
|
|
4
|
+
|
|
5
|
+
**Elicit**: true
|
|
6
|
+
|
|
7
|
+
**Renamed From (Story 6.1.2.3):**
|
|
8
|
+
- `db-supabase-setup.md` - Now database-agnostic (supports 5+ DB types)
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Execution Modes
|
|
13
|
+
|
|
14
|
+
**Choose your execution mode:**
|
|
15
|
+
|
|
16
|
+
### 1. YOLO Mode - Fast, Autonomous (0-1 prompts)
|
|
17
|
+
- Autonomous decision making with logging
|
|
18
|
+
- Minimal user interaction
|
|
19
|
+
- **Best for:** Simple, deterministic tasks
|
|
20
|
+
|
|
21
|
+
### 2. Interactive Mode - Balanced, Educational (5-10 prompts) **[DEFAULT]**
|
|
22
|
+
- Explicit decision checkpoints
|
|
23
|
+
- Educational explanations
|
|
24
|
+
- **Best for:** Learning, complex decisions
|
|
25
|
+
|
|
26
|
+
### 3. Pre-Flight Planning - Comprehensive Upfront Planning
|
|
27
|
+
- Task analysis phase (identify all ambiguities)
|
|
28
|
+
- Zero ambiguity execution
|
|
29
|
+
- **Best for:** Ambiguous requirements, critical work
|
|
30
|
+
|
|
31
|
+
**Parameter:** `mode` (optional, default: `interactive`)
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Task Definition (AIOS Task Format V1.0)
|
|
36
|
+
|
|
37
|
+
```yaml
|
|
38
|
+
task: setupDatabase()
|
|
39
|
+
responsável: Dara (Sage)
|
|
40
|
+
responsavel_type: Agente
|
|
41
|
+
atomic_layer: Config
|
|
42
|
+
|
|
43
|
+
**Entrada:**
|
|
44
|
+
- campo: project_path
|
|
45
|
+
tipo: string
|
|
46
|
+
origem: User Input
|
|
47
|
+
obrigatório: true
|
|
48
|
+
validação: Valid directory path
|
|
49
|
+
|
|
50
|
+
- campo: options
|
|
51
|
+
tipo: object
|
|
52
|
+
origem: User Input
|
|
53
|
+
obrigatório: false
|
|
54
|
+
validação: Initialization options
|
|
55
|
+
|
|
56
|
+
**Saída:**
|
|
57
|
+
- campo: initialized_project
|
|
58
|
+
tipo: string
|
|
59
|
+
destino: File system
|
|
60
|
+
persistido: true
|
|
61
|
+
|
|
62
|
+
- campo: config_created
|
|
63
|
+
tipo: boolean
|
|
64
|
+
destino: Return value
|
|
65
|
+
persistido: false
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Pre-Conditions
|
|
71
|
+
|
|
72
|
+
**Purpose:** Validate prerequisites BEFORE task execution (blocking)
|
|
73
|
+
|
|
74
|
+
**Checklist:**
|
|
75
|
+
|
|
76
|
+
```yaml
|
|
77
|
+
pre-conditions:
|
|
78
|
+
- [ ] Directory is empty or force flag set; config valid
|
|
79
|
+
tipo: pre-condition
|
|
80
|
+
blocker: true
|
|
81
|
+
validação: |
|
|
82
|
+
Check directory is empty or force flag set; config valid
|
|
83
|
+
error_message: "Pre-condition failed: Directory is empty or force flag set; config valid"
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Post-Conditions
|
|
89
|
+
|
|
90
|
+
**Purpose:** Validate execution success AFTER task completes
|
|
91
|
+
|
|
92
|
+
**Checklist:**
|
|
93
|
+
|
|
94
|
+
```yaml
|
|
95
|
+
post-conditions:
|
|
96
|
+
- [ ] Project initialized; config files created; structure valid
|
|
97
|
+
tipo: post-condition
|
|
98
|
+
blocker: true
|
|
99
|
+
validação: |
|
|
100
|
+
Verify project initialized; config files created; structure valid
|
|
101
|
+
error_message: "Post-condition failed: Project initialized; config files created; structure valid"
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Acceptance Criteria
|
|
107
|
+
|
|
108
|
+
**Purpose:** Definitive pass/fail criteria for task completion
|
|
109
|
+
|
|
110
|
+
**Checklist:**
|
|
111
|
+
|
|
112
|
+
```yaml
|
|
113
|
+
acceptance-criteria:
|
|
114
|
+
- [ ] Project structure correct; all config files valid
|
|
115
|
+
tipo: acceptance-criterion
|
|
116
|
+
blocker: true
|
|
117
|
+
validação: |
|
|
118
|
+
Assert project structure correct; all config files valid
|
|
119
|
+
error_message: "Acceptance criterion not met: Project structure correct; all config files valid"
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Tools
|
|
125
|
+
|
|
126
|
+
**External/shared resources used by this task:**
|
|
127
|
+
|
|
128
|
+
- **Tool:** project-scaffolder
|
|
129
|
+
- **Purpose:** Generate project structure and config
|
|
130
|
+
- **Source:** .aios-core/scripts/project-scaffolder.js
|
|
131
|
+
|
|
132
|
+
- **Tool:** config-manager
|
|
133
|
+
- **Purpose:** Initialize configuration files
|
|
134
|
+
- **Source:** .aios-core/utils/config-manager.js
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Scripts
|
|
139
|
+
|
|
140
|
+
**Agent-specific code for this task:**
|
|
141
|
+
|
|
142
|
+
- **Script:** init-project.js
|
|
143
|
+
- **Purpose:** Project initialization workflow
|
|
144
|
+
- **Language:** JavaScript
|
|
145
|
+
- **Location:** .aios-core/scripts/init-project.js
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Error Handling
|
|
150
|
+
|
|
151
|
+
**Strategy:** retry
|
|
152
|
+
|
|
153
|
+
**Common Errors:**
|
|
154
|
+
|
|
155
|
+
1. **Error:** Directory Not Empty
|
|
156
|
+
- **Cause:** Target directory already contains files
|
|
157
|
+
- **Resolution:** Use force flag or choose empty directory
|
|
158
|
+
- **Recovery:** Prompt for confirmation, merge or abort
|
|
159
|
+
|
|
160
|
+
2. **Error:** Initialization Failed
|
|
161
|
+
- **Cause:** Error creating project structure
|
|
162
|
+
- **Resolution:** Check permissions and disk space
|
|
163
|
+
- **Recovery:** Cleanup partial initialization, log error
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## Performance
|
|
168
|
+
|
|
169
|
+
**Expected Metrics:**
|
|
170
|
+
|
|
171
|
+
```yaml
|
|
172
|
+
duration_expected: 2-10 min (estimated)
|
|
173
|
+
cost_estimated: $0.001-0.008
|
|
174
|
+
token_usage: ~800-2,500 tokens
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
**Optimization Notes:**
|
|
178
|
+
- Validate configuration early; use atomic writes; implement rollback checkpoints
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## Metadata
|
|
183
|
+
|
|
184
|
+
```yaml
|
|
185
|
+
story: N/A
|
|
186
|
+
version: 1.0.0
|
|
187
|
+
dependencies:
|
|
188
|
+
- N/A
|
|
189
|
+
tags:
|
|
190
|
+
- automation
|
|
191
|
+
- workflow
|
|
192
|
+
updated_at: 2025-11-17
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
## Elicitation
|
|
199
|
+
|
|
200
|
+
**Step 1: Detect or prompt for database type**
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
# Auto-detect from PRD or tech stack if available
|
|
204
|
+
if grep -qiE "supabase|postgres" docs/prd/*.yaml docs/architecture/*.yaml 2>/dev/null; then
|
|
205
|
+
DETECTED_DB="postgresql"
|
|
206
|
+
echo "📊 Detected database: PostgreSQL/Supabase"
|
|
207
|
+
elif grep -qiE "mongodb|mongo" docs/prd/*.yaml docs/architecture/*.yaml 2>/dev/null; then
|
|
208
|
+
DETECTED_DB="mongodb"
|
|
209
|
+
echo "📊 Detected database: MongoDB"
|
|
210
|
+
elif grep -qiE "mysql|mariadb" docs/prd/*.yaml docs/architecture/*.yaml 2>/dev/null; then
|
|
211
|
+
DETECTED_DB="mysql"
|
|
212
|
+
echo "📊 Detected database: MySQL"
|
|
213
|
+
elif grep -qiE "sqlite" docs/prd/*.yaml docs/architecture/*.yaml 2>/dev/null; then
|
|
214
|
+
DETECTED_DB="sqlite"
|
|
215
|
+
echo "📊 Detected database: SQLite"
|
|
216
|
+
else
|
|
217
|
+
DETECTED_DB=""
|
|
218
|
+
fi
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
**Prompt user:**
|
|
222
|
+
|
|
223
|
+
```
|
|
224
|
+
Select database type:
|
|
225
|
+
|
|
226
|
+
1. **supabase** - PostgreSQL + RLS + Realtime + Edge Functions
|
|
227
|
+
2. **postgresql** - Standard PostgreSQL (self-hosted or managed)
|
|
228
|
+
3. **mongodb** - NoSQL document database
|
|
229
|
+
4. **mysql** - MySQL or MariaDB relational database
|
|
230
|
+
5. **sqlite** - Embedded SQLite database
|
|
231
|
+
|
|
232
|
+
Which database? [supabase/postgresql/mongodb/mysql/sqlite]:
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
**Capture:** `{db_type}` (default: $DETECTED_DB if available)
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## Process by Database Type
|
|
240
|
+
|
|
241
|
+
### Type: Supabase
|
|
242
|
+
|
|
243
|
+
**When:** User selects `supabase`
|
|
244
|
+
|
|
245
|
+
#### Step 1: Install Supabase CLI
|
|
246
|
+
|
|
247
|
+
```bash
|
|
248
|
+
\echo '=== Installing Supabase CLI ==='
|
|
249
|
+
|
|
250
|
+
# Check if already installed
|
|
251
|
+
if command -v supabase &> /dev/null; then
|
|
252
|
+
echo "✓ Supabase CLI already installed: $(supabase --version)"
|
|
253
|
+
else
|
|
254
|
+
echo "Installing Supabase CLI..."
|
|
255
|
+
|
|
256
|
+
# macOS/Linux
|
|
257
|
+
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
258
|
+
brew install supabase/tap/supabase
|
|
259
|
+
else
|
|
260
|
+
# Linux
|
|
261
|
+
curl -fsSL https://github.com/supabase/cli/releases/latest/download/supabase_linux_amd64.tar.gz | tar -xz
|
|
262
|
+
sudo mv supabase /usr/local/bin/
|
|
263
|
+
fi
|
|
264
|
+
|
|
265
|
+
echo "✓ Supabase CLI installed"
|
|
266
|
+
fi
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
#### Step 2: Initialize Supabase Project
|
|
270
|
+
|
|
271
|
+
```bash
|
|
272
|
+
\echo ''
|
|
273
|
+
\echo '=== Initializing Supabase Project ==='
|
|
274
|
+
|
|
275
|
+
# Initialize local project
|
|
276
|
+
supabase init
|
|
277
|
+
|
|
278
|
+
echo "✓ Created supabase/ directory structure"
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
#### Step 3: Create Standard Directories
|
|
282
|
+
|
|
283
|
+
```bash
|
|
284
|
+
mkdir -p supabase/migrations
|
|
285
|
+
mkdir -p supabase/seed.sql
|
|
286
|
+
mkdir -p supabase/tests
|
|
287
|
+
mkdir -p supabase/functions
|
|
288
|
+
|
|
289
|
+
echo "✓ Created standard Supabase directories"
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
####Step 4: Create Starter Migration
|
|
293
|
+
|
|
294
|
+
```bash
|
|
295
|
+
cat > supabase/migrations/$(date +%Y%m%d%H%M%S)_initial_schema.sql <<'SQL'
|
|
296
|
+
-- Initial Schema Migration
|
|
297
|
+
-- Generated by AIOS data-engineer
|
|
298
|
+
|
|
299
|
+
-- Enable extensions
|
|
300
|
+
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
|
301
|
+
CREATE EXTENSION IF NOT EXISTS "pg_stat_statements";
|
|
302
|
+
|
|
303
|
+
-- Example: Users table
|
|
304
|
+
CREATE TABLE IF NOT EXISTS users (
|
|
305
|
+
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
306
|
+
email TEXT UNIQUE NOT NULL,
|
|
307
|
+
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
308
|
+
updated_at TIMESTAMPTZ DEFAULT NOW()
|
|
309
|
+
);
|
|
310
|
+
|
|
311
|
+
-- Enable RLS
|
|
312
|
+
ALTER TABLE users ENABLE ROW LEVEL SECURITY;
|
|
313
|
+
|
|
314
|
+
-- Example RLS policy
|
|
315
|
+
CREATE POLICY "Users can read own data"
|
|
316
|
+
ON users
|
|
317
|
+
FOR SELECT
|
|
318
|
+
USING (auth.uid() = id);
|
|
319
|
+
|
|
320
|
+
-- Add updated_at trigger function
|
|
321
|
+
CREATE OR REPLACE FUNCTION update_updated_at_column()
|
|
322
|
+
RETURNS TRIGGER AS $$
|
|
323
|
+
BEGIN
|
|
324
|
+
NEW.updated_at = NOW();
|
|
325
|
+
RETURN NEW;
|
|
326
|
+
END;
|
|
327
|
+
$$ LANGUAGE plpgsql;
|
|
328
|
+
|
|
329
|
+
CREATE TRIGGER update_users_updated_at
|
|
330
|
+
BEFORE UPDATE ON users
|
|
331
|
+
FOR EACH ROW
|
|
332
|
+
EXECUTE FUNCTION update_updated_at_column();
|
|
333
|
+
SQL
|
|
334
|
+
|
|
335
|
+
echo "✓ Created initial migration"
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
#### Step 5: Create Starter Seed Data
|
|
339
|
+
|
|
340
|
+
```bash
|
|
341
|
+
cat > supabase/seed.sql <<'SQL'
|
|
342
|
+
-- Seed Data
|
|
343
|
+
-- Generated by AIOS data-engineer
|
|
344
|
+
|
|
345
|
+
-- Example seed user (for local development only)
|
|
346
|
+
INSERT INTO users (id, email)
|
|
347
|
+
VALUES
|
|
348
|
+
('550e8400-e29b-41d4-a716-446655440000', 'test@example.com')
|
|
349
|
+
ON CONFLICT (email) DO NOTHING;
|
|
350
|
+
SQL
|
|
351
|
+
|
|
352
|
+
echo "✓ Created seed data file"
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
#### Step 6: Start Local Development
|
|
356
|
+
|
|
357
|
+
```bash
|
|
358
|
+
\echo ''
|
|
359
|
+
\echo '=== Starting Local Supabase ==='
|
|
360
|
+
|
|
361
|
+
supabase start
|
|
362
|
+
|
|
363
|
+
echo ""
|
|
364
|
+
echo "✓ Supabase is running locally"
|
|
365
|
+
echo ""
|
|
366
|
+
echo "📋 Next steps:"
|
|
367
|
+
echo " 1. supabase migration new {name} - Create new migration"
|
|
368
|
+
echo " 2. supabase db push - Push migrations to remote"
|
|
369
|
+
echo " 3. supabase db reset - Reset local database"
|
|
370
|
+
echo " 4. supabase status - View local services"
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
---
|
|
374
|
+
|
|
375
|
+
### Type: PostgreSQL (Standard)
|
|
376
|
+
|
|
377
|
+
**When:** User selects `postgresql`
|
|
378
|
+
|
|
379
|
+
#### Step 1: Create Project Structure
|
|
380
|
+
|
|
381
|
+
```bash
|
|
382
|
+
\echo '=== Setting Up PostgreSQL Project ==='
|
|
383
|
+
|
|
384
|
+
mkdir -p database/migrations
|
|
385
|
+
mkdir -p database/seeds
|
|
386
|
+
mkdir -p database/scripts
|
|
387
|
+
|
|
388
|
+
echo "✓ Created PostgreSQL project structure"
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
#### Step 2: Create Connection Config
|
|
392
|
+
|
|
393
|
+
```bash
|
|
394
|
+
cat > database/.env.example <<'ENV'
|
|
395
|
+
# PostgreSQL Connection
|
|
396
|
+
POSTGRES_HOST=localhost
|
|
397
|
+
POSTGRES_PORT=5432
|
|
398
|
+
POSTGRES_DB=myapp_development
|
|
399
|
+
POSTGRES_USER=postgres
|
|
400
|
+
POSTGRES_PASSWORD=changeme
|
|
401
|
+
|
|
402
|
+
# Connection URL
|
|
403
|
+
DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
|
|
404
|
+
ENV
|
|
405
|
+
|
|
406
|
+
cp database/.env.example database/.env
|
|
407
|
+
|
|
408
|
+
echo "✓ Created .env configuration"
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
#### Step 3: Create Initial Migration
|
|
412
|
+
|
|
413
|
+
```bash
|
|
414
|
+
cat > database/migrations/001_initial_schema.sql <<'SQL'
|
|
415
|
+
-- Initial Schema Migration
|
|
416
|
+
-- Generated by AIOS data-engineer
|
|
417
|
+
|
|
418
|
+
BEGIN;
|
|
419
|
+
|
|
420
|
+
-- Example: Users table
|
|
421
|
+
CREATE TABLE IF NOT EXISTS users (
|
|
422
|
+
id SERIAL PRIMARY KEY,
|
|
423
|
+
email VARCHAR(255) UNIQUE NOT NULL,
|
|
424
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
425
|
+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
426
|
+
);
|
|
427
|
+
|
|
428
|
+
-- Add updated_at trigger
|
|
429
|
+
CREATE OR REPLACE FUNCTION update_updated_at_column()
|
|
430
|
+
RETURNS TRIGGER AS $$
|
|
431
|
+
BEGIN
|
|
432
|
+
NEW.updated_at = CURRENT_TIMESTAMP;
|
|
433
|
+
RETURN NEW;
|
|
434
|
+
END;
|
|
435
|
+
$$ LANGUAGE plpgsql;
|
|
436
|
+
|
|
437
|
+
CREATE TRIGGER update_users_updated_at
|
|
438
|
+
BEFORE UPDATE ON users
|
|
439
|
+
FOR EACH ROW
|
|
440
|
+
EXECUTE FUNCTION update_updated_at_column();
|
|
441
|
+
|
|
442
|
+
COMMIT;
|
|
443
|
+
SQL
|
|
444
|
+
|
|
445
|
+
echo "✓ Created initial migration"
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
#### Step 4: Create Migration Runner Script
|
|
449
|
+
|
|
450
|
+
```bash
|
|
451
|
+
cat > database/scripts/migrate.sh <<'BASH'
|
|
452
|
+
#!/bin/bash
|
|
453
|
+
set -e
|
|
454
|
+
|
|
455
|
+
# Load environment
|
|
456
|
+
source database/.env
|
|
457
|
+
|
|
458
|
+
echo "Running migrations..."
|
|
459
|
+
|
|
460
|
+
for migration in database/migrations/*.sql; do
|
|
461
|
+
echo "Applying: $migration"
|
|
462
|
+
psql "$DATABASE_URL" -f "$migration"
|
|
463
|
+
done
|
|
464
|
+
|
|
465
|
+
echo "✓ All migrations applied"
|
|
466
|
+
BASH
|
|
467
|
+
|
|
468
|
+
chmod +x database/scripts/migrate.sh
|
|
469
|
+
|
|
470
|
+
echo "✓ Created migration runner"
|
|
471
|
+
```
|
|
472
|
+
|
|
473
|
+
---
|
|
474
|
+
|
|
475
|
+
### Type: MongoDB
|
|
476
|
+
|
|
477
|
+
**When:** User selects `mongodb`
|
|
478
|
+
|
|
479
|
+
#### Step 1: Create Project Structure
|
|
480
|
+
|
|
481
|
+
```bash
|
|
482
|
+
\echo '=== Setting Up MongoDB Project ==='
|
|
483
|
+
|
|
484
|
+
mkdir -p database/migrations
|
|
485
|
+
mkdir -p database/seeds
|
|
486
|
+
mkdir -p database/schemas
|
|
487
|
+
|
|
488
|
+
echo "✓ Created MongoDB project structure"
|
|
489
|
+
```
|
|
490
|
+
|
|
491
|
+
#### Step 2: Create Connection Config
|
|
492
|
+
|
|
493
|
+
```bash
|
|
494
|
+
cat > database/.env.example <<'ENV'
|
|
495
|
+
# MongoDB Connection
|
|
496
|
+
MONGO_HOST=localhost
|
|
497
|
+
MONGO_PORT=27017
|
|
498
|
+
MONGO_DB=myapp_development
|
|
499
|
+
MONGO_USER=admin
|
|
500
|
+
MONGO_PASSWORD=changeme
|
|
501
|
+
|
|
502
|
+
# Connection URL
|
|
503
|
+
MONGO_URL=mongodb://${MONGO_USER}:${MONGO_PASSWORD}@${MONGO_HOST}:${MONGO_PORT}/${MONGO_DB}?authSource=admin
|
|
504
|
+
ENV
|
|
505
|
+
|
|
506
|
+
cp database/.env.example database/.env
|
|
507
|
+
|
|
508
|
+
echo "✓ Created .env configuration"
|
|
509
|
+
```
|
|
510
|
+
|
|
511
|
+
#### Step 3: Create Initial Schema
|
|
512
|
+
|
|
513
|
+
```bash
|
|
514
|
+
cat > database/schemas/users.js <<'JS'
|
|
515
|
+
// User Schema
|
|
516
|
+
// Generated by AIOS data-engineer
|
|
517
|
+
|
|
518
|
+
module.exports = {
|
|
519
|
+
validator: {
|
|
520
|
+
$jsonSchema: {
|
|
521
|
+
bsonType: "object",
|
|
522
|
+
required: ["email", "createdAt"],
|
|
523
|
+
properties: {
|
|
524
|
+
email: {
|
|
525
|
+
bsonType: "string",
|
|
526
|
+
description: "must be a string and is required"
|
|
527
|
+
},
|
|
528
|
+
createdAt: {
|
|
529
|
+
bsonType: "date",
|
|
530
|
+
description: "must be a date and is required"
|
|
531
|
+
},
|
|
532
|
+
updatedAt: {
|
|
533
|
+
bsonType: "date"
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
};
|
|
539
|
+
JS
|
|
540
|
+
|
|
541
|
+
echo "✓ Created user schema"
|
|
542
|
+
```
|
|
543
|
+
|
|
544
|
+
#### Step 4: Create Seed Data
|
|
545
|
+
|
|
546
|
+
```bash
|
|
547
|
+
cat > database/seeds/users.json <<'JSON'
|
|
548
|
+
[
|
|
549
|
+
{
|
|
550
|
+
"email": "test@example.com",
|
|
551
|
+
"createdAt": {"$date": "2025-01-01T00:00:00.000Z"},
|
|
552
|
+
"updatedAt": {"$date": "2025-01-01T00:00:00.000Z"}
|
|
553
|
+
}
|
|
554
|
+
]
|
|
555
|
+
JSON
|
|
556
|
+
|
|
557
|
+
echo "✓ Created seed data"
|
|
558
|
+
```
|
|
559
|
+
|
|
560
|
+
---
|
|
561
|
+
|
|
562
|
+
### Type: MySQL
|
|
563
|
+
|
|
564
|
+
**When:** User selects `mysql`
|
|
565
|
+
|
|
566
|
+
#### Step 1: Create Project Structure
|
|
567
|
+
|
|
568
|
+
```bash
|
|
569
|
+
\echo '=== Setting Up MySQL Project ==='
|
|
570
|
+
|
|
571
|
+
mkdir -p database/migrations
|
|
572
|
+
mkdir -p database/seeds
|
|
573
|
+
mkdir -p database/scripts
|
|
574
|
+
|
|
575
|
+
echo "✓ Created MySQL project structure"
|
|
576
|
+
```
|
|
577
|
+
|
|
578
|
+
#### Step 2: Create Connection Config
|
|
579
|
+
|
|
580
|
+
```bash
|
|
581
|
+
cat > database/.env.example <<'ENV'
|
|
582
|
+
# MySQL Connection
|
|
583
|
+
MYSQL_HOST=localhost
|
|
584
|
+
MYSQL_PORT=3306
|
|
585
|
+
MYSQL_DB=myapp_development
|
|
586
|
+
MYSQL_USER=root
|
|
587
|
+
MYSQL_PASSWORD=changeme
|
|
588
|
+
|
|
589
|
+
# Connection URL
|
|
590
|
+
DATABASE_URL=mysql://${MYSQL_USER}:${MYSQL_PASSWORD}@${MYSQL_HOST}:${MYSQL_PORT}/${MYSQL_DB}
|
|
591
|
+
ENV
|
|
592
|
+
|
|
593
|
+
cp database/.env.example database/.env
|
|
594
|
+
|
|
595
|
+
echo "✓ Created .env configuration"
|
|
596
|
+
```
|
|
597
|
+
|
|
598
|
+
#### Step 3: Create Initial Migration
|
|
599
|
+
|
|
600
|
+
```bash
|
|
601
|
+
cat > database/migrations/001_initial_schema.sql <<'SQL'
|
|
602
|
+
-- Initial Schema Migration
|
|
603
|
+
-- Generated by AIOS data-engineer
|
|
604
|
+
|
|
605
|
+
-- Example: Users table
|
|
606
|
+
CREATE TABLE IF NOT EXISTS users (
|
|
607
|
+
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
608
|
+
email VARCHAR(255) UNIQUE NOT NULL,
|
|
609
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
610
|
+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
611
|
+
INDEX idx_email (email)
|
|
612
|
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
613
|
+
SQL
|
|
614
|
+
|
|
615
|
+
echo "✓ Created initial migration"
|
|
616
|
+
```
|
|
617
|
+
|
|
618
|
+
---
|
|
619
|
+
|
|
620
|
+
### Type: SQLite
|
|
621
|
+
|
|
622
|
+
**When:** User selects `sqlite`
|
|
623
|
+
|
|
624
|
+
#### Step 1: Create Project Structure
|
|
625
|
+
|
|
626
|
+
```bash
|
|
627
|
+
\echo '=== Setting Up SQLite Project ==='
|
|
628
|
+
|
|
629
|
+
mkdir -p database/migrations
|
|
630
|
+
mkdir -p database/seeds
|
|
631
|
+
|
|
632
|
+
echo "✓ Created SQLite project structure"
|
|
633
|
+
```
|
|
634
|
+
|
|
635
|
+
#### Step 2: Create Initial Migration
|
|
636
|
+
|
|
637
|
+
```bash
|
|
638
|
+
cat > database/migrations/001_initial_schema.sql <<'SQL'
|
|
639
|
+
-- Initial Schema Migration
|
|
640
|
+
-- Generated by AIOS data-engineer
|
|
641
|
+
|
|
642
|
+
-- Example: Users table
|
|
643
|
+
CREATE TABLE IF NOT EXISTS users (
|
|
644
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
645
|
+
email TEXT UNIQUE NOT NULL,
|
|
646
|
+
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
647
|
+
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
648
|
+
);
|
|
649
|
+
|
|
650
|
+
-- Trigger for updated_at
|
|
651
|
+
CREATE TRIGGER IF NOT EXISTS update_users_updated_at
|
|
652
|
+
AFTER UPDATE ON users
|
|
653
|
+
BEGIN
|
|
654
|
+
UPDATE users SET updated_at = CURRENT_TIMESTAMP WHERE id = NEW.id;
|
|
655
|
+
END;
|
|
656
|
+
SQL
|
|
657
|
+
|
|
658
|
+
echo "✓ Created initial migration"
|
|
659
|
+
```
|
|
660
|
+
|
|
661
|
+
#### Step 3: Create Database
|
|
662
|
+
|
|
663
|
+
```bash
|
|
664
|
+
sqlite3 database/myapp_development.db < database/migrations/001_initial_schema.sql
|
|
665
|
+
|
|
666
|
+
echo "✓ Created SQLite database"
|
|
667
|
+
```
|
|
668
|
+
|
|
669
|
+
---
|
|
670
|
+
|
|
671
|
+
## Common Next Steps (All Databases)
|
|
672
|
+
|
|
673
|
+
```
|
|
674
|
+
📋 Database setup complete!
|
|
675
|
+
|
|
676
|
+
Next steps:
|
|
677
|
+
1. Configure environment variables (.env file)
|
|
678
|
+
2. Create your schema design (*create-schema)
|
|
679
|
+
3. Generate migrations (*create-migration-plan)
|
|
680
|
+
4. Apply migrations (*apply-migration)
|
|
681
|
+
5. Set up RLS policies (Supabase/PostgreSQL only: *policy-apply)
|
|
682
|
+
6. Add seed data (*seed)
|
|
683
|
+
|
|
684
|
+
Related commands:
|
|
685
|
+
- *create-schema - Design database schema
|
|
686
|
+
- *apply-migration {path} - Run migrations
|
|
687
|
+
- *security-audit - Check RLS coverage (PostgreSQL)
|
|
688
|
+
- *analyze-performance - Optimize queries
|
|
689
|
+
```
|
|
690
|
+
|
|
691
|
+
---
|
|
692
|
+
|
|
693
|
+
## Output Examples
|
|
694
|
+
|
|
695
|
+
### Supabase Output
|
|
696
|
+
|
|
697
|
+
```
|
|
698
|
+
=== Installing Supabase CLI ===
|
|
699
|
+
✓ Supabase CLI already installed: 1.27.7
|
|
700
|
+
|
|
701
|
+
=== Initializing Supabase Project ===
|
|
702
|
+
✓ Created supabase/ directory structure
|
|
703
|
+
✓ Created standard Supabase directories
|
|
704
|
+
✓ Created initial migration
|
|
705
|
+
✓ Created seed data file
|
|
706
|
+
|
|
707
|
+
=== Starting Local Supabase ===
|
|
708
|
+
Started supabase local development setup.
|
|
709
|
+
|
|
710
|
+
API URL: http://localhost:54321
|
|
711
|
+
DB URL: postgresql://postgres:postgres@localhost:54322/postgres
|
|
712
|
+
Studio URL: http://localhost:54323
|
|
713
|
+
|
|
714
|
+
✓ Supabase is running locally
|
|
715
|
+
```
|
|
716
|
+
|
|
717
|
+
### PostgreSQL Output
|
|
718
|
+
|
|
719
|
+
```
|
|
720
|
+
=== Setting Up PostgreSQL Project ===
|
|
721
|
+
✓ Created PostgreSQL project structure
|
|
722
|
+
✓ Created .env configuration
|
|
723
|
+
✓ Created initial migration
|
|
724
|
+
✓ Created migration runner
|
|
725
|
+
|
|
726
|
+
📋 Database setup complete!
|
|
727
|
+
```
|
|
728
|
+
|
|
729
|
+
---
|
|
730
|
+
|
|
731
|
+
## Related Commands
|
|
732
|
+
|
|
733
|
+
- `*env-check` - Validate database environment variables
|
|
734
|
+
- `*bootstrap` - Alternative setup command with more options
|
|
735
|
+
- `*create-schema` - Design database schema
|
|
736
|
+
- `*apply-migration` - Run migrations
|
|
737
|
+
- `*setup-supabase` - Legacy command (deprecated, use `*setup-database supabase`)
|
|
738
|
+
|
|
739
|
+
---
|
|
740
|
+
|
|
741
|
+
**Note:** This task replaces `db-supabase-setup.md` with database-agnostic version (renamed in Story 6.1.2.3)
|