@polymorphism-tech/morph-spec 3.1.0 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +882 -3
- package/README.md +79 -18
- package/bin/detect-agents.js +1 -1
- package/bin/morph-spec.js +163 -26
- package/bin/task-manager.cjs +101 -7
- package/bin/validate.js +1 -1
- package/docs/cli-auto-detection.md +219 -0
- package/docs/getting-started.md +0 -5
- package/docs/llm-interaction-config.md +735 -0
- package/docs/troubleshooting.md +269 -0
- package/docs/v3.0/AGENTS.md +521 -0
- package/docs/v3.0/ANALYSIS.md +555 -0
- package/docs/v3.0/ARCHITECTURE.md +436 -0
- package/docs/v3.0/EXECUTION-FLOW.md +1304 -0
- package/docs/v3.0/FEATURES.md +688 -0
- package/docs/v3.0/README.md +231 -0
- package/docs/v3.0/ROADMAP.md +801 -0
- package/docs/validation-checklist.md +0 -1
- package/package.json +5 -1
- package/src/commands/agents/index.js +4 -0
- package/src/commands/agents/spawn-team.js +172 -0
- package/src/commands/{create-story.js → feature/create-story.js} +357 -354
- package/src/commands/feature/index.js +6 -0
- package/src/commands/{shard-spec.js → feature/shard-spec.js} +2 -2
- package/src/commands/{sprint-status.js → feature/sprint-status.js} +1 -1
- package/src/commands/{generate-context.js → generation/generate-context.js} +40 -40
- package/src/commands/{generate.js → generation/generate.js} +130 -3
- package/src/commands/generation/index.js +5 -0
- package/src/commands/index.js +16 -0
- package/src/commands/learning/capture-pattern.js +121 -0
- package/src/commands/learning/index.js +5 -0
- package/src/commands/learning/search-patterns.js +126 -0
- package/src/commands/{detect-agents.js → project/detect-agents.js} +178 -178
- package/src/commands/project/detect-workflow.js +174 -0
- package/src/commands/{detect.js → project/detect.js} +104 -104
- package/src/commands/{doctor.js → project/doctor.js} +356 -356
- package/src/commands/project/index.js +10 -0
- package/src/commands/{init.js → project/init.js} +305 -258
- package/src/commands/{sync.js → project/sync.js} +167 -167
- package/src/commands/{update.js → project/update.js} +240 -204
- package/src/commands/{advance-phase.js → state/advance-phase.js} +416 -266
- package/src/commands/state/approve.js +221 -0
- package/src/commands/state/index.js +8 -0
- package/src/commands/{rollback-phase.js → state/rollback-phase.js} +185 -185
- package/src/commands/{state.js → state/state.js} +334 -334
- package/src/commands/{validate-phase.js → state/validate-phase.js} +221 -221
- package/src/commands/tasks/index.js +4 -0
- package/src/commands/{task.js → tasks/task.js} +78 -78
- package/src/commands/templates/index.js +8 -0
- package/src/commands/templates/template-customize.js +101 -0
- package/src/commands/templates/template-list.js +128 -0
- package/src/commands/templates/template-render.js +95 -0
- package/src/commands/templates/template-show.js +131 -0
- package/src/commands/templates/template-validate.js +91 -0
- package/src/commands/utils/index.js +7 -0
- package/src/commands/utils/migrate-state.js +158 -0
- package/src/commands/{session-summary.js → utils/session-summary.js} +291 -291
- package/src/commands/{troubleshoot.js → utils/troubleshoot.js} +222 -222
- package/src/commands/utils/upgrade.js +346 -0
- package/src/commands/{analyze-blazor-concurrency.js → validation/analyze-blazor-concurrency.js} +193 -193
- package/src/commands/validation/index.js +8 -0
- package/src/commands/{lint-fluent.js → validation/lint-fluent.js} +352 -352
- package/src/commands/{validate-blazor-state.js → validation/validate-blazor-state.js} +210 -210
- package/src/commands/{validate-blazor.js → validation/validate-blazor.js} +156 -156
- package/src/commands/{validate-css.js → validation/validate-css.js} +84 -84
- package/src/core/index.js +10 -0
- package/src/core/registry/command-registry.js +302 -0
- package/src/core/registry/index.js +8 -0
- package/src/core/registry/validator-registry.js +204 -0
- package/src/core/state/index.js +8 -0
- package/src/core/state/phase-state-machine.js +214 -0
- package/src/{lib → core/state}/state-manager.js +572 -414
- package/src/core/templates/index.js +9 -0
- package/src/core/templates/template-data-sources.js +325 -0
- package/src/core/templates/template-registry.js +335 -0
- package/src/core/templates/template-renderer.js +477 -0
- package/src/core/templates/template-validator.js +296 -0
- package/src/core/workflows/index.js +7 -0
- package/src/core/workflows/workflow-detector.js +354 -0
- package/src/generator/config-generator.js +206 -0
- package/src/generator/templates/config.json.template +40 -0
- package/src/generator/templates/project.md.template +67 -0
- package/src/lib/{complexity-analyzer.js → analysis/complexity-analyzer.js} +441 -441
- package/src/lib/analysis/index.js +7 -0
- package/src/lib/checkpoints/checkpoint-hooks.js +258 -0
- package/src/lib/checkpoints/index.js +7 -0
- package/src/lib/detectors/config-detector.js +223 -223
- package/src/lib/detectors/conversation-analyzer.js +163 -163
- package/src/lib/{design-system-detector.js → detectors/design-system-detector.js} +187 -187
- package/src/lib/detectors/index.js +87 -84
- package/src/lib/detectors/standards-generator.js +275 -275
- package/src/lib/detectors/structure-detector.js +245 -245
- package/src/lib/{context-generator.js → generators/context-generator.js} +526 -516
- package/src/lib/generators/index.js +10 -0
- package/src/lib/generators/metadata-extractor.js +387 -0
- package/src/lib/{recap-generator.js → generators/recap-generator.js} +205 -205
- package/src/lib/learning/index.js +7 -0
- package/src/lib/orchestration/index.js +7 -0
- package/src/lib/{team-orchestrator.js → orchestration/team-orchestrator.js} +323 -323
- package/src/lib/stacks/index.js +7 -0
- package/src/lib/{stack-resolver.js → stacks/stack-resolver.js} +180 -148
- package/src/lib/standards/index.js +7 -0
- package/src/lib/{standards-context-injector.js → standards/standards-context-injector.js} +298 -288
- package/src/lib/troubleshooting/index.js +8 -0
- package/src/lib/{troubleshoot-grep.js → troubleshooting/troubleshoot-grep.js} +204 -204
- package/src/lib/{troubleshoot-index.js → troubleshooting/troubleshoot-index.js} +144 -144
- package/src/lib/validators/architecture/architecture-validator.js +387 -0
- package/src/lib/validators/architecture/index.js +7 -0
- package/src/lib/validators/architecture-validator.js +40 -367
- package/src/lib/{blazor-concurrency-analyzer.js → validators/blazor/blazor-concurrency-analyzer.js} +277 -288
- package/src/lib/{blazor-state-validator.js → validators/blazor/blazor-state-validator.js} +279 -291
- package/src/lib/{blazor-validator.js → validators/blazor/blazor-validator.js} +369 -374
- package/src/lib/validators/blazor/index.js +9 -0
- package/src/lib/validators/content/content-validator.js +351 -0
- package/src/lib/validators/content/index.js +7 -0
- package/src/lib/validators/content-validator.js +164 -0
- package/src/lib/validators/{contract-compliance-validator.js → contracts/contract-compliance-validator.js} +273 -273
- package/src/lib/validators/contracts/index.js +7 -0
- package/src/lib/{css-validator.js → validators/css/css-validator.js} +352 -352
- package/src/lib/validators/css/index.js +7 -0
- package/src/lib/validators/{design-system-validator.js → design-system/design-system-validator.js} +231 -231
- package/src/lib/validators/design-system/index.js +7 -0
- package/src/lib/validators/package-validator.js +41 -340
- package/src/lib/validators/packages/index.js +7 -0
- package/src/lib/validators/packages/package-validator.js +360 -0
- package/src/lib/validators/shared/index.js +12 -0
- package/src/lib/validators/shared/issue-counter.js +18 -0
- package/src/lib/validators/shared/result-formatter.js +124 -0
- package/src/lib/{spec-validator.js → validators/spec-validator.js} +258 -258
- package/src/lib/validators/ui/index.js +7 -0
- package/src/lib/validators/ui/ui-contrast-validator.js +422 -0
- package/src/lib/validators/ui-contrast-validator.js +31 -409
- package/src/lib/{validation-runner.js → validators/validation-runner.js} +286 -284
- package/src/llm/analyzer.js +215 -0
- package/src/llm/environment-detector.js +43 -0
- package/src/llm/few-shot-examples.js +216 -0
- package/src/llm/project-config-schema.json +188 -0
- package/src/llm/prompt-builder.js +96 -0
- package/src/orchestrator.js +206 -0
- package/src/sanitizer/context-sanitizer.js +221 -0
- package/src/sanitizer/patterns.js +163 -0
- package/src/scanner/project-scanner.js +242 -0
- package/src/ui/diff-display.js +91 -0
- package/src/ui/interactive-wizard.js +96 -0
- package/src/ui/user-review.js +211 -0
- package/src/ui/wizard-questions.js +188 -0
- package/src/utils/color-utils.js +70 -0
- package/src/utils/file-copier.js +188 -189
- package/src/utils/process-handler.js +97 -0
- package/src/writer/file-writer.js +86 -0
- package/stacks/blazor-azure/.claude/skills/level-2-domains/ai-agents/ai-system-architect.md +3 -3
- package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/api-designer.md +59 -0
- package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/dotnet-senior.md +45 -255
- package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/ef-modeler.md +33 -88
- package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/ms-agent-expert.md +25 -89
- package/stacks/blazor-azure/.claude/skills/level-2-domains/integrations/hangfire-orchestrator.md +64 -0
- package/stacks/blazor-azure/.morph/config/agents.json +879 -764
- package/stacks/blazor-azure/.morph/hooks/{pre-commit-tests.sh → pre-commit/tests-csharp.sh} +3 -2
- package/stacks/blazor-azure/.morph/templates/.gitkeep +0 -0
- package/stacks/blazor-azure/.morph/templates/infrastructure/github/workflows/cd-prod.yml.hbs +41 -0
- package/stacks/blazor-azure/.morph/templates/infrastructure/github/workflows/cd-staging.yml.hbs +24 -0
- package/stacks/blazor-azure/.morph/templates/infrastructure/github/workflows/ci-build.yml.hbs +23 -0
- package/stacks/nextjs-supabase/.claude/commands/morph-apply.md +221 -0
- package/stacks/nextjs-supabase/.claude/commands/morph-archive.md +79 -0
- package/stacks/nextjs-supabase/.claude/commands/morph-deploy.md +529 -0
- package/stacks/nextjs-supabase/.claude/commands/morph-infra.md +209 -0
- package/stacks/nextjs-supabase/.claude/commands/morph-preflight.md +227 -0
- package/stacks/nextjs-supabase/.claude/commands/morph-proposal.md +122 -0
- package/stacks/nextjs-supabase/.claude/commands/morph-status.md +86 -0
- package/stacks/nextjs-supabase/.claude/commands/morph-troubleshoot.md +122 -0
- package/stacks/nextjs-supabase/.claude/settings.local.json +6 -0
- package/stacks/nextjs-supabase/.claude/skills/level-2-domains/integrations/supabase-expert.md +30 -150
- package/stacks/nextjs-supabase/.morph/config/agents.json +345 -345
- package/stacks/nextjs-supabase/.morph/hooks/pre-commit/tests-typescript.sh +61 -0
- package/stacks/nextjs-supabase/.morph/templates/.gitkeep +0 -0
- package/stacks/nextjs-supabase/.morph/templates/infrastructure/github/workflows/cd-prod.yml.hbs +22 -0
- package/stacks/nextjs-supabase/.morph/templates/infrastructure/github/workflows/cd-staging.yml.hbs +22 -0
- package/stacks/nextjs-supabase/.morph/templates/infrastructure/github/workflows/ci-build.yml.hbs +35 -0
- package/stacks/nextjs-supabase/README.md +6 -15
- package/bin/render-template.js +0 -303
- package/bin/semantic-detect-agents.js +0 -247
- package/bin/validate-agents-skills.js +0 -257
- package/bin/validate-agents.js +0 -70
- package/bin/validate-phase.js +0 -263
- package/docs/examples.md +0 -328
- package/scripts/reorganize-skills.cjs +0 -175
- package/scripts/validate-agents-structure.cjs +0 -52
- package/scripts/validate-skills.cjs +0 -180
- package/src/commands/deploy.js +0 -780
- package/src/lib/continuous-validator.js +0 -421
- package/src/lib/decision-constraint-loader.js +0 -109
- package/src/lib/design-system-scaffolder.js +0 -299
- package/src/lib/hook-executor.js +0 -257
- package/src/lib/mockup-generator.js +0 -366
- package/src/lib/ui-detector.js +0 -350
- package/stacks/blazor-azure/.azure/README.md +0 -293
- package/stacks/blazor-azure/.azure/docs/azure-devops-setup.md +0 -454
- package/stacks/blazor-azure/.azure/docs/branch-strategy.md +0 -398
- package/stacks/blazor-azure/.azure/docs/local-development.md +0 -515
- package/stacks/blazor-azure/.azure/pipelines/pipeline-variables.yml +0 -34
- package/stacks/blazor-azure/.azure/pipelines/prod-pipeline.yml +0 -319
- package/stacks/blazor-azure/.azure/pipelines/staging-pipeline.yml +0 -234
- package/stacks/blazor-azure/.azure/pipelines/templates/build-dotnet.yml +0 -75
- package/stacks/blazor-azure/.azure/pipelines/templates/deploy-app-service.yml +0 -94
- package/stacks/blazor-azure/.azure/pipelines/templates/deploy-container-app.yml +0 -120
- package/stacks/blazor-azure/.azure/pipelines/templates/infra-deploy.yml +0 -90
- package/stacks/blazor-azure/.claude/settings.local.json +0 -15
- package/stacks/blazor-azure/.morph/docs/STORY-DRIVEN-DEVELOPMENT.md +0 -392
- package/stacks/blazor-azure/.morph/docs/workflows/design-impl.md +0 -37
- package/stacks/blazor-azure/.morph/docs/workflows/enforcement-pipeline.md +0 -668
- package/stacks/blazor-azure/.morph/docs/workflows/fast-track.md +0 -29
- package/stacks/blazor-azure/.morph/docs/workflows/full-morph.md +0 -76
- package/stacks/blazor-azure/.morph/docs/workflows/standard.md +0 -44
- package/stacks/blazor-azure/.morph/docs/workflows/ui-refresh.md +0 -39
- package/stacks/blazor-azure/.morph/examples/api-nextjs/README.md +0 -241
- package/stacks/blazor-azure/.morph/examples/api-nextjs/contracts.ts +0 -307
- package/stacks/blazor-azure/.morph/examples/api-nextjs/spec.md +0 -399
- package/stacks/blazor-azure/.morph/examples/api-nextjs/tasks.md +0 -168
- package/stacks/blazor-azure/.morph/examples/micro-saas/README.md +0 -125
- package/stacks/blazor-azure/.morph/examples/micro-saas/contracts.cs +0 -358
- package/stacks/blazor-azure/.morph/examples/micro-saas/decisions.md +0 -246
- package/stacks/blazor-azure/.morph/examples/micro-saas/spec.md +0 -236
- package/stacks/blazor-azure/.morph/examples/micro-saas/tasks.md +0 -150
- package/stacks/blazor-azure/.morph/examples/multi-agent/README.md +0 -309
- package/stacks/blazor-azure/.morph/examples/multi-agent/contracts.cs +0 -433
- package/stacks/blazor-azure/.morph/examples/multi-agent/spec.md +0 -479
- package/stacks/blazor-azure/.morph/examples/multi-agent/tasks.md +0 -185
- package/stacks/blazor-azure/.morph/examples/scheduled-reports/decisions.md +0 -158
- package/stacks/blazor-azure/.morph/examples/scheduled-reports/proposal.md +0 -95
- package/stacks/blazor-azure/.morph/examples/scheduled-reports/spec.md +0 -267
- package/stacks/blazor-azure/.morph/examples/state-v3.json +0 -188
- package/stacks/blazor-azure/.morph/hooks/README.md +0 -348
- package/stacks/blazor-azure/.morph/hooks/pre-commit-agents.sh +0 -24
- package/stacks/blazor-azure/.morph/hooks/pre-commit-all.sh +0 -48
- package/stacks/blazor-azure/.morph/hooks/pre-commit-specs.sh +0 -49
- package/stacks/blazor-azure/.morph/hooks/task-completed.js +0 -73
- package/stacks/blazor-azure/.morph/hooks/teammate-idle.js +0 -68
- package/stacks/blazor-azure/.morph/standards/agent-framework-blazor-ui.md +0 -359
- package/stacks/blazor-azure/.morph/standards/agent-framework-production.md +0 -410
- package/stacks/blazor-azure/.morph/standards/agent-framework-setup.md +0 -413
- package/stacks/blazor-azure/.morph/standards/agent-framework-workflows.md +0 -349
- package/stacks/blazor-azure/.morph/standards/agent-teams-workflow.md +0 -474
- package/stacks/blazor-azure/.morph/standards/architecture.md +0 -325
- package/stacks/blazor-azure/.morph/standards/azure.md +0 -605
- package/stacks/blazor-azure/.morph/standards/coding.md +0 -377
- package/stacks/blazor-azure/.morph/standards/dotnet10-migration.md +0 -520
- package/stacks/blazor-azure/.morph/standards/fluent-ui-setup.md +0 -590
- package/stacks/blazor-azure/.morph/standards/migration-guide.md +0 -514
- package/stacks/blazor-azure/.morph/standards/passkeys-auth.md +0 -423
- package/stacks/blazor-azure/.morph/standards/vector-search-rag.md +0 -536
- package/stacks/blazor-azure/.morph/templates/CONTEXT-FEATURE.md +0 -276
- package/stacks/blazor-azure/.morph/templates/CONTEXT.md +0 -170
- package/stacks/blazor-azure/.morph/templates/FluentDesignTheme.cs +0 -149
- package/stacks/blazor-azure/.morph/templates/MudTheme.cs +0 -281
- package/stacks/blazor-azure/.morph/templates/agent.cs +0 -163
- package/stacks/blazor-azure/.morph/templates/clarify-questions.md +0 -159
- package/stacks/blazor-azure/.morph/templates/component.razor +0 -239
- package/stacks/blazor-azure/.morph/templates/contracts/Commands.cs +0 -74
- package/stacks/blazor-azure/.morph/templates/contracts/Entities.cs +0 -25
- package/stacks/blazor-azure/.morph/templates/contracts/Queries.cs +0 -74
- package/stacks/blazor-azure/.morph/templates/contracts/README.md +0 -74
- package/stacks/blazor-azure/.morph/templates/contracts.cs +0 -217
- package/stacks/blazor-azure/.morph/templates/decisions.md +0 -123
- package/stacks/blazor-azure/.morph/templates/design-system.css +0 -226
- package/stacks/blazor-azure/.morph/templates/infra/.dockerignore.example +0 -89
- package/stacks/blazor-azure/.morph/templates/infra/Dockerfile.example +0 -82
- package/stacks/blazor-azure/.morph/templates/infra/README.md +0 -286
- package/stacks/blazor-azure/.morph/templates/infra/app-insights.bicep +0 -63
- package/stacks/blazor-azure/.morph/templates/infra/app-service.bicep +0 -164
- package/stacks/blazor-azure/.morph/templates/infra/azure-pipelines-deploy.yml +0 -480
- package/stacks/blazor-azure/.morph/templates/infra/container-app-env.bicep +0 -49
- package/stacks/blazor-azure/.morph/templates/infra/container-app.bicep +0 -156
- package/stacks/blazor-azure/.morph/templates/infra/deploy-checklist.md +0 -426
- package/stacks/blazor-azure/.morph/templates/infra/deploy.ps1 +0 -229
- package/stacks/blazor-azure/.morph/templates/infra/deploy.sh +0 -208
- package/stacks/blazor-azure/.morph/templates/infra/key-vault.bicep +0 -91
- package/stacks/blazor-azure/.morph/templates/infra/main.bicep +0 -189
- package/stacks/blazor-azure/.morph/templates/infra/parameters.dev.json +0 -29
- package/stacks/blazor-azure/.morph/templates/infra/parameters.prod.json +0 -29
- package/stacks/blazor-azure/.morph/templates/infra/parameters.staging.json +0 -29
- package/stacks/blazor-azure/.morph/templates/infra/sql-database.bicep +0 -103
- package/stacks/blazor-azure/.morph/templates/infra/storage.bicep +0 -106
- package/stacks/blazor-azure/.morph/templates/integrations/asaas-client.cs +0 -387
- package/stacks/blazor-azure/.morph/templates/integrations/asaas-webhook.cs +0 -351
- package/stacks/blazor-azure/.morph/templates/integrations/azure-identity-config.cs +0 -288
- package/stacks/blazor-azure/.morph/templates/integrations/clerk-config.cs +0 -258
- package/stacks/blazor-azure/.morph/templates/job.cs +0 -171
- package/stacks/blazor-azure/.morph/templates/migration.cs +0 -83
- package/stacks/blazor-azure/.morph/templates/proposal.md +0 -141
- package/stacks/blazor-azure/.morph/templates/recap.md +0 -94
- package/stacks/blazor-azure/.morph/templates/repository.cs +0 -141
- package/stacks/blazor-azure/.morph/templates/saas/subscription.cs +0 -347
- package/stacks/blazor-azure/.morph/templates/saas/tenant.cs +0 -338
- package/stacks/blazor-azure/.morph/templates/service.cs +0 -139
- package/stacks/blazor-azure/.morph/templates/simulation.md +0 -353
- package/stacks/blazor-azure/.morph/templates/spec.md +0 -149
- package/stacks/blazor-azure/.morph/templates/sprint-status.yaml +0 -68
- package/stacks/blazor-azure/.morph/templates/state.template.json +0 -222
- package/stacks/blazor-azure/.morph/templates/story.md +0 -143
- package/stacks/blazor-azure/.morph/templates/tasks.md +0 -257
- package/stacks/blazor-azure/.morph/templates/test.cs +0 -239
- package/stacks/blazor-azure/.morph/templates/ui-components.md +0 -362
- package/stacks/blazor-azure/.morph/templates/ui-design-system.md +0 -286
- package/stacks/blazor-azure/.morph/templates/ui-flows.md +0 -336
- package/stacks/blazor-azure/.morph/templates/ui-mockups.md +0 -133
- package/stacks/nextjs-supabase/.morph/docs/easypanel-setup.md +0 -169
- package/stacks/nextjs-supabase/.morph/docs/supabase-mcp-setup.md +0 -247
- package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/README.md +0 -697
- package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/spec.md +0 -85
- package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/tasks.md +0 -86
- package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/README.md +0 -498
- package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/decisions.md +0 -121
- package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/spec.md +0 -138
- package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/tasks.md +0 -162
- package/stacks/nextjs-supabase/.morph/standards/easypanel-deploy.md +0 -191
- package/stacks/nextjs-supabase/.morph/standards/nextjs-patterns.md +0 -193
- package/stacks/nextjs-supabase/.morph/standards/supabase-auth.md +0 -171
- package/stacks/nextjs-supabase/.morph/standards/supabase-pgvector.md +0 -164
- package/stacks/nextjs-supabase/.morph/standards/supabase-rls.md +0 -179
- package/stacks/nextjs-supabase/.morph/standards/supabase-storage.md +0 -148
- package/stacks/nextjs-supabase/.morph/templates/contracts.cs +0 -173
- package/stacks/nextjs-supabase/.morph/templates/contracts.ts +0 -168
- package/stacks/nextjs-supabase/.morph/templates/decisions.md +0 -115
- package/stacks/nextjs-supabase/.morph/templates/dockerfile-api.dockerfile +0 -38
- package/stacks/nextjs-supabase/.morph/templates/dockerfile-web.dockerfile +0 -48
- package/stacks/nextjs-supabase/.morph/templates/proposal.md +0 -145
- package/stacks/nextjs-supabase/.morph/templates/recap.md +0 -134
- package/stacks/nextjs-supabase/.morph/templates/rls-policy.sql +0 -57
- package/stacks/nextjs-supabase/.morph/templates/spec.md +0 -231
- package/stacks/nextjs-supabase/.morph/templates/supabase-migration.sql +0 -100
- package/stacks/nextjs-supabase/.morph/templates/tasks.md +0 -257
- /package/src/lib/{design-system-generator.js → generators/design-system-generator.js} +0 -0
- /package/src/lib/{learning-system.js → learning/learning-system.js} +0 -0
package/bin/validate-phase.js
DELETED
|
@@ -1,263 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* MORPH-SPEC Phase Validator
|
|
5
|
-
*
|
|
6
|
-
* Validates that required previous phases have been completed before advancing.
|
|
7
|
-
* Prevents skipping phases accidentally.
|
|
8
|
-
*
|
|
9
|
-
* Usage:
|
|
10
|
-
* node bin/validate-phase.js <feature-name> <target-phase>
|
|
11
|
-
*
|
|
12
|
-
* Example:
|
|
13
|
-
* node bin/validate-phase.js scheduled-reports implement
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
import fs from 'fs';
|
|
17
|
-
import path from 'path';
|
|
18
|
-
import { fileURLToPath } from 'url';
|
|
19
|
-
|
|
20
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
21
|
-
const __dirname = path.dirname(__filename);
|
|
22
|
-
|
|
23
|
-
// ANSI colors
|
|
24
|
-
const colors = {
|
|
25
|
-
green: '\x1b[32m',
|
|
26
|
-
red: '\x1b[31m',
|
|
27
|
-
yellow: '\x1b[33m',
|
|
28
|
-
cyan: '\x1b[36m',
|
|
29
|
-
gray: '\x1b[90m',
|
|
30
|
-
reset: '\x1b[0m'
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
// Phase definitions with requirements
|
|
34
|
-
const PHASES = {
|
|
35
|
-
'proposal': {
|
|
36
|
-
order: 0,
|
|
37
|
-
name: 'FASE 0: PROPOSAL',
|
|
38
|
-
requiredOutputs: ['proposal.md'],
|
|
39
|
-
description: 'Initial proposal and agent detection'
|
|
40
|
-
},
|
|
41
|
-
'setup': {
|
|
42
|
-
order: 1,
|
|
43
|
-
name: 'FASE 1: SETUP',
|
|
44
|
-
requiredOutputs: ['proposal.md'],
|
|
45
|
-
description: 'Load context and standards'
|
|
46
|
-
},
|
|
47
|
-
'uiux-design': {
|
|
48
|
-
order: 2,
|
|
49
|
-
name: 'FASE 1.5: UI/UX DESIGN',
|
|
50
|
-
requiredOutputs: ['proposal.md', 'ui-design-system.md', 'ui-mockups.md', 'ui-components.md', 'ui-flows.md'],
|
|
51
|
-
description: 'UI/UX design (conditional - only if frontend)',
|
|
52
|
-
optional: true
|
|
53
|
-
},
|
|
54
|
-
'design': {
|
|
55
|
-
order: 3,
|
|
56
|
-
name: 'FASE 2: DESIGN',
|
|
57
|
-
requiredOutputs: ['proposal.md', 'spec.md', 'contracts.cs', 'decisions.md'],
|
|
58
|
-
description: 'Technical specification and contracts'
|
|
59
|
-
},
|
|
60
|
-
'clarify': {
|
|
61
|
-
order: 4,
|
|
62
|
-
name: 'FASE 3: CLARIFY',
|
|
63
|
-
requiredOutputs: ['proposal.md', 'spec.md', 'contracts.cs'],
|
|
64
|
-
description: 'Clarify ambiguities and edge cases'
|
|
65
|
-
},
|
|
66
|
-
'tasks': {
|
|
67
|
-
order: 5,
|
|
68
|
-
name: 'FASE 4: TASKS',
|
|
69
|
-
requiredOutputs: ['proposal.md', 'spec.md', 'contracts.cs', 'tasks.json'],
|
|
70
|
-
description: 'Break down into executable tasks'
|
|
71
|
-
},
|
|
72
|
-
'implement': {
|
|
73
|
-
order: 6,
|
|
74
|
-
name: 'FASE 5: IMPLEMENT',
|
|
75
|
-
requiredOutputs: ['proposal.md', 'spec.md', 'contracts.cs', 'tasks.json'],
|
|
76
|
-
description: 'Execute tasks and implement code'
|
|
77
|
-
},
|
|
78
|
-
'sync': {
|
|
79
|
-
order: 7,
|
|
80
|
-
name: 'FASE 6: SYNC',
|
|
81
|
-
requiredOutputs: ['proposal.md', 'spec.md', 'decisions.md', 'recap.md'],
|
|
82
|
-
description: 'Sync decisions to project standards',
|
|
83
|
-
optional: true
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Check if output file exists
|
|
89
|
-
*/
|
|
90
|
-
function checkOutput(featurePath, outputFile) {
|
|
91
|
-
const filePath = path.join(featurePath, outputFile);
|
|
92
|
-
return fs.existsSync(filePath);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* Validate phase requirements
|
|
97
|
-
*/
|
|
98
|
-
function validatePhase(featureName, targetPhase) {
|
|
99
|
-
const featurePath = path.join(process.cwd(), '.morph/project/outputs', featureName);
|
|
100
|
-
|
|
101
|
-
// Check if feature directory exists
|
|
102
|
-
if (!fs.existsSync(featurePath)) {
|
|
103
|
-
return {
|
|
104
|
-
valid: false,
|
|
105
|
-
error: `Feature directory not found: ${featurePath}`,
|
|
106
|
-
missingOutputs: [],
|
|
107
|
-
phase: null
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
// Get target phase definition
|
|
112
|
-
const phaseDefinition = PHASES[targetPhase];
|
|
113
|
-
if (!phaseDefinition) {
|
|
114
|
-
return {
|
|
115
|
-
valid: false,
|
|
116
|
-
error: `Unknown phase: ${targetPhase}`,
|
|
117
|
-
validPhases: Object.keys(PHASES),
|
|
118
|
-
missingOutputs: [],
|
|
119
|
-
phase: null
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
// Check required outputs
|
|
124
|
-
const missingOutputs = [];
|
|
125
|
-
for (const output of phaseDefinition.requiredOutputs) {
|
|
126
|
-
if (!checkOutput(featurePath, output)) {
|
|
127
|
-
missingOutputs.push(output);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
// Special validation: if target is 'implement', check tasks.json structure
|
|
132
|
-
if (targetPhase === 'implement' && checkOutput(featurePath, 'tasks.json')) {
|
|
133
|
-
try {
|
|
134
|
-
const tasksPath = path.join(featurePath, 'tasks.json');
|
|
135
|
-
const tasks = JSON.parse(fs.readFileSync(tasksPath, 'utf-8'));
|
|
136
|
-
|
|
137
|
-
if (!tasks.tasks || !Array.isArray(tasks.tasks) || tasks.tasks.length === 0) {
|
|
138
|
-
missingOutputs.push('tasks.json (must contain tasks array)');
|
|
139
|
-
}
|
|
140
|
-
} catch (error) {
|
|
141
|
-
missingOutputs.push('tasks.json (invalid JSON)');
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
return {
|
|
146
|
-
valid: missingOutputs.length === 0,
|
|
147
|
-
error: null,
|
|
148
|
-
missingOutputs,
|
|
149
|
-
phase: phaseDefinition,
|
|
150
|
-
featurePath
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* Print validation result
|
|
156
|
-
*/
|
|
157
|
-
function printResult(result, featureName, targetPhase) {
|
|
158
|
-
console.log(`\n${colors.cyan}╔════════════════════════════════════════════════╗${colors.reset}`);
|
|
159
|
-
console.log(`${colors.cyan}║ MORPH-SPEC PHASE VALIDATOR ║${colors.reset}`);
|
|
160
|
-
console.log(`${colors.cyan}╚════════════════════════════════════════════════╝${colors.reset}\n`);
|
|
161
|
-
|
|
162
|
-
console.log(`${colors.gray}Feature:${colors.reset} ${featureName}`);
|
|
163
|
-
console.log(`${colors.gray}Target Phase:${colors.reset} ${result.phase ? result.phase.name : targetPhase}`);
|
|
164
|
-
|
|
165
|
-
if (result.phase) {
|
|
166
|
-
console.log(`${colors.gray}Description:${colors.reset} ${result.phase.description}`);
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
if (result.valid) {
|
|
170
|
-
console.log(`\n${colors.green}✓ VALIDATION PASSED${colors.reset}`);
|
|
171
|
-
console.log(`${colors.green} All required outputs are present.${colors.reset}`);
|
|
172
|
-
console.log(`${colors.green} Safe to proceed to ${result.phase.name}${colors.reset}\n`);
|
|
173
|
-
} else {
|
|
174
|
-
console.log(`\n${colors.red}✗ VALIDATION FAILED${colors.reset}`);
|
|
175
|
-
|
|
176
|
-
if (result.error) {
|
|
177
|
-
console.log(`${colors.red} Error: ${result.error}${colors.reset}\n`);
|
|
178
|
-
|
|
179
|
-
if (result.validPhases) {
|
|
180
|
-
console.log(`${colors.yellow}Valid phases:${colors.reset}`);
|
|
181
|
-
result.validPhases.forEach(phase => {
|
|
182
|
-
console.log(` - ${phase}`);
|
|
183
|
-
});
|
|
184
|
-
}
|
|
185
|
-
} else {
|
|
186
|
-
console.log(`${colors.red} Missing required outputs:${colors.reset}`);
|
|
187
|
-
result.missingOutputs.forEach(output => {
|
|
188
|
-
console.log(` ${colors.gray}-${colors.reset} ${output}`);
|
|
189
|
-
});
|
|
190
|
-
|
|
191
|
-
console.log(`\n${colors.yellow}Action required:${colors.reset}`);
|
|
192
|
-
console.log(` Complete the missing outputs before advancing to ${result.phase.name}`);
|
|
193
|
-
}
|
|
194
|
-
console.log('');
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
/**
|
|
199
|
-
* Print help
|
|
200
|
-
*/
|
|
201
|
-
function printHelp() {
|
|
202
|
-
console.log(`
|
|
203
|
-
${colors.cyan}MORPH-SPEC Phase Validator${colors.reset}
|
|
204
|
-
|
|
205
|
-
Validates that required previous phases have been completed before advancing.
|
|
206
|
-
|
|
207
|
-
${colors.green}Usage:${colors.reset}
|
|
208
|
-
node bin/validate-phase.js <feature-name> <target-phase>
|
|
209
|
-
|
|
210
|
-
${colors.green}Arguments:${colors.reset}
|
|
211
|
-
feature-name Name of the feature (kebab-case)
|
|
212
|
-
target-phase Phase you want to advance to
|
|
213
|
-
|
|
214
|
-
${colors.green}Valid Phases:${colors.reset}
|
|
215
|
-
proposal FASE 0: Initial proposal
|
|
216
|
-
setup FASE 1: Load context and standards
|
|
217
|
-
uiux-design FASE 1.5: UI/UX design (optional)
|
|
218
|
-
design FASE 2: Technical specification
|
|
219
|
-
clarify FASE 3: Clarify ambiguities
|
|
220
|
-
tasks FASE 4: Break down into tasks
|
|
221
|
-
implement FASE 5: Execute implementation
|
|
222
|
-
sync FASE 6: Sync to project standards (optional)
|
|
223
|
-
|
|
224
|
-
${colors.green}Examples:${colors.reset}
|
|
225
|
-
# Check if ready to implement
|
|
226
|
-
node bin/validate-phase.js scheduled-reports implement
|
|
227
|
-
|
|
228
|
-
# Check if ready for design phase
|
|
229
|
-
node bin/validate-phase.js user-auth design
|
|
230
|
-
|
|
231
|
-
# Use in slash command
|
|
232
|
-
node bin/validate-phase.js my-feature implement || exit 1
|
|
233
|
-
|
|
234
|
-
${colors.green}Exit Codes:${colors.reset}
|
|
235
|
-
0 - Validation passed (safe to proceed)
|
|
236
|
-
1 - Validation failed (missing requirements)
|
|
237
|
-
|
|
238
|
-
${colors.green}Integration:${colors.reset}
|
|
239
|
-
This validator is designed to be called from slash commands like
|
|
240
|
-
/morph-apply to ensure phase gates are respected.
|
|
241
|
-
`);
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
/**
|
|
245
|
-
* Main function
|
|
246
|
-
*/
|
|
247
|
-
function main() {
|
|
248
|
-
const args = process.argv.slice(2);
|
|
249
|
-
|
|
250
|
-
if (args.includes('--help') || args.includes('-h') || args.length < 2) {
|
|
251
|
-
printHelp();
|
|
252
|
-
process.exit(args.length < 2 ? 1 : 0);
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
const [featureName, targetPhase] = args;
|
|
256
|
-
|
|
257
|
-
const result = validatePhase(featureName, targetPhase);
|
|
258
|
-
printResult(result, featureName, targetPhase);
|
|
259
|
-
|
|
260
|
-
process.exit(result.valid ? 0 : 1);
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
main();
|
package/docs/examples.md
DELETED
|
@@ -1,328 +0,0 @@
|
|
|
1
|
-
# MORPH-SPEC Examples Guide
|
|
2
|
-
|
|
3
|
-
Guia dos exemplos incluídos no framework.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Visão Geral
|
|
8
|
-
|
|
9
|
-
| Exemplo | Stack | Complexidade | Tempo Est. |
|
|
10
|
-
|---------|-------|--------------|------------|
|
|
11
|
-
| [micro-saas](#micro-saas) | Blazor + Asaas | Alta | 2-3 dias |
|
|
12
|
-
| [api-nextjs](#api-nextjs) | .NET + Next.js | Média | 1-2 dias |
|
|
13
|
-
| [multi-agent](#multi-agent) | Semantic Kernel | Alta | 2-3 dias |
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## micro-saas
|
|
18
|
-
|
|
19
|
-
**Localização**: `.morph/examples/micro-saas/`
|
|
20
|
-
|
|
21
|
-
### Descrição
|
|
22
|
-
|
|
23
|
-
SaaS completo com multi-tenancy e billing integrado via Asaas.
|
|
24
|
-
|
|
25
|
-
### Stack
|
|
26
|
-
|
|
27
|
-
| Camada | Tecnologia |
|
|
28
|
-
|--------|------------|
|
|
29
|
-
| Frontend | Blazor Server |
|
|
30
|
-
| Backend | .NET 8 Minimal APIs |
|
|
31
|
-
| Database | SQL Server |
|
|
32
|
-
| Auth | Clerk |
|
|
33
|
-
| Billing | Asaas |
|
|
34
|
-
| Infra | Azure Container Apps |
|
|
35
|
-
|
|
36
|
-
### Features
|
|
37
|
-
|
|
38
|
-
- **Multi-tenancy**: Isolamento completo por tenant
|
|
39
|
-
- **Subscription Management**: Planos Free, Starter, Pro, Enterprise
|
|
40
|
-
- **Payment Methods**: PIX, Boleto, Cartão de Crédito
|
|
41
|
-
- **Dashboard**: Métricas e gestão
|
|
42
|
-
- **User Management**: Convites, roles (Owner, Admin, Member)
|
|
43
|
-
- **Webhooks**: Processamento de eventos Asaas
|
|
44
|
-
|
|
45
|
-
### Arquivos
|
|
46
|
-
|
|
47
|
-
```
|
|
48
|
-
micro-saas/
|
|
49
|
-
├── README.md # Visão geral e arquitetura
|
|
50
|
-
├── spec.md # Especificação completa
|
|
51
|
-
├── contracts.cs # 50+ interfaces e DTOs
|
|
52
|
-
├── tasks.md # 51 tasks organizadas
|
|
53
|
-
└── decisions.md # 10 ADRs documentados
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
### ADRs Principais
|
|
57
|
-
|
|
58
|
-
| ADR | Decisão |
|
|
59
|
-
|-----|---------|
|
|
60
|
-
| ADR-001 | Blazor Server vs WebAssembly |
|
|
61
|
-
| ADR-002 | Asaas vs Stripe |
|
|
62
|
-
| ADR-003 | Clerk vs Azure AD B2C |
|
|
63
|
-
| ADR-004 | Single DB com Query Filters |
|
|
64
|
-
| ADR-005 | Tenant Resolution Strategy |
|
|
65
|
-
|
|
66
|
-
### Para Começar
|
|
67
|
-
|
|
68
|
-
```bash
|
|
69
|
-
# 1. Copie o exemplo para seu projeto
|
|
70
|
-
cp -r .morph/examples/micro-saas/ .morph/features/
|
|
71
|
-
|
|
72
|
-
# 2. Revise a spec
|
|
73
|
-
cat .morph/features/micro-saas/spec.md
|
|
74
|
-
|
|
75
|
-
# 3. Ajuste para suas necessidades
|
|
76
|
-
# Edite spec.md com seus requisitos específicos
|
|
77
|
-
|
|
78
|
-
# 4. Implemente
|
|
79
|
-
/morph-apply micro-saas
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
### Custos Estimados
|
|
83
|
-
|
|
84
|
-
| Recurso | Custo/mês |
|
|
85
|
-
|---------|-----------|
|
|
86
|
-
| Container Apps | ~$0 (scale-to-zero) |
|
|
87
|
-
| SQL Database | $0 (Free tier) |
|
|
88
|
-
| Storage | ~$0.50 |
|
|
89
|
-
| Asaas | 2.99% + R$0.49/transação |
|
|
90
|
-
| **Total** | **< $5/mês** |
|
|
91
|
-
|
|
92
|
-
---
|
|
93
|
-
|
|
94
|
-
## api-nextjs
|
|
95
|
-
|
|
96
|
-
**Localização**: `.morph/examples/api-nextjs/`
|
|
97
|
-
|
|
98
|
-
### Descrição
|
|
99
|
-
|
|
100
|
-
Arquitetura full-stack com API .NET e frontend Next.js.
|
|
101
|
-
|
|
102
|
-
### Stack
|
|
103
|
-
|
|
104
|
-
| Camada | Tecnologia |
|
|
105
|
-
|--------|------------|
|
|
106
|
-
| Frontend | Next.js 14 (App Router) |
|
|
107
|
-
| Backend | .NET 8 Minimal APIs |
|
|
108
|
-
| Database | SQL Server |
|
|
109
|
-
| Auth | Clerk |
|
|
110
|
-
| Data Fetching | React Query |
|
|
111
|
-
| UI | Tailwind + shadcn/ui |
|
|
112
|
-
|
|
113
|
-
### Features
|
|
114
|
-
|
|
115
|
-
- **Minimal APIs**: Endpoints organizados e documentados
|
|
116
|
-
- **App Router**: Server Components + Client Components
|
|
117
|
-
- **React Query**: Cache, mutations, optimistic updates
|
|
118
|
-
- **TypeScript**: Types compartilhados (contracts.ts)
|
|
119
|
-
- **Forms**: React Hook Form + Zod validation
|
|
120
|
-
- **Dark Mode**: Theme switching
|
|
121
|
-
|
|
122
|
-
### Arquivos
|
|
123
|
-
|
|
124
|
-
```
|
|
125
|
-
api-nextjs/
|
|
126
|
-
├── README.md # Arquitetura e setup
|
|
127
|
-
├── spec.md # Especificação detalhada
|
|
128
|
-
├── contracts.ts # Types TypeScript compartilhados
|
|
129
|
-
└── tasks.md # 67 tasks organizadas
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
### Estrutura do Projeto
|
|
133
|
-
|
|
134
|
-
```
|
|
135
|
-
project/
|
|
136
|
-
├── src/
|
|
137
|
-
│ ├── api/ # .NET Backend
|
|
138
|
-
│ │ ├── Api/
|
|
139
|
-
│ │ ├── Application/
|
|
140
|
-
│ │ ├── Domain/
|
|
141
|
-
│ │ └── Infrastructure/
|
|
142
|
-
│ │
|
|
143
|
-
│ └── web/ # Next.js Frontend
|
|
144
|
-
│ ├── app/
|
|
145
|
-
│ ├── components/
|
|
146
|
-
│ ├── hooks/
|
|
147
|
-
│ ├── lib/
|
|
148
|
-
│ └── types/
|
|
149
|
-
│
|
|
150
|
-
└── infra/ # IaC
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
### Para Começar
|
|
154
|
-
|
|
155
|
-
```bash
|
|
156
|
-
# 1. Copie o exemplo
|
|
157
|
-
cp -r .morph/examples/api-nextjs/ .morph/features/
|
|
158
|
-
|
|
159
|
-
# 2. Revise contracts.ts para seu domínio
|
|
160
|
-
# Este arquivo define os types compartilhados
|
|
161
|
-
|
|
162
|
-
# 3. Ajuste spec.md
|
|
163
|
-
# Modifique entidades e endpoints para seu caso
|
|
164
|
-
|
|
165
|
-
# 4. Implemente
|
|
166
|
-
/morph-apply api-nextjs
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
### Patterns Demonstrados
|
|
170
|
-
|
|
171
|
-
| Pattern | Descrição |
|
|
172
|
-
|---------|-----------|
|
|
173
|
-
| API Client | Fetch wrapper com auth |
|
|
174
|
-
| Query Keys | Organização de cache keys |
|
|
175
|
-
| Data Hooks | useProducts, useOrders |
|
|
176
|
-
| Form Pattern | React Hook Form + Zod |
|
|
177
|
-
| Server Components | Data fetching no servidor |
|
|
178
|
-
|
|
179
|
-
---
|
|
180
|
-
|
|
181
|
-
## multi-agent
|
|
182
|
-
|
|
183
|
-
**Localização**: `.morph/examples/multi-agent/`
|
|
184
|
-
|
|
185
|
-
### Descrição
|
|
186
|
-
|
|
187
|
-
Sistema de agentes AI cooperativos com Semantic Kernel.
|
|
188
|
-
|
|
189
|
-
### Stack
|
|
190
|
-
|
|
191
|
-
| Camada | Tecnologia |
|
|
192
|
-
|--------|------------|
|
|
193
|
-
| Framework | Semantic Kernel |
|
|
194
|
-
| LLM | Azure OpenAI |
|
|
195
|
-
| Orchestration | Custom Orchestrator |
|
|
196
|
-
| Storage | In-Memory / Cosmos DB |
|
|
197
|
-
| Infra | Azure Container Apps |
|
|
198
|
-
|
|
199
|
-
### Agentes
|
|
200
|
-
|
|
201
|
-
| Agente | Responsabilidade |
|
|
202
|
-
|--------|------------------|
|
|
203
|
-
| **Orchestrator** | Coordena outros agentes |
|
|
204
|
-
| **Research** | Busca e RAG |
|
|
205
|
-
| **Analysis** | Análise e comparações |
|
|
206
|
-
| **Writing** | Geração de texto |
|
|
207
|
-
|
|
208
|
-
### Features
|
|
209
|
-
|
|
210
|
-
- **Task Decomposition**: Quebra tarefas complexas
|
|
211
|
-
- **Plugin System**: WebSearch, Documents, Calculator
|
|
212
|
-
- **Conversation Memory**: Contexto por sessão
|
|
213
|
-
- **Semantic Memory**: RAG com embeddings
|
|
214
|
-
- **Streaming**: Server-Sent Events
|
|
215
|
-
|
|
216
|
-
### Arquivos
|
|
217
|
-
|
|
218
|
-
```
|
|
219
|
-
multi-agent/
|
|
220
|
-
├── README.md # Visão geral
|
|
221
|
-
├── spec.md # Especificação detalhada
|
|
222
|
-
├── contracts.cs # Interfaces e DTOs
|
|
223
|
-
└── tasks.md # 53 tasks organizadas
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
### Fluxo de Execução
|
|
227
|
-
|
|
228
|
-
```
|
|
229
|
-
User Request
|
|
230
|
-
│
|
|
231
|
-
▼
|
|
232
|
-
┌─────────────┐
|
|
233
|
-
│ Orchestrator│ → Decompõe tarefa
|
|
234
|
-
└─────────────┘
|
|
235
|
-
│
|
|
236
|
-
├──► Research Agent → Busca informações
|
|
237
|
-
│
|
|
238
|
-
├──► Analysis Agent → Analisa dados
|
|
239
|
-
│
|
|
240
|
-
└──► Writing Agent → Gera output
|
|
241
|
-
│
|
|
242
|
-
▼
|
|
243
|
-
Consolidated Response
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
### Para Começar
|
|
247
|
-
|
|
248
|
-
```bash
|
|
249
|
-
# 1. Configure Azure OpenAI
|
|
250
|
-
# - Crie deployment gpt-4
|
|
251
|
-
# - Crie deployment text-embedding-ada-002
|
|
252
|
-
|
|
253
|
-
# 2. Copie o exemplo
|
|
254
|
-
cp -r .morph/examples/multi-agent/ .morph/features/
|
|
255
|
-
|
|
256
|
-
# 3. Configure appsettings
|
|
257
|
-
# Adicione suas credenciais Azure OpenAI
|
|
258
|
-
|
|
259
|
-
# 4. Implemente
|
|
260
|
-
/morph-apply multi-agent
|
|
261
|
-
```
|
|
262
|
-
|
|
263
|
-
### Custos Estimados
|
|
264
|
-
|
|
265
|
-
| Recurso | Custo |
|
|
266
|
-
|---------|-------|
|
|
267
|
-
| GPT-4 | ~$0.03/1K tokens |
|
|
268
|
-
| Embeddings | ~$0.0001/1K tokens |
|
|
269
|
-
| Container Apps | ~$0-10/mês |
|
|
270
|
-
|
|
271
|
-
**Nota**: Custos variam com uso. Para dev, use gpt-3.5-turbo.
|
|
272
|
-
|
|
273
|
-
---
|
|
274
|
-
|
|
275
|
-
## Como Usar os Exemplos
|
|
276
|
-
|
|
277
|
-
### 1. Estudar a Estrutura
|
|
278
|
-
|
|
279
|
-
Cada exemplo segue o padrão MORPH-SPEC:
|
|
280
|
-
- `spec.md` - O quê construir
|
|
281
|
-
- `contracts.cs/ts` - Interfaces e tipos
|
|
282
|
-
- `tasks.md` - Como construir
|
|
283
|
-
- `decisions.md` - Por que decisões foram tomadas
|
|
284
|
-
|
|
285
|
-
### 2. Adaptar para Seu Projeto
|
|
286
|
-
|
|
287
|
-
1. Copie o exemplo para `.morph/features/`
|
|
288
|
-
2. Edite `spec.md` com seus requisitos
|
|
289
|
-
3. Ajuste `contracts.cs` com suas entidades
|
|
290
|
-
4. Revise `tasks.md` e remova o que não precisa
|
|
291
|
-
|
|
292
|
-
### 3. Implementar
|
|
293
|
-
|
|
294
|
-
```bash
|
|
295
|
-
/morph-apply <nome-do-exemplo>
|
|
296
|
-
```
|
|
297
|
-
|
|
298
|
-
### 4. Customizar Templates
|
|
299
|
-
|
|
300
|
-
Se precisar de padrões diferentes:
|
|
301
|
-
1. Copie templates de `.morph/templates/`
|
|
302
|
-
2. Modifique conforme necessário
|
|
303
|
-
3. MORPH usará seus templates customizados
|
|
304
|
-
|
|
305
|
-
---
|
|
306
|
-
|
|
307
|
-
## Comparação de Complexidade
|
|
308
|
-
|
|
309
|
-
| Aspecto | micro-saas | api-nextjs | multi-agent |
|
|
310
|
-
|---------|------------|------------|-------------|
|
|
311
|
-
| **Entities** | 6 | 4 | 5 |
|
|
312
|
-
| **Tasks** | 51 | 67 | 53 |
|
|
313
|
-
| **Integrations** | 2 (Asaas, Clerk) | 1 (Clerk) | 2 (OpenAI, Bing) |
|
|
314
|
-
| **IaC Resources** | 5 | 6 | 4 |
|
|
315
|
-
| **Custo Infra** | < $5 | < $10 | Variável |
|
|
316
|
-
|
|
317
|
-
---
|
|
318
|
-
|
|
319
|
-
## Próximos Passos
|
|
320
|
-
|
|
321
|
-
1. Escolha o exemplo mais próximo do seu caso
|
|
322
|
-
2. Leia a `spec.md` completa
|
|
323
|
-
3. Revise os `contracts.*` para entender o modelo
|
|
324
|
-
4. Use como base ou implemente diretamente
|
|
325
|
-
|
|
326
|
-
---
|
|
327
|
-
|
|
328
|
-
*MORPH-SPEC by Polymorphism Tech*
|