132 lines
6.0 KiB
Markdown
132 lines
6.0 KiB
Markdown
# Phase 6 Context — Dev Center Completo
|
|
|
|
> Generated in --auto mode on 2026-03-26. All decisions auto-selected with recommended defaults.
|
|
|
|
## Phase Goal
|
|
|
|
Fábrica completa de agentes integrada ao DevCenter existente: Design → Assemble → Deploy, com galeria de agentes por tenant.
|
|
|
|
## Prior Context Applied
|
|
|
|
- **Stack Node.js/TypeScript + React:** sem novos microserviços
|
|
- **Backend-first:** tabela + API antes do frontend
|
|
- **Blackboard já existe:** `server/blackboard/` com ArchitectAgent, GeneratorAgent, ValidatorAgent, ExecutorAgent — reusar sem modificar
|
|
- **DevCenter.tsx já existe em `/dev-center`:** adicionar tabs, não criar nova rota
|
|
- **Schema modular:** nova tabela pode ir em `shared/schema.ts` (é a fase certa — tabela de agentes faz parte do core do sistema)
|
|
- **Auditoria imutável:** execuções e artefatos já logados via `blackboard_artifacts`
|
|
|
|
---
|
|
|
|
## Decisions
|
|
|
|
### 1. Onde vive a nova UI?
|
|
|
|
**[auto] 4 novos tabs no DevCenter.tsx existente — sem nova rota**
|
|
|
|
- Tabs adicionados ao `<TabsList>` existente em `/dev-center`
|
|
- Tabs novos: `design`, `assemble`, `deploy`, `galeria`
|
|
- Tabs existentes (Desenvolver, Status, Analisar Repos, Ferramentas, Sistema, Preview, Histórico) permanecem intocados
|
|
- Nenhuma nova rota no App.tsx, nenhum novo import lazy
|
|
|
|
### 2. DesignStudio — modos do editor
|
|
|
|
**[auto] 3 modos: Markdown Spec, Code Editor, Visual Flow**
|
|
|
|
- **Markdown Spec** (padrão): textarea com Monaco em modo `markdown` — usuário descreve o agente em linguagem natural estruturada
|
|
- **Code Editor**: Monaco em modo `typescript` — para specs técnicas detalhadas ou código direto
|
|
- **Visual Flow**: lista de nós editáveis (JSON simples) — nome/tipo/conexões — NÃO um editor gráfico completo
|
|
- UML = descrito via texto em Markdown Spec (sem biblioteca de diagramas)
|
|
- Seletor de modo: 3 botões inline no topo do tab Design
|
|
|
|
### 3. Tabela de definições de agentes
|
|
|
|
**[auto] Nova tabela `arcadia_agent_defs` em `shared/schema.ts`**
|
|
|
|
Campos:
|
|
- `id` (serial PK)
|
|
- `tenantId` (varchar, nullable)
|
|
- `userId` (varchar — criador)
|
|
- `name` (varchar — nome do agente)
|
|
- `description` (text)
|
|
- `spec` (jsonb — conteúdo do DesignStudio: `{ mode, content }`)
|
|
- `status` (varchar — `draft | assembling | ready | deployed`)
|
|
- `version` (integer, default 1)
|
|
- `lastTaskId` (integer — FK para blackboard_tasks, nullable)
|
|
- `createdAt`, `updatedAt` (timestamp)
|
|
|
|
API: `/api/agent-defs` — CRUD padrão (GET list, POST create, PATCH update, DELETE)
|
|
|
|
### 4. AssembleLine — fluxo de montagem
|
|
|
|
**[auto] DesignStudio spec → POST /api/blackboard/task → GeneratorAgent → artefato linkado**
|
|
|
|
- Tab "Assemble" lista `arcadia_agent_defs` com status `draft`
|
|
- Botão "Montar" por agente: POST `/api/blackboard/task` com spec como contexto
|
|
- `title`: `"Montar agente: ${name}"`
|
|
- `description`: conteúdo do spec
|
|
- `context`: `{ agentDefId, spec, source: "agent-factory" }`
|
|
- Atualiza `arcadia_agent_defs.status` → `assembling`, salva `lastTaskId`
|
|
- Progresso: polling de `/api/blackboard/task/:id` a cada 3s
|
|
- Ao completar: status → `ready`, artefato gerado visível no painel de detalhes
|
|
- Reusar completamente os agentes Blackboard existentes — zero modificação
|
|
|
|
### 5. OrchestrateCenter — deploy e monitoramento
|
|
|
|
**[auto] Lista de agent_defs com ações de deploy + viewer de artefatos**
|
|
|
|
- Tab "Deploy": lista `arcadia_agent_defs` em status `ready` ou `deployed`
|
|
- Ação "Deploy": PATCH status → `deployed`, incrementa `version`
|
|
- Ação "Re-montar": volta para `draft`, decrementa version (permite iteração)
|
|
- Monitoramento: expandir linha → mostra último `blackboard_artifact` do `lastTaskId`
|
|
- Versionamento: campo `version` incrementado a cada novo deploy
|
|
- Sem infra externa — deploy = mudança de status no banco
|
|
|
|
### 6. Galeria de agentes
|
|
|
|
**[auto] Grid de cards por tenant — tab "Galeria"**
|
|
|
|
- Tab "Galeria": grid de cards com `arcadia_agent_defs` onde `status = "deployed"`
|
|
- Cada card: nome, descrição, badge de status, número de versão, criador
|
|
- Ação "Executar": POST `/api/blackboard/task` com spec do agente → cria nova task de execução
|
|
- Ação "Fork": duplica o agente def como novo draft (copia spec, incrementa nome)
|
|
- Filtro por status (todos / somente deployed) e busca por nome
|
|
- Empty state: "Nenhum agente implantado — crie um na aba Design"
|
|
|
|
---
|
|
|
|
## Reusable Assets Identified
|
|
|
|
- `server/blackboard/routes.ts` — `POST /api/blackboard/task`, `GET /api/blackboard/task/:id`, `GET /api/blackboard/tasks` — reusar sem modificar
|
|
- `server/blackboard/service.ts` — `createMainTask()`, `getTaskWithDetails()` — reusar
|
|
- `shared/schema.ts` — `blackboardTasks`, `blackboardArtifacts` — leitura e join
|
|
- `client/src/pages/DevCenter.tsx` — estrutura de tabs existente — adicionar sem remover
|
|
- `client/src/pages/AutomationCenter.tsx` — referência de UX: lista com filtros + badges
|
|
- `client/src/pages/Skills.tsx` — referência de galeria com cards
|
|
- Monaco Editor já instalado (usado no DevCenter tab "Desenvolver")
|
|
|
|
---
|
|
|
|
## Scope Boundary
|
|
|
|
**Incluído nesta fase:**
|
|
- Tabela `arcadia_agent_defs` + migration + API CRUD `/api/agent-defs`
|
|
- Tab "Design" (DesignStudio: 3 modos + Monaco)
|
|
- Tab "Assemble" (lista de defs + botão Montar + progresso polling)
|
|
- Tab "Deploy" (OrchestrateCenter: lista ready/deployed + ações deploy/re-montar + viewer)
|
|
- Tab "Galeria" (grid por tenant + run + fork)
|
|
- Backend endpoint `POST /api/agent-defs/:id/deploy` e `POST /api/agent-defs/:id/run`
|
|
|
|
**Fora de escopo (phases futuras):**
|
|
- Editor gráfico visual com React Flow ou similar
|
|
- Execução real do código gerado em sandbox (Phase 7)
|
|
- Integração com CI/CD ou containers reais
|
|
- Sharing de agentes entre tenants
|
|
|
|
---
|
|
|
|
## Plan Breakdown Suggested
|
|
|
|
- **06-01:** `shared/schema.ts` (tabela `arcadia_agent_defs`) + `server/agent-defs/routes.ts` (CRUD + `/deploy` + `/run`) + registro em `server/routes.ts`
|
|
- **06-02:** Tab "Design" (DesignStudio 3 modos) + Tab "Assemble" (lista + polling de progresso) no DevCenter.tsx
|
|
- **06-03:** Tab "Deploy" (OrchestrateCenter) + Tab "Galeria" (grid + run/fork) no DevCenter.tsx
|