@polymorphism-tech/morph-spec 2.4.0 → 3.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.
Files changed (218) hide show
  1. package/CLAUDE.md +158 -26
  2. package/LICENSE +72 -72
  3. package/bin/detect-agents.js +225 -225
  4. package/bin/morph-spec.js +8 -0
  5. package/bin/render-template.js +302 -302
  6. package/bin/semantic-detect-agents.js +246 -246
  7. package/bin/validate-agents-skills.js +251 -251
  8. package/bin/validate-agents.js +69 -69
  9. package/bin/validate-phase.js +263 -263
  10. package/content/.azure/README.md +293 -293
  11. package/content/.azure/docs/azure-devops-setup.md +454 -454
  12. package/content/.azure/docs/branch-strategy.md +398 -398
  13. package/content/.azure/docs/local-development.md +515 -515
  14. package/content/.azure/pipelines/pipeline-variables.yml +34 -34
  15. package/content/.azure/pipelines/prod-pipeline.yml +319 -319
  16. package/content/.azure/pipelines/staging-pipeline.yml +234 -234
  17. package/content/.azure/pipelines/templates/build-dotnet.yml +75 -75
  18. package/content/.azure/pipelines/templates/deploy-app-service.yml +94 -94
  19. package/content/.azure/pipelines/templates/deploy-container-app.yml +120 -120
  20. package/content/.azure/pipelines/templates/infra-deploy.yml +90 -90
  21. package/content/.claude/commands/morph-archive.md +79 -79
  22. package/content/.claude/commands/morph-deploy.md +529 -0
  23. package/content/.claude/commands/morph-infra.md +209 -209
  24. package/content/.claude/commands/morph-preflight.md +227 -227
  25. package/content/.claude/commands/morph-troubleshoot.md +122 -122
  26. package/content/.claude/settings.local.json +15 -15
  27. package/content/.claude/skills/infra/azure-deploy-specialist.md +699 -0
  28. package/content/.claude/skills/level-0-meta/README.md +7 -0
  29. package/content/.claude/skills/{checklists → level-0-meta}/morph-checklist.md +117 -117
  30. package/content/.claude/skills/level-1-workflows/README.md +7 -0
  31. package/content/.claude/skills/{workflows → level-1-workflows}/morph-replicate.md +213 -213
  32. package/content/.claude/skills/{workflows → level-1-workflows}/phase-clarify.md +131 -131
  33. package/content/.claude/skills/{workflows → level-1-workflows}/phase-design.md +213 -205
  34. package/content/.claude/skills/{workflows → level-1-workflows}/phase-setup.md +106 -92
  35. package/content/.claude/skills/{workflows → level-1-workflows}/phase-tasks.md +164 -164
  36. package/content/.claude/skills/{workflows → level-1-workflows}/phase-uiux.md +169 -138
  37. package/content/.claude/skills/level-2-domains/README.md +14 -0
  38. package/content/.claude/skills/{specialists → level-2-domains/quality}/testing-specialist.md +126 -126
  39. package/content/.claude/skills/level-3-technologies/README.md +7 -0
  40. package/content/.claude/skills/level-4-patterns/README.md +7 -0
  41. package/content/.claude/skills/specialists/prompt-engineer.md +189 -0
  42. package/content/.claude/skills/specialists/seo-growth-hacker.md +320 -0
  43. package/content/.morph/.morphversion +5 -5
  44. package/content/.morph/archive/.gitkeep +25 -25
  45. package/content/.morph/config/agents.json +742 -358
  46. package/content/.morph/config/config.template.json +33 -0
  47. package/content/.morph/docs/STORY-DRIVEN-DEVELOPMENT.md +392 -392
  48. package/content/.morph/docs/workflows/enforcement-pipeline.md +668 -0
  49. package/content/.morph/examples/api-nextjs/README.md +241 -241
  50. package/content/.morph/examples/api-nextjs/contracts.ts +307 -307
  51. package/content/.morph/examples/api-nextjs/spec.md +399 -399
  52. package/content/.morph/examples/api-nextjs/tasks.md +168 -168
  53. package/content/.morph/examples/micro-saas/README.md +125 -125
  54. package/content/.morph/examples/micro-saas/contracts.cs +358 -358
  55. package/content/.morph/examples/micro-saas/decisions.md +246 -246
  56. package/content/.morph/examples/micro-saas/spec.md +236 -236
  57. package/content/.morph/examples/micro-saas/tasks.md +150 -150
  58. package/content/.morph/examples/multi-agent/README.md +309 -309
  59. package/content/.morph/examples/multi-agent/contracts.cs +433 -433
  60. package/content/.morph/examples/multi-agent/spec.md +479 -479
  61. package/content/.morph/examples/multi-agent/tasks.md +185 -185
  62. package/content/.morph/examples/scheduled-reports/decisions.md +158 -158
  63. package/content/.morph/examples/scheduled-reports/proposal.md +95 -95
  64. package/content/.morph/examples/scheduled-reports/spec.md +267 -267
  65. package/content/.morph/examples/state-v3.json +188 -188
  66. package/content/.morph/features/.gitkeep +25 -25
  67. package/content/.morph/hooks/README.md +158 -0
  68. package/content/.morph/hooks/pre-commit-all.sh +48 -48
  69. package/content/.morph/hooks/pre-commit-specs.sh +49 -49
  70. package/content/.morph/hooks/pre-commit-tests.sh +60 -60
  71. package/content/.morph/hooks/task-completed.js +73 -0
  72. package/content/.morph/hooks/teammate-idle.js +68 -0
  73. package/content/.morph/project.md +160 -160
  74. package/content/.morph/schemas/agent.schema.json +296 -296
  75. package/content/.morph/schemas/tasks.schema.json +220 -220
  76. package/content/.morph/specs/.gitkeep +20 -20
  77. package/content/.morph/standards/agent-teams-workflow.md +474 -0
  78. package/content/.morph/standards/coding.md +377 -377
  79. package/content/.morph/standards/fluent-ui-setup.md +590 -590
  80. package/content/.morph/standards/migration-guide.md +514 -514
  81. package/content/.morph/standards/passkeys-auth.md +423 -423
  82. package/content/.morph/standards/vector-search-rag.md +536 -536
  83. package/content/.morph/state.json +17 -17
  84. package/content/.morph/templates/CONTEXT-FEATURE.md +276 -0
  85. package/content/.morph/templates/CONTEXT.md +170 -0
  86. package/content/.morph/templates/FluentDesignTheme.cs +149 -149
  87. package/content/.morph/templates/MudTheme.cs +281 -281
  88. package/content/.morph/templates/clarify-questions.md +159 -159
  89. package/content/.morph/templates/component.razor +239 -239
  90. package/content/.morph/templates/contracts/Commands.cs +74 -74
  91. package/content/.morph/templates/contracts/Entities.cs +25 -25
  92. package/content/.morph/templates/contracts/Queries.cs +74 -74
  93. package/content/.morph/templates/contracts/README.md +74 -74
  94. package/content/.morph/templates/contracts.cs +217 -217
  95. package/content/.morph/templates/design-system.css +226 -226
  96. package/content/.morph/templates/infra/.dockerignore.example +89 -89
  97. package/content/.morph/templates/infra/Dockerfile.example +82 -82
  98. package/content/.morph/templates/infra/README.md +286 -286
  99. package/content/.morph/templates/infra/app-insights.bicep +63 -63
  100. package/content/.morph/templates/infra/app-service.bicep +164 -164
  101. package/content/.morph/templates/infra/azure-pipelines-deploy.yml +480 -0
  102. package/content/.morph/templates/infra/container-app-env.bicep +49 -49
  103. package/content/.morph/templates/infra/container-app.bicep +156 -156
  104. package/content/.morph/templates/infra/deploy-checklist.md +426 -426
  105. package/content/.morph/templates/infra/deploy.ps1 +229 -229
  106. package/content/.morph/templates/infra/deploy.sh +208 -208
  107. package/content/.morph/templates/infra/key-vault.bicep +91 -91
  108. package/content/.morph/templates/infra/main.bicep +189 -189
  109. package/content/.morph/templates/infra/parameters.dev.json +29 -29
  110. package/content/.morph/templates/infra/parameters.prod.json +29 -29
  111. package/content/.morph/templates/infra/parameters.staging.json +29 -29
  112. package/content/.morph/templates/infra/sql-database.bicep +103 -103
  113. package/content/.morph/templates/infra/storage.bicep +106 -106
  114. package/content/.morph/templates/integrations/asaas-client.cs +387 -387
  115. package/content/.morph/templates/integrations/asaas-webhook.cs +351 -351
  116. package/content/.morph/templates/integrations/azure-identity-config.cs +288 -288
  117. package/content/.morph/templates/integrations/clerk-config.cs +258 -258
  118. package/content/.morph/templates/job.cs +171 -171
  119. package/content/.morph/templates/migration.cs +83 -83
  120. package/content/.morph/templates/repository.cs +141 -141
  121. package/content/.morph/templates/saas/subscription.cs +347 -347
  122. package/content/.morph/templates/saas/tenant.cs +338 -338
  123. package/content/.morph/templates/service.cs +139 -139
  124. package/content/.morph/templates/sprint-status.yaml +68 -68
  125. package/content/.morph/templates/story.md +143 -143
  126. package/content/.morph/templates/test.cs +239 -239
  127. package/content/.morph/templates/ui-design-system.md +286 -286
  128. package/content/.morph/templates/ui-flows.md +336 -336
  129. package/content/.morph/templates/ui-mockups.md +133 -133
  130. package/content/.morph/test-infra/example.bicep +59 -59
  131. package/content/README.md +79 -79
  132. package/detectors/config-detector.js +223 -223
  133. package/detectors/conversation-analyzer.js +163 -163
  134. package/detectors/index.js +84 -84
  135. package/detectors/standards-generator.js +275 -275
  136. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +977 -977
  137. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +1048 -1048
  138. package/docs/api/scripts/collapse.js +38 -38
  139. package/docs/api/scripts/commonNav.js +28 -28
  140. package/docs/api/scripts/linenumber.js +25 -25
  141. package/docs/api/scripts/nav.js +12 -12
  142. package/docs/api/scripts/polyfill.js +3 -3
  143. package/docs/api/scripts/prettify/Apache-License-2.0.txt +202 -202
  144. package/docs/api/scripts/prettify/lang-css.js +2 -2
  145. package/docs/api/scripts/prettify/prettify.js +28 -28
  146. package/docs/api/scripts/search.js +98 -98
  147. package/docs/api/styles/jsdoc.css +776 -776
  148. package/docs/api/styles/prettify.css +80 -80
  149. package/docs/examples.md +328 -328
  150. package/docs/templates.md +418 -418
  151. package/package.json +1 -1
  152. package/scripts/postinstall.js +132 -132
  153. package/src/commands/advance-phase.js +83 -0
  154. package/src/commands/analyze-blazor-concurrency.js +193 -193
  155. package/src/commands/create-story.js +351 -351
  156. package/src/commands/deploy.js +780 -0
  157. package/src/commands/detect-agents.js +34 -6
  158. package/src/commands/detect.js +104 -104
  159. package/src/commands/generate-context.js +40 -0
  160. package/src/commands/generate.js +149 -149
  161. package/src/commands/lint-fluent.js +352 -352
  162. package/src/commands/rollback-phase.js +185 -185
  163. package/src/commands/session-summary.js +291 -291
  164. package/src/commands/shard-spec.js +224 -224
  165. package/src/commands/sprint-status.js +250 -250
  166. package/src/commands/state.js +333 -333
  167. package/src/commands/sync.js +167 -167
  168. package/src/commands/troubleshoot.js +222 -222
  169. package/src/commands/validate-blazor-state.js +210 -210
  170. package/src/commands/validate-blazor.js +156 -156
  171. package/src/commands/validate-css.js +84 -84
  172. package/src/commands/validate-phase.js +221 -221
  173. package/src/lib/blazor-concurrency-analyzer.js +288 -288
  174. package/src/lib/blazor-state-validator.js +291 -291
  175. package/src/lib/blazor-validator.js +374 -374
  176. package/src/lib/context-generator.js +513 -0
  177. package/src/lib/css-validator.js +352 -352
  178. package/src/lib/design-system-detector.js +187 -0
  179. package/src/lib/design-system-generator.js +298 -298
  180. package/src/lib/design-system-scaffolder.js +299 -0
  181. package/src/lib/hook-executor.js +256 -0
  182. package/src/lib/learning-system.js +520 -520
  183. package/src/lib/mockup-generator.js +366 -366
  184. package/src/lib/spec-validator.js +258 -0
  185. package/src/lib/standards-context-injector.js +287 -0
  186. package/src/lib/team-orchestrator.js +322 -0
  187. package/src/lib/troubleshoot-grep.js +194 -194
  188. package/src/lib/troubleshoot-index.js +144 -144
  189. package/src/lib/ui-detector.js +350 -350
  190. package/src/lib/validation-runner.js +65 -13
  191. package/src/lib/validators/architecture-validator.js +387 -387
  192. package/src/lib/validators/design-system-validator.js +231 -0
  193. package/src/lib/validators/package-validator.js +360 -360
  194. package/src/lib/validators/ui-contrast-validator.js +422 -422
  195. package/src/utils/file-copier.js +9 -1
  196. package/src/utils/logger.js +32 -32
  197. package/src/utils/version-checker.js +175 -175
  198. /package/content/.claude/skills/{checklists → level-0-meta}/code-review.md +0 -0
  199. /package/content/.claude/skills/{checklists → level-0-meta}/simulation-checklist.md +0 -0
  200. /package/content/.claude/skills/{specialists → level-2-domains/ai-agents}/ai-system-architect.md +0 -0
  201. /package/content/.claude/skills/{specialists → level-2-domains/architecture}/po-pm-advisor.md +0 -0
  202. /package/content/.claude/skills/{specialists → level-2-domains/architecture}/standards-architect.md +0 -0
  203. /package/content/.claude/skills/{specialists → level-2-domains/backend}/dotnet-senior.md +0 -0
  204. /package/content/.claude/skills/{specialists → level-2-domains/backend}/ef-modeler.md +0 -0
  205. /package/content/.claude/skills/{specialists → level-2-domains/backend}/hangfire-orchestrator.md +0 -0
  206. /package/content/.claude/skills/{specialists → level-2-domains/backend}/ms-agent-expert.md +0 -0
  207. /package/content/.claude/skills/{stacks/dotnet-blazor.md → level-2-domains/frontend/blazor-builder.md} +0 -0
  208. /package/content/.claude/skills/{stacks/dotnet-nextjs.md → level-2-domains/frontend/nextjs-expert.md} +0 -0
  209. /package/content/.claude/skills/{specialists → level-2-domains/frontend}/ui-ux-designer.md +0 -0
  210. /package/content/.claude/skills/{specialists → level-2-domains/infrastructure}/azure-architect.md +0 -0
  211. /package/content/.claude/skills/{infra → level-2-domains/infrastructure}/bicep-architect.md +0 -0
  212. /package/content/.claude/skills/{infra → level-2-domains/infrastructure}/container-specialist.md +0 -0
  213. /package/content/.claude/skills/{infra → level-2-domains/infrastructure}/devops-engineer.md +0 -0
  214. /package/content/.claude/skills/{integrations → level-2-domains/integrations}/asaas-financial.md +0 -0
  215. /package/content/.claude/skills/{integrations → level-2-domains/integrations}/azure-identity.md +0 -0
  216. /package/content/.claude/skills/{integrations → level-2-domains/integrations}/clerk-auth.md +0 -0
  217. /package/content/.claude/skills/{integrations → level-2-domains/integrations}/resend-email.md +0 -0
  218. /package/content/.claude/skills/{specialists → level-2-domains/quality}/code-analyzer.md +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*