aios-core 2.1.5 → 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-brownfield.md +456 -0
- 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 +440 -0
- 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/documentation-integrity/brownfield-analyzer.js +501 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/config-generator.js +368 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/deployment-config-loader.js +308 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/doc-generator.js +331 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/gitignore-generator.js +312 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/index.js +74 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/mode-detector.js +389 -0
- 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/core-config/core-config-brownfield.tmpl.yaml +176 -0
- package/.aios-core/infrastructure/templates/core-config/core-config-greenfield.tmpl.yaml +127 -0
- package/.aios-core/infrastructure/templates/github-workflows/README.md +109 -109
- package/.aios-core/infrastructure/templates/gitignore/gitignore-aios-base.tmpl +63 -0
- package/.aios-core/infrastructure/templates/gitignore/gitignore-brownfield-merge.tmpl +18 -0
- package/.aios-core/infrastructure/templates/gitignore/gitignore-node.tmpl +85 -0
- package/.aios-core/infrastructure/templates/gitignore/gitignore-python.tmpl +145 -0
- package/.aios-core/infrastructure/templates/project-docs/coding-standards-tmpl.md +346 -0
- package/.aios-core/infrastructure/templates/project-docs/source-tree-tmpl.md +177 -0
- package/.aios-core/infrastructure/templates/project-docs/tech-stack-tmpl.md +267 -0
- package/.aios-core/infrastructure/tests/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/src/wizard/wizard.js +185 -34
- package/packages/installer/tests/integration/environment-configuration.test.js +2 -1
- package/packages/installer/tests/integration/wizard-detection.test.js +8 -6
- package/packages/installer/tests/unit/env-template.test.js +11 -10
- 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/development/tasks/validate-structure.md +0 -243
- 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/infrastructure/scripts/source-tree-guardian/index.js +0 -375
- package/.aios-core/infrastructure/scripts/source-tree-guardian/manifest-generator.js +0 -410
- package/.aios-core/infrastructure/scripts/source-tree-guardian/rules/naming-rules.yaml +0 -285
- package/.aios-core/infrastructure/scripts/source-tree-guardian/rules/placement-rules.yaml +0 -262
- package/.aios-core/infrastructure/scripts/source-tree-guardian/validator.js +0 -468
- 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,569 +1,569 @@
|
|
|
1
|
-
# Task: Create Database Snapshot
|
|
2
|
-
|
|
3
|
-
**Purpose**: Create schema-only snapshot for rollback capability
|
|
4
|
-
|
|
5
|
-
**Elicit**: true
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Execution Modes
|
|
10
|
-
|
|
11
|
-
**Choose your execution mode:**
|
|
12
|
-
|
|
13
|
-
### 1. YOLO Mode - Fast, Autonomous (0-1 prompts)
|
|
14
|
-
- Autonomous decision making with logging
|
|
15
|
-
- Minimal user interaction
|
|
16
|
-
- **Best for:** Simple, deterministic tasks
|
|
17
|
-
|
|
18
|
-
### 2. Interactive Mode - Balanced, Educational (5-10 prompts) **[DEFAULT]**
|
|
19
|
-
- Explicit decision checkpoints
|
|
20
|
-
- Educational explanations
|
|
21
|
-
- **Best for:** Learning, complex decisions
|
|
22
|
-
|
|
23
|
-
### 3. Pre-Flight Planning - Comprehensive Upfront Planning
|
|
24
|
-
- Task analysis phase (identify all ambiguities)
|
|
25
|
-
- Zero ambiguity execution
|
|
26
|
-
- **Best for:** Ambiguous requirements, critical work
|
|
27
|
-
|
|
28
|
-
**Parameter:** `mode` (optional, default: `interactive`)
|
|
29
|
-
|
|
30
|
-
---
|
|
31
|
-
|
|
32
|
-
## Task Definition (AIOS Task Format V1.0)
|
|
33
|
-
|
|
34
|
-
```yaml
|
|
35
|
-
task: dbSnapshot()
|
|
36
|
-
responsável: Dara (Sage)
|
|
37
|
-
responsavel_type: Agente
|
|
38
|
-
atomic_layer: Config
|
|
39
|
-
|
|
40
|
-
**Entrada:**
|
|
41
|
-
- campo: query
|
|
42
|
-
tipo: string
|
|
43
|
-
origem: User Input
|
|
44
|
-
obrigatório: true
|
|
45
|
-
validação: Valid SQL query
|
|
46
|
-
|
|
47
|
-
- campo: params
|
|
48
|
-
tipo: object
|
|
49
|
-
origem: User Input
|
|
50
|
-
obrigatório: false
|
|
51
|
-
validação: Query parameters
|
|
52
|
-
|
|
53
|
-
- campo: connection
|
|
54
|
-
tipo: object
|
|
55
|
-
origem: config
|
|
56
|
-
obrigatório: true
|
|
57
|
-
validação: Valid PostgreSQL connection via Supabase
|
|
58
|
-
|
|
59
|
-
**Saída:**
|
|
60
|
-
- campo: query_result
|
|
61
|
-
tipo: array
|
|
62
|
-
destino: Memory
|
|
63
|
-
persistido: false
|
|
64
|
-
|
|
65
|
-
- campo: records_affected
|
|
66
|
-
tipo: number
|
|
67
|
-
destino: Return value
|
|
68
|
-
persistido: false
|
|
69
|
-
|
|
70
|
-
- campo: execution_time
|
|
71
|
-
tipo: number
|
|
72
|
-
destino: Memory
|
|
73
|
-
persistido: false
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
---
|
|
77
|
-
|
|
78
|
-
## Pre-Conditions
|
|
79
|
-
|
|
80
|
-
**Purpose:** Validate prerequisites BEFORE task execution (blocking)
|
|
81
|
-
|
|
82
|
-
**Checklist:**
|
|
83
|
-
|
|
84
|
-
```yaml
|
|
85
|
-
pre-conditions:
|
|
86
|
-
- [ ] Database connection established; query syntax valid
|
|
87
|
-
tipo: pre-condition
|
|
88
|
-
blocker: true
|
|
89
|
-
validação: |
|
|
90
|
-
Check database connection established; query syntax valid
|
|
91
|
-
error_message: "Pre-condition failed: Database connection established; query syntax valid"
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
---
|
|
95
|
-
|
|
96
|
-
## Post-Conditions
|
|
97
|
-
|
|
98
|
-
**Purpose:** Validate execution success AFTER task completes
|
|
99
|
-
|
|
100
|
-
**Checklist:**
|
|
101
|
-
|
|
102
|
-
```yaml
|
|
103
|
-
post-conditions:
|
|
104
|
-
- [ ] Query executed; results returned; transaction committed
|
|
105
|
-
tipo: post-condition
|
|
106
|
-
blocker: true
|
|
107
|
-
validação: |
|
|
108
|
-
Verify query executed; results returned; transaction committed
|
|
109
|
-
error_message: "Post-condition failed: Query executed; results returned; transaction committed"
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
---
|
|
113
|
-
|
|
114
|
-
## Acceptance Criteria
|
|
115
|
-
|
|
116
|
-
**Purpose:** Definitive pass/fail criteria for task completion
|
|
117
|
-
|
|
118
|
-
**Checklist:**
|
|
119
|
-
|
|
120
|
-
```yaml
|
|
121
|
-
acceptance-criteria:
|
|
122
|
-
- [ ] Data persisted correctly; constraints respected; no orphaned data
|
|
123
|
-
tipo: acceptance-criterion
|
|
124
|
-
blocker: true
|
|
125
|
-
validação: |
|
|
126
|
-
Assert data persisted correctly; constraints respected; no orphaned data
|
|
127
|
-
error_message: "Acceptance criterion not met: Data persisted correctly; constraints respected; no orphaned data"
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
---
|
|
131
|
-
|
|
132
|
-
## Tools
|
|
133
|
-
|
|
134
|
-
**External/shared resources used by this task:**
|
|
135
|
-
|
|
136
|
-
- **Tool:** supabase
|
|
137
|
-
- **Purpose:** PostgreSQL database connection via Supabase client
|
|
138
|
-
- **Source:** @supabase/supabase-js
|
|
139
|
-
|
|
140
|
-
- **Tool:** query-validator
|
|
141
|
-
- **Purpose:** SQL query syntax validation
|
|
142
|
-
- **Source:** .aios-core/utils/db-query-validator.js
|
|
143
|
-
|
|
144
|
-
---
|
|
145
|
-
|
|
146
|
-
## Scripts
|
|
147
|
-
|
|
148
|
-
**Agent-specific code for this task:**
|
|
149
|
-
|
|
150
|
-
- **Script:** db-query.js
|
|
151
|
-
- **Purpose:** Execute PostgreSQL queries with error handling via Supabase
|
|
152
|
-
- **Language:** JavaScript
|
|
153
|
-
- **Location:** .aios-core/scripts/db-query.js
|
|
154
|
-
|
|
155
|
-
---
|
|
156
|
-
|
|
157
|
-
## Error Handling
|
|
158
|
-
|
|
159
|
-
**Strategy:** retry
|
|
160
|
-
|
|
161
|
-
**Common Errors:**
|
|
162
|
-
|
|
163
|
-
1. **Error:** Connection Failed
|
|
164
|
-
- **Cause:** Unable to connect to Neo4j database
|
|
165
|
-
- **Resolution:** Check connection string, credentials, network
|
|
166
|
-
- **Recovery:** Retry with exponential backoff (max 3 attempts)
|
|
167
|
-
|
|
168
|
-
2. **Error:** Query Syntax Error
|
|
169
|
-
- **Cause:** Invalid Cypher query syntax
|
|
170
|
-
- **Resolution:** Validate query syntax before execution
|
|
171
|
-
- **Recovery:** Return detailed syntax error, suggest fix
|
|
172
|
-
|
|
173
|
-
3. **Error:** Transaction Rollback
|
|
174
|
-
- **Cause:** Query violates constraints or timeout
|
|
175
|
-
- **Resolution:** Review query logic and constraints
|
|
176
|
-
- **Recovery:** Automatic rollback, preserve data integrity
|
|
177
|
-
|
|
178
|
-
---
|
|
179
|
-
|
|
180
|
-
## Performance
|
|
181
|
-
|
|
182
|
-
**Expected Metrics:**
|
|
183
|
-
|
|
184
|
-
```yaml
|
|
185
|
-
duration_expected: 2-10 min (estimated)
|
|
186
|
-
cost_estimated: $0.001-0.008
|
|
187
|
-
token_usage: ~800-2,500 tokens
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
**Optimization Notes:**
|
|
191
|
-
- Validate configuration early; use atomic writes; implement rollback checkpoints
|
|
192
|
-
|
|
193
|
-
---
|
|
194
|
-
|
|
195
|
-
## Metadata
|
|
196
|
-
|
|
197
|
-
```yaml
|
|
198
|
-
story: N/A
|
|
199
|
-
version: 1.0.0
|
|
200
|
-
dependencies:
|
|
201
|
-
- N/A
|
|
202
|
-
tags:
|
|
203
|
-
- database
|
|
204
|
-
- infrastructure
|
|
205
|
-
updated_at: 2025-11-17
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
---
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
## Inputs
|
|
212
|
-
|
|
213
|
-
- `label` (string): Snapshot label/name (e.g., "baseline", "pre_migration", "v1_2_0")
|
|
214
|
-
|
|
215
|
-
---
|
|
216
|
-
|
|
217
|
-
## Process
|
|
218
|
-
|
|
219
|
-
### 1. Confirm Snapshot Details
|
|
220
|
-
|
|
221
|
-
Ask user:
|
|
222
|
-
- Snapshot label: `{label}`
|
|
223
|
-
- Purpose of this snapshot (e.g., "before adding user_roles table")
|
|
224
|
-
- Include data? (schema-only is default, safer, faster)
|
|
225
|
-
|
|
226
|
-
### 2. Create Snapshots Directory
|
|
227
|
-
|
|
228
|
-
```bash
|
|
229
|
-
mkdir -p supabase/snapshots
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
### 3. Generate Snapshot
|
|
233
|
-
|
|
234
|
-
```bash
|
|
235
|
-
TS=$(date +%Y%m%d_%H%M%S)
|
|
236
|
-
LABEL="{label}"
|
|
237
|
-
FILENAME="supabase/snapshots/${TS}_${LABEL}.sql"
|
|
238
|
-
|
|
239
|
-
echo "Creating snapshot: $FILENAME"
|
|
240
|
-
|
|
241
|
-
pg_dump "$SUPABASE_DB_URL" \
|
|
242
|
-
--schema-only \
|
|
243
|
-
--clean \
|
|
244
|
-
--if-exists \
|
|
245
|
-
--no-owner \
|
|
246
|
-
--no-privileges \
|
|
247
|
-
> "$FILENAME"
|
|
248
|
-
|
|
249
|
-
if [ $? -eq 0 ]; then
|
|
250
|
-
echo "✅ Snapshot created: $FILENAME"
|
|
251
|
-
ls -lh "$FILENAME"
|
|
252
|
-
else
|
|
253
|
-
echo "❌ Snapshot failed"
|
|
254
|
-
exit 1
|
|
255
|
-
fi
|
|
256
|
-
```
|
|
257
|
-
|
|
258
|
-
### 4. Verify Snapshot
|
|
259
|
-
|
|
260
|
-
Quick sanity check:
|
|
261
|
-
|
|
262
|
-
```bash
|
|
263
|
-
# Check file size (should be > 0)
|
|
264
|
-
if [ ! -s "$FILENAME" ]; then
|
|
265
|
-
echo "⚠️ Snapshot file is empty"
|
|
266
|
-
exit 1
|
|
267
|
-
fi
|
|
268
|
-
|
|
269
|
-
# Count schema objects
|
|
270
|
-
echo ""
|
|
271
|
-
echo "=== Snapshot Contents ==="
|
|
272
|
-
grep -c "CREATE TABLE" "$FILENAME" && echo "tables found" || echo "no tables"
|
|
273
|
-
grep -c "CREATE FUNCTION" "$FILENAME" && echo "functions found" || echo "no functions"
|
|
274
|
-
grep -c "CREATE POLICY" "$FILENAME" && echo "policies found" || echo "no policies"
|
|
275
|
-
```
|
|
276
|
-
|
|
277
|
-
### 5. Create Snapshot Metadata
|
|
278
|
-
|
|
279
|
-
```bash
|
|
280
|
-
cat > "supabase/snapshots/${TS}_${LABEL}.meta" <<EOF
|
|
281
|
-
Snapshot: ${TS}_${LABEL}
|
|
282
|
-
Created: $(date -Iseconds)
|
|
283
|
-
Label: ${LABEL}
|
|
284
|
-
Database: $(echo "$SUPABASE_DB_URL" | sed 's/:.*/:[REDACTED]/')
|
|
285
|
-
Purpose: [user provided purpose]
|
|
286
|
-
File: ${FILENAME}
|
|
287
|
-
Size: $(ls -lh "$FILENAME" | awk '{print $5}')
|
|
288
|
-
|
|
289
|
-
To restore:
|
|
290
|
-
*rollback supabase/snapshots/${TS}_${LABEL}.sql
|
|
291
|
-
|
|
292
|
-
Or manually:
|
|
293
|
-
psql "\$SUPABASE_DB_URL" -f "${FILENAME}"
|
|
294
|
-
EOF
|
|
295
|
-
|
|
296
|
-
cat "supabase/snapshots/${TS}_${LABEL}.meta"
|
|
297
|
-
```
|
|
298
|
-
|
|
299
|
-
---
|
|
300
|
-
|
|
301
|
-
## Output
|
|
302
|
-
|
|
303
|
-
```
|
|
304
|
-
✅ Snapshot Created Successfully
|
|
305
|
-
|
|
306
|
-
File: supabase/snapshots/20251026_143022_pre_migration.sql
|
|
307
|
-
Size: 45.2 KB
|
|
308
|
-
Timestamp: 20251026_143022
|
|
309
|
-
Label: pre_migration
|
|
310
|
-
|
|
311
|
-
Contents:
|
|
312
|
-
- 12 tables
|
|
313
|
-
- 8 functions
|
|
314
|
-
- 15 policies
|
|
315
|
-
|
|
316
|
-
To restore this snapshot:
|
|
317
|
-
*rollback supabase/snapshots/20251026_143022_pre_migration.sql
|
|
318
|
-
|
|
319
|
-
Metadata saved to:
|
|
320
|
-
supabase/snapshots/20251026_143022_pre_migration.meta
|
|
321
|
-
```
|
|
322
|
-
|
|
323
|
-
---
|
|
324
|
-
|
|
325
|
-
## Snapshot Options
|
|
326
|
-
|
|
327
|
-
### Schema-Only (Default)
|
|
328
|
-
- ✅ Fast (seconds)
|
|
329
|
-
- ✅ Small file size
|
|
330
|
-
- ✅ Safe to apply to any environment
|
|
331
|
-
- ❌ No data preserved
|
|
332
|
-
- **Use for**: Migration rollback, schema versioning
|
|
333
|
-
|
|
334
|
-
### Schema + Data
|
|
335
|
-
```bash
|
|
336
|
-
pg_dump "$SUPABASE_DB_URL" \
|
|
337
|
-
--clean \
|
|
338
|
-
--if-exists \
|
|
339
|
-
--no-owner \
|
|
340
|
-
--no-privileges \
|
|
341
|
-
> "$FILENAME"
|
|
342
|
-
```
|
|
343
|
-
- ⚠️ Slower (minutes to hours)
|
|
344
|
-
- ⚠️ Large file size
|
|
345
|
-
- ⚠️ Data may conflict on restore
|
|
346
|
-
- ✅ Complete backup
|
|
347
|
-
- **Use for**: Disaster recovery, environment cloning
|
|
348
|
-
|
|
349
|
-
### Specific Tables Only
|
|
350
|
-
```bash
|
|
351
|
-
pg_dump "$SUPABASE_DB_URL" \
|
|
352
|
-
--schema-only \
|
|
353
|
-
--table="users" \
|
|
354
|
-
--table="profiles" \
|
|
355
|
-
> "$FILENAME"
|
|
356
|
-
```
|
|
357
|
-
- ✅ Targeted snapshot
|
|
358
|
-
- ✅ Smaller file
|
|
359
|
-
- **Use for**: Testing specific table changes
|
|
360
|
-
|
|
361
|
-
---
|
|
362
|
-
|
|
363
|
-
## Best Practices
|
|
364
|
-
|
|
365
|
-
### When to Snapshot
|
|
366
|
-
|
|
367
|
-
**Always before:**
|
|
368
|
-
- Migrations
|
|
369
|
-
- Schema changes
|
|
370
|
-
- RLS policy changes
|
|
371
|
-
- Function modifications
|
|
372
|
-
- Major data operations
|
|
373
|
-
|
|
374
|
-
**Regularly:**
|
|
375
|
-
- Daily schema snapshots (automated)
|
|
376
|
-
- Before each deployment
|
|
377
|
-
- After successful migrations (post-snapshot)
|
|
378
|
-
|
|
379
|
-
### Snapshot Naming
|
|
380
|
-
|
|
381
|
-
**Good names:**
|
|
382
|
-
- `baseline` - Initial schema state
|
|
383
|
-
- `pre_migration` - Before any migration
|
|
384
|
-
- `pre_v1_2_0` - Before version deployment
|
|
385
|
-
- `working_state` - Known good state
|
|
386
|
-
|
|
387
|
-
**Bad names:**
|
|
388
|
-
- `backup` - Too generic
|
|
389
|
-
- `test` - Unclear purpose
|
|
390
|
-
- `snapshot1` - No context
|
|
391
|
-
|
|
392
|
-
### Retention
|
|
393
|
-
|
|
394
|
-
Keep snapshots for:
|
|
395
|
-
- Last 7 days: All snapshots
|
|
396
|
-
- Last 30 days: Daily snapshots
|
|
397
|
-
- Last year: Monthly snapshots
|
|
398
|
-
- Forever: Major version snapshots
|
|
399
|
-
|
|
400
|
-
```bash
|
|
401
|
-
# Example cleanup (keep last 10)
|
|
402
|
-
cd supabase/snapshots
|
|
403
|
-
ls -t *.sql | tail -n +11 | xargs rm -f
|
|
404
|
-
```
|
|
405
|
-
|
|
406
|
-
---
|
|
407
|
-
|
|
408
|
-
## Snapshot vs Backup
|
|
409
|
-
|
|
410
|
-
| Feature | Snapshot (pg_dump) | Supabase Backup |
|
|
411
|
-
|---------|-------------------|-----------------|
|
|
412
|
-
| Speed | Fast | Depends |
|
|
413
|
-
| Scope | Schema only (default) | Full database |
|
|
414
|
-
| Storage | Local files | Supabase managed |
|
|
415
|
-
| Restore | Manual psql | Supabase dashboard |
|
|
416
|
-
| Version control | ✅ Git-friendly | ❌ Binary |
|
|
417
|
-
| Automation | Easy (script) | Automatic |
|
|
418
|
-
|
|
419
|
-
**Use snapshots for:**
|
|
420
|
-
- Schema version control
|
|
421
|
-
- Migration rollback
|
|
422
|
-
- Development workflows
|
|
423
|
-
- Quick local backups
|
|
424
|
-
|
|
425
|
-
**Use Supabase backups for:**
|
|
426
|
-
- Disaster recovery
|
|
427
|
-
- Point-in-time restore
|
|
428
|
-
- Production incidents
|
|
429
|
-
- Long-term retention
|
|
430
|
-
|
|
431
|
-
---
|
|
432
|
-
|
|
433
|
-
## Troubleshooting
|
|
434
|
-
|
|
435
|
-
### "pg_dump: error: connection failed"
|
|
436
|
-
|
|
437
|
-
**Problem**: Cannot connect to database
|
|
438
|
-
**Fix**: Check SUPABASE_DB_URL
|
|
439
|
-
|
|
440
|
-
```bash
|
|
441
|
-
*env-check
|
|
442
|
-
```
|
|
443
|
-
|
|
444
|
-
### "pg_dump: error: permission denied"
|
|
445
|
-
|
|
446
|
-
**Problem**: Insufficient privileges
|
|
447
|
-
**Fix**: Use connection string with sufficient permissions
|
|
448
|
-
|
|
449
|
-
### "Snapshot file is empty"
|
|
450
|
-
|
|
451
|
-
**Problem**: No schema objects or connection failed
|
|
452
|
-
**Fix**:
|
|
453
|
-
1. Verify database has tables: `SELECT * FROM pg_tables WHERE schemaname='public';`
|
|
454
|
-
2. Check pg_dump version compatibility
|
|
455
|
-
3. Verify network connectivity
|
|
456
|
-
|
|
457
|
-
### "Snapshot is huge"
|
|
458
|
-
|
|
459
|
-
**Problem**: Including data unintentionally
|
|
460
|
-
**Fix**: Use `--schema-only` flag explicitly
|
|
461
|
-
|
|
462
|
-
---
|
|
463
|
-
|
|
464
|
-
## Integration with Workflow
|
|
465
|
-
|
|
466
|
-
### Pre-Migration Workflow
|
|
467
|
-
```bash
|
|
468
|
-
*snapshot pre_migration # Create rollback point
|
|
469
|
-
*verify-order migration.sql # Check DDL order
|
|
470
|
-
*dry-run migration.sql # Test safely
|
|
471
|
-
*apply-migration migration.sql # Apply
|
|
472
|
-
*snapshot post_migration # Capture new state
|
|
473
|
-
```
|
|
474
|
-
|
|
475
|
-
### Comparison Workflow
|
|
476
|
-
```bash
|
|
477
|
-
*snapshot before_changes
|
|
478
|
-
# ... make changes ...
|
|
479
|
-
*snapshot after_changes
|
|
480
|
-
diff supabase/snapshots/*_before_changes.sql \
|
|
481
|
-
supabase/snapshots/*_after_changes.sql
|
|
482
|
-
```
|
|
483
|
-
|
|
484
|
-
---
|
|
485
|
-
|
|
486
|
-
## Advanced Usage
|
|
487
|
-
|
|
488
|
-
### Compare Two Snapshots
|
|
489
|
-
|
|
490
|
-
```bash
|
|
491
|
-
# Visual diff
|
|
492
|
-
diff -u snapshot1.sql snapshot2.sql | less
|
|
493
|
-
|
|
494
|
-
# Summary of changes
|
|
495
|
-
diff snapshot1.sql snapshot2.sql | grep "^[<>]" | head -20
|
|
496
|
-
```
|
|
497
|
-
|
|
498
|
-
### Extract Specific Objects
|
|
499
|
-
|
|
500
|
-
```bash
|
|
501
|
-
# Just table definitions
|
|
502
|
-
grep -A 20 "CREATE TABLE" snapshot.sql
|
|
503
|
-
|
|
504
|
-
# Just functions
|
|
505
|
-
sed -n '/CREATE FUNCTION/,/\$\$/p' snapshot.sql
|
|
506
|
-
```
|
|
507
|
-
|
|
508
|
-
### Version in Git
|
|
509
|
-
|
|
510
|
-
```bash
|
|
511
|
-
# Snapshot before commit
|
|
512
|
-
*snapshot before_feature_x
|
|
513
|
-
git add supabase/snapshots/*_before_feature_x.sql
|
|
514
|
-
git commit -m "snapshot: schema before feature X"
|
|
515
|
-
```
|
|
516
|
-
|
|
517
|
-
---
|
|
518
|
-
|
|
519
|
-
## Security Notes
|
|
520
|
-
|
|
521
|
-
⚠️ **Snapshots may contain sensitive schema info**:
|
|
522
|
-
- Table names reveal business logic
|
|
523
|
-
- Function names expose features
|
|
524
|
-
- Comments may contain internal notes
|
|
525
|
-
|
|
526
|
-
**In public repos:**
|
|
527
|
-
- Consider .gitignore for snapshots
|
|
528
|
-
- Or sanitize before committing
|
|
529
|
-
- Or use private repos only
|
|
530
|
-
|
|
531
|
-
**Do NOT commit:**
|
|
532
|
-
- Snapshots with `--data-included`
|
|
533
|
-
- Files containing passwords/secrets
|
|
534
|
-
- Connection strings in metadata
|
|
535
|
-
|
|
536
|
-
---
|
|
537
|
-
|
|
538
|
-
## Automation
|
|
539
|
-
|
|
540
|
-
### Daily Snapshot Script
|
|
541
|
-
|
|
542
|
-
```bash
|
|
543
|
-
#!/bin/bash
|
|
544
|
-
# Save as: scripts/daily-snapshot.sh
|
|
545
|
-
|
|
546
|
-
DATE=$(date +%Y%m%d)
|
|
547
|
-
*snapshot "daily_${DATE}"
|
|
548
|
-
|
|
549
|
-
# Cleanup old snapshots (keep 7 days)
|
|
550
|
-
find supabase/snapshots -name "daily_*.sql" -mtime +7 -delete
|
|
551
|
-
```
|
|
552
|
-
|
|
553
|
-
### Pre-Deploy Hook
|
|
554
|
-
|
|
555
|
-
```bash
|
|
556
|
-
# In CI/CD pipeline
|
|
557
|
-
- name: Create pre-deploy snapshot
|
|
558
|
-
run: |
|
|
559
|
-
/db-sage
|
|
560
|
-
*snapshot "pre_deploy_${CI_COMMIT_SHA}"
|
|
561
|
-
```
|
|
562
|
-
|
|
563
|
-
---
|
|
564
|
-
|
|
565
|
-
## Related Commands
|
|
566
|
-
|
|
567
|
-
- `*rollback {snapshot}` - Restore snapshot
|
|
568
|
-
- `*apply-migration {path}` - Includes automatic snapshots
|
|
569
|
-
- `*env-check` - Verify pg_dump available
|
|
1
|
+
# Task: Create Database Snapshot
|
|
2
|
+
|
|
3
|
+
**Purpose**: Create schema-only snapshot for rollback capability
|
|
4
|
+
|
|
5
|
+
**Elicit**: true
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Execution Modes
|
|
10
|
+
|
|
11
|
+
**Choose your execution mode:**
|
|
12
|
+
|
|
13
|
+
### 1. YOLO Mode - Fast, Autonomous (0-1 prompts)
|
|
14
|
+
- Autonomous decision making with logging
|
|
15
|
+
- Minimal user interaction
|
|
16
|
+
- **Best for:** Simple, deterministic tasks
|
|
17
|
+
|
|
18
|
+
### 2. Interactive Mode - Balanced, Educational (5-10 prompts) **[DEFAULT]**
|
|
19
|
+
- Explicit decision checkpoints
|
|
20
|
+
- Educational explanations
|
|
21
|
+
- **Best for:** Learning, complex decisions
|
|
22
|
+
|
|
23
|
+
### 3. Pre-Flight Planning - Comprehensive Upfront Planning
|
|
24
|
+
- Task analysis phase (identify all ambiguities)
|
|
25
|
+
- Zero ambiguity execution
|
|
26
|
+
- **Best for:** Ambiguous requirements, critical work
|
|
27
|
+
|
|
28
|
+
**Parameter:** `mode` (optional, default: `interactive`)
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Task Definition (AIOS Task Format V1.0)
|
|
33
|
+
|
|
34
|
+
```yaml
|
|
35
|
+
task: dbSnapshot()
|
|
36
|
+
responsável: Dara (Sage)
|
|
37
|
+
responsavel_type: Agente
|
|
38
|
+
atomic_layer: Config
|
|
39
|
+
|
|
40
|
+
**Entrada:**
|
|
41
|
+
- campo: query
|
|
42
|
+
tipo: string
|
|
43
|
+
origem: User Input
|
|
44
|
+
obrigatório: true
|
|
45
|
+
validação: Valid SQL query
|
|
46
|
+
|
|
47
|
+
- campo: params
|
|
48
|
+
tipo: object
|
|
49
|
+
origem: User Input
|
|
50
|
+
obrigatório: false
|
|
51
|
+
validação: Query parameters
|
|
52
|
+
|
|
53
|
+
- campo: connection
|
|
54
|
+
tipo: object
|
|
55
|
+
origem: config
|
|
56
|
+
obrigatório: true
|
|
57
|
+
validação: Valid PostgreSQL connection via Supabase
|
|
58
|
+
|
|
59
|
+
**Saída:**
|
|
60
|
+
- campo: query_result
|
|
61
|
+
tipo: array
|
|
62
|
+
destino: Memory
|
|
63
|
+
persistido: false
|
|
64
|
+
|
|
65
|
+
- campo: records_affected
|
|
66
|
+
tipo: number
|
|
67
|
+
destino: Return value
|
|
68
|
+
persistido: false
|
|
69
|
+
|
|
70
|
+
- campo: execution_time
|
|
71
|
+
tipo: number
|
|
72
|
+
destino: Memory
|
|
73
|
+
persistido: false
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Pre-Conditions
|
|
79
|
+
|
|
80
|
+
**Purpose:** Validate prerequisites BEFORE task execution (blocking)
|
|
81
|
+
|
|
82
|
+
**Checklist:**
|
|
83
|
+
|
|
84
|
+
```yaml
|
|
85
|
+
pre-conditions:
|
|
86
|
+
- [ ] Database connection established; query syntax valid
|
|
87
|
+
tipo: pre-condition
|
|
88
|
+
blocker: true
|
|
89
|
+
validação: |
|
|
90
|
+
Check database connection established; query syntax valid
|
|
91
|
+
error_message: "Pre-condition failed: Database connection established; query syntax valid"
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Post-Conditions
|
|
97
|
+
|
|
98
|
+
**Purpose:** Validate execution success AFTER task completes
|
|
99
|
+
|
|
100
|
+
**Checklist:**
|
|
101
|
+
|
|
102
|
+
```yaml
|
|
103
|
+
post-conditions:
|
|
104
|
+
- [ ] Query executed; results returned; transaction committed
|
|
105
|
+
tipo: post-condition
|
|
106
|
+
blocker: true
|
|
107
|
+
validação: |
|
|
108
|
+
Verify query executed; results returned; transaction committed
|
|
109
|
+
error_message: "Post-condition failed: Query executed; results returned; transaction committed"
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## Acceptance Criteria
|
|
115
|
+
|
|
116
|
+
**Purpose:** Definitive pass/fail criteria for task completion
|
|
117
|
+
|
|
118
|
+
**Checklist:**
|
|
119
|
+
|
|
120
|
+
```yaml
|
|
121
|
+
acceptance-criteria:
|
|
122
|
+
- [ ] Data persisted correctly; constraints respected; no orphaned data
|
|
123
|
+
tipo: acceptance-criterion
|
|
124
|
+
blocker: true
|
|
125
|
+
validação: |
|
|
126
|
+
Assert data persisted correctly; constraints respected; no orphaned data
|
|
127
|
+
error_message: "Acceptance criterion not met: Data persisted correctly; constraints respected; no orphaned data"
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Tools
|
|
133
|
+
|
|
134
|
+
**External/shared resources used by this task:**
|
|
135
|
+
|
|
136
|
+
- **Tool:** supabase
|
|
137
|
+
- **Purpose:** PostgreSQL database connection via Supabase client
|
|
138
|
+
- **Source:** @supabase/supabase-js
|
|
139
|
+
|
|
140
|
+
- **Tool:** query-validator
|
|
141
|
+
- **Purpose:** SQL query syntax validation
|
|
142
|
+
- **Source:** .aios-core/utils/db-query-validator.js
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## Scripts
|
|
147
|
+
|
|
148
|
+
**Agent-specific code for this task:**
|
|
149
|
+
|
|
150
|
+
- **Script:** db-query.js
|
|
151
|
+
- **Purpose:** Execute PostgreSQL queries with error handling via Supabase
|
|
152
|
+
- **Language:** JavaScript
|
|
153
|
+
- **Location:** .aios-core/scripts/db-query.js
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## Error Handling
|
|
158
|
+
|
|
159
|
+
**Strategy:** retry
|
|
160
|
+
|
|
161
|
+
**Common Errors:**
|
|
162
|
+
|
|
163
|
+
1. **Error:** Connection Failed
|
|
164
|
+
- **Cause:** Unable to connect to Neo4j database
|
|
165
|
+
- **Resolution:** Check connection string, credentials, network
|
|
166
|
+
- **Recovery:** Retry with exponential backoff (max 3 attempts)
|
|
167
|
+
|
|
168
|
+
2. **Error:** Query Syntax Error
|
|
169
|
+
- **Cause:** Invalid Cypher query syntax
|
|
170
|
+
- **Resolution:** Validate query syntax before execution
|
|
171
|
+
- **Recovery:** Return detailed syntax error, suggest fix
|
|
172
|
+
|
|
173
|
+
3. **Error:** Transaction Rollback
|
|
174
|
+
- **Cause:** Query violates constraints or timeout
|
|
175
|
+
- **Resolution:** Review query logic and constraints
|
|
176
|
+
- **Recovery:** Automatic rollback, preserve data integrity
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Performance
|
|
181
|
+
|
|
182
|
+
**Expected Metrics:**
|
|
183
|
+
|
|
184
|
+
```yaml
|
|
185
|
+
duration_expected: 2-10 min (estimated)
|
|
186
|
+
cost_estimated: $0.001-0.008
|
|
187
|
+
token_usage: ~800-2,500 tokens
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
**Optimization Notes:**
|
|
191
|
+
- Validate configuration early; use atomic writes; implement rollback checkpoints
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## Metadata
|
|
196
|
+
|
|
197
|
+
```yaml
|
|
198
|
+
story: N/A
|
|
199
|
+
version: 1.0.0
|
|
200
|
+
dependencies:
|
|
201
|
+
- N/A
|
|
202
|
+
tags:
|
|
203
|
+
- database
|
|
204
|
+
- infrastructure
|
|
205
|
+
updated_at: 2025-11-17
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
## Inputs
|
|
212
|
+
|
|
213
|
+
- `label` (string): Snapshot label/name (e.g., "baseline", "pre_migration", "v1_2_0")
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## Process
|
|
218
|
+
|
|
219
|
+
### 1. Confirm Snapshot Details
|
|
220
|
+
|
|
221
|
+
Ask user:
|
|
222
|
+
- Snapshot label: `{label}`
|
|
223
|
+
- Purpose of this snapshot (e.g., "before adding user_roles table")
|
|
224
|
+
- Include data? (schema-only is default, safer, faster)
|
|
225
|
+
|
|
226
|
+
### 2. Create Snapshots Directory
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
mkdir -p supabase/snapshots
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### 3. Generate Snapshot
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
TS=$(date +%Y%m%d_%H%M%S)
|
|
236
|
+
LABEL="{label}"
|
|
237
|
+
FILENAME="supabase/snapshots/${TS}_${LABEL}.sql"
|
|
238
|
+
|
|
239
|
+
echo "Creating snapshot: $FILENAME"
|
|
240
|
+
|
|
241
|
+
pg_dump "$SUPABASE_DB_URL" \
|
|
242
|
+
--schema-only \
|
|
243
|
+
--clean \
|
|
244
|
+
--if-exists \
|
|
245
|
+
--no-owner \
|
|
246
|
+
--no-privileges \
|
|
247
|
+
> "$FILENAME"
|
|
248
|
+
|
|
249
|
+
if [ $? -eq 0 ]; then
|
|
250
|
+
echo "✅ Snapshot created: $FILENAME"
|
|
251
|
+
ls -lh "$FILENAME"
|
|
252
|
+
else
|
|
253
|
+
echo "❌ Snapshot failed"
|
|
254
|
+
exit 1
|
|
255
|
+
fi
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
### 4. Verify Snapshot
|
|
259
|
+
|
|
260
|
+
Quick sanity check:
|
|
261
|
+
|
|
262
|
+
```bash
|
|
263
|
+
# Check file size (should be > 0)
|
|
264
|
+
if [ ! -s "$FILENAME" ]; then
|
|
265
|
+
echo "⚠️ Snapshot file is empty"
|
|
266
|
+
exit 1
|
|
267
|
+
fi
|
|
268
|
+
|
|
269
|
+
# Count schema objects
|
|
270
|
+
echo ""
|
|
271
|
+
echo "=== Snapshot Contents ==="
|
|
272
|
+
grep -c "CREATE TABLE" "$FILENAME" && echo "tables found" || echo "no tables"
|
|
273
|
+
grep -c "CREATE FUNCTION" "$FILENAME" && echo "functions found" || echo "no functions"
|
|
274
|
+
grep -c "CREATE POLICY" "$FILENAME" && echo "policies found" || echo "no policies"
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
### 5. Create Snapshot Metadata
|
|
278
|
+
|
|
279
|
+
```bash
|
|
280
|
+
cat > "supabase/snapshots/${TS}_${LABEL}.meta" <<EOF
|
|
281
|
+
Snapshot: ${TS}_${LABEL}
|
|
282
|
+
Created: $(date -Iseconds)
|
|
283
|
+
Label: ${LABEL}
|
|
284
|
+
Database: $(echo "$SUPABASE_DB_URL" | sed 's/:.*/:[REDACTED]/')
|
|
285
|
+
Purpose: [user provided purpose]
|
|
286
|
+
File: ${FILENAME}
|
|
287
|
+
Size: $(ls -lh "$FILENAME" | awk '{print $5}')
|
|
288
|
+
|
|
289
|
+
To restore:
|
|
290
|
+
*rollback supabase/snapshots/${TS}_${LABEL}.sql
|
|
291
|
+
|
|
292
|
+
Or manually:
|
|
293
|
+
psql "\$SUPABASE_DB_URL" -f "${FILENAME}"
|
|
294
|
+
EOF
|
|
295
|
+
|
|
296
|
+
cat "supabase/snapshots/${TS}_${LABEL}.meta"
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
---
|
|
300
|
+
|
|
301
|
+
## Output
|
|
302
|
+
|
|
303
|
+
```
|
|
304
|
+
✅ Snapshot Created Successfully
|
|
305
|
+
|
|
306
|
+
File: supabase/snapshots/20251026_143022_pre_migration.sql
|
|
307
|
+
Size: 45.2 KB
|
|
308
|
+
Timestamp: 20251026_143022
|
|
309
|
+
Label: pre_migration
|
|
310
|
+
|
|
311
|
+
Contents:
|
|
312
|
+
- 12 tables
|
|
313
|
+
- 8 functions
|
|
314
|
+
- 15 policies
|
|
315
|
+
|
|
316
|
+
To restore this snapshot:
|
|
317
|
+
*rollback supabase/snapshots/20251026_143022_pre_migration.sql
|
|
318
|
+
|
|
319
|
+
Metadata saved to:
|
|
320
|
+
supabase/snapshots/20251026_143022_pre_migration.meta
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
---
|
|
324
|
+
|
|
325
|
+
## Snapshot Options
|
|
326
|
+
|
|
327
|
+
### Schema-Only (Default)
|
|
328
|
+
- ✅ Fast (seconds)
|
|
329
|
+
- ✅ Small file size
|
|
330
|
+
- ✅ Safe to apply to any environment
|
|
331
|
+
- ❌ No data preserved
|
|
332
|
+
- **Use for**: Migration rollback, schema versioning
|
|
333
|
+
|
|
334
|
+
### Schema + Data
|
|
335
|
+
```bash
|
|
336
|
+
pg_dump "$SUPABASE_DB_URL" \
|
|
337
|
+
--clean \
|
|
338
|
+
--if-exists \
|
|
339
|
+
--no-owner \
|
|
340
|
+
--no-privileges \
|
|
341
|
+
> "$FILENAME"
|
|
342
|
+
```
|
|
343
|
+
- ⚠️ Slower (minutes to hours)
|
|
344
|
+
- ⚠️ Large file size
|
|
345
|
+
- ⚠️ Data may conflict on restore
|
|
346
|
+
- ✅ Complete backup
|
|
347
|
+
- **Use for**: Disaster recovery, environment cloning
|
|
348
|
+
|
|
349
|
+
### Specific Tables Only
|
|
350
|
+
```bash
|
|
351
|
+
pg_dump "$SUPABASE_DB_URL" \
|
|
352
|
+
--schema-only \
|
|
353
|
+
--table="users" \
|
|
354
|
+
--table="profiles" \
|
|
355
|
+
> "$FILENAME"
|
|
356
|
+
```
|
|
357
|
+
- ✅ Targeted snapshot
|
|
358
|
+
- ✅ Smaller file
|
|
359
|
+
- **Use for**: Testing specific table changes
|
|
360
|
+
|
|
361
|
+
---
|
|
362
|
+
|
|
363
|
+
## Best Practices
|
|
364
|
+
|
|
365
|
+
### When to Snapshot
|
|
366
|
+
|
|
367
|
+
**Always before:**
|
|
368
|
+
- Migrations
|
|
369
|
+
- Schema changes
|
|
370
|
+
- RLS policy changes
|
|
371
|
+
- Function modifications
|
|
372
|
+
- Major data operations
|
|
373
|
+
|
|
374
|
+
**Regularly:**
|
|
375
|
+
- Daily schema snapshots (automated)
|
|
376
|
+
- Before each deployment
|
|
377
|
+
- After successful migrations (post-snapshot)
|
|
378
|
+
|
|
379
|
+
### Snapshot Naming
|
|
380
|
+
|
|
381
|
+
**Good names:**
|
|
382
|
+
- `baseline` - Initial schema state
|
|
383
|
+
- `pre_migration` - Before any migration
|
|
384
|
+
- `pre_v1_2_0` - Before version deployment
|
|
385
|
+
- `working_state` - Known good state
|
|
386
|
+
|
|
387
|
+
**Bad names:**
|
|
388
|
+
- `backup` - Too generic
|
|
389
|
+
- `test` - Unclear purpose
|
|
390
|
+
- `snapshot1` - No context
|
|
391
|
+
|
|
392
|
+
### Retention
|
|
393
|
+
|
|
394
|
+
Keep snapshots for:
|
|
395
|
+
- Last 7 days: All snapshots
|
|
396
|
+
- Last 30 days: Daily snapshots
|
|
397
|
+
- Last year: Monthly snapshots
|
|
398
|
+
- Forever: Major version snapshots
|
|
399
|
+
|
|
400
|
+
```bash
|
|
401
|
+
# Example cleanup (keep last 10)
|
|
402
|
+
cd supabase/snapshots
|
|
403
|
+
ls -t *.sql | tail -n +11 | xargs rm -f
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
---
|
|
407
|
+
|
|
408
|
+
## Snapshot vs Backup
|
|
409
|
+
|
|
410
|
+
| Feature | Snapshot (pg_dump) | Supabase Backup |
|
|
411
|
+
|---------|-------------------|-----------------|
|
|
412
|
+
| Speed | Fast | Depends |
|
|
413
|
+
| Scope | Schema only (default) | Full database |
|
|
414
|
+
| Storage | Local files | Supabase managed |
|
|
415
|
+
| Restore | Manual psql | Supabase dashboard |
|
|
416
|
+
| Version control | ✅ Git-friendly | ❌ Binary |
|
|
417
|
+
| Automation | Easy (script) | Automatic |
|
|
418
|
+
|
|
419
|
+
**Use snapshots for:**
|
|
420
|
+
- Schema version control
|
|
421
|
+
- Migration rollback
|
|
422
|
+
- Development workflows
|
|
423
|
+
- Quick local backups
|
|
424
|
+
|
|
425
|
+
**Use Supabase backups for:**
|
|
426
|
+
- Disaster recovery
|
|
427
|
+
- Point-in-time restore
|
|
428
|
+
- Production incidents
|
|
429
|
+
- Long-term retention
|
|
430
|
+
|
|
431
|
+
---
|
|
432
|
+
|
|
433
|
+
## Troubleshooting
|
|
434
|
+
|
|
435
|
+
### "pg_dump: error: connection failed"
|
|
436
|
+
|
|
437
|
+
**Problem**: Cannot connect to database
|
|
438
|
+
**Fix**: Check SUPABASE_DB_URL
|
|
439
|
+
|
|
440
|
+
```bash
|
|
441
|
+
*env-check
|
|
442
|
+
```
|
|
443
|
+
|
|
444
|
+
### "pg_dump: error: permission denied"
|
|
445
|
+
|
|
446
|
+
**Problem**: Insufficient privileges
|
|
447
|
+
**Fix**: Use connection string with sufficient permissions
|
|
448
|
+
|
|
449
|
+
### "Snapshot file is empty"
|
|
450
|
+
|
|
451
|
+
**Problem**: No schema objects or connection failed
|
|
452
|
+
**Fix**:
|
|
453
|
+
1. Verify database has tables: `SELECT * FROM pg_tables WHERE schemaname='public';`
|
|
454
|
+
2. Check pg_dump version compatibility
|
|
455
|
+
3. Verify network connectivity
|
|
456
|
+
|
|
457
|
+
### "Snapshot is huge"
|
|
458
|
+
|
|
459
|
+
**Problem**: Including data unintentionally
|
|
460
|
+
**Fix**: Use `--schema-only` flag explicitly
|
|
461
|
+
|
|
462
|
+
---
|
|
463
|
+
|
|
464
|
+
## Integration with Workflow
|
|
465
|
+
|
|
466
|
+
### Pre-Migration Workflow
|
|
467
|
+
```bash
|
|
468
|
+
*snapshot pre_migration # Create rollback point
|
|
469
|
+
*verify-order migration.sql # Check DDL order
|
|
470
|
+
*dry-run migration.sql # Test safely
|
|
471
|
+
*apply-migration migration.sql # Apply
|
|
472
|
+
*snapshot post_migration # Capture new state
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+
### Comparison Workflow
|
|
476
|
+
```bash
|
|
477
|
+
*snapshot before_changes
|
|
478
|
+
# ... make changes ...
|
|
479
|
+
*snapshot after_changes
|
|
480
|
+
diff supabase/snapshots/*_before_changes.sql \
|
|
481
|
+
supabase/snapshots/*_after_changes.sql
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
---
|
|
485
|
+
|
|
486
|
+
## Advanced Usage
|
|
487
|
+
|
|
488
|
+
### Compare Two Snapshots
|
|
489
|
+
|
|
490
|
+
```bash
|
|
491
|
+
# Visual diff
|
|
492
|
+
diff -u snapshot1.sql snapshot2.sql | less
|
|
493
|
+
|
|
494
|
+
# Summary of changes
|
|
495
|
+
diff snapshot1.sql snapshot2.sql | grep "^[<>]" | head -20
|
|
496
|
+
```
|
|
497
|
+
|
|
498
|
+
### Extract Specific Objects
|
|
499
|
+
|
|
500
|
+
```bash
|
|
501
|
+
# Just table definitions
|
|
502
|
+
grep -A 20 "CREATE TABLE" snapshot.sql
|
|
503
|
+
|
|
504
|
+
# Just functions
|
|
505
|
+
sed -n '/CREATE FUNCTION/,/\$\$/p' snapshot.sql
|
|
506
|
+
```
|
|
507
|
+
|
|
508
|
+
### Version in Git
|
|
509
|
+
|
|
510
|
+
```bash
|
|
511
|
+
# Snapshot before commit
|
|
512
|
+
*snapshot before_feature_x
|
|
513
|
+
git add supabase/snapshots/*_before_feature_x.sql
|
|
514
|
+
git commit -m "snapshot: schema before feature X"
|
|
515
|
+
```
|
|
516
|
+
|
|
517
|
+
---
|
|
518
|
+
|
|
519
|
+
## Security Notes
|
|
520
|
+
|
|
521
|
+
⚠️ **Snapshots may contain sensitive schema info**:
|
|
522
|
+
- Table names reveal business logic
|
|
523
|
+
- Function names expose features
|
|
524
|
+
- Comments may contain internal notes
|
|
525
|
+
|
|
526
|
+
**In public repos:**
|
|
527
|
+
- Consider .gitignore for snapshots
|
|
528
|
+
- Or sanitize before committing
|
|
529
|
+
- Or use private repos only
|
|
530
|
+
|
|
531
|
+
**Do NOT commit:**
|
|
532
|
+
- Snapshots with `--data-included`
|
|
533
|
+
- Files containing passwords/secrets
|
|
534
|
+
- Connection strings in metadata
|
|
535
|
+
|
|
536
|
+
---
|
|
537
|
+
|
|
538
|
+
## Automation
|
|
539
|
+
|
|
540
|
+
### Daily Snapshot Script
|
|
541
|
+
|
|
542
|
+
```bash
|
|
543
|
+
#!/bin/bash
|
|
544
|
+
# Save as: scripts/daily-snapshot.sh
|
|
545
|
+
|
|
546
|
+
DATE=$(date +%Y%m%d)
|
|
547
|
+
*snapshot "daily_${DATE}"
|
|
548
|
+
|
|
549
|
+
# Cleanup old snapshots (keep 7 days)
|
|
550
|
+
find supabase/snapshots -name "daily_*.sql" -mtime +7 -delete
|
|
551
|
+
```
|
|
552
|
+
|
|
553
|
+
### Pre-Deploy Hook
|
|
554
|
+
|
|
555
|
+
```bash
|
|
556
|
+
# In CI/CD pipeline
|
|
557
|
+
- name: Create pre-deploy snapshot
|
|
558
|
+
run: |
|
|
559
|
+
/db-sage
|
|
560
|
+
*snapshot "pre_deploy_${CI_COMMIT_SHA}"
|
|
561
|
+
```
|
|
562
|
+
|
|
563
|
+
---
|
|
564
|
+
|
|
565
|
+
## Related Commands
|
|
566
|
+
|
|
567
|
+
- `*rollback {snapshot}` - Restore snapshot
|
|
568
|
+
- `*apply-migration {path}` - Includes automatic snapshots
|
|
569
|
+
- `*env-check` - Verify pg_dump available
|