@polymorphism-tech/morph-spec 3.2.0 → 4.3.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/README.md +1 -14
- package/bin/detect-agents.js +1 -1
- package/bin/morph-spec.js +403 -40
- package/bin/validate.js +5 -5
- package/docs/getting-started.md +0 -5
- package/docs/next-generation/AGENTS.md +521 -0
- package/docs/next-generation/ANALYSIS.md +555 -0
- package/docs/next-generation/ARCHITECTURE.md +436 -0
- package/docs/next-generation/CONTEXT-OPTIMIZATION.md +267 -0
- package/docs/next-generation/EXECUTION-FLOW.md +274 -0
- package/docs/next-generation/FEATURES.md +688 -0
- package/docs/next-generation/META-PROMPTS.md +235 -0
- package/docs/next-generation/MIGRATION-GUIDE.md +253 -0
- package/docs/next-generation/README.md +231 -0
- package/docs/next-generation/ROADMAP.md +801 -0
- package/docs/next-generation/THREAD-MANAGEMENT.md +240 -0
- package/docs/validation-checklist.md +0 -1
- package/package.json +5 -5
- package/src/commands/agents/agents-fuse.js +96 -0
- package/src/commands/agents/index.js +4 -0
- package/src/commands/agents/micro-agent.js +112 -0
- package/src/commands/{spawn-team.js → agents/spawn-team.js} +237 -172
- package/src/commands/agents/squad-template.js +146 -0
- package/src/commands/analytics/analytics.js +176 -0
- package/src/commands/context/context-prime.js +63 -0
- package/src/commands/context/core-four.js +54 -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} +4 -4
- package/src/commands/generation/index.js +5 -0
- package/src/commands/index.js +16 -0
- package/src/commands/{capture-pattern.js → learning/capture-pattern.js} +121 -121
- package/src/commands/learning/index.js +5 -0
- package/src/commands/mcp/mcp.js +102 -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} +221 -4
- package/src/commands/project/index.js +10 -0
- package/src/commands/{init.js → project/init.js} +305 -295
- package/src/commands/{sync.js → project/sync.js} +167 -167
- package/src/commands/{update.js → project/update.js} +240 -240
- package/src/commands/{advance-phase.js → state/advance-phase.js} +101 -25
- package/src/commands/{approve.js → state/approve.js} +221 -221
- 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 +174 -0
- package/src/commands/templates/template-show.js +131 -0
- package/src/commands/templates/template-validate.js +91 -0
- package/src/commands/threads/thread-template.js +103 -0
- package/src/commands/threads/threads.js +261 -0
- package/src/commands/trust/trust.js +205 -0
- package/src/commands/utils/index.js +7 -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/{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/{orchestrator.js → core/orchestrator.js} +8 -8
- 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/{lib → core/state}/phase-state-machine.js +214 -214
- package/src/{lib → core/state}/state-manager.js +588 -534
- package/src/core/templates/index.js +9 -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 +452 -0
- package/src/lib/agents/micro-agent-factory.js +161 -0
- package/src/lib/{complexity-analyzer.js → analysis/complexity-analyzer.js} +441 -441
- package/src/lib/analysis/index.js +7 -0
- package/src/lib/analytics/analytics-engine.js +345 -0
- package/src/lib/{checkpoint-hooks.js → checkpoints/checkpoint-hooks.js} +35 -0
- package/src/lib/checkpoints/index.js +7 -0
- package/src/lib/context/context-bundler.js +240 -0
- package/src/lib/context/context-optimizer.js +212 -0
- package/src/lib/context/context-tracker.js +273 -0
- package/src/lib/context/core-four-tracker.js +201 -0
- package/src/lib/context/mcp-optimizer.js +200 -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/execution/fusion-executor.js +304 -0
- package/src/lib/execution/parallel-executor.js +270 -0
- package/src/lib/{context-generator.js → generators/context-generator.js} +526 -516
- package/src/lib/generators/index.js +10 -0
- package/src/lib/{metadata-extractor.js → generators/metadata-extractor.js} +387 -380
- package/src/lib/{recap-generator.js → generators/recap-generator.js} +205 -205
- package/src/lib/hooks/hook-executor.js +169 -0
- package/src/lib/hooks/stop-hook-executor.js +286 -0
- package/src/lib/hops/hop-composer.js +221 -0
- 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/threads/thread-coordinator.js +238 -0
- package/src/lib/threads/thread-manager.js +317 -0
- package/src/lib/tracking/artifact-trail.js +202 -0
- 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/trust/trust-manager.js +269 -0
- package/src/lib/validators/{architecture-validator.js → architecture/architecture-validator.js} +8 -8
- package/src/lib/validators/architecture/index.js +7 -0
- 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-validator.js → content/content-validator.js} +351 -351
- package/src/lib/validators/content/index.js +7 -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/packages/index.js +7 -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/{validation-runner.js → validators/validation-runner.js} +286 -284
- package/src/ui/wizard-questions.js +0 -2
- 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/stacks/blazor-azure/.morph/config/agents.json +948 -764
- package/stacks/blazor-azure/.morph/hooks/{pre-commit-tests.sh → pre-commit/tests-csharp.sh} +3 -2
- 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/.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/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/CLAUDE.md +0 -648
- package/bin/render-template.js +0 -349
- 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/docs/llm-interaction-config.md +0 -735
- 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/commands/migrate-state.js +0 -158
- package/src/commands/upgrade.js +0 -346
- 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/src/llm/schema-validator.js +0 -121
- package/src/sanitizer/.gitkeep +0 -0
- package/src/scanner/.gitkeep +0 -0
- package/src/types/index.js +0 -477
- package/src/ui/.gitkeep +0 -0
- package/src/writer/.gitkeep +0 -0
- 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/commands/morph-apply.md +0 -221
- package/stacks/blazor-azure/.claude/commands/morph-archive.md +0 -79
- package/stacks/blazor-azure/.claude/commands/morph-deploy.md +0 -529
- package/stacks/blazor-azure/.claude/commands/morph-infra.md +0 -209
- package/stacks/blazor-azure/.claude/commands/morph-preflight.md +0 -227
- package/stacks/blazor-azure/.claude/commands/morph-proposal.md +0 -122
- package/stacks/blazor-azure/.claude/commands/morph-status.md +0 -86
- package/stacks/blazor-azure/.claude/commands/morph-troubleshoot.md +0 -122
- package/stacks/blazor-azure/.claude/settings.local.json +0 -15
- package/stacks/blazor-azure/.claude/skills/level-0-meta/README.md +0 -7
- package/stacks/blazor-azure/.claude/skills/level-0-meta/code-review.md +0 -226
- package/stacks/blazor-azure/.claude/skills/level-0-meta/morph-checklist.md +0 -117
- package/stacks/blazor-azure/.claude/skills/level-0-meta/simulation-checklist.md +0 -77
- package/stacks/blazor-azure/.claude/skills/level-1-workflows/README.md +0 -7
- package/stacks/blazor-azure/.claude/skills/level-1-workflows/morph-replicate.md +0 -213
- package/stacks/blazor-azure/.claude/skills/level-1-workflows/phase-clarify.md +0 -131
- package/stacks/blazor-azure/.claude/skills/level-1-workflows/phase-design.md +0 -213
- package/stacks/blazor-azure/.claude/skills/level-1-workflows/phase-setup.md +0 -106
- package/stacks/blazor-azure/.claude/skills/level-1-workflows/phase-tasks.md +0 -164
- package/stacks/blazor-azure/.claude/skills/level-1-workflows/phase-uiux.md +0 -169
- package/stacks/blazor-azure/.claude/skills/level-2-domains/README.md +0 -14
- package/stacks/blazor-azure/.claude/skills/level-2-domains/ai-agents/ai-system-architect.md +0 -192
- package/stacks/blazor-azure/.claude/skills/level-2-domains/architecture/po-pm-advisor.md +0 -197
- package/stacks/blazor-azure/.claude/skills/level-2-domains/architecture/prompt-engineer.md +0 -189
- package/stacks/blazor-azure/.claude/skills/level-2-domains/architecture/seo-growth-hacker.md +0 -320
- package/stacks/blazor-azure/.claude/skills/level-2-domains/architecture/standards-architect.md +0 -156
- package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/dotnet-senior.md +0 -287
- package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/ef-modeler.md +0 -113
- package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/hangfire-orchestrator.md +0 -126
- package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/ms-agent-expert.md +0 -109
- package/stacks/blazor-azure/.claude/skills/level-2-domains/frontend/blazor-builder.md +0 -210
- package/stacks/blazor-azure/.claude/skills/level-2-domains/frontend/nextjs-expert.md +0 -154
- package/stacks/blazor-azure/.claude/skills/level-2-domains/frontend/ui-ux-designer.md +0 -191
- package/stacks/blazor-azure/.claude/skills/level-2-domains/infrastructure/azure-architect.md +0 -142
- package/stacks/blazor-azure/.claude/skills/level-2-domains/infrastructure/azure-deploy-specialist.md +0 -699
- package/stacks/blazor-azure/.claude/skills/level-2-domains/infrastructure/bicep-architect.md +0 -126
- package/stacks/blazor-azure/.claude/skills/level-2-domains/infrastructure/container-specialist.md +0 -131
- package/stacks/blazor-azure/.claude/skills/level-2-domains/infrastructure/devops-engineer.md +0 -119
- package/stacks/blazor-azure/.claude/skills/level-2-domains/integrations/asaas-financial.md +0 -130
- package/stacks/blazor-azure/.claude/skills/level-2-domains/integrations/azure-identity.md +0 -142
- package/stacks/blazor-azure/.claude/skills/level-2-domains/integrations/clerk-auth.md +0 -108
- package/stacks/blazor-azure/.claude/skills/level-2-domains/integrations/resend-email.md +0 -119
- package/stacks/blazor-azure/.claude/skills/level-2-domains/quality/code-analyzer.md +0 -235
- package/stacks/blazor-azure/.claude/skills/level-2-domains/quality/testing-specialist.md +0 -126
- package/stacks/blazor-azure/.claude/skills/level-3-technologies/README.md +0 -7
- package/stacks/blazor-azure/.claude/skills/level-4-patterns/README.md +0 -7
- package/stacks/blazor-azure/.morph/archive/.gitkeep +0 -25
- 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/features/.gitkeep +0 -25
- 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/schemas/agent.schema.json +0 -296
- package/stacks/blazor-azure/.morph/schemas/tasks.schema.json +0 -220
- package/stacks/blazor-azure/.morph/specs/.gitkeep +0 -20
- 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/blazor-azure/.morph/test-infra/example.bicep +0 -59
- package/stacks/nextjs-supabase/.claude/skills/level-2-domains/backend/dotnet-supabase.md +0 -244
- package/stacks/nextjs-supabase/.claude/skills/level-2-domains/frontend/nextjs-supabase.md +0 -335
- package/stacks/nextjs-supabase/.claude/skills/level-2-domains/infrastructure/easypanel-deployer.md +0 -189
- package/stacks/nextjs-supabase/.claude/skills/level-2-domains/integrations/supabase-expert.md +0 -170
- 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/commands/{search-patterns.js → learning/search-patterns.js} +0 -0
- /package/src/{lib → core/templates}/template-data-sources.js +0 -0
- /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/src/lib/validators/{package-validator.js → packages/package-validator.js} +0 -0
- /package/src/lib/validators/{ui-contrast-validator.js → ui/ui-contrast-validator.js} +0 -0
- /package/{src/generator → stacks/blazor-azure/.morph/templates}/.gitkeep +0 -0
- /package/{src/llm → stacks/nextjs-supabase/.morph/templates}/.gitkeep +0 -0
|
@@ -1,281 +0,0 @@
|
|
|
1
|
-
using MudBlazor;
|
|
2
|
-
|
|
3
|
-
namespace {Namespace}.Themes;
|
|
4
|
-
|
|
5
|
-
/// <summary>
|
|
6
|
-
/// MudBlazor Theme customizado para {Project Name}.
|
|
7
|
-
/// Gerado automaticamente baseado em ui-design-system.md
|
|
8
|
-
/// </summary>
|
|
9
|
-
/// <remarks>
|
|
10
|
-
/// Template MORPH-SPEC v2.1.1 by Polymorphism Tech
|
|
11
|
-
/// </remarks>
|
|
12
|
-
public static class AppTheme
|
|
13
|
-
{
|
|
14
|
-
/// <summary>
|
|
15
|
-
/// Tema Light Mode
|
|
16
|
-
/// </summary>
|
|
17
|
-
public static MudTheme LightTheme => new()
|
|
18
|
-
{
|
|
19
|
-
Palette = new PaletteLight
|
|
20
|
-
{
|
|
21
|
-
// Cores Principais
|
|
22
|
-
Primary = "#{hex da cor primária}", // Ex: #3b82f6
|
|
23
|
-
Secondary = "#{hex da cor secundária}", // Ex: #6b7280
|
|
24
|
-
Tertiary = "#{hex da cor terciária}", // Opcional
|
|
25
|
-
|
|
26
|
-
// Cores de Estado
|
|
27
|
-
Success = "#{hex}", // Ex: #10b981
|
|
28
|
-
Error = "#{hex}", // Ex: #ef4444
|
|
29
|
-
Warning = "#{hex}", // Ex: #f59e0b
|
|
30
|
-
Info = "#{hex}", // Ex: #06b6d4
|
|
31
|
-
|
|
32
|
-
// Background e Superfícies
|
|
33
|
-
Background = "#ffffff",
|
|
34
|
-
BackgroundGrey = "#{hex do gray-50}", // Ex: #f9fafb
|
|
35
|
-
Surface = "#ffffff",
|
|
36
|
-
|
|
37
|
-
// Text Colors
|
|
38
|
-
TextPrimary = "#{hex do gray-900}", // Texto principal
|
|
39
|
-
TextSecondary = "#{hex do gray-600}", // Texto secundário
|
|
40
|
-
TextDisabled = "#{hex do gray-400}", // Texto desabilitado
|
|
41
|
-
|
|
42
|
-
// Borders
|
|
43
|
-
Divider = "#{hex do gray-200}", // Divisores
|
|
44
|
-
DividerLight = "#{hex do gray-100}", // Divisores mais claros
|
|
45
|
-
Lines = "#{hex do gray-300}", // Linhas de borda
|
|
46
|
-
|
|
47
|
-
// Action colors (usados em botões, links, etc)
|
|
48
|
-
ActionDefault = "#{hex do gray-500}",
|
|
49
|
-
ActionDisabled = "#{hex do gray-300}",
|
|
50
|
-
ActionDisabledBackground = "#{hex do gray-100}",
|
|
51
|
-
|
|
52
|
-
// Outros
|
|
53
|
-
Dark = "#{hex do gray-800}",
|
|
54
|
-
DarkLighten = "#{hex do gray-700}",
|
|
55
|
-
DarkDarken = "#{hex do gray-900}",
|
|
56
|
-
|
|
57
|
-
// Overlay (usado em modais, dropdowns)
|
|
58
|
-
OverlayLight = "rgba(255, 255, 255, 0.95)",
|
|
59
|
-
OverlayDark = "rgba(33, 33, 33, 0.95)",
|
|
60
|
-
|
|
61
|
-
// Hover effects
|
|
62
|
-
HoverOpacity = 0.06, // Opacidade do hover (6%)
|
|
63
|
-
},
|
|
64
|
-
|
|
65
|
-
Typography = new Typography
|
|
66
|
-
{
|
|
67
|
-
// Font Families
|
|
68
|
-
Default = new Default
|
|
69
|
-
{
|
|
70
|
-
FontFamily = new[] { "{Font Name}", "-apple-system", "BlinkMacSystemFont", "Segoe UI", "Roboto", "sans-serif" },
|
|
71
|
-
FontSize = "1rem", // 16px
|
|
72
|
-
FontWeight = 400, // Regular
|
|
73
|
-
LineHeight = 1.5,
|
|
74
|
-
LetterSpacing = "normal",
|
|
75
|
-
},
|
|
76
|
-
|
|
77
|
-
H1 = new H1
|
|
78
|
-
{
|
|
79
|
-
FontFamily = new[] { "{Font Name}", "sans-serif" },
|
|
80
|
-
FontSize = "2.25rem", // 36px
|
|
81
|
-
FontWeight = 700, // Bold
|
|
82
|
-
LineHeight = 1.2,
|
|
83
|
-
},
|
|
84
|
-
|
|
85
|
-
H2 = new H2
|
|
86
|
-
{
|
|
87
|
-
FontFamily = new[] { "{Font Name}", "sans-serif" },
|
|
88
|
-
FontSize = "1.875rem", // 30px
|
|
89
|
-
FontWeight = 700,
|
|
90
|
-
LineHeight = 1.3,
|
|
91
|
-
},
|
|
92
|
-
|
|
93
|
-
H3 = new H3
|
|
94
|
-
{
|
|
95
|
-
FontFamily = new[] { "{Font Name}", "sans-serif" },
|
|
96
|
-
FontSize = "1.5rem", // 24px
|
|
97
|
-
FontWeight = 600,
|
|
98
|
-
LineHeight = 1.4,
|
|
99
|
-
},
|
|
100
|
-
|
|
101
|
-
H4 = new H4
|
|
102
|
-
{
|
|
103
|
-
FontFamily = new[] { "{Font Name}", "sans-serif" },
|
|
104
|
-
FontSize = "1.25rem", // 20px
|
|
105
|
-
FontWeight = 600,
|
|
106
|
-
LineHeight = 1.4,
|
|
107
|
-
},
|
|
108
|
-
|
|
109
|
-
H5 = new H5
|
|
110
|
-
{
|
|
111
|
-
FontFamily = new[] { "{Font Name}", "sans-serif" },
|
|
112
|
-
FontSize = "1.125rem", // 18px
|
|
113
|
-
FontWeight = 600,
|
|
114
|
-
LineHeight = 1.5,
|
|
115
|
-
},
|
|
116
|
-
|
|
117
|
-
H6 = new H6
|
|
118
|
-
{
|
|
119
|
-
FontFamily = new[] { "{Font Name}", "sans-serif" },
|
|
120
|
-
FontSize = "1rem", // 16px
|
|
121
|
-
FontWeight = 600,
|
|
122
|
-
LineHeight = 1.5,
|
|
123
|
-
},
|
|
124
|
-
|
|
125
|
-
Body1 = new Body1
|
|
126
|
-
{
|
|
127
|
-
FontFamily = new[] { "{Font Name}", "sans-serif" },
|
|
128
|
-
FontSize = "1rem", // 16px
|
|
129
|
-
FontWeight = 400,
|
|
130
|
-
LineHeight = 1.5,
|
|
131
|
-
},
|
|
132
|
-
|
|
133
|
-
Body2 = new Body2
|
|
134
|
-
{
|
|
135
|
-
FontFamily = new[] { "{Font Name}", "sans-serif" },
|
|
136
|
-
FontSize = "0.875rem", // 14px
|
|
137
|
-
FontWeight = 400,
|
|
138
|
-
LineHeight = 1.43,
|
|
139
|
-
},
|
|
140
|
-
|
|
141
|
-
Button = new Button
|
|
142
|
-
{
|
|
143
|
-
FontFamily = new[] { "{Font Name}", "sans-serif" },
|
|
144
|
-
FontSize = "0.875rem", // 14px
|
|
145
|
-
FontWeight = 600, // Semibold
|
|
146
|
-
LineHeight = 1.75,
|
|
147
|
-
TextTransform = "none", // Ou "uppercase" se preferir
|
|
148
|
-
},
|
|
149
|
-
|
|
150
|
-
Caption = new Caption
|
|
151
|
-
{
|
|
152
|
-
FontFamily = new[] { "{Font Name}", "sans-serif" },
|
|
153
|
-
FontSize = "0.75rem", // 12px
|
|
154
|
-
FontWeight = 400,
|
|
155
|
-
LineHeight = 1.66,
|
|
156
|
-
},
|
|
157
|
-
|
|
158
|
-
Subtitle1 = new Subtitle1
|
|
159
|
-
{
|
|
160
|
-
FontFamily = new[] { "{Font Name}", "sans-serif" },
|
|
161
|
-
FontSize = "1rem",
|
|
162
|
-
FontWeight = 500, // Medium
|
|
163
|
-
LineHeight = 1.75,
|
|
164
|
-
},
|
|
165
|
-
|
|
166
|
-
Subtitle2 = new Subtitle2
|
|
167
|
-
{
|
|
168
|
-
FontFamily = new[] { "{Font Name}", "sans-serif" },
|
|
169
|
-
FontSize = "0.875rem",
|
|
170
|
-
FontWeight = 500,
|
|
171
|
-
LineHeight = 1.57,
|
|
172
|
-
},
|
|
173
|
-
|
|
174
|
-
Overline = new Overline
|
|
175
|
-
{
|
|
176
|
-
FontFamily = new[] { "{Font Name}", "sans-serif" },
|
|
177
|
-
FontSize = "0.75rem",
|
|
178
|
-
FontWeight = 600,
|
|
179
|
-
LineHeight = 2.66,
|
|
180
|
-
LetterSpacing = "0.08em",
|
|
181
|
-
},
|
|
182
|
-
},
|
|
183
|
-
|
|
184
|
-
Shadows = new Shadow
|
|
185
|
-
{
|
|
186
|
-
Elevation = new[]
|
|
187
|
-
{
|
|
188
|
-
"none", // 0
|
|
189
|
-
"0 1px 2px 0 rgba(0, 0, 0, 0.05)", // 1
|
|
190
|
-
"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)", // 2
|
|
191
|
-
"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)", // 3
|
|
192
|
-
"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)", // 4
|
|
193
|
-
"0 25px 50px -12px rgba(0, 0, 0, 0.25)", // 5
|
|
194
|
-
// Adicione mais elevações conforme necessário
|
|
195
|
-
}
|
|
196
|
-
},
|
|
197
|
-
|
|
198
|
-
LayoutProperties = new LayoutProperties
|
|
199
|
-
{
|
|
200
|
-
// Border Radius
|
|
201
|
-
DefaultBorderRadius = "6px", // md
|
|
202
|
-
|
|
203
|
-
// Drawer
|
|
204
|
-
DrawerWidthLeft = "240px",
|
|
205
|
-
DrawerWidthRight = "240px",
|
|
206
|
-
|
|
207
|
-
// AppBar
|
|
208
|
-
AppbarHeight = "64px",
|
|
209
|
-
},
|
|
210
|
-
|
|
211
|
-
ZIndex = new ZIndex
|
|
212
|
-
{
|
|
213
|
-
Drawer = 1200,
|
|
214
|
-
AppBar = 1100,
|
|
215
|
-
Dialog = 1300,
|
|
216
|
-
Popover = 1400,
|
|
217
|
-
Snackbar = 1500,
|
|
218
|
-
Tooltip = 1600,
|
|
219
|
-
},
|
|
220
|
-
};
|
|
221
|
-
|
|
222
|
-
/// <summary>
|
|
223
|
-
/// Tema Dark Mode (opcional - ajustar cores)
|
|
224
|
-
/// </summary>
|
|
225
|
-
public static MudTheme DarkTheme => new()
|
|
226
|
-
{
|
|
227
|
-
Palette = new PaletteDark
|
|
228
|
-
{
|
|
229
|
-
// Cores Principais (ajustar para dark mode)
|
|
230
|
-
Primary = "#{hex}",
|
|
231
|
-
Secondary = "#{hex}",
|
|
232
|
-
|
|
233
|
-
// Cores de Estado
|
|
234
|
-
Success = "#{hex}",
|
|
235
|
-
Error = "#{hex}",
|
|
236
|
-
Warning = "#{hex}",
|
|
237
|
-
Info = "#{hex}",
|
|
238
|
-
|
|
239
|
-
// Background e Superfícies (tons escuros)
|
|
240
|
-
Background = "#{hex do gray-900}",
|
|
241
|
-
BackgroundGrey = "#{hex do gray-800}",
|
|
242
|
-
Surface = "#{hex do gray-800}",
|
|
243
|
-
|
|
244
|
-
// Text Colors (invertidos)
|
|
245
|
-
TextPrimary = "#{hex do gray-50}",
|
|
246
|
-
TextSecondary = "#{hex do gray-400}",
|
|
247
|
-
TextDisabled = "#{hex do gray-600}",
|
|
248
|
-
|
|
249
|
-
// Etc... (ajustar conforme design system dark mode)
|
|
250
|
-
},
|
|
251
|
-
|
|
252
|
-
// Compartilhar Typography e outras configurações do LightTheme
|
|
253
|
-
Typography = LightTheme.Typography,
|
|
254
|
-
Shadows = LightTheme.Shadows,
|
|
255
|
-
LayoutProperties = LightTheme.LayoutProperties,
|
|
256
|
-
ZIndex = LightTheme.ZIndex,
|
|
257
|
-
};
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
/// <summary>
|
|
261
|
-
/// EXEMPLO DE USO:
|
|
262
|
-
///
|
|
263
|
-
/// // Program.cs
|
|
264
|
-
/// builder.Services.AddMudServices(config =>
|
|
265
|
-
/// {
|
|
266
|
-
/// config.SnackbarConfiguration.PositionClass = Defaults.Classes.Position.BottomRight;
|
|
267
|
-
/// });
|
|
268
|
-
///
|
|
269
|
-
/// // App.razor ou MainLayout.razor
|
|
270
|
-
/// <MudThemeProvider Theme="@AppTheme.LightTheme" />
|
|
271
|
-
/// <MudDialogProvider />
|
|
272
|
-
/// <MudSnackbarProvider />
|
|
273
|
-
///
|
|
274
|
-
/// // Para suportar dark mode dinâmico:
|
|
275
|
-
/// <MudThemeProvider @bind-IsDarkMode="@_isDarkMode"
|
|
276
|
-
/// Theme="@(_isDarkMode ? AppTheme.DarkTheme : AppTheme.LightTheme)" />
|
|
277
|
-
///
|
|
278
|
-
/// @code {
|
|
279
|
-
/// private bool _isDarkMode;
|
|
280
|
-
/// }
|
|
281
|
-
/// </summary>
|
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
// ============================================================
|
|
2
|
-
// MICROSOFT AGENT FRAMEWORK TEMPLATE
|
|
3
|
-
// Generated by MORPH Framework
|
|
4
|
-
// ============================================================
|
|
5
|
-
|
|
6
|
-
using System.ComponentModel;
|
|
7
|
-
using System.Text.Json;
|
|
8
|
-
using Microsoft.Agents.AI;
|
|
9
|
-
using Microsoft.Extensions.AI;
|
|
10
|
-
using Microsoft.Extensions.Logging;
|
|
11
|
-
|
|
12
|
-
namespace MyProject.Agents.{Feature};
|
|
13
|
-
|
|
14
|
-
/// <summary>
|
|
15
|
-
/// AI Agent for analyzing {Feature} data.
|
|
16
|
-
/// Uses Microsoft Agent Framework with IChatClient (gpt-4o-mini by default).
|
|
17
|
-
/// </summary>
|
|
18
|
-
public class {Feature}AnalyzerAgent(
|
|
19
|
-
IChatClient chatClient,
|
|
20
|
-
ILogger<{Feature}AnalyzerAgent> logger) : I{Feature}AnalyzerAgent
|
|
21
|
-
{
|
|
22
|
-
/// <inheritdoc />
|
|
23
|
-
public async Task<{Feature}AnalysisResult> AnalyzeAsync(
|
|
24
|
-
{Feature}Data data,
|
|
25
|
-
CancellationToken cancellationToken = default)
|
|
26
|
-
{
|
|
27
|
-
logger.LogInformation("Starting {Feature} analysis for: {Content}",
|
|
28
|
-
data.Content.Length > 100 ? data.Content[..100] + "..." : data.Content);
|
|
29
|
-
|
|
30
|
-
var agent = new ChatClientAgent(
|
|
31
|
-
chatClient,
|
|
32
|
-
new ChatClientAgentOptions
|
|
33
|
-
{
|
|
34
|
-
Name = "{Feature}Analyzer",
|
|
35
|
-
Instructions = """
|
|
36
|
-
You are an expert analyst for {Feature} data.
|
|
37
|
-
|
|
38
|
-
Analyze the provided data and return a JSON object with:
|
|
39
|
-
- summary: Brief summary (1-2 sentences)
|
|
40
|
-
- insights: Array of at least 2 insights
|
|
41
|
-
- recommendations: Array of at least 1 recommendation
|
|
42
|
-
- confidenceScore: Number between 0 and 1
|
|
43
|
-
|
|
44
|
-
Respond ONLY with valid JSON, no additional text.
|
|
45
|
-
""",
|
|
46
|
-
ChatOptions = new ChatOptions
|
|
47
|
-
{
|
|
48
|
-
Tools =
|
|
49
|
-
[
|
|
50
|
-
AIFunctionFactory.Create(GetContextAsync),
|
|
51
|
-
AIFunctionFactory.Create(GetMetricsAsync)
|
|
52
|
-
]
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
var response = await agent.RunAsync(
|
|
57
|
-
$"Analyze this data:\n{data.Content}",
|
|
58
|
-
cancellationToken: cancellationToken);
|
|
59
|
-
|
|
60
|
-
var result = ParseResponse(response.Text);
|
|
61
|
-
|
|
62
|
-
logger.LogInformation(
|
|
63
|
-
"Analysis completed. Confidence: {Confidence:P0}",
|
|
64
|
-
result.ConfidenceScore);
|
|
65
|
-
|
|
66
|
-
return result;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
#region Tools
|
|
70
|
-
|
|
71
|
-
[Description("Gets additional context for the analysis")]
|
|
72
|
-
private async Task<string> GetContextAsync(
|
|
73
|
-
[Description("What context is needed")] string query,
|
|
74
|
-
CancellationToken ct = default)
|
|
75
|
-
{
|
|
76
|
-
// TODO: Implement context retrieval (e.g., from database or search)
|
|
77
|
-
await Task.CompletedTask;
|
|
78
|
-
return $"Context for: {query}";
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
[Description("Gets relevant metrics for the analysis")]
|
|
82
|
-
private async Task<string> GetMetricsAsync(
|
|
83
|
-
[Description("Metric type to retrieve")] string metricType,
|
|
84
|
-
CancellationToken ct = default)
|
|
85
|
-
{
|
|
86
|
-
// TODO: Implement metrics retrieval
|
|
87
|
-
await Task.CompletedTask;
|
|
88
|
-
return $"Metrics for: {metricType}";
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
#endregion
|
|
92
|
-
|
|
93
|
-
#region Response Parsing
|
|
94
|
-
|
|
95
|
-
private {Feature}AnalysisResult ParseResponse(string response)
|
|
96
|
-
{
|
|
97
|
-
try
|
|
98
|
-
{
|
|
99
|
-
var json = response
|
|
100
|
-
.Replace("```json", "")
|
|
101
|
-
.Replace("```", "")
|
|
102
|
-
.Trim();
|
|
103
|
-
|
|
104
|
-
var parsed = JsonSerializer.Deserialize<AnalysisResponse>(json,
|
|
105
|
-
new JsonSerializerOptions { PropertyNameCaseInsensitive = true });
|
|
106
|
-
|
|
107
|
-
if (parsed is null)
|
|
108
|
-
throw new {Feature}ProcessingException("Failed to parse analysis response");
|
|
109
|
-
|
|
110
|
-
return new {Feature}AnalysisResult(
|
|
111
|
-
parsed.Summary ?? "Analysis completed",
|
|
112
|
-
parsed.Insights ?? [],
|
|
113
|
-
parsed.Recommendations ?? [],
|
|
114
|
-
parsed.ConfidenceScore);
|
|
115
|
-
}
|
|
116
|
-
catch (JsonException ex)
|
|
117
|
-
{
|
|
118
|
-
logger.LogError(ex, "Failed to parse AI response: {Response}", response);
|
|
119
|
-
throw new {Feature}ProcessingException("Failed to parse analysis response", ex);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
private class AnalysisResponse
|
|
124
|
-
{
|
|
125
|
-
public string? Summary { get; set; }
|
|
126
|
-
public List<string>? Insights { get; set; }
|
|
127
|
-
public List<string>? Recommendations { get; set; }
|
|
128
|
-
public double ConfidenceScore { get; set; }
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
#endregion
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
// ============================================================
|
|
135
|
-
// DEPENDENCY INJECTION SETUP
|
|
136
|
-
// ============================================================
|
|
137
|
-
//
|
|
138
|
-
// In Program.cs:
|
|
139
|
-
//
|
|
140
|
-
// // Register IChatClient (Azure OpenAI with Managed Identity)
|
|
141
|
-
// builder.Services.AddSingleton<IChatClient>(sp =>
|
|
142
|
-
// {
|
|
143
|
-
// var cfg = sp.GetRequiredService<IConfiguration>();
|
|
144
|
-
// return new AzureOpenAIClient(
|
|
145
|
-
// new Uri(cfg["AzureOpenAI:Endpoint"]!),
|
|
146
|
-
// new DefaultAzureCredential())
|
|
147
|
-
// .GetChatClient(cfg["AzureOpenAI:DeploymentName"] ?? "gpt-4o-mini")
|
|
148
|
-
// .AsIChatClient();
|
|
149
|
-
// });
|
|
150
|
-
//
|
|
151
|
-
// // Option A: Register as scoped service
|
|
152
|
-
// builder.Services.AddScoped<I{Feature}AnalyzerAgent, {Feature}AnalyzerAgent>();
|
|
153
|
-
//
|
|
154
|
-
// // Option B: Register as keyed agent (recommended for multiple agents)
|
|
155
|
-
// builder.AddAIAgent("{Feature}Analyzer", (sp, key) =>
|
|
156
|
-
// {
|
|
157
|
-
// var chatClient = sp.GetRequiredService<IChatClient>();
|
|
158
|
-
// return new ChatClientAgent(chatClient,
|
|
159
|
-
// name: key,
|
|
160
|
-
// instructions: "You are an expert {Feature} analyst.");
|
|
161
|
-
// });
|
|
162
|
-
//
|
|
163
|
-
// ============================================================
|
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
# Checklist de Clarificação - {{FEATURE_NAME_TITLE}}
|
|
2
|
-
|
|
3
|
-
> Template para FASE 3: CLARIFY
|
|
4
|
-
> Use este checklist para identificar ambiguidades e fazer perguntas estruturadas
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## 🎯 Contexto da Feature
|
|
9
|
-
|
|
10
|
-
**Feature:** {{FEATURE_NAME}}
|
|
11
|
-
**Fase atual:** CLARIFY
|
|
12
|
-
**Data:** {{DATE}}
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
## 📋 Checklist de Clarificação Padrão
|
|
17
|
-
|
|
18
|
-
### 1. Fluxo de Usuário
|
|
19
|
-
|
|
20
|
-
- [ ] Existe fluxo gratuito vs pago?
|
|
21
|
-
- [ ] O que acontece em edge cases (erro, timeout, dados inválidos)?
|
|
22
|
-
- [ ] Qual o fluxo de primeiro acesso (onboarding)?
|
|
23
|
-
- [ ] Existem diferentes tipos de usuário com permissões diferentes?
|
|
24
|
-
- [ ] O que acontece se o usuário cancelar no meio do processo?
|
|
25
|
-
|
|
26
|
-
**Perguntas específicas:**
|
|
27
|
-
1. _[Adicionar pergunta específica da feature]_
|
|
28
|
-
2. _[Adicionar pergunta específica da feature]_
|
|
29
|
-
|
|
30
|
-
---
|
|
31
|
-
|
|
32
|
-
### 2. Integrações Externas
|
|
33
|
-
|
|
34
|
-
- [ ] Quais campos são obrigatórios para cada API externa?
|
|
35
|
-
- [ ] Há fallbacks se a API externa falhar?
|
|
36
|
-
- [ ] Qual o timeout aceitável para chamadas externas?
|
|
37
|
-
- [ ] Como tratar rate limiting?
|
|
38
|
-
- [ ] Precisa de webhook para eventos da API?
|
|
39
|
-
|
|
40
|
-
**Perguntas específicas:**
|
|
41
|
-
1. _[Adicionar pergunta sobre integração]_
|
|
42
|
-
2. _[Adicionar pergunta sobre integração]_
|
|
43
|
-
|
|
44
|
-
---
|
|
45
|
-
|
|
46
|
-
### 3. Dados e Persistência
|
|
47
|
-
|
|
48
|
-
- [ ] Qual a política de retenção de dados?
|
|
49
|
-
- [ ] Precisa de soft delete ou hard delete?
|
|
50
|
-
- [ ] Quais dados são sensíveis e precisam de criptografia?
|
|
51
|
-
- [ ] Precisa de histórico/auditoria de alterações?
|
|
52
|
-
- [ ] Qual o volume esperado de dados?
|
|
53
|
-
|
|
54
|
-
**Perguntas específicas:**
|
|
55
|
-
1. _[Adicionar pergunta sobre dados]_
|
|
56
|
-
2. _[Adicionar pergunta sobre dados]_
|
|
57
|
-
|
|
58
|
-
---
|
|
59
|
-
|
|
60
|
-
### 4. Performance e Escalabilidade
|
|
61
|
-
|
|
62
|
-
- [ ] Qual o SLA esperado (tempo de resposta)?
|
|
63
|
-
- [ ] Precisa de cache? Se sim, qual estratégia?
|
|
64
|
-
- [ ] Quantos usuários simultâneos são esperados?
|
|
65
|
-
- [ ] Existem operações que podem ser assíncronas?
|
|
66
|
-
- [ ] Precisa de paginação para listas grandes?
|
|
67
|
-
|
|
68
|
-
**Perguntas específicas:**
|
|
69
|
-
1. _[Adicionar pergunta sobre performance]_
|
|
70
|
-
2. _[Adicionar pergunta sobre performance]_
|
|
71
|
-
|
|
72
|
-
---
|
|
73
|
-
|
|
74
|
-
### 5. Segurança e Autorização
|
|
75
|
-
|
|
76
|
-
- [ ] Quem pode acessar esta funcionalidade?
|
|
77
|
-
- [ ] Existem diferentes níveis de permissão?
|
|
78
|
-
- [ ] Precisa de validação de ownership (usuário só vê seus dados)?
|
|
79
|
-
- [ ] Existem dados que não devem ser expostos em logs?
|
|
80
|
-
- [ ] Precisa de CAPTCHA ou proteção contra bots?
|
|
81
|
-
|
|
82
|
-
**Perguntas específicas:**
|
|
83
|
-
1. _[Adicionar pergunta sobre segurança]_
|
|
84
|
-
2. _[Adicionar pergunta sobre segurança]_
|
|
85
|
-
|
|
86
|
-
---
|
|
87
|
-
|
|
88
|
-
### 6. UI/UX (se aplicável)
|
|
89
|
-
|
|
90
|
-
- [ ] Qual o estado inicial da tela (vazia, loading, dados)?
|
|
91
|
-
- [ ] O que mostrar quando não há dados?
|
|
92
|
-
- [ ] Quais mensagens de erro/sucesso exibir?
|
|
93
|
-
- [ ] Precisa de confirmação antes de ações destrutivas?
|
|
94
|
-
- [ ] Como tratar formulários muito longos (wizard, seções)?
|
|
95
|
-
|
|
96
|
-
**Perguntas específicas:**
|
|
97
|
-
1. _[Adicionar pergunta sobre UI]_
|
|
98
|
-
2. _[Adicionar pergunta sobre UI]_
|
|
99
|
-
|
|
100
|
-
---
|
|
101
|
-
|
|
102
|
-
### 7. Notificações e Comunicação
|
|
103
|
-
|
|
104
|
-
- [ ] Precisa enviar email/SMS/push em algum momento?
|
|
105
|
-
- [ ] Quais eventos disparam notificações?
|
|
106
|
-
- [ ] O usuário pode configurar preferências de notificação?
|
|
107
|
-
- [ ] Precisa de notificações em tempo real (SignalR)?
|
|
108
|
-
|
|
109
|
-
**Perguntas específicas:**
|
|
110
|
-
1. _[Adicionar pergunta sobre notificações]_
|
|
111
|
-
|
|
112
|
-
---
|
|
113
|
-
|
|
114
|
-
### 8. Regras de Negócio
|
|
115
|
-
|
|
116
|
-
- [ ] Existem validações específicas do domínio?
|
|
117
|
-
- [ ] Existem limites (máximo de itens, tamanho de arquivo, etc)?
|
|
118
|
-
- [ ] Existem estados/transições de status?
|
|
119
|
-
- [ ] Existem cálculos ou fórmulas específicas?
|
|
120
|
-
- [ ] Existem regras de agendamento (cron, jobs)?
|
|
121
|
-
|
|
122
|
-
**Perguntas específicas:**
|
|
123
|
-
1. _[Adicionar pergunta sobre regras de negócio]_
|
|
124
|
-
2. _[Adicionar pergunta sobre regras de negócio]_
|
|
125
|
-
|
|
126
|
-
---
|
|
127
|
-
|
|
128
|
-
## 📝 Respostas Coletadas
|
|
129
|
-
|
|
130
|
-
> Preencher com as respostas do usuário
|
|
131
|
-
|
|
132
|
-
| # | Pergunta | Resposta | Impacto no Spec |
|
|
133
|
-
|---|----------|----------|-----------------|
|
|
134
|
-
| 1 | | | |
|
|
135
|
-
| 2 | | | |
|
|
136
|
-
| 3 | | | |
|
|
137
|
-
|
|
138
|
-
---
|
|
139
|
-
|
|
140
|
-
## ✅ Ações Resultantes
|
|
141
|
-
|
|
142
|
-
- [ ] Atualizar spec.md com clarificações
|
|
143
|
-
- [ ] Adicionar edge cases identificados
|
|
144
|
-
- [ ] Atualizar contracts.cs se necessário
|
|
145
|
-
- [ ] Documentar decisões em decisions.md
|
|
146
|
-
|
|
147
|
-
---
|
|
148
|
-
|
|
149
|
-
## 🎯 Status
|
|
150
|
-
|
|
151
|
-
- **Total de perguntas:** _X_
|
|
152
|
-
- **Perguntas respondidas:** _Y_
|
|
153
|
-
- **Pendentes:** _Z_
|
|
154
|
-
|
|
155
|
-
**Pronto para avançar para FASE 4: TASKS?** [ ] Sim [ ] Não
|
|
156
|
-
|
|
157
|
-
---
|
|
158
|
-
|
|
159
|
-
_Gerado por MORPH-SPEC Framework_
|