@johpaz/hive-sdk 0.4.3 → 0.4.5

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 (49) hide show
  1. package/CHANGELOG.md +20 -4
  2. package/README.md +48 -7
  3. package/SECURITY.md +17 -0
  4. package/docs/API-AGENTS.md +430 -0
  5. package/docs/API-ARTIFACTS.md +55 -0
  6. package/docs/API-CONTEXT-COMPILER.md +285 -0
  7. package/docs/API-CRON.md +188 -0
  8. package/docs/API-DAG-SCHEDULER.md +291 -0
  9. package/docs/API-HOOKS.md +147 -0
  10. package/docs/API-RESILIENCE.md +45 -0
  11. package/docs/API-SERVICES.md +458 -0
  12. package/docs/API-SESSIONS.md +146 -0
  13. package/docs/API-TOOLS-SKILLS-CHANNELS.md +499 -0
  14. package/docs/API-WORKERS-EVENTS.md +311 -0
  15. package/docs/HIVE-HARNESS.md +232 -0
  16. package/docs/INDEX.md +198 -0
  17. package/docs/SECURITY-GUARDRAILS.md +87 -0
  18. package/docs/TEMPLATE-HIVE-APP.md +360 -0
  19. package/docs/UPGRADING.md +65 -0
  20. package/docs/assets/logoblack.png +0 -0
  21. package/docs/assets/logocolor-dark.png +0 -0
  22. package/docs/assets/logocolorbg.png +0 -0
  23. package/docs/plans/2026-09-05-office-dependency-hardening-design.md +28 -0
  24. package/docs/plans/2026-09-06-dependency-audit-remediation-design.md +25 -0
  25. package/docs/plans/2026-09-06-pptx-image-size-remediation-design.md +54 -0
  26. package/docs/plans/2026-09-06-typescript7-bun142-documentation-design.md +48 -0
  27. package/package.json +9 -8
  28. package/packages/cli/templates/hive-app/package.json +3 -0
  29. package/packages/core/src/agent/llm-providers/hiveagents.ts +2 -2
  30. package/packages/core/src/agent/providers/index.ts +17 -1
  31. package/packages/core/src/api/createAgent.ts +4 -2
  32. package/packages/core/src/config/loader.ts +2 -1
  33. package/packages/core/src/gateway/server.ts +1 -1
  34. package/packages/core/src/mcp/transports/sse.ts +22 -8
  35. package/packages/core/src/mcp/transports/websocket.ts +11 -9
  36. package/packages/core/src/scheduler/CronScheduler.ts +4 -2
  37. package/packages/core/src/scheduler/cron/job.ts +2 -1
  38. package/packages/core/src/scheduler/cron/zoned-time.ts +2 -1
  39. package/packages/core/src/tool-runtime/tool-worker.ts +3 -1
  40. package/packages/core/src/tools/office/office-escribir-pptx.ts +3 -1
  41. package/packages/core/src/tools/office/office-leer-pdf.ts +93 -44
  42. package/packages/core/src/tools/office/office-leer-xlsx.ts +36 -10
  43. package/packages/core/src/tools/office/security-limits.ts +28 -0
  44. package/packages/core/src/utils/port.ts +33 -0
  45. package/packages/core/src/vendor/pptxgenjs/LICENSE +21 -0
  46. package/packages/core/src/vendor/pptxgenjs/README.md +17 -0
  47. package/packages/core/src/vendor/pptxgenjs/pptxgen.es.d.ts +17 -0
  48. package/packages/core/src/vendor/pptxgenjs/pptxgen.es.js +7368 -0
  49. package/packages/core/src/voice/index.ts +6 -5
