aiteam-x 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +397 -0
- package/package.json +54 -0
- package/scripts/cli.mjs +106 -0
package/README.md
ADDED
|
@@ -0,0 +1,397 @@
|
|
|
1
|
+
# AITeam Team Overview
|
|
2
|
+
|
|
3
|
+
**Painel visual em estilo pixel art para orquestrar e monitorar agentes BMAD em tempo real.**
|
|
4
|
+
|
|
5
|
+
[](https://nextjs.org/)
|
|
6
|
+
[](https://react.dev/)
|
|
7
|
+
[](https://www.typescriptlang.org/)
|
|
8
|
+
[](https://github.com/bmad-method)
|
|
9
|
+
[]()
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Visao Geral
|
|
14
|
+
|
|
15
|
+
O **AITeam Team Overview** e um dashboard interativo que transforma a gestao de agentes de IA em uma experiencia visual e intuitiva. Inspirado em jogos de simulacao tipo *sim manager*, o painel exibe agentes BMAD como personagens pixel art em um escritorio virtual, permitindo:
|
|
16
|
+
|
|
17
|
+
- **Visualizar** o status e a localizacao de cada agente em tempo real
|
|
18
|
+
- **Interagir** diretamente com agentes atraves de janelas de chat integradas
|
|
19
|
+
- **Orquestrar** workflows como Party Mode e brainstorming sessions
|
|
20
|
+
- **Monitorar** metricas de uso (mensagens, tokens in/out) por agente
|
|
21
|
+
- **Persistir** contexto e memorias entre sessoes de trabalho com extracao via LLM
|
|
22
|
+
|
|
23
|
+
O projeto utiliza o **BMAD Method** como framework de agentes, integrando-se nativamente com o **Cursor Agent CLI** para comunicacao bidirecional com LLMs.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Screenshots
|
|
28
|
+
|
|
29
|
+
### Dashboard Principal
|
|
30
|
+
|
|
31
|
+

|
|
32
|
+
|
|
33
|
+
*Escritorio virtual com Jarvis Office, Kitchen e workspaces individuais. Barra inferior com avatares e progresso do sprint (14/14 — 100%).*
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
### Janela de Chat com Agente
|
|
38
|
+
|
|
39
|
+

|
|
40
|
+
|
|
41
|
+
*Janela de conversa com BMad Master em tempo real. Cada agente responde com streaming de texto e suporte a Markdown.*
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
### Memory Vault
|
|
46
|
+
|
|
47
|
+

|
|
48
|
+
|
|
49
|
+
*Painel de gerenciamento de memorias por agente. Categorias: decisions, lessons, tasks, projects, handoffs. Busca BM25 em tempo real.*
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
### Filtros de Agentes
|
|
54
|
+
|
|
55
|
+

|
|
56
|
+
|
|
57
|
+
*Filtros de Status (Todos / Trabalhando) e Modulo (BMGD / BMM / CORE) para visualizacao segmentada dos agentes.*
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Funcionalidades Principais
|
|
62
|
+
|
|
63
|
+
### Dashboard Pixel Art
|
|
64
|
+
- Salas compartilhadas: **Jarvis Office**, **Kitchen** — com contexto de atividade dos agentes
|
|
65
|
+
- Grid de workspaces individuais por agente com indicadores de modulo (BMGD / BMM / CORE)
|
|
66
|
+
- Avatares pixel art com status visual em tempo real
|
|
67
|
+
- Barra inferior com avatares compactos e timeline do sprint com progresso granular por story
|
|
68
|
+
- Ciclo dia/noite e efeitos de ambiente
|
|
69
|
+
|
|
70
|
+
### Interacao com Agentes
|
|
71
|
+
- Selecao de agente (click) ou multi-selecao (Ctrl+click) para comandos em lote
|
|
72
|
+
- Janelas de conversa redimensionaveis com streaming SSE em tempo real
|
|
73
|
+
- Bubble de "pensando" animado durante processamento
|
|
74
|
+
- Rendering completo de Markdown nas respostas
|
|
75
|
+
- Botao de stop para cancelar processamento em andamento
|
|
76
|
+
- Historico de conversa persistido entre reloads
|
|
77
|
+
- Sistema de z-index dinamico (bring-to-front ao clicar)
|
|
78
|
+
- Selecao e copia de texto dentro das janelas
|
|
79
|
+
|
|
80
|
+
### Seletor de Modelo e Filtros
|
|
81
|
+
- **Model Bar**: selecao do modelo LLM aplicado a todos os agentes (Padrao do Cursor, Claude Sonnet, etc.)
|
|
82
|
+
- **Filtro de Status**: Todos / Trabalhando — exibe contador em tempo real (ex: 14/14)
|
|
83
|
+
- **Filtro de Modulo**: BMGD / BMM / CORE — segmenta agentes por area de atuacao
|
|
84
|
+
|
|
85
|
+
### Orquestracao BMAD
|
|
86
|
+
- Deteccao automatica de Party Mode e workflows ativos
|
|
87
|
+
- Agentes se movem dinamicamente para salas conforme o workflow
|
|
88
|
+
- Sessao de estado persistida em disco e sincronizada via SSE
|
|
89
|
+
- Metricas de mensagens e tokens por agente
|
|
90
|
+
|
|
91
|
+
### Sistema de Memoria Persistente (v2.1)
|
|
92
|
+
- **Memory Vault**: painel visual completo com 5 categorias (decisions, lessons, tasks, projects, handoffs)
|
|
93
|
+
- **Auto-extract via LLM**: ao fechar uma sessao, o sistema analisa a conversa e extrai memorias estruturadas automaticamente
|
|
94
|
+
- **Badge 🤖 llm**: entradas extraidas automaticamente ficam marcadas por 10 minutos com opcao de veto
|
|
95
|
+
- **Busca BM25**: busca semantica por relevancia dentro do vault de cada agente
|
|
96
|
+
- **Injecao de contexto**: memorias relevantes injetadas automaticamente ao iniciar novas sessoes (budget de 2.000 tokens)
|
|
97
|
+
- **Auto-save**: conversas salvas a cada 30s + save on unload via `sendBeacon`
|
|
98
|
+
- **Checkpoint de sessao**: historico preservado mesmo em reinicios inesperados
|
|
99
|
+
- **Memoria compartilhada**: `_project.md` injetado em todos os agentes como contexto global
|
|
100
|
+
|
|
101
|
+
### Portabilidade e Instalacao (v1.0)
|
|
102
|
+
- **Discovery dinamico**: detecta agentes BMAD automaticamente via CSV/YAML — sem hardcode
|
|
103
|
+
- **Cross-platform**: funciona em Windows, macOS e Linux
|
|
104
|
+
- **Wizard de setup web**: `/setup` no browser — 3 fases animadas: scan da maquina, revisao, configuracao passo a passo
|
|
105
|
+
- **Wizard de setup CLI**: `npm run setup` — alternativa interativa no terminal (6 passos)
|
|
106
|
+
- **Health gate**: se nao configurado, redireciona para `/setup` automaticamente
|
|
107
|
+
- **Config flexivel**: `aiteam.config.json` local + `AITEAM_BMAD_ROOT` para instancias externas/CI
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Stack Tecnologico
|
|
112
|
+
|
|
113
|
+
| Camada | Tecnologia | Versao |
|
|
114
|
+
|--------|-----------|--------|
|
|
115
|
+
| Framework | Next.js (App Router) | 15.x |
|
|
116
|
+
| UI | React | 19.x |
|
|
117
|
+
| Linguagem | TypeScript | 5.x |
|
|
118
|
+
| Estilo | CSS custom (pixel art design system) | — |
|
|
119
|
+
| Fonte | VT323 (Google Fonts) | — |
|
|
120
|
+
| Backend | Next.js API Routes + SSE | — |
|
|
121
|
+
| Busca | MiniSearch (BM25) | — |
|
|
122
|
+
| Agentes | Cursor Agent CLI | latest |
|
|
123
|
+
| Parsing | yaml (npm) | 2.8.x |
|
|
124
|
+
| Framework de Agentes | BMAD Method | — |
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Inicio Rapido
|
|
129
|
+
|
|
130
|
+
### Pre-requisitos
|
|
131
|
+
|
|
132
|
+
| Requisito | Obrigatorio | Notas |
|
|
133
|
+
|-----------|-------------|-------|
|
|
134
|
+
| Node.js >= 18 | Sim | `node --version` |
|
|
135
|
+
| BMAD Framework | Sim | Ver [Guia de Instalacao](docs/installation-guide.md) |
|
|
136
|
+
| Cursor IDE | Sim | Gera o Cursor Agent CLI na primeira abertura |
|
|
137
|
+
| Git | Sim | — |
|
|
138
|
+
|
|
139
|
+
> **Plataformas suportadas:** Windows 10/11, macOS, Linux
|
|
140
|
+
|
|
141
|
+
### Instalacao
|
|
142
|
+
|
|
143
|
+
**Opcao 1 — Um comando (recomendado):**
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
npx aiteam-x@latest
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Cria o projeto no diretorio atual (deve estar vazio). Ou especifique o nome da pasta:
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
npx aiteam-x@latest meu-projeto
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
O comando baixa o template, instala dependencias, executa o wizard de configuracao e inicia o servidor automaticamente.
|
|
156
|
+
|
|
157
|
+
**Opcao 2 — Instalacao manual:**
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
# 1. Clonar o repositorio
|
|
161
|
+
git clone https://github.com/INOSX/AITeam.git
|
|
162
|
+
cd AITeam
|
|
163
|
+
|
|
164
|
+
# 2. Instalar dependencias
|
|
165
|
+
npm install
|
|
166
|
+
|
|
167
|
+
# 3. Executar wizard de configuracao
|
|
168
|
+
npm run setup
|
|
169
|
+
|
|
170
|
+
# 4. Iniciar o servidor de desenvolvimento
|
|
171
|
+
npm run dev
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
O painel estara disponivel em **http://localhost:3000**.
|
|
175
|
+
|
|
176
|
+
> Se o setup nao foi concluido, o sistema redireciona automaticamente para `http://localhost:3000/setup` — um wizard animado que detecta o ambiente, mostra o que esta pronto e permite configurar tudo pelo browser.
|
|
177
|
+
|
|
178
|
+
> **Alternativa CLI:** `npm run setup` executa o wizard interativo no terminal.
|
|
179
|
+
|
|
180
|
+
### Scripts Disponiveis
|
|
181
|
+
|
|
182
|
+
| Comando | Descricao |
|
|
183
|
+
|---------|-----------|
|
|
184
|
+
| `npm run setup` | **Wizard interativo de configuracao** (primeira instalacao) |
|
|
185
|
+
| `npm run dev` | Inicia o servidor de desenvolvimento (porta 3000) |
|
|
186
|
+
| `npm run build` | Gera o build de producao |
|
|
187
|
+
| `npm run start` | Inicia o servidor de producao |
|
|
188
|
+
| `npm run lint` | Executa o linter (ESLint) |
|
|
189
|
+
|
|
190
|
+
### Scripts Utilitarios
|
|
191
|
+
|
|
192
|
+
| Script | Descricao |
|
|
193
|
+
|--------|-----------|
|
|
194
|
+
| `node scripts/extract-memories.mjs --all` | Extrai memorias de conversas historicas via LLM |
|
|
195
|
+
| `node scripts/extract-memories.mjs --agent bmad-master` | Extrai memorias de um agente especifico |
|
|
196
|
+
| `node scripts/extract-memories.mjs --all --dry-run` | Simula extracao sem salvar |
|
|
197
|
+
| `node scripts/import-conversations.mjs` | Importa historico de conversas para o vault |
|
|
198
|
+
|
|
199
|
+
> Todos os scripts requerem o servidor rodando em `localhost:3000`.
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## Estrutura do Projeto
|
|
204
|
+
|
|
205
|
+
```
|
|
206
|
+
AITeam/
|
|
207
|
+
├── app/ # Next.js App Router
|
|
208
|
+
│ ├── api/ # API Routes (backend)
|
|
209
|
+
│ │ ├── agents/
|
|
210
|
+
│ │ │ ├── route.ts # GET: lista agentes com status
|
|
211
|
+
│ │ │ └── command/route.ts # POST: envia comando via SSE
|
|
212
|
+
│ │ ├── config/route.ts # GET: configuracao BMAD
|
|
213
|
+
│ │ ├── memory/
|
|
214
|
+
│ │ │ ├── route.ts # GET/POST: memoria e conversas (legado)
|
|
215
|
+
│ │ │ ├── vault/route.ts # GET/POST/PUT/DELETE: vault estruturado
|
|
216
|
+
│ │ │ ├── search/route.ts # GET: busca BM25
|
|
217
|
+
│ │ │ ├── checkpoint/route.ts # POST: checkpoint de sessao
|
|
218
|
+
│ │ │ ├── sleep/route.ts # POST: encerra sessao + enfileira extracao LLM
|
|
219
|
+
│ │ │ └── extract/route.ts # POST: trigger manual de extracao LLM
|
|
220
|
+
│ │ ├── session/
|
|
221
|
+
│ │ │ ├── route.ts # GET/POST: sessao ativa
|
|
222
|
+
│ │ │ └── stream/route.ts # GET: SSE de mudancas de sessao
|
|
223
|
+
│ │ ├── sprint/route.ts # GET/POST: status do sprint
|
|
224
|
+
│ │ └── workflows/route.ts # GET: workflows disponiveis
|
|
225
|
+
│ ├── actions/
|
|
226
|
+
│ │ └── setup-save.ts # Server Action: salva aiteam.config.json
|
|
227
|
+
│ ├── setup/
|
|
228
|
+
│ │ ├── page.tsx # Pagina de setup (health gate + Server Component)
|
|
229
|
+
│ │ └── SetupWizard.tsx # Wizard animado 3 fases (Client Component)
|
|
230
|
+
│ ├── globals.css # Design system pixel art (800+ linhas)
|
|
231
|
+
│ ├── layout.tsx # Root layout (VT323, pt-BR)
|
|
232
|
+
│ ├── error.tsx # Error boundary
|
|
233
|
+
│ └── page.tsx # Pagina principal (health gate)
|
|
234
|
+
│
|
|
235
|
+
├── components/ # Componentes React
|
|
236
|
+
│ ├── rooms/ # Salas do escritorio virtual
|
|
237
|
+
│ │ ├── ConferenceRoom.tsx
|
|
238
|
+
│ │ ├── JarvisOffice.tsx
|
|
239
|
+
│ │ └── Kitchen.tsx
|
|
240
|
+
│ ├── AgentsProvider.tsx # Context Provider global
|
|
241
|
+
│ ├── CommandPopup.tsx # Popup multi-agente
|
|
242
|
+
│ ├── FilterContext.tsx # Context de filtros (status + modulo)
|
|
243
|
+
│ ├── Layout.tsx # Shell (TopBar + ModelBar + BottomBar)
|
|
244
|
+
│ ├── MainContent.tsx # Orquestrador principal (~500 linhas)
|
|
245
|
+
│ ├── MarkdownRenderer.tsx # Renderer custom de Markdown
|
|
246
|
+
│ ├── MemoryVault.tsx # Dashboard do Memory Vault (modal)
|
|
247
|
+
│ ├── ModelBar.tsx # Barra de selecao de modelo e filtros
|
|
248
|
+
│ ├── PixelAvatar.tsx # Avatar SVG pixel art
|
|
249
|
+
│ ├── SpeechBubbleOverlay.tsx # Sistema de chat overlay
|
|
250
|
+
│ ├── ThinkingBubble.tsx # Indicador de pensamento animado
|
|
251
|
+
│ ├── WorkspaceCell.tsx # Celula de workspace individual
|
|
252
|
+
│ └── WorkspaceGrid.tsx # Grid de workspaces
|
|
253
|
+
│
|
|
254
|
+
├── lib/ # Logica de negocio e utilitarios
|
|
255
|
+
│ ├── aiteam-config.ts # Config loader (env var > arquivo > defaults)
|
|
256
|
+
│ ├── health.ts # Health check: BMAD, Cursor CLI, config
|
|
257
|
+
│ ├── setup-discovery.ts # Discovery ampliado para o wizard web
|
|
258
|
+
│ ├── bmad/ # Integracao BMAD
|
|
259
|
+
│ │ ├── discovery.ts # Scanner dinamico BMAD + deteccao Cursor CLI
|
|
260
|
+
│ │ ├── agent-mapping.ts # Mapeamento BmadAgent -> Agent
|
|
261
|
+
│ │ ├── chat-sessions.ts # Persistencia de sessoes de chat
|
|
262
|
+
│ │ ├── parse-agents.ts # Parser do agent-manifest.csv
|
|
263
|
+
│ │ ├── parse-config.ts # Parser do config.yaml
|
|
264
|
+
│ │ ├── parse-persona.ts # Parser de persona (.mdc)
|
|
265
|
+
│ │ ├── parse-session.ts # Estado de sessao + SSE
|
|
266
|
+
│ │ ├── parse-sprint.ts # Parser do sprint-status.yaml
|
|
267
|
+
│ │ └── parse-workflows.ts # Parser de workflows
|
|
268
|
+
│ ├── memory/ # Sistema de memoria v2
|
|
269
|
+
│ │ ├── extract.ts # Motor de extracao LLM
|
|
270
|
+
│ │ ├── inject.ts # Injecao de contexto (BM25 + budget)
|
|
271
|
+
│ │ ├── session.ts # Ciclo de vida de sessao (sleep/recover)
|
|
272
|
+
│ │ ├── types.ts # Tipos do sistema de memoria
|
|
273
|
+
│ │ └── vault.ts # CRUD do vault estruturado
|
|
274
|
+
│ ├── model-config.ts # Opcoes de modelos LLM disponiveis
|
|
275
|
+
│ └── types.ts # Tipos TypeScript globais
|
|
276
|
+
│
|
|
277
|
+
├── .memory/ # Memory Bank (persistente, gitignored)
|
|
278
|
+
│ ├── _project.md # Contexto global — injetado em todos agentes
|
|
279
|
+
│ ├── {agent-id}.md # Memory bank individual por agente
|
|
280
|
+
│ ├── conversations/ # Historico de conversas (JSON)
|
|
281
|
+
│ └── .vault/ # Vault estruturado e fila de extracao
|
|
282
|
+
│
|
|
283
|
+
├── docs/ # Documentacao do projeto
|
|
284
|
+
│ ├── screenshots/ # Screenshots da interface
|
|
285
|
+
│ ├── installation-guide.md # Guia completo de instalacao
|
|
286
|
+
│ ├── architecture.md # Arquitetura do sistema
|
|
287
|
+
│ ├── api-reference.md # Referencia completa da API
|
|
288
|
+
│ ├── developer-guide.md # Guia do desenvolvedor
|
|
289
|
+
│ ├── user-guide.md # Guia do usuario final
|
|
290
|
+
│ ├── memory-system.md # Arquitetura tecnica do sistema de memoria
|
|
291
|
+
│ ├── memory-system-guide.md # Guia funcional do sistema de memoria
|
|
292
|
+
│ ├── agent-catalog.md # Catalogo completo dos agentes BMAD
|
|
293
|
+
│ └── sprint-status.yaml # Status do sprint atual
|
|
294
|
+
│
|
|
295
|
+
├── scripts/ # Scripts utilitarios
|
|
296
|
+
│ ├── setup.mjs # Wizard de configuracao interativo (6 passos)
|
|
297
|
+
│ ├── extract-memories.mjs # Extracao em lote via LLM
|
|
298
|
+
│ └── import-conversations.mjs # Importacao de historico para o vault
|
|
299
|
+
│
|
|
300
|
+
├── aiteam.config.example.json # Exemplo de configuracao (referencia)
|
|
301
|
+
├── .cursor/ # Regras e skills do Cursor IDE
|
|
302
|
+
│ └── rules/bmad/ # Regras BMAD (.mdc): agentes e workflows
|
|
303
|
+
│
|
|
304
|
+
├── package.json
|
|
305
|
+
├── tsconfig.json
|
|
306
|
+
├── next.config.ts
|
|
307
|
+
└── .gitignore
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
---
|
|
311
|
+
|
|
312
|
+
## Documentacao
|
|
313
|
+
|
|
314
|
+
| Documento | Nivel | Descricao |
|
|
315
|
+
|-----------|-------|-----------|
|
|
316
|
+
| [Guia de Instalacao](docs/installation-guide.md) | Iniciante | Instalacao passo a passo, wizard de setup, solucao de problemas |
|
|
317
|
+
| [Arquitetura](docs/architecture.md) | Tecnico/Arquitetural | Diagramas, fluxos de dados, decisoes de design |
|
|
318
|
+
| [Referencia da API](docs/api-reference.md) | Tecnico | Endpoints, parametros, exemplos de request/response |
|
|
319
|
+
| [Guia do Desenvolvedor](docs/developer-guide.md) | Desenvolvedor | Setup, convencoes, como contribuir |
|
|
320
|
+
| [Guia do Usuario](docs/user-guide.md) | Usuario Final | Como usar o painel, interagir com agentes, Memory Vault |
|
|
321
|
+
| [Sistema de Memoria (tecnico)](docs/memory-system.md) | Tecnico/Conceitual | Arquitetura em camadas do sistema de memoria |
|
|
322
|
+
| [Guia de Memoria (funcional)](docs/memory-system-guide.md) | Usuario Final | Como usar o Memory Vault, estudos de caso, boas praticas |
|
|
323
|
+
| [Catalogo de Agentes](docs/agent-catalog.md) | Referencia | Todos os agentes, especialidades e como trabalhar com cada um |
|
|
324
|
+
|
|
325
|
+
---
|
|
326
|
+
|
|
327
|
+
## Agentes BMAD
|
|
328
|
+
|
|
329
|
+
O sistema descobre agentes automaticamente a partir do `bmad/_cfg/agent-manifest.csv`. A instalacao padrao inclui 14 agentes:
|
|
330
|
+
|
|
331
|
+
| Persona | Papel | Modulo |
|
|
332
|
+
|---------|-------|--------|
|
|
333
|
+
| **BMad Master** | Orquestrador principal, custodio de conhecimento | core |
|
|
334
|
+
| **BMad Builder** | Criacao de modulos, agentes e workflows BMAD | core |
|
|
335
|
+
| **Mary** | Business Analyst — pesquisa e requisitos de negocio | bmm |
|
|
336
|
+
| **John** | Product Manager — PRD, epicos, gestao de produto | bmm |
|
|
337
|
+
| **Winston** | Architect — arquitetura de sistemas e tech spec | bmm |
|
|
338
|
+
| **Sally** | UX Designer — design de experiencia e interface | bmm |
|
|
339
|
+
| **Bob** | Scrum Master — sprint planning e revisao de codigo | bmm |
|
|
340
|
+
| **Amelia** | Developer — implementacao de stories e features | bmm |
|
|
341
|
+
| **Murat** | Test Architect — estrategia e design de testes | bmm |
|
|
342
|
+
| **Paige** | Tech Writer — documentacao tecnica e knowledge | bmm |
|
|
343
|
+
| **Cloud Dragonborn** | Game Architect — arquitetura e sistemas de jogo | bmgd |
|
|
344
|
+
| **Samus Shepard** | Game Designer — GDD, narrativa e design de jogo | bmgd |
|
|
345
|
+
| **Link Freeman** | Game Developer — implementacao de jogo | bmgd |
|
|
346
|
+
| **Max** | Game Scrum Master — gestao agil para game dev | bmgd |
|
|
347
|
+
|
|
348
|
+
> Consulte o [Catalogo de Agentes](docs/agent-catalog.md) para detalhes sobre especialidades e comandos de cada agente.
|
|
349
|
+
|
|
350
|
+
---
|
|
351
|
+
|
|
352
|
+
## Configuracao
|
|
353
|
+
|
|
354
|
+
O AITEAM-X usa um arquivo `aiteam.config.json` local (gitignored) gerado pelo `npm run setup`. Para configuracao avancada, crie um `.env.local`:
|
|
355
|
+
|
|
356
|
+
```env
|
|
357
|
+
# Caminho alternativo para a instalacao BMAD
|
|
358
|
+
# Util para: BMAD em outro diretorio, CI/CD, multiplos projetos
|
|
359
|
+
AITEAM_BMAD_ROOT=/caminho/para/seu/projeto-bmad
|
|
360
|
+
|
|
361
|
+
# Sobrescreve o diretorio de memoria (util para testes)
|
|
362
|
+
MEMORY_DIR_OVERRIDE=/caminho/customizado/.memory
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
**Prioridade de configuracao para `bmadRoot`:**
|
|
366
|
+
```
|
|
367
|
+
AITEAM_BMAD_ROOT (env var) > aiteam.config.json > "./" (padrao)
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
Consulte o [Guia de Instalacao](docs/installation-guide.md) para todos os cenarios de configuracao.
|
|
371
|
+
|
|
372
|
+
---
|
|
373
|
+
|
|
374
|
+
## Contribuindo
|
|
375
|
+
|
|
376
|
+
1. Crie uma branch a partir de `develop`
|
|
377
|
+
2. Faca suas alteracoes seguindo as convencoes do projeto
|
|
378
|
+
3. Certifique-se de que `npm run lint` e `npm run build` passam
|
|
379
|
+
4. Abra um Pull Request para `develop`
|
|
380
|
+
|
|
381
|
+
Consulte o [Guia do Desenvolvedor](docs/developer-guide.md) para detalhes.
|
|
382
|
+
|
|
383
|
+
---
|
|
384
|
+
|
|
385
|
+
## Licenca
|
|
386
|
+
|
|
387
|
+
Projeto proprietario — **INOSX, Inc.** Todos os direitos reservados.
|
|
388
|
+
|
|
389
|
+
---
|
|
390
|
+
|
|
391
|
+
## Autor
|
|
392
|
+
|
|
393
|
+
**Mario Mayerle (MaMFLux)** — [INOSX](https://inosx.com)
|
|
394
|
+
|
|
395
|
+
---
|
|
396
|
+
|
|
397
|
+
*Construido com o BMAD Method — onde agentes de IA trabalham como um time.*
|
package/package.json
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "aiteam-x",
|
|
3
|
+
"version": "0.8.1",
|
|
4
|
+
"description": "Painel pixel art para orquestrar agentes BMAD em tempo real",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"bmad",
|
|
7
|
+
"ai",
|
|
8
|
+
"agents",
|
|
9
|
+
"cursor",
|
|
10
|
+
"dashboard"
|
|
11
|
+
],
|
|
12
|
+
"repository": {
|
|
13
|
+
"type": "git",
|
|
14
|
+
"url": "https://github.com/INOSX/AITeam.git"
|
|
15
|
+
},
|
|
16
|
+
"license": "UNLICENSED",
|
|
17
|
+
"private": false,
|
|
18
|
+
"files": [
|
|
19
|
+
"scripts/cli.mjs"
|
|
20
|
+
],
|
|
21
|
+
"bin": {
|
|
22
|
+
"aiteam-x": "./scripts/cli.mjs"
|
|
23
|
+
},
|
|
24
|
+
"scripts": {
|
|
25
|
+
"dev": "next dev",
|
|
26
|
+
"build": "next build",
|
|
27
|
+
"start": "next start",
|
|
28
|
+
"lint": "next lint",
|
|
29
|
+
"test": "vitest run",
|
|
30
|
+
"test:watch": "vitest",
|
|
31
|
+
"setup": "node scripts/setup.mjs"
|
|
32
|
+
},
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"@react-three/drei": "^10.7.7",
|
|
35
|
+
"@react-three/fiber": "^9.5.0",
|
|
36
|
+
"minisearch": "^7.2.0",
|
|
37
|
+
"next": "^15.0.0",
|
|
38
|
+
"react": "^19.0.0",
|
|
39
|
+
"react-dom": "^19.0.0",
|
|
40
|
+
"three": "^0.183.2",
|
|
41
|
+
"three-pathfinding": "^1.3.0",
|
|
42
|
+
"yaml": "^2.8.2"
|
|
43
|
+
},
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"@types/node": "^22",
|
|
46
|
+
"@types/react": "^19",
|
|
47
|
+
"@types/react-dom": "^19",
|
|
48
|
+
"@vitest/coverage-v8": "^4.1.0",
|
|
49
|
+
"eslint": "^9",
|
|
50
|
+
"eslint-config-next": "^15.0.0",
|
|
51
|
+
"typescript": "^5",
|
|
52
|
+
"vitest": "^4.1.0"
|
|
53
|
+
}
|
|
54
|
+
}
|
package/scripts/cli.mjs
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* AITEAM-X CLI — Instalação simplificada via npx
|
|
4
|
+
*
|
|
5
|
+
* Uso:
|
|
6
|
+
* npx aiteam-x@latest → cria no diretório atual
|
|
7
|
+
* npx aiteam-x@latest meu-projeto → cria em meu-projeto/
|
|
8
|
+
*
|
|
9
|
+
* Fluxo: degit (baixa template) → npm install → npm run setup → npm run dev
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { execSync, spawn } from "child_process";
|
|
13
|
+
import fs from "fs";
|
|
14
|
+
import path from "path";
|
|
15
|
+
import { fileURLToPath } from "url";
|
|
16
|
+
|
|
17
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
18
|
+
const REPO = "INOSX/AITeam";
|
|
19
|
+
|
|
20
|
+
const C = {
|
|
21
|
+
green: (s) => `\x1b[32m${s}\x1b[0m`,
|
|
22
|
+
yellow: (s) => `\x1b[33m${s}\x1b[0m`,
|
|
23
|
+
cyan: (s) => `\x1b[36m${s}\x1b[0m`,
|
|
24
|
+
bold: (s) => `\x1b[1m${s}\x1b[0m`,
|
|
25
|
+
dim: (s) => `\x1b[2m${s}\x1b[0m`,
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
function isDirEmpty(dir) {
|
|
29
|
+
if (!fs.existsSync(dir)) return true;
|
|
30
|
+
const entries = fs.readdirSync(dir);
|
|
31
|
+
return entries.length === 0;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function main() {
|
|
35
|
+
const targetDir = process.argv[2] || ".";
|
|
36
|
+
const cwd = process.cwd();
|
|
37
|
+
const absTarget = path.resolve(cwd, targetDir);
|
|
38
|
+
|
|
39
|
+
console.log("\n" + C.bold(C.cyan("╔══════════════════════════════════╗")));
|
|
40
|
+
console.log(C.bold(C.cyan("║ AITEAM-X — Instalação rápida ║")));
|
|
41
|
+
console.log(C.bold(C.cyan("╚══════════════════════════════════╝")) + "\n");
|
|
42
|
+
|
|
43
|
+
// Se diretório atual, verificar se está vazio
|
|
44
|
+
if (targetDir === "." && !isDirEmpty(cwd)) {
|
|
45
|
+
console.log(C.yellow(" O diretório atual não está vazio."));
|
|
46
|
+
console.log(C.dim(" Use: npx aiteam-x@latest nome-do-projeto"));
|
|
47
|
+
console.log(C.dim(" Ou crie uma pasta vazia e execute o comando dentro dela.\n"));
|
|
48
|
+
process.exit(1);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (targetDir !== "." && fs.existsSync(absTarget) && !isDirEmpty(absTarget)) {
|
|
52
|
+
console.log(C.yellow(` O diretório "${targetDir}" já existe e não está vazio.\n`));
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
try {
|
|
57
|
+
// 1. Baixar template via degit
|
|
58
|
+
console.log(C.bold("1. Baixando template AITEAM-X..."));
|
|
59
|
+
execSync(`npx degit@latest ${REPO} ${targetDir}`, {
|
|
60
|
+
stdio: "inherit",
|
|
61
|
+
cwd,
|
|
62
|
+
});
|
|
63
|
+
console.log(C.green(" ✓ Template baixado\n"));
|
|
64
|
+
|
|
65
|
+
// 2. npm install
|
|
66
|
+
console.log(C.bold("2. Instalando dependências..."));
|
|
67
|
+
execSync("npm install", {
|
|
68
|
+
stdio: "inherit",
|
|
69
|
+
cwd: absTarget,
|
|
70
|
+
});
|
|
71
|
+
console.log(C.green(" ✓ Dependências instaladas\n"));
|
|
72
|
+
|
|
73
|
+
// 3. npm run setup
|
|
74
|
+
console.log(C.bold("3. Executando wizard de configuração..."));
|
|
75
|
+
execSync("npm run setup", {
|
|
76
|
+
stdio: "inherit",
|
|
77
|
+
cwd: absTarget,
|
|
78
|
+
});
|
|
79
|
+
console.log(C.green(" ✓ Configuração concluída\n"));
|
|
80
|
+
|
|
81
|
+
// 4. Iniciar servidor
|
|
82
|
+
console.log(C.bold("4. Iniciando servidor de desenvolvimento..."));
|
|
83
|
+
console.log(C.dim(" Acesse http://localhost:3000 quando estiver pronto.\n"));
|
|
84
|
+
|
|
85
|
+
const child = spawn("npm", ["run", "dev"], {
|
|
86
|
+
stdio: "inherit",
|
|
87
|
+
cwd: absTarget,
|
|
88
|
+
shell: true,
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
child.on("error", (err) => {
|
|
92
|
+
console.error(C.yellow("Erro ao iniciar:"), err);
|
|
93
|
+
process.exit(1);
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
child.on("exit", (code) => {
|
|
97
|
+
process.exit(code ?? 0);
|
|
98
|
+
});
|
|
99
|
+
} catch (err) {
|
|
100
|
+
if (err.status !== undefined) process.exit(err.status);
|
|
101
|
+
console.error("\n" + C.yellow("Erro:"), err.message);
|
|
102
|
+
process.exit(1);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
main();
|