@polymorphism-tech/morph-spec 4.2.0 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/morph-spec.js +283 -8
- package/bin/validate.js +4 -4
- package/docs/{v3.0 → next-generation}/AGENTS.md +1 -1
- package/docs/next-generation/CONTEXT-OPTIMIZATION.md +267 -0
- package/docs/next-generation/EXECUTION-FLOW.md +274 -0
- package/docs/next-generation/META-PROMPTS.md +235 -0
- package/docs/next-generation/MIGRATION-GUIDE.md +253 -0
- package/docs/next-generation/THREAD-MANAGEMENT.md +240 -0
- package/package.json +5 -5
- package/src/commands/agents/agents-fuse.js +96 -0
- package/src/commands/agents/micro-agent.js +112 -0
- package/src/commands/agents/spawn-team.js +69 -4
- package/src/commands/agents/squad-template.js +146 -0
- package/src/commands/analytics/analytics.js +176 -0
- package/src/commands/context/context-prime.js +63 -0
- package/src/commands/context/core-four.js +54 -0
- package/src/commands/mcp/mcp.js +102 -0
- package/src/commands/project/detect-agents.js +1 -1
- package/src/commands/project/doctor.js +573 -356
- package/src/commands/project/init.js +1 -1
- package/src/commands/project/update.js +1 -1
- package/src/commands/state/advance-phase.js +433 -416
- package/src/commands/templates/template-render.js +80 -1
- package/src/commands/threads/thread-template.js +103 -0
- package/src/commands/threads/threads.js +261 -0
- package/src/commands/trust/trust.js +205 -0
- package/src/{orchestrator.js → core/orchestrator.js} +8 -8
- package/src/core/state/state-manager.js +18 -2
- package/src/core/workflows/workflow-detector.js +100 -2
- package/src/lib/agents/micro-agent-factory.js +161 -0
- package/src/lib/analytics/analytics-engine.js +345 -0
- package/src/lib/checkpoints/checkpoint-hooks.js +293 -258
- package/src/lib/context/context-bundler.js +240 -0
- package/src/lib/context/context-optimizer.js +212 -0
- package/src/lib/context/context-tracker.js +273 -0
- package/src/lib/context/core-four-tracker.js +201 -0
- package/src/lib/context/mcp-optimizer.js +200 -0
- package/src/lib/execution/fusion-executor.js +304 -0
- package/src/lib/execution/parallel-executor.js +270 -0
- package/src/lib/generators/context-generator.js +3 -3
- package/src/lib/generators/recap-generator.js +2 -2
- package/src/lib/hooks/hook-executor.js +169 -0
- package/src/lib/hooks/stop-hook-executor.js +286 -0
- package/src/lib/hops/hop-composer.js +221 -0
- package/src/lib/threads/thread-coordinator.js +238 -0
- package/src/lib/threads/thread-manager.js +317 -0
- package/src/lib/tracking/artifact-trail.js +202 -0
- package/src/lib/trust/trust-manager.js +269 -0
- package/src/lib/validators/design-system/design-system-validator.js +2 -2
- package/src/lib/validators/validation-runner.js +6 -6
- package/stacks/blazor-azure/.morph/config/agents.json +72 -3
- package/stacks/nextjs-supabase/.morph/config/agents.json +3 -3
- package/CLAUDE.md +0 -993
- package/docs/llm-interaction-config.md +0 -735
- package/docs/v3.0/EXECUTION-FLOW.md +0 -1304
- package/src/commands/utils/migrate-state.js +0 -158
- package/src/commands/utils/upgrade.js +0 -346
- package/src/lib/validators/architecture-validator.js +0 -60
- package/src/lib/validators/content-validator.js +0 -164
- package/src/lib/validators/package-validator.js +0 -61
- package/src/lib/validators/ui-contrast-validator.js +0 -44
- package/stacks/blazor-azure/.claude/commands/morph-apply.md +0 -221
- package/stacks/blazor-azure/.claude/commands/morph-archive.md +0 -79
- package/stacks/blazor-azure/.claude/commands/morph-deploy.md +0 -529
- package/stacks/blazor-azure/.claude/commands/morph-infra.md +0 -209
- package/stacks/blazor-azure/.claude/commands/morph-preflight.md +0 -227
- package/stacks/blazor-azure/.claude/commands/morph-proposal.md +0 -122
- package/stacks/blazor-azure/.claude/commands/morph-status.md +0 -86
- package/stacks/blazor-azure/.claude/commands/morph-troubleshoot.md +0 -122
- package/stacks/blazor-azure/.claude/skills/level-0-meta/README.md +0 -7
- package/stacks/blazor-azure/.claude/skills/level-0-meta/code-review.md +0 -226
- package/stacks/blazor-azure/.claude/skills/level-0-meta/morph-checklist.md +0 -117
- package/stacks/blazor-azure/.claude/skills/level-0-meta/simulation-checklist.md +0 -77
- package/stacks/blazor-azure/.claude/skills/level-1-workflows/README.md +0 -7
- package/stacks/blazor-azure/.claude/skills/level-1-workflows/morph-replicate.md +0 -213
- package/stacks/blazor-azure/.claude/skills/level-1-workflows/phase-clarify.md +0 -131
- package/stacks/blazor-azure/.claude/skills/level-1-workflows/phase-design.md +0 -213
- package/stacks/blazor-azure/.claude/skills/level-1-workflows/phase-setup.md +0 -106
- package/stacks/blazor-azure/.claude/skills/level-1-workflows/phase-tasks.md +0 -164
- package/stacks/blazor-azure/.claude/skills/level-1-workflows/phase-uiux.md +0 -169
- package/stacks/blazor-azure/.claude/skills/level-2-domains/README.md +0 -14
- package/stacks/blazor-azure/.claude/skills/level-2-domains/ai-agents/ai-system-architect.md +0 -192
- package/stacks/blazor-azure/.claude/skills/level-2-domains/architecture/po-pm-advisor.md +0 -197
- package/stacks/blazor-azure/.claude/skills/level-2-domains/architecture/prompt-engineer.md +0 -189
- package/stacks/blazor-azure/.claude/skills/level-2-domains/architecture/seo-growth-hacker.md +0 -320
- package/stacks/blazor-azure/.claude/skills/level-2-domains/architecture/standards-architect.md +0 -156
- package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/api-designer.md +0 -59
- package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/dotnet-senior.md +0 -77
- package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/ef-modeler.md +0 -58
- package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/hangfire-orchestrator.md +0 -126
- package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/ms-agent-expert.md +0 -45
- package/stacks/blazor-azure/.claude/skills/level-2-domains/frontend/blazor-builder.md +0 -210
- package/stacks/blazor-azure/.claude/skills/level-2-domains/frontend/nextjs-expert.md +0 -154
- package/stacks/blazor-azure/.claude/skills/level-2-domains/frontend/ui-ux-designer.md +0 -191
- package/stacks/blazor-azure/.claude/skills/level-2-domains/infrastructure/azure-architect.md +0 -142
- package/stacks/blazor-azure/.claude/skills/level-2-domains/infrastructure/azure-deploy-specialist.md +0 -699
- package/stacks/blazor-azure/.claude/skills/level-2-domains/infrastructure/bicep-architect.md +0 -126
- package/stacks/blazor-azure/.claude/skills/level-2-domains/infrastructure/container-specialist.md +0 -131
- package/stacks/blazor-azure/.claude/skills/level-2-domains/infrastructure/devops-engineer.md +0 -119
- package/stacks/blazor-azure/.claude/skills/level-2-domains/integrations/asaas-financial.md +0 -130
- package/stacks/blazor-azure/.claude/skills/level-2-domains/integrations/azure-identity.md +0 -142
- package/stacks/blazor-azure/.claude/skills/level-2-domains/integrations/clerk-auth.md +0 -108
- package/stacks/blazor-azure/.claude/skills/level-2-domains/integrations/hangfire-orchestrator.md +0 -64
- package/stacks/blazor-azure/.claude/skills/level-2-domains/integrations/resend-email.md +0 -119
- package/stacks/blazor-azure/.claude/skills/level-2-domains/quality/code-analyzer.md +0 -235
- package/stacks/blazor-azure/.claude/skills/level-2-domains/quality/testing-specialist.md +0 -126
- package/stacks/blazor-azure/.claude/skills/level-3-technologies/README.md +0 -7
- package/stacks/blazor-azure/.claude/skills/level-4-patterns/README.md +0 -7
- package/stacks/blazor-azure/.morph/archive/.gitkeep +0 -25
- package/stacks/blazor-azure/.morph/features/.gitkeep +0 -25
- package/stacks/blazor-azure/.morph/schemas/agent.schema.json +0 -296
- package/stacks/blazor-azure/.morph/schemas/tasks.schema.json +0 -220
- package/stacks/blazor-azure/.morph/specs/.gitkeep +0 -20
- package/stacks/blazor-azure/.morph/test-infra/example.bicep +0 -59
- 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-infra.md +0 -209
- 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/.claude/settings.local.json +0 -6
- package/stacks/nextjs-supabase/.claude/skills/level-2-domains/backend/dotnet-supabase.md +0 -244
- package/stacks/nextjs-supabase/.claude/skills/level-2-domains/frontend/nextjs-supabase.md +0 -335
- package/stacks/nextjs-supabase/.claude/skills/level-2-domains/infrastructure/easypanel-deployer.md +0 -189
- package/stacks/nextjs-supabase/.claude/skills/level-2-domains/integrations/supabase-expert.md +0 -50
- /package/docs/{v3.0 → next-generation}/ANALYSIS.md +0 -0
- /package/docs/{v3.0 → next-generation}/ARCHITECTURE.md +0 -0
- /package/docs/{v3.0 → next-generation}/FEATURES.md +0 -0
- /package/docs/{v3.0 → next-generation}/README.md +0 -0
- /package/docs/{v3.0 → next-generation}/ROADMAP.md +0 -0
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# Features em Desenvolvimento
|
|
2
|
-
|
|
3
|
-
Esta pasta contém as features ATIVAS em desenvolvimento.
|
|
4
|
-
|
|
5
|
-
## Estrutura
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
features/
|
|
9
|
-
└── {feature-name}/
|
|
10
|
-
├── proposal.md # Proposta (por que e o quê)
|
|
11
|
-
├── spec.md # Especificação técnica
|
|
12
|
-
├── tasks.md # Checklist de implementação
|
|
13
|
-
├── contracts.cs # Interfaces e DTOs
|
|
14
|
-
├── decisions.md # ADRs
|
|
15
|
-
└── recap.md # Resumo pós-implementação
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
## Workflow
|
|
19
|
-
|
|
20
|
-
1. `/morph-proposal {feature}` - Criar nova feature
|
|
21
|
-
2. Revisar e aprovar proposal
|
|
22
|
-
3. `/morph-apply {feature}` - Implementar
|
|
23
|
-
4. `/morph-archive {feature}` - Arquivar quando concluída
|
|
24
|
-
|
|
25
|
-
*Gerado pelo MORPH Framework*
|
|
@@ -1,296 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
-
"$id": "https://polymorphism.com.br/morph-spec/schemas/agent.schema.json",
|
|
4
|
-
"title": "MORPH-SPEC Agent Configuration Schema",
|
|
5
|
-
"description": "JSON Schema for validating agents.json configuration file",
|
|
6
|
-
"type": "object",
|
|
7
|
-
"required": ["version", "agents"],
|
|
8
|
-
"properties": {
|
|
9
|
-
"version": {
|
|
10
|
-
"type": "string",
|
|
11
|
-
"description": "Schema version",
|
|
12
|
-
"pattern": "^\\d+\\.\\d+\\.\\d+$",
|
|
13
|
-
"examples": ["1.0.0", "2.1.0"]
|
|
14
|
-
},
|
|
15
|
-
"agents": {
|
|
16
|
-
"type": "object",
|
|
17
|
-
"description": "Agent definitions organized by type",
|
|
18
|
-
"required": ["core", "specialists"],
|
|
19
|
-
"properties": {
|
|
20
|
-
"core": {
|
|
21
|
-
"type": "array",
|
|
22
|
-
"description": "Core agents (always active)",
|
|
23
|
-
"items": {
|
|
24
|
-
"$ref": "#/definitions/agent"
|
|
25
|
-
},
|
|
26
|
-
"minItems": 1
|
|
27
|
-
},
|
|
28
|
-
"specialists": {
|
|
29
|
-
"type": "array",
|
|
30
|
-
"description": "Specialist agents (activated on-demand by keywords)",
|
|
31
|
-
"items": {
|
|
32
|
-
"$ref": "#/definitions/specialistAgent"
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
},
|
|
36
|
-
"additionalProperties": false
|
|
37
|
-
}
|
|
38
|
-
},
|
|
39
|
-
"additionalProperties": false,
|
|
40
|
-
"definitions": {
|
|
41
|
-
"agent": {
|
|
42
|
-
"type": "object",
|
|
43
|
-
"description": "Base agent definition",
|
|
44
|
-
"required": ["id", "name", "emoji", "type", "description", "responsibilities"],
|
|
45
|
-
"properties": {
|
|
46
|
-
"id": {
|
|
47
|
-
"type": "string",
|
|
48
|
-
"description": "Unique agent identifier (kebab-case)",
|
|
49
|
-
"pattern": "^[a-z][a-z0-9-]*$",
|
|
50
|
-
"examples": ["standards-architect", "azure-architect"]
|
|
51
|
-
},
|
|
52
|
-
"name": {
|
|
53
|
-
"type": "string",
|
|
54
|
-
"description": "Human-readable agent name",
|
|
55
|
-
"minLength": 3,
|
|
56
|
-
"maxLength": 50,
|
|
57
|
-
"examples": ["Standards Architect", "Azure Architect"]
|
|
58
|
-
},
|
|
59
|
-
"emoji": {
|
|
60
|
-
"type": "string",
|
|
61
|
-
"description": "Agent emoji (single character)",
|
|
62
|
-
"pattern": "^.{1,2}$",
|
|
63
|
-
"examples": ["📐", "☁️", "🔥"]
|
|
64
|
-
},
|
|
65
|
-
"type": {
|
|
66
|
-
"type": "string",
|
|
67
|
-
"description": "Agent type",
|
|
68
|
-
"enum": ["core", "specialist"],
|
|
69
|
-
"examples": ["core", "specialist"]
|
|
70
|
-
},
|
|
71
|
-
"skillPath": {
|
|
72
|
-
"type": "string",
|
|
73
|
-
"description": "Path to agent skill file (relative to repo root)",
|
|
74
|
-
"pattern": "^[^/].*\\.md$",
|
|
75
|
-
"examples": [".claude/skills/specialists/standards-architect.md"]
|
|
76
|
-
},
|
|
77
|
-
"description": {
|
|
78
|
-
"type": "string",
|
|
79
|
-
"description": "Brief agent description (PT-BR or EN)",
|
|
80
|
-
"minLength": 10,
|
|
81
|
-
"maxLength": 200,
|
|
82
|
-
"examples": ["Guardião dos padrões de código e arquitetura"]
|
|
83
|
-
},
|
|
84
|
-
"responsibilities": {
|
|
85
|
-
"type": "array",
|
|
86
|
-
"description": "List of agent responsibilities",
|
|
87
|
-
"items": {
|
|
88
|
-
"type": "string",
|
|
89
|
-
"minLength": 5,
|
|
90
|
-
"maxLength": 150
|
|
91
|
-
},
|
|
92
|
-
"minItems": 1,
|
|
93
|
-
"maxItems": 10,
|
|
94
|
-
"examples": [
|
|
95
|
-
["Validar aderência aos padrões", "Revisar nomenclatura"]
|
|
96
|
-
]
|
|
97
|
-
},
|
|
98
|
-
"validatesPhases": {
|
|
99
|
-
"type": "array",
|
|
100
|
-
"description": "Which MORPH phases this agent validates",
|
|
101
|
-
"items": {
|
|
102
|
-
"type": "string",
|
|
103
|
-
"enum": ["setup", "uiux-design", "design", "clarify", "tasks", "implement", "sync"]
|
|
104
|
-
},
|
|
105
|
-
"uniqueItems": true,
|
|
106
|
-
"examples": [["design", "implement"]]
|
|
107
|
-
},
|
|
108
|
-
"expertise": {
|
|
109
|
-
"type": "array",
|
|
110
|
-
"description": "Areas of expertise",
|
|
111
|
-
"items": {
|
|
112
|
-
"type": "string",
|
|
113
|
-
"minLength": 3,
|
|
114
|
-
"maxLength": 100
|
|
115
|
-
},
|
|
116
|
-
"examples": [["Container Apps", "Azure SQL", "Bicep"]]
|
|
117
|
-
},
|
|
118
|
-
"patterns": {
|
|
119
|
-
"type": "array",
|
|
120
|
-
"description": "Technical patterns the agent specializes in",
|
|
121
|
-
"items": {
|
|
122
|
-
"type": "string",
|
|
123
|
-
"minLength": 3,
|
|
124
|
-
"maxLength": 100
|
|
125
|
-
},
|
|
126
|
-
"examples": [["CQRS", "Repository", "DI"]]
|
|
127
|
-
},
|
|
128
|
-
"limits": {
|
|
129
|
-
"type": "object",
|
|
130
|
-
"description": "Agent-specific limits (e.g., for Cost Guardian)",
|
|
131
|
-
"additionalProperties": true
|
|
132
|
-
},
|
|
133
|
-
"defaultModel": {
|
|
134
|
-
"type": "string",
|
|
135
|
-
"description": "Default AI model for this agent",
|
|
136
|
-
"examples": ["gpt-4o-mini", "claude-3-5-sonnet"]
|
|
137
|
-
},
|
|
138
|
-
"deliverables": {
|
|
139
|
-
"type": "array",
|
|
140
|
-
"description": "Outputs this agent is responsible for",
|
|
141
|
-
"items": {
|
|
142
|
-
"type": "string",
|
|
143
|
-
"minLength": 3,
|
|
144
|
-
"maxLength": 100
|
|
145
|
-
},
|
|
146
|
-
"examples": [["ui-design-system.md", "ui-mockups.md"]]
|
|
147
|
-
},
|
|
148
|
-
"workflow": {
|
|
149
|
-
"type": "array",
|
|
150
|
-
"description": "Step-by-step workflow for this agent",
|
|
151
|
-
"items": {
|
|
152
|
-
"type": "string",
|
|
153
|
-
"minLength": 5,
|
|
154
|
-
"maxLength": 200
|
|
155
|
-
},
|
|
156
|
-
"examples": [
|
|
157
|
-
["1. Analisar contexto", "2. Gerar proposta", "3. Validar com usuário"]
|
|
158
|
-
]
|
|
159
|
-
},
|
|
160
|
-
"techniques": {
|
|
161
|
-
"type": "array",
|
|
162
|
-
"description": "Techniques or methodologies the agent uses",
|
|
163
|
-
"items": {
|
|
164
|
-
"type": "string",
|
|
165
|
-
"minLength": 3,
|
|
166
|
-
"maxLength": 100
|
|
167
|
-
},
|
|
168
|
-
"examples": [["5 Whys", "MoSCoW", "User story mapping"]]
|
|
169
|
-
}
|
|
170
|
-
},
|
|
171
|
-
"additionalProperties": false
|
|
172
|
-
},
|
|
173
|
-
"specialistAgent": {
|
|
174
|
-
"type": "object",
|
|
175
|
-
"required": ["id", "name", "emoji", "type", "description", "responsibilities", "autoActivation"],
|
|
176
|
-
"properties": {
|
|
177
|
-
"id": {
|
|
178
|
-
"type": "string",
|
|
179
|
-
"description": "Unique agent identifier (kebab-case)",
|
|
180
|
-
"pattern": "^[a-z][a-z0-9-]*$"
|
|
181
|
-
},
|
|
182
|
-
"name": {
|
|
183
|
-
"type": "string",
|
|
184
|
-
"description": "Human-readable agent name",
|
|
185
|
-
"minLength": 3,
|
|
186
|
-
"maxLength": 50
|
|
187
|
-
},
|
|
188
|
-
"emoji": {
|
|
189
|
-
"type": "string",
|
|
190
|
-
"description": "Agent emoji (single character)",
|
|
191
|
-
"pattern": "^.{1,2}$"
|
|
192
|
-
},
|
|
193
|
-
"type": {
|
|
194
|
-
"const": "specialist"
|
|
195
|
-
},
|
|
196
|
-
"skillPath": {
|
|
197
|
-
"type": "string",
|
|
198
|
-
"description": "Path to agent skill file",
|
|
199
|
-
"pattern": "^[^/].*\\.md$"
|
|
200
|
-
},
|
|
201
|
-
"description": {
|
|
202
|
-
"type": "string",
|
|
203
|
-
"description": "Brief agent description",
|
|
204
|
-
"minLength": 10,
|
|
205
|
-
"maxLength": 200
|
|
206
|
-
},
|
|
207
|
-
"responsibilities": {
|
|
208
|
-
"type": "array",
|
|
209
|
-
"description": "List of agent responsibilities",
|
|
210
|
-
"items": {
|
|
211
|
-
"type": "string",
|
|
212
|
-
"minLength": 5,
|
|
213
|
-
"maxLength": 150
|
|
214
|
-
},
|
|
215
|
-
"minItems": 1,
|
|
216
|
-
"maxItems": 10
|
|
217
|
-
},
|
|
218
|
-
"autoActivation": {
|
|
219
|
-
"type": "object",
|
|
220
|
-
"description": "Auto-activation configuration for specialist agents",
|
|
221
|
-
"required": ["keywords"],
|
|
222
|
-
"properties": {
|
|
223
|
-
"keywords": {
|
|
224
|
-
"type": "array",
|
|
225
|
-
"description": "Keywords that trigger this agent (lowercase, alphanumeric + hyphens/underscores)",
|
|
226
|
-
"items": {
|
|
227
|
-
"type": "string",
|
|
228
|
-
"pattern": "^[a-z][a-z0-9_-]*$",
|
|
229
|
-
"minLength": 2,
|
|
230
|
-
"maxLength": 50
|
|
231
|
-
},
|
|
232
|
-
"minItems": 1,
|
|
233
|
-
"uniqueItems": true
|
|
234
|
-
},
|
|
235
|
-
"minKeywords": {
|
|
236
|
-
"type": "integer",
|
|
237
|
-
"description": "Minimum number of keyword matches required (default: 1)",
|
|
238
|
-
"minimum": 1,
|
|
239
|
-
"default": 1
|
|
240
|
-
}
|
|
241
|
-
},
|
|
242
|
-
"additionalProperties": false
|
|
243
|
-
},
|
|
244
|
-
"validatesPhases": {
|
|
245
|
-
"type": "array",
|
|
246
|
-
"items": {
|
|
247
|
-
"type": "string",
|
|
248
|
-
"enum": ["setup", "uiux-design", "design", "clarify", "tasks", "implement", "sync"]
|
|
249
|
-
},
|
|
250
|
-
"uniqueItems": true
|
|
251
|
-
},
|
|
252
|
-
"expertise": {
|
|
253
|
-
"type": "array",
|
|
254
|
-
"items": {
|
|
255
|
-
"type": "string",
|
|
256
|
-
"minLength": 3,
|
|
257
|
-
"maxLength": 100
|
|
258
|
-
}
|
|
259
|
-
},
|
|
260
|
-
"patterns": {
|
|
261
|
-
"type": "array",
|
|
262
|
-
"items": {
|
|
263
|
-
"type": "string",
|
|
264
|
-
"minLength": 3,
|
|
265
|
-
"maxLength": 100
|
|
266
|
-
}
|
|
267
|
-
},
|
|
268
|
-
"deliverables": {
|
|
269
|
-
"type": "array",
|
|
270
|
-
"items": {
|
|
271
|
-
"type": "string",
|
|
272
|
-
"minLength": 3,
|
|
273
|
-
"maxLength": 100
|
|
274
|
-
}
|
|
275
|
-
},
|
|
276
|
-
"workflow": {
|
|
277
|
-
"type": "array",
|
|
278
|
-
"items": {
|
|
279
|
-
"type": "string",
|
|
280
|
-
"minLength": 5,
|
|
281
|
-
"maxLength": 200
|
|
282
|
-
}
|
|
283
|
-
},
|
|
284
|
-
"techniques": {
|
|
285
|
-
"type": "array",
|
|
286
|
-
"items": {
|
|
287
|
-
"type": "string",
|
|
288
|
-
"minLength": 3,
|
|
289
|
-
"maxLength": 100
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
},
|
|
293
|
-
"additionalProperties": false
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
}
|
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
-
"$id": "https://morph-spec.dev/schemas/tasks.schema.json",
|
|
4
|
-
"title": "MORPH-SPEC Tasks Schema",
|
|
5
|
-
"description": "Schema for tasks.json files in MORPH-SPEC features",
|
|
6
|
-
"type": "object",
|
|
7
|
-
"required": ["version", "feature", "tasks"],
|
|
8
|
-
"properties": {
|
|
9
|
-
"version": {
|
|
10
|
-
"type": "string",
|
|
11
|
-
"description": "Schema version",
|
|
12
|
-
"pattern": "^\\d+\\.\\d+\\.\\d+$",
|
|
13
|
-
"examples": ["3.0.0"]
|
|
14
|
-
},
|
|
15
|
-
"feature": {
|
|
16
|
-
"type": "string",
|
|
17
|
-
"description": "Feature name (kebab-case)",
|
|
18
|
-
"pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
|
|
19
|
-
"examples": ["scheduled-reports", "user-auth"]
|
|
20
|
-
},
|
|
21
|
-
"createdAt": {
|
|
22
|
-
"type": "string",
|
|
23
|
-
"format": "date-time",
|
|
24
|
-
"description": "Creation timestamp"
|
|
25
|
-
},
|
|
26
|
-
"updatedAt": {
|
|
27
|
-
"type": "string",
|
|
28
|
-
"format": "date-time",
|
|
29
|
-
"description": "Last update timestamp"
|
|
30
|
-
},
|
|
31
|
-
"summary": {
|
|
32
|
-
"type": "object",
|
|
33
|
-
"description": "Task summary statistics",
|
|
34
|
-
"properties": {
|
|
35
|
-
"total": { "type": "integer", "minimum": 0 },
|
|
36
|
-
"completed": { "type": "integer", "minimum": 0 },
|
|
37
|
-
"inProgress": { "type": "integer", "minimum": 0 },
|
|
38
|
-
"pending": { "type": "integer", "minimum": 0 },
|
|
39
|
-
"blocked": { "type": "integer", "minimum": 0 }
|
|
40
|
-
}
|
|
41
|
-
},
|
|
42
|
-
"tasks": {
|
|
43
|
-
"type": "array",
|
|
44
|
-
"description": "List of tasks",
|
|
45
|
-
"items": {
|
|
46
|
-
"$ref": "#/definitions/task"
|
|
47
|
-
}
|
|
48
|
-
},
|
|
49
|
-
"checkpoints": {
|
|
50
|
-
"type": "array",
|
|
51
|
-
"description": "Checkpoint definitions",
|
|
52
|
-
"items": {
|
|
53
|
-
"$ref": "#/definitions/checkpoint"
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
},
|
|
57
|
-
"definitions": {
|
|
58
|
-
"task": {
|
|
59
|
-
"type": "object",
|
|
60
|
-
"required": ["id", "title", "status"],
|
|
61
|
-
"properties": {
|
|
62
|
-
"id": {
|
|
63
|
-
"type": "string",
|
|
64
|
-
"description": "Task ID (format: T001, T002, etc.)",
|
|
65
|
-
"pattern": "^T\\d{3}$",
|
|
66
|
-
"examples": ["T001", "T002", "T010"]
|
|
67
|
-
},
|
|
68
|
-
"title": {
|
|
69
|
-
"type": "string",
|
|
70
|
-
"description": "Task title (short description)",
|
|
71
|
-
"maxLength": 100,
|
|
72
|
-
"examples": ["Create ScheduledReport entity"]
|
|
73
|
-
},
|
|
74
|
-
"description": {
|
|
75
|
-
"type": "string",
|
|
76
|
-
"description": "Detailed task description"
|
|
77
|
-
},
|
|
78
|
-
"status": {
|
|
79
|
-
"type": "string",
|
|
80
|
-
"enum": ["pending", "in_progress", "completed", "blocked", "skipped"],
|
|
81
|
-
"description": "Current task status"
|
|
82
|
-
},
|
|
83
|
-
"type": {
|
|
84
|
-
"type": "string",
|
|
85
|
-
"enum": ["entity", "command", "query", "handler", "service", "component", "page", "test", "migration", "config", "infra", "docs"],
|
|
86
|
-
"description": "Type of task"
|
|
87
|
-
},
|
|
88
|
-
"priority": {
|
|
89
|
-
"type": "string",
|
|
90
|
-
"enum": ["low", "medium", "high", "critical"],
|
|
91
|
-
"description": "Task priority"
|
|
92
|
-
},
|
|
93
|
-
"dependencies": {
|
|
94
|
-
"type": "array",
|
|
95
|
-
"description": "IDs of tasks that must be completed first",
|
|
96
|
-
"items": {
|
|
97
|
-
"type": "string",
|
|
98
|
-
"pattern": "^T\\d{3}$"
|
|
99
|
-
},
|
|
100
|
-
"examples": [["T001", "T002"]]
|
|
101
|
-
},
|
|
102
|
-
"files": {
|
|
103
|
-
"type": "array",
|
|
104
|
-
"description": "Files to be created or modified",
|
|
105
|
-
"items": {
|
|
106
|
-
"type": "string"
|
|
107
|
-
},
|
|
108
|
-
"examples": [["Domain/Entities/ScheduledReport.cs", "Infrastructure/Persistence/Config/ScheduledReportConfig.cs"]]
|
|
109
|
-
},
|
|
110
|
-
"checkpoint": {
|
|
111
|
-
"type": "string",
|
|
112
|
-
"description": "Checkpoint ID this task belongs to",
|
|
113
|
-
"pattern": "^CP\\d{3}$"
|
|
114
|
-
},
|
|
115
|
-
"estimatedLines": {
|
|
116
|
-
"type": "integer",
|
|
117
|
-
"description": "Estimated lines of code",
|
|
118
|
-
"minimum": 0
|
|
119
|
-
},
|
|
120
|
-
"actualLines": {
|
|
121
|
-
"type": "integer",
|
|
122
|
-
"description": "Actual lines of code (after completion)",
|
|
123
|
-
"minimum": 0
|
|
124
|
-
},
|
|
125
|
-
"completedAt": {
|
|
126
|
-
"type": "string",
|
|
127
|
-
"format": "date-time",
|
|
128
|
-
"description": "Completion timestamp"
|
|
129
|
-
},
|
|
130
|
-
"notes": {
|
|
131
|
-
"type": "string",
|
|
132
|
-
"description": "Additional notes or comments"
|
|
133
|
-
},
|
|
134
|
-
"blockedReason": {
|
|
135
|
-
"type": "string",
|
|
136
|
-
"description": "Reason for blocked status"
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
},
|
|
140
|
-
"checkpoint": {
|
|
141
|
-
"type": "object",
|
|
142
|
-
"required": ["id", "name"],
|
|
143
|
-
"properties": {
|
|
144
|
-
"id": {
|
|
145
|
-
"type": "string",
|
|
146
|
-
"description": "Checkpoint ID",
|
|
147
|
-
"pattern": "^CP\\d{3}$",
|
|
148
|
-
"examples": ["CP001", "CP002"]
|
|
149
|
-
},
|
|
150
|
-
"name": {
|
|
151
|
-
"type": "string",
|
|
152
|
-
"description": "Checkpoint name",
|
|
153
|
-
"examples": ["Entity Layer Complete", "Backend Complete"]
|
|
154
|
-
},
|
|
155
|
-
"afterTasks": {
|
|
156
|
-
"type": "array",
|
|
157
|
-
"description": "Task IDs after which this checkpoint triggers",
|
|
158
|
-
"items": {
|
|
159
|
-
"type": "string",
|
|
160
|
-
"pattern": "^T\\d{3}$"
|
|
161
|
-
}
|
|
162
|
-
},
|
|
163
|
-
"validation": {
|
|
164
|
-
"type": "array",
|
|
165
|
-
"description": "Validation steps for this checkpoint",
|
|
166
|
-
"items": {
|
|
167
|
-
"type": "string"
|
|
168
|
-
},
|
|
169
|
-
"examples": [["Run tests", "Build project", "Review code"]]
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
},
|
|
174
|
-
"examples": [
|
|
175
|
-
{
|
|
176
|
-
"version": "3.0.0",
|
|
177
|
-
"feature": "scheduled-reports",
|
|
178
|
-
"createdAt": "2024-01-15T10:00:00Z",
|
|
179
|
-
"summary": {
|
|
180
|
-
"total": 9,
|
|
181
|
-
"completed": 0,
|
|
182
|
-
"inProgress": 0,
|
|
183
|
-
"pending": 9,
|
|
184
|
-
"blocked": 0
|
|
185
|
-
},
|
|
186
|
-
"tasks": [
|
|
187
|
-
{
|
|
188
|
-
"id": "T001",
|
|
189
|
-
"title": "Create ScheduledReport entity",
|
|
190
|
-
"status": "pending",
|
|
191
|
-
"type": "entity",
|
|
192
|
-
"priority": "high",
|
|
193
|
-
"files": [
|
|
194
|
-
"Domain/Entities/ScheduledReport.cs",
|
|
195
|
-
"Infrastructure/Persistence/Config/ScheduledReportConfig.cs"
|
|
196
|
-
],
|
|
197
|
-
"estimatedLines": 100
|
|
198
|
-
},
|
|
199
|
-
{
|
|
200
|
-
"id": "T002",
|
|
201
|
-
"title": "Create CreateReportCommand + Handler",
|
|
202
|
-
"status": "pending",
|
|
203
|
-
"type": "command",
|
|
204
|
-
"dependencies": ["T001"],
|
|
205
|
-
"files": [
|
|
206
|
-
"Application/Features/Reports/Commands/CreateReportCommand.cs"
|
|
207
|
-
]
|
|
208
|
-
}
|
|
209
|
-
],
|
|
210
|
-
"checkpoints": [
|
|
211
|
-
{
|
|
212
|
-
"id": "CP001",
|
|
213
|
-
"name": "Entity Layer Complete",
|
|
214
|
-
"afterTasks": ["T001", "T002", "T003"],
|
|
215
|
-
"validation": ["Build project", "Run unit tests"]
|
|
216
|
-
}
|
|
217
|
-
]
|
|
218
|
-
}
|
|
219
|
-
]
|
|
220
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
# Specs Ativas
|
|
2
|
-
|
|
3
|
-
Esta pasta contém as especificações ATIVAS do projeto.
|
|
4
|
-
Specs são extraídas de features arquivadas e representam a "verdade atual" do sistema.
|
|
5
|
-
|
|
6
|
-
## Estrutura
|
|
7
|
-
|
|
8
|
-
```
|
|
9
|
-
specs/
|
|
10
|
-
└── {domain}/
|
|
11
|
-
└── spec.md
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
## Como usar
|
|
15
|
-
|
|
16
|
-
1. Quando uma feature é arquivada, specs relevantes são extraídas para cá
|
|
17
|
-
2. Specs aqui são a referência para comportamento do sistema
|
|
18
|
-
3. Novas features podem referenciar e modificar estas specs
|
|
19
|
-
|
|
20
|
-
*Gerado pelo MORPH Framework*
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
// Example Bicep file for testing cost calculator
|
|
2
|
-
|
|
3
|
-
param location string = 'eastus2'
|
|
4
|
-
param environment string = 'dev'
|
|
5
|
-
|
|
6
|
-
// Azure SQL Database - Basic tier ($4.99/month)
|
|
7
|
-
resource sqlDatabase 'Microsoft.Sql/servers/databases@2023-05-01-preview' = {
|
|
8
|
-
name: 'sqldb-myapp-${environment}'
|
|
9
|
-
location: location
|
|
10
|
-
sku: {
|
|
11
|
-
name: 'Basic'
|
|
12
|
-
tier: 'Basic'
|
|
13
|
-
}
|
|
14
|
-
properties: {
|
|
15
|
-
collation: 'SQL_Latin1_General_CP1_CI_AS'
|
|
16
|
-
maxSizeBytes: 2147483648 // 2 GB
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
// Container App - Scale-to-zero ($0/month)
|
|
21
|
-
resource containerApp 'Microsoft.App/containerApps@2023-05-01' = {
|
|
22
|
-
name: 'ca-myapp-${environment}'
|
|
23
|
-
location: location
|
|
24
|
-
properties: {
|
|
25
|
-
configuration: {
|
|
26
|
-
ingress: {
|
|
27
|
-
external: true
|
|
28
|
-
targetPort: 8080
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
template: {
|
|
32
|
-
containers: [
|
|
33
|
-
{
|
|
34
|
-
name: 'main'
|
|
35
|
-
image: 'mcr.microsoft.com/azuredocs/containerapps-helloworld:latest'
|
|
36
|
-
}
|
|
37
|
-
]
|
|
38
|
-
scale: {
|
|
39
|
-
minReplicas: 0 // Scale-to-zero = FREE
|
|
40
|
-
maxReplicas: 2
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
// Application Insights - Free tier ($0/month)
|
|
47
|
-
resource appInsights 'Microsoft.Insights/components@2020-02-02' = {
|
|
48
|
-
name: 'appi-myapp-${environment}'
|
|
49
|
-
location: location
|
|
50
|
-
kind: 'web'
|
|
51
|
-
properties: {
|
|
52
|
-
Application_Type: 'web'
|
|
53
|
-
}
|
|
54
|
-
sku: {
|
|
55
|
-
name: 'Free'
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// Total: $4.99/month (within $10 limit)
|