@polymorphism-tech/morph-spec 8.34.2 → 8.35.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 +20 -3
- package/README.md +2 -2
- package/bin/morph-spec.js +18 -4
- package/bin/validate.js +379 -379
- package/claude-plugin.json +1 -1
- package/docs/CHEATSHEET.md +5 -4
- package/docs/QUICKSTART.md +1 -1
- package/framework/MORPH.md +16 -17
- package/framework/agents.json +197 -44
- package/framework/ai-pin.json +22 -0
- package/framework/commands/morph-media.md +45 -0
- package/framework/docs/CLI.md +234 -9
- package/framework/evals/proof-rubrics/README.md +76 -0
- package/framework/evals/proof-rubrics/eval-de-modelo.md +64 -0
- package/framework/evals/proof-rubrics/fiacao.md +54 -0
- package/framework/evals/proof-rubrics/guard-cego.md +52 -0
- package/framework/evals/proof-rubrics/media-claims.md +109 -0
- package/framework/evals/proof-rubrics/mutation-proof.md +77 -0
- package/framework/evals/proof-rubrics/observabilidade-genai.md +119 -0
- package/framework/evals/proof-rubrics/verde-nao-e-coberto.md +48 -0
- package/framework/evals/rubrics/architecture.md +30 -0
- package/framework/evals/rubrics/code-quality.md +26 -0
- package/framework/evals/rubrics/test-coverage.md +20 -0
- package/framework/hooks/claude-code/core/protect-spec-files.js +41 -4
- package/framework/hooks/claude-code/statusline.sh +11 -11
- package/framework/hooks/git/commit-msg/conventional-commits.sh +33 -33
- package/framework/hooks/git/pre-commit/agents.sh +25 -25
- package/framework/hooks/git/pre-commit/orchestrator.sh +64 -64
- package/framework/hooks/git/pre-commit/specs.sh +50 -50
- package/framework/hooks/git/pre-push/run-tests.sh +44 -44
- package/framework/hooks/shared/e2e-check.js +135 -22
- package/framework/hooks/shared/stdin-reader.js +26 -26
- package/framework/rules/ai-agents-standards.md +14 -2
- package/framework/schemas/ai-pin.schema.json +97 -0
- package/framework/schemas/config.schema.json +107 -0
- package/framework/schemas/feature.schema.json +23 -4
- package/framework/skills/core/create-umbraco-lp/SKILL.md +1 -1
- package/framework/skills/core/migrate-lp-to-umbraco/SKILL.md +1 -1
- package/framework/skills/core/morph-apply/SKILL.md +26 -5
- package/framework/skills/core/morph-brainstorming/SKILL.md +1 -1
- package/framework/skills/core/morph-eval/SKILL.md +1 -1
- package/framework/skills/core/morph-hotfix/SKILL.md +2 -2
- package/framework/skills/core/morph-implement/SKILL.md +18 -2
- package/framework/skills/core/morph-media/SKILL.md +215 -0
- package/framework/skills/core/morph-plan/SKILL.md +33 -2
- package/framework/skills/core/morph-proposal/SKILL.md +1 -1
- package/framework/skills/core/morph-review/SKILL.md +166 -9
- package/framework/skills/core/morph-stack-scan/SKILL.md +1 -1
- package/framework/skills/core/morph-standards/SKILL.md +1 -1
- package/framework/skills/core/morph-uiux/SKILL.md +1 -1
- package/framework/standards/PROVENANCE.json +81 -3
- package/framework/standards/STANDARDS.json +1483 -839
- package/framework/standards/ai-agents/agent-archetypes.md +160 -0
- package/framework/standards/ai-agents/agent-session.md +164 -68
- package/framework/standards/ai-agents/agent-spec.md +196 -0
- package/framework/standards/ai-agents/batching.md +61 -37
- package/framework/standards/ai-agents/context-providers.md +97 -24
- package/framework/standards/ai-agents/conversational-agent-with-phases.md +239 -0
- package/framework/standards/ai-agents/cost-and-budget.md +256 -0
- package/framework/standards/ai-agents/durable-workflows-hitl.md +98 -5
- package/framework/standards/ai-agents/evals-with-cache.md +289 -0
- package/framework/standards/ai-agents/guardrails.md +222 -0
- package/framework/standards/ai-agents/llm-runtime-defaults.md +226 -0
- package/framework/standards/ai-agents/mcp-server.md +119 -18
- package/framework/standards/ai-agents/mcp-tools.md +85 -32
- package/framework/standards/ai-agents/media-pipeline.md +352 -0
- package/framework/standards/ai-agents/media-video.md +267 -0
- package/framework/standards/ai-agents/middleware-patterns.md +39 -5
- package/framework/standards/ai-agents/modalities-image-gen.md +354 -105
- package/framework/standards/ai-agents/modalities-speech-to-text.md +8 -2
- package/framework/standards/ai-agents/modalities-text-to-speech.md +10 -2
- package/framework/standards/ai-agents/modalities-vision.md +6 -2
- package/framework/standards/ai-agents/multi-agent-patterns.md +61 -5
- package/framework/standards/ai-agents/observability-patterns.md +227 -17
- package/framework/standards/ai-agents/production.md +38 -9
- package/framework/standards/ai-agents/prompt-sources.md +389 -0
- package/framework/standards/ai-agents/providers/model-registry.md +174 -39
- package/framework/standards/ai-agents/rag-custom-pgvector.md +69 -4
- package/framework/standards/ai-agents/service-tier-flex.md +27 -19
- package/framework/standards/ai-agents/setup.md +166 -50
- package/framework/standards/ai-agents/structured-output.md +34 -3
- package/framework/standards/ai-agents/sweet-spot.md +23 -3
- package/framework/standards/ai-agents/testing-ai.md +236 -0
- package/framework/standards/ai-agents/vector-data-extensions.md +50 -20
- package/framework/standards/ai-agents/workflows.md +27 -7
- package/framework/standards/frontend/design-system/ai-image-generation.md +12 -0
- package/framework/standards/frontend/design-system/ai-video-generation.md +13 -0
- package/framework/standards/infrastructure/docker/local-compose-isolation.md +3 -1
- package/framework/templates/.idea/morph-templates.xml +92 -0
- package/framework/templates/.vscode/morph-templates.code-snippets +186 -0
- package/framework/templates/IDE-SNIPPETS.md +262 -262
- package/framework/templates/REGISTRY.json +13 -0
- package/framework/templates/code/dotnet/abstractions/api-endpoint.cs +7 -7
- package/framework/templates/code/dotnet/ai-agents/AgentBootstrap.cs.template +39 -39
- package/framework/templates/code/dotnet/ai-agents/EmbeddingService.cs.template +68 -68
- package/framework/templates/code/dotnet/ai-agents/ModelRegistry.cs.template +117 -117
- package/framework/templates/code/dotnet/ai-agents/PromptRepository.cs.template +1 -1
- package/framework/templates/code/dotnet/ai-agents/ResilientToolMiddleware.cs.template +61 -61
- package/framework/templates/code/dotnet/ai-agents/VectorSearchTool.cs.template +107 -107
- package/framework/templates/code/dotnet/ai-agents/model-registry.json.template +58 -58
- package/framework/templates/code/dotnet/contracts/contracts-vsa.cs +281 -281
- package/framework/templates/code/dotnet/database/migration.cs +83 -83
- package/framework/templates/code/dotnet/feature/endpoint.cs.hbs +21 -21
- package/framework/templates/code/dotnet/feature/request.cs.hbs +4 -4
- package/framework/templates/code/dotnet/feature/response.cs.hbs +4 -4
- package/framework/templates/code/dotnet/feature/validator.cs.hbs +15 -15
- package/framework/templates/code/sql/ai-agents/agent-prompts-migration.sql.template +1 -1
- package/framework/templates/code/sql/ai-agents/pgvector-embeddings-migration.sql.template +91 -91
- package/framework/templates/code/typescript/contracts.ts +167 -167
- package/framework/templates/docs/clarifications.md +253 -253
- package/framework/templates/docs/schema-analysis.md +119 -119
- package/framework/templates/docs/ui-components.md +52 -52
- package/framework/templates/docs/ui-design-system.md +76 -76
- package/framework/templates/docs/ui-flows.md +167 -167
- package/framework/templates/docs/ui-mockups.md +98 -98
- package/framework/templates/dotnet/ai-kit/Directory.Build.props +25 -0
- package/framework/templates/dotnet/ai-kit/Directory.Packages.props +26 -0
- package/framework/templates/dotnet/ai-kit/Morph.AiKit.sln +56 -0
- package/framework/templates/dotnet/ai-kit/NuGet.config +12 -0
- package/framework/templates/dotnet/ai-kit/README.md +128 -0
- package/framework/templates/dotnet/ai-kit/global.json +9 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Agents/AgentApi.cs +65 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Agents/AgentFactory.cs +289 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Agents/AgentFactoryOptions.cs +91 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Agents/AgentSpec.cs +91 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Agents/AgentSpecOptions.cs +181 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/AiKitAssemblyMarker.cs +14 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Conversation/ConversationStore.cs +174 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Conversation/IConversationStore.cs +54 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Conversation/InMemoryConversationStore.cs +75 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Evals/CountingChatClient.cs +71 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Evals/EvalAssertion.cs +246 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Evals/EvalCacheMissException.cs +57 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Evals/EvalCacheOptions.cs +78 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Evals/EvalCacheStamp.cs +225 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Evals/EvalFixture.cs +463 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Evals/EvalMode.cs +32 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Evals/EvalQualityEvaluators.cs +49 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Evals/EvalScenario.cs +214 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Evals/EvalSummary.cs +168 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Evals/OfflineChatClient.cs +142 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Evals/ShortPathResponseCache.cs +349 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/IMediaGenerator.cs +42 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/IMediaProvider.cs +77 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/MediaArtifact.cs +28 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/MediaDisclosure.cs +107 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/MediaGenerator.cs +253 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/MediaIdempotencyKey.cs +103 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/MediaJob.cs +259 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/MediaJobId.cs +21 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/MediaJobState.cs +47 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/MediaPricing.cs +102 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/MediaProvenance.cs +44 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/MediaRequest.cs +192 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/MediaResult.cs +94 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/MediaReview.cs +99 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/MediaSeams.cs +97 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/MediaStore.cs +133 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/MorphMedia.cs +93 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/Providers/GoogleImageProvider.cs +112 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/Providers/OpenAIImageProvider.cs +288 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Media/Providers/VeoVideoProvider.cs +158 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Middleware/IUsageCostSink.cs +29 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Middleware/UsageCostMiddleware.cs +208 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Middleware/UsageCostRecord.cs +95 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Morph.AiKit.csproj +38 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Observability/MorphOpenTelemetryExtensions.cs +119 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Observability/MorphTelemetryOptions.cs +82 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Providers/IProviderClientFactory.cs +33 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Providers/ModelAlias.cs +267 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Providers/ModelRegistry.cs +474 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Providers/model-registry.v2.json +87 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Rag/DeltaIngest.cs +169 -0
- package/framework/templates/dotnet/ai-kit/src/Morph.AiKit/Rag/DeltaPlan.cs +49 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/AgentFactoryTests.cs +495 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/AgentSpecTests.cs +260 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/ConversationStoreTests.cs +405 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/DeltaIngestTests.cs +379 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Evals/EvalAssertionTests.cs +197 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Evals/EvalCacheMissTests.cs +139 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Evals/EvalCacheStampTests.cs +157 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Evals/EvalFailuresTests.cs +178 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Evals/EvalFixtureTests.cs +153 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Evals/EvalRefreshTests.cs +194 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Evals/EvalWorkspace.cs +86 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Evals/KitEvals.cs +213 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Evals/OfflineChatClientTests.cs +95 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Fakes/FakeChatClient.cs +225 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Fakes/FakeChatClientTests.cs +215 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Fakes/FakeClock.cs +33 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Fakes/FakeMediaProvider.cs +89 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Fakes/FakeProviderClientFactory.cs +55 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Fakes/FakeUsageCostSink.cs +60 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Fakes/InMemoryMediaStore.cs +131 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/MediaAccessibilityTests.cs +133 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/MediaAliasIsNotAnAgentTests.cs +127 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/MediaDisclosureTests.cs +216 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/MediaGeneratorTests.cs +264 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/MediaIdempotencyKeyTests.cs +148 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/MediaJobStateTests.cs +184 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/MediaReviewTests.cs +89 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/MediaStoreTests.cs +98 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/ModelRegistryTests.cs +451 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Morph.AiKit.Tests.csproj +76 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/SkeletonSmokeTests.cs +33 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/TelemetryTests.cs +261 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/UsageCostMiddlewareTests.cs +374 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/eval-cache/.morph-eval-cache.json +12 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/eval-cache/cache/orcamento.acme.a-resposta-estruturada/1/CF70A7CE27BBD66A/contents.data +13 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/eval-cache/cache/orcamento.acme.a-resposta-estruturada/1/CF70A7CE27BBD66A/entry.json +7 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/eval-cache/cache/triagem.acme.a-saudacao/1/19F631228C6E00BA/contents.data +13 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/eval-cache/cache/triagem.acme.a-saudacao/1/19F631228C6E00BA/entry.json +7 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/eval-cache/cache/triagem.acme.b-escalonamento/1/A24A7C9BDD8239D8/contents.data +13 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/eval-cache/cache/triagem.acme.b-escalonamento/1/A24A7C9BDD8239D8/entry.json +7 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/eval-cache/cache/triagem.globex.a-saudacao/1/E38CD37DF003EDB7/contents.data +13 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/eval-cache/cache/triagem.globex.a-saudacao/1/E38CD37DF003EDB7/entry.json +7 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/eval-datasets/orcamento/acme/a-resposta-estruturada.json +24 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/eval-datasets/triagem/acme/a-saudacao.json +23 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/eval-datasets/triagem/acme/b-escalonamento.json +24 -0
- package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/eval-datasets/triagem/globex/a-saudacao.json +23 -0
- package/framework/templates/feature/decisions.md +122 -122
- package/framework/templates/frontend/nextjs/Dockerfile.nextjs.hbs +43 -43
- package/framework/templates/frontend/nextjs/client-component.tsx.hbs +26 -26
- package/framework/templates/frontend/nextjs/env.mjs.hbs +32 -32
- package/framework/templates/frontend/nextjs/feature-form.tsx.hbs +56 -56
- package/framework/templates/frontend/nextjs/page.tsx.hbs +22 -22
- package/framework/templates/frontend/nextjs/tsconfig.json.hbs +26 -26
- package/framework/templates/frontend/nextjs/use-feature.ts.hbs +54 -54
- package/framework/templates/infrastructure/docker/Dockerfile.template +58 -58
- package/framework/templates/infrastructure/docker/dockerfile-api.dockerfile +38 -38
- package/framework/templates/infrastructure/docker/dockerfile-web.dockerfile +48 -48
- package/framework/templates/infrastructure/github/README.md +56 -56
- package/framework/templates/infrastructure/github/actions/docker-build-push/action.yml.hbs +45 -45
- package/framework/templates/infrastructure/github/actions/health-check/action.yml.hbs +27 -27
- package/framework/templates/infrastructure/github/workflows/docker-build-push.yml.hbs +59 -59
- package/framework/templates/infrastructure/github/workflows/dotnet-build.yml.hbs +39 -39
- package/framework/templates/integrations/asaas-client.cs +387 -387
- package/framework/templates/integrations/asaas-webhook.cs +351 -351
- package/framework/templates/meta-prompts/fusion/fusion-agent.md +76 -76
- package/framework/templates/meta-prompts/fusion/fusion-aggregator.md +100 -100
- package/framework/templates/meta-prompts/validators/pre-commit-validator.md +95 -95
- package/framework/templates/project/validate.js +120 -120
- package/framework/templates/state.template.json +17 -17
- package/framework/templates/ui/design-system.css +226 -226
- package/package.json +3 -3
- package/src/commands/dashboard/dashboard.js +53 -53
- package/src/commands/e2e/e2e.js +15 -2
- package/src/commands/index.js +13 -13
- package/src/commands/project/checkpoint.js +209 -209
- package/src/commands/project/doctor.js +140 -5
- package/src/commands/project/update.js +469 -153
- package/src/commands/project/worktree.js +8 -1
- package/src/commands/state/advance.js +24 -2
- package/src/commands/state/approve.js +33 -1
- package/src/commands/state/create.js +72 -11
- package/src/commands/state/finish.js +333 -21
- package/src/commands/state/gate-check.js +190 -6
- package/src/commands/state/score.js +36 -1
- package/src/commands/validation/verify.js +134 -25
- package/src/core/state/phase-state-machine.js +197 -197
- package/src/core/state/state-manager.js +9 -1
- package/src/core/templates/template-renderer.js +477 -477
- package/src/dashboard/app/components/DetailPanel.jsx +11 -11
- package/src/dashboard/app/components/FlowGraph.jsx +17 -17
- package/src/dashboard/app/components/SearchFilter.jsx +22 -22
- package/src/dashboard/app/hooks/useDetailPanel.js +15 -15
- package/src/dashboard/app/main.jsx +13 -13
- package/src/dashboard/app/pages/AgentMap.jsx +370 -370
- package/src/dashboard/app/pages/PhasePipeline.jsx +408 -408
- package/src/dashboard/app/pages/RulesMap.jsx +273 -273
- package/src/dashboard/app/pages/SkillsLibrary.jsx +366 -366
- package/src/dashboard/app/pages/Standards.jsx +332 -332
- package/src/dashboard/app/styles/index.css +47 -47
- package/src/dashboard/index.html +12 -12
- package/src/dashboard/package.json +24 -24
- package/src/dashboard/scanner/phases-scanner.js +15 -15
- package/src/dashboard/scanner/rubrics-scanner.js +12 -12
- package/src/dashboard/scanner/rules-scanner.js +37 -37
- package/src/dashboard/scanner/skills-scanner.js +43 -43
- package/src/dashboard/scanner/squads-scanner.js +13 -13
- package/src/dashboard/vite-plugin-morph-data.js +17 -17
- package/src/dashboard/vite.config.js +24 -24
- package/src/lib/ai/ai-checks.js +182 -0
- package/src/lib/ai/ai-project-scan.js +347 -0
- package/src/lib/ai/code-audit.js +181 -0
- package/src/lib/ai/comment-stripper.js +184 -0
- package/src/lib/ai/pin-drift.js +138 -0
- package/src/lib/ai/registry-audit.js +285 -0
- package/src/lib/detectors/design-system-detector.js +188 -188
- package/src/lib/detectors/index.js +217 -217
- package/src/lib/e2e/compose-env.js +50 -4
- package/src/lib/evaluator-report.js +269 -15
- package/src/lib/generators/design-system-generator.js +508 -508
- package/src/lib/generators/settings-generator.js +209 -209
- package/src/lib/git/default-branch.js +92 -4
- package/src/lib/hooks/hook-executor.js +167 -167
- package/src/lib/installers/effects.js +193 -0
- package/src/lib/installers/mcp-installer.js +719 -719
- package/src/lib/installers/templates-reconcile.js +3 -3
- package/src/lib/risk-detector.js +284 -0
- package/src/lib/standards/verified-against.js +276 -0
- package/src/lib/tasks/eval-node.js +485 -0
- package/src/lib/tasks/linux-runner.js +297 -0
- package/src/lib/tasks/task-classifier.js +30 -30
- package/src/lib/tasks/task-parser.js +209 -209
- package/src/lib/tasks/test-nodes.js +486 -0
- package/src/lib/tasks/test-runner.js +410 -33
- package/src/lib/validators/checkpoint-persistence.js +39 -39
- package/src/lib/validators/css/css-validator.js +340 -340
- package/src/lib/validators/shared/emit-validator-dispatch.js +14 -14
- package/src/lib/validators/shared/issue-counter.js +14 -14
- package/src/lib/validators/verify-runner.js +583 -28
- package/src/lib/worktree/docker-audit.js +287 -0
- package/src/lib/worktree/env-allocator.js +24 -0
- package/src/lib/worktree/worktree-audit.js +30 -1
- package/src/scripts/setup-infra.js +24 -11
- package/src/utils/agent-id-mapper.js +11 -11
- package/src/utils/agents-installer.js +18 -8
- package/src/utils/claude-md-injector.js +10 -5
- package/src/utils/claude-settings-manager.js +300 -300
- package/src/utils/file-copier.js +11 -4
- package/src/utils/hooks-installer.js +29 -26
- package/src/utils/skills-installer.js +36 -29
- package/src/utils/version-checker.js +68 -3
- package/framework/standards/ai-agents/prompts-in-db.md +0 -214
|
@@ -1,167 +1,167 @@
|
|
|
1
|
-
# UI Flows: {{titleCase FEATURE_NAME}}
|
|
2
|
-
|
|
3
|
-
| Field | Value |
|
|
4
|
-
|-------|-------|
|
|
5
|
-
| **Feature** | {{FEATURE_NAME}} |
|
|
6
|
-
| **Created** | {{DATE}} |
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## User Stories
|
|
11
|
-
|
|
12
|
-
### US001: {Primary User Story}
|
|
13
|
-
|
|
14
|
-
**As** a {user type}
|
|
15
|
-
**I want** to {capability}
|
|
16
|
-
**So that** {benefit}
|
|
17
|
-
|
|
18
|
-
**Acceptance Criteria:**
|
|
19
|
-
1. {Criterion 1}
|
|
20
|
-
2. {Criterion 2}
|
|
21
|
-
|
|
22
|
-
---
|
|
23
|
-
|
|
24
|
-
## Flow Inventory
|
|
25
|
-
|
|
26
|
-
| Flow ID | Name | Priority |
|
|
27
|
-
|---------|------|----------|
|
|
28
|
-
| **F001** | Create New Item | High |
|
|
29
|
-
| **F002** | Edit Existing Item | High |
|
|
30
|
-
| **F003** | Delete Item | Medium |
|
|
31
|
-
|
|
32
|
-
---
|
|
33
|
-
|
|
34
|
-
## F001: Create New Item
|
|
35
|
-
|
|
36
|
-
### Happy Path
|
|
37
|
-
|
|
38
|
-
```
|
|
39
|
-
START
|
|
40
|
-
↓
|
|
41
|
-
[User clicks "Add New"]
|
|
42
|
-
↓
|
|
43
|
-
[Modal opens with form]
|
|
44
|
-
↓
|
|
45
|
-
[User fills required fields]
|
|
46
|
-
↓
|
|
47
|
-
[User clicks "Submit"]
|
|
48
|
-
↓
|
|
49
|
-
[Validation passes] ✓
|
|
50
|
-
↓
|
|
51
|
-
[API call: POST /api/items]
|
|
52
|
-
↓
|
|
53
|
-
[Success response]
|
|
54
|
-
↓
|
|
55
|
-
[Modal closes]
|
|
56
|
-
↓
|
|
57
|
-
[Success toast: "Item created"]
|
|
58
|
-
↓
|
|
59
|
-
[Table refreshes]
|
|
60
|
-
↓
|
|
61
|
-
END
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
**Duration:** 15-30 seconds
|
|
65
|
-
**Success Rate Target:** 95%
|
|
66
|
-
|
|
67
|
-
---
|
|
68
|
-
|
|
69
|
-
### Alternative Path: Validation Error
|
|
70
|
-
|
|
71
|
-
```
|
|
72
|
-
[User clicks "Submit"]
|
|
73
|
-
↓
|
|
74
|
-
[Validation fails] ✕
|
|
75
|
-
↓
|
|
76
|
-
[Error messages shown inline]
|
|
77
|
-
↓
|
|
78
|
-
[User corrects errors]
|
|
79
|
-
↓
|
|
80
|
-
[Real-time validation clears errors]
|
|
81
|
-
↓
|
|
82
|
-
→ Returns to Happy Path
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
---
|
|
86
|
-
|
|
87
|
-
### Edge Cases
|
|
88
|
-
|
|
89
|
-
| Scenario | Behavior |
|
|
90
|
-
|----------|----------|
|
|
91
|
-
| **Duplicate Name** | Show warning, allow submit |
|
|
92
|
-
| **Network Error** | Show error toast, preserve data |
|
|
93
|
-
| **Session Expired** | Redirect to login |
|
|
94
|
-
|
|
95
|
-
---
|
|
96
|
-
|
|
97
|
-
## F002: Edit Existing Item
|
|
98
|
-
|
|
99
|
-
```
|
|
100
|
-
[User clicks "Edit"]
|
|
101
|
-
↓
|
|
102
|
-
[Modal opens with pre-filled form]
|
|
103
|
-
↓
|
|
104
|
-
[User modifies fields]
|
|
105
|
-
↓
|
|
106
|
-
[User clicks "Save"]
|
|
107
|
-
↓
|
|
108
|
-
[API call: PUT /api/items/{id}]
|
|
109
|
-
↓
|
|
110
|
-
[Success toast]
|
|
111
|
-
↓
|
|
112
|
-
[Table refreshes]
|
|
113
|
-
END
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
---
|
|
117
|
-
|
|
118
|
-
## F003: Delete Item
|
|
119
|
-
|
|
120
|
-
```
|
|
121
|
-
[User clicks "Delete"]
|
|
122
|
-
↓
|
|
123
|
-
[Confirmation dialog: "Delete item?"]
|
|
124
|
-
↓
|
|
125
|
-
[User confirms]
|
|
126
|
-
↓
|
|
127
|
-
[API call: DELETE /api/items/{id}]
|
|
128
|
-
↓
|
|
129
|
-
[Success toast]
|
|
130
|
-
↓
|
|
131
|
-
[Table refreshes]
|
|
132
|
-
END
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
---
|
|
136
|
-
|
|
137
|
-
## Toast Notifications
|
|
138
|
-
|
|
139
|
-
| Event | Type | Message | Duration |
|
|
140
|
-
|-------|------|---------|----------|
|
|
141
|
-
| **Item Created** | Success | "Item created successfully" | 3s |
|
|
142
|
-
| **Item Updated** | Success | "Item updated successfully" | 3s |
|
|
143
|
-
| **Item Deleted** | Success | "Item deleted successfully" | 3s |
|
|
144
|
-
| **Error** | Error | "Something went wrong" | 5s |
|
|
145
|
-
|
|
146
|
-
---
|
|
147
|
-
|
|
148
|
-
## Keyboard Shortcuts
|
|
149
|
-
|
|
150
|
-
| Shortcut | Action |
|
|
151
|
-
|----------|--------|
|
|
152
|
-
| **Ctrl+N** | New Item |
|
|
153
|
-
| **Escape** | Close modal |
|
|
154
|
-
| **Enter** | Submit form |
|
|
155
|
-
|
|
156
|
-
---
|
|
157
|
-
|
|
158
|
-
## Performance Targets
|
|
159
|
-
|
|
160
|
-
| Flow | Target |
|
|
161
|
-
|------|--------|
|
|
162
|
-
| **Create Item** | < 2s (API response) |
|
|
163
|
-
| **Search** | < 500ms |
|
|
164
|
-
|
|
165
|
-
---
|
|
166
|
-
|
|
167
|
-
*Generated with MORPH Framework*
|
|
1
|
+
# UI Flows: {{titleCase FEATURE_NAME}}
|
|
2
|
+
|
|
3
|
+
| Field | Value |
|
|
4
|
+
|-------|-------|
|
|
5
|
+
| **Feature** | {{FEATURE_NAME}} |
|
|
6
|
+
| **Created** | {{DATE}} |
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## User Stories
|
|
11
|
+
|
|
12
|
+
### US001: {Primary User Story}
|
|
13
|
+
|
|
14
|
+
**As** a {user type}
|
|
15
|
+
**I want** to {capability}
|
|
16
|
+
**So that** {benefit}
|
|
17
|
+
|
|
18
|
+
**Acceptance Criteria:**
|
|
19
|
+
1. {Criterion 1}
|
|
20
|
+
2. {Criterion 2}
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Flow Inventory
|
|
25
|
+
|
|
26
|
+
| Flow ID | Name | Priority |
|
|
27
|
+
|---------|------|----------|
|
|
28
|
+
| **F001** | Create New Item | High |
|
|
29
|
+
| **F002** | Edit Existing Item | High |
|
|
30
|
+
| **F003** | Delete Item | Medium |
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## F001: Create New Item
|
|
35
|
+
|
|
36
|
+
### Happy Path
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
START
|
|
40
|
+
↓
|
|
41
|
+
[User clicks "Add New"]
|
|
42
|
+
↓
|
|
43
|
+
[Modal opens with form]
|
|
44
|
+
↓
|
|
45
|
+
[User fills required fields]
|
|
46
|
+
↓
|
|
47
|
+
[User clicks "Submit"]
|
|
48
|
+
↓
|
|
49
|
+
[Validation passes] ✓
|
|
50
|
+
↓
|
|
51
|
+
[API call: POST /api/items]
|
|
52
|
+
↓
|
|
53
|
+
[Success response]
|
|
54
|
+
↓
|
|
55
|
+
[Modal closes]
|
|
56
|
+
↓
|
|
57
|
+
[Success toast: "Item created"]
|
|
58
|
+
↓
|
|
59
|
+
[Table refreshes]
|
|
60
|
+
↓
|
|
61
|
+
END
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**Duration:** 15-30 seconds
|
|
65
|
+
**Success Rate Target:** 95%
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
### Alternative Path: Validation Error
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
[User clicks "Submit"]
|
|
73
|
+
↓
|
|
74
|
+
[Validation fails] ✕
|
|
75
|
+
↓
|
|
76
|
+
[Error messages shown inline]
|
|
77
|
+
↓
|
|
78
|
+
[User corrects errors]
|
|
79
|
+
↓
|
|
80
|
+
[Real-time validation clears errors]
|
|
81
|
+
↓
|
|
82
|
+
→ Returns to Happy Path
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
### Edge Cases
|
|
88
|
+
|
|
89
|
+
| Scenario | Behavior |
|
|
90
|
+
|----------|----------|
|
|
91
|
+
| **Duplicate Name** | Show warning, allow submit |
|
|
92
|
+
| **Network Error** | Show error toast, preserve data |
|
|
93
|
+
| **Session Expired** | Redirect to login |
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## F002: Edit Existing Item
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
[User clicks "Edit"]
|
|
101
|
+
↓
|
|
102
|
+
[Modal opens with pre-filled form]
|
|
103
|
+
↓
|
|
104
|
+
[User modifies fields]
|
|
105
|
+
↓
|
|
106
|
+
[User clicks "Save"]
|
|
107
|
+
↓
|
|
108
|
+
[API call: PUT /api/items/{id}]
|
|
109
|
+
↓
|
|
110
|
+
[Success toast]
|
|
111
|
+
↓
|
|
112
|
+
[Table refreshes]
|
|
113
|
+
END
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## F003: Delete Item
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
[User clicks "Delete"]
|
|
122
|
+
↓
|
|
123
|
+
[Confirmation dialog: "Delete item?"]
|
|
124
|
+
↓
|
|
125
|
+
[User confirms]
|
|
126
|
+
↓
|
|
127
|
+
[API call: DELETE /api/items/{id}]
|
|
128
|
+
↓
|
|
129
|
+
[Success toast]
|
|
130
|
+
↓
|
|
131
|
+
[Table refreshes]
|
|
132
|
+
END
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Toast Notifications
|
|
138
|
+
|
|
139
|
+
| Event | Type | Message | Duration |
|
|
140
|
+
|-------|------|---------|----------|
|
|
141
|
+
| **Item Created** | Success | "Item created successfully" | 3s |
|
|
142
|
+
| **Item Updated** | Success | "Item updated successfully" | 3s |
|
|
143
|
+
| **Item Deleted** | Success | "Item deleted successfully" | 3s |
|
|
144
|
+
| **Error** | Error | "Something went wrong" | 5s |
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Keyboard Shortcuts
|
|
149
|
+
|
|
150
|
+
| Shortcut | Action |
|
|
151
|
+
|----------|--------|
|
|
152
|
+
| **Ctrl+N** | New Item |
|
|
153
|
+
| **Escape** | Close modal |
|
|
154
|
+
| **Enter** | Submit form |
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## Performance Targets
|
|
159
|
+
|
|
160
|
+
| Flow | Target |
|
|
161
|
+
|------|--------|
|
|
162
|
+
| **Create Item** | < 2s (API response) |
|
|
163
|
+
| **Search** | < 500ms |
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
*Generated with MORPH Framework*
|
|
@@ -1,98 +1,98 @@
|
|
|
1
|
-
# UI Mockups & Wireframes: {{titleCase FEATURE_NAME}}
|
|
2
|
-
|
|
3
|
-
| Field | Value |
|
|
4
|
-
|-------|-------|
|
|
5
|
-
| **Feature** | {{FEATURE_NAME}} |
|
|
6
|
-
| **Created** | {{DATE}} |
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## Screen Inventory
|
|
11
|
-
|
|
12
|
-
| Screen ID | Name | Route | Priority |
|
|
13
|
-
|-----------|------|-------|----------|
|
|
14
|
-
| **S001** | {Screen Name} | /path | High |
|
|
15
|
-
| **S002** | {Screen Name} | /path | Medium |
|
|
16
|
-
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
## S001: {Primary Screen}
|
|
20
|
-
|
|
21
|
-
### Desktop Layout
|
|
22
|
-
|
|
23
|
-
```
|
|
24
|
-
┌─────────────────────────────────────┐
|
|
25
|
-
│ Header [User ▼] │
|
|
26
|
-
├─────────────────────────────────────┤
|
|
27
|
-
│ │
|
|
28
|
-
│ [Title] │
|
|
29
|
-
│ │
|
|
30
|
-
│ ┌──────────────────────────────┐ │
|
|
31
|
-
│ │ Main Content Area │ │
|
|
32
|
-
│ │ │ │
|
|
33
|
-
│ │ [Card 1] [Card 2] │ │
|
|
34
|
-
│ │ │ │
|
|
35
|
-
│ │ ┌────────────────────────┐ │ │
|
|
36
|
-
│ │ │ Data Table │ │ │
|
|
37
|
-
│ │ │ ... │ │ │
|
|
38
|
-
│ │ └────────────────────────┘ │ │
|
|
39
|
-
│ └──────────────────────────────┘ │
|
|
40
|
-
│ │
|
|
41
|
-
└─────────────────────────────────────┘
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
### Mobile Layout
|
|
45
|
-
|
|
46
|
-
```
|
|
47
|
-
┌──────────────────────┐
|
|
48
|
-
│ ☰ Title [User ▼]│
|
|
49
|
-
├──────────────────────┤
|
|
50
|
-
│ │
|
|
51
|
-
│ [Card 1] │
|
|
52
|
-
│ │
|
|
53
|
-
│ [Card 2] │
|
|
54
|
-
│ │
|
|
55
|
-
│ [View All Items] │
|
|
56
|
-
│ │
|
|
57
|
-
└──────────────────────┘
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
---
|
|
61
|
-
|
|
62
|
-
## States
|
|
63
|
-
|
|
64
|
-
### Loading
|
|
65
|
-
- Show skeleton placeholders
|
|
66
|
-
- Spinner for primary content
|
|
67
|
-
|
|
68
|
-
### Empty
|
|
69
|
-
- Icon + message
|
|
70
|
-
- Clear call-to-action button
|
|
71
|
-
|
|
72
|
-
### Error
|
|
73
|
-
- Warning icon
|
|
74
|
-
- User-friendly message
|
|
75
|
-
- Retry button
|
|
76
|
-
|
|
77
|
-
### Success (After Action)
|
|
78
|
-
- Toast notification
|
|
79
|
-
- Auto-dismiss after 3s
|
|
80
|
-
|
|
81
|
-
---
|
|
82
|
-
|
|
83
|
-
## Interactions
|
|
84
|
-
|
|
85
|
-
- **Hover**: Subtle elevation increase
|
|
86
|
-
- **Click**: Scale down (0.98)
|
|
87
|
-
- **Transitions**: Fade-in 200ms
|
|
88
|
-
|
|
89
|
-
---
|
|
90
|
-
|
|
91
|
-
## Accessibility
|
|
92
|
-
- [ ] 44x44px minimum touch targets
|
|
93
|
-
- [ ] Focus indicators visible
|
|
94
|
-
- [ ] Proper heading hierarchy (H1 → H2 → H3)
|
|
95
|
-
|
|
96
|
-
---
|
|
97
|
-
|
|
98
|
-
*Generated with MORPH Framework*
|
|
1
|
+
# UI Mockups & Wireframes: {{titleCase FEATURE_NAME}}
|
|
2
|
+
|
|
3
|
+
| Field | Value |
|
|
4
|
+
|-------|-------|
|
|
5
|
+
| **Feature** | {{FEATURE_NAME}} |
|
|
6
|
+
| **Created** | {{DATE}} |
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Screen Inventory
|
|
11
|
+
|
|
12
|
+
| Screen ID | Name | Route | Priority |
|
|
13
|
+
|-----------|------|-------|----------|
|
|
14
|
+
| **S001** | {Screen Name} | /path | High |
|
|
15
|
+
| **S002** | {Screen Name} | /path | Medium |
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## S001: {Primary Screen}
|
|
20
|
+
|
|
21
|
+
### Desktop Layout
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
┌─────────────────────────────────────┐
|
|
25
|
+
│ Header [User ▼] │
|
|
26
|
+
├─────────────────────────────────────┤
|
|
27
|
+
│ │
|
|
28
|
+
│ [Title] │
|
|
29
|
+
│ │
|
|
30
|
+
│ ┌──────────────────────────────┐ │
|
|
31
|
+
│ │ Main Content Area │ │
|
|
32
|
+
│ │ │ │
|
|
33
|
+
│ │ [Card 1] [Card 2] │ │
|
|
34
|
+
│ │ │ │
|
|
35
|
+
│ │ ┌────────────────────────┐ │ │
|
|
36
|
+
│ │ │ Data Table │ │ │
|
|
37
|
+
│ │ │ ... │ │ │
|
|
38
|
+
│ │ └────────────────────────┘ │ │
|
|
39
|
+
│ └──────────────────────────────┘ │
|
|
40
|
+
│ │
|
|
41
|
+
└─────────────────────────────────────┘
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Mobile Layout
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
┌──────────────────────┐
|
|
48
|
+
│ ☰ Title [User ▼]│
|
|
49
|
+
├──────────────────────┤
|
|
50
|
+
│ │
|
|
51
|
+
│ [Card 1] │
|
|
52
|
+
│ │
|
|
53
|
+
│ [Card 2] │
|
|
54
|
+
│ │
|
|
55
|
+
│ [View All Items] │
|
|
56
|
+
│ │
|
|
57
|
+
└──────────────────────┘
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## States
|
|
63
|
+
|
|
64
|
+
### Loading
|
|
65
|
+
- Show skeleton placeholders
|
|
66
|
+
- Spinner for primary content
|
|
67
|
+
|
|
68
|
+
### Empty
|
|
69
|
+
- Icon + message
|
|
70
|
+
- Clear call-to-action button
|
|
71
|
+
|
|
72
|
+
### Error
|
|
73
|
+
- Warning icon
|
|
74
|
+
- User-friendly message
|
|
75
|
+
- Retry button
|
|
76
|
+
|
|
77
|
+
### Success (After Action)
|
|
78
|
+
- Toast notification
|
|
79
|
+
- Auto-dismiss after 3s
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Interactions
|
|
84
|
+
|
|
85
|
+
- **Hover**: Subtle elevation increase
|
|
86
|
+
- **Click**: Scale down (0.98)
|
|
87
|
+
- **Transitions**: Fade-in 200ms
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Accessibility
|
|
92
|
+
- [ ] 44x44px minimum touch targets
|
|
93
|
+
- [ ] Focus indicators visible
|
|
94
|
+
- [ ] Proper heading hierarchy (H1 → H2 → H3)
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
*Generated with MORPH Framework*
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<Project>
|
|
2
|
+
|
|
3
|
+
<!--
|
|
4
|
+
Propriedades comuns a TODOS os projetos do Morph.AiKit.
|
|
5
|
+
|
|
6
|
+
NAO escreva versao de pacote aqui nem em nenhum .csproj: as versoes vivem em
|
|
7
|
+
Directory.Packages.props, GERADO por scripts/generate-ai-pin-props.js a partir de
|
|
8
|
+
framework/ai-pin.json. Com Central Package Management ligado, um <PackageReference>
|
|
9
|
+
com atributo Version vira erro de restore (NU1008) — e por isso que um .csproj nao
|
|
10
|
+
consegue divergir do pin.
|
|
11
|
+
-->
|
|
12
|
+
<PropertyGroup>
|
|
13
|
+
<TargetFramework>net10.0</TargetFramework>
|
|
14
|
+
<LangVersion>latest</LangVersion>
|
|
15
|
+
<Nullable>enable</Nullable>
|
|
16
|
+
<ImplicitUsings>enable</ImplicitUsings>
|
|
17
|
+
|
|
18
|
+
<!-- Um kit cujo proposito e gritar nao pode engolir warning. -->
|
|
19
|
+
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
|
20
|
+
|
|
21
|
+
<Deterministic>true</Deterministic>
|
|
22
|
+
<IsPackable>false</IsPackable>
|
|
23
|
+
</PropertyGroup>
|
|
24
|
+
|
|
25
|
+
</Project>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<Project>
|
|
2
|
+
<!-- GERADO por scripts/generate-ai-pin-props.js a partir de framework/ai-pin.json. Não editar à mão — mexer no pin é mexer em framework/ai-pin.json. -->
|
|
3
|
+
<!-- pinnedAt: 2026-09-08 · fonte: https://api.nuget.org/v3/registration5-semver1/{id}/index.json -->
|
|
4
|
+
<PropertyGroup>
|
|
5
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
|
6
|
+
</PropertyGroup>
|
|
7
|
+
|
|
8
|
+
<!-- Pacotes de IA (framework/ai-pin.json → packages) -->
|
|
9
|
+
<ItemGroup>
|
|
10
|
+
<PackageVersion Include="Microsoft.Agents.AI" Version="1.20.0" />
|
|
11
|
+
<PackageVersion Include="Microsoft.Extensions.AI" Version="10.9.0" />
|
|
12
|
+
<PackageVersion Include="OpenAI" Version="2.13.0" />
|
|
13
|
+
<PackageVersion Include="Google.GenAI" Version="1.21.0" />
|
|
14
|
+
<PackageVersion Include="ModelContextProtocol" Version="2.2.0" />
|
|
15
|
+
<PackageVersion Include="Microsoft.Extensions.AI.Evaluation" Version="10.9.0" />
|
|
16
|
+
<PackageVersion Include="Microsoft.Extensions.AI.Evaluation.Quality" Version="10.9.0" />
|
|
17
|
+
<PackageVersion Include="Microsoft.Extensions.AI.Evaluation.Reporting" Version="10.9.0" />
|
|
18
|
+
</ItemGroup>
|
|
19
|
+
|
|
20
|
+
<!-- Build e teste (framework/ai-pin.json → toolchain) -->
|
|
21
|
+
<ItemGroup>
|
|
22
|
+
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.9.0" />
|
|
23
|
+
<PackageVersion Include="xunit.v3" Version="4.0.0" />
|
|
24
|
+
<PackageVersion Include="xunit.runner.visualstudio" Version="4.0.0" />
|
|
25
|
+
</ItemGroup>
|
|
26
|
+
</Project>
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
|
|
2
|
+
Microsoft Visual Studio Solution File, Format Version 12.00
|
|
3
|
+
# Visual Studio Version 17
|
|
4
|
+
VisualStudioVersion = 17.0.31903.59
|
|
5
|
+
MinimumVisualStudioVersion = 10.0.40219.1
|
|
6
|
+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{827E0CD3-B72D-47B6-A68D-7590B98EB39B}"
|
|
7
|
+
EndProject
|
|
8
|
+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Morph.AiKit", "src\Morph.AiKit\Morph.AiKit.csproj", "{0577D911-1F1E-422E-A1CD-23379F308B05}"
|
|
9
|
+
EndProject
|
|
10
|
+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{0AB3BF05-4346-4AA6-1389-037BE0695223}"
|
|
11
|
+
EndProject
|
|
12
|
+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Morph.AiKit.Tests", "tests\Morph.AiKit.Tests\Morph.AiKit.Tests.csproj", "{A0543CA3-CC90-45F6-940E-3F58570BB4D3}"
|
|
13
|
+
EndProject
|
|
14
|
+
Global
|
|
15
|
+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
|
16
|
+
Debug|Any CPU = Debug|Any CPU
|
|
17
|
+
Debug|x64 = Debug|x64
|
|
18
|
+
Debug|x86 = Debug|x86
|
|
19
|
+
Release|Any CPU = Release|Any CPU
|
|
20
|
+
Release|x64 = Release|x64
|
|
21
|
+
Release|x86 = Release|x86
|
|
22
|
+
EndGlobalSection
|
|
23
|
+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
|
24
|
+
{0577D911-1F1E-422E-A1CD-23379F308B05}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
25
|
+
{0577D911-1F1E-422E-A1CD-23379F308B05}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
26
|
+
{0577D911-1F1E-422E-A1CD-23379F308B05}.Debug|x64.ActiveCfg = Debug|Any CPU
|
|
27
|
+
{0577D911-1F1E-422E-A1CD-23379F308B05}.Debug|x64.Build.0 = Debug|Any CPU
|
|
28
|
+
{0577D911-1F1E-422E-A1CD-23379F308B05}.Debug|x86.ActiveCfg = Debug|Any CPU
|
|
29
|
+
{0577D911-1F1E-422E-A1CD-23379F308B05}.Debug|x86.Build.0 = Debug|Any CPU
|
|
30
|
+
{0577D911-1F1E-422E-A1CD-23379F308B05}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
31
|
+
{0577D911-1F1E-422E-A1CD-23379F308B05}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
32
|
+
{0577D911-1F1E-422E-A1CD-23379F308B05}.Release|x64.ActiveCfg = Release|Any CPU
|
|
33
|
+
{0577D911-1F1E-422E-A1CD-23379F308B05}.Release|x64.Build.0 = Release|Any CPU
|
|
34
|
+
{0577D911-1F1E-422E-A1CD-23379F308B05}.Release|x86.ActiveCfg = Release|Any CPU
|
|
35
|
+
{0577D911-1F1E-422E-A1CD-23379F308B05}.Release|x86.Build.0 = Release|Any CPU
|
|
36
|
+
{A0543CA3-CC90-45F6-940E-3F58570BB4D3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
37
|
+
{A0543CA3-CC90-45F6-940E-3F58570BB4D3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
38
|
+
{A0543CA3-CC90-45F6-940E-3F58570BB4D3}.Debug|x64.ActiveCfg = Debug|Any CPU
|
|
39
|
+
{A0543CA3-CC90-45F6-940E-3F58570BB4D3}.Debug|x64.Build.0 = Debug|Any CPU
|
|
40
|
+
{A0543CA3-CC90-45F6-940E-3F58570BB4D3}.Debug|x86.ActiveCfg = Debug|Any CPU
|
|
41
|
+
{A0543CA3-CC90-45F6-940E-3F58570BB4D3}.Debug|x86.Build.0 = Debug|Any CPU
|
|
42
|
+
{A0543CA3-CC90-45F6-940E-3F58570BB4D3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
43
|
+
{A0543CA3-CC90-45F6-940E-3F58570BB4D3}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
44
|
+
{A0543CA3-CC90-45F6-940E-3F58570BB4D3}.Release|x64.ActiveCfg = Release|Any CPU
|
|
45
|
+
{A0543CA3-CC90-45F6-940E-3F58570BB4D3}.Release|x64.Build.0 = Release|Any CPU
|
|
46
|
+
{A0543CA3-CC90-45F6-940E-3F58570BB4D3}.Release|x86.ActiveCfg = Release|Any CPU
|
|
47
|
+
{A0543CA3-CC90-45F6-940E-3F58570BB4D3}.Release|x86.Build.0 = Release|Any CPU
|
|
48
|
+
EndGlobalSection
|
|
49
|
+
GlobalSection(SolutionProperties) = preSolution
|
|
50
|
+
HideSolutionNode = FALSE
|
|
51
|
+
EndGlobalSection
|
|
52
|
+
GlobalSection(NestedProjects) = preSolution
|
|
53
|
+
{0577D911-1F1E-422E-A1CD-23379F308B05} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
|
|
54
|
+
{A0543CA3-CC90-45F6-940E-3F58570BB4D3} = {0AB3BF05-4346-4AA6-1389-037BE0695223}
|
|
55
|
+
EndGlobalSection
|
|
56
|
+
EndGlobal
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<!--
|
|
3
|
+
<clear /> e o ponto deste arquivo: sem ele o restore herda os feeds da maquina
|
|
4
|
+
(ou do runner) e "compila aqui, quebra no CI" volta a ser possivel. O kit
|
|
5
|
+
restaura de nuget.org e de mais nada.
|
|
6
|
+
-->
|
|
7
|
+
<configuration>
|
|
8
|
+
<packageSources>
|
|
9
|
+
<clear />
|
|
10
|
+
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
|
|
11
|
+
</packageSources>
|
|
12
|
+
</configuration>
|