@polymorphism-tech/morph-spec 3.0.0 → 3.1.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 (240) hide show
  1. package/CLAUDE.md +68 -400
  2. package/README.md +198 -76
  3. package/bin/detect-agents.js +227 -225
  4. package/bin/morph-spec.js +10 -0
  5. package/bin/render-template.js +303 -302
  6. package/bin/semantic-detect-agents.js +247 -246
  7. package/bin/{task-manager.js → task-manager.cjs} +12 -1
  8. package/bin/validate-agents-skills.js +257 -251
  9. package/bin/validate-agents.js +70 -69
  10. package/bin/validate-phase.js +263 -263
  11. package/docs/getting-started.md +3 -3
  12. package/package.json +3 -4
  13. package/scripts/reorganize-skills.cjs +175 -0
  14. package/scripts/validate-agents-structure.cjs +52 -0
  15. package/scripts/validate-skills.cjs +180 -0
  16. package/src/commands/create-story.js +354 -351
  17. package/src/commands/detect-agents.js +13 -2
  18. package/src/commands/detect.js +104 -104
  19. package/src/commands/state.js +334 -333
  20. package/src/commands/sync.js +167 -167
  21. package/src/commands/task.js +1 -1
  22. package/src/commands/update.js +13 -1
  23. package/src/lib/context-generator.js +7 -4
  24. package/{detectors → src/lib/detectors}/config-detector.js +223 -223
  25. package/{detectors → src/lib/detectors}/conversation-analyzer.js +163 -163
  26. package/{detectors → src/lib/detectors}/index.js +84 -84
  27. package/{detectors → src/lib/detectors}/standards-generator.js +275 -275
  28. package/src/lib/hook-executor.js +2 -1
  29. package/src/lib/stack-resolver.js +148 -0
  30. package/src/lib/standards-context-injector.js +4 -3
  31. package/src/lib/state-manager.js +21 -4
  32. package/src/lib/team-orchestrator.js +2 -1
  33. package/src/lib/troubleshoot-grep.js +13 -3
  34. package/src/lib/validation-runner.js +2 -1
  35. package/src/utils/file-copier.js +3 -1
  36. package/{content → stacks/blazor-azure}/.azure/README.md +293 -293
  37. package/{content → stacks/blazor-azure}/.azure/docs/azure-devops-setup.md +454 -454
  38. package/{content → stacks/blazor-azure}/.azure/docs/branch-strategy.md +398 -398
  39. package/{content → stacks/blazor-azure}/.azure/docs/local-development.md +515 -515
  40. package/{content → stacks/blazor-azure}/.azure/pipelines/pipeline-variables.yml +34 -34
  41. package/{content → stacks/blazor-azure}/.azure/pipelines/prod-pipeline.yml +319 -319
  42. package/{content → stacks/blazor-azure}/.azure/pipelines/staging-pipeline.yml +234 -234
  43. package/{content → stacks/blazor-azure}/.azure/pipelines/templates/build-dotnet.yml +75 -75
  44. package/{content → stacks/blazor-azure}/.azure/pipelines/templates/deploy-app-service.yml +94 -94
  45. package/{content → stacks/blazor-azure}/.azure/pipelines/templates/deploy-container-app.yml +120 -120
  46. package/{content → stacks/blazor-azure}/.azure/pipelines/templates/infra-deploy.yml +90 -90
  47. package/{content → stacks/blazor-azure}/.claude/commands/morph-archive.md +79 -79
  48. package/{content → stacks/blazor-azure}/.claude/commands/morph-deploy.md +529 -529
  49. package/{content → stacks/blazor-azure}/.claude/commands/morph-infra.md +209 -209
  50. package/{content → stacks/blazor-azure}/.claude/commands/morph-troubleshoot.md +1 -1
  51. package/{content → stacks/blazor-azure}/.claude/settings.local.json +15 -15
  52. package/{content → stacks/blazor-azure}/.claude/skills/level-1-workflows/phase-setup.md +1 -1
  53. package/{content/.claude/skills/specialists → stacks/blazor-azure/.claude/skills/level-2-domains/architecture}/prompt-engineer.md +189 -189
  54. package/{content/.claude/skills/specialists → stacks/blazor-azure/.claude/skills/level-2-domains/architecture}/seo-growth-hacker.md +320 -320
  55. package/{content/.claude/skills/infra → stacks/blazor-azure/.claude/skills/level-2-domains/infrastructure}/azure-deploy-specialist.md +699 -699
  56. package/{content → stacks/blazor-azure}/.morph/.morphversion +5 -5
  57. package/{content → stacks/blazor-azure}/.morph/archive/.gitkeep +25 -25
  58. package/{content → stacks/blazor-azure}/.morph/config/agents.json +7 -5
  59. package/{content → stacks/blazor-azure}/.morph/docs/STORY-DRIVEN-DEVELOPMENT.md +392 -392
  60. package/{content → stacks/blazor-azure}/.morph/docs/workflows/enforcement-pipeline.md +3 -3
  61. package/{content → stacks/blazor-azure}/.morph/examples/api-nextjs/README.md +241 -241
  62. package/{content → stacks/blazor-azure}/.morph/examples/api-nextjs/contracts.ts +307 -307
  63. package/{content → stacks/blazor-azure}/.morph/examples/api-nextjs/spec.md +399 -399
  64. package/{content → stacks/blazor-azure}/.morph/examples/api-nextjs/tasks.md +168 -168
  65. package/{content → stacks/blazor-azure}/.morph/examples/micro-saas/README.md +125 -125
  66. package/{content → stacks/blazor-azure}/.morph/examples/micro-saas/contracts.cs +358 -358
  67. package/{content → stacks/blazor-azure}/.morph/examples/micro-saas/decisions.md +246 -246
  68. package/{content → stacks/blazor-azure}/.morph/examples/micro-saas/spec.md +236 -236
  69. package/{content → stacks/blazor-azure}/.morph/examples/micro-saas/tasks.md +150 -150
  70. package/{content → stacks/blazor-azure}/.morph/examples/multi-agent/README.md +309 -309
  71. package/{content → stacks/blazor-azure}/.morph/examples/multi-agent/contracts.cs +433 -433
  72. package/{content → stacks/blazor-azure}/.morph/examples/multi-agent/spec.md +479 -479
  73. package/{content → stacks/blazor-azure}/.morph/examples/multi-agent/tasks.md +185 -185
  74. package/{content → stacks/blazor-azure}/.morph/examples/state-v3.json +188 -188
  75. package/{content → stacks/blazor-azure}/.morph/features/.gitkeep +25 -25
  76. package/{content → stacks/blazor-azure}/.morph/hooks/README.md +12 -12
  77. package/{content → stacks/blazor-azure}/.morph/hooks/pre-commit-all.sh +48 -48
  78. package/{content → stacks/blazor-azure}/.morph/hooks/pre-commit-specs.sh +49 -49
  79. package/{content → stacks/blazor-azure}/.morph/hooks/pre-commit-tests.sh +60 -60
  80. package/{content → stacks/blazor-azure}/.morph/project.md +160 -160
  81. package/{content → stacks/blazor-azure}/.morph/schemas/agent.schema.json +296 -296
  82. package/{content → stacks/blazor-azure}/.morph/specs/.gitkeep +20 -20
  83. package/{content → stacks/blazor-azure}/.morph/standards/agent-teams-workflow.md +2 -2
  84. package/{content → stacks/blazor-azure}/.morph/standards/coding.md +377 -377
  85. package/{content → stacks/blazor-azure}/.morph/standards/fluent-ui-setup.md +590 -590
  86. package/{content → stacks/blazor-azure}/.morph/standards/migration-guide.md +514 -514
  87. package/{content → stacks/blazor-azure}/.morph/standards/passkeys-auth.md +423 -423
  88. package/{content → stacks/blazor-azure}/.morph/standards/vector-search-rag.md +536 -536
  89. package/{content → stacks/blazor-azure}/.morph/state.json +17 -17
  90. package/{content → stacks/blazor-azure}/.morph/templates/FluentDesignTheme.cs +149 -149
  91. package/{content → stacks/blazor-azure}/.morph/templates/MudTheme.cs +281 -281
  92. package/{content → stacks/blazor-azure}/.morph/templates/component.razor +239 -239
  93. package/{content → stacks/blazor-azure}/.morph/templates/contracts.cs +217 -217
  94. package/{content → stacks/blazor-azure}/.morph/templates/design-system.css +226 -226
  95. package/{content → stacks/blazor-azure}/.morph/templates/infra/.dockerignore.example +89 -89
  96. package/{content → stacks/blazor-azure}/.morph/templates/infra/Dockerfile.example +82 -82
  97. package/{content → stacks/blazor-azure}/.morph/templates/infra/README.md +286 -286
  98. package/{content → stacks/blazor-azure}/.morph/templates/infra/app-insights.bicep +63 -63
  99. package/{content → stacks/blazor-azure}/.morph/templates/infra/app-service.bicep +164 -164
  100. package/{content → stacks/blazor-azure}/.morph/templates/infra/azure-pipelines-deploy.yml +480 -480
  101. package/{content → stacks/blazor-azure}/.morph/templates/infra/container-app-env.bicep +49 -49
  102. package/{content → stacks/blazor-azure}/.morph/templates/infra/container-app.bicep +156 -156
  103. package/{content → stacks/blazor-azure}/.morph/templates/infra/deploy.ps1 +229 -229
  104. package/{content → stacks/blazor-azure}/.morph/templates/infra/deploy.sh +208 -208
  105. package/{content → stacks/blazor-azure}/.morph/templates/infra/key-vault.bicep +91 -91
  106. package/{content → stacks/blazor-azure}/.morph/templates/infra/main.bicep +189 -189
  107. package/{content → stacks/blazor-azure}/.morph/templates/infra/parameters.dev.json +29 -29
  108. package/{content → stacks/blazor-azure}/.morph/templates/infra/parameters.prod.json +29 -29
  109. package/{content → stacks/blazor-azure}/.morph/templates/infra/parameters.staging.json +29 -29
  110. package/{content → stacks/blazor-azure}/.morph/templates/infra/sql-database.bicep +103 -103
  111. package/{content → stacks/blazor-azure}/.morph/templates/infra/storage.bicep +106 -106
  112. package/{content → stacks/blazor-azure}/.morph/templates/integrations/asaas-client.cs +387 -387
  113. package/{content → stacks/blazor-azure}/.morph/templates/integrations/asaas-webhook.cs +351 -351
  114. package/{content → stacks/blazor-azure}/.morph/templates/integrations/azure-identity-config.cs +288 -288
  115. package/{content → stacks/blazor-azure}/.morph/templates/integrations/clerk-config.cs +258 -258
  116. package/{content → stacks/blazor-azure}/.morph/templates/job.cs +171 -171
  117. package/{content → stacks/blazor-azure}/.morph/templates/migration.cs +83 -83
  118. package/{content → stacks/blazor-azure}/.morph/templates/repository.cs +141 -141
  119. package/{content → stacks/blazor-azure}/.morph/templates/saas/subscription.cs +347 -347
  120. package/{content → stacks/blazor-azure}/.morph/templates/saas/tenant.cs +338 -338
  121. package/{content → stacks/blazor-azure}/.morph/templates/service.cs +139 -139
  122. package/{content → stacks/blazor-azure}/.morph/templates/sprint-status.yaml +68 -68
  123. package/{content → stacks/blazor-azure}/.morph/templates/story.md +143 -143
  124. package/{content → stacks/blazor-azure}/.morph/templates/test.cs +239 -239
  125. package/{content → stacks/blazor-azure}/.morph/templates/ui-design-system.md +286 -286
  126. package/{content → stacks/blazor-azure}/.morph/templates/ui-flows.md +336 -336
  127. package/{content → stacks/blazor-azure}/.morph/templates/ui-mockups.md +133 -133
  128. package/{content → stacks/blazor-azure}/.morph/test-infra/example.bicep +59 -59
  129. package/{content → stacks/blazor-azure}/README.md +79 -79
  130. package/stacks/nextjs-supabase/.claude/skills/level-2-domains/backend/dotnet-supabase.md +244 -0
  131. package/stacks/nextjs-supabase/.claude/skills/level-2-domains/frontend/nextjs-supabase.md +335 -0
  132. package/stacks/nextjs-supabase/.claude/skills/level-2-domains/infrastructure/easypanel-deployer.md +189 -0
  133. package/stacks/nextjs-supabase/.claude/skills/level-2-domains/integrations/supabase-expert.md +170 -0
  134. package/stacks/nextjs-supabase/.morph/config/agents.json +345 -0
  135. package/stacks/nextjs-supabase/.morph/config/config.template.json +92 -0
  136. package/stacks/nextjs-supabase/.morph/docs/easypanel-setup.md +169 -0
  137. package/stacks/nextjs-supabase/.morph/docs/supabase-mcp-setup.md +247 -0
  138. package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/README.md +697 -0
  139. package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/spec.md +85 -0
  140. package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/tasks.md +86 -0
  141. package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/README.md +498 -0
  142. package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/decisions.md +121 -0
  143. package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/spec.md +138 -0
  144. package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/tasks.md +162 -0
  145. package/stacks/nextjs-supabase/.morph/project.md +168 -0
  146. package/stacks/nextjs-supabase/.morph/standards/easypanel-deploy.md +191 -0
  147. package/stacks/nextjs-supabase/.morph/standards/nextjs-patterns.md +193 -0
  148. package/stacks/nextjs-supabase/.morph/standards/supabase-auth.md +171 -0
  149. package/stacks/nextjs-supabase/.morph/standards/supabase-pgvector.md +164 -0
  150. package/stacks/nextjs-supabase/.morph/standards/supabase-rls.md +179 -0
  151. package/stacks/nextjs-supabase/.morph/standards/supabase-storage.md +148 -0
  152. package/stacks/nextjs-supabase/.morph/templates/contracts.cs +173 -0
  153. package/stacks/nextjs-supabase/.morph/templates/contracts.ts +168 -0
  154. package/stacks/nextjs-supabase/.morph/templates/decisions.md +115 -0
  155. package/stacks/nextjs-supabase/.morph/templates/dockerfile-api.dockerfile +38 -0
  156. package/stacks/nextjs-supabase/.morph/templates/dockerfile-web.dockerfile +48 -0
  157. package/stacks/nextjs-supabase/.morph/templates/proposal.md +145 -0
  158. package/stacks/nextjs-supabase/.morph/templates/recap.md +134 -0
  159. package/stacks/nextjs-supabase/.morph/templates/rls-policy.sql +57 -0
  160. package/stacks/nextjs-supabase/.morph/templates/spec.md +231 -0
  161. package/stacks/nextjs-supabase/.morph/templates/supabase-migration.sql +100 -0
  162. package/stacks/nextjs-supabase/.morph/templates/tasks.md +257 -0
  163. package/stacks/nextjs-supabase/CLAUDE.md +149 -0
  164. package/stacks/nextjs-supabase/README.md +112 -0
  165. /package/{detectors → src/lib/detectors}/structure-detector.js +0 -0
  166. /package/{content → stacks/blazor-azure}/.claude/commands/morph-apply.md +0 -0
  167. /package/{content → stacks/blazor-azure}/.claude/commands/morph-preflight.md +0 -0
  168. /package/{content → stacks/blazor-azure}/.claude/commands/morph-proposal.md +0 -0
  169. /package/{content → stacks/blazor-azure}/.claude/commands/morph-status.md +0 -0
  170. /package/{content → stacks/blazor-azure}/.claude/skills/level-0-meta/README.md +0 -0
  171. /package/{content → stacks/blazor-azure}/.claude/skills/level-0-meta/code-review.md +0 -0
  172. /package/{content → stacks/blazor-azure}/.claude/skills/level-0-meta/morph-checklist.md +0 -0
  173. /package/{content → stacks/blazor-azure}/.claude/skills/level-0-meta/simulation-checklist.md +0 -0
  174. /package/{content → stacks/blazor-azure}/.claude/skills/level-1-workflows/README.md +0 -0
  175. /package/{content → stacks/blazor-azure}/.claude/skills/level-1-workflows/morph-replicate.md +0 -0
  176. /package/{content → stacks/blazor-azure}/.claude/skills/level-1-workflows/phase-clarify.md +0 -0
  177. /package/{content → stacks/blazor-azure}/.claude/skills/level-1-workflows/phase-design.md +0 -0
  178. /package/{content → stacks/blazor-azure}/.claude/skills/level-1-workflows/phase-tasks.md +0 -0
  179. /package/{content → stacks/blazor-azure}/.claude/skills/level-1-workflows/phase-uiux.md +0 -0
  180. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/README.md +0 -0
  181. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/ai-agents/ai-system-architect.md +0 -0
  182. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/architecture/po-pm-advisor.md +0 -0
  183. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/architecture/standards-architect.md +0 -0
  184. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/backend/dotnet-senior.md +0 -0
  185. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/backend/ef-modeler.md +0 -0
  186. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/backend/hangfire-orchestrator.md +0 -0
  187. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/backend/ms-agent-expert.md +0 -0
  188. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/frontend/blazor-builder.md +0 -0
  189. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/frontend/nextjs-expert.md +0 -0
  190. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/frontend/ui-ux-designer.md +0 -0
  191. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/infrastructure/azure-architect.md +0 -0
  192. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/infrastructure/bicep-architect.md +0 -0
  193. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/infrastructure/container-specialist.md +0 -0
  194. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/infrastructure/devops-engineer.md +0 -0
  195. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/integrations/asaas-financial.md +0 -0
  196. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/integrations/azure-identity.md +0 -0
  197. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/integrations/clerk-auth.md +0 -0
  198. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/integrations/resend-email.md +0 -0
  199. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/quality/code-analyzer.md +0 -0
  200. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/quality/testing-specialist.md +0 -0
  201. /package/{content → stacks/blazor-azure}/.claude/skills/level-3-technologies/README.md +0 -0
  202. /package/{content → stacks/blazor-azure}/.claude/skills/level-4-patterns/README.md +0 -0
  203. /package/{content → stacks/blazor-azure}/.morph/config/config.template.json +0 -0
  204. /package/{content → stacks/blazor-azure}/.morph/docs/workflows/design-impl.md +0 -0
  205. /package/{content → stacks/blazor-azure}/.morph/docs/workflows/fast-track.md +0 -0
  206. /package/{content → stacks/blazor-azure}/.morph/docs/workflows/full-morph.md +0 -0
  207. /package/{content → stacks/blazor-azure}/.morph/docs/workflows/standard.md +0 -0
  208. /package/{content → stacks/blazor-azure}/.morph/docs/workflows/ui-refresh.md +0 -0
  209. /package/{content → stacks/blazor-azure}/.morph/examples/scheduled-reports/decisions.md +0 -0
  210. /package/{content → stacks/blazor-azure}/.morph/examples/scheduled-reports/proposal.md +0 -0
  211. /package/{content → stacks/blazor-azure}/.morph/examples/scheduled-reports/spec.md +0 -0
  212. /package/{content → stacks/blazor-azure}/.morph/hooks/pre-commit-agents.sh +0 -0
  213. /package/{content → stacks/blazor-azure}/.morph/hooks/task-completed.js +0 -0
  214. /package/{content → stacks/blazor-azure}/.morph/hooks/teammate-idle.js +0 -0
  215. /package/{content → stacks/blazor-azure}/.morph/schemas/tasks.schema.json +0 -0
  216. /package/{content → stacks/blazor-azure}/.morph/standards/agent-framework-blazor-ui.md +0 -0
  217. /package/{content → stacks/blazor-azure}/.morph/standards/agent-framework-production.md +0 -0
  218. /package/{content → stacks/blazor-azure}/.morph/standards/agent-framework-setup.md +0 -0
  219. /package/{content → stacks/blazor-azure}/.morph/standards/agent-framework-workflows.md +0 -0
  220. /package/{content → stacks/blazor-azure}/.morph/standards/architecture.md +0 -0
  221. /package/{content → stacks/blazor-azure}/.morph/standards/azure.md +0 -0
  222. /package/{content → stacks/blazor-azure}/.morph/standards/dotnet10-migration.md +0 -0
  223. /package/{content → stacks/blazor-azure}/.morph/templates/CONTEXT-FEATURE.md +0 -0
  224. /package/{content → stacks/blazor-azure}/.morph/templates/CONTEXT.md +0 -0
  225. /package/{content → stacks/blazor-azure}/.morph/templates/agent.cs +0 -0
  226. /package/{content → stacks/blazor-azure}/.morph/templates/clarify-questions.md +0 -0
  227. /package/{content → stacks/blazor-azure}/.morph/templates/contracts/Commands.cs +0 -0
  228. /package/{content → stacks/blazor-azure}/.morph/templates/contracts/Entities.cs +0 -0
  229. /package/{content → stacks/blazor-azure}/.morph/templates/contracts/Queries.cs +0 -0
  230. /package/{content → stacks/blazor-azure}/.morph/templates/contracts/README.md +0 -0
  231. /package/{content → stacks/blazor-azure}/.morph/templates/decisions.md +0 -0
  232. /package/{content → stacks/blazor-azure}/.morph/templates/infra/deploy-checklist.md +0 -0
  233. /package/{content → stacks/blazor-azure}/.morph/templates/proposal.md +0 -0
  234. /package/{content → stacks/blazor-azure}/.morph/templates/recap.md +0 -0
  235. /package/{content → stacks/blazor-azure}/.morph/templates/simulation.md +0 -0
  236. /package/{content → stacks/blazor-azure}/.morph/templates/spec.md +0 -0
  237. /package/{content → stacks/blazor-azure}/.morph/templates/state.template.json +0 -0
  238. /package/{content → stacks/blazor-azure}/.morph/templates/tasks.md +0 -0
  239. /package/{content → stacks/blazor-azure}/.morph/templates/ui-components.md +0 -0
  240. /package/{content → stacks/blazor-azure}/CLAUDE.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*