aios-core 2.1.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/.session/current-session.json +14 -0
- package/.aios-core/cli/commands/generate/index.js +222 -0
- package/.aios-core/cli/commands/manifest/index.js +46 -0
- package/.aios-core/cli/commands/manifest/regenerate.js +96 -0
- package/.aios-core/cli/commands/manifest/validate.js +66 -0
- package/.aios-core/cli/commands/mcp/add.js +234 -0
- package/.aios-core/cli/commands/mcp/index.js +76 -0
- package/.aios-core/cli/commands/mcp/link.js +217 -0
- package/.aios-core/cli/commands/mcp/setup.js +164 -0
- package/.aios-core/cli/commands/mcp/status.js +183 -0
- package/.aios-core/cli/commands/metrics/cleanup.js +91 -0
- package/.aios-core/cli/commands/metrics/index.js +65 -0
- package/.aios-core/cli/commands/metrics/record.js +154 -0
- package/.aios-core/cli/commands/metrics/seed.js +126 -0
- package/.aios-core/cli/commands/metrics/show.js +209 -0
- package/.aios-core/cli/commands/migrate/analyze.js +353 -0
- package/.aios-core/cli/commands/migrate/backup.js +352 -0
- package/.aios-core/cli/commands/migrate/execute.js +292 -0
- package/.aios-core/cli/commands/migrate/index.js +441 -0
- package/.aios-core/cli/commands/migrate/rollback.js +323 -0
- package/.aios-core/cli/commands/migrate/update-imports.js +396 -0
- package/.aios-core/cli/commands/migrate/validate.js +452 -0
- package/.aios-core/cli/commands/qa/index.js +56 -0
- package/.aios-core/cli/commands/qa/run.js +163 -0
- package/.aios-core/cli/commands/qa/status.js +195 -0
- package/.aios-core/cli/commands/workers/formatters/info-formatter.js +274 -0
- package/.aios-core/cli/commands/workers/formatters/list-table.js +265 -0
- package/.aios-core/cli/commands/workers/formatters/list-tree.js +159 -0
- package/.aios-core/cli/commands/workers/index.js +56 -0
- package/.aios-core/cli/commands/workers/info.js +194 -0
- package/.aios-core/cli/commands/workers/list.js +214 -0
- package/.aios-core/cli/commands/workers/search-filters.js +185 -0
- package/.aios-core/cli/commands/workers/search-keyword.js +310 -0
- package/.aios-core/cli/commands/workers/search-semantic.js +293 -0
- package/.aios-core/cli/commands/workers/search.js +154 -0
- package/.aios-core/cli/commands/workers/utils/pagination.js +102 -0
- package/.aios-core/cli/index.js +128 -0
- package/.aios-core/cli/utils/output-formatter-cli.js +232 -0
- package/.aios-core/cli/utils/score-calculator.js +221 -0
- package/.aios-core/core/README.md +229 -0
- package/.aios-core/core/config/config-cache.js +233 -0
- package/.aios-core/core/config/config-loader.js +277 -0
- package/.aios-core/core/data/agent-config-requirements.yaml +368 -0
- package/.aios-core/core/data/aios-kb.md +924 -0
- package/.aios-core/core/data/workflow-patterns.yaml +267 -0
- package/.aios-core/core/docs/SHARD-TRANSLATION-GUIDE.md +335 -0
- package/.aios-core/core/docs/component-creation-guide.md +458 -0
- package/.aios-core/core/docs/session-update-pattern.md +307 -0
- package/.aios-core/core/docs/template-syntax.md +267 -0
- package/.aios-core/core/docs/troubleshooting-guide.md +625 -0
- package/.aios-core/core/elicitation/agent-elicitation.js +272 -0
- package/.aios-core/core/elicitation/elicitation-engine.js +479 -0
- package/.aios-core/core/elicitation/session-manager.js +320 -0
- package/.aios-core/core/elicitation/task-elicitation.js +281 -0
- package/.aios-core/core/elicitation/workflow-elicitation.js +315 -0
- package/.aios-core/core/index.esm.js +42 -0
- package/.aios-core/core/index.js +76 -0
- package/.aios-core/core/manifest/manifest-generator.js +386 -0
- package/.aios-core/core/manifest/manifest-validator.js +429 -0
- package/.aios-core/core/mcp/config-migrator.js +340 -0
- package/.aios-core/core/mcp/global-config-manager.js +369 -0
- package/.aios-core/core/mcp/index.js +34 -0
- package/.aios-core/core/mcp/os-detector.js +188 -0
- package/.aios-core/core/mcp/symlink-manager.js +413 -0
- package/.aios-core/core/migration/migration-config.yaml +83 -0
- package/.aios-core/core/migration/module-mapping.yaml +89 -0
- package/.aios-core/core/quality-gates/base-layer.js +134 -0
- package/.aios-core/core/quality-gates/checklist-generator.js +329 -0
- package/.aios-core/core/quality-gates/focus-area-recommender.js +359 -0
- package/.aios-core/core/quality-gates/human-review-orchestrator.js +529 -0
- package/.aios-core/core/quality-gates/layer1-precommit.js +336 -0
- package/.aios-core/core/quality-gates/layer2-pr-automation.js +324 -0
- package/.aios-core/core/quality-gates/layer3-human-review.js +348 -0
- package/.aios-core/core/quality-gates/notification-manager.js +550 -0
- package/.aios-core/core/quality-gates/quality-gate-config.yaml +86 -0
- package/.aios-core/core/quality-gates/quality-gate-manager.js +601 -0
- package/.aios-core/core/registry/README.md +179 -0
- package/.aios-core/core/registry/build-registry.js +452 -0
- package/.aios-core/core/registry/registry-loader.js +330 -0
- package/.aios-core/core/registry/registry-schema.json +166 -0
- package/.aios-core/core/registry/service-registry.json +6586 -0
- package/.aios-core/core/registry/validate-registry.js +340 -0
- package/.aios-core/core/session/context-detector.js +229 -0
- package/.aios-core/core/session/context-loader.js +288 -0
- package/.aios-core/core/utils/output-formatter.js +298 -0
- package/.aios-core/core/utils/security-utils.js +333 -0
- package/.aios-core/core/utils/yaml-validator.js +419 -0
- package/.aios-core/core-config.yaml +382 -0
- package/.aios-core/data/agent-config-requirements.yaml +368 -0
- package/.aios-core/data/aios-kb.md +924 -0
- package/.aios-core/data/technical-preferences.md +4 -0
- package/.aios-core/data/workflow-patterns.yaml +267 -0
- package/.aios-core/development/README.md +142 -0
- package/.aios-core/development/agent-teams/team-all.yaml +15 -0
- package/.aios-core/development/agent-teams/team-fullstack.yaml +18 -0
- package/.aios-core/development/agent-teams/team-ide-minimal.yaml +10 -0
- package/.aios-core/development/agent-teams/team-no-ui.yaml +13 -0
- package/.aios-core/development/agent-teams/team-qa-focused.yaml +155 -0
- package/.aios-core/development/agents/aios-master.md +339 -0
- package/.aios-core/development/agents/analyst.md +195 -0
- package/.aios-core/development/agents/architect.md +359 -0
- package/.aios-core/development/agents/data-engineer.md +468 -0
- package/.aios-core/development/agents/dev.md +390 -0
- package/.aios-core/development/agents/devops.md +398 -0
- package/.aios-core/development/agents/pm.md +198 -0
- package/.aios-core/development/agents/po.md +256 -0
- package/.aios-core/development/agents/qa.md +312 -0
- package/.aios-core/development/agents/sm.md +220 -0
- package/.aios-core/development/agents/ux-design-expert.md +451 -0
- package/.aios-core/development/scripts/agent-assignment-resolver.js +231 -0
- package/.aios-core/development/scripts/agent-config-loader.js +624 -0
- package/.aios-core/development/scripts/agent-exit-hooks.js +96 -0
- package/.aios-core/development/scripts/apply-inline-greeting-all-agents.js +146 -0
- package/.aios-core/development/scripts/audit-agent-config.js +380 -0
- package/.aios-core/development/scripts/backlog-manager.js +404 -0
- package/.aios-core/development/scripts/batch-update-agents-session-context.js +95 -0
- package/.aios-core/development/scripts/decision-context.js +228 -0
- package/.aios-core/development/scripts/decision-log-generator.js +293 -0
- package/.aios-core/development/scripts/decision-log-indexer.js +284 -0
- package/.aios-core/development/scripts/decision-recorder.js +168 -0
- package/.aios-core/development/scripts/dev-context-loader.js +297 -0
- package/.aios-core/development/scripts/generate-greeting.js +160 -0
- package/.aios-core/development/scripts/greeting-builder.js +866 -0
- package/.aios-core/development/scripts/greeting-config-cli.js +85 -0
- package/.aios-core/development/scripts/greeting-preference-manager.js +145 -0
- package/.aios-core/development/scripts/migrate-task-to-v2.js +377 -0
- package/.aios-core/development/scripts/story-index-generator.js +337 -0
- package/.aios-core/development/scripts/story-manager.js +375 -0
- package/.aios-core/development/scripts/story-update-hook.js +259 -0
- package/.aios-core/development/scripts/task-identifier-resolver.js +145 -0
- package/.aios-core/development/scripts/test-greeting-system.js +142 -0
- package/.aios-core/development/scripts/validate-task-v2.js +319 -0
- package/.aios-core/development/scripts/workflow-navigator.js +214 -0
- package/.aios-core/development/tasks/add-mcp.md +319 -0
- package/.aios-core/development/tasks/advanced-elicitation.md +319 -0
- package/.aios-core/development/tasks/analyst-facilitate-brainstorming.md +342 -0
- package/.aios-core/development/tasks/analyze-framework.md +697 -0
- package/.aios-core/development/tasks/analyze-performance.md +637 -0
- package/.aios-core/development/tasks/apply-qa-fixes.md +340 -0
- package/.aios-core/development/tasks/architect-analyze-impact.md +827 -0
- package/.aios-core/development/tasks/audit-codebase.md +429 -0
- package/.aios-core/development/tasks/audit-tailwind-config.md +270 -0
- package/.aios-core/development/tasks/audit-utilities.md +358 -0
- package/.aios-core/development/tasks/bootstrap-shadcn-library.md +286 -0
- package/.aios-core/development/tasks/brownfield-create-epic.md +486 -0
- package/.aios-core/development/tasks/brownfield-create-story.md +357 -0
- package/.aios-core/development/tasks/build-component.md +478 -0
- package/.aios-core/development/tasks/calculate-roi.md +455 -0
- package/.aios-core/development/tasks/ci-cd-configuration.md +764 -0
- package/.aios-core/development/tasks/cleanup-utilities.md +670 -0
- package/.aios-core/development/tasks/collaborative-edit.md +1109 -0
- package/.aios-core/development/tasks/compose-molecule.md +284 -0
- package/.aios-core/development/tasks/consolidate-patterns.md +414 -0
- package/.aios-core/development/tasks/correct-course.md +280 -0
- package/.aios-core/development/tasks/create-agent.md +322 -0
- package/.aios-core/development/tasks/create-brownfield-story.md +727 -0
- package/.aios-core/development/tasks/create-deep-research-prompt.md +499 -0
- package/.aios-core/development/tasks/create-doc.md +316 -0
- package/.aios-core/development/tasks/create-next-story.md +774 -0
- package/.aios-core/development/tasks/create-suite.md +284 -0
- package/.aios-core/development/tasks/create-task.md +372 -0
- package/.aios-core/development/tasks/create-workflow.md +371 -0
- package/.aios-core/development/tasks/db-analyze-hotpaths.md +572 -0
- package/.aios-core/development/tasks/db-apply-migration.md +381 -0
- package/.aios-core/development/tasks/db-bootstrap.md +642 -0
- package/.aios-core/development/tasks/db-domain-modeling.md +693 -0
- package/.aios-core/development/tasks/db-dry-run.md +293 -0
- package/.aios-core/development/tasks/db-env-check.md +260 -0
- package/.aios-core/development/tasks/db-expansion-pack-integration.md +663 -0
- package/.aios-core/development/tasks/db-explain.md +631 -0
- package/.aios-core/development/tasks/db-impersonate.md +495 -0
- package/.aios-core/development/tasks/db-load-csv.md +593 -0
- package/.aios-core/development/tasks/db-policy-apply.md +653 -0
- package/.aios-core/development/tasks/db-rls-audit.md +411 -0
- package/.aios-core/development/tasks/db-rollback.md +739 -0
- package/.aios-core/development/tasks/db-run-sql.md +613 -0
- package/.aios-core/development/tasks/db-schema-audit.md +1011 -0
- package/.aios-core/development/tasks/db-seed.md +390 -0
- package/.aios-core/development/tasks/db-smoke-test.md +351 -0
- package/.aios-core/development/tasks/db-snapshot.md +569 -0
- package/.aios-core/development/tasks/db-supabase-setup.md +712 -0
- package/.aios-core/development/tasks/db-verify-order.md +515 -0
- package/.aios-core/development/tasks/deprecate-component.md +957 -0
- package/.aios-core/development/tasks/dev-apply-qa-fixes.md +318 -0
- package/.aios-core/development/tasks/dev-backlog-debt.md +469 -0
- package/.aios-core/development/tasks/dev-develop-story.md +846 -0
- package/.aios-core/development/tasks/dev-improve-code-quality.md +873 -0
- package/.aios-core/development/tasks/dev-optimize-performance.md +1034 -0
- package/.aios-core/development/tasks/dev-suggest-refactoring.md +871 -0
- package/.aios-core/development/tasks/dev-validate-next-story.md +349 -0
- package/.aios-core/development/tasks/document-project.md +553 -0
- package/.aios-core/development/tasks/environment-bootstrap.md +1311 -0
- package/.aios-core/development/tasks/execute-checklist.md +301 -0
- package/.aios-core/development/tasks/export-design-tokens-dtcg.md +274 -0
- package/.aios-core/development/tasks/extend-pattern.md +269 -0
- package/.aios-core/development/tasks/extract-tokens.md +467 -0
- package/.aios-core/development/tasks/facilitate-brainstorming-session.md +518 -0
- package/.aios-core/development/tasks/generate-ai-frontend-prompt.md +261 -0
- package/.aios-core/development/tasks/generate-documentation.md +284 -0
- package/.aios-core/development/tasks/generate-migration-strategy.md +522 -0
- package/.aios-core/development/tasks/generate-shock-report.md +501 -0
- package/.aios-core/development/tasks/github-devops-github-pr-automation.md +427 -0
- package/.aios-core/development/tasks/github-devops-pre-push-quality-gate.md +733 -0
- package/.aios-core/development/tasks/github-devops-repository-cleanup.md +374 -0
- package/.aios-core/development/tasks/github-devops-version-management.md +483 -0
- package/.aios-core/development/tasks/improve-self.md +823 -0
- package/.aios-core/development/tasks/index-docs.md +388 -0
- package/.aios-core/development/tasks/init-project-status.md +506 -0
- package/.aios-core/development/tasks/integrate-expansion-pack.md +314 -0
- package/.aios-core/development/tasks/kb-mode-interaction.md +284 -0
- package/.aios-core/development/tasks/learn-patterns.md +901 -0
- package/.aios-core/development/tasks/mcp-workflow.md +437 -0
- package/.aios-core/development/tasks/modify-agent.md +382 -0
- package/.aios-core/development/tasks/modify-task.md +425 -0
- package/.aios-core/development/tasks/modify-workflow.md +466 -0
- package/.aios-core/development/tasks/po-backlog-add.md +370 -0
- package/.aios-core/development/tasks/po-manage-story-backlog.md +523 -0
- package/.aios-core/development/tasks/po-pull-story-from-clickup.md +540 -0
- package/.aios-core/development/tasks/po-pull-story.md +316 -0
- package/.aios-core/development/tasks/po-stories-index.md +351 -0
- package/.aios-core/development/tasks/po-sync-story-to-clickup.md +457 -0
- package/.aios-core/development/tasks/po-sync-story.md +303 -0
- package/.aios-core/development/tasks/pr-automation.md +701 -0
- package/.aios-core/development/tasks/propose-modification.md +843 -0
- package/.aios-core/development/tasks/qa-backlog-add-followup.md +425 -0
- package/.aios-core/development/tasks/qa-gate.md +374 -0
- package/.aios-core/development/tasks/qa-generate-tests.md +1175 -0
- package/.aios-core/development/tasks/qa-nfr-assess.md +558 -0
- package/.aios-core/development/tasks/qa-review-proposal.md +1158 -0
- package/.aios-core/development/tasks/qa-review-story.md +683 -0
- package/.aios-core/development/tasks/qa-risk-profile.md +567 -0
- package/.aios-core/development/tasks/qa-run-tests.md +277 -0
- package/.aios-core/development/tasks/qa-test-design.md +388 -0
- package/.aios-core/development/tasks/qa-trace-requirements.md +477 -0
- package/.aios-core/development/tasks/release-management.md +723 -0
- package/.aios-core/development/tasks/security-audit.md +554 -0
- package/.aios-core/development/tasks/security-scan.md +790 -0
- package/.aios-core/development/tasks/setup-database.md +741 -0
- package/.aios-core/development/tasks/setup-design-system.md +462 -0
- package/.aios-core/development/tasks/setup-github.md +874 -0
- package/.aios-core/development/tasks/setup-llm-routing.md +229 -0
- package/.aios-core/development/tasks/setup-mcp-docker.md +584 -0
- package/.aios-core/development/tasks/shard-doc.md +538 -0
- package/.aios-core/development/tasks/sm-create-next-story.md +480 -0
- package/.aios-core/development/tasks/sync-documentation.md +865 -0
- package/.aios-core/development/tasks/tailwind-upgrade.md +294 -0
- package/.aios-core/development/tasks/test-as-user.md +621 -0
- package/.aios-core/development/tasks/test-validation-task.md +171 -0
- package/.aios-core/development/tasks/undo-last.md +347 -0
- package/.aios-core/development/tasks/update-manifest.md +410 -0
- package/.aios-core/development/tasks/ux-create-wireframe.md +617 -0
- package/.aios-core/development/tasks/ux-ds-scan-artifact.md +672 -0
- package/.aios-core/development/tasks/ux-user-research.md +559 -0
- package/.aios-core/development/tasks/validate-next-story.md +423 -0
- package/.aios-core/development/tasks/validate-structure.md +243 -0
- package/.aios-core/development/workflows/README.md +84 -0
- package/.aios-core/development/workflows/brownfield-fullstack.yaml +297 -0
- package/.aios-core/development/workflows/brownfield-service.yaml +187 -0
- package/.aios-core/development/workflows/brownfield-ui.yaml +197 -0
- package/.aios-core/development/workflows/greenfield-fullstack.yaml +333 -0
- package/.aios-core/development/workflows/greenfield-service.yaml +206 -0
- package/.aios-core/development/workflows/greenfield-ui.yaml +235 -0
- package/.aios-core/docs/SHARD-TRANSLATION-GUIDE.md +335 -0
- package/.aios-core/docs/component-creation-guide.md +458 -0
- package/.aios-core/docs/session-update-pattern.md +307 -0
- package/.aios-core/docs/standards/AGENT-PERSONALIZATION-STANDARD-V1.md +572 -0
- package/.aios-core/docs/standards/AIOS-COLOR-PALETTE-QUICK-REFERENCE.md +185 -0
- package/.aios-core/docs/standards/AIOS-COLOR-PALETTE-V2.1.md +354 -0
- package/.aios-core/docs/standards/AIOS-FRAMEWORK-MASTER.md +1963 -0
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1-COMPLETE.md +821 -0
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1-SUMMARY.md +1190 -0
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1.md +439 -0
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.2-SUMMARY.md +1339 -0
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO.md +5398 -0
- package/.aios-core/docs/standards/EXECUTOR-DECISION-TREE.md +697 -0
- package/.aios-core/docs/standards/OPEN-SOURCE-VS-SERVICE-DIFFERENCES.md +511 -0
- package/.aios-core/docs/standards/QUALITY-GATES-SPECIFICATION.md +556 -0
- package/.aios-core/docs/standards/STANDARDS-INDEX.md +210 -0
- package/.aios-core/docs/standards/STORY-TEMPLATE-V2-SPECIFICATION.md +550 -0
- package/.aios-core/docs/standards/TASK-FORMAT-SPECIFICATION-V1.md +1414 -0
- package/.aios-core/docs/standards/V3-ARCHITECTURAL-DECISIONS.md +523 -0
- package/.aios-core/docs/template-syntax.md +267 -0
- package/.aios-core/docs/troubleshooting-guide.md +625 -0
- package/.aios-core/elicitation/agent-elicitation.js +272 -0
- package/.aios-core/elicitation/task-elicitation.js +281 -0
- package/.aios-core/elicitation/workflow-elicitation.js +315 -0
- package/.aios-core/index.d.ts +8 -0
- package/.aios-core/index.esm.js +16 -0
- package/.aios-core/index.js +16 -0
- package/.aios-core/infrastructure/README.md +126 -0
- package/.aios-core/infrastructure/index.js +199 -0
- package/.aios-core/infrastructure/integrations/pm-adapters/README.md +59 -0
- package/.aios-core/infrastructure/integrations/pm-adapters/clickup-adapter.js +345 -0
- package/.aios-core/infrastructure/integrations/pm-adapters/github-adapter.js +392 -0
- package/.aios-core/infrastructure/integrations/pm-adapters/jira-adapter.js +448 -0
- package/.aios-core/infrastructure/integrations/pm-adapters/local-adapter.js +175 -0
- package/.aios-core/infrastructure/scripts/_archived/final-todo-count.js +122 -0
- package/.aios-core/infrastructure/scripts/_archived/fix-yaml-formatting.js +89 -0
- package/.aios-core/infrastructure/scripts/_archived/migration-generator.js +780 -0
- package/.aios-core/infrastructure/scripts/_archived/migration-path-generator.js +950 -0
- package/.aios-core/infrastructure/scripts/_archived/phase2-entrada-saida-errors.js +425 -0
- package/.aios-core/infrastructure/scripts/_archived/phase2-spot-check.js +132 -0
- package/.aios-core/infrastructure/scripts/_archived/phase3-tools-scripts-validation.js +381 -0
- package/.aios-core/infrastructure/scripts/_archived/phase4-metadata-performance.js +203 -0
- package/.aios-core/infrastructure/scripts/_archived/test-yaml-parsing.js +24 -0
- package/.aios-core/infrastructure/scripts/_archived/verify-yaml-fix.js +51 -0
- package/.aios-core/infrastructure/scripts/aios-validator.js +294 -0
- package/.aios-core/infrastructure/scripts/approval-workflow.js +643 -0
- package/.aios-core/infrastructure/scripts/atomic-layer-classifier.js +308 -0
- package/.aios-core/infrastructure/scripts/backup-manager.js +607 -0
- package/.aios-core/infrastructure/scripts/batch-creator.js +608 -0
- package/.aios-core/infrastructure/scripts/branch-manager.js +391 -0
- package/.aios-core/infrastructure/scripts/capability-analyzer.js +535 -0
- package/.aios-core/infrastructure/scripts/clickup-helpers.js +226 -0
- package/.aios-core/infrastructure/scripts/code-quality-improver.js +1312 -0
- package/.aios-core/infrastructure/scripts/commit-message-generator.js +850 -0
- package/.aios-core/infrastructure/scripts/component-generator.js +738 -0
- package/.aios-core/infrastructure/scripts/component-metadata.js +627 -0
- package/.aios-core/infrastructure/scripts/component-search.js +277 -0
- package/.aios-core/infrastructure/scripts/config-cache.js +322 -0
- package/.aios-core/infrastructure/scripts/config-loader.js +349 -0
- package/.aios-core/infrastructure/scripts/conflict-resolver.js +675 -0
- package/.aios-core/infrastructure/scripts/coverage-analyzer.js +882 -0
- package/.aios-core/infrastructure/scripts/dependency-analyzer.js +638 -0
- package/.aios-core/infrastructure/scripts/dependency-impact-analyzer.js +703 -0
- package/.aios-core/infrastructure/scripts/diff-generator.js +129 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/brownfield-analyzer.js +501 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/config-generator.js +329 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/deployment-config-loader.js +282 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/doc-generator.js +331 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/gitignore-generator.js +313 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/index.js +74 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/mode-detector.js +358 -0
- package/.aios-core/infrastructure/scripts/documentation-synchronizer.js +1432 -0
- package/.aios-core/infrastructure/scripts/framework-analyzer.js +746 -0
- package/.aios-core/infrastructure/scripts/git-config-detector.js +293 -0
- package/.aios-core/infrastructure/scripts/git-wrapper.js +443 -0
- package/.aios-core/infrastructure/scripts/improvement-engine.js +758 -0
- package/.aios-core/infrastructure/scripts/improvement-validator.js +710 -0
- package/.aios-core/infrastructure/scripts/llm-routing/install-llm-routing.js +267 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-free.cmd +80 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-free.sh +62 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-max.cmd +26 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-max.sh +18 -0
- package/.aios-core/infrastructure/scripts/modification-risk-assessment.js +970 -0
- package/.aios-core/infrastructure/scripts/modification-validator.js +555 -0
- package/.aios-core/infrastructure/scripts/output-formatter.js +297 -0
- package/.aios-core/infrastructure/scripts/performance-analyzer.js +758 -0
- package/.aios-core/infrastructure/scripts/performance-and-error-resolver.js +258 -0
- package/.aios-core/infrastructure/scripts/performance-optimizer.js +1902 -0
- package/.aios-core/infrastructure/scripts/performance-tracker.js +452 -0
- package/.aios-core/infrastructure/scripts/pm-adapter-factory.js +181 -0
- package/.aios-core/infrastructure/scripts/pm-adapter.js +134 -0
- package/.aios-core/infrastructure/scripts/project-status-loader.js +445 -0
- package/.aios-core/infrastructure/scripts/refactoring-suggester.js +1139 -0
- package/.aios-core/infrastructure/scripts/repository-detector.js +64 -0
- package/.aios-core/infrastructure/scripts/sandbox-tester.js +618 -0
- package/.aios-core/infrastructure/scripts/security-checker.js +359 -0
- package/.aios-core/infrastructure/scripts/source-tree-guardian/index.js +375 -0
- package/.aios-core/infrastructure/scripts/source-tree-guardian/manifest-generator.js +410 -0
- package/.aios-core/infrastructure/scripts/source-tree-guardian/rules/naming-rules.yaml +285 -0
- package/.aios-core/infrastructure/scripts/source-tree-guardian/rules/placement-rules.yaml +262 -0
- package/.aios-core/infrastructure/scripts/source-tree-guardian/validator.js +468 -0
- package/.aios-core/infrastructure/scripts/spot-check-validator.js +149 -0
- package/.aios-core/infrastructure/scripts/status-mapper.js +115 -0
- package/.aios-core/infrastructure/scripts/template-engine.js +240 -0
- package/.aios-core/infrastructure/scripts/template-validator.js +279 -0
- package/.aios-core/infrastructure/scripts/test-generator.js +844 -0
- package/.aios-core/infrastructure/scripts/test-quality-assessment.js +1081 -0
- package/.aios-core/infrastructure/scripts/test-utilities-fast.js +126 -0
- package/.aios-core/infrastructure/scripts/test-utilities.js +200 -0
- package/.aios-core/infrastructure/scripts/tool-resolver.js +360 -0
- package/.aios-core/infrastructure/scripts/transaction-manager.js +590 -0
- package/.aios-core/infrastructure/scripts/usage-analytics.js +634 -0
- package/.aios-core/infrastructure/scripts/validate-output-pattern.js +213 -0
- package/.aios-core/infrastructure/scripts/visual-impact-generator.js +1056 -0
- package/.aios-core/infrastructure/scripts/yaml-validator.js +397 -0
- package/.aios-core/infrastructure/templates/coderabbit.yaml.template +279 -0
- package/.aios-core/infrastructure/templates/core-config/core-config-brownfield.tmpl.yaml +182 -0
- package/.aios-core/infrastructure/templates/core-config/core-config-greenfield.tmpl.yaml +127 -0
- package/.aios-core/infrastructure/templates/github-workflows/README.md +109 -0
- package/.aios-core/infrastructure/templates/github-workflows/ci.yml.template +169 -0
- package/.aios-core/infrastructure/templates/github-workflows/pr-automation.yml.template +330 -0
- package/.aios-core/infrastructure/templates/github-workflows/release.yml.template +196 -0
- package/.aios-core/infrastructure/templates/gitignore/gitignore-aios-base.tmpl +63 -0
- package/.aios-core/infrastructure/templates/gitignore/gitignore-brownfield-merge.tmpl +18 -0
- package/.aios-core/infrastructure/templates/gitignore/gitignore-node.tmpl +85 -0
- package/.aios-core/infrastructure/templates/gitignore/gitignore-python.tmpl +145 -0
- package/.aios-core/infrastructure/templates/project-docs/coding-standards-tmpl.md +346 -0
- package/.aios-core/infrastructure/templates/project-docs/source-tree-tmpl.md +177 -0
- package/.aios-core/infrastructure/templates/project-docs/tech-stack-tmpl.md +267 -0
- package/.aios-core/infrastructure/tests/project-status-loader.test.js +394 -0
- package/.aios-core/infrastructure/tests/regression-suite-v2.md +621 -0
- package/.aios-core/infrastructure/tests/utilities-audit-results.json +501 -0
- package/.aios-core/infrastructure/tests/validate-module.js +97 -0
- package/.aios-core/infrastructure/tools/README.md +222 -0
- package/.aios-core/infrastructure/tools/cli/github-cli.yaml +200 -0
- package/.aios-core/infrastructure/tools/cli/llm-routing.yaml +126 -0
- package/.aios-core/infrastructure/tools/cli/railway-cli.yaml +260 -0
- package/.aios-core/infrastructure/tools/cli/supabase-cli.yaml +224 -0
- package/.aios-core/infrastructure/tools/local/ffmpeg.yaml +261 -0
- package/.aios-core/infrastructure/tools/mcp/21st-dev-magic.yaml +127 -0
- package/.aios-core/infrastructure/tools/mcp/browser.yaml +103 -0
- package/.aios-core/infrastructure/tools/mcp/clickup.yaml +534 -0
- package/.aios-core/infrastructure/tools/mcp/context7.yaml +78 -0
- package/.aios-core/infrastructure/tools/mcp/desktop-commander.yaml +180 -0
- package/.aios-core/infrastructure/tools/mcp/exa.yaml +103 -0
- package/.aios-core/infrastructure/tools/mcp/google-workspace.yaml +930 -0
- package/.aios-core/infrastructure/tools/mcp/n8n.yaml +551 -0
- package/.aios-core/infrastructure/tools/mcp/supabase.yaml +808 -0
- package/.aios-core/install-manifest.yaml +347 -0
- package/.aios-core/manifests/agents.csv +1 -0
- package/.aios-core/manifests/schema/manifest-schema.json +190 -0
- package/.aios-core/manifests/tasks.csv +121 -0
- package/.aios-core/manifests/workers.csv +204 -0
- package/.aios-core/package.json +103 -0
- package/.aios-core/product/README.md +56 -0
- package/.aios-core/product/checklists/architect-checklist.md +444 -0
- package/.aios-core/product/checklists/change-checklist.md +183 -0
- package/.aios-core/product/checklists/database-design-checklist.md +119 -0
- package/.aios-core/product/checklists/dba-predeploy-checklist.md +97 -0
- package/.aios-core/product/checklists/dba-rollback-checklist.md +99 -0
- package/.aios-core/product/checklists/pm-checklist.md +376 -0
- package/.aios-core/product/checklists/po-master-checklist.md +442 -0
- package/.aios-core/product/checklists/pre-push-checklist.md +108 -0
- package/.aios-core/product/checklists/release-checklist.md +122 -0
- package/.aios-core/product/checklists/story-dod-checklist.md +102 -0
- package/.aios-core/product/checklists/story-draft-checklist.md +216 -0
- package/.aios-core/product/data/brainstorming-techniques.md +37 -0
- package/.aios-core/product/data/elicitation-methods.md +135 -0
- package/.aios-core/product/data/mode-selection-best-practices.md +471 -0
- package/.aios-core/product/data/test-levels-framework.md +149 -0
- package/.aios-core/product/data/test-priorities-matrix.md +175 -0
- package/.aios-core/product/templates/1mcp-config.yaml +225 -0
- package/.aios-core/product/templates/activation-instructions-inline-greeting.yaml +63 -0
- package/.aios-core/product/templates/activation-instructions-template.md +258 -0
- package/.aios-core/product/templates/adr.hbs +125 -0
- package/.aios-core/product/templates/agent-template.yaml +121 -0
- package/.aios-core/product/templates/architecture-tmpl.yaml +651 -0
- package/.aios-core/product/templates/brainstorming-output-tmpl.yaml +156 -0
- package/.aios-core/product/templates/brownfield-architecture-tmpl.yaml +476 -0
- package/.aios-core/product/templates/brownfield-prd-tmpl.yaml +280 -0
- package/.aios-core/product/templates/changelog-template.md +134 -0
- package/.aios-core/product/templates/command-rationalization-matrix.md +152 -0
- package/.aios-core/product/templates/competitor-analysis-tmpl.yaml +293 -0
- package/.aios-core/product/templates/component-react-tmpl.tsx +98 -0
- package/.aios-core/product/templates/dbdr.hbs +241 -0
- package/.aios-core/product/templates/design-story-tmpl.yaml +587 -0
- package/.aios-core/product/templates/ds-artifact-analysis.md +70 -0
- package/.aios-core/product/templates/engine/elicitation.js +298 -0
- package/.aios-core/product/templates/engine/index.js +308 -0
- package/.aios-core/product/templates/engine/loader.js +231 -0
- package/.aios-core/product/templates/engine/renderer.js +343 -0
- package/.aios-core/product/templates/engine/schemas/adr.schema.json +102 -0
- package/.aios-core/product/templates/engine/schemas/dbdr.schema.json +205 -0
- package/.aios-core/product/templates/engine/schemas/epic.schema.json +175 -0
- package/.aios-core/product/templates/engine/schemas/pmdr.schema.json +175 -0
- package/.aios-core/product/templates/engine/schemas/prd-v2.schema.json +300 -0
- package/.aios-core/product/templates/engine/schemas/prd.schema.json +152 -0
- package/.aios-core/product/templates/engine/schemas/story.schema.json +222 -0
- package/.aios-core/product/templates/engine/schemas/task.schema.json +154 -0
- package/.aios-core/product/templates/engine/validator.js +294 -0
- package/.aios-core/product/templates/epic.hbs +212 -0
- package/.aios-core/product/templates/eslintrc-security.json +32 -0
- package/.aios-core/product/templates/front-end-architecture-tmpl.yaml +206 -0
- package/.aios-core/product/templates/front-end-spec-tmpl.yaml +349 -0
- package/.aios-core/product/templates/fullstack-architecture-tmpl.yaml +805 -0
- package/.aios-core/product/templates/github-actions-cd.yml +212 -0
- package/.aios-core/product/templates/github-actions-ci.yml +172 -0
- package/.aios-core/product/templates/github-pr-template.md +67 -0
- package/.aios-core/product/templates/gordon-mcp.yaml +140 -0
- package/.aios-core/product/templates/ide-rules/antigravity-rules.md +115 -0
- package/.aios-core/product/templates/ide-rules/claude-rules.md +221 -0
- package/.aios-core/product/templates/ide-rules/cline-rules.md +84 -0
- package/.aios-core/product/templates/ide-rules/copilot-rules.md +92 -0
- package/.aios-core/product/templates/ide-rules/cursor-rules.md +115 -0
- package/.aios-core/product/templates/ide-rules/gemini-rules.md +85 -0
- package/.aios-core/product/templates/ide-rules/roo-rules.md +86 -0
- package/.aios-core/product/templates/ide-rules/trae-rules.md +104 -0
- package/.aios-core/product/templates/ide-rules/windsurf-rules.md +80 -0
- package/.aios-core/product/templates/index-strategy-tmpl.yaml +53 -0
- package/.aios-core/product/templates/market-research-tmpl.yaml +252 -0
- package/.aios-core/product/templates/mcp-workflow.js +271 -0
- package/.aios-core/product/templates/migration-plan-tmpl.yaml +1022 -0
- package/.aios-core/product/templates/migration-strategy-tmpl.md +524 -0
- package/.aios-core/product/templates/personalized-agent-template.md +258 -0
- package/.aios-core/product/templates/personalized-checklist-template.md +340 -0
- package/.aios-core/product/templates/personalized-task-template-v2.md +905 -0
- package/.aios-core/product/templates/personalized-task-template.md +344 -0
- package/.aios-core/product/templates/personalized-template-file.yaml +322 -0
- package/.aios-core/product/templates/personalized-workflow-template.yaml +460 -0
- package/.aios-core/product/templates/pmdr.hbs +186 -0
- package/.aios-core/product/templates/prd-tmpl.yaml +202 -0
- package/.aios-core/product/templates/prd-v2.0.hbs +216 -0
- package/.aios-core/product/templates/prd.hbs +201 -0
- package/.aios-core/product/templates/project-brief-tmpl.yaml +221 -0
- package/.aios-core/product/templates/qa-gate-tmpl.yaml +240 -0
- package/.aios-core/product/templates/rls-policies-tmpl.yaml +1203 -0
- package/.aios-core/product/templates/schema-design-tmpl.yaml +428 -0
- package/.aios-core/product/templates/shock-report-tmpl.html +502 -0
- package/.aios-core/product/templates/state-persistence-tmpl.yaml +219 -0
- package/.aios-core/product/templates/story-tmpl.yaml +332 -0
- package/.aios-core/product/templates/story.hbs +263 -0
- package/.aios-core/product/templates/task-execution-report.md +495 -0
- package/.aios-core/product/templates/task-template.md +123 -0
- package/.aios-core/product/templates/task.hbs +170 -0
- package/.aios-core/product/templates/tmpl-comment-on-examples.sql +158 -0
- package/.aios-core/product/templates/tmpl-migration-script.sql +91 -0
- package/.aios-core/product/templates/tmpl-rls-granular-policies.sql +104 -0
- package/.aios-core/product/templates/tmpl-rls-kiss-policy.sql +10 -0
- package/.aios-core/product/templates/tmpl-rls-roles.sql +135 -0
- package/.aios-core/product/templates/tmpl-rls-simple.sql +77 -0
- package/.aios-core/product/templates/tmpl-rls-tenant.sql +152 -0
- package/.aios-core/product/templates/tmpl-rollback-script.sql +77 -0
- package/.aios-core/product/templates/tmpl-seed-data.sql +140 -0
- package/.aios-core/product/templates/tmpl-smoke-test.sql +16 -0
- package/.aios-core/product/templates/tmpl-staging-copy-merge.sql +139 -0
- package/.aios-core/product/templates/tmpl-stored-proc.sql +140 -0
- package/.aios-core/product/templates/tmpl-trigger.sql +152 -0
- package/.aios-core/product/templates/tmpl-view-materialized.sql +133 -0
- package/.aios-core/product/templates/tmpl-view.sql +177 -0
- package/.aios-core/product/templates/token-exports-css-tmpl.css +240 -0
- package/.aios-core/product/templates/token-exports-tailwind-tmpl.js +395 -0
- package/.aios-core/product/templates/tokens-schema-tmpl.yaml +305 -0
- package/.aios-core/product/templates/workflow-template.yaml +134 -0
- package/.aios-core/quality/metrics-collector.js +572 -0
- package/.aios-core/quality/metrics-hook.js +260 -0
- package/.aios-core/quality/schemas/quality-metrics.schema.json +233 -0
- package/.aios-core/quality/seed-metrics.js +336 -0
- package/.aios-core/scripts/README.md +354 -0
- package/.aios-core/scripts/aios-doc-template.md +325 -0
- package/.aios-core/scripts/batch-migrate-phase1.ps1 +36 -0
- package/.aios-core/scripts/batch-migrate-phase2.ps1 +88 -0
- package/.aios-core/scripts/batch-migrate-phase3.ps1 +45 -0
- package/.aios-core/scripts/command-execution-hook.js +201 -0
- package/.aios-core/scripts/context-detector.js +226 -0
- package/.aios-core/scripts/elicitation-engine.js +385 -0
- package/.aios-core/scripts/elicitation-session-manager.js +300 -0
- package/.aios-core/scripts/migrate-framework-docs.sh +300 -0
- package/.aios-core/scripts/session-context-loader.js +286 -0
- package/.aios-core/scripts/test-template-system.js +941 -0
- package/.aios-core/scripts/validate-phase1.ps1 +35 -0
- package/.aios-core/scripts/workflow-management.md +69 -0
- package/.aios-core/tasks/find-component.md.legacy +391 -0
- package/.aios-core/tasks/generate-commit-message.md.legacy +426 -0
- package/.aios-core/tasks/generate-migration.md.legacy +382 -0
- package/.aios-core/tasks/rollback-modification.md.legacy +307 -0
- package/.aios-core/tasks/update-tests.md.legacy +283 -0
- package/.aios-core/user-guide.md +1413 -0
- package/.aios-core/working-in-the-brownfield.md +361 -0
- package/.claude/CLAUDE.md +221 -0
- package/LICENSE +48 -0
- package/README.md +703 -0
- package/bin/aios-init-old.js +532 -0
- package/bin/aios-init-v4.js +390 -0
- package/bin/aios-init.backup-v1.1.4.js +352 -0
- package/bin/aios-init.js +736 -0
- package/bin/aios-minimal.js +26 -0
- package/bin/aios.js +279 -0
- package/bin/migrate-pm-config.js +219 -0
- package/bin/modules/env-config.js +436 -0
- package/bin/modules/mcp-installer.js +383 -0
- package/bin/utils/install-errors.js +339 -0
- package/bin/utils/install-transaction.js +445 -0
- package/index.d.ts +19 -0
- package/index.esm.js +21 -0
- package/index.js +94 -0
- package/package.json +161 -0
- package/packages/installer/package.json +39 -0
- package/packages/installer/src/config/configure-environment.js +312 -0
- package/packages/installer/src/config/templates/core-config-template.js +183 -0
- package/packages/installer/src/config/templates/env-template.js +127 -0
- package/packages/installer/src/config/validation/config-validator.js +243 -0
- package/packages/installer/src/detection/detect-project-type.js +81 -0
- package/packages/installer/src/wizard/wizard.js +244 -0
- package/packages/installer/tests/integration/environment-configuration.test.js +328 -0
- package/packages/installer/tests/integration/wizard-detection.test.js +349 -0
- package/packages/installer/tests/unit/config-validator.test.js +315 -0
- package/packages/installer/tests/unit/detection/detect-project-type.test.js +401 -0
- package/packages/installer/tests/unit/env-template.test.js +185 -0
- package/src/config/ide-configs.js +189 -0
- package/src/installer/aios-core-installer.js +319 -0
- package/src/installer/dependency-installer.js +335 -0
- package/src/utils/aios-colors.js +234 -0
- package/src/wizard/feedback.js +218 -0
- package/src/wizard/ide-config-generator.js +488 -0
- package/src/wizard/ide-selector.js +84 -0
- package/src/wizard/index.js +589 -0
- package/src/wizard/questions.js +249 -0
- package/src/wizard/validation/index.js +120 -0
- package/src/wizard/validation/report-generator.js +269 -0
- package/src/wizard/validation/troubleshooting-system.js +346 -0
- package/src/wizard/validation/validators/config-validator.js +362 -0
- package/src/wizard/validation/validators/dependency-validator.js +333 -0
- package/src/wizard/validation/validators/file-structure-validator.js +181 -0
- package/src/wizard/validation/validators/mcp-health-checker.js +310 -0
- package/src/wizard/validators.js +274 -0
- package/templates/squad/LICENSE +21 -0
- package/templates/squad/README.md +37 -0
- package/templates/squad/agents/example-agent.yaml +36 -0
- package/templates/squad/package.json +19 -0
- package/templates/squad/squad.yaml +25 -0
- package/templates/squad/tasks/example-task.yaml +46 -0
- package/templates/squad/templates/example-template.md +24 -0
- package/templates/squad/tests/example-agent.test.js +53 -0
- package/templates/squad/workflows/example-workflow.yaml +54 -0
- package/tools/package-builder.js +35 -0
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
---
|
|
2
|
+
template_id: task
|
|
3
|
+
template_name: Task
|
|
4
|
+
version: 1.0
|
|
5
|
+
variables:
|
|
6
|
+
- name: id
|
|
7
|
+
type: string
|
|
8
|
+
required: true
|
|
9
|
+
prompt: "Task ID:"
|
|
10
|
+
- name: name
|
|
11
|
+
type: string
|
|
12
|
+
required: true
|
|
13
|
+
prompt: "Task name:"
|
|
14
|
+
- name: description
|
|
15
|
+
type: text
|
|
16
|
+
required: true
|
|
17
|
+
prompt: "Task description:"
|
|
18
|
+
- name: status
|
|
19
|
+
type: choice
|
|
20
|
+
required: true
|
|
21
|
+
choices: [Pending, In Progress, Completed, Blocked, Cancelled]
|
|
22
|
+
default: Pending
|
|
23
|
+
- name: type
|
|
24
|
+
type: choice
|
|
25
|
+
required: false
|
|
26
|
+
choices: [Development, Design, Testing, Documentation, Research, Bugfix, Refactor]
|
|
27
|
+
default: Development
|
|
28
|
+
- name: priority
|
|
29
|
+
type: choice
|
|
30
|
+
required: false
|
|
31
|
+
choices: [P0, P1, P2, P3]
|
|
32
|
+
default: P1
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
# Task: {{name}}
|
|
36
|
+
|
|
37
|
+
**ID:** {{id}}
|
|
38
|
+
**Status:** {{#ifEqual status "Pending"}}⏳{{/ifEqual}}{{#ifEqual status "In Progress"}}🔄{{/ifEqual}}{{#ifEqual status "Completed"}}✅{{/ifEqual}}{{#ifEqual status "Blocked"}}🚫{{/ifEqual}}{{#ifEqual status "Cancelled"}}❌{{/ifEqual}} {{status}}
|
|
39
|
+
**Type:** {{default type "Development"}}
|
|
40
|
+
**Priority:** {{default priority "P1"}}
|
|
41
|
+
{{#if estimate}}**Estimate:** {{estimate}}{{/if}}
|
|
42
|
+
{{#if assignee}}**Assignee:** {{assignee}}{{/if}}
|
|
43
|
+
{{#if storyRef}}**Story:** {{storyRef}}{{/if}}
|
|
44
|
+
**Created:** {{formatDate now "YYYY-MM-DD"}}
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Description
|
|
49
|
+
|
|
50
|
+
{{description}}
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
{{#if inputs}}
|
|
55
|
+
## Inputs
|
|
56
|
+
|
|
57
|
+
{{#each inputs}}
|
|
58
|
+
- {{this}}
|
|
59
|
+
{{/each}}
|
|
60
|
+
{{/if}}
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
{{#if outputs}}
|
|
65
|
+
## Expected Outputs
|
|
66
|
+
|
|
67
|
+
{{#each outputs}}
|
|
68
|
+
- {{this}}
|
|
69
|
+
{{/each}}
|
|
70
|
+
{{/if}}
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Steps
|
|
75
|
+
|
|
76
|
+
{{#if steps}}
|
|
77
|
+
{{#each steps}}
|
|
78
|
+
{{add @index 1}}. [{{#if this.completed}}x{{else}} {{/if}}] {{this.step}}
|
|
79
|
+
{{#if this.notes}} _Note: {{this.notes}}_{{/if}}
|
|
80
|
+
{{/each}}
|
|
81
|
+
{{else}}
|
|
82
|
+
_Steps to be defined._
|
|
83
|
+
{{/if}}
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
{{#if validation}}
|
|
88
|
+
## Validation
|
|
89
|
+
|
|
90
|
+
### Criteria
|
|
91
|
+
{{#each validation.criteria}}
|
|
92
|
+
- [ ] {{this}}
|
|
93
|
+
{{/each}}
|
|
94
|
+
|
|
95
|
+
{{#if validation.commands}}
|
|
96
|
+
### Commands
|
|
97
|
+
```bash
|
|
98
|
+
{{#each validation.commands}}
|
|
99
|
+
{{this}}
|
|
100
|
+
{{/each}}
|
|
101
|
+
```
|
|
102
|
+
{{/if}}
|
|
103
|
+
{{/if}}
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
{{#if dependencies}}
|
|
108
|
+
## Dependencies
|
|
109
|
+
|
|
110
|
+
{{#each dependencies}}
|
|
111
|
+
- {{this}}
|
|
112
|
+
{{/each}}
|
|
113
|
+
{{/if}}
|
|
114
|
+
|
|
115
|
+
{{#if blockedBy}}
|
|
116
|
+
## Blocked By
|
|
117
|
+
|
|
118
|
+
{{blockedBy}}
|
|
119
|
+
{{/if}}
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
{{#if files}}
|
|
124
|
+
## Files Affected
|
|
125
|
+
|
|
126
|
+
| Path | Action |
|
|
127
|
+
|------|--------|
|
|
128
|
+
{{#each files}}
|
|
129
|
+
| `{{this.path}}` | {{this.action}} |
|
|
130
|
+
{{/each}}
|
|
131
|
+
{{/if}}
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
{{#if elicitation}}
|
|
136
|
+
{{#if elicitation.enabled}}
|
|
137
|
+
## Elicitation
|
|
138
|
+
|
|
139
|
+
{{#each elicitation.questions}}
|
|
140
|
+
### {{add @index 1}}. {{this.question}}
|
|
141
|
+
{{#ifEqual this.type "choice"}}
|
|
142
|
+
Options:
|
|
143
|
+
{{#each this.options}}
|
|
144
|
+
- {{this}}
|
|
145
|
+
{{/each}}
|
|
146
|
+
{{/ifEqual}}
|
|
147
|
+
{{/each}}
|
|
148
|
+
{{/if}}
|
|
149
|
+
{{/if}}
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
{{#if notes}}
|
|
154
|
+
## Notes
|
|
155
|
+
|
|
156
|
+
{{notes}}
|
|
157
|
+
{{/if}}
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
{{#if completedAt}}
|
|
162
|
+
## Completion
|
|
163
|
+
|
|
164
|
+
**Completed At:** {{completedAt}}
|
|
165
|
+
{{/if}}
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
**Generated by:** AIOS Template Engine v2.0
|
|
170
|
+
**Template Version:** task-1.0
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
-- COMMENT ON Examples Template
|
|
2
|
+
-- Purpose: Document database objects inline using PostgreSQL COMMENT ON
|
|
3
|
+
-- Created: :created_date
|
|
4
|
+
-- Author: :author
|
|
5
|
+
--
|
|
6
|
+
-- IMPORTANT: Comments are metadata that help future developers understand the schema
|
|
7
|
+
|
|
8
|
+
-- =============================================================================
|
|
9
|
+
-- TABLE COMMENTS
|
|
10
|
+
-- =============================================================================
|
|
11
|
+
|
|
12
|
+
-- Basic table comment
|
|
13
|
+
COMMENT ON TABLE :table_name IS 'Description of what this table stores and its purpose';
|
|
14
|
+
|
|
15
|
+
-- Detailed table comment with usage notes
|
|
16
|
+
COMMENT ON TABLE users IS
|
|
17
|
+
'User accounts for the application.
|
|
18
|
+
Primary user data is stored here, with profile details in user_profiles.
|
|
19
|
+
RLS policies ensure users can only access their own data.
|
|
20
|
+
Related tables: user_profiles, user_roles, user_sessions';
|
|
21
|
+
|
|
22
|
+
-- =============================================================================
|
|
23
|
+
-- COLUMN COMMENTS
|
|
24
|
+
-- =============================================================================
|
|
25
|
+
|
|
26
|
+
-- Standard audit columns
|
|
27
|
+
COMMENT ON COLUMN :table_name.id IS 'Unique identifier (UUID v4)';
|
|
28
|
+
COMMENT ON COLUMN :table_name.created_at IS 'Timestamp when record was created';
|
|
29
|
+
COMMENT ON COLUMN :table_name.updated_at IS 'Timestamp of last modification';
|
|
30
|
+
COMMENT ON COLUMN :table_name.deleted_at IS 'Soft delete timestamp (NULL if active)';
|
|
31
|
+
|
|
32
|
+
-- Business columns with context
|
|
33
|
+
COMMENT ON COLUMN users.email IS 'Primary email for login and notifications. Must be unique.';
|
|
34
|
+
COMMENT ON COLUMN users.status IS 'Account status: active, pending, suspended, deleted';
|
|
35
|
+
|
|
36
|
+
-- Columns with constraints explained
|
|
37
|
+
COMMENT ON COLUMN orders.total_amount IS
|
|
38
|
+
'Order total in cents (not dollars). Calculated from line items.
|
|
39
|
+
Constraint: Must be >= 0';
|
|
40
|
+
|
|
41
|
+
-- Foreign key columns
|
|
42
|
+
COMMENT ON COLUMN orders.user_id IS
|
|
43
|
+
'References users.id. Owner of this order.
|
|
44
|
+
CASCADE on delete (user deletion removes orders).';
|
|
45
|
+
|
|
46
|
+
-- JSONB columns with structure
|
|
47
|
+
COMMENT ON COLUMN users.preferences IS
|
|
48
|
+
'User preferences as JSONB. Structure:
|
|
49
|
+
{
|
|
50
|
+
"theme": "dark" | "light",
|
|
51
|
+
"notifications": { "email": boolean, "push": boolean },
|
|
52
|
+
"language": "en" | "pt" | "es"
|
|
53
|
+
}';
|
|
54
|
+
|
|
55
|
+
-- =============================================================================
|
|
56
|
+
-- INDEX COMMENTS
|
|
57
|
+
-- =============================================================================
|
|
58
|
+
|
|
59
|
+
COMMENT ON INDEX idx_users_email IS 'Unique index for email lookups and login';
|
|
60
|
+
COMMENT ON INDEX idx_orders_user_id IS 'Foreign key index for user order queries';
|
|
61
|
+
COMMENT ON INDEX idx_orders_created_at IS 'Date range queries on order creation';
|
|
62
|
+
|
|
63
|
+
-- Composite index explanation
|
|
64
|
+
COMMENT ON INDEX idx_orders_user_status IS
|
|
65
|
+
'Composite index for filtering user orders by status.
|
|
66
|
+
Covers queries: WHERE user_id = ? AND status = ?';
|
|
67
|
+
|
|
68
|
+
-- =============================================================================
|
|
69
|
+
-- CONSTRAINT COMMENTS
|
|
70
|
+
-- =============================================================================
|
|
71
|
+
|
|
72
|
+
-- Check constraints
|
|
73
|
+
COMMENT ON CONSTRAINT orders_total_positive ON orders IS
|
|
74
|
+
'Ensures total_amount is never negative';
|
|
75
|
+
|
|
76
|
+
COMMENT ON CONSTRAINT users_email_format ON users IS
|
|
77
|
+
'Validates email format using regex pattern';
|
|
78
|
+
|
|
79
|
+
-- Foreign key constraints
|
|
80
|
+
COMMENT ON CONSTRAINT orders_user_id_fkey ON orders IS
|
|
81
|
+
'Links order to user. ON DELETE CASCADE removes orphan orders.';
|
|
82
|
+
|
|
83
|
+
-- =============================================================================
|
|
84
|
+
-- FUNCTION COMMENTS
|
|
85
|
+
-- =============================================================================
|
|
86
|
+
|
|
87
|
+
COMMENT ON FUNCTION update_updated_at_column() IS
|
|
88
|
+
'Trigger function to auto-update updated_at column.
|
|
89
|
+
Used by: All tables with updated_at column.
|
|
90
|
+
Trigger timing: BEFORE UPDATE FOR EACH ROW';
|
|
91
|
+
|
|
92
|
+
COMMENT ON FUNCTION calculate_order_total(UUID) IS
|
|
93
|
+
'Calculates order total from line items.
|
|
94
|
+
Parameters: order_id UUID
|
|
95
|
+
Returns: NUMERIC(10,2) total in cents
|
|
96
|
+
Usage: SELECT calculate_order_total(order_id) FROM orders';
|
|
97
|
+
|
|
98
|
+
-- =============================================================================
|
|
99
|
+
-- TRIGGER COMMENTS
|
|
100
|
+
-- =============================================================================
|
|
101
|
+
|
|
102
|
+
COMMENT ON TRIGGER trigger_orders_updated_at ON orders IS
|
|
103
|
+
'Auto-updates updated_at on row modification';
|
|
104
|
+
|
|
105
|
+
COMMENT ON TRIGGER trigger_orders_audit ON orders IS
|
|
106
|
+
'Logs all changes to audit_log table';
|
|
107
|
+
|
|
108
|
+
-- =============================================================================
|
|
109
|
+
-- VIEW COMMENTS
|
|
110
|
+
-- =============================================================================
|
|
111
|
+
|
|
112
|
+
COMMENT ON VIEW user_dashboard IS
|
|
113
|
+
'Aggregated user data for dashboard display.
|
|
114
|
+
Includes: user info, order counts, recent activity.
|
|
115
|
+
Performance: Uses materialized subqueries for counts.
|
|
116
|
+
Refresh: Live data (not materialized)';
|
|
117
|
+
|
|
118
|
+
-- =============================================================================
|
|
119
|
+
-- TYPE COMMENTS (for custom types)
|
|
120
|
+
-- =============================================================================
|
|
121
|
+
|
|
122
|
+
-- COMMENT ON TYPE order_status IS
|
|
123
|
+
-- 'Enum for order lifecycle: pending, processing, shipped, delivered, cancelled';
|
|
124
|
+
|
|
125
|
+
-- =============================================================================
|
|
126
|
+
-- SCHEMA COMMENTS
|
|
127
|
+
-- =============================================================================
|
|
128
|
+
|
|
129
|
+
COMMENT ON SCHEMA public IS 'Main application schema with user-facing tables';
|
|
130
|
+
-- COMMENT ON SCHEMA audit IS 'Audit logging and compliance tracking';
|
|
131
|
+
-- COMMENT ON SCHEMA analytics IS 'Aggregated data for reporting';
|
|
132
|
+
|
|
133
|
+
-- =============================================================================
|
|
134
|
+
-- VIEWING COMMENTS
|
|
135
|
+
-- =============================================================================
|
|
136
|
+
|
|
137
|
+
-- View table comments
|
|
138
|
+
SELECT
|
|
139
|
+
t.table_name,
|
|
140
|
+
pg_catalog.obj_description(
|
|
141
|
+
(quote_ident(t.table_schema) || '.' || quote_ident(t.table_name))::regclass,
|
|
142
|
+
'pg_class'
|
|
143
|
+
) AS comment
|
|
144
|
+
FROM information_schema.tables t
|
|
145
|
+
WHERE t.table_schema = 'public'
|
|
146
|
+
AND t.table_type = 'BASE TABLE';
|
|
147
|
+
|
|
148
|
+
-- View column comments
|
|
149
|
+
SELECT
|
|
150
|
+
c.table_name,
|
|
151
|
+
c.column_name,
|
|
152
|
+
pg_catalog.col_description(
|
|
153
|
+
(quote_ident(c.table_schema) || '.' || quote_ident(c.table_name))::regclass,
|
|
154
|
+
c.ordinal_position
|
|
155
|
+
) AS comment
|
|
156
|
+
FROM information_schema.columns c
|
|
157
|
+
WHERE c.table_schema = 'public'
|
|
158
|
+
ORDER BY c.table_name, c.ordinal_position;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
-- Migration Script Template
|
|
2
|
+
-- Migration: :migration_name
|
|
3
|
+
-- Created: :created_date
|
|
4
|
+
-- Author: :author
|
|
5
|
+
-- Description: :description
|
|
6
|
+
--
|
|
7
|
+
-- IMPORTANT: Run in transaction, test with dry-run first
|
|
8
|
+
-- ROLLBACK: See tmpl-rollback-script.sql for corresponding rollback
|
|
9
|
+
|
|
10
|
+
BEGIN;
|
|
11
|
+
|
|
12
|
+
-- =============================================================================
|
|
13
|
+
-- PRE-MIGRATION CHECKS
|
|
14
|
+
-- =============================================================================
|
|
15
|
+
|
|
16
|
+
-- Verify prerequisites are met
|
|
17
|
+
DO $$
|
|
18
|
+
BEGIN
|
|
19
|
+
-- Add any precondition checks here
|
|
20
|
+
-- Example: ASSERT (SELECT EXISTS (SELECT 1 FROM :prerequisite_table));
|
|
21
|
+
RAISE NOTICE 'Pre-migration checks passed';
|
|
22
|
+
END $$;
|
|
23
|
+
|
|
24
|
+
-- =============================================================================
|
|
25
|
+
-- SCHEMA CHANGES
|
|
26
|
+
-- =============================================================================
|
|
27
|
+
|
|
28
|
+
-- Create new table (if needed)
|
|
29
|
+
CREATE TABLE IF NOT EXISTS :table_name (
|
|
30
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
31
|
+
-- Add columns here
|
|
32
|
+
:column_name :column_type :constraints,
|
|
33
|
+
|
|
34
|
+
-- Standard audit columns
|
|
35
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
36
|
+
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
-- Add column to existing table (if needed)
|
|
40
|
+
-- ALTER TABLE :existing_table ADD COLUMN IF NOT EXISTS :new_column :column_type;
|
|
41
|
+
|
|
42
|
+
-- Create index (if needed)
|
|
43
|
+
-- CREATE INDEX IF NOT EXISTS idx_:table_:column ON :table_name (:column_name);
|
|
44
|
+
|
|
45
|
+
-- =============================================================================
|
|
46
|
+
-- DATA MIGRATION (if needed)
|
|
47
|
+
-- =============================================================================
|
|
48
|
+
|
|
49
|
+
-- Migrate data from old structure to new
|
|
50
|
+
-- INSERT INTO :new_table (col1, col2)
|
|
51
|
+
-- SELECT old_col1, old_col2 FROM :old_table;
|
|
52
|
+
|
|
53
|
+
-- =============================================================================
|
|
54
|
+
-- POST-MIGRATION SETUP
|
|
55
|
+
-- =============================================================================
|
|
56
|
+
|
|
57
|
+
-- Add updated_at trigger
|
|
58
|
+
CREATE OR REPLACE FUNCTION update_updated_at_column()
|
|
59
|
+
RETURNS TRIGGER AS $$
|
|
60
|
+
BEGIN
|
|
61
|
+
NEW.updated_at = NOW();
|
|
62
|
+
RETURN NEW;
|
|
63
|
+
END;
|
|
64
|
+
$$ LANGUAGE plpgsql;
|
|
65
|
+
|
|
66
|
+
DROP TRIGGER IF EXISTS trigger_update_:table_name_updated_at ON :table_name;
|
|
67
|
+
CREATE TRIGGER trigger_update_:table_name_updated_at
|
|
68
|
+
BEFORE UPDATE ON :table_name
|
|
69
|
+
FOR EACH ROW
|
|
70
|
+
EXECUTE FUNCTION update_updated_at_column();
|
|
71
|
+
|
|
72
|
+
-- Add table comments
|
|
73
|
+
COMMENT ON TABLE :table_name IS ':table_description';
|
|
74
|
+
COMMENT ON COLUMN :table_name.:column_name IS ':column_description';
|
|
75
|
+
|
|
76
|
+
-- =============================================================================
|
|
77
|
+
-- VERIFICATION
|
|
78
|
+
-- =============================================================================
|
|
79
|
+
|
|
80
|
+
DO $$
|
|
81
|
+
BEGIN
|
|
82
|
+
-- Verify migration was successful
|
|
83
|
+
ASSERT (SELECT EXISTS (
|
|
84
|
+
SELECT 1 FROM information_schema.tables
|
|
85
|
+
WHERE table_name = ':table_name'
|
|
86
|
+
)), 'Table :table_name was not created';
|
|
87
|
+
|
|
88
|
+
RAISE NOTICE 'Migration completed successfully';
|
|
89
|
+
END $$;
|
|
90
|
+
|
|
91
|
+
COMMIT;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
-- Granular RLS Policies Template
|
|
2
|
+
-- Table: :table_name
|
|
3
|
+
-- Security Model: Granular (separate policies per operation)
|
|
4
|
+
-- Created: :created_date
|
|
5
|
+
--
|
|
6
|
+
-- This template creates separate policies for SELECT, INSERT, UPDATE, DELETE
|
|
7
|
+
-- Useful when different users have different permissions per operation
|
|
8
|
+
|
|
9
|
+
-- Enable RLS on table
|
|
10
|
+
ALTER TABLE :table_name ENABLE ROW LEVEL SECURITY;
|
|
11
|
+
|
|
12
|
+
-- Force RLS for table owner too (recommended for security)
|
|
13
|
+
ALTER TABLE :table_name FORCE ROW LEVEL SECURITY;
|
|
14
|
+
|
|
15
|
+
-- =============================================================================
|
|
16
|
+
-- SELECT POLICY - Who can read rows
|
|
17
|
+
-- =============================================================================
|
|
18
|
+
DROP POLICY IF EXISTS ":table_name_select" ON :table_name;
|
|
19
|
+
CREATE POLICY ":table_name_select"
|
|
20
|
+
ON :table_name
|
|
21
|
+
FOR SELECT
|
|
22
|
+
TO authenticated
|
|
23
|
+
USING (
|
|
24
|
+
-- Owner can read their own rows
|
|
25
|
+
auth.uid() = user_id
|
|
26
|
+
-- OR user has read permission via role
|
|
27
|
+
OR EXISTS (
|
|
28
|
+
SELECT 1 FROM user_roles
|
|
29
|
+
WHERE user_id = auth.uid()
|
|
30
|
+
AND role IN ('admin', 'reader')
|
|
31
|
+
)
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
-- =============================================================================
|
|
35
|
+
-- INSERT POLICY - Who can create rows
|
|
36
|
+
-- =============================================================================
|
|
37
|
+
DROP POLICY IF EXISTS ":table_name_insert" ON :table_name;
|
|
38
|
+
CREATE POLICY ":table_name_insert"
|
|
39
|
+
ON :table_name
|
|
40
|
+
FOR INSERT
|
|
41
|
+
TO authenticated
|
|
42
|
+
WITH CHECK (
|
|
43
|
+
-- User can only insert rows they will own
|
|
44
|
+
auth.uid() = user_id
|
|
45
|
+
-- OR user has creator permission
|
|
46
|
+
OR EXISTS (
|
|
47
|
+
SELECT 1 FROM user_roles
|
|
48
|
+
WHERE user_id = auth.uid()
|
|
49
|
+
AND role IN ('admin', 'creator')
|
|
50
|
+
)
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
-- =============================================================================
|
|
54
|
+
-- UPDATE POLICY - Who can modify rows
|
|
55
|
+
-- =============================================================================
|
|
56
|
+
DROP POLICY IF EXISTS ":table_name_update" ON :table_name;
|
|
57
|
+
CREATE POLICY ":table_name_update"
|
|
58
|
+
ON :table_name
|
|
59
|
+
FOR UPDATE
|
|
60
|
+
TO authenticated
|
|
61
|
+
USING (
|
|
62
|
+
-- Can only see rows to update if owner
|
|
63
|
+
auth.uid() = user_id
|
|
64
|
+
OR EXISTS (
|
|
65
|
+
SELECT 1 FROM user_roles
|
|
66
|
+
WHERE user_id = auth.uid()
|
|
67
|
+
AND role IN ('admin', 'editor')
|
|
68
|
+
)
|
|
69
|
+
)
|
|
70
|
+
WITH CHECK (
|
|
71
|
+
-- Can only update to valid state
|
|
72
|
+
auth.uid() = user_id
|
|
73
|
+
OR EXISTS (
|
|
74
|
+
SELECT 1 FROM user_roles
|
|
75
|
+
WHERE user_id = auth.uid()
|
|
76
|
+
AND role IN ('admin', 'editor')
|
|
77
|
+
)
|
|
78
|
+
);
|
|
79
|
+
|
|
80
|
+
-- =============================================================================
|
|
81
|
+
-- DELETE POLICY - Who can delete rows
|
|
82
|
+
-- =============================================================================
|
|
83
|
+
DROP POLICY IF EXISTS ":table_name_delete" ON :table_name;
|
|
84
|
+
CREATE POLICY ":table_name_delete"
|
|
85
|
+
ON :table_name
|
|
86
|
+
FOR DELETE
|
|
87
|
+
TO authenticated
|
|
88
|
+
USING (
|
|
89
|
+
-- Only owner or admin can delete
|
|
90
|
+
auth.uid() = user_id
|
|
91
|
+
OR EXISTS (
|
|
92
|
+
SELECT 1 FROM user_roles
|
|
93
|
+
WHERE user_id = auth.uid()
|
|
94
|
+
AND role = 'admin'
|
|
95
|
+
)
|
|
96
|
+
);
|
|
97
|
+
|
|
98
|
+
-- =============================================================================
|
|
99
|
+
-- VERIFICATION
|
|
100
|
+
-- =============================================================================
|
|
101
|
+
-- Test these policies with:
|
|
102
|
+
-- SET LOCAL ROLE authenticated;
|
|
103
|
+
-- SET LOCAL request.jwt.claims = '{"sub": "user-uuid-here"}';
|
|
104
|
+
-- SELECT * FROM :table_name; -- Should only return authorized rows
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
-- KISS single FOR ALL policy template (owner-only by column user_id)
|
|
2
|
+
ALTER TABLE :table ENABLE ROW LEVEL SECURITY;
|
|
3
|
+
|
|
4
|
+
DROP POLICY IF EXISTS ":table_kiss_all" ON :table;
|
|
5
|
+
CREATE POLICY ":table_kiss_all"
|
|
6
|
+
ON :table
|
|
7
|
+
FOR ALL
|
|
8
|
+
TO authenticated
|
|
9
|
+
USING (auth.uid() = user_id)
|
|
10
|
+
WITH CHECK (auth.uid() = user_id);
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
-- RLS Roles Template
|
|
2
|
+
-- Role-Based Access Control (RBAC) foundation for RLS policies
|
|
3
|
+
-- Created: :created_date
|
|
4
|
+
--
|
|
5
|
+
-- This template sets up the foundation for role-based RLS policies
|
|
6
|
+
|
|
7
|
+
-- =============================================================================
|
|
8
|
+
-- ROLES TABLE
|
|
9
|
+
-- =============================================================================
|
|
10
|
+
CREATE TABLE IF NOT EXISTS roles (
|
|
11
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
12
|
+
name TEXT NOT NULL UNIQUE,
|
|
13
|
+
description TEXT,
|
|
14
|
+
permissions JSONB DEFAULT '[]'::JSONB,
|
|
15
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
16
|
+
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
-- Insert default roles
|
|
20
|
+
INSERT INTO roles (name, description, permissions) VALUES
|
|
21
|
+
('admin', 'Full system access', '["*"]'::JSONB),
|
|
22
|
+
('editor', 'Can read and modify content', '["read", "write", "update"]'::JSONB),
|
|
23
|
+
('viewer', 'Read-only access', '["read"]'::JSONB),
|
|
24
|
+
('creator', 'Can create new content', '["read", "write"]'::JSONB)
|
|
25
|
+
ON CONFLICT (name) DO NOTHING;
|
|
26
|
+
|
|
27
|
+
-- =============================================================================
|
|
28
|
+
-- USER ROLES TABLE (Many-to-Many)
|
|
29
|
+
-- =============================================================================
|
|
30
|
+
CREATE TABLE IF NOT EXISTS user_roles (
|
|
31
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
32
|
+
user_id UUID NOT NULL REFERENCES auth.users(id) ON DELETE CASCADE,
|
|
33
|
+
role_id UUID NOT NULL REFERENCES roles(id) ON DELETE CASCADE,
|
|
34
|
+
granted_by UUID REFERENCES auth.users(id),
|
|
35
|
+
granted_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
36
|
+
expires_at TIMESTAMPTZ, -- NULL means never expires
|
|
37
|
+
|
|
38
|
+
UNIQUE(user_id, role_id)
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
-- Index for fast role lookups
|
|
42
|
+
CREATE INDEX IF NOT EXISTS idx_user_roles_user_id ON user_roles(user_id);
|
|
43
|
+
CREATE INDEX IF NOT EXISTS idx_user_roles_role_id ON user_roles(role_id);
|
|
44
|
+
|
|
45
|
+
-- =============================================================================
|
|
46
|
+
-- HELPER FUNCTIONS FOR RLS
|
|
47
|
+
-- =============================================================================
|
|
48
|
+
|
|
49
|
+
-- Check if user has a specific role
|
|
50
|
+
CREATE OR REPLACE FUNCTION has_role(role_name TEXT)
|
|
51
|
+
RETURNS BOOLEAN AS $$
|
|
52
|
+
BEGIN
|
|
53
|
+
RETURN EXISTS (
|
|
54
|
+
SELECT 1
|
|
55
|
+
FROM user_roles ur
|
|
56
|
+
JOIN roles r ON ur.role_id = r.id
|
|
57
|
+
WHERE ur.user_id = auth.uid()
|
|
58
|
+
AND r.name = role_name
|
|
59
|
+
AND (ur.expires_at IS NULL OR ur.expires_at > NOW())
|
|
60
|
+
);
|
|
61
|
+
END;
|
|
62
|
+
$$ LANGUAGE plpgsql SECURITY DEFINER STABLE;
|
|
63
|
+
|
|
64
|
+
-- Check if user has any of the specified roles
|
|
65
|
+
CREATE OR REPLACE FUNCTION has_any_role(role_names TEXT[])
|
|
66
|
+
RETURNS BOOLEAN AS $$
|
|
67
|
+
BEGIN
|
|
68
|
+
RETURN EXISTS (
|
|
69
|
+
SELECT 1
|
|
70
|
+
FROM user_roles ur
|
|
71
|
+
JOIN roles r ON ur.role_id = r.id
|
|
72
|
+
WHERE ur.user_id = auth.uid()
|
|
73
|
+
AND r.name = ANY(role_names)
|
|
74
|
+
AND (ur.expires_at IS NULL OR ur.expires_at > NOW())
|
|
75
|
+
);
|
|
76
|
+
END;
|
|
77
|
+
$$ LANGUAGE plpgsql SECURITY DEFINER STABLE;
|
|
78
|
+
|
|
79
|
+
-- Check if user has a specific permission
|
|
80
|
+
CREATE OR REPLACE FUNCTION has_permission(permission TEXT)
|
|
81
|
+
RETURNS BOOLEAN AS $$
|
|
82
|
+
BEGIN
|
|
83
|
+
RETURN EXISTS (
|
|
84
|
+
SELECT 1
|
|
85
|
+
FROM user_roles ur
|
|
86
|
+
JOIN roles r ON ur.role_id = r.id
|
|
87
|
+
WHERE ur.user_id = auth.uid()
|
|
88
|
+
AND (
|
|
89
|
+
r.permissions @> '["*"]'::JSONB
|
|
90
|
+
OR r.permissions @> to_jsonb(permission)
|
|
91
|
+
)
|
|
92
|
+
AND (ur.expires_at IS NULL OR ur.expires_at > NOW())
|
|
93
|
+
);
|
|
94
|
+
END;
|
|
95
|
+
$$ LANGUAGE plpgsql SECURITY DEFINER STABLE;
|
|
96
|
+
|
|
97
|
+
-- =============================================================================
|
|
98
|
+
-- RLS ON ROLES TABLES
|
|
99
|
+
-- =============================================================================
|
|
100
|
+
|
|
101
|
+
-- Roles table: Admins can manage, everyone can read
|
|
102
|
+
ALTER TABLE roles ENABLE ROW LEVEL SECURITY;
|
|
103
|
+
|
|
104
|
+
CREATE POLICY "roles_select" ON roles
|
|
105
|
+
FOR SELECT TO authenticated
|
|
106
|
+
USING (true);
|
|
107
|
+
|
|
108
|
+
CREATE POLICY "roles_admin" ON roles
|
|
109
|
+
FOR ALL TO authenticated
|
|
110
|
+
USING (has_role('admin'))
|
|
111
|
+
WITH CHECK (has_role('admin'));
|
|
112
|
+
|
|
113
|
+
-- User roles: Users see their own, admins see all
|
|
114
|
+
ALTER TABLE user_roles ENABLE ROW LEVEL SECURITY;
|
|
115
|
+
|
|
116
|
+
CREATE POLICY "user_roles_select" ON user_roles
|
|
117
|
+
FOR SELECT TO authenticated
|
|
118
|
+
USING (user_id = auth.uid() OR has_role('admin'));
|
|
119
|
+
|
|
120
|
+
CREATE POLICY "user_roles_admin" ON user_roles
|
|
121
|
+
FOR ALL TO authenticated
|
|
122
|
+
USING (has_role('admin'))
|
|
123
|
+
WITH CHECK (has_role('admin'));
|
|
124
|
+
|
|
125
|
+
-- =============================================================================
|
|
126
|
+
-- USAGE EXAMPLE IN OTHER POLICIES
|
|
127
|
+
-- =============================================================================
|
|
128
|
+
--
|
|
129
|
+
-- CREATE POLICY "my_table_select" ON my_table
|
|
130
|
+
-- FOR SELECT TO authenticated
|
|
131
|
+
-- USING (
|
|
132
|
+
-- user_id = auth.uid()
|
|
133
|
+
-- OR has_any_role(ARRAY['admin', 'viewer'])
|
|
134
|
+
-- );
|
|
135
|
+
--
|