@polymorphism-tech/morph-spec 3.0.0 → 3.0.1

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.
Files changed (160) hide show
  1. package/CLAUDE.md +75 -371
  2. package/LICENSE +72 -72
  3. package/bin/detect-agents.js +225 -225
  4. package/bin/render-template.js +302 -302
  5. package/bin/semantic-detect-agents.js +246 -246
  6. package/bin/validate-agents-skills.js +251 -251
  7. package/bin/validate-agents.js +69 -69
  8. package/bin/validate-phase.js +263 -263
  9. package/content/.azure/README.md +293 -293
  10. package/content/.azure/docs/azure-devops-setup.md +454 -454
  11. package/content/.azure/docs/branch-strategy.md +398 -398
  12. package/content/.azure/docs/local-development.md +515 -515
  13. package/content/.azure/pipelines/pipeline-variables.yml +34 -34
  14. package/content/.azure/pipelines/prod-pipeline.yml +319 -319
  15. package/content/.azure/pipelines/staging-pipeline.yml +234 -234
  16. package/content/.azure/pipelines/templates/build-dotnet.yml +75 -75
  17. package/content/.azure/pipelines/templates/deploy-app-service.yml +94 -94
  18. package/content/.azure/pipelines/templates/deploy-container-app.yml +120 -120
  19. package/content/.azure/pipelines/templates/infra-deploy.yml +90 -90
  20. package/content/.claude/commands/morph-archive.md +79 -79
  21. package/content/.claude/commands/morph-deploy.md +529 -529
  22. package/content/.claude/commands/morph-infra.md +209 -209
  23. package/content/.claude/commands/morph-preflight.md +227 -227
  24. package/content/.claude/commands/morph-troubleshoot.md +122 -122
  25. package/content/.claude/settings.local.json +15 -15
  26. package/content/.claude/skills/{specialists → level-2-domains/architecture}/prompt-engineer.md +189 -189
  27. package/content/.claude/skills/{specialists → level-2-domains/architecture}/seo-growth-hacker.md +320 -320
  28. package/content/.claude/skills/{infra → level-2-domains/infrastructure}/azure-deploy-specialist.md +699 -699
  29. package/content/.morph/.morphversion +5 -5
  30. package/content/.morph/archive/.gitkeep +25 -25
  31. package/content/.morph/config/agents.json +7 -5
  32. package/content/.morph/docs/STORY-DRIVEN-DEVELOPMENT.md +392 -392
  33. package/content/.morph/examples/api-nextjs/README.md +241 -241
  34. package/content/.morph/examples/api-nextjs/contracts.ts +307 -307
  35. package/content/.morph/examples/api-nextjs/spec.md +399 -399
  36. package/content/.morph/examples/api-nextjs/tasks.md +168 -168
  37. package/content/.morph/examples/micro-saas/README.md +125 -125
  38. package/content/.morph/examples/micro-saas/contracts.cs +358 -358
  39. package/content/.morph/examples/micro-saas/decisions.md +246 -246
  40. package/content/.morph/examples/micro-saas/spec.md +236 -236
  41. package/content/.morph/examples/micro-saas/tasks.md +150 -150
  42. package/content/.morph/examples/multi-agent/README.md +309 -309
  43. package/content/.morph/examples/multi-agent/contracts.cs +433 -433
  44. package/content/.morph/examples/multi-agent/spec.md +479 -479
  45. package/content/.morph/examples/multi-agent/tasks.md +185 -185
  46. package/content/.morph/examples/state-v3.json +188 -188
  47. package/content/.morph/features/.gitkeep +25 -25
  48. package/content/.morph/hooks/pre-commit-all.sh +48 -48
  49. package/content/.morph/hooks/pre-commit-specs.sh +49 -49
  50. package/content/.morph/hooks/pre-commit-tests.sh +60 -60
  51. package/content/.morph/project.md +160 -160
  52. package/content/.morph/schemas/agent.schema.json +296 -296
  53. package/content/.morph/specs/.gitkeep +20 -20
  54. package/content/.morph/standards/coding.md +377 -377
  55. package/content/.morph/standards/fluent-ui-setup.md +590 -590
  56. package/content/.morph/standards/migration-guide.md +514 -514
  57. package/content/.morph/standards/passkeys-auth.md +423 -423
  58. package/content/.morph/standards/vector-search-rag.md +536 -536
  59. package/content/.morph/state.json +17 -17
  60. package/content/.morph/templates/FluentDesignTheme.cs +149 -149
  61. package/content/.morph/templates/MudTheme.cs +281 -281
  62. package/content/.morph/templates/component.razor +239 -239
  63. package/content/.morph/templates/contracts.cs +217 -217
  64. package/content/.morph/templates/design-system.css +226 -226
  65. package/content/.morph/templates/infra/.dockerignore.example +89 -89
  66. package/content/.morph/templates/infra/Dockerfile.example +82 -82
  67. package/content/.morph/templates/infra/README.md +286 -286
  68. package/content/.morph/templates/infra/app-insights.bicep +63 -63
  69. package/content/.morph/templates/infra/app-service.bicep +164 -164
  70. package/content/.morph/templates/infra/azure-pipelines-deploy.yml +480 -480
  71. package/content/.morph/templates/infra/container-app-env.bicep +49 -49
  72. package/content/.morph/templates/infra/container-app.bicep +156 -156
  73. package/content/.morph/templates/infra/deploy-checklist.md +426 -426
  74. package/content/.morph/templates/infra/deploy.ps1 +229 -229
  75. package/content/.morph/templates/infra/deploy.sh +208 -208
  76. package/content/.morph/templates/infra/key-vault.bicep +91 -91
  77. package/content/.morph/templates/infra/main.bicep +189 -189
  78. package/content/.morph/templates/infra/parameters.dev.json +29 -29
  79. package/content/.morph/templates/infra/parameters.prod.json +29 -29
  80. package/content/.morph/templates/infra/parameters.staging.json +29 -29
  81. package/content/.morph/templates/infra/sql-database.bicep +103 -103
  82. package/content/.morph/templates/infra/storage.bicep +106 -106
  83. package/content/.morph/templates/integrations/asaas-client.cs +387 -387
  84. package/content/.morph/templates/integrations/asaas-webhook.cs +351 -351
  85. package/content/.morph/templates/integrations/azure-identity-config.cs +288 -288
  86. package/content/.morph/templates/integrations/clerk-config.cs +258 -258
  87. package/content/.morph/templates/job.cs +171 -171
  88. package/content/.morph/templates/migration.cs +83 -83
  89. package/content/.morph/templates/repository.cs +141 -141
  90. package/content/.morph/templates/saas/subscription.cs +347 -347
  91. package/content/.morph/templates/saas/tenant.cs +338 -338
  92. package/content/.morph/templates/service.cs +139 -139
  93. package/content/.morph/templates/sprint-status.yaml +68 -68
  94. package/content/.morph/templates/story.md +143 -143
  95. package/content/.morph/templates/test.cs +239 -239
  96. package/content/.morph/templates/ui-design-system.md +286 -286
  97. package/content/.morph/templates/ui-flows.md +336 -336
  98. package/content/.morph/templates/ui-mockups.md +133 -133
  99. package/content/.morph/test-infra/example.bicep +59 -59
  100. package/content/README.md +79 -79
  101. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +977 -977
  102. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +1048 -1048
  103. package/docs/api/scripts/collapse.js +38 -38
  104. package/docs/api/scripts/commonNav.js +28 -28
  105. package/docs/api/scripts/linenumber.js +25 -25
  106. package/docs/api/scripts/nav.js +12 -12
  107. package/docs/api/scripts/polyfill.js +3 -3
  108. package/docs/api/scripts/prettify/Apache-License-2.0.txt +202 -202
  109. package/docs/api/scripts/prettify/lang-css.js +2 -2
  110. package/docs/api/scripts/prettify/prettify.js +28 -28
  111. package/docs/api/scripts/search.js +98 -98
  112. package/docs/api/styles/jsdoc.css +776 -776
  113. package/docs/api/styles/prettify.css +80 -80
  114. package/docs/examples.md +328 -328
  115. package/docs/templates.md +418 -418
  116. package/package.json +1 -2
  117. package/scripts/postinstall.js +132 -132
  118. package/scripts/reorganize-skills.cjs +175 -0
  119. package/scripts/validate-agents-structure.cjs +52 -0
  120. package/scripts/validate-skills.cjs +180 -0
  121. package/src/commands/analyze-blazor-concurrency.js +193 -193
  122. package/src/commands/create-story.js +351 -351
  123. package/src/commands/deploy.js +780 -780
  124. package/src/commands/detect-agents.js +9 -0
  125. package/src/commands/detect.js +104 -104
  126. package/src/commands/generate.js +149 -149
  127. package/src/commands/lint-fluent.js +352 -352
  128. package/src/commands/rollback-phase.js +185 -185
  129. package/src/commands/session-summary.js +291 -291
  130. package/src/commands/shard-spec.js +224 -224
  131. package/src/commands/sprint-status.js +250 -250
  132. package/src/commands/state.js +334 -333
  133. package/src/commands/sync.js +167 -167
  134. package/src/commands/troubleshoot.js +222 -222
  135. package/src/commands/update.js +13 -1
  136. package/src/commands/validate-blazor-state.js +210 -210
  137. package/src/commands/validate-blazor.js +156 -156
  138. package/src/commands/validate-css.js +84 -84
  139. package/src/commands/validate-phase.js +221 -221
  140. package/src/lib/blazor-concurrency-analyzer.js +288 -288
  141. package/src/lib/blazor-state-validator.js +291 -291
  142. package/src/lib/blazor-validator.js +374 -374
  143. package/src/lib/css-validator.js +352 -352
  144. package/src/lib/design-system-generator.js +298 -298
  145. package/{detectors → src/lib/detectors}/config-detector.js +223 -223
  146. package/{detectors → src/lib/detectors}/conversation-analyzer.js +163 -163
  147. package/{detectors → src/lib/detectors}/index.js +84 -84
  148. package/{detectors → src/lib/detectors}/standards-generator.js +275 -275
  149. package/src/lib/learning-system.js +520 -520
  150. package/src/lib/mockup-generator.js +366 -366
  151. package/src/lib/state-manager.js +21 -4
  152. package/src/lib/troubleshoot-grep.js +194 -194
  153. package/src/lib/troubleshoot-index.js +144 -144
  154. package/src/lib/ui-detector.js +350 -350
  155. package/src/lib/validators/architecture-validator.js +387 -387
  156. package/src/lib/validators/package-validator.js +360 -360
  157. package/src/lib/validators/ui-contrast-validator.js +422 -422
  158. package/src/utils/logger.js +32 -32
  159. package/src/utils/version-checker.js +175 -175
  160. /package/{detectors → src/lib/detectors}/structure-detector.js +0 -0
@@ -1,479 +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*
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*