aios-core 2.1.6 → 2.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.aios-core/core/README.md +229 -229
- package/.aios-core/core/data/agent-config-requirements.yaml +368 -368
- package/.aios-core/core/data/aios-kb.md +923 -923
- package/.aios-core/core/data/workflow-patterns.yaml +267 -267
- package/.aios-core/core/docs/SHARD-TRANSLATION-GUIDE.md +335 -335
- package/.aios-core/core/docs/component-creation-guide.md +457 -457
- package/.aios-core/core/docs/session-update-pattern.md +307 -307
- package/.aios-core/core/docs/template-syntax.md +266 -266
- package/.aios-core/core/docs/troubleshooting-guide.md +624 -624
- package/.aios-core/core/elicitation/elicitation-engine.js +1 -1
- package/.aios-core/core/index.esm.js +42 -42
- package/.aios-core/core/index.js +1 -1
- package/.aios-core/core/migration/migration-config.yaml +83 -83
- package/.aios-core/core/migration/module-mapping.yaml +89 -89
- package/.aios-core/core/quality-gates/layer2-pr-automation.js +1 -1
- package/.aios-core/core/quality-gates/quality-gate-config.yaml +86 -86
- package/.aios-core/core/registry/README.md +179 -179
- package/.aios-core/core/utils/security-utils.js +1 -1
- package/.aios-core/core-config.yaml +391 -382
- package/.aios-core/data/agent-config-requirements.yaml +368 -368
- package/.aios-core/data/aios-kb.md +923 -923
- package/.aios-core/data/technical-preferences.md +3 -3
- package/.aios-core/data/workflow-patterns.yaml +267 -267
- package/.aios-core/development/README.md +142 -142
- package/.aios-core/development/agent-teams/team-all.yaml +15 -15
- package/.aios-core/development/agent-teams/team-fullstack.yaml +18 -18
- package/.aios-core/development/agent-teams/team-ide-minimal.yaml +10 -10
- package/.aios-core/development/agent-teams/team-no-ui.yaml +13 -13
- package/.aios-core/development/agent-teams/team-qa-focused.yaml +155 -155
- package/.aios-core/development/agents/aios-master.md +339 -339
- package/.aios-core/development/agents/analyst.md +195 -195
- package/.aios-core/development/agents/architect.md +359 -359
- package/.aios-core/development/agents/data-engineer.md +468 -468
- package/.aios-core/development/agents/dev.md +390 -390
- package/.aios-core/development/agents/devops.md +398 -398
- package/.aios-core/development/agents/pm.md +198 -198
- package/.aios-core/development/agents/po.md +256 -256
- package/.aios-core/development/agents/qa.md +312 -312
- package/.aios-core/development/agents/sm.md +220 -220
- package/.aios-core/development/agents/ux-design-expert.md +451 -451
- package/.aios-core/development/scripts/greeting-config-cli.js +85 -85
- package/.aios-core/development/tasks/add-mcp.md +319 -319
- package/.aios-core/development/tasks/advanced-elicitation.md +318 -318
- package/.aios-core/development/tasks/analyst-facilitate-brainstorming.md +341 -341
- package/.aios-core/development/tasks/analyze-framework.md +696 -696
- package/.aios-core/development/tasks/analyze-performance.md +637 -637
- package/.aios-core/development/tasks/apply-qa-fixes.md +340 -340
- package/.aios-core/development/tasks/architect-analyze-impact.md +826 -826
- package/.aios-core/development/tasks/audit-codebase.md +429 -429
- package/.aios-core/development/tasks/audit-tailwind-config.md +270 -270
- package/.aios-core/development/tasks/audit-utilities.md +358 -358
- package/.aios-core/development/tasks/bootstrap-shadcn-library.md +286 -286
- package/.aios-core/development/tasks/brownfield-create-epic.md +485 -485
- package/.aios-core/development/tasks/brownfield-create-story.md +356 -356
- package/.aios-core/development/tasks/build-component.md +478 -478
- package/.aios-core/development/tasks/calculate-roi.md +455 -455
- package/.aios-core/development/tasks/ci-cd-configuration.md +764 -764
- package/.aios-core/development/tasks/cleanup-utilities.md +670 -670
- package/.aios-core/development/tasks/collaborative-edit.md +1108 -1108
- package/.aios-core/development/tasks/compose-molecule.md +284 -284
- package/.aios-core/development/tasks/consolidate-patterns.md +414 -414
- package/.aios-core/development/tasks/correct-course.md +279 -279
- package/.aios-core/development/tasks/create-agent.md +321 -321
- package/.aios-core/development/tasks/create-brownfield-story.md +726 -726
- package/.aios-core/development/tasks/create-deep-research-prompt.md +498 -498
- package/.aios-core/development/tasks/create-doc.md +316 -316
- package/.aios-core/development/tasks/create-next-story.md +774 -774
- package/.aios-core/development/tasks/create-suite.md +283 -283
- package/.aios-core/development/tasks/create-task.md +371 -371
- package/.aios-core/development/tasks/create-workflow.md +370 -370
- package/.aios-core/development/tasks/db-analyze-hotpaths.md +572 -572
- package/.aios-core/development/tasks/db-apply-migration.md +381 -381
- package/.aios-core/development/tasks/db-bootstrap.md +642 -642
- package/.aios-core/development/tasks/db-domain-modeling.md +693 -693
- package/.aios-core/development/tasks/db-dry-run.md +293 -293
- package/.aios-core/development/tasks/db-env-check.md +260 -260
- package/.aios-core/development/tasks/db-expansion-pack-integration.md +663 -663
- package/.aios-core/development/tasks/db-explain.md +631 -631
- package/.aios-core/development/tasks/db-impersonate.md +495 -495
- package/.aios-core/development/tasks/db-load-csv.md +593 -593
- package/.aios-core/development/tasks/db-policy-apply.md +653 -653
- package/.aios-core/development/tasks/db-rls-audit.md +411 -411
- package/.aios-core/development/tasks/db-rollback.md +739 -739
- package/.aios-core/development/tasks/db-run-sql.md +613 -613
- package/.aios-core/development/tasks/db-schema-audit.md +1011 -1011
- package/.aios-core/development/tasks/db-seed.md +390 -390
- package/.aios-core/development/tasks/db-smoke-test.md +351 -351
- package/.aios-core/development/tasks/db-snapshot.md +569 -569
- package/.aios-core/development/tasks/db-supabase-setup.md +712 -712
- package/.aios-core/development/tasks/db-verify-order.md +515 -515
- package/.aios-core/development/tasks/deprecate-component.md +956 -956
- package/.aios-core/development/tasks/dev-apply-qa-fixes.md +318 -318
- package/.aios-core/development/tasks/dev-backlog-debt.md +469 -469
- package/.aios-core/development/tasks/dev-develop-story.md +846 -846
- package/.aios-core/development/tasks/dev-improve-code-quality.md +872 -872
- package/.aios-core/development/tasks/dev-optimize-performance.md +1033 -1033
- package/.aios-core/development/tasks/dev-suggest-refactoring.md +870 -870
- package/.aios-core/development/tasks/dev-validate-next-story.md +348 -348
- package/.aios-core/development/tasks/document-project.md +552 -552
- package/.aios-core/development/tasks/environment-bootstrap.md +1311 -1311
- package/.aios-core/development/tasks/execute-checklist.md +301 -301
- package/.aios-core/development/tasks/export-design-tokens-dtcg.md +274 -274
- package/.aios-core/development/tasks/extend-pattern.md +269 -269
- package/.aios-core/development/tasks/extract-tokens.md +467 -467
- package/.aios-core/development/tasks/facilitate-brainstorming-session.md +518 -518
- package/.aios-core/development/tasks/generate-ai-frontend-prompt.md +260 -260
- package/.aios-core/development/tasks/generate-documentation.md +284 -284
- package/.aios-core/development/tasks/generate-migration-strategy.md +522 -522
- package/.aios-core/development/tasks/generate-shock-report.md +501 -501
- package/.aios-core/development/tasks/github-devops-github-pr-automation.md +427 -427
- package/.aios-core/development/tasks/github-devops-pre-push-quality-gate.md +733 -733
- package/.aios-core/development/tasks/github-devops-repository-cleanup.md +374 -374
- package/.aios-core/development/tasks/github-devops-version-management.md +483 -483
- package/.aios-core/development/tasks/improve-self.md +822 -822
- package/.aios-core/development/tasks/index-docs.md +387 -387
- package/.aios-core/development/tasks/init-project-status.md +506 -506
- package/.aios-core/development/tasks/integrate-expansion-pack.md +314 -314
- package/.aios-core/development/tasks/kb-mode-interaction.md +283 -283
- package/.aios-core/development/tasks/learn-patterns.md +900 -900
- package/.aios-core/development/tasks/mcp-workflow.md +437 -437
- package/.aios-core/development/tasks/modify-agent.md +381 -381
- package/.aios-core/development/tasks/modify-task.md +424 -424
- package/.aios-core/development/tasks/modify-workflow.md +465 -465
- package/.aios-core/development/tasks/po-backlog-add.md +370 -370
- package/.aios-core/development/tasks/po-manage-story-backlog.md +523 -523
- package/.aios-core/development/tasks/po-pull-story-from-clickup.md +540 -540
- package/.aios-core/development/tasks/po-pull-story.md +316 -316
- package/.aios-core/development/tasks/po-stories-index.md +351 -351
- package/.aios-core/development/tasks/po-sync-story-to-clickup.md +457 -457
- package/.aios-core/development/tasks/po-sync-story.md +303 -303
- package/.aios-core/development/tasks/pr-automation.md +701 -701
- package/.aios-core/development/tasks/propose-modification.md +842 -842
- package/.aios-core/development/tasks/qa-backlog-add-followup.md +425 -425
- package/.aios-core/development/tasks/qa-gate.md +373 -373
- package/.aios-core/development/tasks/qa-generate-tests.md +1174 -1174
- package/.aios-core/development/tasks/qa-nfr-assess.md +557 -557
- package/.aios-core/development/tasks/qa-review-proposal.md +1157 -1157
- package/.aios-core/development/tasks/qa-review-story.md +682 -682
- package/.aios-core/development/tasks/qa-risk-profile.md +566 -566
- package/.aios-core/development/tasks/qa-run-tests.md +277 -277
- package/.aios-core/development/tasks/qa-test-design.md +387 -387
- package/.aios-core/development/tasks/qa-trace-requirements.md +476 -476
- package/.aios-core/development/tasks/release-management.md +723 -723
- package/.aios-core/development/tasks/security-audit.md +554 -554
- package/.aios-core/development/tasks/security-scan.md +790 -790
- package/.aios-core/development/tasks/setup-database.md +741 -741
- package/.aios-core/development/tasks/setup-design-system.md +462 -462
- package/.aios-core/development/tasks/setup-github.md +874 -874
- package/.aios-core/development/tasks/setup-llm-routing.md +1 -1
- package/.aios-core/development/tasks/setup-mcp-docker.md +584 -584
- package/.aios-core/development/tasks/setup-project-docs.md +1 -1
- package/.aios-core/development/tasks/shard-doc.md +537 -537
- package/.aios-core/development/tasks/sm-create-next-story.md +480 -480
- package/.aios-core/development/tasks/sync-documentation.md +864 -864
- package/.aios-core/development/tasks/tailwind-upgrade.md +294 -294
- package/.aios-core/development/tasks/test-as-user.md +621 -621
- package/.aios-core/development/tasks/test-validation-task.md +171 -171
- package/.aios-core/development/tasks/undo-last.md +346 -346
- package/.aios-core/development/tasks/update-manifest.md +409 -409
- package/.aios-core/development/tasks/ux-create-wireframe.md +617 -617
- package/.aios-core/development/tasks/ux-ds-scan-artifact.md +672 -672
- package/.aios-core/development/tasks/ux-user-research.md +559 -559
- package/.aios-core/development/tasks/validate-next-story.md +422 -422
- package/.aios-core/development/workflows/README.md +83 -83
- package/.aios-core/development/workflows/brownfield-fullstack.yaml +297 -297
- package/.aios-core/development/workflows/brownfield-service.yaml +187 -187
- package/.aios-core/development/workflows/brownfield-ui.yaml +197 -197
- package/.aios-core/development/workflows/greenfield-fullstack.yaml +333 -333
- package/.aios-core/development/workflows/greenfield-service.yaml +206 -206
- package/.aios-core/development/workflows/greenfield-ui.yaml +235 -235
- package/.aios-core/docs/SHARD-TRANSLATION-GUIDE.md +335 -335
- package/.aios-core/docs/component-creation-guide.md +457 -457
- package/.aios-core/docs/session-update-pattern.md +307 -307
- package/.aios-core/docs/standards/AGENT-PERSONALIZATION-STANDARD-V1.md +572 -572
- package/.aios-core/docs/standards/AIOS-COLOR-PALETTE-QUICK-REFERENCE.md +185 -185
- package/.aios-core/docs/standards/AIOS-COLOR-PALETTE-V2.1.md +354 -354
- package/.aios-core/docs/standards/AIOS-FRAMEWORK-MASTER.md +1963 -1963
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1-COMPLETE.md +821 -821
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1-SUMMARY.md +1190 -1190
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1.md +439 -439
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.2-SUMMARY.md +1339 -1339
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO.md +5398 -5398
- package/.aios-core/docs/standards/EXECUTOR-DECISION-TREE.md +697 -697
- package/.aios-core/docs/standards/OPEN-SOURCE-VS-SERVICE-DIFFERENCES.md +511 -511
- package/.aios-core/docs/standards/QUALITY-GATES-SPECIFICATION.md +556 -556
- package/.aios-core/docs/standards/STANDARDS-INDEX.md +210 -210
- package/.aios-core/docs/standards/STORY-TEMPLATE-V2-SPECIFICATION.md +550 -550
- package/.aios-core/docs/standards/TASK-FORMAT-SPECIFICATION-V1.md +1414 -1414
- package/.aios-core/docs/standards/V3-ARCHITECTURAL-DECISIONS.md +523 -523
- package/.aios-core/docs/template-syntax.md +266 -266
- package/.aios-core/docs/troubleshooting-guide.md +624 -624
- package/.aios-core/index.esm.js +15 -15
- package/.aios-core/index.js +1 -1
- package/.aios-core/infrastructure/README.md +126 -126
- package/.aios-core/infrastructure/integrations/pm-adapters/README.md +59 -59
- package/.aios-core/infrastructure/scripts/approval-workflow.js +1 -1
- package/.aios-core/infrastructure/scripts/batch-creator.js +1 -1
- package/.aios-core/infrastructure/scripts/component-generator.js +3 -3
- package/.aios-core/infrastructure/scripts/component-metadata.js +1 -1
- package/.aios-core/infrastructure/scripts/component-search.js +1 -1
- package/.aios-core/infrastructure/scripts/coverage-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/dependency-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/dependency-impact-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/framework-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/improvement-engine.js +1 -1
- package/.aios-core/infrastructure/scripts/llm-routing/install-llm-routing.js +26 -13
- package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-free-tracked.cmd +127 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-free-tracked.sh +108 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-proxy.cmd +71 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-proxy.sh +65 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-usage.cmd +51 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-usage.sh +16 -0
- package/.aios-core/infrastructure/scripts/llm-routing/usage-tracker/index.js +549 -0
- package/.aios-core/infrastructure/scripts/modification-risk-assessment.js +1 -1
- package/.aios-core/infrastructure/scripts/performance-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/pm-adapter.js +134 -134
- package/.aios-core/infrastructure/scripts/repository-detector.js +3 -3
- package/.aios-core/infrastructure/scripts/template-engine.js +1 -1
- package/.aios-core/infrastructure/scripts/template-validator.js +1 -1
- package/.aios-core/infrastructure/scripts/test-generator.js +1 -1
- package/.aios-core/infrastructure/scripts/test-quality-assessment.js +1 -1
- package/.aios-core/infrastructure/scripts/transaction-manager.js +1 -1
- package/.aios-core/infrastructure/scripts/usage-analytics.js +1 -1
- package/.aios-core/infrastructure/scripts/visual-impact-generator.js +2 -2
- package/.aios-core/infrastructure/templates/github-workflows/README.md +109 -109
- package/.aios-core/infrastructure/tests/regression-suite-v2.md +621 -621
- package/.aios-core/infrastructure/tools/README.md +222 -222
- package/.aios-core/infrastructure/tools/cli/github-cli.yaml +200 -200
- package/.aios-core/infrastructure/tools/cli/railway-cli.yaml +260 -260
- package/.aios-core/infrastructure/tools/cli/supabase-cli.yaml +224 -224
- package/.aios-core/infrastructure/tools/local/ffmpeg.yaml +261 -261
- package/.aios-core/infrastructure/tools/mcp/21st-dev-magic.yaml +127 -127
- package/.aios-core/infrastructure/tools/mcp/browser.yaml +103 -103
- package/.aios-core/infrastructure/tools/mcp/clickup.yaml +534 -534
- package/.aios-core/infrastructure/tools/mcp/context7.yaml +78 -78
- package/.aios-core/infrastructure/tools/mcp/desktop-commander.yaml +180 -180
- package/.aios-core/infrastructure/tools/mcp/exa.yaml +103 -103
- package/.aios-core/infrastructure/tools/mcp/google-workspace.yaml +930 -930
- package/.aios-core/infrastructure/tools/mcp/n8n.yaml +551 -551
- package/.aios-core/infrastructure/tools/mcp/supabase.yaml +808 -808
- package/.aios-core/install-manifest.yaml +347 -347
- package/.aios-core/product/README.md +56 -56
- package/.aios-core/product/checklists/accessibility-wcag-checklist.md +80 -0
- package/.aios-core/product/checklists/architect-checklist.md +443 -443
- package/.aios-core/product/checklists/change-checklist.md +182 -182
- package/.aios-core/product/checklists/component-quality-checklist.md +74 -0
- package/.aios-core/product/checklists/database-design-checklist.md +119 -119
- package/.aios-core/product/checklists/dba-predeploy-checklist.md +97 -97
- package/.aios-core/product/checklists/dba-rollback-checklist.md +99 -99
- package/.aios-core/product/checklists/migration-readiness-checklist.md +75 -0
- package/.aios-core/product/checklists/pattern-audit-checklist.md +88 -0
- package/.aios-core/product/checklists/pm-checklist.md +375 -375
- package/.aios-core/product/checklists/po-master-checklist.md +441 -441
- package/.aios-core/product/checklists/pre-push-checklist.md +108 -108
- package/.aios-core/product/checklists/release-checklist.md +122 -122
- package/.aios-core/product/checklists/story-dod-checklist.md +101 -101
- package/.aios-core/product/checklists/story-draft-checklist.md +215 -215
- package/.aios-core/product/data/atomic-design-principles.md +108 -0
- package/.aios-core/product/data/brainstorming-techniques.md +36 -36
- package/.aios-core/product/data/consolidation-algorithms.md +142 -0
- package/.aios-core/product/data/database-best-practices.md +182 -0
- package/.aios-core/product/data/design-token-best-practices.md +107 -0
- package/.aios-core/product/data/elicitation-methods.md +134 -134
- package/.aios-core/product/data/integration-patterns.md +207 -0
- package/.aios-core/product/data/migration-safety-guide.md +329 -0
- package/.aios-core/product/data/mode-selection-best-practices.md +471 -471
- package/.aios-core/product/data/postgres-tuning-guide.md +300 -0
- package/.aios-core/product/data/rls-security-patterns.md +333 -0
- package/.aios-core/product/data/roi-calculation-guide.md +142 -0
- package/.aios-core/product/data/supabase-patterns.md +330 -0
- package/.aios-core/product/data/test-levels-framework.md +148 -148
- package/.aios-core/product/data/test-priorities-matrix.md +174 -174
- package/.aios-core/product/data/wcag-compliance-guide.md +267 -0
- package/.aios-core/product/templates/1mcp-config.yaml +225 -225
- package/.aios-core/product/templates/activation-instructions-inline-greeting.yaml +63 -63
- package/.aios-core/product/templates/activation-instructions-template.md +258 -258
- package/.aios-core/product/templates/agent-template.yaml +120 -120
- package/.aios-core/product/templates/architecture-tmpl.yaml +650 -650
- package/.aios-core/product/templates/brainstorming-output-tmpl.yaml +155 -155
- package/.aios-core/product/templates/brownfield-architecture-tmpl.yaml +475 -475
- package/.aios-core/product/templates/brownfield-prd-tmpl.yaml +279 -279
- package/.aios-core/product/templates/changelog-template.md +134 -134
- package/.aios-core/product/templates/command-rationalization-matrix.md +152 -152
- package/.aios-core/product/templates/competitor-analysis-tmpl.yaml +292 -292
- package/.aios-core/product/templates/design-story-tmpl.yaml +587 -587
- package/.aios-core/product/templates/ds-artifact-analysis.md +70 -70
- package/.aios-core/product/templates/front-end-architecture-tmpl.yaml +205 -205
- package/.aios-core/product/templates/front-end-spec-tmpl.yaml +348 -348
- package/.aios-core/product/templates/fullstack-architecture-tmpl.yaml +804 -804
- package/.aios-core/product/templates/github-pr-template.md +67 -67
- package/.aios-core/product/templates/gordon-mcp.yaml +140 -140
- package/.aios-core/product/templates/ide-rules/antigravity-rules.md +115 -115
- package/.aios-core/product/templates/ide-rules/claude-rules.md +221 -221
- package/.aios-core/product/templates/ide-rules/cline-rules.md +84 -84
- package/.aios-core/product/templates/ide-rules/copilot-rules.md +92 -92
- package/.aios-core/product/templates/ide-rules/cursor-rules.md +115 -115
- package/.aios-core/product/templates/ide-rules/gemini-rules.md +85 -85
- package/.aios-core/product/templates/ide-rules/roo-rules.md +86 -86
- package/.aios-core/product/templates/ide-rules/trae-rules.md +104 -104
- package/.aios-core/product/templates/ide-rules/windsurf-rules.md +80 -80
- package/.aios-core/product/templates/index-strategy-tmpl.yaml +53 -53
- package/.aios-core/product/templates/market-research-tmpl.yaml +251 -251
- package/.aios-core/product/templates/mcp-workflow.js +271 -271
- package/.aios-core/product/templates/migration-plan-tmpl.yaml +1022 -1022
- package/.aios-core/product/templates/migration-strategy-tmpl.md +524 -524
- package/.aios-core/product/templates/personalized-agent-template.md +258 -258
- package/.aios-core/product/templates/personalized-checklist-template.md +340 -340
- package/.aios-core/product/templates/personalized-task-template-v2.md +905 -905
- package/.aios-core/product/templates/personalized-task-template.md +344 -344
- package/.aios-core/product/templates/personalized-template-file.yaml +322 -322
- package/.aios-core/product/templates/personalized-workflow-template.yaml +460 -460
- package/.aios-core/product/templates/prd-tmpl.yaml +201 -201
- package/.aios-core/product/templates/project-brief-tmpl.yaml +220 -220
- package/.aios-core/product/templates/qa-gate-tmpl.yaml +240 -240
- package/.aios-core/product/templates/rls-policies-tmpl.yaml +1203 -1203
- package/.aios-core/product/templates/schema-design-tmpl.yaml +428 -428
- package/.aios-core/product/templates/state-persistence-tmpl.yaml +219 -219
- package/.aios-core/product/templates/story-tmpl.yaml +331 -331
- package/.aios-core/product/templates/task-execution-report.md +495 -495
- package/.aios-core/product/templates/task-template.md +122 -122
- package/.aios-core/product/templates/token-exports-tailwind-tmpl.js +395 -395
- package/.aios-core/product/templates/tokens-schema-tmpl.yaml +305 -305
- package/.aios-core/product/templates/workflow-template.yaml +133 -133
- package/.aios-core/scripts/README.md +354 -354
- package/.aios-core/scripts/aios-doc-template.md +325 -325
- package/.aios-core/scripts/elicitation-engine.js +1 -1
- package/.aios-core/scripts/test-template-system.js +1 -1
- package/.aios-core/scripts/workflow-management.md +69 -69
- package/.aios-core/user-guide.md +1413 -1413
- package/.aios-core/working-in-the-brownfield.md +361 -361
- package/LICENSE +1 -1
- package/README.md +704 -703
- package/bin/aios-init-old.js +3 -3
- package/bin/aios-init-v4.js +1 -1
- package/bin/aios-init.backup-v1.1.4.js +1 -1
- package/bin/aios-init.js +3 -3
- package/bin/aios.js +279 -279
- package/bin/utils/install-errors.js +339 -339
- package/bin/utils/install-transaction.js +445 -445
- package/index.d.ts +18 -18
- package/index.esm.js +20 -20
- package/index.js +6 -6
- package/package.json +8 -11
- package/packages/installer/src/config/templates/env-template.js +27 -4
- package/packages/installer/src/detection/detect-project-type.js +81 -81
- package/packages/installer/tests/integration/wizard-detection.test.js +8 -6
- package/packages/installer/tests/unit/env-template.test.js +8 -8
- package/src/config/ide-configs.js +1 -1
- package/src/wizard/feedback.js +2 -2
- package/src/wizard/index.js +1 -1
- package/src/wizard/validation/report-generator.js +1 -1
- package/src/wizard/validation/troubleshooting-system.js +13 -13
- package/tools/diagnose-installation.js +266 -0
- package/tools/diagnose-npx-issue.ps1 +96 -0
- package/tools/quick-diagnose.cmd +85 -0
- package/tools/quick-diagnose.ps1 +117 -0
- package/.aios-core/infrastructure/scripts/_archived/final-todo-count.js +0 -122
- package/.aios-core/infrastructure/scripts/_archived/fix-yaml-formatting.js +0 -89
- package/.aios-core/infrastructure/scripts/_archived/migration-generator.js +0 -780
- package/.aios-core/infrastructure/scripts/_archived/migration-path-generator.js +0 -950
- package/.aios-core/infrastructure/scripts/_archived/phase2-entrada-saida-errors.js +0 -425
- package/.aios-core/infrastructure/scripts/_archived/phase2-spot-check.js +0 -132
- package/.aios-core/infrastructure/scripts/_archived/phase3-tools-scripts-validation.js +0 -381
- package/.aios-core/infrastructure/scripts/_archived/phase4-metadata-performance.js +0 -203
- package/.aios-core/infrastructure/scripts/_archived/test-yaml-parsing.js +0 -24
- package/.aios-core/infrastructure/scripts/_archived/verify-yaml-fix.js +0 -51
- package/.aios-core/tasks/find-component.md.legacy +0 -391
- package/.aios-core/tasks/generate-commit-message.md.legacy +0 -426
- package/.aios-core/tasks/generate-migration.md.legacy +0 -382
- package/.aios-core/tasks/rollback-modification.md.legacy +0 -307
- package/.aios-core/tasks/update-tests.md.legacy +0 -283
|
@@ -1,495 +1,495 @@
|
|
|
1
|
-
# Task: Impersonate User (RLS Testing)
|
|
2
|
-
|
|
3
|
-
**Purpose**: Set session claims to emulate authenticated user for RLS testing
|
|
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: dbImpersonate()
|
|
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
|
-
- `user_id` (uuid): User ID to impersonate
|
|
214
|
-
|
|
215
|
-
---
|
|
216
|
-
|
|
217
|
-
## Process
|
|
218
|
-
|
|
219
|
-
### 1. Confirm Impersonation
|
|
220
|
-
|
|
221
|
-
Ask user:
|
|
222
|
-
- User ID to impersonate: `{user_id}`
|
|
223
|
-
- Purpose of impersonation (testing what?)
|
|
224
|
-
- Queries you plan to run
|
|
225
|
-
|
|
226
|
-
**CRITICAL WARNING**: This is for testing only. Never use in production application code.
|
|
227
|
-
|
|
228
|
-
### 2. Set Session Claims
|
|
229
|
-
|
|
230
|
-
```bash
|
|
231
|
-
psql "$SUPABASE_DB_URL" -v ON_ERROR_STOP=1 <<SQL
|
|
232
|
-
-- Set JWT claims for current session
|
|
233
|
-
SELECT
|
|
234
|
-
set_config('request.jwt.claims',
|
|
235
|
-
jsonb_build_object(
|
|
236
|
-
'sub', '{user_id}',
|
|
237
|
-
'role', 'authenticated'
|
|
238
|
-
)::text,
|
|
239
|
-
true
|
|
240
|
-
) AS jwt_claims,
|
|
241
|
-
set_config('request.jwt.claim.sub', '{user_id}', true) AS sub,
|
|
242
|
-
set_config('role', 'authenticated', true) AS role;
|
|
243
|
-
|
|
244
|
-
-- Verify settings
|
|
245
|
-
SELECT
|
|
246
|
-
current_setting('request.jwt.claims', true) AS jwt_claims,
|
|
247
|
-
current_setting('request.jwt.claim.sub', true) AS user_id,
|
|
248
|
-
current_setting('role', true) AS role;
|
|
249
|
-
|
|
250
|
-
\echo ''
|
|
251
|
-
\echo '✓ Impersonating user: {user_id}'
|
|
252
|
-
\echo 'Run your test queries now.'
|
|
253
|
-
\echo 'To exit, close this session or run: RESET ALL;'
|
|
254
|
-
SQL
|
|
255
|
-
```
|
|
256
|
-
|
|
257
|
-
### 3. Interactive SQL Session
|
|
258
|
-
|
|
259
|
-
Open interactive psql for testing:
|
|
260
|
-
|
|
261
|
-
```bash
|
|
262
|
-
psql "$SUPABASE_DB_URL" -v ON_ERROR_STOP=1
|
|
263
|
-
```
|
|
264
|
-
|
|
265
|
-
User can now run queries as this user:
|
|
266
|
-
|
|
267
|
-
```sql
|
|
268
|
-
-- Test queries
|
|
269
|
-
SELECT * FROM my_table; -- Should respect RLS for this user
|
|
270
|
-
|
|
271
|
-
-- Check current context
|
|
272
|
-
SELECT
|
|
273
|
-
auth.uid() AS current_user_id,
|
|
274
|
-
current_setting('role') AS current_role;
|
|
275
|
-
|
|
276
|
-
-- Exit impersonation
|
|
277
|
-
RESET ALL;
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
---
|
|
281
|
-
|
|
282
|
-
## Testing Scenarios
|
|
283
|
-
|
|
284
|
-
### Positive Test (Should Succeed)
|
|
285
|
-
|
|
286
|
-
Test that user CAN access their own data:
|
|
287
|
-
|
|
288
|
-
```sql
|
|
289
|
-
-- User should see their own records
|
|
290
|
-
SELECT * FROM users WHERE id = auth.uid();
|
|
291
|
-
|
|
292
|
-
-- User should see their own fragments
|
|
293
|
-
SELECT * FROM fragments WHERE user_id = auth.uid();
|
|
294
|
-
```
|
|
295
|
-
|
|
296
|
-
### Negative Test (Should Fail or Return Empty)
|
|
297
|
-
|
|
298
|
-
Test that user CANNOT access others' data:
|
|
299
|
-
|
|
300
|
-
```sql
|
|
301
|
-
-- Should return empty (not their data)
|
|
302
|
-
SELECT * FROM fragments WHERE user_id != auth.uid();
|
|
303
|
-
|
|
304
|
-
-- Should fail if trying to insert as another user
|
|
305
|
-
INSERT INTO fragments (user_id, content)
|
|
306
|
-
VALUES ('00000000-0000-0000-0000-000000000000', 'test');
|
|
307
|
-
-- Expected: RLS policy violation
|
|
308
|
-
```
|
|
309
|
-
|
|
310
|
-
### Multi-Tenant Test
|
|
311
|
-
|
|
312
|
-
If using org-based isolation:
|
|
313
|
-
|
|
314
|
-
```sql
|
|
315
|
-
-- Set org_id in JWT
|
|
316
|
-
SELECT set_config('request.jwt.claims',
|
|
317
|
-
jsonb_build_object(
|
|
318
|
-
'sub', '{user_id}',
|
|
319
|
-
'role', 'authenticated',
|
|
320
|
-
'org_id', '{org_id}'
|
|
321
|
-
)::text,
|
|
322
|
-
true
|
|
323
|
-
);
|
|
324
|
-
|
|
325
|
-
-- Test org isolation
|
|
326
|
-
SELECT * FROM projects; -- Should only see org's projects
|
|
327
|
-
```
|
|
328
|
-
|
|
329
|
-
---
|
|
330
|
-
|
|
331
|
-
## Common Use Cases
|
|
332
|
-
|
|
333
|
-
### Test New RLS Policy
|
|
334
|
-
|
|
335
|
-
```sql
|
|
336
|
-
-- 1. Apply new policy
|
|
337
|
-
CREATE POLICY "new_policy" ON table_name ...;
|
|
338
|
-
|
|
339
|
-
-- 2. Impersonate user
|
|
340
|
-
*impersonate {user_id}
|
|
341
|
-
|
|
342
|
-
-- 3. Test access
|
|
343
|
-
SELECT * FROM table_name;
|
|
344
|
-
|
|
345
|
-
-- 4. Reset and test as different user
|
|
346
|
-
RESET ALL;
|
|
347
|
-
*impersonate {other_user_id}
|
|
348
|
-
SELECT * FROM table_name;
|
|
349
|
-
```
|
|
350
|
-
|
|
351
|
-
### Debug Access Issues
|
|
352
|
-
|
|
353
|
-
User reports "can't see their data":
|
|
354
|
-
|
|
355
|
-
```sql
|
|
356
|
-
-- 1. Impersonate the user
|
|
357
|
-
*impersonate {user_id}
|
|
358
|
-
|
|
359
|
-
-- 2. Try their query
|
|
360
|
-
SELECT * FROM table_name WHERE ...;
|
|
361
|
-
|
|
362
|
-
-- 3. Check what RLS policies are active
|
|
363
|
-
SELECT * FROM pg_policies
|
|
364
|
-
WHERE tablename = 'table_name';
|
|
365
|
-
|
|
366
|
-
-- 4. Verify user_id matches
|
|
367
|
-
SELECT auth.uid(), user_id FROM table_name LIMIT 5;
|
|
368
|
-
```
|
|
369
|
-
|
|
370
|
-
### Validate Multi-User Scenario
|
|
371
|
-
|
|
372
|
-
```sql
|
|
373
|
-
-- User A
|
|
374
|
-
*impersonate {user_a_id}
|
|
375
|
-
SELECT COUNT(*) FROM fragments; -- Returns A's count
|
|
376
|
-
|
|
377
|
-
-- User B
|
|
378
|
-
*impersonate {user_b_id}
|
|
379
|
-
SELECT COUNT(*) FROM fragments; -- Returns B's count
|
|
380
|
-
|
|
381
|
-
-- Verify isolation
|
|
382
|
-
SELECT user_id, COUNT(*) FROM fragments GROUP BY user_id;
|
|
383
|
-
-- Should only show current user in impersonation
|
|
384
|
-
```
|
|
385
|
-
|
|
386
|
-
---
|
|
387
|
-
|
|
388
|
-
## Important Notes
|
|
389
|
-
|
|
390
|
-
### Session-Local Only
|
|
391
|
-
|
|
392
|
-
Settings are session-local and reset when:
|
|
393
|
-
- Session closes
|
|
394
|
-
- `RESET ALL;` is executed
|
|
395
|
-
- New connection is established
|
|
396
|
-
|
|
397
|
-
### Not for Production
|
|
398
|
-
|
|
399
|
-
**Never use this in application code:**
|
|
400
|
-
- ❌ Setting claims manually in app
|
|
401
|
-
- ❌ Bypassing Supabase Auth
|
|
402
|
-
- ✅ Only for testing and debugging
|
|
403
|
-
|
|
404
|
-
### Service Role Bypasses RLS
|
|
405
|
-
|
|
406
|
-
If using service role key, RLS is bypassed completely:
|
|
407
|
-
- Cannot test RLS with service role
|
|
408
|
-
- Must use authenticated role
|
|
409
|
-
- Service role sees ALL data
|
|
410
|
-
|
|
411
|
-
### Works with Functions
|
|
412
|
-
|
|
413
|
-
RLS policies respect these settings even in functions:
|
|
414
|
-
|
|
415
|
-
```sql
|
|
416
|
-
CREATE FUNCTION get_user_data()
|
|
417
|
-
RETURNS TABLE(...)
|
|
418
|
-
LANGUAGE sql
|
|
419
|
-
SECURITY DEFINER -- Function runs as owner
|
|
420
|
-
AS $$
|
|
421
|
-
SELECT * FROM table_name; -- Still respects RLS
|
|
422
|
-
$$;
|
|
423
|
-
```
|
|
424
|
-
|
|
425
|
-
---
|
|
426
|
-
|
|
427
|
-
## Exit Impersonation
|
|
428
|
-
|
|
429
|
-
To stop impersonating:
|
|
430
|
-
|
|
431
|
-
```sql
|
|
432
|
-
-- Reset all session variables
|
|
433
|
-
RESET ALL;
|
|
434
|
-
|
|
435
|
-
-- Or just close the psql session
|
|
436
|
-
\q
|
|
437
|
-
```
|
|
438
|
-
|
|
439
|
-
---
|
|
440
|
-
|
|
441
|
-
## Troubleshooting
|
|
442
|
-
|
|
443
|
-
### "auth.uid() returns NULL"
|
|
444
|
-
|
|
445
|
-
**Problem**: Claims not set correctly
|
|
446
|
-
**Fix**: Verify claim format and role setting
|
|
447
|
-
|
|
448
|
-
```sql
|
|
449
|
-
-- Check current settings
|
|
450
|
-
SELECT
|
|
451
|
-
current_setting('request.jwt.claims', true),
|
|
452
|
-
current_setting('role', true);
|
|
453
|
-
```
|
|
454
|
-
|
|
455
|
-
### "Still seeing all data"
|
|
456
|
-
|
|
457
|
-
**Problem**: Using service role or RLS not enabled
|
|
458
|
-
**Fix**:
|
|
459
|
-
1. Check connection string (should not be service role)
|
|
460
|
-
2. Verify RLS enabled: `*rls-audit`
|
|
461
|
-
3. Confirm policies exist
|
|
462
|
-
|
|
463
|
-
### "Permission denied"
|
|
464
|
-
|
|
465
|
-
**Problem**: Role not set to authenticated
|
|
466
|
-
**Fix**: Ensure role is set:
|
|
467
|
-
|
|
468
|
-
```sql
|
|
469
|
-
SELECT set_config('role', 'authenticated', true);
|
|
470
|
-
```
|
|
471
|
-
|
|
472
|
-
---
|
|
473
|
-
|
|
474
|
-
## Integration with Workflow
|
|
475
|
-
|
|
476
|
-
Typical testing workflow:
|
|
477
|
-
|
|
478
|
-
1. Create/modify RLS policy
|
|
479
|
-
2. `*dry-run migration.sql` - Syntax check
|
|
480
|
-
3. `*apply-migration migration.sql` - Apply changes
|
|
481
|
-
4. `*impersonate {test_user_id}` - Test as user
|
|
482
|
-
5. Run test queries
|
|
483
|
-
6. `*impersonate {other_user_id}` - Test isolation
|
|
484
|
-
7. `*rls-audit` - Verify coverage
|
|
485
|
-
|
|
486
|
-
---
|
|
487
|
-
|
|
488
|
-
## Security Reminder
|
|
489
|
-
|
|
490
|
-
🔒 **This is a testing tool only**
|
|
491
|
-
|
|
492
|
-
Never bypass Supabase Auth in production. Always use:
|
|
493
|
-
- Supabase client with user authentication
|
|
494
|
-
- Proper JWT tokens from auth.users
|
|
495
|
-
- Real user sessions with valid credentials
|
|
1
|
+
# Task: Impersonate User (RLS Testing)
|
|
2
|
+
|
|
3
|
+
**Purpose**: Set session claims to emulate authenticated user for RLS testing
|
|
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: dbImpersonate()
|
|
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
|
+
- `user_id` (uuid): User ID to impersonate
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## Process
|
|
218
|
+
|
|
219
|
+
### 1. Confirm Impersonation
|
|
220
|
+
|
|
221
|
+
Ask user:
|
|
222
|
+
- User ID to impersonate: `{user_id}`
|
|
223
|
+
- Purpose of impersonation (testing what?)
|
|
224
|
+
- Queries you plan to run
|
|
225
|
+
|
|
226
|
+
**CRITICAL WARNING**: This is for testing only. Never use in production application code.
|
|
227
|
+
|
|
228
|
+
### 2. Set Session Claims
|
|
229
|
+
|
|
230
|
+
```bash
|
|
231
|
+
psql "$SUPABASE_DB_URL" -v ON_ERROR_STOP=1 <<SQL
|
|
232
|
+
-- Set JWT claims for current session
|
|
233
|
+
SELECT
|
|
234
|
+
set_config('request.jwt.claims',
|
|
235
|
+
jsonb_build_object(
|
|
236
|
+
'sub', '{user_id}',
|
|
237
|
+
'role', 'authenticated'
|
|
238
|
+
)::text,
|
|
239
|
+
true
|
|
240
|
+
) AS jwt_claims,
|
|
241
|
+
set_config('request.jwt.claim.sub', '{user_id}', true) AS sub,
|
|
242
|
+
set_config('role', 'authenticated', true) AS role;
|
|
243
|
+
|
|
244
|
+
-- Verify settings
|
|
245
|
+
SELECT
|
|
246
|
+
current_setting('request.jwt.claims', true) AS jwt_claims,
|
|
247
|
+
current_setting('request.jwt.claim.sub', true) AS user_id,
|
|
248
|
+
current_setting('role', true) AS role;
|
|
249
|
+
|
|
250
|
+
\echo ''
|
|
251
|
+
\echo '✓ Impersonating user: {user_id}'
|
|
252
|
+
\echo 'Run your test queries now.'
|
|
253
|
+
\echo 'To exit, close this session or run: RESET ALL;'
|
|
254
|
+
SQL
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
### 3. Interactive SQL Session
|
|
258
|
+
|
|
259
|
+
Open interactive psql for testing:
|
|
260
|
+
|
|
261
|
+
```bash
|
|
262
|
+
psql "$SUPABASE_DB_URL" -v ON_ERROR_STOP=1
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
User can now run queries as this user:
|
|
266
|
+
|
|
267
|
+
```sql
|
|
268
|
+
-- Test queries
|
|
269
|
+
SELECT * FROM my_table; -- Should respect RLS for this user
|
|
270
|
+
|
|
271
|
+
-- Check current context
|
|
272
|
+
SELECT
|
|
273
|
+
auth.uid() AS current_user_id,
|
|
274
|
+
current_setting('role') AS current_role;
|
|
275
|
+
|
|
276
|
+
-- Exit impersonation
|
|
277
|
+
RESET ALL;
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
## Testing Scenarios
|
|
283
|
+
|
|
284
|
+
### Positive Test (Should Succeed)
|
|
285
|
+
|
|
286
|
+
Test that user CAN access their own data:
|
|
287
|
+
|
|
288
|
+
```sql
|
|
289
|
+
-- User should see their own records
|
|
290
|
+
SELECT * FROM users WHERE id = auth.uid();
|
|
291
|
+
|
|
292
|
+
-- User should see their own fragments
|
|
293
|
+
SELECT * FROM fragments WHERE user_id = auth.uid();
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
### Negative Test (Should Fail or Return Empty)
|
|
297
|
+
|
|
298
|
+
Test that user CANNOT access others' data:
|
|
299
|
+
|
|
300
|
+
```sql
|
|
301
|
+
-- Should return empty (not their data)
|
|
302
|
+
SELECT * FROM fragments WHERE user_id != auth.uid();
|
|
303
|
+
|
|
304
|
+
-- Should fail if trying to insert as another user
|
|
305
|
+
INSERT INTO fragments (user_id, content)
|
|
306
|
+
VALUES ('00000000-0000-0000-0000-000000000000', 'test');
|
|
307
|
+
-- Expected: RLS policy violation
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
### Multi-Tenant Test
|
|
311
|
+
|
|
312
|
+
If using org-based isolation:
|
|
313
|
+
|
|
314
|
+
```sql
|
|
315
|
+
-- Set org_id in JWT
|
|
316
|
+
SELECT set_config('request.jwt.claims',
|
|
317
|
+
jsonb_build_object(
|
|
318
|
+
'sub', '{user_id}',
|
|
319
|
+
'role', 'authenticated',
|
|
320
|
+
'org_id', '{org_id}'
|
|
321
|
+
)::text,
|
|
322
|
+
true
|
|
323
|
+
);
|
|
324
|
+
|
|
325
|
+
-- Test org isolation
|
|
326
|
+
SELECT * FROM projects; -- Should only see org's projects
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
---
|
|
330
|
+
|
|
331
|
+
## Common Use Cases
|
|
332
|
+
|
|
333
|
+
### Test New RLS Policy
|
|
334
|
+
|
|
335
|
+
```sql
|
|
336
|
+
-- 1. Apply new policy
|
|
337
|
+
CREATE POLICY "new_policy" ON table_name ...;
|
|
338
|
+
|
|
339
|
+
-- 2. Impersonate user
|
|
340
|
+
*impersonate {user_id}
|
|
341
|
+
|
|
342
|
+
-- 3. Test access
|
|
343
|
+
SELECT * FROM table_name;
|
|
344
|
+
|
|
345
|
+
-- 4. Reset and test as different user
|
|
346
|
+
RESET ALL;
|
|
347
|
+
*impersonate {other_user_id}
|
|
348
|
+
SELECT * FROM table_name;
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
### Debug Access Issues
|
|
352
|
+
|
|
353
|
+
User reports "can't see their data":
|
|
354
|
+
|
|
355
|
+
```sql
|
|
356
|
+
-- 1. Impersonate the user
|
|
357
|
+
*impersonate {user_id}
|
|
358
|
+
|
|
359
|
+
-- 2. Try their query
|
|
360
|
+
SELECT * FROM table_name WHERE ...;
|
|
361
|
+
|
|
362
|
+
-- 3. Check what RLS policies are active
|
|
363
|
+
SELECT * FROM pg_policies
|
|
364
|
+
WHERE tablename = 'table_name';
|
|
365
|
+
|
|
366
|
+
-- 4. Verify user_id matches
|
|
367
|
+
SELECT auth.uid(), user_id FROM table_name LIMIT 5;
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
### Validate Multi-User Scenario
|
|
371
|
+
|
|
372
|
+
```sql
|
|
373
|
+
-- User A
|
|
374
|
+
*impersonate {user_a_id}
|
|
375
|
+
SELECT COUNT(*) FROM fragments; -- Returns A's count
|
|
376
|
+
|
|
377
|
+
-- User B
|
|
378
|
+
*impersonate {user_b_id}
|
|
379
|
+
SELECT COUNT(*) FROM fragments; -- Returns B's count
|
|
380
|
+
|
|
381
|
+
-- Verify isolation
|
|
382
|
+
SELECT user_id, COUNT(*) FROM fragments GROUP BY user_id;
|
|
383
|
+
-- Should only show current user in impersonation
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
---
|
|
387
|
+
|
|
388
|
+
## Important Notes
|
|
389
|
+
|
|
390
|
+
### Session-Local Only
|
|
391
|
+
|
|
392
|
+
Settings are session-local and reset when:
|
|
393
|
+
- Session closes
|
|
394
|
+
- `RESET ALL;` is executed
|
|
395
|
+
- New connection is established
|
|
396
|
+
|
|
397
|
+
### Not for Production
|
|
398
|
+
|
|
399
|
+
**Never use this in application code:**
|
|
400
|
+
- ❌ Setting claims manually in app
|
|
401
|
+
- ❌ Bypassing Supabase Auth
|
|
402
|
+
- ✅ Only for testing and debugging
|
|
403
|
+
|
|
404
|
+
### Service Role Bypasses RLS
|
|
405
|
+
|
|
406
|
+
If using service role key, RLS is bypassed completely:
|
|
407
|
+
- Cannot test RLS with service role
|
|
408
|
+
- Must use authenticated role
|
|
409
|
+
- Service role sees ALL data
|
|
410
|
+
|
|
411
|
+
### Works with Functions
|
|
412
|
+
|
|
413
|
+
RLS policies respect these settings even in functions:
|
|
414
|
+
|
|
415
|
+
```sql
|
|
416
|
+
CREATE FUNCTION get_user_data()
|
|
417
|
+
RETURNS TABLE(...)
|
|
418
|
+
LANGUAGE sql
|
|
419
|
+
SECURITY DEFINER -- Function runs as owner
|
|
420
|
+
AS $$
|
|
421
|
+
SELECT * FROM table_name; -- Still respects RLS
|
|
422
|
+
$$;
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
---
|
|
426
|
+
|
|
427
|
+
## Exit Impersonation
|
|
428
|
+
|
|
429
|
+
To stop impersonating:
|
|
430
|
+
|
|
431
|
+
```sql
|
|
432
|
+
-- Reset all session variables
|
|
433
|
+
RESET ALL;
|
|
434
|
+
|
|
435
|
+
-- Or just close the psql session
|
|
436
|
+
\q
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
---
|
|
440
|
+
|
|
441
|
+
## Troubleshooting
|
|
442
|
+
|
|
443
|
+
### "auth.uid() returns NULL"
|
|
444
|
+
|
|
445
|
+
**Problem**: Claims not set correctly
|
|
446
|
+
**Fix**: Verify claim format and role setting
|
|
447
|
+
|
|
448
|
+
```sql
|
|
449
|
+
-- Check current settings
|
|
450
|
+
SELECT
|
|
451
|
+
current_setting('request.jwt.claims', true),
|
|
452
|
+
current_setting('role', true);
|
|
453
|
+
```
|
|
454
|
+
|
|
455
|
+
### "Still seeing all data"
|
|
456
|
+
|
|
457
|
+
**Problem**: Using service role or RLS not enabled
|
|
458
|
+
**Fix**:
|
|
459
|
+
1. Check connection string (should not be service role)
|
|
460
|
+
2. Verify RLS enabled: `*rls-audit`
|
|
461
|
+
3. Confirm policies exist
|
|
462
|
+
|
|
463
|
+
### "Permission denied"
|
|
464
|
+
|
|
465
|
+
**Problem**: Role not set to authenticated
|
|
466
|
+
**Fix**: Ensure role is set:
|
|
467
|
+
|
|
468
|
+
```sql
|
|
469
|
+
SELECT set_config('role', 'authenticated', true);
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
---
|
|
473
|
+
|
|
474
|
+
## Integration with Workflow
|
|
475
|
+
|
|
476
|
+
Typical testing workflow:
|
|
477
|
+
|
|
478
|
+
1. Create/modify RLS policy
|
|
479
|
+
2. `*dry-run migration.sql` - Syntax check
|
|
480
|
+
3. `*apply-migration migration.sql` - Apply changes
|
|
481
|
+
4. `*impersonate {test_user_id}` - Test as user
|
|
482
|
+
5. Run test queries
|
|
483
|
+
6. `*impersonate {other_user_id}` - Test isolation
|
|
484
|
+
7. `*rls-audit` - Verify coverage
|
|
485
|
+
|
|
486
|
+
---
|
|
487
|
+
|
|
488
|
+
## Security Reminder
|
|
489
|
+
|
|
490
|
+
🔒 **This is a testing tool only**
|
|
491
|
+
|
|
492
|
+
Never bypass Supabase Auth in production. Always use:
|
|
493
|
+
- Supabase client with user authentication
|
|
494
|
+
- Proper JWT tokens from auth.users
|
|
495
|
+
- Real user sessions with valid credentials
|