|
1 | | -# Dev Teams |
| 1 | +# Dev Teams · AI Operations Hub |
2 | 2 |
|
3 | | - |
4 | | - |
5 | | - |
6 | | - |
7 | | - |
| 3 | + |
| 4 | + |
| 5 | + |
| 6 | + |
| 7 | + |
8 | 8 |
|
9 | | -Dev Teams es una oficina 3D interactiva construida como una app estatica en una sola interfaz. Mezcla simulacion visual, chat multiagente, herramientas locales del navegador y respuestas reales con Groq cuando hay una API key valida. |
| 9 | +Una oficina 3D interactiva con ocho agentes de IA. Todo vive en un solo archivo HTML estático. Funciona en modo demo sin credenciales y escala a respuestas reales en cuanto conectas una API key de Groq. |
10 | 10 |
|
11 | | - |
| 11 | +--- |
| 12 | + |
| 13 | +## Vista general |
12 | 14 |
|
13 | | -## Que es esta app |
| 15 | + |
14 | 16 |
|
15 | | -La app funciona como una oficina virtual de Dev Teams: |
| 17 | +--- |
16 | 18 |
|
17 | | -- una escena 3D con agentes y eventos |
18 | | -- un panel lateral con arbol, flujo, consola, estado y dashboard |
19 | | -- un chat con agentes individuales o modo broadcast |
20 | | -- tools del navegador para leer y buscar archivos locales |
21 | | -- integracion opcional con Groq para respuestas reales |
| 19 | +## Qué incluye |
22 | 20 |
|
23 | | -La mayor parte de la logica vive en [`index.html`](/C:/Users/POWER/Desktop/vscode/Devops/index.html). |
| 21 | +### Escena 3D |
| 22 | +- Ocho agentes con personalidad, rol y área de trabajo propia: Ana (CEO), Sofía (PM), Yared (Founder & Architect), Diego (FE), Marta (QA), Luis (DevOps), Valentina (UX) y Andrés (Data) |
| 23 | +- Pathfinding A* con Web Worker |
| 24 | +- Sombras dinámicas, ciclo día/noche, modo FPS, clima real de Cartagena vía Open-Meteo |
| 25 | +- Eventos ambientales: delivery, pausas, ping pong, visitante Paula |
24 | 26 |
|
25 | | -## Funciones principales |
| 27 | +### Panel lateral |
| 28 | +- **Árbol** — jerarquía del equipo con estado en tiempo real |
| 29 | +- **Flujo** — pasos MCP por agente con métricas de tokens y costo |
| 30 | +- **Consola** — chat individual o broadcast inteligente |
| 31 | +- **Estado** — actividad global con gráfica de 60 segundos |
| 32 | +- **Dashboard** — KPIs ejecutivos, decisiones compartidas y salud operativa |
26 | 33 |
|
27 | | -- Oficina 3D con agentes, estados y movimientos en tiempo real |
28 | | -- Chat con un agente o con el equipo en modo broadcast inteligente |
29 | | -- Routing automatico del chat segun el tema |
| 34 | +### Chat y multiagente |
| 35 | +- Routing automático al agente más relevante por tema |
30 | 36 | - Planner interno para consultas complejas |
31 | | -- Delegacion entre agentes por rol |
32 | | -- Reuniones de equipo y reuniones 1:1 |
33 | | -- Asignacion de tareas con historial y resumen operativo |
34 | | -- Tools locales del navegador para explorar archivos |
35 | | -- Modo `demo` y modo `groq conectado` |
36 | | -- Eventos ambientados como delivery, pausas y visitante psicologa |
37 | | - |
38 | | -## Captura |
| 37 | +- Delegación entre roles con flechas de flujo |
| 38 | +- Compresión automática de memoria cuando el historial crece |
| 39 | +- Modo broadcast: selecciona los roles adecuados en lugar de disparar a todos |
39 | 40 |
|
40 | | - |
| 41 | +### Workspace (File System Access API) |
| 42 | +- Conexión a carpeta local sin subir nada a ningún servidor |
| 43 | +- Lectura de `.txt`, `.md`, `.json`, `.js`, `.ts`, PDF, Excel y Word |
| 44 | +- Búsqueda en texto plano a través del proyecto |
| 45 | +- Análisis de archivos por rol activo usando Groq |
41 | 46 |
|
42 | | -## Como ejecutar |
| 47 | +--- |
43 | 48 |
|
44 | | -Usa cualquier servidor estatico local. |
| 49 | +## Cómo ejecutar |
45 | 50 |
|
46 | | -Ejemplo: |
| 51 | +Cualquier servidor estático local funciona. La forma más rápida: |
47 | 52 |
|
48 | 53 | ```bash |
49 | 54 | python -m http.server 5500 |
50 | 55 | ``` |
51 | 56 |
|
52 | | -Luego abre: |
| 57 | +Luego abre `http://localhost:5500` en el navegador. |
53 | 58 |
|
54 | | -```text |
55 | | -http://localhost:5500 |
56 | | -``` |
| 59 | +También puedes usar Live Server, Vite, npx serve o cualquier equivalente. |
| 60 | + |
| 61 | +> **Nota:** para los comandos de workspace (`/carpeta`, `/leer`, etc.) necesitas un navegador basado en Chromium. Firefox no soporta `showDirectoryPicker` todavía. |
57 | 62 |
|
58 | | -Tambien puedes usar Live Server o cualquier servidor estatico equivalente. |
| 63 | +--- |
59 | 64 |
|
60 | | -## Como conectar Groq |
| 65 | +## Conectar Groq |
61 | 66 |
|
62 | | -1. Abre la app en el navegador. |
63 | | -2. Pulsa el boton `API`. |
64 | | -3. Selecciona el modelo. |
65 | | -4. Pega tu API key de Groq. |
66 | | -5. Pulsa `Guardar`. |
| 67 | +1. Abre la app y pulsa el botón **API** en la cabecera. |
| 68 | +2. Elige el modelo desde el selector. |
| 69 | +3. Pega tu API key (la consigues gratis en [console.groq.com](https://console.groq.com)). |
| 70 | +4. Pulsa **Guardar**. |
67 | 71 |
|
68 | | -Si la key es valida: |
| 72 | +La app valida la key con una llamada real antes de confirmar la conexión. Si falla, vuelve a modo demo automáticamente. La key se guarda en `sessionStorage` y nunca toca ningún backend propio. |
69 | 73 |
|
70 | | -- el badge deja de decir `demo mode` |
71 | | -- pasa a `groq conectado` |
72 | | -- el chat usa Groq |
73 | | -- se activan comportamientos live del equipo |
74 | | -- Paula puede intervenir ante prompts inadecuados |
| 74 | +### Modelos disponibles |
75 | 75 |
|
76 | | -Si la key no es valida: |
| 76 | +| Identificador | Descripción | |
| 77 | +|---|---| |
| 78 | +| `llama-3.3-70b-versatile` | Default equilibrado | |
| 79 | +| `llama-3.1-8b-instant` | Respuestas más rápidas | |
| 80 | +| `meta-llama/llama-4-maverick-17b-128e-instruct` | Mayor razonamiento | |
| 81 | +| `moonshotai/kimi-k2-instruct-0905` | Contexto de 256K | |
| 82 | +| `groq/compound` | Búsqueda en tiempo real | |
77 | 83 |
|
78 | | -- la app vuelve a `demo mode` |
79 | | -- no mantiene un estado de conexion falso |
| 84 | +--- |
80 | 85 |
|
81 | 86 | ## Comandos del chat |
82 | 87 |
|
83 | | -Estos comandos funcionan desde la consola: |
| 88 | +Escribe cualquiera de estos directamente en el input de la consola: |
84 | 89 |
|
85 | | -```text |
86 | | -/carpeta |
87 | | -/indexar |
88 | | -/archivos |
89 | | -/leer ruta/del/archivo |
90 | | -/buscar texto |
91 | | -/analizar ruta/del/archivo |
92 | | -/exportar |
| 90 | +``` |
| 91 | +/carpeta Conecta una carpeta local |
| 92 | +/indexar Reconstruye el índice de archivos |
| 93 | +/archivos Lista los archivos detectados |
| 94 | +/leer ruta Lee un archivo y lo abre en el visor |
| 95 | +/buscar texto Busca coincidencias en el workspace |
| 96 | +/analizar ruta Analiza un archivo con Groq desde el rol activo |
| 97 | +/exportar Descarga el chat actual como .txt |
93 | 98 | ``` |
94 | 99 |
|
95 | | -### Que hace cada comando |
96 | | - |
97 | | -- `/carpeta`: abre el selector de carpeta local |
98 | | -- `/indexar`: reconstruye el indice del workspace |
99 | | -- `/archivos`: lista los archivos detectados |
100 | | -- `/leer ruta`: lee un archivo local |
101 | | -- `/buscar texto`: busca coincidencias dentro del workspace |
102 | | -- `/analizar ruta`: analiza un archivo con Groq segun el rol activo |
103 | | -- `/exportar`: descarga el chat actual en `.txt` |
104 | | - |
105 | | -## Como funciona el chat |
106 | | - |
107 | | -### Chat individual |
108 | | - |
109 | | -La app puede redirigir automaticamente la conversacion al agente mas adecuado segun el tema. |
110 | | - |
111 | | -### Broadcast |
112 | | - |
113 | | -El modo `Todos` no dispara a los ocho agentes siempre. El sistema intenta escoger a los roles mas relevantes para cada pregunta. |
114 | | - |
115 | | -### Planner y delegacion |
116 | | - |
117 | | -En preguntas complejas la app puede: |
118 | | - |
119 | | -- generar un microplan interno |
120 | | -- pedir aportes a otros roles |
121 | | -- responder con una salida mas estructurada |
122 | | - |
123 | | -## Eventos especiales |
124 | | - |
125 | | -### Delivery |
126 | | - |
127 | | -Un repartidor puede entrar a la oficina, cruzar la puerta, entregar un paquete y salir. |
128 | | - |
129 | | -### Psicologa Paula |
| 100 | +El mini menú de herramientas en la consola expone las mismas acciones sin tener que escribir comandos. |
130 | 101 |
|
131 | | -Con Groq activo, Paula puede aparecer cuando detecta mensajes ofensivos, agresivos o inadecuados. |
| 102 | +--- |
132 | 103 |
|
133 | | -Comportamiento esperado: |
| 104 | +## Atajos de teclado |
134 | 105 |
|
135 | | -- entra a la oficina |
136 | | -- el equipo se gira para escucharla |
137 | | -- da una intervencion breve |
138 | | -- un miembro del equipo puede reaccionar |
| 106 | +| Tecla | Acción | |
| 107 | +|---|---| |
| 108 | +| `Space` | Siguiente paso del flujo | |
| 109 | +| `R` | Reset de la simulación | |
| 110 | +| `M` | Iniciar reunión de equipo | |
| 111 | +| `F` | Activar / salir de modo FPS | |
| 112 | +| `N` | Alternar día / noche | |
| 113 | +| `A` | Auto play del flujo activo | |
| 114 | +| `C` | Resetear cámara | |
| 115 | +| `?` | Mostrar atajos | |
| 116 | +| `Esc` | Cerrar modales / salir de FPS | |
139 | 117 |
|
140 | | -Nota: el flujo de visitantes y puerta sigue en iteracion y puede requerir ajustes finos. |
| 118 | +--- |
141 | 119 |
|
142 | 120 | ## Estructura del proyecto |
143 | 121 |
|
144 | | -```text |
| 122 | +``` |
145 | 123 | . |
146 | | -├─ index.html |
| 124 | +├─ index.html Toda la lógica de la app |
147 | 125 | ├─ README.md |
148 | 126 | └─ docs/ |
149 | 127 | └─ screenshots/ |
150 | 128 | ``` |
151 | 129 |
|
| 130 | +La app es intencionalmente un monolito de una página. No hay build step, no hay dependencias npm, no hay backend. Todo lo que necesitas está en `index.html` y en las CDN declaradas en el `<head>`. |
| 131 | + |
| 132 | +--- |
| 133 | + |
152 | 134 | ## Stack |
153 | 135 |
|
154 | | -- HTML |
155 | | -- CSS |
156 | | -- JavaScript |
157 | | -- Three.js |
158 | | -- Chart.js |
159 | | -- Groq API |
160 | | -- File System Access API |
| 136 | +- **Three.js r128** — escena 3D, materiales, luces y sombras |
| 137 | +- **Chart.js 4** — métricas en el panel de estado |
| 138 | +- **PDF.js** — lectura de archivos PDF locales |
| 139 | +- **SheetJS (xlsx)** — lectura de hojas de cálculo |
| 140 | +- **Mammoth.js** — extracción de texto de archivos Word |
| 141 | +- **Groq API** — inferencia LLM (llama 4, kimi k2 y otros) |
| 142 | +- **File System Access API** — acceso a carpetas locales sin subir archivos |
| 143 | +- **Web Workers** — pathfinding A* fuera del hilo principal |
| 144 | +- **Web Speech API** — entrada de voz en la consola |
| 145 | + |
| 146 | +--- |
| 147 | + |
| 148 | +## Persistencia |
| 149 | + |
| 150 | +| Dato | Dónde se guarda | |
| 151 | +|---|---| |
| 152 | +| API key | `sessionStorage` (no persiste entre sesiones) | |
| 153 | +| Modelo seleccionado | `localStorage` | |
| 154 | +| Historial de chat por agente | `localStorage` | |
| 155 | +| Historial de reuniones | `localStorage` | |
| 156 | +| Historial de tareas | `localStorage` | |
| 157 | +| XP y niveles | `localStorage` | |
| 158 | +| Logros | `localStorage` | |
| 159 | +| Notas del pizarrón | `localStorage` | |
| 160 | +| Decisiones compartidas | `localStorage` | |
161 | 161 |
|
162 | | -## Persistencia actual |
| 162 | +--- |
163 | 163 |
|
164 | | -- La API key se guarda en la sesion del navegador |
165 | | -- El modelo seleccionado se guarda localmente |
166 | | -- Parte del historial y estado se guarda en `localStorage` |
167 | | -- El acceso a carpetas depende del permiso del navegador |
| 164 | +## Seguridad y privacidad |
168 | 165 |
|
169 | | -## Requisitos practicos |
| 166 | +Esta versión está pensada para uso local y demos. Algunas consideraciones para uso en producción o en red: |
170 | 167 |
|
171 | | -- Navegador moderno |
172 | | -- Para `/carpeta` y tools locales, conviene usar Chromium o compatible con `showDirectoryPicker` |
173 | | -- Servidor local o `localhost` |
174 | | -- Conexion a internet si quieres usar Groq |
| 168 | +- Las llamadas a Groq se hacen directamente desde el navegador. En un entorno público, mueve esas llamadas a un backend para no exponer la key. |
| 169 | +- Los archivos del workspace nunca salen del navegador. La lectura es enteramente local. |
| 170 | +- No se envía telemetría ni datos a ningún servicio propio. |
175 | 171 |
|
176 | | -## Limitaciones actuales |
| 172 | +--- |
177 | 173 |
|
178 | | -- Es una app cliente puro, sin backend |
179 | | -- La API key vive en el navegador |
180 | | -- La logica principal esta concentrada en un solo archivo |
181 | | -- Algunos flujos visuales y eventos siguen en fase experimental |
| 174 | +## Limitaciones conocidas |
182 | 175 |
|
183 | | -## Seguridad |
| 176 | +- La lógica está concentrada en un solo archivo HTML. Facilita el despliegue pero dificulta la organización a largo plazo. |
| 177 | +- El modo FPS con pointer lock puede comportarse diferente según el navegador. |
| 178 | +- Algunos flujos de visitantes (delivery, Paula) están en iteración y pueden requerir ajustes finos. |
| 179 | +- La compresión de memoria del chat es automática pero no es perfecta para conversaciones muy largas. |
184 | 180 |
|
185 | | -Esta version esta pensada para demo y pruebas locales. |
| 181 | +--- |
186 | 182 |
|
187 | | -Para una version mas seria o publica: |
| 183 | +## Créditos |
188 | 184 |
|
189 | | -- mueve las llamadas a Groq a un backend |
190 | | -- protege credenciales fuera del cliente |
191 | | -- no publiques llaves reales en el front |
| 185 | +Construido desde cero en Cartagena de Indias 🇨🇴 por **Yared Henriquez**, Founder & Architect de Dev Teams. |
192 | 186 |
|
193 | | -## Estado del proyecto |
| 187 | +--- |
194 | 188 |
|
195 | | -Proyecto en fase `alpha`, orientado a: |
| 189 | +## Licencia |
196 | 190 |
|
197 | | -- demo visual |
198 | | -- simulacion multiagente |
199 | | -- tools locales del navegador |
200 | | -- integracion con Groq |
201 | | -- exploracion de flujos operativos en una sola pagina |
| 191 | +MIT |
0 commit comments