@polymorphism-tech/morph-spec 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +279 -0
- package/bin/morph-spec.js +53 -0
- package/content/.claude/commands/morph-apply.md +66 -0
- package/content/.claude/commands/morph-archive.md +79 -0
- package/content/.claude/commands/morph-costs.md +206 -0
- package/content/.claude/commands/morph-infra.md +209 -0
- package/content/.claude/commands/morph-proposal.md +60 -0
- package/content/.claude/commands/morph-status.md +71 -0
- package/content/.claude/settings.local.json +15 -0
- package/content/.claude/skills/infra/bicep-architect.md +419 -0
- package/content/.claude/skills/infra/container-specialist.md +437 -0
- package/content/.claude/skills/infra/devops-engineer.md +405 -0
- package/content/.claude/skills/integrations/asaas-financial.md +333 -0
- package/content/.claude/skills/integrations/azure-identity.md +309 -0
- package/content/.claude/skills/integrations/clerk-auth.md +290 -0
- package/content/.claude/skills/specialists/azure-architect.md +142 -0
- package/content/.claude/skills/specialists/cost-guardian.md +110 -0
- package/content/.claude/skills/specialists/ef-modeler.md +200 -0
- package/content/.claude/skills/specialists/hangfire-orchestrator.md +245 -0
- package/content/.claude/skills/specialists/ms-agent-expert.md +209 -0
- package/content/.claude/skills/specialists/po-pm-advisor.md +197 -0
- package/content/.claude/skills/specialists/standards-architect.md +78 -0
- package/content/.claude/skills/specialists/ui-ux-designer.md +325 -0
- package/content/.claude/skills/stacks/dotnet-blazor.md +352 -0
- package/content/.claude/skills/stacks/dotnet-nextjs.md +402 -0
- package/content/.claude/skills/stacks/shopify.md +445 -0
- package/content/.morph/archive/.gitkeep +25 -0
- package/content/.morph/config/agents.json +149 -0
- package/content/.morph/config/config.template.json +96 -0
- package/content/.morph/examples/api-nextjs/README.md +241 -0
- package/content/.morph/examples/api-nextjs/contracts.ts +307 -0
- package/content/.morph/examples/api-nextjs/spec.md +399 -0
- package/content/.morph/examples/api-nextjs/tasks.md +168 -0
- package/content/.morph/examples/micro-saas/README.md +125 -0
- package/content/.morph/examples/micro-saas/contracts.cs +358 -0
- package/content/.morph/examples/micro-saas/decisions.md +246 -0
- package/content/.morph/examples/micro-saas/spec.md +236 -0
- package/content/.morph/examples/micro-saas/tasks.md +150 -0
- package/content/.morph/examples/multi-agent/README.md +309 -0
- package/content/.morph/examples/multi-agent/contracts.cs +433 -0
- package/content/.morph/examples/multi-agent/spec.md +479 -0
- package/content/.morph/examples/multi-agent/tasks.md +185 -0
- package/content/.morph/features/.gitkeep +25 -0
- package/content/.morph/project.md +159 -0
- package/content/.morph/specs/.gitkeep +20 -0
- package/content/.morph/standards/architecture.md +190 -0
- package/content/.morph/standards/azure.md +184 -0
- package/content/.morph/standards/coding.md +342 -0
- package/content/.morph/templates/agent.cs +172 -0
- package/content/.morph/templates/component.razor +239 -0
- package/content/.morph/templates/contracts.cs +217 -0
- package/content/.morph/templates/decisions.md +106 -0
- package/content/.morph/templates/infra/app-insights.bicep +63 -0
- package/content/.morph/templates/infra/container-app-env.bicep +49 -0
- package/content/.morph/templates/infra/container-app.bicep +156 -0
- package/content/.morph/templates/infra/key-vault.bicep +91 -0
- package/content/.morph/templates/infra/main.bicep +155 -0
- package/content/.morph/templates/infra/parameters.dev.json +23 -0
- package/content/.morph/templates/infra/parameters.prod.json +23 -0
- package/content/.morph/templates/infra/sql-database.bicep +103 -0
- package/content/.morph/templates/infra/storage.bicep +106 -0
- package/content/.morph/templates/integrations/asaas-client.cs +387 -0
- package/content/.morph/templates/integrations/asaas-webhook.cs +351 -0
- package/content/.morph/templates/integrations/azure-identity-config.cs +288 -0
- package/content/.morph/templates/integrations/clerk-config.cs +258 -0
- package/content/.morph/templates/job.cs +171 -0
- package/content/.morph/templates/migration.cs +83 -0
- package/content/.morph/templates/proposal.md +155 -0
- package/content/.morph/templates/recap.md +105 -0
- package/content/.morph/templates/repository.cs +141 -0
- package/content/.morph/templates/saas/subscription.cs +347 -0
- package/content/.morph/templates/saas/tenant.cs +338 -0
- package/content/.morph/templates/service.cs +139 -0
- package/content/.morph/templates/spec.md +147 -0
- package/content/.morph/templates/tasks.md +235 -0
- package/content/.morph/templates/test.cs +239 -0
- package/content/CLAUDE.md +318 -0
- package/package.json +50 -0
- package/src/commands/doctor.js +132 -0
- package/src/commands/init.js +121 -0
- package/src/commands/update.js +84 -0
- package/src/utils/file-copier.js +50 -0
- package/src/utils/logger.js +32 -0
|
@@ -0,0 +1,479 @@
|
|
|
1
|
+
# Multi-Agent System - Especificação
|
|
2
|
+
|
|
3
|
+
## 1. Visão Geral
|
|
4
|
+
|
|
5
|
+
Sistema de agentes de IA cooperativos usando Microsoft Semantic Kernel para resolver tarefas complexas através de decomposição e especialização.
|
|
6
|
+
|
|
7
|
+
### 1.1 Objetivos
|
|
8
|
+
|
|
9
|
+
- Criar sistema escalável de agentes cooperativos
|
|
10
|
+
- Implementar orquestração inteligente de tarefas
|
|
11
|
+
- Fornecer extensibilidade para novos agentes e plugins
|
|
12
|
+
- Manter custos controlados com uso eficiente de tokens
|
|
13
|
+
|
|
14
|
+
### 1.2 Use Cases
|
|
15
|
+
|
|
16
|
+
| Use Case | Agentes Envolvidos |
|
|
17
|
+
|----------|-------------------|
|
|
18
|
+
| Pesquisa de mercado | Orchestrator → Research → Analysis → Writing |
|
|
19
|
+
| Análise de documentos | Orchestrator → Research → Analysis |
|
|
20
|
+
| Geração de relatórios | Orchestrator → Research → Writing |
|
|
21
|
+
| Q&A com base de conhecimento | Orchestrator → Research |
|
|
22
|
+
|
|
23
|
+
## 2. Arquitetura
|
|
24
|
+
|
|
25
|
+
### 2.1 Componentes Principais
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
29
|
+
│ API Layer │
|
|
30
|
+
│ ┌─────────────────┐ ┌─────────────────┐ │
|
|
31
|
+
│ │ ChatEndpoints │ │ AgentEndpoints │ │
|
|
32
|
+
│ └─────────────────┘ └─────────────────┘ │
|
|
33
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
34
|
+
│
|
|
35
|
+
▼
|
|
36
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
37
|
+
│ Orchestration Layer │
|
|
38
|
+
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
|
|
39
|
+
│ │ TaskDecomposer │ │ AgentRouter │ │ ResultAggregator│ │
|
|
40
|
+
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
|
|
41
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
42
|
+
│
|
|
43
|
+
▼
|
|
44
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
45
|
+
│ Agent Layer │
|
|
46
|
+
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────┐ │
|
|
47
|
+
│ │ Research │ │ Analysis │ │ Writing │ │
|
|
48
|
+
│ │ Agent │ │ Agent │ │ Agent │ │
|
|
49
|
+
│ └──────────────┘ └──────────────┘ └──────────────────────┘ │
|
|
50
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
51
|
+
│
|
|
52
|
+
▼
|
|
53
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
54
|
+
│ Plugin Layer │
|
|
55
|
+
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
|
|
56
|
+
│ │ WebSearch │ │ Document │ │ DataAnalysis│ │
|
|
57
|
+
│ │ Plugin │ │ Plugin │ │ Plugin │ │
|
|
58
|
+
│ └─────────────┘ └─────────────┘ └─────────────┘ │
|
|
59
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
60
|
+
│
|
|
61
|
+
▼
|
|
62
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
63
|
+
│ Infrastructure Layer │
|
|
64
|
+
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
|
|
65
|
+
│ │ Azure OpenAI │ │ Vector Store │ │ Memory Store │ │
|
|
66
|
+
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
|
|
67
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### 2.2 Fluxo de Dados
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
User Request
|
|
74
|
+
│
|
|
75
|
+
▼
|
|
76
|
+
┌─────────────────────────────────────────┐
|
|
77
|
+
│ Task Decomposition │
|
|
78
|
+
│ "Compare cloud providers" → │
|
|
79
|
+
│ [Research AWS, Research Azure, │
|
|
80
|
+
│ Research GCP, Compare, Write Report] │
|
|
81
|
+
└─────────────────────────────────────────┘
|
|
82
|
+
│
|
|
83
|
+
▼
|
|
84
|
+
┌─────────────────────────────────────────┐
|
|
85
|
+
│ Agent Execution │
|
|
86
|
+
│ Research Agent → findings[] │
|
|
87
|
+
│ Analysis Agent → insights │
|
|
88
|
+
│ Writing Agent → report │
|
|
89
|
+
└─────────────────────────────────────────┘
|
|
90
|
+
│
|
|
91
|
+
▼
|
|
92
|
+
┌─────────────────────────────────────────┐
|
|
93
|
+
│ Result Aggregation │
|
|
94
|
+
│ Combine outputs, format, validate │
|
|
95
|
+
└─────────────────────────────────────────┘
|
|
96
|
+
│
|
|
97
|
+
▼
|
|
98
|
+
Final Response
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## 3. Requisitos Funcionais
|
|
102
|
+
|
|
103
|
+
### 3.1 API
|
|
104
|
+
|
|
105
|
+
| ID | Requisito |
|
|
106
|
+
|----|-----------|
|
|
107
|
+
| API-001 | Endpoint de chat para interação com usuário |
|
|
108
|
+
| API-002 | Endpoint para consultar status de processamento |
|
|
109
|
+
| API-003 | Endpoint para listar agentes disponíveis |
|
|
110
|
+
| API-004 | Streaming de respostas (SSE) |
|
|
111
|
+
| API-005 | Autenticação via API Key |
|
|
112
|
+
|
|
113
|
+
### 3.2 Orchestrator
|
|
114
|
+
|
|
115
|
+
| ID | Requisito |
|
|
116
|
+
|----|-----------|
|
|
117
|
+
| ORCH-001 | Análise de intenção do usuário |
|
|
118
|
+
| ORCH-002 | Decomposição de tarefas complexas |
|
|
119
|
+
| ORCH-003 | Roteamento para agentes especialistas |
|
|
120
|
+
| ORCH-004 | Agregação de resultados |
|
|
121
|
+
| ORCH-005 | Retry automático em falhas |
|
|
122
|
+
| ORCH-006 | Timeout por subtarefa |
|
|
123
|
+
|
|
124
|
+
### 3.3 Agentes
|
|
125
|
+
|
|
126
|
+
| ID | Requisito |
|
|
127
|
+
|----|-----------|
|
|
128
|
+
| AGT-001 | Research Agent com acesso a web search |
|
|
129
|
+
| AGT-002 | Research Agent com RAG (vector search) |
|
|
130
|
+
| AGT-003 | Analysis Agent para comparações |
|
|
131
|
+
| AGT-004 | Analysis Agent para insights |
|
|
132
|
+
| AGT-005 | Writing Agent para relatórios |
|
|
133
|
+
| AGT-006 | Writing Agent para sumários |
|
|
134
|
+
|
|
135
|
+
### 3.4 Plugins
|
|
136
|
+
|
|
137
|
+
| ID | Requisito |
|
|
138
|
+
|----|-----------|
|
|
139
|
+
| PLG-001 | WebSearch via Bing API |
|
|
140
|
+
| PLG-002 | Document retrieval via vector store |
|
|
141
|
+
| PLG-003 | Calculator para análises numéricas |
|
|
142
|
+
| PLG-004 | Date/Time utilities |
|
|
143
|
+
|
|
144
|
+
### 3.5 Memória
|
|
145
|
+
|
|
146
|
+
| ID | Requisito |
|
|
147
|
+
|----|-----------|
|
|
148
|
+
| MEM-001 | Conversation memory por sessão |
|
|
149
|
+
| MEM-002 | Semantic memory para contexto relevante |
|
|
150
|
+
| MEM-003 | Persistência opcional em Cosmos DB |
|
|
151
|
+
|
|
152
|
+
## 4. Requisitos Não-Funcionais
|
|
153
|
+
|
|
154
|
+
### 4.1 Performance
|
|
155
|
+
|
|
156
|
+
| ID | Requisito |
|
|
157
|
+
|----|-----------|
|
|
158
|
+
| PERF-001 | Response streaming para UX fluida |
|
|
159
|
+
| PERF-002 | Timeout máximo de 60s por request |
|
|
160
|
+
| PERF-003 | Execução paralela de subtarefas independentes |
|
|
161
|
+
|
|
162
|
+
### 4.2 Custo
|
|
163
|
+
|
|
164
|
+
| ID | Requisito |
|
|
165
|
+
|----|-----------|
|
|
166
|
+
| COST-001 | Limite de tokens por request configurável |
|
|
167
|
+
| COST-002 | Uso de modelos menores para subtarefas simples |
|
|
168
|
+
| COST-003 | Cache de resultados de pesquisa |
|
|
169
|
+
| COST-004 | Tracking de uso de tokens |
|
|
170
|
+
|
|
171
|
+
### 4.3 Segurança
|
|
172
|
+
|
|
173
|
+
| ID | Requisito |
|
|
174
|
+
|----|-----------|
|
|
175
|
+
| SEC-001 | API Key authentication |
|
|
176
|
+
| SEC-002 | Rate limiting por API key |
|
|
177
|
+
| SEC-003 | Input sanitization |
|
|
178
|
+
| SEC-004 | Output filtering (PII, harmful content) |
|
|
179
|
+
|
|
180
|
+
## 5. Agentes em Detalhe
|
|
181
|
+
|
|
182
|
+
### 5.1 Orchestrator Agent
|
|
183
|
+
|
|
184
|
+
**System Prompt**:
|
|
185
|
+
```
|
|
186
|
+
You are an orchestrator agent responsible for coordinating other specialized agents.
|
|
187
|
+
|
|
188
|
+
When you receive a user request:
|
|
189
|
+
1. Analyze the intent and complexity
|
|
190
|
+
2. Decompose into subtasks if needed
|
|
191
|
+
3. Delegate to appropriate specialist agents
|
|
192
|
+
4. Aggregate and format the final response
|
|
193
|
+
|
|
194
|
+
Available agents:
|
|
195
|
+
- research: For information gathering, web search, document retrieval
|
|
196
|
+
- analysis: For data analysis, comparisons, insight generation
|
|
197
|
+
- writing: For text generation, summaries, reports
|
|
198
|
+
|
|
199
|
+
Respond with a plan in JSON format:
|
|
200
|
+
{
|
|
201
|
+
"understanding": "Brief summary of user's request",
|
|
202
|
+
"subtasks": [
|
|
203
|
+
{"agent": "research", "task": "specific task description"},
|
|
204
|
+
{"agent": "analysis", "task": "specific task description"},
|
|
205
|
+
{"agent": "writing", "task": "specific task description"}
|
|
206
|
+
]
|
|
207
|
+
}
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### 5.2 Research Agent
|
|
211
|
+
|
|
212
|
+
**System Prompt**:
|
|
213
|
+
```
|
|
214
|
+
You are a research specialist agent. Your capabilities include:
|
|
215
|
+
- Searching the web for current information
|
|
216
|
+
- Retrieving relevant documents from the knowledge base
|
|
217
|
+
- Summarizing and extracting key information
|
|
218
|
+
|
|
219
|
+
When researching:
|
|
220
|
+
1. Use web_search for current/recent information
|
|
221
|
+
2. Use document_search for internal knowledge
|
|
222
|
+
3. Synthesize findings into structured data
|
|
223
|
+
|
|
224
|
+
Always cite your sources and indicate confidence level.
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
**Plugins**:
|
|
228
|
+
- `web_search(query, max_results)`
|
|
229
|
+
- `document_search(query, limit)`
|
|
230
|
+
|
|
231
|
+
### 5.3 Analysis Agent
|
|
232
|
+
|
|
233
|
+
**System Prompt**:
|
|
234
|
+
```
|
|
235
|
+
You are an analysis specialist agent. Your capabilities include:
|
|
236
|
+
- Analyzing data and identifying patterns
|
|
237
|
+
- Comparing options and alternatives
|
|
238
|
+
- Generating insights and recommendations
|
|
239
|
+
|
|
240
|
+
When analyzing:
|
|
241
|
+
1. Structure the data clearly
|
|
242
|
+
2. Apply appropriate analytical frameworks
|
|
243
|
+
3. Provide evidence-based conclusions
|
|
244
|
+
|
|
245
|
+
Be objective and highlight trade-offs.
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
**Plugins**:
|
|
249
|
+
- `calculate(expression)`
|
|
250
|
+
- `compare(items, criteria)`
|
|
251
|
+
|
|
252
|
+
### 5.4 Writing Agent
|
|
253
|
+
|
|
254
|
+
**System Prompt**:
|
|
255
|
+
```
|
|
256
|
+
You are a writing specialist agent. Your capabilities include:
|
|
257
|
+
- Generating clear, well-structured text
|
|
258
|
+
- Creating summaries and reports
|
|
259
|
+
- Adapting tone and style for the audience
|
|
260
|
+
|
|
261
|
+
When writing:
|
|
262
|
+
1. Start with a clear structure
|
|
263
|
+
2. Use appropriate formatting
|
|
264
|
+
3. Be concise but comprehensive
|
|
265
|
+
|
|
266
|
+
Match the requested format (report, summary, email, etc.).
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
## 6. Plugins em Detalhe
|
|
270
|
+
|
|
271
|
+
### 6.1 WebSearchPlugin
|
|
272
|
+
|
|
273
|
+
```csharp
|
|
274
|
+
public class WebSearchPlugin
|
|
275
|
+
{
|
|
276
|
+
private readonly BingSearchService _searchService;
|
|
277
|
+
|
|
278
|
+
[KernelFunction("web_search")]
|
|
279
|
+
[Description("Search the web for information on a topic")]
|
|
280
|
+
public async Task<SearchResults> SearchAsync(
|
|
281
|
+
[Description("The search query")] string query,
|
|
282
|
+
[Description("Maximum results to return")] int maxResults = 5)
|
|
283
|
+
{
|
|
284
|
+
var results = await _searchService.SearchAsync(query, maxResults);
|
|
285
|
+
return new SearchResults
|
|
286
|
+
{
|
|
287
|
+
Query = query,
|
|
288
|
+
Items = results.Select(r => new SearchResult
|
|
289
|
+
{
|
|
290
|
+
Title = r.Title,
|
|
291
|
+
Snippet = r.Snippet,
|
|
292
|
+
Url = r.Url
|
|
293
|
+
}).ToList()
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
### 6.2 DocumentPlugin
|
|
300
|
+
|
|
301
|
+
```csharp
|
|
302
|
+
public class DocumentPlugin
|
|
303
|
+
{
|
|
304
|
+
private readonly IVectorStore _vectorStore;
|
|
305
|
+
private readonly IEmbeddingService _embeddingService;
|
|
306
|
+
|
|
307
|
+
[KernelFunction("document_search")]
|
|
308
|
+
[Description("Search internal documents using semantic similarity")]
|
|
309
|
+
public async Task<IEnumerable<DocumentResult>> SearchDocumentsAsync(
|
|
310
|
+
[Description("The search query")] string query,
|
|
311
|
+
[Description("Maximum documents")] int limit = 3)
|
|
312
|
+
{
|
|
313
|
+
var embedding = await _embeddingService.GetEmbeddingAsync(query);
|
|
314
|
+
var documents = await _vectorStore.SearchAsync(embedding, limit);
|
|
315
|
+
|
|
316
|
+
return documents.Select(d => new DocumentResult
|
|
317
|
+
{
|
|
318
|
+
Title = d.Title,
|
|
319
|
+
Content = d.Content,
|
|
320
|
+
Score = d.Score,
|
|
321
|
+
Source = d.Source
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
## 7. APIs
|
|
328
|
+
|
|
329
|
+
### 7.1 Chat Endpoint
|
|
330
|
+
|
|
331
|
+
```
|
|
332
|
+
POST /api/chat
|
|
333
|
+
Content-Type: application/json
|
|
334
|
+
|
|
335
|
+
{
|
|
336
|
+
"message": "Compare AWS, Azure and GCP for a SaaS startup",
|
|
337
|
+
"sessionId": "optional-session-id",
|
|
338
|
+
"stream": true
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
Response (streaming):
|
|
342
|
+
data: {"type": "thinking", "content": "Analyzing request..."}
|
|
343
|
+
data: {"type": "agent", "agent": "research", "status": "started"}
|
|
344
|
+
data: {"type": "agent", "agent": "research", "status": "completed"}
|
|
345
|
+
data: {"type": "content", "content": "Based on my analysis..."}
|
|
346
|
+
data: {"type": "done", "usage": {"tokens": 1234}}
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
### 7.2 Agents Endpoint
|
|
350
|
+
|
|
351
|
+
```
|
|
352
|
+
GET /api/agents
|
|
353
|
+
|
|
354
|
+
Response:
|
|
355
|
+
{
|
|
356
|
+
"agents": [
|
|
357
|
+
{
|
|
358
|
+
"id": "orchestrator",
|
|
359
|
+
"name": "Orchestrator Agent",
|
|
360
|
+
"description": "Coordinates other agents",
|
|
361
|
+
"capabilities": ["task_decomposition", "routing", "aggregation"]
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
"id": "research",
|
|
365
|
+
"name": "Research Agent",
|
|
366
|
+
"description": "Information gathering specialist",
|
|
367
|
+
"capabilities": ["web_search", "document_retrieval", "summarization"]
|
|
368
|
+
}
|
|
369
|
+
]
|
|
370
|
+
}
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
## 8. Modelo de Dados
|
|
374
|
+
|
|
375
|
+
### 8.1 Conversation
|
|
376
|
+
|
|
377
|
+
```csharp
|
|
378
|
+
public class Conversation
|
|
379
|
+
{
|
|
380
|
+
public string Id { get; set; }
|
|
381
|
+
public string UserId { get; set; }
|
|
382
|
+
public List<Message> Messages { get; set; }
|
|
383
|
+
public DateTime CreatedAt { get; set; }
|
|
384
|
+
public DateTime UpdatedAt { get; set; }
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
public class Message
|
|
388
|
+
{
|
|
389
|
+
public string Id { get; set; }
|
|
390
|
+
public MessageRole Role { get; set; } // User, Assistant, System
|
|
391
|
+
public string Content { get; set; }
|
|
392
|
+
public AgentMetadata? AgentMetadata { get; set; }
|
|
393
|
+
public TokenUsage? Usage { get; set; }
|
|
394
|
+
public DateTime Timestamp { get; set; }
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
public class AgentMetadata
|
|
398
|
+
{
|
|
399
|
+
public string AgentId { get; set; }
|
|
400
|
+
public List<string> PluginsUsed { get; set; }
|
|
401
|
+
public Dictionary<string, object> Metadata { get; set; }
|
|
402
|
+
}
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
### 8.2 Agent Task
|
|
406
|
+
|
|
407
|
+
```csharp
|
|
408
|
+
public class AgentTask
|
|
409
|
+
{
|
|
410
|
+
public string Id { get; set; }
|
|
411
|
+
public string AgentId { get; set; }
|
|
412
|
+
public string Description { get; set; }
|
|
413
|
+
public TaskStatus Status { get; set; }
|
|
414
|
+
public string? Input { get; set; }
|
|
415
|
+
public string? Output { get; set; }
|
|
416
|
+
public string? Error { get; set; }
|
|
417
|
+
public TimeSpan Duration { get; set; }
|
|
418
|
+
public TokenUsage Usage { get; set; }
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
public enum TaskStatus
|
|
422
|
+
{
|
|
423
|
+
Pending,
|
|
424
|
+
Running,
|
|
425
|
+
Completed,
|
|
426
|
+
Failed
|
|
427
|
+
}
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
## 9. Configuração
|
|
431
|
+
|
|
432
|
+
### 9.1 Azure OpenAI
|
|
433
|
+
|
|
434
|
+
```json
|
|
435
|
+
{
|
|
436
|
+
"AzureOpenAI": {
|
|
437
|
+
"Endpoint": "https://{resource}.openai.azure.com/",
|
|
438
|
+
"ApiKey": "{key}",
|
|
439
|
+
"Deployments": {
|
|
440
|
+
"Chat": "gpt-4",
|
|
441
|
+
"ChatFast": "gpt-35-turbo",
|
|
442
|
+
"Embedding": "text-embedding-ada-002"
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
### 9.2 Agent Configuration
|
|
449
|
+
|
|
450
|
+
```json
|
|
451
|
+
{
|
|
452
|
+
"Agents": {
|
|
453
|
+
"Orchestrator": {
|
|
454
|
+
"Model": "gpt-4",
|
|
455
|
+
"MaxTokens": 2000,
|
|
456
|
+
"Temperature": 0.3
|
|
457
|
+
},
|
|
458
|
+
"Research": {
|
|
459
|
+
"Model": "gpt-35-turbo",
|
|
460
|
+
"MaxTokens": 1500,
|
|
461
|
+
"Temperature": 0.5
|
|
462
|
+
},
|
|
463
|
+
"Analysis": {
|
|
464
|
+
"Model": "gpt-35-turbo",
|
|
465
|
+
"MaxTokens": 1500,
|
|
466
|
+
"Temperature": 0.3
|
|
467
|
+
},
|
|
468
|
+
"Writing": {
|
|
469
|
+
"Model": "gpt-4",
|
|
470
|
+
"MaxTokens": 3000,
|
|
471
|
+
"Temperature": 0.7
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
```
|
|
476
|
+
|
|
477
|
+
---
|
|
478
|
+
|
|
479
|
+
*MORPH-SPEC by Polymorphism Tech*
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
# Multi-Agent System - Tasks
|
|
2
|
+
|
|
3
|
+
## Fase 1: Setup do Projeto
|
|
4
|
+
|
|
5
|
+
| ID | Task | Dependências | Estimativa |
|
|
6
|
+
|----|------|--------------|------------|
|
|
7
|
+
| T001 | Criar solution e projetos | - | S |
|
|
8
|
+
| T002 | Configurar packages (Semantic Kernel, etc) | T001 | S |
|
|
9
|
+
| T003 | Configurar appsettings.json | T001 | S |
|
|
10
|
+
| T004 | Criar estrutura de pastas | T001 | S |
|
|
11
|
+
|
|
12
|
+
## Fase 2: Infrastructure Layer
|
|
13
|
+
|
|
14
|
+
| ID | Task | Dependências | Estimativa |
|
|
15
|
+
|----|------|--------------|------------|
|
|
16
|
+
| T005 | Implementar AzureOpenAIService | T002 | M |
|
|
17
|
+
| T006 | Implementar EmbeddingService | T005 | M |
|
|
18
|
+
| T007 | Implementar InMemoryVectorStore | T006 | M |
|
|
19
|
+
| T008 | Implementar ConversationStore (in-memory) | T002 | M |
|
|
20
|
+
|
|
21
|
+
## Fase 3: Plugin Layer
|
|
22
|
+
|
|
23
|
+
| ID | Task | Dependências | Estimativa |
|
|
24
|
+
|----|------|--------------|------------|
|
|
25
|
+
| T009 | Criar WebSearchPlugin | T005 | M |
|
|
26
|
+
| T010 | Configurar Bing Search API | T009 | S |
|
|
27
|
+
| T011 | Criar DocumentPlugin | T007 | M |
|
|
28
|
+
| T012 | Criar CalculatorPlugin | T005 | S |
|
|
29
|
+
| T013 | Criar DateTimePlugin | T005 | S |
|
|
30
|
+
|
|
31
|
+
## Fase 4: Agent Layer - Base
|
|
32
|
+
|
|
33
|
+
| ID | Task | Dependências | Estimativa |
|
|
34
|
+
|----|------|--------------|------------|
|
|
35
|
+
| T014 | Criar BaseAgent abstract class | T005 | M |
|
|
36
|
+
| T015 | Implementar AgentFactory | T014 | M |
|
|
37
|
+
| T016 | Criar AgentContext (DI scope) | T015 | M |
|
|
38
|
+
|
|
39
|
+
## Fase 5: Agent Layer - Agents
|
|
40
|
+
|
|
41
|
+
| ID | Task | Dependências | Estimativa |
|
|
42
|
+
|----|------|--------------|------------|
|
|
43
|
+
| T017 | Implementar ResearchAgent | T014, T009, T011 | L |
|
|
44
|
+
| T018 | Implementar AnalysisAgent | T014, T012 | M |
|
|
45
|
+
| T019 | Implementar WritingAgent | T014 | M |
|
|
46
|
+
| T020 | Implementar OrchestratorAgent | T017-T019 | L |
|
|
47
|
+
|
|
48
|
+
## Fase 6: Orchestration Layer
|
|
49
|
+
|
|
50
|
+
| ID | Task | Dependências | Estimativa |
|
|
51
|
+
|----|------|--------------|------------|
|
|
52
|
+
| T021 | Implementar TaskDecomposer | T020 | M |
|
|
53
|
+
| T022 | Implementar AgentRouter | T015, T021 | M |
|
|
54
|
+
| T023 | Implementar ResultAggregator | T020 | M |
|
|
55
|
+
| T024 | Implementar Orchestrator | T021-T023 | L |
|
|
56
|
+
|
|
57
|
+
## Fase 7: Memory Layer
|
|
58
|
+
|
|
59
|
+
| ID | Task | Dependências | Estimativa |
|
|
60
|
+
|----|------|--------------|------------|
|
|
61
|
+
| T025 | Implementar ConversationMemory | T008 | M |
|
|
62
|
+
| T026 | Implementar SemanticMemory | T007 | M |
|
|
63
|
+
| T027 | Integrar memória com Orchestrator | T024-T026 | M |
|
|
64
|
+
|
|
65
|
+
## Fase 8: API Layer
|
|
66
|
+
|
|
67
|
+
| ID | Task | Dependências | Estimativa |
|
|
68
|
+
|----|------|--------------|------------|
|
|
69
|
+
| T028 | Configurar Program.cs base | T001 | M |
|
|
70
|
+
| T029 | Criar ChatEndpoints | T024, T027 | M |
|
|
71
|
+
| T030 | Implementar streaming (SSE) | T029 | M |
|
|
72
|
+
| T031 | Criar AgentEndpoints | T015 | S |
|
|
73
|
+
| T032 | Criar HealthEndpoints | T028 | S |
|
|
74
|
+
| T033 | Configurar API Key auth | T028 | S |
|
|
75
|
+
|
|
76
|
+
## Fase 9: Error Handling & Resilience
|
|
77
|
+
|
|
78
|
+
| ID | Task | Dependências | Estimativa |
|
|
79
|
+
|----|------|--------------|------------|
|
|
80
|
+
| T034 | Implementar retry policies | T024 | M |
|
|
81
|
+
| T035 | Implementar circuit breaker | T034 | M |
|
|
82
|
+
| T036 | Implementar timeout handling | T024 | M |
|
|
83
|
+
| T037 | Criar error logging middleware | T028 | S |
|
|
84
|
+
|
|
85
|
+
## Fase 10: Monitoring & Metrics
|
|
86
|
+
|
|
87
|
+
| ID | Task | Dependências | Estimativa |
|
|
88
|
+
|----|------|--------------|------------|
|
|
89
|
+
| T038 | Implementar token tracking | T005 | M |
|
|
90
|
+
| T039 | Implementar usage metrics | T038 | M |
|
|
91
|
+
| T040 | Criar cost estimation | T039 | S |
|
|
92
|
+
| T041 | Integrar com App Insights | T028 | M |
|
|
93
|
+
|
|
94
|
+
## Fase 11: Infrastructure (IaC)
|
|
95
|
+
|
|
96
|
+
| ID | Task | Dependências | Estimativa |
|
|
97
|
+
|----|------|--------------|------------|
|
|
98
|
+
| T042 | Criar main.bicep | - | M |
|
|
99
|
+
| T043 | Configurar Container App | T042 | M |
|
|
100
|
+
| T044 | Configurar Azure OpenAI (manual) | - | M |
|
|
101
|
+
| T045 | Configurar Key Vault | T042 | S |
|
|
102
|
+
| T046 | Configurar App Insights | T042 | S |
|
|
103
|
+
|
|
104
|
+
## Fase 12: Testes
|
|
105
|
+
|
|
106
|
+
| ID | Task | Dependências | Estimativa |
|
|
107
|
+
|----|------|--------------|------------|
|
|
108
|
+
| T047 | Criar testes unitários - Plugins | T009-T013 | M |
|
|
109
|
+
| T048 | Criar testes unitários - Agents | T017-T020 | M |
|
|
110
|
+
| T049 | Criar testes integração - Orchestrator | T024 | L |
|
|
111
|
+
| T050 | Criar testes E2E - API | T029-T032 | L |
|
|
112
|
+
|
|
113
|
+
## Fase 13: Documentação
|
|
114
|
+
|
|
115
|
+
| ID | Task | Dependências | Estimativa |
|
|
116
|
+
|----|------|--------------|------------|
|
|
117
|
+
| T051 | Documentar APIs (OpenAPI) | T029-T032 | M |
|
|
118
|
+
| T052 | Criar guia de extensibilidade | T014-T020 | M |
|
|
119
|
+
| T053 | Criar exemplos de uso | T029 | M |
|
|
120
|
+
|
|
121
|
+
## Checkpoints
|
|
122
|
+
|
|
123
|
+
| Checkpoint | Após Tasks | Validação |
|
|
124
|
+
|------------|------------|-----------|
|
|
125
|
+
| CP1 | T004 | Projeto compila |
|
|
126
|
+
| CP2 | T008 | Infrastructure funcionando |
|
|
127
|
+
| CP3 | T013 | Plugins funcionando |
|
|
128
|
+
| CP4 | T020 | Agents funcionando |
|
|
129
|
+
| CP5 | T024 | Orchestrator funcionando |
|
|
130
|
+
| CP6 | T027 | Memória integrada |
|
|
131
|
+
| CP7 | T033 | API completa |
|
|
132
|
+
| CP8 | T037 | Error handling completo |
|
|
133
|
+
| CP9 | T041 | Monitoring ativo |
|
|
134
|
+
| CP10 | T046 | IaC pronto |
|
|
135
|
+
| CP11 | T053 | Projeto completo |
|
|
136
|
+
|
|
137
|
+
## Legenda
|
|
138
|
+
|
|
139
|
+
- **S** = Small (< 1h)
|
|
140
|
+
- **M** = Medium (1-3h)
|
|
141
|
+
- **L** = Large (3-8h)
|
|
142
|
+
|
|
143
|
+
## Dependências Críticas
|
|
144
|
+
|
|
145
|
+
```
|
|
146
|
+
Azure OpenAI Setup (T044) - BLOQUEANTE para todos os testes reais
|
|
147
|
+
|
|
148
|
+
T005 (LLM Service) → T014 (BaseAgent) → T017-T020 (Agents) → T024 (Orchestrator)
|
|
149
|
+
↓
|
|
150
|
+
T006 (Embedding) → T007 (VectorStore) → T011 (DocumentPlugin)
|
|
151
|
+
↓
|
|
152
|
+
T009 (WebSearch) → T017 (ResearchAgent)
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## Ordem de Execução Recomendada
|
|
156
|
+
|
|
157
|
+
### Fase Paralela 1 (Setup)
|
|
158
|
+
- T001-T004 (Setup)
|
|
159
|
+
- T042 (IaC base)
|
|
160
|
+
|
|
161
|
+
### Fase Paralela 2 (Foundation)
|
|
162
|
+
- T005-T008 (Infrastructure)
|
|
163
|
+
- T044 (Azure OpenAI manual)
|
|
164
|
+
|
|
165
|
+
### Fase Paralela 3 (Building Blocks)
|
|
166
|
+
- T009-T013 (Plugins)
|
|
167
|
+
- T014-T016 (Agent base)
|
|
168
|
+
|
|
169
|
+
### Fase Sequencial 4 (Core)
|
|
170
|
+
- T017-T020 (Agents)
|
|
171
|
+
- T021-T024 (Orchestration)
|
|
172
|
+
- T025-T027 (Memory)
|
|
173
|
+
|
|
174
|
+
### Fase Paralela 5 (API + Supporting)
|
|
175
|
+
- T028-T033 (API)
|
|
176
|
+
- T034-T037 (Resilience)
|
|
177
|
+
- T038-T041 (Monitoring)
|
|
178
|
+
|
|
179
|
+
### Fase Final
|
|
180
|
+
- T043-T046 (IaC complete)
|
|
181
|
+
- T047-T053 (Tests + Docs)
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
*MORPH-SPEC by Polymorphism Tech*
|
|
@@ -0,0 +1,25 @@
|
|
|
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*
|