@polymorphism-tech/morph-spec 4.3.3 → 4.3.5
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/.morph/.morphversion +5 -0
- package/.morph/analytics/threads-log.jsonl +9 -0
- package/{stacks/blazor-azure/.morph → .morph}/config/agents.json +948 -948
- package/.morph/config/config.json +9 -0
- package/{stacks/blazor-azure/.morph → .morph}/project/context/README.md +1 -1
- package/.morph/project/context/detection-log.md +16 -0
- package/.morph/project/standards/inferred.md +59 -0
- package/.morph/state.json +48 -0
- package/.morph/templates/.idea/morph-templates.xml +92 -0
- package/.morph/templates/.vscode/morph-templates.code-snippets +186 -0
- package/.morph/templates/IDE-SNIPPETS.md +266 -0
- package/.morph/templates/README.md +814 -0
- package/.morph/templates/REGISTRY.json +1677 -0
- package/.morph/templates/code/dotnet/backend/repository.cs +141 -0
- package/.morph/templates/code/dotnet/backend/service.cs +139 -0
- package/.morph/templates/code/dotnet/contracts/Commands.cs +74 -0
- package/.morph/templates/code/dotnet/contracts/Entities.cs +25 -0
- package/.morph/templates/code/dotnet/contracts/Queries.cs +74 -0
- package/.morph/templates/code/dotnet/contracts/README.md +74 -0
- package/.morph/templates/code/dotnet/contracts/api-contracts.cs +173 -0
- package/.morph/templates/code/dotnet/contracts/contracts.cs +217 -0
- package/.morph/templates/code/dotnet/database/migration.cs +83 -0
- package/.morph/templates/code/dotnet/frontend/component.razor +239 -0
- package/.morph/templates/code/dotnet/jobs/agent.cs +163 -0
- package/.morph/templates/code/dotnet/jobs/job.cs +171 -0
- package/.morph/templates/code/dotnet/test.cs +239 -0
- package/.morph/templates/code/sql/rls-policy.sql +57 -0
- package/.morph/templates/code/sql/supabase-migration.sql +100 -0
- package/.morph/templates/code/sql/supabase-migration.template.sql +113 -0
- package/.morph/templates/code/typescript/contracts.ts +168 -0
- package/.morph/templates/context/CONTEXT-FEATURE.md +276 -0
- package/.morph/templates/context/CONTEXT.md +181 -0
- package/.morph/templates/docs/proposal.md +182 -0
- package/.morph/templates/docs/spec.md +149 -0
- package/.morph/templates/examples/design-system-examples.md +357 -0
- package/.morph/templates/examples/spec-examples.md +90 -0
- package/.morph/templates/feature/decisions.md +187 -0
- package/.morph/templates/feature/recap.md +146 -0
- package/.morph/templates/feature/tasks.md +199 -0
- package/.morph/templates/infrastructure/azure/Dockerfile.example +82 -0
- package/.morph/templates/infrastructure/azure/README.md +286 -0
- package/.morph/templates/infrastructure/azure/app-insights.bicep +63 -0
- package/.morph/templates/infrastructure/azure/app-service.bicep +164 -0
- package/.morph/templates/infrastructure/azure/container-app-env.bicep +49 -0
- package/.morph/templates/infrastructure/azure/container-app.bicep +156 -0
- package/.morph/templates/infrastructure/azure/deploy-checklist.md +426 -0
- package/.morph/templates/infrastructure/azure/deploy.ps1 +229 -0
- package/.morph/templates/infrastructure/azure/deploy.sh +208 -0
- package/.morph/templates/infrastructure/azure/key-vault.bicep +91 -0
- package/.morph/templates/infrastructure/azure/main.bicep +189 -0
- package/.morph/templates/infrastructure/azure/parameters.dev.json +29 -0
- package/.morph/templates/infrastructure/azure/parameters.prod.json +29 -0
- package/.morph/templates/infrastructure/azure/parameters.staging.json +29 -0
- package/.morph/templates/infrastructure/azure/sql-database.bicep +103 -0
- package/.morph/templates/infrastructure/azure/storage.bicep +106 -0
- package/.morph/templates/infrastructure/docker/Dockerfile.template +58 -0
- package/.morph/templates/infrastructure/docker/docker-compose.template.yml +67 -0
- package/.morph/templates/infrastructure/docker/dockerfile-api.dockerfile +38 -0
- package/.morph/templates/infrastructure/docker/dockerfile-web.dockerfile +48 -0
- package/.morph/templates/infrastructure/docker/easypanel.template.json +54 -0
- package/.morph/templates/infrastructure/github/README.md +593 -0
- package/.morph/templates/infrastructure/github/actions/azure-auth/action.yml.hbs +22 -0
- package/.morph/templates/infrastructure/github/actions/docker-build-push/action.yml.hbs +45 -0
- package/.morph/templates/infrastructure/github/actions/health-check/action.yml.hbs +27 -0
- package/.morph/templates/infrastructure/github/workflows/deploy-azure-app-service.yml.hbs +61 -0
- package/.morph/templates/infrastructure/github/workflows/deploy-easypanel.yml.hbs +31 -0
- package/.morph/templates/infrastructure/github/workflows/docker-build-push.yml.hbs +59 -0
- package/.morph/templates/infrastructure/github/workflows/dotnet-build.yml.hbs +39 -0
- package/.morph/templates/integrations/asaas-client.cs +387 -0
- package/.morph/templates/integrations/asaas-webhook.cs +351 -0
- package/.morph/templates/integrations/azure-identity-config.cs +288 -0
- package/.morph/templates/integrations/clerk-config.cs +258 -0
- package/.morph/templates/meta-prompts/fusion/fusion-agent.md +76 -0
- package/.morph/templates/meta-prompts/fusion/fusion-aggregator.md +100 -0
- package/.morph/templates/meta-prompts/hops/hop-retry.md +78 -0
- package/.morph/templates/meta-prompts/hops/hop-validation.md +97 -0
- package/.morph/templates/meta-prompts/hops/hop-wrapper.md +36 -0
- package/.morph/templates/meta-prompts/parallel-workers/parallel-coordinator.md +113 -0
- package/.morph/templates/meta-prompts/parallel-workers/parallel-worker.md +80 -0
- package/.morph/templates/meta-prompts/squad-leaders/backend-squad.md +90 -0
- package/.morph/templates/meta-prompts/squad-leaders/frontend-squad.md +126 -0
- package/.morph/templates/meta-prompts/squad-leaders/squad-leader.md +43 -0
- package/.morph/templates/meta-prompts/validators/checkpoint-validator.md +107 -0
- package/.morph/templates/meta-prompts/validators/pre-commit-validator.md +95 -0
- package/.morph/templates/saas/subscription.cs +347 -0
- package/.morph/templates/saas/tenant.cs +338 -0
- package/.morph/templates/state.template.json +17 -0
- package/.morph/templates/ui/FluentDesignTheme.cs +149 -0
- package/.morph/templates/ui/MudTheme.cs +281 -0
- package/.morph/templates/ui/design-system.css +226 -0
- package/bin/detect-agents.js +1 -2
- package/bin/morph-spec.js +1 -14
- package/framework/agents.json +948 -0
- package/{stacks/nextjs-supabase/.claude → framework}/commands/morph-infra.md +1 -1
- package/framework/hooks/README.md +282 -0
- package/framework/hooks/agent-stop/validate-and-continue.js +96 -0
- package/framework/hooks/agent-stop/validate-checkpoints.js +101 -0
- package/framework/hooks/agent-stop/validate-tests.js +109 -0
- package/framework/hooks/agent-teams/dispatch.js +67 -0
- package/framework/hooks/agent-teams/phase-advanced.js +80 -0
- package/framework/hooks/agent-teams/task-completed.js +76 -0
- package/framework/hooks/agent-teams/teammate-idle.js +70 -0
- package/framework/hooks/commit-msg/conventional-commits.sh +33 -0
- package/framework/hooks/pre-commit/agents.sh +25 -0
- package/framework/hooks/pre-commit/orchestrator.sh +64 -0
- package/framework/hooks/pre-commit/specs.sh +50 -0
- package/framework/hooks/pre-push/run-tests.sh +44 -0
- package/framework/index/troubleshooting-index.json +184 -0
- package/framework/memory/patterns-learned.md +766 -0
- package/framework/skills/level-0-meta/README.md +7 -0
- package/framework/skills/level-0-meta/code-review.md +226 -0
- package/framework/skills/level-0-meta/morph-checklist.md +117 -0
- package/framework/skills/level-0-meta/simulation-checklist.md +77 -0
- package/framework/skills/level-1-workflows/README.md +7 -0
- package/framework/skills/level-1-workflows/morph-replicate.md +213 -0
- package/framework/skills/level-1-workflows/phase-clarify.md +131 -0
- package/framework/skills/level-1-workflows/phase-design.md +213 -0
- package/framework/skills/level-1-workflows/phase-setup.md +106 -0
- package/framework/skills/level-1-workflows/phase-tasks.md +164 -0
- package/framework/skills/level-1-workflows/phase-uiux.md +169 -0
- package/framework/skills/level-2-domains/README.md +14 -0
- package/framework/skills/level-2-domains/ai-agents/ai-system-architect.md +192 -0
- package/framework/skills/level-2-domains/architecture/po-pm-advisor.md +197 -0
- package/framework/skills/level-2-domains/architecture/prompt-engineer.md +189 -0
- package/framework/skills/level-2-domains/architecture/seo-growth-hacker.md +320 -0
- package/framework/skills/level-2-domains/architecture/standards-architect.md +156 -0
- package/framework/skills/level-2-domains/backend/api-designer.md +59 -0
- package/framework/skills/level-2-domains/backend/dotnet-senior.md +77 -0
- package/framework/skills/level-2-domains/backend/ef-modeler.md +58 -0
- package/framework/skills/level-2-domains/backend/hangfire-orchestrator.md +126 -0
- package/framework/skills/level-2-domains/backend/ms-agent-expert.md +45 -0
- package/framework/skills/level-2-domains/frontend/blazor-builder.md +210 -0
- package/framework/skills/level-2-domains/frontend/nextjs-expert.md +154 -0
- package/framework/skills/level-2-domains/frontend/ui-ux-designer.md +191 -0
- package/framework/skills/level-2-domains/infrastructure/azure-architect.md +142 -0
- package/framework/skills/level-2-domains/infrastructure/azure-deploy-specialist.md +699 -0
- package/framework/skills/level-2-domains/infrastructure/bicep-architect.md +126 -0
- package/framework/skills/level-2-domains/infrastructure/container-specialist.md +131 -0
- package/framework/skills/level-2-domains/infrastructure/devops-engineer.md +119 -0
- package/framework/skills/level-2-domains/integrations/asaas-financial.md +130 -0
- package/framework/skills/level-2-domains/integrations/azure-identity.md +142 -0
- package/framework/skills/level-2-domains/integrations/clerk-auth.md +108 -0
- package/framework/skills/level-2-domains/integrations/hangfire-orchestrator.md +64 -0
- package/framework/skills/level-2-domains/integrations/resend-email.md +119 -0
- package/framework/skills/level-2-domains/quality/code-analyzer.md +235 -0
- package/framework/skills/level-2-domains/quality/testing-specialist.md +126 -0
- package/framework/skills/level-3-technologies/README.md +7 -0
- package/framework/skills/level-4-patterns/README.md +7 -0
- package/framework/squad-templates/backend-only.json +34 -0
- package/framework/squad-templates/frontend-only.json +34 -0
- package/framework/squad-templates/full-stack.json +52 -0
- 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 +266 -0
- package/framework/templates/README.md +814 -0
- package/framework/templates/REGISTRY.json +1677 -0
- package/framework/templates/code/dotnet/backend/repository.cs +141 -0
- package/framework/templates/code/dotnet/backend/service.cs +139 -0
- package/framework/templates/code/dotnet/contracts/Commands.cs +74 -0
- package/framework/templates/code/dotnet/contracts/Entities.cs +25 -0
- package/framework/templates/code/dotnet/contracts/Queries.cs +74 -0
- package/framework/templates/code/dotnet/contracts/README.md +74 -0
- package/framework/templates/code/dotnet/contracts/api-contracts.cs +173 -0
- package/framework/templates/code/dotnet/contracts/contracts.cs +217 -0
- package/framework/templates/code/dotnet/database/migration.cs +83 -0
- package/framework/templates/code/dotnet/frontend/component.razor +239 -0
- package/framework/templates/code/dotnet/jobs/agent.cs +163 -0
- package/framework/templates/code/dotnet/jobs/job.cs +171 -0
- package/framework/templates/code/dotnet/test.cs +239 -0
- package/framework/templates/code/sql/rls-policy.sql +57 -0
- package/framework/templates/code/sql/supabase-migration.sql +100 -0
- package/framework/templates/code/sql/supabase-migration.template.sql +113 -0
- package/framework/templates/code/typescript/contracts.ts +168 -0
- package/framework/templates/context/CONTEXT-FEATURE.md +276 -0
- package/framework/templates/context/CONTEXT.md +181 -0
- package/framework/templates/docs/proposal.md +182 -0
- package/framework/templates/docs/spec.md +149 -0
- package/framework/templates/examples/design-system-examples.md +357 -0
- package/framework/templates/examples/spec-examples.md +90 -0
- package/framework/templates/feature/decisions.md +187 -0
- package/framework/templates/feature/recap.md +146 -0
- package/framework/templates/feature/tasks.md +199 -0
- package/framework/templates/infrastructure/azure/Dockerfile.example +82 -0
- package/framework/templates/infrastructure/azure/README.md +286 -0
- package/framework/templates/infrastructure/azure/app-insights.bicep +63 -0
- package/framework/templates/infrastructure/azure/app-service.bicep +164 -0
- package/framework/templates/infrastructure/azure/container-app-env.bicep +49 -0
- package/framework/templates/infrastructure/azure/container-app.bicep +156 -0
- package/framework/templates/infrastructure/azure/deploy-checklist.md +426 -0
- package/framework/templates/infrastructure/azure/deploy.ps1 +229 -0
- package/framework/templates/infrastructure/azure/deploy.sh +208 -0
- package/framework/templates/infrastructure/azure/key-vault.bicep +91 -0
- package/framework/templates/infrastructure/azure/main.bicep +189 -0
- package/framework/templates/infrastructure/azure/parameters.dev.json +29 -0
- package/framework/templates/infrastructure/azure/parameters.prod.json +29 -0
- package/framework/templates/infrastructure/azure/parameters.staging.json +29 -0
- package/framework/templates/infrastructure/azure/sql-database.bicep +103 -0
- package/framework/templates/infrastructure/azure/storage.bicep +106 -0
- package/framework/templates/infrastructure/docker/Dockerfile.template +58 -0
- package/framework/templates/infrastructure/docker/docker-compose.template.yml +67 -0
- package/framework/templates/infrastructure/docker/dockerfile-api.dockerfile +38 -0
- package/framework/templates/infrastructure/docker/dockerfile-web.dockerfile +48 -0
- package/framework/templates/infrastructure/docker/easypanel.template.json +54 -0
- package/framework/templates/infrastructure/github/README.md +593 -0
- package/framework/templates/infrastructure/github/actions/azure-auth/action.yml.hbs +22 -0
- package/framework/templates/infrastructure/github/actions/docker-build-push/action.yml.hbs +45 -0
- package/framework/templates/infrastructure/github/actions/health-check/action.yml.hbs +27 -0
- package/framework/templates/infrastructure/github/workflows/deploy-azure-app-service.yml.hbs +61 -0
- package/framework/templates/infrastructure/github/workflows/deploy-easypanel.yml.hbs +31 -0
- package/framework/templates/infrastructure/github/workflows/docker-build-push.yml.hbs +59 -0
- package/framework/templates/infrastructure/github/workflows/dotnet-build.yml.hbs +39 -0
- package/framework/templates/integrations/asaas-client.cs +387 -0
- package/framework/templates/integrations/asaas-webhook.cs +351 -0
- package/framework/templates/integrations/azure-identity-config.cs +288 -0
- package/framework/templates/integrations/clerk-config.cs +258 -0
- package/framework/templates/meta-prompts/fusion/fusion-agent.md +76 -0
- package/framework/templates/meta-prompts/fusion/fusion-aggregator.md +100 -0
- package/framework/templates/meta-prompts/hops/hop-retry.md +78 -0
- package/framework/templates/meta-prompts/hops/hop-validation.md +97 -0
- package/framework/templates/meta-prompts/hops/hop-wrapper.md +36 -0
- package/framework/templates/meta-prompts/parallel-workers/parallel-coordinator.md +113 -0
- package/framework/templates/meta-prompts/parallel-workers/parallel-worker.md +80 -0
- package/framework/templates/meta-prompts/squad-leaders/backend-squad.md +90 -0
- package/framework/templates/meta-prompts/squad-leaders/frontend-squad.md +126 -0
- package/framework/templates/meta-prompts/squad-leaders/squad-leader.md +43 -0
- package/framework/templates/meta-prompts/validators/checkpoint-validator.md +107 -0
- package/framework/templates/meta-prompts/validators/pre-commit-validator.md +95 -0
- package/framework/templates/saas/subscription.cs +347 -0
- package/framework/templates/saas/tenant.cs +338 -0
- package/framework/templates/state.template.json +17 -0
- package/framework/templates/ui/FluentDesignTheme.cs +149 -0
- package/framework/templates/ui/MudTheme.cs +281 -0
- package/framework/templates/ui/design-system.css +226 -0
- package/framework/workflows/README.md +1041 -0
- package/framework/workflows/configs/design-impl.json +49 -0
- package/framework/workflows/configs/fast-track.json +42 -0
- package/framework/workflows/configs/full-morph.json +79 -0
- package/framework/workflows/configs/fusion.json +39 -0
- package/framework/workflows/configs/long-running.json +33 -0
- package/framework/workflows/configs/standard.json +60 -0
- package/framework/workflows/configs/ui-refresh.json +49 -0
- package/framework/workflows/configs/zero-touch.json +75 -0
- package/framework/workflows/docs/STORY-DRIVEN-DEVELOPMENT.md +392 -0
- package/framework/workflows/docs/design-impl.md +37 -0
- package/framework/workflows/docs/enforcement-pipeline.md +668 -0
- package/framework/workflows/docs/fast-track.md +29 -0
- package/framework/workflows/docs/full-morph.md +76 -0
- package/framework/workflows/docs/standard.md +44 -0
- package/framework/workflows/docs/ui-refresh.md +39 -0
- package/package.json +3 -3
- package/src/commands/feature/create-story.js +11 -7
- package/src/commands/project/detect-agents.js +1 -2
- package/src/commands/project/init.js +69 -32
- package/src/commands/project/update.js +102 -15
- package/src/commands/templates/template-customize.js +3 -17
- package/src/commands/templates/template-list.js +1 -15
- package/src/commands/templates/template-render.js +2 -3
- package/src/commands/templates/template-show.js +3 -5
- package/src/core/templates/template-registry.js +9 -23
- package/src/lib/detectors/structure-detector.js +3 -3
- package/src/lib/generators/context-generator.js +18 -6
- package/src/lib/hooks/hook-executor.js +0 -2
- package/src/lib/orchestration/team-orchestrator.js +1 -2
- package/src/lib/standards/standards-context-injector.js +3 -4
- package/src/lib/troubleshooting/troubleshoot-grep.js +3 -9
- package/src/lib/validators/validation-runner.js +1 -2
- package/src/utils/file-copier.js +1 -2
- package/docs/README.md +0 -144
- package/docs/api/fonts/Montserrat/Montserrat-Bold.eot +0 -0
- package/docs/api/fonts/Montserrat/Montserrat-Bold.ttf +0 -0
- package/docs/api/fonts/Montserrat/Montserrat-Bold.woff +0 -0
- package/docs/api/fonts/Montserrat/Montserrat-Bold.woff2 +0 -0
- package/docs/api/fonts/Montserrat/Montserrat-Regular.eot +0 -0
- package/docs/api/fonts/Montserrat/Montserrat-Regular.ttf +0 -0
- package/docs/api/fonts/Montserrat/Montserrat-Regular.woff +0 -0
- package/docs/api/fonts/Montserrat/Montserrat-Regular.woff2 +0 -0
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot +0 -0
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +0 -978
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.ttf +0 -0
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff +0 -0
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff2 +0 -0
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot +0 -0
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +0 -1049
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.ttf +0 -0
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff +0 -0
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff2 +0 -0
- package/docs/api/scripts/collapse.js +0 -39
- package/docs/api/scripts/commonNav.js +0 -28
- package/docs/api/scripts/linenumber.js +0 -25
- package/docs/api/scripts/nav.js +0 -12
- package/docs/api/scripts/polyfill.js +0 -4
- package/docs/api/scripts/prettify/Apache-License-2.0.txt +0 -202
- package/docs/api/scripts/prettify/lang-css.js +0 -2
- package/docs/api/scripts/prettify/prettify.js +0 -28
- package/docs/api/scripts/search.js +0 -99
- package/docs/api/styles/jsdoc.css +0 -776
- package/docs/api/styles/prettify.css +0 -80
- package/docs/cli-auto-detection.md +0 -219
- package/docs/getting-started.md +0 -296
- package/docs/installation.md +0 -361
- package/docs/next-generation/AGENTS.md +0 -521
- package/docs/next-generation/ANALYSIS.md +0 -555
- package/docs/next-generation/ARCHITECTURE.md +0 -436
- package/docs/next-generation/CONTEXT-OPTIMIZATION.md +0 -267
- package/docs/next-generation/EXECUTION-FLOW.md +0 -274
- package/docs/next-generation/FEATURES.md +0 -688
- package/docs/next-generation/META-PROMPTS.md +0 -235
- package/docs/next-generation/MIGRATION-GUIDE.md +0 -253
- package/docs/next-generation/README.md +0 -231
- package/docs/next-generation/ROADMAP.md +0 -801
- package/docs/next-generation/THREAD-MANAGEMENT.md +0 -240
- package/docs/templates.md +0 -418
- package/docs/troubleshooting.md +0 -269
- package/docs/validation-checklist.md +0 -264
- package/scripts/postinstall.js +0 -132
- package/src/lib/stacks/index.js +0 -7
- package/src/lib/stacks/stack-resolver.js +0 -180
- 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/.morph/.morphversion +0 -5
- package/stacks/blazor-azure/.morph/config/config.json +0 -9
- package/stacks/blazor-azure/CLAUDE.md +0 -155
- package/stacks/blazor-azure/README.md +0 -79
- package/stacks/nextjs-supabase/.claude/commands/morph-apply.md +0 -221
- package/stacks/nextjs-supabase/.claude/commands/morph-archive.md +0 -79
- package/stacks/nextjs-supabase/.claude/commands/morph-deploy.md +0 -529
- package/stacks/nextjs-supabase/.claude/commands/morph-preflight.md +0 -227
- package/stacks/nextjs-supabase/.claude/commands/morph-proposal.md +0 -122
- package/stacks/nextjs-supabase/.claude/commands/morph-status.md +0 -86
- package/stacks/nextjs-supabase/.claude/commands/morph-troubleshoot.md +0 -122
- package/stacks/nextjs-supabase/.morph/.morphversion +0 -5
- package/stacks/nextjs-supabase/.morph/config/agents.json +0 -345
- package/stacks/nextjs-supabase/.morph/config/config.json +0 -9
- package/stacks/nextjs-supabase/.morph/project/context/README.md +0 -17
- package/stacks/nextjs-supabase/CLAUDE.md +0 -155
- package/stacks/nextjs-supabase/README.md +0 -103
- /package/{stacks/blazor-azure/.morph → .morph}/standards/ai-agents/blazor-ui.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/ai-agents/production.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/ai-agents/setup.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/ai-agents/team-orchestration.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/ai-agents/workflows.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/architecture/ddd/aggregates.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/architecture/ddd/entities.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/architecture/ddd/value-objects.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/backend/api/minimal-api.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/backend/api/rest.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/backend/api/validation.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/backend/authentication/passkeys.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/backend/database/ef-core.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/backend/database/migrations.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/backend/database/postgresql/database.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/backend/database/repository-patterns.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/backend/database/vector-search-rag.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/backend/dotnet/async.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/backend/dotnet/core.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/backend/dotnet/di.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/backend/dotnet/program-cs-checklist.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/backend/integrations/asaas/asaas-api.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/backend/integrations/clerk/clerk-auth.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/backend/integrations/hangfire/hangfire-jobs.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/backend/integrations/resend/resend-email.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/context/analytics.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/context/bundles.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/context/priming.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/core/architecture.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/core/coding.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/core/git-branching-strategy.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/core/git.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/core/testing.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/data/nosql/blob-storage.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/data/nosql/cache/redis.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/data/nosql/cosmos-db.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/data/vector-search/azure-ai-search.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/data/vector-search/rag-chunking.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/frontend/blazor/design-checklist.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/frontend/blazor/fluent-ui-setup.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/frontend/blazor/fluent-ui.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/frontend/blazor/html-conversion.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/frontend/blazor/lifecycle.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/frontend/blazor/pitfalls.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/frontend/blazor/state.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/frontend/design-system/animations.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/frontend/design-system/naming.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/frontend/nextjs/nextjs-patterns.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/infrastructure/azure/azure.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/infrastructure/azure/bicep/bicep-patterns.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/infrastructure/azure/devops/azure-devops-setup.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/infrastructure/azure/devops/local-development.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/infrastructure/azure/services/functions.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/infrastructure/azure/services/service-bus.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/infrastructure/azure/services/storage.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/infrastructure/docker/easypanel-deploy.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/infrastructure/supabase/mcp-setup.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/infrastructure/supabase/supabase-auth.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/infrastructure/supabase/supabase-pgvector.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/infrastructure/supabase/supabase-rls.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/infrastructure/supabase/supabase-storage.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/integration/api/graphql.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/integration/api/grpc.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/integration/api/rest-design.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/integration/event-driven/cqrs.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/integration/event-driven/event-sourcing.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/integration/event-driven/service-bus.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/observability/logging.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/observability/metrics.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/observability/monitoring.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/observability/tracing.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/workflows/parallel-execution.md +0 -0
- /package/{stacks/blazor-azure/.morph → .morph}/standards/workflows/thread-management.md +0 -0
- /package/{stacks/blazor-azure/.claude → framework}/commands/morph-apply.md +0 -0
- /package/{stacks/blazor-azure/.claude → framework}/commands/morph-archive.md +0 -0
- /package/{stacks/blazor-azure/.claude → framework}/commands/morph-preflight.md +0 -0
- /package/{stacks/blazor-azure/.claude → framework}/commands/morph-proposal.md +0 -0
- /package/{stacks/blazor-azure/.claude → framework}/commands/morph-status.md +0 -0
- /package/{stacks/blazor-azure/.claude → framework}/commands/morph-troubleshoot.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/ai-agents/blazor-ui.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/ai-agents/production.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/ai-agents/setup.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/ai-agents/team-orchestration.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/ai-agents/workflows.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/architecture/ddd/aggregates.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/architecture/ddd/entities.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/architecture/ddd/value-objects.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/backend/api/minimal-api.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/backend/api/rest.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/backend/api/validation.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/backend/authentication/passkeys.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/backend/database/ef-core.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/backend/database/migrations.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/backend/database/postgresql/database.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/backend/database/repository-patterns.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/backend/database/vector-search-rag.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/backend/dotnet/async.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/backend/dotnet/core.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/backend/dotnet/di.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/backend/dotnet/program-cs-checklist.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/backend/integrations/asaas/asaas-api.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/backend/integrations/clerk/clerk-auth.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/backend/integrations/hangfire/hangfire-jobs.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/backend/integrations/resend/resend-email.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/context/analytics.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/context/bundles.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/context/priming.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/core/architecture.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/core/coding.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/core/git-branching-strategy.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/core/git.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/core/testing.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/data/nosql/blob-storage.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/data/nosql/cache/redis.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/data/nosql/cosmos-db.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/data/vector-search/azure-ai-search.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/data/vector-search/rag-chunking.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/frontend/blazor/design-checklist.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/frontend/blazor/fluent-ui-setup.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/frontend/blazor/fluent-ui.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/frontend/blazor/html-conversion.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/frontend/blazor/lifecycle.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/frontend/blazor/pitfalls.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/frontend/blazor/state.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/frontend/design-system/animations.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/frontend/design-system/naming.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/frontend/nextjs/nextjs-patterns.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/infrastructure/azure/azure.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/infrastructure/azure/bicep/bicep-patterns.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/infrastructure/azure/devops/azure-devops-setup.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/infrastructure/azure/devops/local-development.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/infrastructure/azure/services/functions.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/infrastructure/azure/services/service-bus.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/infrastructure/azure/services/storage.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/infrastructure/docker/easypanel-deploy.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/infrastructure/supabase/mcp-setup.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/infrastructure/supabase/supabase-auth.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/infrastructure/supabase/supabase-pgvector.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/infrastructure/supabase/supabase-rls.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/infrastructure/supabase/supabase-storage.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/integration/api/graphql.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/integration/api/grpc.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/integration/api/rest-design.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/integration/event-driven/cqrs.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/integration/event-driven/event-sourcing.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/integration/event-driven/service-bus.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/observability/logging.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/observability/metrics.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/observability/monitoring.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/observability/tracing.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/workflows/parallel-execution.md +0 -0
- /package/{stacks/nextjs-supabase/.morph → framework}/standards/workflows/thread-management.md +0 -0
|
@@ -76,15 +76,14 @@ export async function templateShowCommand(templateId, options) {
|
|
|
76
76
|
// Resolve actual path
|
|
77
77
|
if (options.showPath) {
|
|
78
78
|
const projectPath = options.projectPath || process.cwd();
|
|
79
|
-
const
|
|
80
|
-
const resolvedPath = resolveTemplatePathById(templateId, projectPath, stackId);
|
|
79
|
+
const resolvedPath = resolveTemplatePathById(templateId, projectPath);
|
|
81
80
|
|
|
82
81
|
logger.info(chalk.bold('📂 Resolved Path'));
|
|
83
82
|
if (resolvedPath) {
|
|
84
83
|
console.log(` ${chalk.green(resolvedPath)}`);
|
|
85
84
|
console.log(` ${chalk.dim(`(${existsSync(resolvedPath) ? 'exists' : 'not found'})`)}`);
|
|
86
85
|
} else {
|
|
87
|
-
console.log(` ${chalk.red('Not found in
|
|
86
|
+
console.log(` ${chalk.red('Not found in .morph/templates/ or framework/templates/')}`);
|
|
88
87
|
}
|
|
89
88
|
logger.blank();
|
|
90
89
|
}
|
|
@@ -92,8 +91,7 @@ export async function templateShowCommand(templateId, options) {
|
|
|
92
91
|
// Show template preview
|
|
93
92
|
if (options.preview) {
|
|
94
93
|
const projectPath = options.projectPath || process.cwd();
|
|
95
|
-
const
|
|
96
|
-
const resolvedPath = resolveTemplatePathById(templateId, projectPath, stackId);
|
|
94
|
+
const resolvedPath = resolveTemplatePathById(templateId, projectPath);
|
|
97
95
|
|
|
98
96
|
if (resolvedPath && existsSync(resolvedPath)) {
|
|
99
97
|
logger.info(chalk.bold('👁️ Preview (first 20 lines)'));
|
|
@@ -252,42 +252,28 @@ export function templateExists(templateId, projectPath = null) {
|
|
|
252
252
|
* Get template absolute path with fallback logic.
|
|
253
253
|
*
|
|
254
254
|
* Resolution order:
|
|
255
|
-
* 1.
|
|
255
|
+
* 1. Project-local override (.morph/templates/{path})
|
|
256
256
|
* 2. Framework universal template (framework/templates/{path})
|
|
257
257
|
*
|
|
258
258
|
* @param {string} templateId - Template identifier
|
|
259
259
|
* @param {string} projectPath - Project root path
|
|
260
|
-
* @param {string} [stackId] - Stack identifier (optional)
|
|
261
260
|
* @returns {string|null} Absolute template path or null if not found
|
|
262
261
|
*/
|
|
263
|
-
export function resolveTemplatePathById(templateId, projectPath
|
|
262
|
+
export function resolveTemplatePathById(templateId, projectPath) {
|
|
264
263
|
const template = getTemplateById(templateId, projectPath);
|
|
265
264
|
if (!template) {
|
|
266
265
|
return null;
|
|
267
266
|
}
|
|
268
267
|
|
|
269
|
-
//
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
return
|
|
268
|
+
// 1. Project-local override
|
|
269
|
+
const projectLocalPath = join(projectPath, '.morph/templates', template.path);
|
|
270
|
+
if (existsSync(projectLocalPath)) {
|
|
271
|
+
return projectLocalPath;
|
|
273
272
|
}
|
|
274
273
|
|
|
275
|
-
//
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
const stackPath = join(projectPath, 'stacks', stackId, '.morph/templates', template.path);
|
|
279
|
-
if (existsSync(stackPath)) {
|
|
280
|
-
return stackPath;
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
// Fallback to framework if exists
|
|
284
|
-
const frameworkPath = join(projectPath, 'framework/templates', template.path);
|
|
285
|
-
if (existsSync(frameworkPath)) {
|
|
286
|
-
return frameworkPath;
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
return null;
|
|
274
|
+
// 2. Framework universal template
|
|
275
|
+
const frameworkPath = join(projectPath, 'framework/templates', template.path);
|
|
276
|
+
return existsSync(frameworkPath) ? frameworkPath : null;
|
|
291
277
|
}
|
|
292
278
|
|
|
293
279
|
/**
|
|
@@ -97,7 +97,7 @@ async function detectStack(projectPath) {
|
|
|
97
97
|
]
|
|
98
98
|
};
|
|
99
99
|
|
|
100
|
-
const globIgnore = ['
|
|
100
|
+
const globIgnore = ['framework/**', 'test/**', 'node_modules/**', '.morph/**'];
|
|
101
101
|
|
|
102
102
|
for (const [stack, globs] of Object.entries(patterns)) {
|
|
103
103
|
for (const pattern of globs) {
|
|
@@ -115,7 +115,7 @@ async function detectStack(projectPath) {
|
|
|
115
115
|
* Detect architecture pattern
|
|
116
116
|
*/
|
|
117
117
|
async function detectArchitecture(projectPath) {
|
|
118
|
-
const globIgnore = ['
|
|
118
|
+
const globIgnore = ['framework/**', 'test/**', 'node_modules/**', '.morph/**'];
|
|
119
119
|
|
|
120
120
|
const checks = [
|
|
121
121
|
// .NET: Clean Architecture
|
|
@@ -209,7 +209,7 @@ async function detectUILibrary(projectPath) {
|
|
|
209
209
|
async function detectPatterns(projectPath) {
|
|
210
210
|
const patterns = [];
|
|
211
211
|
// Ignore template/vendor directories; keep test/ accessible for JS test detection
|
|
212
|
-
const globIgnore = ['
|
|
212
|
+
const globIgnore = ['framework/**', 'test/fixtures/**', 'node_modules/**', '.morph/**'];
|
|
213
213
|
|
|
214
214
|
// C# / .NET patterns
|
|
215
215
|
const dotnetChecks = [
|
|
@@ -13,6 +13,21 @@
|
|
|
13
13
|
|
|
14
14
|
import fs from 'fs/promises';
|
|
15
15
|
import path from 'path';
|
|
16
|
+
import { existsSync } from 'fs';
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Resolve a template path: check .morph/templates/ first, then framework/templates/.
|
|
20
|
+
* @param {string} projectPath
|
|
21
|
+
* @param {string} templatePath - relative path e.g. 'context/CONTEXT.md'
|
|
22
|
+
* @returns {string|null}
|
|
23
|
+
*/
|
|
24
|
+
function resolveTemplatePath(projectPath, templatePath) {
|
|
25
|
+
const projectLocal = path.join(projectPath, '.morph/templates', templatePath);
|
|
26
|
+
if (existsSync(projectLocal)) return projectLocal;
|
|
27
|
+
const framework = path.join(projectPath, 'framework/templates', templatePath);
|
|
28
|
+
if (existsSync(framework)) return framework;
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
16
31
|
|
|
17
32
|
/**
|
|
18
33
|
* Load project state from state.json
|
|
@@ -50,8 +65,7 @@ async function loadConfig(projectPath) {
|
|
|
50
65
|
* @returns {Promise<Object>} Parsed agents config
|
|
51
66
|
*/
|
|
52
67
|
async function loadAgents(projectPath) {
|
|
53
|
-
const
|
|
54
|
-
const agentsPath = resolveAgentsConfigPath(projectPath);
|
|
68
|
+
const agentsPath = path.join(projectPath, '.morph/config/agents.json');
|
|
55
69
|
try {
|
|
56
70
|
const content = await fs.readFile(agentsPath, 'utf8');
|
|
57
71
|
return JSON.parse(content);
|
|
@@ -179,8 +193,7 @@ export async function generateProjectContext(projectPath) {
|
|
|
179
193
|
loadProjectStandards(projectPath)
|
|
180
194
|
]);
|
|
181
195
|
|
|
182
|
-
// Load template with fallback (
|
|
183
|
-
const { resolveTemplatePath } = await import('../stacks/stack-resolver.js');
|
|
196
|
+
// Load template with fallback (.morph/templates/ → framework/templates/)
|
|
184
197
|
const templatePath = resolveTemplatePath(projectPath, 'context/CONTEXT.md');
|
|
185
198
|
|
|
186
199
|
if (!templatePath) {
|
|
@@ -351,8 +364,7 @@ export async function generateFeatureContext(projectPath, featureName) {
|
|
|
351
364
|
// No tasks.json yet
|
|
352
365
|
}
|
|
353
366
|
|
|
354
|
-
// Load template with fallback (
|
|
355
|
-
const { resolveTemplatePath } = await import('../stacks/stack-resolver.js');
|
|
367
|
+
// Load template with fallback (.morph/templates/ → framework/templates/)
|
|
356
368
|
const featureTemplatePath = resolveTemplatePath(projectPath, 'context/CONTEXT-FEATURE.md');
|
|
357
369
|
|
|
358
370
|
if (!featureTemplatePath) {
|
|
@@ -20,8 +20,6 @@ import { join } from 'path';
|
|
|
20
20
|
function loadAgents(projectPath) {
|
|
21
21
|
const agentPaths = [
|
|
22
22
|
join(projectPath, '.morph/config/agents.json'),
|
|
23
|
-
join(projectPath, 'stacks/blazor-azure/.morph/config/agents.json'),
|
|
24
|
-
join(projectPath, 'stacks/nextjs-supabase/.morph/config/agents.json'),
|
|
25
23
|
];
|
|
26
24
|
|
|
27
25
|
const allAgents = {};
|
|
@@ -13,7 +13,6 @@
|
|
|
13
13
|
import fs from 'fs/promises';
|
|
14
14
|
import path from 'path';
|
|
15
15
|
import { fileURLToPath } from 'url';
|
|
16
|
-
import { resolveAgentsConfigPath } from '../stacks/stack-resolver.js';
|
|
17
16
|
|
|
18
17
|
const __filename = fileURLToPath(import.meta.url);
|
|
19
18
|
const __dirname = path.dirname(__filename);
|
|
@@ -24,7 +23,7 @@ const __dirname = path.dirname(__filename);
|
|
|
24
23
|
* @returns {Promise<Object>} Parsed agents configuration
|
|
25
24
|
*/
|
|
26
25
|
async function loadAgentsConfig(projectPath) {
|
|
27
|
-
const agentsPath =
|
|
26
|
+
const agentsPath = path.join(projectPath, '.morph/config/agents.json');
|
|
28
27
|
const content = await fs.readFile(agentsPath, 'utf8');
|
|
29
28
|
return JSON.parse(content);
|
|
30
29
|
}
|
|
@@ -9,7 +9,6 @@
|
|
|
9
9
|
|
|
10
10
|
import { readFileSync, existsSync } from 'fs';
|
|
11
11
|
import { join } from 'path';
|
|
12
|
-
import { resolveStandardsDir } from '../stacks/stack-resolver.js';
|
|
13
12
|
|
|
14
13
|
/**
|
|
15
14
|
* Agent → Standards mapping
|
|
@@ -202,8 +201,8 @@ function loadStandard(standardName, projectPath) {
|
|
|
202
201
|
const locations = [
|
|
203
202
|
// 1. Project override
|
|
204
203
|
join(projectPath, '.morph/project/standards', `${standardName}.md`),
|
|
205
|
-
// 2.
|
|
206
|
-
join(
|
|
204
|
+
// 2. Project-level standards (.morph/standards/)
|
|
205
|
+
join(projectPath, '.morph/standards', `${standardName}.md`),
|
|
207
206
|
// 3. Framework standards (hierarchical structure: core/, backend/, frontend/, infrastructure/)
|
|
208
207
|
join(projectPath, 'framework/standards', `${standardName}.md`)
|
|
209
208
|
];
|
|
@@ -284,7 +283,7 @@ export function getStandardsListForAgent(agentId) {
|
|
|
284
283
|
export function checkStandardExists(standardName, projectPath = '.') {
|
|
285
284
|
const locations = [
|
|
286
285
|
{ type: 'project', path: join(projectPath, '.morph/project/standards', `${standardName}.md`) },
|
|
287
|
-
{ type: '
|
|
286
|
+
{ type: 'morph', path: join(projectPath, '.morph/standards', `${standardName}.md`) },
|
|
288
287
|
{ type: 'framework', path: join(projectPath, 'framework/standards', `${standardName}.md`) }
|
|
289
288
|
];
|
|
290
289
|
|
|
@@ -6,25 +6,19 @@
|
|
|
6
6
|
import { readFileSync, readdirSync, existsSync } from 'fs';
|
|
7
7
|
import { join, dirname, basename } from 'path';
|
|
8
8
|
import { fileURLToPath } from 'url';
|
|
9
|
-
import { resolveStandardsDir } from '../stacks/stack-resolver.js';
|
|
10
9
|
|
|
11
10
|
const __filename = fileURLToPath(import.meta.url);
|
|
12
11
|
const __dirname = dirname(__filename);
|
|
13
|
-
const frameworkRoot = join(__dirname, '..', '..');
|
|
14
12
|
|
|
15
|
-
// Directories to search
|
|
13
|
+
// Directories to search
|
|
16
14
|
const SEARCH_PATHS = [
|
|
17
15
|
'framework/standards',
|
|
16
|
+
'.morph/standards',
|
|
18
17
|
'.wiki'
|
|
19
18
|
];
|
|
20
19
|
|
|
21
20
|
function getSearchPaths(basePath) {
|
|
22
|
-
|
|
23
|
-
// Insert resolved stack standards path
|
|
24
|
-
const stackStandards = resolveStandardsDir(basePath || frameworkRoot);
|
|
25
|
-
const relativePath = stackStandards.replace(basePath || frameworkRoot, '').replace(/^[\\/]/, '');
|
|
26
|
-
paths.splice(1, 0, relativePath);
|
|
27
|
-
return paths;
|
|
21
|
+
return SEARCH_PATHS;
|
|
28
22
|
}
|
|
29
23
|
|
|
30
24
|
/**
|
|
@@ -11,7 +11,6 @@ import { existsSync, readFileSync } from 'fs';
|
|
|
11
11
|
import { join } from 'path';
|
|
12
12
|
import chalk from 'chalk';
|
|
13
13
|
import { loadState } from '../../core/state/state-manager.js';
|
|
14
|
-
import { resolveAgentsConfigPath } from '../stacks/stack-resolver.js';
|
|
15
14
|
|
|
16
15
|
/**
|
|
17
16
|
* Load agent → validators map from agents.json (data-driven)
|
|
@@ -20,7 +19,7 @@ import { resolveAgentsConfigPath } from '../stacks/stack-resolver.js';
|
|
|
20
19
|
*/
|
|
21
20
|
function loadAgentValidatorMap(projectPath) {
|
|
22
21
|
try {
|
|
23
|
-
const agentsPath =
|
|
22
|
+
const agentsPath = join(projectPath, '.morph/config/agents.json');
|
|
24
23
|
const agentsConfig = JSON.parse(readFileSync(agentsPath, 'utf8'));
|
|
25
24
|
|
|
26
25
|
const map = {};
|
package/src/utils/file-copier.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import fs from 'fs-extra';
|
|
2
2
|
import { join, dirname, resolve } from 'path';
|
|
3
3
|
import { fileURLToPath } from 'url';
|
|
4
|
-
import { resolveStackPath } from '../lib/stacks/stack-resolver.js';
|
|
5
4
|
|
|
6
5
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
7
6
|
const frameworkRoot = join(__dirname, '..', '..');
|
|
@@ -11,7 +10,7 @@ function isSamePath(a, b) {
|
|
|
11
10
|
}
|
|
12
11
|
|
|
13
12
|
export function getContentDir() {
|
|
14
|
-
return
|
|
13
|
+
return frameworkRoot;
|
|
15
14
|
}
|
|
16
15
|
|
|
17
16
|
export async function copyDirectory(src, dest, options = {}) {
|
package/docs/README.md
DELETED
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
# MORPH-SPEC API Documentation
|
|
2
|
-
|
|
3
|
-
This directory contains the API documentation for MORPH-SPEC Framework libraries.
|
|
4
|
-
|
|
5
|
-
## Available Documentation
|
|
6
|
-
|
|
7
|
-
### API Reference (`/api`)
|
|
8
|
-
|
|
9
|
-
Comprehensive API documentation generated from JSDoc comments in the source code.
|
|
10
|
-
|
|
11
|
-
**Libraries Documented:**
|
|
12
|
-
- **state-manager** - Feature state management, agents, checkpoints, outputs tracking
|
|
13
|
-
- **design-system-generator** - UI design system parsing and theme generation
|
|
14
|
-
|
|
15
|
-
**View Documentation:**
|
|
16
|
-
- Open `api/index.html` in your browser
|
|
17
|
-
- Or run `npm run docs:serve` to start a local server at http://localhost:8080
|
|
18
|
-
|
|
19
|
-
## Running Tests
|
|
20
|
-
|
|
21
|
-
### Run Tests
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
npm test
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
Runs all 85 unit tests with 100% pass rate.
|
|
28
|
-
|
|
29
|
-
### Run Tests with Coverage
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
npm run test:coverage
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
Generates coverage report (HTML + text + lcov). **Current coverage: 98.03%**
|
|
36
|
-
|
|
37
|
-
- **Statements:** 98.03%
|
|
38
|
-
- **Branches:** 88.74%
|
|
39
|
-
- **Functions:** 100%
|
|
40
|
-
- **Lines:** 98.03%
|
|
41
|
-
|
|
42
|
-
Coverage reports are generated in `coverage/` directory.
|
|
43
|
-
|
|
44
|
-
### Coverage Summary Only
|
|
45
|
-
|
|
46
|
-
```bash
|
|
47
|
-
npm run test:coverage:summary
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
Shows text summary without generating HTML report.
|
|
51
|
-
|
|
52
|
-
## Generating Documentation
|
|
53
|
-
|
|
54
|
-
### Build API Docs
|
|
55
|
-
|
|
56
|
-
```bash
|
|
57
|
-
npm run docs
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
Generates HTML documentation from JSDoc comments in `src/lib/` to `docs/api/`.
|
|
61
|
-
|
|
62
|
-
### Watch Mode
|
|
63
|
-
|
|
64
|
-
```bash
|
|
65
|
-
npm run docs:watch
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
Automatically regenerates documentation when source files change.
|
|
69
|
-
|
|
70
|
-
### Serve Locally
|
|
71
|
-
|
|
72
|
-
```bash
|
|
73
|
-
npm run docs:serve
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
Starts a local HTTP server at http://localhost:8080 to view documentation.
|
|
77
|
-
|
|
78
|
-
## Documentation Standards
|
|
79
|
-
|
|
80
|
-
### JSDoc Format
|
|
81
|
-
|
|
82
|
-
All library functions in `src/lib/` use JSDoc comments with:
|
|
83
|
-
|
|
84
|
-
- **@param** - Parameter descriptions with types
|
|
85
|
-
- **@returns** - Return value description with type
|
|
86
|
-
- **@throws** - Exceptions that may be thrown
|
|
87
|
-
- **@example** - Usage examples (when applicable)
|
|
88
|
-
|
|
89
|
-
**Example:**
|
|
90
|
-
|
|
91
|
-
```javascript
|
|
92
|
-
/**
|
|
93
|
-
* Get feature from state
|
|
94
|
-
* @param {string} featureName - Feature name
|
|
95
|
-
* @returns {Object|null} Feature object or null
|
|
96
|
-
*/
|
|
97
|
-
export function getFeature(featureName) {
|
|
98
|
-
// Implementation
|
|
99
|
-
}
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
### Module-Level Documentation
|
|
103
|
-
|
|
104
|
-
Each library file starts with a block comment describing:
|
|
105
|
-
|
|
106
|
-
- Purpose and responsibilities
|
|
107
|
-
- Usage context (CLI commands, internal automation)
|
|
108
|
-
- Key features
|
|
109
|
-
|
|
110
|
-
**Example:**
|
|
111
|
-
|
|
112
|
-
```javascript
|
|
113
|
-
/**
|
|
114
|
-
* MORPH-SPEC State Manager Library
|
|
115
|
-
*
|
|
116
|
-
* Manages state.json for tracking features, progress, agents, and checkpoints.
|
|
117
|
-
* Used both by CLI commands and internal automation.
|
|
118
|
-
*/
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
## Updating Documentation
|
|
122
|
-
|
|
123
|
-
1. **Update JSDoc comments** in source files (`src/lib/*.js`)
|
|
124
|
-
2. **Regenerate docs:** `npm run docs`
|
|
125
|
-
3. **Review:** Open `docs/api/index.html`
|
|
126
|
-
4. **Commit:** Include updated `docs/api/` in your commit
|
|
127
|
-
|
|
128
|
-
## Template
|
|
129
|
-
|
|
130
|
-
Documentation is generated using the [docdash](https://github.com/clenemt/docdash) template for JSDoc, configured in `jsdoc.json`.
|
|
131
|
-
|
|
132
|
-
**Features:**
|
|
133
|
-
- Clean, modern design
|
|
134
|
-
- Full-text search
|
|
135
|
-
- Responsive layout
|
|
136
|
-
- Syntax highlighting
|
|
137
|
-
- Type definitions
|
|
138
|
-
- Source code links
|
|
139
|
-
|
|
140
|
-
## Links
|
|
141
|
-
|
|
142
|
-
- **GitHub:** https://github.com/lucasPolymorphism/morph-spec-framework
|
|
143
|
-
- **npm:** https://www.npmjs.com/package/@polymorphism-tech/morph-spec
|
|
144
|
-
- **Website:** https://polymorphism.com.br/morph-spec
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|