aios-core 2.1.6 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.aios-core/core/README.md +229 -229
- package/.aios-core/core/data/agent-config-requirements.yaml +368 -368
- package/.aios-core/core/data/aios-kb.md +923 -923
- package/.aios-core/core/data/workflow-patterns.yaml +267 -267
- package/.aios-core/core/docs/SHARD-TRANSLATION-GUIDE.md +335 -335
- package/.aios-core/core/docs/component-creation-guide.md +457 -457
- package/.aios-core/core/docs/session-update-pattern.md +307 -307
- package/.aios-core/core/docs/template-syntax.md +266 -266
- package/.aios-core/core/docs/troubleshooting-guide.md +624 -624
- package/.aios-core/core/elicitation/elicitation-engine.js +1 -1
- package/.aios-core/core/index.esm.js +42 -42
- package/.aios-core/core/index.js +1 -1
- package/.aios-core/core/migration/migration-config.yaml +83 -83
- package/.aios-core/core/migration/module-mapping.yaml +89 -89
- package/.aios-core/core/quality-gates/layer2-pr-automation.js +1 -1
- package/.aios-core/core/quality-gates/quality-gate-config.yaml +86 -86
- package/.aios-core/core/registry/README.md +179 -179
- package/.aios-core/core/utils/security-utils.js +1 -1
- package/.aios-core/core-config.yaml +391 -382
- package/.aios-core/data/agent-config-requirements.yaml +368 -368
- package/.aios-core/data/aios-kb.md +923 -923
- package/.aios-core/data/technical-preferences.md +3 -3
- package/.aios-core/data/workflow-patterns.yaml +267 -267
- package/.aios-core/development/README.md +142 -142
- package/.aios-core/development/agent-teams/team-all.yaml +15 -15
- package/.aios-core/development/agent-teams/team-fullstack.yaml +18 -18
- package/.aios-core/development/agent-teams/team-ide-minimal.yaml +10 -10
- package/.aios-core/development/agent-teams/team-no-ui.yaml +13 -13
- package/.aios-core/development/agent-teams/team-qa-focused.yaml +155 -155
- package/.aios-core/development/agents/aios-master.md +339 -339
- package/.aios-core/development/agents/analyst.md +195 -195
- package/.aios-core/development/agents/architect.md +359 -359
- package/.aios-core/development/agents/data-engineer.md +468 -468
- package/.aios-core/development/agents/dev.md +390 -390
- package/.aios-core/development/agents/devops.md +398 -398
- package/.aios-core/development/agents/pm.md +198 -198
- package/.aios-core/development/agents/po.md +256 -256
- package/.aios-core/development/agents/qa.md +312 -312
- package/.aios-core/development/agents/sm.md +220 -220
- package/.aios-core/development/agents/ux-design-expert.md +451 -451
- package/.aios-core/development/scripts/greeting-config-cli.js +85 -85
- package/.aios-core/development/tasks/add-mcp.md +319 -319
- package/.aios-core/development/tasks/advanced-elicitation.md +318 -318
- package/.aios-core/development/tasks/analyst-facilitate-brainstorming.md +341 -341
- package/.aios-core/development/tasks/analyze-framework.md +696 -696
- package/.aios-core/development/tasks/analyze-performance.md +637 -637
- package/.aios-core/development/tasks/apply-qa-fixes.md +340 -340
- package/.aios-core/development/tasks/architect-analyze-impact.md +826 -826
- package/.aios-core/development/tasks/audit-codebase.md +429 -429
- package/.aios-core/development/tasks/audit-tailwind-config.md +270 -270
- package/.aios-core/development/tasks/audit-utilities.md +358 -358
- package/.aios-core/development/tasks/bootstrap-shadcn-library.md +286 -286
- package/.aios-core/development/tasks/brownfield-create-epic.md +485 -485
- package/.aios-core/development/tasks/brownfield-create-story.md +356 -356
- package/.aios-core/development/tasks/build-component.md +478 -478
- package/.aios-core/development/tasks/calculate-roi.md +455 -455
- package/.aios-core/development/tasks/ci-cd-configuration.md +764 -764
- package/.aios-core/development/tasks/cleanup-utilities.md +670 -670
- package/.aios-core/development/tasks/collaborative-edit.md +1108 -1108
- package/.aios-core/development/tasks/compose-molecule.md +284 -284
- package/.aios-core/development/tasks/consolidate-patterns.md +414 -414
- package/.aios-core/development/tasks/correct-course.md +279 -279
- package/.aios-core/development/tasks/create-agent.md +321 -321
- package/.aios-core/development/tasks/create-brownfield-story.md +726 -726
- package/.aios-core/development/tasks/create-deep-research-prompt.md +498 -498
- package/.aios-core/development/tasks/create-doc.md +316 -316
- package/.aios-core/development/tasks/create-next-story.md +774 -774
- package/.aios-core/development/tasks/create-suite.md +283 -283
- package/.aios-core/development/tasks/create-task.md +371 -371
- package/.aios-core/development/tasks/create-workflow.md +370 -370
- package/.aios-core/development/tasks/db-analyze-hotpaths.md +572 -572
- package/.aios-core/development/tasks/db-apply-migration.md +381 -381
- package/.aios-core/development/tasks/db-bootstrap.md +642 -642
- package/.aios-core/development/tasks/db-domain-modeling.md +693 -693
- package/.aios-core/development/tasks/db-dry-run.md +293 -293
- package/.aios-core/development/tasks/db-env-check.md +260 -260
- package/.aios-core/development/tasks/db-expansion-pack-integration.md +663 -663
- package/.aios-core/development/tasks/db-explain.md +631 -631
- package/.aios-core/development/tasks/db-impersonate.md +495 -495
- package/.aios-core/development/tasks/db-load-csv.md +593 -593
- package/.aios-core/development/tasks/db-policy-apply.md +653 -653
- package/.aios-core/development/tasks/db-rls-audit.md +411 -411
- package/.aios-core/development/tasks/db-rollback.md +739 -739
- package/.aios-core/development/tasks/db-run-sql.md +613 -613
- package/.aios-core/development/tasks/db-schema-audit.md +1011 -1011
- package/.aios-core/development/tasks/db-seed.md +390 -390
- package/.aios-core/development/tasks/db-smoke-test.md +351 -351
- package/.aios-core/development/tasks/db-snapshot.md +569 -569
- package/.aios-core/development/tasks/db-supabase-setup.md +712 -712
- package/.aios-core/development/tasks/db-verify-order.md +515 -515
- package/.aios-core/development/tasks/deprecate-component.md +956 -956
- package/.aios-core/development/tasks/dev-apply-qa-fixes.md +318 -318
- package/.aios-core/development/tasks/dev-backlog-debt.md +469 -469
- package/.aios-core/development/tasks/dev-develop-story.md +846 -846
- package/.aios-core/development/tasks/dev-improve-code-quality.md +872 -872
- package/.aios-core/development/tasks/dev-optimize-performance.md +1033 -1033
- package/.aios-core/development/tasks/dev-suggest-refactoring.md +870 -870
- package/.aios-core/development/tasks/dev-validate-next-story.md +348 -348
- package/.aios-core/development/tasks/document-project.md +552 -552
- package/.aios-core/development/tasks/environment-bootstrap.md +1311 -1311
- package/.aios-core/development/tasks/execute-checklist.md +301 -301
- package/.aios-core/development/tasks/export-design-tokens-dtcg.md +274 -274
- package/.aios-core/development/tasks/extend-pattern.md +269 -269
- package/.aios-core/development/tasks/extract-tokens.md +467 -467
- package/.aios-core/development/tasks/facilitate-brainstorming-session.md +518 -518
- package/.aios-core/development/tasks/generate-ai-frontend-prompt.md +260 -260
- package/.aios-core/development/tasks/generate-documentation.md +284 -284
- package/.aios-core/development/tasks/generate-migration-strategy.md +522 -522
- package/.aios-core/development/tasks/generate-shock-report.md +501 -501
- package/.aios-core/development/tasks/github-devops-github-pr-automation.md +427 -427
- package/.aios-core/development/tasks/github-devops-pre-push-quality-gate.md +733 -733
- package/.aios-core/development/tasks/github-devops-repository-cleanup.md +374 -374
- package/.aios-core/development/tasks/github-devops-version-management.md +483 -483
- package/.aios-core/development/tasks/improve-self.md +822 -822
- package/.aios-core/development/tasks/index-docs.md +387 -387
- package/.aios-core/development/tasks/init-project-status.md +506 -506
- package/.aios-core/development/tasks/integrate-expansion-pack.md +314 -314
- package/.aios-core/development/tasks/kb-mode-interaction.md +283 -283
- package/.aios-core/development/tasks/learn-patterns.md +900 -900
- package/.aios-core/development/tasks/mcp-workflow.md +437 -437
- package/.aios-core/development/tasks/modify-agent.md +381 -381
- package/.aios-core/development/tasks/modify-task.md +424 -424
- package/.aios-core/development/tasks/modify-workflow.md +465 -465
- package/.aios-core/development/tasks/po-backlog-add.md +370 -370
- package/.aios-core/development/tasks/po-manage-story-backlog.md +523 -523
- package/.aios-core/development/tasks/po-pull-story-from-clickup.md +540 -540
- package/.aios-core/development/tasks/po-pull-story.md +316 -316
- package/.aios-core/development/tasks/po-stories-index.md +351 -351
- package/.aios-core/development/tasks/po-sync-story-to-clickup.md +457 -457
- package/.aios-core/development/tasks/po-sync-story.md +303 -303
- package/.aios-core/development/tasks/pr-automation.md +701 -701
- package/.aios-core/development/tasks/propose-modification.md +842 -842
- package/.aios-core/development/tasks/qa-backlog-add-followup.md +425 -425
- package/.aios-core/development/tasks/qa-gate.md +373 -373
- package/.aios-core/development/tasks/qa-generate-tests.md +1174 -1174
- package/.aios-core/development/tasks/qa-nfr-assess.md +557 -557
- package/.aios-core/development/tasks/qa-review-proposal.md +1157 -1157
- package/.aios-core/development/tasks/qa-review-story.md +682 -682
- package/.aios-core/development/tasks/qa-risk-profile.md +566 -566
- package/.aios-core/development/tasks/qa-run-tests.md +277 -277
- package/.aios-core/development/tasks/qa-test-design.md +387 -387
- package/.aios-core/development/tasks/qa-trace-requirements.md +476 -476
- package/.aios-core/development/tasks/release-management.md +723 -723
- package/.aios-core/development/tasks/security-audit.md +554 -554
- package/.aios-core/development/tasks/security-scan.md +790 -790
- package/.aios-core/development/tasks/setup-database.md +741 -741
- package/.aios-core/development/tasks/setup-design-system.md +462 -462
- package/.aios-core/development/tasks/setup-github.md +874 -874
- package/.aios-core/development/tasks/setup-llm-routing.md +1 -1
- package/.aios-core/development/tasks/setup-mcp-docker.md +584 -584
- package/.aios-core/development/tasks/setup-project-docs.md +1 -1
- package/.aios-core/development/tasks/shard-doc.md +537 -537
- package/.aios-core/development/tasks/sm-create-next-story.md +480 -480
- package/.aios-core/development/tasks/sync-documentation.md +864 -864
- package/.aios-core/development/tasks/tailwind-upgrade.md +294 -294
- package/.aios-core/development/tasks/test-as-user.md +621 -621
- package/.aios-core/development/tasks/test-validation-task.md +171 -171
- package/.aios-core/development/tasks/undo-last.md +346 -346
- package/.aios-core/development/tasks/update-manifest.md +409 -409
- package/.aios-core/development/tasks/ux-create-wireframe.md +617 -617
- package/.aios-core/development/tasks/ux-ds-scan-artifact.md +672 -672
- package/.aios-core/development/tasks/ux-user-research.md +559 -559
- package/.aios-core/development/tasks/validate-next-story.md +422 -422
- package/.aios-core/development/workflows/README.md +83 -83
- package/.aios-core/development/workflows/brownfield-fullstack.yaml +297 -297
- package/.aios-core/development/workflows/brownfield-service.yaml +187 -187
- package/.aios-core/development/workflows/brownfield-ui.yaml +197 -197
- package/.aios-core/development/workflows/greenfield-fullstack.yaml +333 -333
- package/.aios-core/development/workflows/greenfield-service.yaml +206 -206
- package/.aios-core/development/workflows/greenfield-ui.yaml +235 -235
- package/.aios-core/docs/SHARD-TRANSLATION-GUIDE.md +335 -335
- package/.aios-core/docs/component-creation-guide.md +457 -457
- package/.aios-core/docs/session-update-pattern.md +307 -307
- package/.aios-core/docs/standards/AGENT-PERSONALIZATION-STANDARD-V1.md +572 -572
- package/.aios-core/docs/standards/AIOS-COLOR-PALETTE-QUICK-REFERENCE.md +185 -185
- package/.aios-core/docs/standards/AIOS-COLOR-PALETTE-V2.1.md +354 -354
- package/.aios-core/docs/standards/AIOS-FRAMEWORK-MASTER.md +1963 -1963
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1-COMPLETE.md +821 -821
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1-SUMMARY.md +1190 -1190
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1.md +439 -439
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.2-SUMMARY.md +1339 -1339
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO.md +5398 -5398
- package/.aios-core/docs/standards/EXECUTOR-DECISION-TREE.md +697 -697
- package/.aios-core/docs/standards/OPEN-SOURCE-VS-SERVICE-DIFFERENCES.md +511 -511
- package/.aios-core/docs/standards/QUALITY-GATES-SPECIFICATION.md +556 -556
- package/.aios-core/docs/standards/STANDARDS-INDEX.md +210 -210
- package/.aios-core/docs/standards/STORY-TEMPLATE-V2-SPECIFICATION.md +550 -550
- package/.aios-core/docs/standards/TASK-FORMAT-SPECIFICATION-V1.md +1414 -1414
- package/.aios-core/docs/standards/V3-ARCHITECTURAL-DECISIONS.md +523 -523
- package/.aios-core/docs/template-syntax.md +266 -266
- package/.aios-core/docs/troubleshooting-guide.md +624 -624
- package/.aios-core/index.esm.js +15 -15
- package/.aios-core/index.js +1 -1
- package/.aios-core/infrastructure/README.md +126 -126
- package/.aios-core/infrastructure/integrations/pm-adapters/README.md +59 -59
- package/.aios-core/infrastructure/scripts/approval-workflow.js +1 -1
- package/.aios-core/infrastructure/scripts/batch-creator.js +1 -1
- package/.aios-core/infrastructure/scripts/component-generator.js +3 -3
- package/.aios-core/infrastructure/scripts/component-metadata.js +1 -1
- package/.aios-core/infrastructure/scripts/component-search.js +1 -1
- package/.aios-core/infrastructure/scripts/coverage-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/dependency-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/dependency-impact-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/framework-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/improvement-engine.js +1 -1
- package/.aios-core/infrastructure/scripts/llm-routing/install-llm-routing.js +26 -13
- package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-free-tracked.cmd +127 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-free-tracked.sh +108 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-proxy.cmd +71 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-proxy.sh +65 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-usage.cmd +51 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-usage.sh +16 -0
- package/.aios-core/infrastructure/scripts/llm-routing/usage-tracker/index.js +549 -0
- package/.aios-core/infrastructure/scripts/modification-risk-assessment.js +1 -1
- package/.aios-core/infrastructure/scripts/performance-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/pm-adapter.js +134 -134
- package/.aios-core/infrastructure/scripts/repository-detector.js +3 -3
- package/.aios-core/infrastructure/scripts/template-engine.js +1 -1
- package/.aios-core/infrastructure/scripts/template-validator.js +1 -1
- package/.aios-core/infrastructure/scripts/test-generator.js +1 -1
- package/.aios-core/infrastructure/scripts/test-quality-assessment.js +1 -1
- package/.aios-core/infrastructure/scripts/transaction-manager.js +1 -1
- package/.aios-core/infrastructure/scripts/usage-analytics.js +1 -1
- package/.aios-core/infrastructure/scripts/visual-impact-generator.js +2 -2
- package/.aios-core/infrastructure/templates/github-workflows/README.md +109 -109
- package/.aios-core/infrastructure/tests/regression-suite-v2.md +621 -621
- package/.aios-core/infrastructure/tools/README.md +222 -222
- package/.aios-core/infrastructure/tools/cli/github-cli.yaml +200 -200
- package/.aios-core/infrastructure/tools/cli/railway-cli.yaml +260 -260
- package/.aios-core/infrastructure/tools/cli/supabase-cli.yaml +224 -224
- package/.aios-core/infrastructure/tools/local/ffmpeg.yaml +261 -261
- package/.aios-core/infrastructure/tools/mcp/21st-dev-magic.yaml +127 -127
- package/.aios-core/infrastructure/tools/mcp/browser.yaml +103 -103
- package/.aios-core/infrastructure/tools/mcp/clickup.yaml +534 -534
- package/.aios-core/infrastructure/tools/mcp/context7.yaml +78 -78
- package/.aios-core/infrastructure/tools/mcp/desktop-commander.yaml +180 -180
- package/.aios-core/infrastructure/tools/mcp/exa.yaml +103 -103
- package/.aios-core/infrastructure/tools/mcp/google-workspace.yaml +930 -930
- package/.aios-core/infrastructure/tools/mcp/n8n.yaml +551 -551
- package/.aios-core/infrastructure/tools/mcp/supabase.yaml +808 -808
- package/.aios-core/install-manifest.yaml +347 -347
- package/.aios-core/product/README.md +56 -56
- package/.aios-core/product/checklists/accessibility-wcag-checklist.md +80 -0
- package/.aios-core/product/checklists/architect-checklist.md +443 -443
- package/.aios-core/product/checklists/change-checklist.md +182 -182
- package/.aios-core/product/checklists/component-quality-checklist.md +74 -0
- package/.aios-core/product/checklists/database-design-checklist.md +119 -119
- package/.aios-core/product/checklists/dba-predeploy-checklist.md +97 -97
- package/.aios-core/product/checklists/dba-rollback-checklist.md +99 -99
- package/.aios-core/product/checklists/migration-readiness-checklist.md +75 -0
- package/.aios-core/product/checklists/pattern-audit-checklist.md +88 -0
- package/.aios-core/product/checklists/pm-checklist.md +375 -375
- package/.aios-core/product/checklists/po-master-checklist.md +441 -441
- package/.aios-core/product/checklists/pre-push-checklist.md +108 -108
- package/.aios-core/product/checklists/release-checklist.md +122 -122
- package/.aios-core/product/checklists/story-dod-checklist.md +101 -101
- package/.aios-core/product/checklists/story-draft-checklist.md +215 -215
- package/.aios-core/product/data/atomic-design-principles.md +108 -0
- package/.aios-core/product/data/brainstorming-techniques.md +36 -36
- package/.aios-core/product/data/consolidation-algorithms.md +142 -0
- package/.aios-core/product/data/database-best-practices.md +182 -0
- package/.aios-core/product/data/design-token-best-practices.md +107 -0
- package/.aios-core/product/data/elicitation-methods.md +134 -134
- package/.aios-core/product/data/integration-patterns.md +207 -0
- package/.aios-core/product/data/migration-safety-guide.md +329 -0
- package/.aios-core/product/data/mode-selection-best-practices.md +471 -471
- package/.aios-core/product/data/postgres-tuning-guide.md +300 -0
- package/.aios-core/product/data/rls-security-patterns.md +333 -0
- package/.aios-core/product/data/roi-calculation-guide.md +142 -0
- package/.aios-core/product/data/supabase-patterns.md +330 -0
- package/.aios-core/product/data/test-levels-framework.md +148 -148
- package/.aios-core/product/data/test-priorities-matrix.md +174 -174
- package/.aios-core/product/data/wcag-compliance-guide.md +267 -0
- package/.aios-core/product/templates/1mcp-config.yaml +225 -225
- package/.aios-core/product/templates/activation-instructions-inline-greeting.yaml +63 -63
- package/.aios-core/product/templates/activation-instructions-template.md +258 -258
- package/.aios-core/product/templates/agent-template.yaml +120 -120
- package/.aios-core/product/templates/architecture-tmpl.yaml +650 -650
- package/.aios-core/product/templates/brainstorming-output-tmpl.yaml +155 -155
- package/.aios-core/product/templates/brownfield-architecture-tmpl.yaml +475 -475
- package/.aios-core/product/templates/brownfield-prd-tmpl.yaml +279 -279
- package/.aios-core/product/templates/changelog-template.md +134 -134
- package/.aios-core/product/templates/command-rationalization-matrix.md +152 -152
- package/.aios-core/product/templates/competitor-analysis-tmpl.yaml +292 -292
- package/.aios-core/product/templates/design-story-tmpl.yaml +587 -587
- package/.aios-core/product/templates/ds-artifact-analysis.md +70 -70
- package/.aios-core/product/templates/front-end-architecture-tmpl.yaml +205 -205
- package/.aios-core/product/templates/front-end-spec-tmpl.yaml +348 -348
- package/.aios-core/product/templates/fullstack-architecture-tmpl.yaml +804 -804
- package/.aios-core/product/templates/github-pr-template.md +67 -67
- package/.aios-core/product/templates/gordon-mcp.yaml +140 -140
- package/.aios-core/product/templates/ide-rules/antigravity-rules.md +115 -115
- package/.aios-core/product/templates/ide-rules/claude-rules.md +221 -221
- package/.aios-core/product/templates/ide-rules/cline-rules.md +84 -84
- package/.aios-core/product/templates/ide-rules/copilot-rules.md +92 -92
- package/.aios-core/product/templates/ide-rules/cursor-rules.md +115 -115
- package/.aios-core/product/templates/ide-rules/gemini-rules.md +85 -85
- package/.aios-core/product/templates/ide-rules/roo-rules.md +86 -86
- package/.aios-core/product/templates/ide-rules/trae-rules.md +104 -104
- package/.aios-core/product/templates/ide-rules/windsurf-rules.md +80 -80
- package/.aios-core/product/templates/index-strategy-tmpl.yaml +53 -53
- package/.aios-core/product/templates/market-research-tmpl.yaml +251 -251
- package/.aios-core/product/templates/mcp-workflow.js +271 -271
- package/.aios-core/product/templates/migration-plan-tmpl.yaml +1022 -1022
- package/.aios-core/product/templates/migration-strategy-tmpl.md +524 -524
- package/.aios-core/product/templates/personalized-agent-template.md +258 -258
- package/.aios-core/product/templates/personalized-checklist-template.md +340 -340
- package/.aios-core/product/templates/personalized-task-template-v2.md +905 -905
- package/.aios-core/product/templates/personalized-task-template.md +344 -344
- package/.aios-core/product/templates/personalized-template-file.yaml +322 -322
- package/.aios-core/product/templates/personalized-workflow-template.yaml +460 -460
- package/.aios-core/product/templates/prd-tmpl.yaml +201 -201
- package/.aios-core/product/templates/project-brief-tmpl.yaml +220 -220
- package/.aios-core/product/templates/qa-gate-tmpl.yaml +240 -240
- package/.aios-core/product/templates/rls-policies-tmpl.yaml +1203 -1203
- package/.aios-core/product/templates/schema-design-tmpl.yaml +428 -428
- package/.aios-core/product/templates/state-persistence-tmpl.yaml +219 -219
- package/.aios-core/product/templates/story-tmpl.yaml +331 -331
- package/.aios-core/product/templates/task-execution-report.md +495 -495
- package/.aios-core/product/templates/task-template.md +122 -122
- package/.aios-core/product/templates/token-exports-tailwind-tmpl.js +395 -395
- package/.aios-core/product/templates/tokens-schema-tmpl.yaml +305 -305
- package/.aios-core/product/templates/workflow-template.yaml +133 -133
- package/.aios-core/scripts/README.md +354 -354
- package/.aios-core/scripts/aios-doc-template.md +325 -325
- package/.aios-core/scripts/elicitation-engine.js +1 -1
- package/.aios-core/scripts/test-template-system.js +1 -1
- package/.aios-core/scripts/workflow-management.md +69 -69
- package/.aios-core/user-guide.md +1413 -1413
- package/.aios-core/working-in-the-brownfield.md +361 -361
- package/LICENSE +1 -1
- package/README.md +702 -703
- package/bin/aios-init-old.js +3 -3
- package/bin/aios-init-v4.js +1 -1
- package/bin/aios-init.backup-v1.1.4.js +1 -1
- package/bin/aios-init.js +3 -3
- package/bin/aios.js +279 -279
- package/bin/utils/install-errors.js +339 -339
- package/bin/utils/install-transaction.js +445 -445
- package/index.d.ts +18 -18
- package/index.esm.js +20 -20
- package/index.js +6 -6
- package/package.json +8 -10
- package/packages/installer/src/config/templates/env-template.js +27 -4
- package/packages/installer/src/detection/detect-project-type.js +81 -81
- package/packages/installer/tests/integration/wizard-detection.test.js +8 -6
- package/packages/installer/tests/unit/env-template.test.js +8 -8
- package/src/config/ide-configs.js +1 -1
- package/src/wizard/feedback.js +2 -2
- package/src/wizard/index.js +1 -1
- package/src/wizard/validation/report-generator.js +1 -1
- package/src/wizard/validation/troubleshooting-system.js +13 -13
- package/.aios-core/infrastructure/scripts/_archived/final-todo-count.js +0 -122
- package/.aios-core/infrastructure/scripts/_archived/fix-yaml-formatting.js +0 -89
- package/.aios-core/infrastructure/scripts/_archived/migration-generator.js +0 -780
- package/.aios-core/infrastructure/scripts/_archived/migration-path-generator.js +0 -950
- package/.aios-core/infrastructure/scripts/_archived/phase2-entrada-saida-errors.js +0 -425
- package/.aios-core/infrastructure/scripts/_archived/phase2-spot-check.js +0 -132
- package/.aios-core/infrastructure/scripts/_archived/phase3-tools-scripts-validation.js +0 -381
- package/.aios-core/infrastructure/scripts/_archived/phase4-metadata-performance.js +0 -203
- package/.aios-core/infrastructure/scripts/_archived/test-yaml-parsing.js +0 -24
- package/.aios-core/infrastructure/scripts/_archived/verify-yaml-fix.js +0 -51
- package/.aios-core/tasks/find-component.md.legacy +0 -391
- package/.aios-core/tasks/generate-commit-message.md.legacy +0 -426
- package/.aios-core/tasks/generate-migration.md.legacy +0 -382
- package/.aios-core/tasks/rollback-modification.md.legacy +0 -307
- package/.aios-core/tasks/update-tests.md.legacy +0 -283
|
@@ -1,613 +1,613 @@
|
|
|
1
|
-
# Task: Run SQL
|
|
2
|
-
|
|
3
|
-
**Purpose**: Execute SQL file or inline SQL with transaction safety and timing
|
|
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: dbRunSql()
|
|
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:** neo4j-driver
|
|
137
|
-
- **Purpose:** Neo4j database connection and query execution
|
|
138
|
-
- **Source:** npm: neo4j-driver
|
|
139
|
-
|
|
140
|
-
- **Tool:** query-validator
|
|
141
|
-
- **Purpose:** Cypher 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 Neo4j queries with error handling
|
|
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
|
-
- `sql` (string): Either a file path or inline SQL statement
|
|
214
|
-
|
|
215
|
-
---
|
|
216
|
-
|
|
217
|
-
## Process
|
|
218
|
-
|
|
219
|
-
### 1. Determine Input Type
|
|
220
|
-
|
|
221
|
-
Check if input is file or inline SQL:
|
|
222
|
-
|
|
223
|
-
```bash
|
|
224
|
-
if [ -f "{sql}" ]; then
|
|
225
|
-
echo "Mode: File"
|
|
226
|
-
SQL_FILE="{sql}"
|
|
227
|
-
SQL_MODE="file"
|
|
228
|
-
else
|
|
229
|
-
echo "Mode: Inline SQL"
|
|
230
|
-
SQL_MODE="inline"
|
|
231
|
-
SQL_CONTENT="{sql}"
|
|
232
|
-
fi
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
### 2. Preview SQL
|
|
236
|
-
|
|
237
|
-
Show what will be executed:
|
|
238
|
-
|
|
239
|
-
```bash
|
|
240
|
-
echo "=========================================="
|
|
241
|
-
echo "SQL TO BE EXECUTED:"
|
|
242
|
-
echo "=========================================="
|
|
243
|
-
|
|
244
|
-
if [ "$SQL_MODE" = "file" ]; then
|
|
245
|
-
cat "$SQL_FILE"
|
|
246
|
-
else
|
|
247
|
-
echo "$SQL_CONTENT"
|
|
248
|
-
fi
|
|
249
|
-
|
|
250
|
-
echo ""
|
|
251
|
-
echo "=========================================="
|
|
252
|
-
```
|
|
253
|
-
|
|
254
|
-
### 3. Safety Checks
|
|
255
|
-
|
|
256
|
-
Warn about dangerous operations:
|
|
257
|
-
|
|
258
|
-
```bash
|
|
259
|
-
# Check for destructive operations
|
|
260
|
-
DANGEROUS_PATTERNS="DROP TABLE|TRUNCATE|DELETE FROM.*WHERE.*1=1|UPDATE.*WHERE.*1=1"
|
|
261
|
-
|
|
262
|
-
if echo "$SQL_CONTENT" | grep -Eiq "$DANGEROUS_PATTERNS"; then
|
|
263
|
-
echo "⚠️ WARNING: Potentially destructive operation detected!"
|
|
264
|
-
echo ""
|
|
265
|
-
echo "Detected patterns:"
|
|
266
|
-
echo "$SQL_CONTENT" | grep -Ei "$DANGEROUS_PATTERNS"
|
|
267
|
-
echo ""
|
|
268
|
-
echo "Database: $SUPABASE_DB_URL (redacted)"
|
|
269
|
-
echo ""
|
|
270
|
-
echo "Continue? Type 'I UNDERSTAND THE RISKS' to proceed:"
|
|
271
|
-
read CONFIRM
|
|
272
|
-
[ "$CONFIRM" = "I UNDERSTAND THE RISKS" ] || { echo "Aborted"; exit 1; }
|
|
273
|
-
fi
|
|
274
|
-
```
|
|
275
|
-
|
|
276
|
-
### 4. Transaction Mode Selection
|
|
277
|
-
|
|
278
|
-
Ask user about transaction handling:
|
|
279
|
-
|
|
280
|
-
```
|
|
281
|
-
Transaction mode:
|
|
282
|
-
1. auto - Wrap in BEGIN/COMMIT (safe, rolls back on error)
|
|
283
|
-
2. manual - Execute as-is (file may have own transaction control)
|
|
284
|
-
3. read - Read-only transaction (safe for queries)
|
|
285
|
-
|
|
286
|
-
Select mode (1/2/3):
|
|
287
|
-
```
|
|
288
|
-
|
|
289
|
-
### 5. Execute SQL
|
|
290
|
-
|
|
291
|
-
Run with selected transaction mode and timing:
|
|
292
|
-
|
|
293
|
-
```bash
|
|
294
|
-
echo "Executing SQL..."
|
|
295
|
-
|
|
296
|
-
if [ "$TRANSACTION_MODE" = "auto" ]; then
|
|
297
|
-
# Wrapped transaction
|
|
298
|
-
(
|
|
299
|
-
echo "BEGIN;"
|
|
300
|
-
if [ "$SQL_MODE" = "file" ]; then
|
|
301
|
-
cat "$SQL_FILE"
|
|
302
|
-
else
|
|
303
|
-
echo "$SQL_CONTENT"
|
|
304
|
-
fi
|
|
305
|
-
echo "COMMIT;"
|
|
306
|
-
) | psql "$SUPABASE_DB_URL" \
|
|
307
|
-
-v ON_ERROR_STOP=1 \
|
|
308
|
-
--echo-errors \
|
|
309
|
-
2>&1 | tee /tmp/dbsage_sql_output.txt
|
|
310
|
-
|
|
311
|
-
elif [ "$TRANSACTION_MODE" = "read" ]; then
|
|
312
|
-
# Read-only transaction
|
|
313
|
-
(
|
|
314
|
-
echo "BEGIN TRANSACTION READ ONLY;"
|
|
315
|
-
if [ "$SQL_MODE" = "file" ]; then
|
|
316
|
-
cat "$SQL_FILE"
|
|
317
|
-
else
|
|
318
|
-
echo "$SQL_CONTENT"
|
|
319
|
-
fi
|
|
320
|
-
echo "COMMIT;"
|
|
321
|
-
) | psql "$SUPABASE_DB_URL" \
|
|
322
|
-
-v ON_ERROR_STOP=1 \
|
|
323
|
-
2>&1 | tee /tmp/dbsage_sql_output.txt
|
|
324
|
-
|
|
325
|
-
else
|
|
326
|
-
# Manual mode (no wrapper)
|
|
327
|
-
if [ "$SQL_MODE" = "file" ]; then
|
|
328
|
-
psql "$SUPABASE_DB_URL" \
|
|
329
|
-
-v ON_ERROR_STOP=1 \
|
|
330
|
-
-f "$SQL_FILE" \
|
|
331
|
-
2>&1 | tee /tmp/dbsage_sql_output.txt
|
|
332
|
-
else
|
|
333
|
-
psql "$SUPABASE_DB_URL" \
|
|
334
|
-
-v ON_ERROR_STOP=1 \
|
|
335
|
-
-c "$SQL_CONTENT" \
|
|
336
|
-
2>&1 | tee /tmp/dbsage_sql_output.txt
|
|
337
|
-
fi
|
|
338
|
-
fi
|
|
339
|
-
|
|
340
|
-
EXIT_CODE=$?
|
|
341
|
-
```
|
|
342
|
-
|
|
343
|
-
### 6. Check Results
|
|
344
|
-
|
|
345
|
-
Display execution summary:
|
|
346
|
-
|
|
347
|
-
```bash
|
|
348
|
-
echo ""
|
|
349
|
-
echo "=========================================="
|
|
350
|
-
echo "EXECUTION SUMMARY"
|
|
351
|
-
echo "=========================================="
|
|
352
|
-
|
|
353
|
-
if [ $EXIT_CODE -eq 0 ]; then
|
|
354
|
-
echo "✅ SUCCESS"
|
|
355
|
-
else
|
|
356
|
-
echo "❌ FAILED (Exit code: $EXIT_CODE)"
|
|
357
|
-
echo ""
|
|
358
|
-
echo "Error output saved to: /tmp/dbsage_sql_output.txt"
|
|
359
|
-
exit $EXIT_CODE
|
|
360
|
-
fi
|
|
361
|
-
|
|
362
|
-
# Count affected rows (if available in output)
|
|
363
|
-
ROWS_AFFECTED=$(grep -oP 'INSERT 0 \K\d+|UPDATE \K\d+|DELETE \K\d+' /tmp/dbsage_sql_output.txt | head -1)
|
|
364
|
-
if [ -n "$ROWS_AFFECTED" ]; then
|
|
365
|
-
echo "Rows affected: $ROWS_AFFECTED"
|
|
366
|
-
fi
|
|
367
|
-
|
|
368
|
-
# Execution time (if using \timing in psql)
|
|
369
|
-
EXEC_TIME=$(grep -oP 'Time: \K[\d.]+' /tmp/dbsage_sql_output.txt | tail -1)
|
|
370
|
-
if [ -n "$EXEC_TIME" ]; then
|
|
371
|
-
echo "Execution time: ${EXEC_TIME}ms"
|
|
372
|
-
fi
|
|
373
|
-
```
|
|
374
|
-
|
|
375
|
-
---
|
|
376
|
-
|
|
377
|
-
## Output
|
|
378
|
-
|
|
379
|
-
Display final summary:
|
|
380
|
-
|
|
381
|
-
```
|
|
382
|
-
✅ SQL EXECUTED SUCCESSFULLY
|
|
383
|
-
|
|
384
|
-
Mode: {file|inline}
|
|
385
|
-
Transaction: {auto|manual|read}
|
|
386
|
-
Rows affected: {count}
|
|
387
|
-
Duration: {time}ms
|
|
388
|
-
|
|
389
|
-
Output saved to: /tmp/dbsage_sql_output.txt
|
|
390
|
-
|
|
391
|
-
Next steps:
|
|
392
|
-
- Verify results in database
|
|
393
|
-
- Check for expected side effects
|
|
394
|
-
- Update application if schema changed
|
|
395
|
-
```
|
|
396
|
-
|
|
397
|
-
---
|
|
398
|
-
|
|
399
|
-
## Usage Examples
|
|
400
|
-
|
|
401
|
-
### Example 1: Run SQL File
|
|
402
|
-
|
|
403
|
-
```bash
|
|
404
|
-
*run-sql supabase/migrations/20240101_add_users.sql
|
|
405
|
-
```
|
|
406
|
-
|
|
407
|
-
### Example 2: Inline Query
|
|
408
|
-
|
|
409
|
-
```bash
|
|
410
|
-
*run-sql "SELECT COUNT(*) FROM users WHERE created_at > NOW() - INTERVAL '7 days'"
|
|
411
|
-
```
|
|
412
|
-
|
|
413
|
-
### Example 3: Multi-Line Inline
|
|
414
|
-
|
|
415
|
-
```bash
|
|
416
|
-
*run-sql "
|
|
417
|
-
UPDATE users
|
|
418
|
-
SET last_login = NOW()
|
|
419
|
-
WHERE id = 'user-123'
|
|
420
|
-
RETURNING *;
|
|
421
|
-
"
|
|
422
|
-
```
|
|
423
|
-
|
|
424
|
-
### Example 4: Complex Script
|
|
425
|
-
|
|
426
|
-
```bash
|
|
427
|
-
*run-sql "
|
|
428
|
-
DO $$
|
|
429
|
-
DECLARE
|
|
430
|
-
user_count INTEGER;
|
|
431
|
-
BEGIN
|
|
432
|
-
SELECT COUNT(*) INTO user_count FROM users;
|
|
433
|
-
RAISE NOTICE 'Total users: %', user_count;
|
|
434
|
-
END $$;
|
|
435
|
-
"
|
|
436
|
-
```
|
|
437
|
-
|
|
438
|
-
---
|
|
439
|
-
|
|
440
|
-
## Safety Features
|
|
441
|
-
|
|
442
|
-
### 1. Destructive Operation Detection
|
|
443
|
-
|
|
444
|
-
Automatically warns for:
|
|
445
|
-
- `DROP TABLE`
|
|
446
|
-
- `TRUNCATE`
|
|
447
|
-
- `DELETE FROM ... WHERE 1=1`
|
|
448
|
-
- `UPDATE ... WHERE 1=1`
|
|
449
|
-
|
|
450
|
-
### 2. Transaction Modes
|
|
451
|
-
|
|
452
|
-
**Auto Mode (Recommended):**
|
|
453
|
-
- Wraps SQL in BEGIN/COMMIT
|
|
454
|
-
- Automatic rollback on error
|
|
455
|
-
- Safe for modifications
|
|
456
|
-
|
|
457
|
-
**Manual Mode:**
|
|
458
|
-
- For files with own transaction control
|
|
459
|
-
- Use when script has multiple transactions
|
|
460
|
-
- More control, less safety
|
|
461
|
-
|
|
462
|
-
**Read Mode:**
|
|
463
|
-
- Read-only transaction
|
|
464
|
-
- Cannot modify data
|
|
465
|
-
- Safe for queries/exploration
|
|
466
|
-
|
|
467
|
-
### 3. Error Handling
|
|
468
|
-
|
|
469
|
-
- `ON_ERROR_STOP=1` stops on first error
|
|
470
|
-
- Transaction rolls back on error (auto mode)
|
|
471
|
-
- Full error output preserved
|
|
472
|
-
|
|
473
|
-
---
|
|
474
|
-
|
|
475
|
-
## Advanced Options
|
|
476
|
-
|
|
477
|
-
### Enable Timing
|
|
478
|
-
|
|
479
|
-
```bash
|
|
480
|
-
# Add timing to all queries
|
|
481
|
-
psql "$SUPABASE_DB_URL" << 'EOF'
|
|
482
|
-
\timing on
|
|
483
|
-
{your_sql_here}
|
|
484
|
-
EOF
|
|
485
|
-
```
|
|
486
|
-
|
|
487
|
-
### Verbose Output
|
|
488
|
-
|
|
489
|
-
```bash
|
|
490
|
-
# Show all SQL commands
|
|
491
|
-
psql "$SUPABASE_DB_URL" --echo-all -f script.sql
|
|
492
|
-
```
|
|
493
|
-
|
|
494
|
-
### Save Output to File
|
|
495
|
-
|
|
496
|
-
```bash
|
|
497
|
-
# Redirect output
|
|
498
|
-
psql "$SUPABASE_DB_URL" -f script.sql > output.txt 2>&1
|
|
499
|
-
```
|
|
500
|
-
|
|
501
|
-
### Interactive Mode
|
|
502
|
-
|
|
503
|
-
```bash
|
|
504
|
-
# Drop into psql shell
|
|
505
|
-
psql "$SUPABASE_DB_URL"
|
|
506
|
-
```
|
|
507
|
-
|
|
508
|
-
---
|
|
509
|
-
|
|
510
|
-
## Common SQL Operations
|
|
511
|
-
|
|
512
|
-
### 1. Query Data
|
|
513
|
-
|
|
514
|
-
```sql
|
|
515
|
-
SELECT
|
|
516
|
-
id,
|
|
517
|
-
email,
|
|
518
|
-
created_at
|
|
519
|
-
FROM users
|
|
520
|
-
WHERE created_at > NOW() - INTERVAL '1 day'
|
|
521
|
-
ORDER BY created_at DESC
|
|
522
|
-
LIMIT 10;
|
|
523
|
-
```
|
|
524
|
-
|
|
525
|
-
### 2. Update Records
|
|
526
|
-
|
|
527
|
-
```sql
|
|
528
|
-
UPDATE users
|
|
529
|
-
SET
|
|
530
|
-
last_login = NOW(),
|
|
531
|
-
login_count = login_count + 1
|
|
532
|
-
WHERE id = 'user-123'
|
|
533
|
-
RETURNING *;
|
|
534
|
-
```
|
|
535
|
-
|
|
536
|
-
### 3. Bulk Operations
|
|
537
|
-
|
|
538
|
-
```sql
|
|
539
|
-
-- Update all inactive users
|
|
540
|
-
UPDATE users
|
|
541
|
-
SET status = 'archived'
|
|
542
|
-
WHERE last_login < NOW() - INTERVAL '1 year'
|
|
543
|
-
AND status = 'active';
|
|
544
|
-
```
|
|
545
|
-
|
|
546
|
-
### 4. Data Analysis
|
|
547
|
-
|
|
548
|
-
```sql
|
|
549
|
-
-- Aggregation query
|
|
550
|
-
SELECT
|
|
551
|
-
DATE_TRUNC('day', created_at) AS day,
|
|
552
|
-
COUNT(*) AS new_users,
|
|
553
|
-
COUNT(*) FILTER (WHERE email_verified) AS verified
|
|
554
|
-
FROM users
|
|
555
|
-
WHERE created_at > NOW() - INTERVAL '30 days'
|
|
556
|
-
GROUP BY day
|
|
557
|
-
ORDER BY day DESC;
|
|
558
|
-
```
|
|
559
|
-
|
|
560
|
-
---
|
|
561
|
-
|
|
562
|
-
## psql Meta-Commands
|
|
563
|
-
|
|
564
|
-
Useful commands when in psql interactive mode:
|
|
565
|
-
|
|
566
|
-
```
|
|
567
|
-
\dt -- List tables
|
|
568
|
-
\d table_name -- Describe table
|
|
569
|
-
\df -- List functions
|
|
570
|
-
\dv -- List views
|
|
571
|
-
\l -- List databases
|
|
572
|
-
\c database -- Connect to database
|
|
573
|
-
\timing on -- Enable query timing
|
|
574
|
-
\x on -- Expanded display mode
|
|
575
|
-
\q -- Quit
|
|
576
|
-
\? -- Help
|
|
577
|
-
```
|
|
578
|
-
|
|
579
|
-
---
|
|
580
|
-
|
|
581
|
-
## Error Handling
|
|
582
|
-
|
|
583
|
-
If execution fails:
|
|
584
|
-
|
|
585
|
-
1. Check error message in output
|
|
586
|
-
2. Review SQL syntax
|
|
587
|
-
3. Verify table/column names exist
|
|
588
|
-
4. Check permissions
|
|
589
|
-
5. For transaction errors, check constraints
|
|
590
|
-
|
|
591
|
-
Common errors:
|
|
592
|
-
|
|
593
|
-
- **Syntax error:** Review SQL syntax
|
|
594
|
-
- **Relation does not exist:** Table/view not found
|
|
595
|
-
- **Column does not exist:** Typo in column name
|
|
596
|
-
- **Permission denied:** Need appropriate role/permissions
|
|
597
|
-
|
|
598
|
-
---
|
|
599
|
-
|
|
600
|
-
## Security Notes
|
|
601
|
-
|
|
602
|
-
- **Never** run untrusted SQL
|
|
603
|
-
- Always review SQL before executing
|
|
604
|
-
- Use read-only mode for untrusted queries
|
|
605
|
-
- Be careful with dynamic SQL
|
|
606
|
-
- Consider using prepared statements for user input
|
|
607
|
-
|
|
608
|
-
---
|
|
609
|
-
|
|
610
|
-
## References
|
|
611
|
-
|
|
612
|
-
- [PostgreSQL psql Documentation](https://www.postgresql.org/docs/current/app-psql.html)
|
|
613
|
-
- [PostgreSQL SQL Commands](https://www.postgresql.org/docs/current/sql-commands.html)
|
|
1
|
+
# Task: Run SQL
|
|
2
|
+
|
|
3
|
+
**Purpose**: Execute SQL file or inline SQL with transaction safety and timing
|
|
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: dbRunSql()
|
|
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:** neo4j-driver
|
|
137
|
+
- **Purpose:** Neo4j database connection and query execution
|
|
138
|
+
- **Source:** npm: neo4j-driver
|
|
139
|
+
|
|
140
|
+
- **Tool:** query-validator
|
|
141
|
+
- **Purpose:** Cypher 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 Neo4j queries with error handling
|
|
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
|
+
- `sql` (string): Either a file path or inline SQL statement
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## Process
|
|
218
|
+
|
|
219
|
+
### 1. Determine Input Type
|
|
220
|
+
|
|
221
|
+
Check if input is file or inline SQL:
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
if [ -f "{sql}" ]; then
|
|
225
|
+
echo "Mode: File"
|
|
226
|
+
SQL_FILE="{sql}"
|
|
227
|
+
SQL_MODE="file"
|
|
228
|
+
else
|
|
229
|
+
echo "Mode: Inline SQL"
|
|
230
|
+
SQL_MODE="inline"
|
|
231
|
+
SQL_CONTENT="{sql}"
|
|
232
|
+
fi
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### 2. Preview SQL
|
|
236
|
+
|
|
237
|
+
Show what will be executed:
|
|
238
|
+
|
|
239
|
+
```bash
|
|
240
|
+
echo "=========================================="
|
|
241
|
+
echo "SQL TO BE EXECUTED:"
|
|
242
|
+
echo "=========================================="
|
|
243
|
+
|
|
244
|
+
if [ "$SQL_MODE" = "file" ]; then
|
|
245
|
+
cat "$SQL_FILE"
|
|
246
|
+
else
|
|
247
|
+
echo "$SQL_CONTENT"
|
|
248
|
+
fi
|
|
249
|
+
|
|
250
|
+
echo ""
|
|
251
|
+
echo "=========================================="
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
### 3. Safety Checks
|
|
255
|
+
|
|
256
|
+
Warn about dangerous operations:
|
|
257
|
+
|
|
258
|
+
```bash
|
|
259
|
+
# Check for destructive operations
|
|
260
|
+
DANGEROUS_PATTERNS="DROP TABLE|TRUNCATE|DELETE FROM.*WHERE.*1=1|UPDATE.*WHERE.*1=1"
|
|
261
|
+
|
|
262
|
+
if echo "$SQL_CONTENT" | grep -Eiq "$DANGEROUS_PATTERNS"; then
|
|
263
|
+
echo "⚠️ WARNING: Potentially destructive operation detected!"
|
|
264
|
+
echo ""
|
|
265
|
+
echo "Detected patterns:"
|
|
266
|
+
echo "$SQL_CONTENT" | grep -Ei "$DANGEROUS_PATTERNS"
|
|
267
|
+
echo ""
|
|
268
|
+
echo "Database: $SUPABASE_DB_URL (redacted)"
|
|
269
|
+
echo ""
|
|
270
|
+
echo "Continue? Type 'I UNDERSTAND THE RISKS' to proceed:"
|
|
271
|
+
read CONFIRM
|
|
272
|
+
[ "$CONFIRM" = "I UNDERSTAND THE RISKS" ] || { echo "Aborted"; exit 1; }
|
|
273
|
+
fi
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
### 4. Transaction Mode Selection
|
|
277
|
+
|
|
278
|
+
Ask user about transaction handling:
|
|
279
|
+
|
|
280
|
+
```
|
|
281
|
+
Transaction mode:
|
|
282
|
+
1. auto - Wrap in BEGIN/COMMIT (safe, rolls back on error)
|
|
283
|
+
2. manual - Execute as-is (file may have own transaction control)
|
|
284
|
+
3. read - Read-only transaction (safe for queries)
|
|
285
|
+
|
|
286
|
+
Select mode (1/2/3):
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
### 5. Execute SQL
|
|
290
|
+
|
|
291
|
+
Run with selected transaction mode and timing:
|
|
292
|
+
|
|
293
|
+
```bash
|
|
294
|
+
echo "Executing SQL..."
|
|
295
|
+
|
|
296
|
+
if [ "$TRANSACTION_MODE" = "auto" ]; then
|
|
297
|
+
# Wrapped transaction
|
|
298
|
+
(
|
|
299
|
+
echo "BEGIN;"
|
|
300
|
+
if [ "$SQL_MODE" = "file" ]; then
|
|
301
|
+
cat "$SQL_FILE"
|
|
302
|
+
else
|
|
303
|
+
echo "$SQL_CONTENT"
|
|
304
|
+
fi
|
|
305
|
+
echo "COMMIT;"
|
|
306
|
+
) | psql "$SUPABASE_DB_URL" \
|
|
307
|
+
-v ON_ERROR_STOP=1 \
|
|
308
|
+
--echo-errors \
|
|
309
|
+
2>&1 | tee /tmp/dbsage_sql_output.txt
|
|
310
|
+
|
|
311
|
+
elif [ "$TRANSACTION_MODE" = "read" ]; then
|
|
312
|
+
# Read-only transaction
|
|
313
|
+
(
|
|
314
|
+
echo "BEGIN TRANSACTION READ ONLY;"
|
|
315
|
+
if [ "$SQL_MODE" = "file" ]; then
|
|
316
|
+
cat "$SQL_FILE"
|
|
317
|
+
else
|
|
318
|
+
echo "$SQL_CONTENT"
|
|
319
|
+
fi
|
|
320
|
+
echo "COMMIT;"
|
|
321
|
+
) | psql "$SUPABASE_DB_URL" \
|
|
322
|
+
-v ON_ERROR_STOP=1 \
|
|
323
|
+
2>&1 | tee /tmp/dbsage_sql_output.txt
|
|
324
|
+
|
|
325
|
+
else
|
|
326
|
+
# Manual mode (no wrapper)
|
|
327
|
+
if [ "$SQL_MODE" = "file" ]; then
|
|
328
|
+
psql "$SUPABASE_DB_URL" \
|
|
329
|
+
-v ON_ERROR_STOP=1 \
|
|
330
|
+
-f "$SQL_FILE" \
|
|
331
|
+
2>&1 | tee /tmp/dbsage_sql_output.txt
|
|
332
|
+
else
|
|
333
|
+
psql "$SUPABASE_DB_URL" \
|
|
334
|
+
-v ON_ERROR_STOP=1 \
|
|
335
|
+
-c "$SQL_CONTENT" \
|
|
336
|
+
2>&1 | tee /tmp/dbsage_sql_output.txt
|
|
337
|
+
fi
|
|
338
|
+
fi
|
|
339
|
+
|
|
340
|
+
EXIT_CODE=$?
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
### 6. Check Results
|
|
344
|
+
|
|
345
|
+
Display execution summary:
|
|
346
|
+
|
|
347
|
+
```bash
|
|
348
|
+
echo ""
|
|
349
|
+
echo "=========================================="
|
|
350
|
+
echo "EXECUTION SUMMARY"
|
|
351
|
+
echo "=========================================="
|
|
352
|
+
|
|
353
|
+
if [ $EXIT_CODE -eq 0 ]; then
|
|
354
|
+
echo "✅ SUCCESS"
|
|
355
|
+
else
|
|
356
|
+
echo "❌ FAILED (Exit code: $EXIT_CODE)"
|
|
357
|
+
echo ""
|
|
358
|
+
echo "Error output saved to: /tmp/dbsage_sql_output.txt"
|
|
359
|
+
exit $EXIT_CODE
|
|
360
|
+
fi
|
|
361
|
+
|
|
362
|
+
# Count affected rows (if available in output)
|
|
363
|
+
ROWS_AFFECTED=$(grep -oP 'INSERT 0 \K\d+|UPDATE \K\d+|DELETE \K\d+' /tmp/dbsage_sql_output.txt | head -1)
|
|
364
|
+
if [ -n "$ROWS_AFFECTED" ]; then
|
|
365
|
+
echo "Rows affected: $ROWS_AFFECTED"
|
|
366
|
+
fi
|
|
367
|
+
|
|
368
|
+
# Execution time (if using \timing in psql)
|
|
369
|
+
EXEC_TIME=$(grep -oP 'Time: \K[\d.]+' /tmp/dbsage_sql_output.txt | tail -1)
|
|
370
|
+
if [ -n "$EXEC_TIME" ]; then
|
|
371
|
+
echo "Execution time: ${EXEC_TIME}ms"
|
|
372
|
+
fi
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
---
|
|
376
|
+
|
|
377
|
+
## Output
|
|
378
|
+
|
|
379
|
+
Display final summary:
|
|
380
|
+
|
|
381
|
+
```
|
|
382
|
+
✅ SQL EXECUTED SUCCESSFULLY
|
|
383
|
+
|
|
384
|
+
Mode: {file|inline}
|
|
385
|
+
Transaction: {auto|manual|read}
|
|
386
|
+
Rows affected: {count}
|
|
387
|
+
Duration: {time}ms
|
|
388
|
+
|
|
389
|
+
Output saved to: /tmp/dbsage_sql_output.txt
|
|
390
|
+
|
|
391
|
+
Next steps:
|
|
392
|
+
- Verify results in database
|
|
393
|
+
- Check for expected side effects
|
|
394
|
+
- Update application if schema changed
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
---
|
|
398
|
+
|
|
399
|
+
## Usage Examples
|
|
400
|
+
|
|
401
|
+
### Example 1: Run SQL File
|
|
402
|
+
|
|
403
|
+
```bash
|
|
404
|
+
*run-sql supabase/migrations/20240101_add_users.sql
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
### Example 2: Inline Query
|
|
408
|
+
|
|
409
|
+
```bash
|
|
410
|
+
*run-sql "SELECT COUNT(*) FROM users WHERE created_at > NOW() - INTERVAL '7 days'"
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
### Example 3: Multi-Line Inline
|
|
414
|
+
|
|
415
|
+
```bash
|
|
416
|
+
*run-sql "
|
|
417
|
+
UPDATE users
|
|
418
|
+
SET last_login = NOW()
|
|
419
|
+
WHERE id = 'user-123'
|
|
420
|
+
RETURNING *;
|
|
421
|
+
"
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
### Example 4: Complex Script
|
|
425
|
+
|
|
426
|
+
```bash
|
|
427
|
+
*run-sql "
|
|
428
|
+
DO $$
|
|
429
|
+
DECLARE
|
|
430
|
+
user_count INTEGER;
|
|
431
|
+
BEGIN
|
|
432
|
+
SELECT COUNT(*) INTO user_count FROM users;
|
|
433
|
+
RAISE NOTICE 'Total users: %', user_count;
|
|
434
|
+
END $$;
|
|
435
|
+
"
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
---
|
|
439
|
+
|
|
440
|
+
## Safety Features
|
|
441
|
+
|
|
442
|
+
### 1. Destructive Operation Detection
|
|
443
|
+
|
|
444
|
+
Automatically warns for:
|
|
445
|
+
- `DROP TABLE`
|
|
446
|
+
- `TRUNCATE`
|
|
447
|
+
- `DELETE FROM ... WHERE 1=1`
|
|
448
|
+
- `UPDATE ... WHERE 1=1`
|
|
449
|
+
|
|
450
|
+
### 2. Transaction Modes
|
|
451
|
+
|
|
452
|
+
**Auto Mode (Recommended):**
|
|
453
|
+
- Wraps SQL in BEGIN/COMMIT
|
|
454
|
+
- Automatic rollback on error
|
|
455
|
+
- Safe for modifications
|
|
456
|
+
|
|
457
|
+
**Manual Mode:**
|
|
458
|
+
- For files with own transaction control
|
|
459
|
+
- Use when script has multiple transactions
|
|
460
|
+
- More control, less safety
|
|
461
|
+
|
|
462
|
+
**Read Mode:**
|
|
463
|
+
- Read-only transaction
|
|
464
|
+
- Cannot modify data
|
|
465
|
+
- Safe for queries/exploration
|
|
466
|
+
|
|
467
|
+
### 3. Error Handling
|
|
468
|
+
|
|
469
|
+
- `ON_ERROR_STOP=1` stops on first error
|
|
470
|
+
- Transaction rolls back on error (auto mode)
|
|
471
|
+
- Full error output preserved
|
|
472
|
+
|
|
473
|
+
---
|
|
474
|
+
|
|
475
|
+
## Advanced Options
|
|
476
|
+
|
|
477
|
+
### Enable Timing
|
|
478
|
+
|
|
479
|
+
```bash
|
|
480
|
+
# Add timing to all queries
|
|
481
|
+
psql "$SUPABASE_DB_URL" << 'EOF'
|
|
482
|
+
\timing on
|
|
483
|
+
{your_sql_here}
|
|
484
|
+
EOF
|
|
485
|
+
```
|
|
486
|
+
|
|
487
|
+
### Verbose Output
|
|
488
|
+
|
|
489
|
+
```bash
|
|
490
|
+
# Show all SQL commands
|
|
491
|
+
psql "$SUPABASE_DB_URL" --echo-all -f script.sql
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
### Save Output to File
|
|
495
|
+
|
|
496
|
+
```bash
|
|
497
|
+
# Redirect output
|
|
498
|
+
psql "$SUPABASE_DB_URL" -f script.sql > output.txt 2>&1
|
|
499
|
+
```
|
|
500
|
+
|
|
501
|
+
### Interactive Mode
|
|
502
|
+
|
|
503
|
+
```bash
|
|
504
|
+
# Drop into psql shell
|
|
505
|
+
psql "$SUPABASE_DB_URL"
|
|
506
|
+
```
|
|
507
|
+
|
|
508
|
+
---
|
|
509
|
+
|
|
510
|
+
## Common SQL Operations
|
|
511
|
+
|
|
512
|
+
### 1. Query Data
|
|
513
|
+
|
|
514
|
+
```sql
|
|
515
|
+
SELECT
|
|
516
|
+
id,
|
|
517
|
+
email,
|
|
518
|
+
created_at
|
|
519
|
+
FROM users
|
|
520
|
+
WHERE created_at > NOW() - INTERVAL '1 day'
|
|
521
|
+
ORDER BY created_at DESC
|
|
522
|
+
LIMIT 10;
|
|
523
|
+
```
|
|
524
|
+
|
|
525
|
+
### 2. Update Records
|
|
526
|
+
|
|
527
|
+
```sql
|
|
528
|
+
UPDATE users
|
|
529
|
+
SET
|
|
530
|
+
last_login = NOW(),
|
|
531
|
+
login_count = login_count + 1
|
|
532
|
+
WHERE id = 'user-123'
|
|
533
|
+
RETURNING *;
|
|
534
|
+
```
|
|
535
|
+
|
|
536
|
+
### 3. Bulk Operations
|
|
537
|
+
|
|
538
|
+
```sql
|
|
539
|
+
-- Update all inactive users
|
|
540
|
+
UPDATE users
|
|
541
|
+
SET status = 'archived'
|
|
542
|
+
WHERE last_login < NOW() - INTERVAL '1 year'
|
|
543
|
+
AND status = 'active';
|
|
544
|
+
```
|
|
545
|
+
|
|
546
|
+
### 4. Data Analysis
|
|
547
|
+
|
|
548
|
+
```sql
|
|
549
|
+
-- Aggregation query
|
|
550
|
+
SELECT
|
|
551
|
+
DATE_TRUNC('day', created_at) AS day,
|
|
552
|
+
COUNT(*) AS new_users,
|
|
553
|
+
COUNT(*) FILTER (WHERE email_verified) AS verified
|
|
554
|
+
FROM users
|
|
555
|
+
WHERE created_at > NOW() - INTERVAL '30 days'
|
|
556
|
+
GROUP BY day
|
|
557
|
+
ORDER BY day DESC;
|
|
558
|
+
```
|
|
559
|
+
|
|
560
|
+
---
|
|
561
|
+
|
|
562
|
+
## psql Meta-Commands
|
|
563
|
+
|
|
564
|
+
Useful commands when in psql interactive mode:
|
|
565
|
+
|
|
566
|
+
```
|
|
567
|
+
\dt -- List tables
|
|
568
|
+
\d table_name -- Describe table
|
|
569
|
+
\df -- List functions
|
|
570
|
+
\dv -- List views
|
|
571
|
+
\l -- List databases
|
|
572
|
+
\c database -- Connect to database
|
|
573
|
+
\timing on -- Enable query timing
|
|
574
|
+
\x on -- Expanded display mode
|
|
575
|
+
\q -- Quit
|
|
576
|
+
\? -- Help
|
|
577
|
+
```
|
|
578
|
+
|
|
579
|
+
---
|
|
580
|
+
|
|
581
|
+
## Error Handling
|
|
582
|
+
|
|
583
|
+
If execution fails:
|
|
584
|
+
|
|
585
|
+
1. Check error message in output
|
|
586
|
+
2. Review SQL syntax
|
|
587
|
+
3. Verify table/column names exist
|
|
588
|
+
4. Check permissions
|
|
589
|
+
5. For transaction errors, check constraints
|
|
590
|
+
|
|
591
|
+
Common errors:
|
|
592
|
+
|
|
593
|
+
- **Syntax error:** Review SQL syntax
|
|
594
|
+
- **Relation does not exist:** Table/view not found
|
|
595
|
+
- **Column does not exist:** Typo in column name
|
|
596
|
+
- **Permission denied:** Need appropriate role/permissions
|
|
597
|
+
|
|
598
|
+
---
|
|
599
|
+
|
|
600
|
+
## Security Notes
|
|
601
|
+
|
|
602
|
+
- **Never** run untrusted SQL
|
|
603
|
+
- Always review SQL before executing
|
|
604
|
+
- Use read-only mode for untrusted queries
|
|
605
|
+
- Be careful with dynamic SQL
|
|
606
|
+
- Consider using prepared statements for user input
|
|
607
|
+
|
|
608
|
+
---
|
|
609
|
+
|
|
610
|
+
## References
|
|
611
|
+
|
|
612
|
+
- [PostgreSQL psql Documentation](https://www.postgresql.org/docs/current/app-psql.html)
|
|
613
|
+
- [PostgreSQL SQL Commands](https://www.postgresql.org/docs/current/sql-commands.html)
|