package/docs/INDEX.md ADDED
@@ -0,0 +1,198 @@
1
+ # Índice de Documentación — Hive SDK
2
+
3
+ ## Documentos de Usuario
4
+
5
+ | Documento | Descripción |
6
+ |-----------|-------------|
7
+ | [README.md](../README.md) | Introducción, instalación, CLI, guía rápida |
8
+ | [UPGRADING.md](./UPGRADING.md) | Migración a Bun 1.4.2 y TypeScript 7.0.2 |
9
+ | [SECURITY-GUARDRAILS.md](./SECURITY-GUARDRAILS.md) | Límites de archivos, dependencias, runtime y controles de publicación |
10
+ | [API-HOOKS.md](./API-HOOKS.md) | Engancharse al ciclo de vida: bloquear una tool, auditar, observar la compactación |
11
+ | [API-ARTIFACTS.md](./API-ARTIFACTS.md) | Archivos fuera de la ventana de contexto, y su retención |
12
+ | [API-RESILIENCE.md](./API-RESILIENCE.md) | Reintentos con backoff y circuit breakers |
13
+ | [API-SESSIONS.md](./API-SESSIONS.md) | Sesiones por canal, historial, reanudación tras un corte |
14
+ | [API-SERVICES.md](./API-SERVICES.md) | **La superficie para una UI** — CRUD de agentes, enjambres, skills, modelos, MCP, cron |
15
+ | [API-AGENTS.md](./API-AGENTS.md) | createAgent, AgentLoop, Tool/Skill Selector, LLM Providers |
16
+ | [API-DAG-SCHEDULER.md](./API-DAG-SCHEDULER.md) | DAGScheduler, TaskGraph, Estrategias, Presets |
17
+ | [API-CRON.md](./API-CRON.md) | Tareas programadas: expresiones, zona horaria, misfires, motor sin dependencias |
18
+ | [API-WORKERS-EVENTS.md](./API-WORKERS-EVENTS.md) | **Bun Workers**, createWorker, WorkerPool, AgentBus, EventBus, Canvas |
19
+ | [API-TOOLS-SKILLS-CHANNELS.md](./API-TOOLS-SKILLS-CHANNELS.md) | Tools, Skills, MCP, Gateway, Channels, Tool Runtime, Storage |
20
+ | [API-CONTEXT-COMPILER.md](./API-CONTEXT-COMPILER.md) | Context Compiler, Message History, Scratchpad, EthicsGuard, ACE |
21
+ | [TEMPLATE-HIVE-APP.md](./TEMPLATE-HIVE-APP.md) | **Template hive-app** — estructura, opciones, personalización |
22
+ | [HIVE-HARNESS.md](../docs/HIVE-HARNESS.md) | Posicionamiento: Hive como Agent Harness vertical |
23
+
24
+ ---
25
+
26
+ ## Guía de Inicio Rápido
27
+
28
+ ### 1. Crear una app harness completa
29
+
30
+ ```bash
31
+ hives create-app my-hive
32
+ cd my-hive
33
+ bun install
34
+ cp .env.example .env
35
+ bun run dev
36
+ ```
37
+
38
+ ### 2. Crear Agente
39
+
40
+ ```typescript
41
+ import { createAgent, defineTool } from "@johpaz/hive-sdk";
42
+
43
+ const tool = defineTool({
44
+ name: "saludar",
45
+ description: "Saluda a alguien",
46
+ execute: async (args: { nombre: string }) => `¡Hola ${args.nombre}!`,
47
+ });
48
+
49
+ const agent = await createAgent({
50
+ name: "asistente",
51
+ provider: "openai",
52
+ model: "gpt-5.6-luna",
53
+ tools: [tool],
54
+ });
55
+
56
+ const respuesta = await agent.run("Saluda a Juan");
57
+ ```
58
+
59
+ ### 3. Crear un Bun Worker
60
+
61
+ ```typescript
62
+ import { createWorker } from "@johpaz/hive-sdk";
63
+
64
+ const worker = createWorker({
65
+ name: "researcher",
66
+ systemPrompt: "You are a research specialist...",
67
+ });
68
+
69
+ const result = await worker.run("Research quantum computing");
70
+ worker.terminate();
71
+ ```
72
+
73
+ ### 4. Ejecutar un Swarm (DAG)
74
+
75
+ ```typescript
76
+ import { DAGScheduler, TaskGraph } from "@johpaz/hive-sdk";
77
+
78
+ const graph = new TaskGraph([
79
+ { id: "task1", agentId: "worker", name: "T1", taskDescription: "Tarea 1", deps: [] },
80
+ { id: "task2", agentId: "worker", name: "T2", taskDescription: "Tarea 2", deps: ["task1"] },
81
+ ]);
82
+
83
+ const result = await new DAGScheduler().execute(graph);
84
+ ```
85
+
86
+ ### 5. Gateway + Canales
87
+
88
+ ```typescript
89
+ import { startGateway, ChannelManager, TelegramChannel } from "@johpaz/hive-sdk";
90
+
91
+ const server = await startGateway({ host: "127.0.0.1", port: 18790 });
92
+
93
+ const channels = new ChannelManager(config);
94
+ // channels.register("telegram", new TelegramChannel({ botToken: "..." }));
95
+ ```
96
+
97
+ ---
98
+
99
+ ## Estructura de Paquetes
100
+
101
+ ```
102
+ packages/
103
+ ├── core/ # @johpaz/hive-sdk
104
+ │ └── src/
105
+ │ ├── api/ # createAgent(), Agent interface
106
+ │ ├── agent/ # AgentLoop, ContextCompiler, ConversationStore
107
+ │ │ ├── providers/ # LLM providers (OpenAI, Anthropic, Gemini, Ollama)
108
+ │ │ └── tool-selector.ts, skill-selector.ts, playbook-selector.ts (BM25 sobre HiveDB)
109
+ │ ├── tools/ # 59 built-in tools + ToolRegistry + ToolExecutor
110
+ │ ├── skills/ # SkillLoader, defineSkill()
111
+ │ ├── swarm/ # DAGScheduler, TaskGraph, WorkerPool
112
+ │ ├── workers/ # Bun Workers: createWorker, WorkerPool, agent.worker.ts
113
+ │ ├── gateway/ # HTTP/WebSocket server (Bun.serve)
114
+ │ ├── channels/ # Telegram, Discord, WhatsApp, Slack, Webchat
115
+ │ ├── mcp/ # MCPClientManager + transports (SSE, WS, STDIO)
116
+ │ ├── storage/ # HiveDB (colecciones + BM25)
117
+ │ ├── canvas/ # CanvasManager + A2UI emitter
118
+ │ ├── scheduler/ # CronScheduler + DAG execution
119
+ │ ├── tool-runtime/ # Bun Worker pool para ejecución paralela de tools
120
+ │ ├── ethics/ # EthicsGuard
121
+ │ ├── memory/ # Scratchpad
122
+ │ ├── config/ # loadConfig, loadEnv, getHiveDir
123
+ │ ├── utils/ # logger, toon, crypto, retry
124
+ │ └── index.ts # Public API barrel
125
+
126
+ └── cli/ # Hive CLI
127
+ └── src/
128
+ ├── index.ts # Entry: hive <command>
129
+ └── commands/
130
+ ├── init.ts
131
+ ├── create-app.ts # Generar app harness completa
132
+ ├── add-tool.ts # Generar boilerplate de tool
133
+ ├── add-skill.ts # Generar boilerplate de skill
134
+ ├── add-worker.ts # Generar Bun Worker
135
+ ├── run.ts
136
+ ├── test.ts
137
+ └── trace.ts
138
+ ```
139
+
140
+ ---
141
+
142
+ ## Conceptos Clave
143
+
144
+ ### Agente
145
+ Unidad de ejecución con configuración, contexto y ciclo de ejecución.
146
+
147
+ ### Tool
148
+ Función invocable por el agente. Definida con `defineTool()`, seleccionada por búsqueda BM25.
149
+
150
+ ### Skill
151
+ Composición de tools con triggers semánticos. Definida con `defineSkill()`.
152
+
153
+ ### Bun Worker
154
+ Thread aislado que ejecuta un agente con system prompt propio. Creado con `createWorker()`.
155
+
156
+ ### WorkerPool
157
+ Gestiona múltiples Bun Workers para ejecución paralela de tareas.
158
+
159
+ ### Swarm (DAG)
160
+ Ejecución paralela de múltiples agentes con dependencias. Topological sort automático.
161
+
162
+ ### Gateway
163
+ Servidor HTTP/WebSocket que expone el agente como API.
164
+
165
+ ### Channel
166
+ Integración con plataformas de mensajería (Telegram, Discord, WhatsApp, Slack, Webchat).
167
+
168
+ ### MCP
169
+ Model Context Protocol — herramientas externas via STDIO/SSE/WebSocket.
170
+
171
+ ---
172
+
173
+ ## Variables de Entorno
174
+
175
+ ```bash
176
+ HIVE_HOME=~/.hive # Raíz de datos (base, artefactos, config)
177
+ HIVE_HOST=127.0.0.1 # Gateway host
178
+ HIVE_PORT=18790 # Gateway port
179
+ OPENAI_API_KEY=sk-... # OpenAI
180
+ ANTHROPIC_API_KEY=sk-ant-... # Anthropic
181
+ LOG_LEVEL=info # debug | info | warn | error
182
+ ```
183
+
184
+ ---
185
+
186
+ ## Tests
187
+
188
+ ```bash
189
+ # Tests unitarios (paralelo)
190
+ bun test
191
+
192
+ # Tests con timeout extendido
193
+ bun test --timeout 60000
194
+ ```
195
+
196
+ ---
197
+
198
+ *Documentación Hive SDK — ver `version` en package.json*
@@ -0,0 +1,87 @@
1
+ # Guardrails de seguridad y compatibilidad
2
+
3
+ Este documento enumera controles implementados y verificables. No sustituye la
4
+ actualización de dependencias ni convierte un límite cooperativo en aislamiento
5
+ de proceso.
6
+
7
+ ## Dependencias y cadena de suministro
8
+
9
+ - `bun.lock` fija el grafo reproducible y CI instala con
10
+ `bun install --frozen-lockfile`.
11
+ - `bun audit` es el control de aceptación para advisories conocidos. No existen
12
+ exclusiones generales ni overrides usados sólo para silenciar el auditor.
13
+ - PDF.js está en 6.3.289 o posterior dentro de esa línea segura.
14
+ - SheetJS CE se instala desde la distribución oficial 0.20.3; el paquete npm
15
+ abandonado en 0.18.5 no forma parte del grafo.
16
+ - Baileys está fijado exactamente en `7.0.0-rc14` para evitar retroceder a una
17
+ release candidate vulnerable.
18
+ - PptxGenJS 4.0.1 se conserva como artefacto ESM vendorizado, con licencia,
19
+ procedencia y SHA-256. No se instala su dependencia muerta `image-size`.
20
+
21
+ Toda actualización del artefacto PPTX debe verificar su origen y hash, ejecutar
22
+ la prueba OOXML y volver a ejecutar el audit.
23
+
24
+ ## Archivos PDF
25
+
26
+ Antes de leer un PDF, `office_leer_pdf` exige un archivo regular y limita el
27
+ tamaño a **25 MiB**. El parser se configura con:
28
+
29
+ ```typescript
30
+ enableScripting: false
31
+ isEvalSupported: false
32
+ ```
33
+
34
+ Cada solicitud puede extraer como máximo **200 páginas**. Los rangos deben usar
35
+ enteros válidos y el lector comprueba un deadline de **30 segundos** entre
36
+ páginas. `loadingTask.destroy()` se ejecuta siempre al terminar.
37
+
38
+ El deadline es cooperativo: no puede interrumpir una operación interna de
39
+ PDF.js que bloquee antes de devolver el control. El límite de bytes, el límite
40
+ de páginas y la versión corregida de la dependencia son los controles primarios.
41
+
42
+ ## Archivos XLSX
43
+
44
+ `office_leer_xlsx` exige un archivo regular y rechaza entradas mayores a
45
+ **15 MiB** antes de cargarlas. El workbook acepta como máximo **50 hojas** y se
46
+ leen como máximo **10.000 filas por hoja**; `sheetRows` limita además el trabajo
47
+ del parser. Hay un deadline cooperativo de **30 segundos** comprobado entre
48
+ hojas.
49
+
50
+ SheetJS se carga bajo demanda. Si la distribución oficial no está instalada, la
51
+ herramienta devuelve un error operativo explícito en vez de propagar un
52
+ `Cannot find module` ambiguo.
53
+
54
+ ## Escritura PPTX
55
+
56
+ `office_escribir_pptx` expone sólo portada, texto, viñetas y notas. No acepta
57
+ rutas, buffers ni datos de imágenes. El artefacto vendorizado importa `jszip`,
58
+ pero no `image-size`; su hash y procedimiento de actualización están en
59
+ `packages/core/src/vendor/pptxgenjs/README.md`.
60
+
61
+ Agregar `addImage`, fondos con imágenes o cualquier entrada binaria invalida
62
+ este guardrail y requiere una revisión de seguridad antes de publicarse.
63
+
64
+ ## Runtime, tipos y transportes
65
+
66
+ - Bun **>=1.4.2** está declarado en `engines`; CI usa exactamente 1.4.2.
67
+ - TypeScript **7.0.2** está fijado para hacer reproducible el typecheck.
68
+ - SSE acepta sólo el contrato de stream que consume (`read`) y no depende de la
69
+ extensión Bun `readMany`.
70
+ - WebSocket delimita `Bun.WebSocketOptions` sin desactivar el chequeo de tipos;
71
+ conserva reintentos limitados y distingue cierres intencionales.
72
+ - Audio usa `Uint8Array<ArrayBuffer>` antes de construir `Blob`, evitando
73
+ compartir memoria respaldada por `SharedArrayBuffer` con la petición.
74
+
75
+ ## Verificación antes de publicar
76
+
77
+ ```bash
78
+ bun --version
79
+ bun install --frozen-lockfile
80
+ bun run typecheck
81
+ bun test
82
+ bun audit
83
+ git diff --check
84
+ ```
85
+
86
+ El resultado aceptable es Bun 1.4.2 o posterior, typecheck y pruebas sin fallos,
87
+ audit sin vulnerabilidades y un diff sin errores de whitespace.
@@ -0,0 +1,360 @@
1
+ # Template `hive-app` — Documentación Completa
2
+
3
+ El template `hive-app` genera una **aplicación harness completa** lista para ejecutar. Incluye gateway HTTP/WebSocket, agente coordinador, configuración de canales, base de datos HiveDB, y deployment con Docker.
4
+
5
+ ---
6
+
7
+ ## Generar una app
8
+
9
+ ```bash
10
+ hives create-app my-hive
11
+ ```
12
+
13
+ Esto crea el directorio `my-hive/` con la estructura completa.
14
+
15
+ ---
16
+
17
+ ## Estructura generada
18
+
19
+ ```
20
+ my-hive/
21
+ ├── package.json # Dependencias y scripts
22
+ ├── hive.config.ts # Configuración del harness
23
+ ├── docker-compose.yml # Deployment con Docker
24
+ ├── .env.example # Variables de entorno de ejemplo
25
+ ├── .gitignore # Archivos ignorados por git
26
+ └── src/
27
+ ├── main.ts # Entry point — arranca gateway + agente
28
+ └── agents/
29
+ └── coordinator.ts # Definición del agente coordinador
30
+ ```
31
+
32
+ ---
33
+
34
+ ## Archivos y opciones
35
+
36
+ ### `package.json`
37
+
38
+ ```json
39
+ {
40
+ "name": "my-hive",
41
+ "version": "0.1.0",
42
+ "type": "module",
43
+ "scripts": {
44
+ "dev": "bun run src/main.ts",
45
+ "start": "bun run src/main.ts",
46
+ "build": "bun build src/main.ts --outdir dist --target bun"
47
+ },
48
+ "dependencies": {
49
+ "@johpaz/hive-sdk": "latest"
50
+ }
51
+ }
52
+ ```
53
+
54
+ | Script | Comando | Descripción |
55
+ |--------|---------|-------------|
56
+ | `dev` | `bun run src/main.ts` | Ejecutar en desarrollo |
57
+ | `start` | `bun run src/main.ts` | Ejecutar en producción |
58
+ | `build` | `bun build ...` | Compilar a `dist/` |
59
+
60
+ ---
61
+
62
+ ### `hive.config.ts`
63
+
64
+ Configuración central del harness.
65
+
66
+ ```typescript
67
+ import type { Config } from "@johpaz/hive-sdk";
68
+
69
+ export default {
70
+ name: "my-hive",
71
+ gateway: {
72
+ host: process.env.HIVE_HOST ?? "127.0.0.1",
73
+ port: Number(process.env.HIVE_PORT ?? 18790),
74
+ },
75
+ channels: {
76
+ webchat: { enabled: true }, // Siempre habilitado
77
+ telegram: { enabled: false }, // Requiere TELEGRAM_BOT_TOKEN
78
+ discord: { enabled: false }, // Requiere DISCORD_BOT_TOKEN
79
+ whatsapp: { enabled: false }, // Requiere configuración adicional
80
+ slack: { enabled: false }, // Requiere SLACK_BOT_TOKEN
81
+ },
82
+ database: {
83
+ path: process.env.HIVE_DATA_DIR ?? "./data/hive.db",
84
+ },
85
+ } satisfies Config;
86
+ ```
87
+
88
+ #### Opciones de configuración
89
+
90
+ | Opción | Tipo | Default | Descripción |
91
+ |--------|------|---------|-------------|
92
+ | `name` | `string` | `"my-hive"` | Nombre de la aplicación |
93
+ | `gateway.host` | `string` | `"127.0.0.1"` | Host del gateway |
94
+ | `gateway.port` | `number` | `18790` | Puerto del gateway |
95
+ | `channels.webchat.enabled` | `boolean` | `true` | Canal webchat integrado |
96
+ | `channels.telegram.enabled` | `boolean` | `false` | Bot de Telegram |
97
+ | `channels.discord.enabled` | `boolean` | `false` | Bot de Discord |
98
+ | `channels.whatsapp.enabled` | `boolean` | `false` | Bot de WhatsApp |
99
+ | `channels.slack.enabled` | `boolean` | `false` | Bot de Slack |
100
+ | `database.path` | `string` | `"./data/hive"` | Ruta de la base de datos HiveDB |
101
+
102
+ ---
103
+
104
+ ### `src/main.ts`
105
+
106
+ Entry point de la aplicación. Realiza:
107
+
108
+ 1. Inicializa la base de datos (`ensureHiveDb`, que además siembra el catálogo)
109
+ 2. Crea el agente coordinador (`createAgent`)
110
+ 3. Inicializa el ChannelManager
111
+ 4. Arranca el gateway (`startGateway`)
112
+ 5. Maneja shutdown graceful (`SIGINT`)
113
+
114
+ ```typescript
115
+ import {
116
+ createAgent,
117
+ startGateway,
118
+ ensureHiveDb,
119
+ ChannelManager,
120
+ logger,
121
+ } from "@johpaz/hive-sdk";
122
+ import config from "../hive.config.ts";
123
+
124
+ const log = logger.child("app");
125
+
126
+ async function main() {
127
+ log.info(`Starting my-hive...`);
128
+
129
+ await ensureHiveDb();
130
+
131
+ const agent = await createAgent({
132
+ name: "coordinator",
133
+ provider: "openai",
134
+ model: "gpt-5.6-luna",
135
+ systemPrompt: "You are a helpful AI assistant...",
136
+ });
137
+
138
+ const channelManager = new ChannelManager();
139
+ // TODO: configure channels from hive.config.ts
140
+
141
+ const gateway = await startGateway({
142
+ host: config.gateway?.host,
143
+ port: config.gateway?.port,
144
+ agentId: "coordinator",
145
+ });
146
+
147
+ log.info(`my-hive is running at http://${gateway.hostname}:${gateway.port}`);
148
+ }
149
+
150
+ main().catch((err) => {
151
+ log.error("Fatal error:", err);
152
+ process.exit(1);
153
+ });
154
+ ```
155
+
156
+ #### Personalizar el agente
157
+
158
+ Puedes cambiar el `provider`, `model`, y `systemPrompt`:
159
+
160
+ ```typescript
161
+ const agent = await createAgent({
162
+ name: "coordinator",
163
+ provider: "anthropic", // cualquiera de los 16 del catálogo
164
+ model: "claude-3-5-sonnet-20241022",
165
+ systemPrompt: "Tu system prompt personalizado...",
166
+ });
167
+ ```
168
+
169
+ #### Añadir tools al agente
170
+
171
+ ```typescript
172
+ import { defineTool } from "@johpaz/hive-sdk";
173
+
174
+ const searchTool = defineTool({
175
+ name: "search",
176
+ description: "Search the web",
177
+ execute: async (args: { query: string }) => {
178
+ // Implementation
179
+ return { results: [] };
180
+ },
181
+ });
182
+
183
+ const agent = await createAgent({
184
+ name: "coordinator",
185
+ provider: "openai",
186
+ model: "gpt-5.6-luna",
187
+ tools: [searchTool],
188
+ });
189
+ ```
190
+
191
+ ---
192
+
193
+ ### `src/agents/coordinator.ts`
194
+
195
+ Definición standalone del agente coordinador. Puedes importarlo desde `main.ts` o usarlo directamente.
196
+
197
+ ```typescript
198
+ import { createAgent } from "@johpaz/hive-sdk";
199
+
200
+ export const coordinatorAgent = await createAgent({
201
+ name: "coordinator",
202
+ provider: "openai",
203
+ model: "gpt-5.6-luna",
204
+ systemPrompt: "You are the coordinator agent...",
205
+ });
206
+ ```
207
+
208
+ ---
209
+
210
+ ### `docker-compose.yml`
211
+
212
+ Deployment containerizado.
213
+
214
+ ```yaml
215
+ services:
216
+ app:
217
+ image: oven/bun:latest
218
+ working_dir: /app
219
+ volumes:
220
+ - .:/app
221
+ - hive-data:/app/data
222
+ ports:
223
+ - "${HIVE_PORT:-18790}:18790"
224
+ environment:
225
+ - HIVE_HOST=0.0.0.0
226
+ - HIVE_PORT=18790
227
+ - HIVE_DATA_DIR=/app/data
228
+ - OPENAI_API_KEY=${OPENAI_API_KEY}
229
+ - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
230
+ command: ["bun", "run", "src/main.ts"]
231
+ restart: unless-stopped
232
+
233
+ volumes:
234
+ hive-data:
235
+ ```
236
+
237
+ #### Deployment
238
+
239
+ ```bash
240
+ # Copiar variables de entorno
241
+ cp .env.example .env
242
+ # Editar .env con tus API keys
243
+
244
+ # Levantar con Docker
245
+ docker compose up -d
246
+
247
+ # Ver logs
248
+ docker compose logs -f
249
+ ```
250
+
251
+ ---
252
+
253
+ ### `.env.example`
254
+
255
+ Variables de entorno disponibles:
256
+
257
+ ```bash
258
+ # Hive Harness Configuration
259
+ HIVE_HOST=127.0.0.1
260
+ HIVE_PORT=18790
261
+ HIVE_DATA_DIR=./data
262
+
263
+ # LLM Providers
264
+ OPENAI_API_KEY=sk-...
265
+ ANTHROPIC_API_KEY=sk-ant-...
266
+ GOOGLE_API_KEY=...
267
+
268
+ # Channels (enable as needed)
269
+ TELEGRAM_BOT_TOKEN=
270
+ DISCORD_BOT_TOKEN=
271
+ SLACK_BOT_TOKEN=
272
+
273
+ # Logging
274
+ LOG_LEVEL=info
275
+ ```
276
+
277
+ | Variable | Requerida | Descripción |
278
+ |----------|-----------|-------------|
279
+ | `HIVE_HOST` | No | Host del gateway |
280
+ | `HIVE_PORT` | No | Puerto del gateway |
281
+ | `HIVE_HOME` | No | Directorio de datos (HiveDB en `<HIVE_HOME>/data`) |
282
+ | `OPENAI_API_KEY` | Sí* | API key de OpenAI |
283
+ | `ANTHROPIC_API_KEY` | Sí* | API key de Anthropic |
284
+ | `GOOGLE_API_KEY` | Sí* | API key de Gemini |
285
+ | `TELEGRAM_BOT_TOKEN` | No | Token del bot de Telegram |
286
+ | `DISCORD_BOT_TOKEN` | No | Token del bot de Discord |
287
+ | `SLACK_BOT_TOKEN` | No | Token del bot de Slack |
288
+ | `LOG_LEVEL` | No | `debug` \| `info` \| `warn` \| `error` |
289
+
290
+ \* Al menos una API key de LLM es requerida.
291
+
292
+ ---
293
+
294
+ ## Personalización avanzada
295
+
296
+ ### Añadir canales
297
+
298
+ ```typescript
299
+ // src/main.ts
300
+ import { TelegramChannel, DiscordChannel } from "@johpaz/hive-sdk";
301
+
302
+ const channelManager = new ChannelManager(config);
303
+
304
+ if (config.channels.telegram.enabled) {
305
+ channelManager.register("telegram", new TelegramChannel({
306
+ botToken: process.env.TELEGRAM_BOT_TOKEN!,
307
+ }));
308
+ }
309
+
310
+ if (config.channels.discord.enabled) {
311
+ channelManager.register("discord", new DiscordChannel({
312
+ botToken: process.env.DISCORD_BOT_TOKEN!,
313
+ }));
314
+ }
315
+
316
+ await channelManager.initialize();
317
+ ```
318
+
319
+ ### Añadir workers especializados
320
+
321
+ ```bash
322
+ cd my-hive
323
+ hives add-worker researcher
324
+ hives add-worker coder
325
+ ```
326
+
327
+ Esto genera `src/workers/researcher.worker.ts` y `src/workers/coder.worker.ts`.
328
+
329
+ ### Añadir tools
330
+
331
+ ```bash
332
+ cd my-hive
333
+ hives add-tool search-docs
334
+ ```
335
+
336
+ Genera `src/tools/search-docs.ts`.
337
+
338
+ ### Añadir skills
339
+
340
+ ```bash
341
+ cd my-hive
342
+ hives add-skill onboarding
343
+ ```
344
+
345
+ Genera `src/skills/onboarding.ts`.
346
+
347
+ ---
348
+
349
+ ## Tests del template
350
+
351
+ El template incluye tests para verificar que la estructura se genera correctamente.
352
+
353
+ ```bash
354
+ cd my-hive
355
+ bun test
356
+ ```
357
+
358
+ ---
359
+
360
+ *Documentación Hive SDK — ver `version` en package.json*
@@ -0,0 +1,65 @@
1
+ # Actualización a Bun 1.4.2 y TypeScript 7
2
+
3
+ Hive SDK requiere **Bun 1.4.2 o posterior** y usa **TypeScript 7.0.2** para
4
+ desarrollo y verificación. El SDK se publica como TypeScript, por lo que estas
5
+ versiones también importan al compilar una aplicación consumidora.
6
+
7
+ ## Actualizar un checkout del SDK
8
+
9
+ ```bash
10
+ bun --version # debe ser 1.4.2 o posterior
11
+ bun install --frozen-lockfile
12
+ bun run typecheck
13
+ bun test
14
+ bun audit
15
+ ```
16
+
17
+ El `package.json` raíz fija TypeScript 7.0.2 para que CI y desarrollo resuelvan
18
+ el mismo compilador. `@hive/core` acepta versiones compatibles desde 7.0.2
19
+ mediante su peer `^7.0.2`, porque publica sus fuentes. `@types/bun` permanece en
20
+ 1.4.1: es la versión publicada de tipos correspondiente disponible al cerrar
21
+ esta migración.
22
+
23
+ ## Actualizar una aplicación consumidora
24
+
25
+ 1. Instala Bun 1.4.2 o una versión posterior compatible.
26
+ 2. Actualiza el compilador de la aplicación:
27
+
28
+ ```bash
29
+ bun add --dev typescript@7.0.2 @types/bun@^1.4.1
30
+ ```
31
+
32
+ 3. Regenera la instalación con `bun install` y ejecuta el typecheck propio.
33
+ 4. No añadas `skipLibCheck` para ocultar errores nuevos del SDK. Hive ya lo usa
34
+ internamente para declaraciones de terceros, pero su código fuente debe
35
+ seguir compilando completo.
36
+
37
+ ## Cambios de tipos relevantes
38
+
39
+ TypeScript 7 distingue el respaldo de memoria de los typed arrays. Un
40
+ `Uint8Array<ArrayBufferLike>` podría usar `SharedArrayBuffer` y ya no es válido
41
+ automáticamente como `BlobPart`; Hive conserva bytes respaldados por
42
+ `ArrayBuffer` al construir audio para APIs de transcripción.
43
+
44
+ Con `DOM` y los tipos de Bun activos simultáneamente también aparecen dos APIs
45
+ con definiciones superpuestas:
46
+
47
+ - `ReadableStreamDefaultReader` de Bun añade `readMany()`, aunque el transporte
48
+ SSE sólo necesita `read()`. El transporte depende de ese contrato mínimo.
49
+ - El constructor DOM de `WebSocket` sólo conoce subprotocolos; Bun permite
50
+ `Bun.WebSocketOptions`, incluidos headers. El transporte delimita esa
51
+ extensión en un tipo de constructor local.
52
+
53
+ Estos adaptadores están en la frontera con el runtime. No deben reemplazarse por
54
+ `any`, `@ts-ignore` o `@ts-expect-error`: hacerlo convertiría una incompatibilidad
55
+ real de plataforma en un falso resultado verde.
56
+
57
+ ## Compatibilidad y CI
58
+
59
+ Los workflows fijan Bun 1.4.2, instalan con `--frozen-lockfile`, ejecutan el
60
+ typecheck de TypeScript 7 y la suite. También generan una aplicación nueva y la
61
+ compilan enlazada contra el SDK del commit, no contra la última versión de npm.
62
+
63
+ Antes de elevar Bun o TypeScript otra vez, actualiza primero CI, reproduce el
64
+ typecheck localmente y documenta cualquier cambio de tipos observable para los
65
+ consumidores.
Binary file