@johpaz/hive-sdk 0.0.15 → 0.0.17

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 (94) hide show
  1. package/CHANGELOG.md +35 -1
  2. package/README.md +179 -57
  3. package/docs/API-AGENTS.md +9 -9
  4. package/docs/API-CONTEXT-COMPILER.md +13 -13
  5. package/docs/API-DAG-SCHEDULER.md +8 -8
  6. package/docs/API-TOOLS-SKILLS-CHANNELS.md +150 -93
  7. package/docs/API-WORKERS-EVENTS.md +206 -59
  8. package/docs/INDEX.md +99 -50
  9. package/docs/README.md +117 -24
  10. package/docs/TEMPLATE-HIVE-APP.md +360 -0
  11. package/package.json +13 -6
  12. package/packages/cli/bin/hives +2 -0
  13. package/packages/cli/src/commands/add-skill.ts +42 -0
  14. package/packages/cli/src/commands/add-tool.ts +45 -0
  15. package/packages/cli/src/commands/add-worker.ts +49 -0
  16. package/packages/cli/src/commands/create-app-utils.ts +32 -0
  17. package/packages/cli/src/commands/create-app.test.ts +151 -0
  18. package/packages/cli/src/commands/create-app.ts +35 -0
  19. package/packages/cli/src/index.ts +22 -6
  20. package/packages/cli/templates/hive-app/.env.example +17 -0
  21. package/packages/cli/templates/hive-app/docker-compose.yml +20 -0
  22. package/packages/cli/templates/hive-app/hive.config.ts +19 -0
  23. package/packages/cli/templates/hive-app/package.json +16 -0
  24. package/packages/cli/templates/hive-app/src/agents/coordinator.ts +9 -0
  25. package/packages/cli/templates/hive-app/src/main.ts +56 -0
  26. package/packages/core/src/auth/auth.ts +108 -0
  27. package/packages/core/src/auth/index.ts +1 -0
  28. package/packages/core/src/canvas/canvas.test.ts +32 -0
  29. package/packages/core/src/canvas/emitter.ts +1 -1
  30. package/packages/core/src/canvas/index.ts +3 -6
  31. package/packages/core/src/channels/base.ts +154 -0
  32. package/packages/core/src/channels/channels.test.ts +18 -0
  33. package/packages/core/src/channels/discord.ts +273 -0
  34. package/packages/core/src/channels/index.ts +7 -0
  35. package/packages/core/src/channels/manager.ts +450 -0
  36. package/packages/core/src/channels/slack.ts +323 -0
  37. package/packages/core/src/channels/telegram.ts +612 -0
  38. package/packages/core/src/channels/webchat.ts +139 -0
  39. package/packages/core/src/channels/whatsapp.ts +548 -0
  40. package/packages/core/src/events/agent-bus.ts +460 -0
  41. package/packages/core/src/events/event-bus.ts +169 -0
  42. package/packages/core/src/gateway/channel-notify.ts +32 -7
  43. package/packages/core/src/gateway/gateway.test.ts +38 -0
  44. package/packages/core/src/gateway/index.ts +2 -1
  45. package/packages/core/src/gateway/server.ts +139 -0
  46. package/packages/core/src/heartbeat/index.ts +157 -0
  47. package/packages/core/src/index.ts +44 -0
  48. package/packages/core/src/multimodal/index.ts +2 -2
  49. package/packages/core/src/multimodal/vision-service.ts +283 -0
  50. package/packages/core/src/plugins/api.ts +128 -0
  51. package/packages/core/src/plugins/index.ts +2 -0
  52. package/packages/core/src/plugins/loader.ts +365 -0
  53. package/packages/core/src/resilience/circuit-breaker.ts +225 -0
  54. package/packages/core/src/scheduler/CronScheduler.ts +699 -0
  55. package/packages/core/src/scheduler/dag/AgentExecutor.ts +53 -0
  56. package/packages/core/src/scheduler/dag/DAGScheduler.ts +250 -0
  57. package/packages/core/src/scheduler/dag/EventBridge.ts +122 -0
  58. package/packages/core/src/scheduler/dag/TaskGraph.ts +192 -0
  59. package/packages/core/src/scheduler/dag/TaskNode.ts +97 -0
  60. package/packages/core/src/scheduler/dag/TaskResult.ts +22 -0
  61. package/packages/core/src/scheduler/dag/errors.ts +37 -0
  62. package/packages/core/src/scheduler/dag/index.ts +26 -0
  63. package/packages/core/src/scheduler/dag/presets/ResearchPreset.ts +97 -0
  64. package/packages/core/src/scheduler/dag/strategies/ParallelStrategy.ts +21 -0
  65. package/packages/core/src/scheduler/dag/strategies/PriorityStrategy.ts +46 -0
  66. package/packages/core/src/scheduler/index.ts +22 -0
  67. package/packages/core/src/scheduler/integration.ts +237 -0
  68. package/packages/core/src/scheduler/scheduler.test.ts +19 -0
  69. package/packages/core/src/scheduler/types.ts +164 -0
  70. package/packages/core/src/security/google-chat.ts +269 -0
  71. package/packages/core/src/security/index.ts +192 -4
  72. package/packages/core/src/security/rate-limit.ts +270 -0
  73. package/packages/core/src/security/signal.ts +321 -0
  74. package/packages/core/src/storage/crypto.ts +198 -66
  75. package/packages/core/src/storage/storage.test.ts +37 -0
  76. package/packages/core/src/swarm/swarm.test.ts +24 -0
  77. package/packages/core/src/tool-runtime/index.ts +522 -0
  78. package/packages/core/src/tool-runtime/tool-runtime.test.ts +91 -0
  79. package/packages/core/src/tool-runtime/tool-worker.ts +125 -0
  80. package/packages/core/src/voice/index.ts +5 -18
  81. package/packages/core/src/workers/WorkerPool.ts +167 -0
  82. package/packages/core/src/workers/agent.worker.ts +68 -0
  83. package/packages/core/src/workers/createWorker.ts +144 -0
  84. package/packages/core/src/workers/index.ts +5 -0
  85. package/packages/core/src/workers/workers.test.ts +48 -0
  86. package/test/setup-db.ts +2 -2
  87. package/tsconfig.json +2 -1
  88. package/.github/CODEOWNERS +0 -9
  89. package/.github/workflows/publish.yml +0 -89
  90. package/.github/workflows/version-bump.yml +0 -102
  91. package/bun.lock +0 -543
  92. package/bunfig.toml +0 -7
  93. package/packages/core/src/agent/providers.ts +0 -1
  94. package/packages/core/src/gateway/channel-notify.test.ts +0 -14
@@ -2,49 +2,214 @@
2
2
 
3
3
  ## Índice
4
4
 
5
- 1. [Workers](#workers)
6
- 2. [AgentBus](#agentbus)
7
- 3. [EventBus](#eventbus)
8
- 4. [Canvas Events](#canvas-events)
5
+ 1. [Bun Workers](#bun-workers)
6
+ 2. [createWorker](#createworker)
7
+ 3. [WorkerPool](#workerpool)
8
+ 4. [AgentBus](#agentbus)
9
+ 5. [EventBus](#eventbus)
10
+ 6. [Canvas Events](#canvas-events)
9
11
 
10
12
  ---
11
13
 
12
- ## Workers
14
+ ## Bun Workers
13
15
 
14
- Los workers ejecutan tareas dentro de un swarm.
16
+ Hive SDK soporta **workers individuales con Bun Workers**. Cada worker corre en un thread aislado (`Bun.Worker` con `{ smol: true }`), con su propio system prompt y configuración.
15
17
 
16
- ### AgentExecutor
18
+ ### Casos de uso
19
+
20
+ - **Workers especializados**: Un worker para research, otro para coding, otro para review
21
+ - **Paralelismo**: Ejecutar múltiples tareas simultáneamente sin bloquear el hilo principal
22
+ - **Aislamiento**: Cada worker tiene su propio contexto y no interfere con otros
23
+
24
+ ---
25
+
26
+ ## createWorker
27
+
28
+ Crea un worker individual con Bun Workers.
29
+
30
+ ### Firma
31
+
32
+ ```typescript
33
+ import { createWorker } from "@johpaz/hive-sdk";
34
+
35
+ const worker = createWorker(config: WorkerConfig): WorkerInstance
36
+ ```
37
+
38
+ ### WorkerConfig
39
+
40
+ ```typescript
41
+ interface WorkerConfig {
42
+ name: string; // Identificador del worker
43
+ agentId?: string; // ID del agente en DB (default: name)
44
+ systemPrompt?: string; // System prompt personalizado
45
+ model?: string; // Modelo LLM
46
+ provider?: string; // Provider LLM
47
+ }
48
+ ```
49
+
50
+ ### WorkerInstance
51
+
52
+ ```typescript
53
+ interface WorkerInstance {
54
+ readonly name: string;
55
+ readonly id: string;
56
+
57
+ // Ejecutar y esperar resultado
58
+ run(message: string, opts?: {
59
+ threadId?: string;
60
+ channel?: string;
61
+ }): Promise<string>;
62
+
63
+ // Streaming de resultados
64
+ runStream(message: string, opts?: {
65
+ threadId?: string;
66
+ channel?: string;
67
+ }): AsyncGenerator<WorkerChunk>;
68
+
69
+ // Terminar el worker
70
+ terminate(): void;
71
+ }
72
+ ```
73
+
74
+ ### Ejemplo básico
17
75
 
18
76
  ```typescript
19
- import { AgentExecutor } from "@hive/core";
77
+ import { createWorker } from "@johpaz/hive-sdk";
78
+
79
+ const researcher = createWorker({
80
+ name: "researcher",
81
+ systemPrompt: `
82
+ You are a research specialist.
83
+ Provide concise, factual summaries with citations.
84
+ Always verify facts before presenting them.
85
+ `,
86
+ });
87
+
88
+ const result = await researcher.run("Latest advances in quantum computing 2025");
89
+ console.log(result);
20
90
 
21
- const executor = new AgentExecutor();
22
- const result = await executor.execute(node, depResults, threadId);
91
+ researcher.terminate();
23
92
  ```
24
93
 
25
- ### WorkerPool
94
+ ### Streaming
95
+
96
+ ```typescript
97
+ const stream = researcher.runStream("Explain quantum entanglement");
98
+
99
+ for await (const chunk of stream) {
100
+ if (chunk.type === "chunk") {
101
+ console.log("Chunk:", chunk.chunk);
102
+ } else if (chunk.type === "result") {
103
+ console.log("Final:", chunk.content);
104
+ } else if (chunk.type === "error") {
105
+ console.error("Error:", chunk.error);
106
+ }
107
+ }
108
+ ```
109
+
110
+ ---
111
+
112
+ ## WorkerPool
26
113
 
27
- Pool de workers para ejecución concurrente.
114
+ Gestiona un pool de Bun Workers para ejecución paralela.
115
+
116
+ ### Firma
28
117
 
29
118
  ```typescript
30
- import { setSchedulerForCleanup, executeScheduledTask } from "@hive/core/swarm/workers";
119
+ import { WorkerPool } from "@johpaz/hive-sdk";
120
+
121
+ const pool = new WorkerPool(config?: WorkerPoolConfig);
122
+ ```
31
123
 
32
- // Programar task
33
- await executeScheduledTask(job);
124
+ ### WorkerPoolConfig
125
+
126
+ ```typescript
127
+ interface WorkerPoolConfig {
128
+ maxWorkers?: number; // Default: 4
129
+ taskTimeoutMs?: number; // Default: 120000
130
+ workerConfig?: WorkerConfig;
131
+ }
34
132
  ```
35
133
 
36
- ### Worker Custom
134
+ ### Métodos
37
135
 
38
136
  ```typescript
39
- import type { IAgentExecutor } from "@hive/core";
137
+ // Ejecutar una tarea
138
+ pool.execute(task: PoolTask): Promise<PoolTaskResult>
40
139
 
41
- const myWorker: IAgentExecutor = {
42
- async execute(node, depResults, threadId) {
43
- const context = Object.entries(depResults)
44
- .map(([id, r]) => `${id}: ${r}`).join("\n");
45
- return await processTask(node.taskDescription, context);
140
+ // Ejecutar múltiples tareas en paralelo
141
+ pool.executeBatch(tasks: PoolTask[]): Promise<PoolTaskResult[]>
142
+
143
+ // Ejecutar con límite de concurrencia
144
+ pool.executeWithConcurrency(tasks: PoolTask[], concurrency: number): Promise<PoolTaskResult[]>
145
+
146
+ // Estadísticas
147
+ pool.stats // { total, busy, idle }
148
+
149
+ // Cerrar todos los workers
150
+ pool.shutdown(): void
151
+ ```
152
+
153
+ ### Ejemplo: Batch processing
154
+
155
+ ```typescript
156
+ import { WorkerPool } from "@johpaz/hive-sdk";
157
+
158
+ const pool = new WorkerPool({
159
+ maxWorkers: 4,
160
+ workerConfig: {
161
+ name: "analyzer",
162
+ systemPrompt: "You analyze text and extract key insights.",
46
163
  },
47
- };
164
+ });
165
+
166
+ const articles = [
167
+ { id: "a1", message: "Summarize article about AI..." },
168
+ { id: "a2", message: "Summarize article about climate..." },
169
+ { id: "a3", message: "Summarize article about space..." },
170
+ ];
171
+
172
+ const results = await pool.executeBatch(articles);
173
+
174
+ for (const result of results) {
175
+ console.log(`${result.taskId}: ${result.result} (${result.durationMs}ms)`);
176
+ }
177
+
178
+ pool.shutdown();
179
+ ```
180
+
181
+ ### Ejemplo: Concurrency limit
182
+
183
+ ```typescript
184
+ // Procesar 100 tareas pero solo 5 a la vez
185
+ const tasks = Array.from({ length: 100 }, (_, i) => ({
186
+ id: `task-${i}`,
187
+ message: `Process item ${i}`,
188
+ }));
189
+
190
+ const results = await pool.executeWithConcurrency(tasks, 5);
191
+ ```
192
+
193
+ ---
194
+
195
+ ## CLI: hives add-worker
196
+
197
+ Genera un Bun Worker en tu proyecto:
198
+
199
+ ```bash
200
+ cd my-project
201
+ hives add-worker researcher
202
+ ```
203
+
204
+ Crea `src/workers/researcher.worker.ts`:
205
+
206
+ ```typescript
207
+ import { createWorker } from "@johpaz/hive-sdk";
208
+
209
+ export const researcherWorker = createWorker({
210
+ name: "researcher",
211
+ systemPrompt: `You are the ResearcherWorker specialist...`,
212
+ });
48
213
  ```
49
214
 
50
215
  ---
@@ -54,7 +219,7 @@ const myWorker: IAgentExecutor = {
54
219
  Sistema de eventos singleton para comunicación entre agentes.
55
220
 
56
221
  ```typescript
57
- import { agentBus, getUnreadMessagesForWorker } from "@hive/core";
222
+ import { agentBus, getUnreadMessagesForWorker } from "@johpaz/hive-sdk";
58
223
 
59
224
  // Publicar evento
60
225
  agentBus.publish("worker:task_started", { taskId: "task-1" }, "worker-1");
@@ -71,15 +236,12 @@ unsub();
71
236
  ### Métodos Helper
72
237
 
73
238
  ```typescript
74
- import {
75
- getUnreadMessagesForWorker,
76
- getProjectMessageHistory
77
- } from "@hive/core";
239
+ import {
240
+ getUnreadMessagesForWorker,
241
+ getProjectMessageHistory,
242
+ } from "@johpaz/hive-sdk";
78
243
 
79
- // Mensajes no leídos para un worker
80
244
  const messages = getUnreadMessagesForWorker("worker-1");
81
-
82
- // Historial de un proyecto
83
245
  const history = getProjectMessageHistory("project-1");
84
246
  ```
85
247
 
@@ -90,7 +252,7 @@ const history = getProjectMessageHistory("project-1");
90
252
  EventBus global singleton (eventos del sistema).
91
253
 
92
254
  ```typescript
93
- import { eventBus } from "@hive/core";
255
+ import { eventBus } from "@johpaz/hive-sdk";
94
256
 
95
257
  // Escuchar eventos
96
258
  eventBus.on("agent:start", (data) => {
@@ -108,45 +270,30 @@ eventBus.emit("agent:complete", { agentId: "a1", result: "ok" });
108
270
  Eventos de actualización visual del canvas.
109
271
 
110
272
  ```typescript
111
- import { emitCanvas } from "@hive/core/canvas";
273
+ import { emitCanvas, subscribeCanvas, unsubscribeCanvas } from "@johpaz/hive-sdk";
112
274
 
113
- // Actualizar estado de un nodo
275
+ // Suscribirse a eventos canvas
276
+ const handler = (data: any) => console.log("Canvas:", data);
277
+ subscribeCanvas(handler);
278
+
279
+ // Emitir evento
114
280
  emitCanvas("canvas:node_update", {
115
281
  nodeId: "agent-1",
116
282
  changes: { status: "thinking" },
117
283
  });
118
284
 
119
- // Eventos disponibles
120
- emitCanvas("canvas:node_update", { nodeId, changes });
121
- emitCanvas("canvas:graph_update", { graphId, changes });
122
- emitCanvas("canvas:worker_update", { workerId, changes });
285
+ // Desuscribirse
286
+ unsubscribeCanvas(handler);
123
287
  ```
124
288
 
125
289
  ### CanvasManager
126
290
 
127
291
  ```typescript
128
- import { CanvasManager, canvasManager } from "@hive/core/canvas";
129
-
130
- // Singleton
131
- const canvas = canvasManager;
292
+ import { CanvasManager } from "@johpaz/hive-sdk";
132
293
 
133
- // Suscribirse a updates de un nodo
134
- canvas.subscribe("agent-1", (update) => {
135
- console.log("Node update:", update);
136
- });
294
+ const canvas = new CanvasManager();
137
295
  ```
138
296
 
139
- ### WebSocket Canvas
140
-
141
- ```typescript
142
- // Cliente se conecta
143
- const ws = new WebSocket("ws://localhost:3000/ws/canvas");
144
-
145
- ws.onmessage = (event) => {
146
- const update = JSON.parse(event.data);
147
- // { type: "node_update", nodeId: "...", changes: {...} }
148
- };
297
+ ---
149
298
 
150
- // Enviar mensaje al agente
151
- ws.send(JSON.stringify({ type: "user_message", message: "ejecutar tarea" }));
152
- ```
299
+ *Documentación Hive SDK v0.0.17*
package/docs/INDEX.md CHANGED
@@ -4,21 +4,33 @@
4
4
 
5
5
  | Documento | Descripción |
6
6
  |-----------|-------------|
7
- | [README.md](../README.md) | Introducción y guía rápida |
8
- | [API-AGENTS.md](./API-AGENTS.md) | AgentLoop, Tool/Skill Selector, LLM Providers |
7
+ | [README.md](../README.md) | Introducción, instalación, CLI, guía rápida |
8
+ | [API-AGENTS.md](./API-AGENTS.md) | createAgent, AgentLoop, Tool/Skill Selector, LLM Providers |
9
9
  | [API-DAG-SCHEDULER.md](./API-DAG-SCHEDULER.md) | DAGScheduler, TaskGraph, Estrategias, Presets |
10
- | [API-WORKERS-EVENTS.md](./API-WORKERS-EVENTS.md) | Workers, AgentBus, Eventos del sistema |
11
- | [API-TOOLS-SKILLS-CHANNELS.md](./API-TOOLS-SKILLS-CHANNELS.md) | Tools, Skills, Canvas, Storage |
12
- | [API-CONTEXT-COMPILER.md](./API-CONTEXT-COMPILER.md) | Context Compiler, MCP, LLM Client |
10
+ | [API-WORKERS-EVENTS.md](./API-WORKERS-EVENTS.md) | **Bun Workers**, createWorker, WorkerPool, AgentBus, EventBus, Canvas |
11
+ | [API-TOOLS-SKILLS-CHANNELS.md](./API-TOOLS-SKILLS-CHANNELS.md) | Tools, Skills, MCP, Gateway, Channels, Tool Runtime, Storage |
12
+ | [API-CONTEXT-COMPILER.md](./API-CONTEXT-COMPILER.md) | Context Compiler, Message History, Scratchpad, EthicsGuard, ACE |
13
+ | [TEMPLATE-HIVE-APP.md](./TEMPLATE-HIVE-APP.md) | **Template hive-app** — estructura, opciones, personalización |
14
+ | [HIVE-HARNESS.md](../docs/HIVE-HARNESS.md) | Posicionamiento: Hive como Agent Harness vertical |
13
15
 
14
16
  ---
15
17
 
16
18
  ## Guía de Inicio Rápido
17
19
 
18
- ### 1. Crear Agente (nueva API)
20
+ ### 1. Crear una app harness completa
21
+
22
+ ```bash
23
+ hives create-app my-hive
24
+ cd my-hive
25
+ bun install
26
+ cp .env.example .env
27
+ bun run dev
28
+ ```
29
+
30
+ ### 2. Crear Agente
19
31
 
20
32
  ```typescript
21
- import { createAgent, defineTool } from "@hive/core";
33
+ import { createAgent, defineTool } from "@johpaz/hive-sdk";
22
34
 
23
35
  const tool = defineTool({
24
36
  name: "saludar",
@@ -36,49 +48,85 @@ const agent = await createAgent({
36
48
  const respuesta = await agent.run("Saluda a Juan");
37
49
  ```
38
50
 
39
- ### 2. Crear un Swarm
51
+ ### 3. Crear un Bun Worker
52
+
53
+ ```typescript
54
+ import { createWorker } from "@johpaz/hive-sdk";
55
+
56
+ const worker = createWorker({
57
+ name: "researcher",
58
+ systemPrompt: "You are a research specialist...",
59
+ });
60
+
61
+ const result = await worker.run("Research quantum computing");
62
+ worker.terminate();
63
+ ```
64
+
65
+ ### 4. Ejecutar un Swarm (DAG)
40
66
 
41
67
  ```typescript
42
- import { DAGScheduler, TaskGraph } from "@hive/core";
68
+ import { DAGScheduler, TaskGraph } from "@johpaz/hive-sdk";
43
69
 
44
70
  const graph = new TaskGraph([
45
- { id: "task1", agentId: "worker", taskDescription: "Tarea 1", deps: [] },
46
- { id: "task2", agentId: "worker", taskDescription: "Tarea 2", deps: ["task1"] },
71
+ { id: "task1", agentId: "worker", name: "T1", taskDescription: "Tarea 1", deps: [] },
72
+ { id: "task2", agentId: "worker", name: "T2", taskDescription: "Tarea 2", deps: ["task1"] },
47
73
  ]);
48
74
 
49
75
  const result = await new DAGScheduler().execute(graph);
50
76
  ```
51
77
 
78
+ ### 5. Gateway + Canales
79
+
80
+ ```typescript
81
+ import { startGateway, ChannelManager, TelegramChannel } from "@johpaz/hive-sdk";
82
+
83
+ const server = await startGateway({ host: "127.0.0.1", port: 18790 });
84
+
85
+ const channels = new ChannelManager(config);
86
+ // channels.register("telegram", new TelegramChannel({ botToken: "..." }));
87
+ ```
88
+
52
89
  ---
53
90
 
54
91
  ## Estructura de Paquetes
55
92
 
56
93
  ```
57
94
  packages/
58
- ├── core/ # @hive/core
95
+ ├── core/ # @johpaz/hive-sdk
59
96
  │ └── src/
60
- │ ├── agent/ # AgentLoop, ContextCompiler
97
+ │ ├── api/ # createAgent(), Agent interface
98
+ │ ├── agent/ # AgentLoop, ContextCompiler, ConversationStore
61
99
  │ │ ├── providers/ # LLM providers (OpenAI, Anthropic, Gemini, Ollama)
62
- │ │ └── selectors/ # FTS5 ToolSelector, SkillSelector
63
- │ ├── tools/ # 66 built-in tools + ToolRegistry
100
+ │ │ └── selectors/ # FTS5 ToolSelector, SkillSelector, PlaybookSelector
101
+ │ ├── tools/ # 70+ built-in tools + ToolRegistry + ToolExecutor
64
102
  │ ├── skills/ # SkillLoader, defineSkill()
65
103
  │ ├── swarm/ # DAGScheduler, TaskGraph, WorkerPool
66
- ├── strategies/ # Parallel, Priority
67
- │ └── presets/ # HiveLearn, Research
68
- │ ├── mcp/ # MCPClientManager + transports
104
+ │ ├── workers/ # Bun Workers: createWorker, WorkerPool, agent.worker.ts
105
+ ├── gateway/ # HTTP/WebSocket server (Bun.serve)
106
+ │ ├── channels/ # Telegram, Discord, WhatsApp, Slack, Webchat
107
+ │ ├── mcp/ # MCPClientManager + transports (SSE, WS, STDIO)
69
108
  │ ├── storage/ # SQLite (bun:sqlite) + FTS5
70
- │ ├── ace/ # Tracer, Reflector, Curator
71
- │ ├── canvas/ # CanvasManager + A2UI
72
- │ ├── memory/ # Scratchpad
109
+ │ ├── canvas/ # CanvasManager + A2UI emitter
110
+ │ ├── scheduler/ # CronScheduler + DAG execution
111
+ │ ├── tool-runtime/ # Bun Worker pool para ejecución paralela de tools
73
112
  │ ├── ethics/ # EthicsGuard
74
- │ ├── config/ # loadConfig
75
- │ ├── utils/ # logger, toon
76
- │ ├── api/ # createAgent()
77
- │ └── index.ts # Public API
113
+ │ ├── memory/ # Scratchpad
114
+ │ ├── config/ # loadConfig, loadEnv, getHiveDir
115
+ │ ├── utils/ # logger, toon, crypto, retry
116
+ │ └── index.ts # Public API barrel
78
117
 
79
- └── cli/ # @hive/cli
118
+ └── cli/ # Hive CLI
80
119
  └── src/
81
- └── commands/ # init, run, test, trace
120
+ ├── index.ts # Entry: hive <command>
121
+ └── commands/
122
+ ├── init.ts
123
+ ├── create-app.ts # Generar app harness completa
124
+ ├── add-tool.ts # Generar boilerplate de tool
125
+ ├── add-skill.ts # Generar boilerplate de skill
126
+ ├── add-worker.ts # Generar Bun Worker
127
+ ├── run.ts
128
+ ├── test.ts
129
+ └── trace.ts
82
130
  ```
83
131
 
84
132
  ---
@@ -86,32 +134,31 @@ packages/
86
134
  ## Conceptos Clave
87
135
 
88
136
  ### Agente
89
- Unidad de ejecución con:
90
- - Configuración (provider, model, system prompt)
91
- - Contexto (historial, tools, skills)
92
- - Ciclo de ejecución (prompt → LLM → tools → response)
137
+ Unidad de ejecución con configuración, contexto y ciclo de ejecución.
93
138
 
94
139
  ### Tool
95
- Función que el agente puede invocar:
96
- - Definida con `defineTool()`
97
- - Seleccionada dinámicamente via FTS5
98
- - Ejecutada por el worker
140
+ Función invocable por el agente. Definida con `defineTool()`, seleccionada vía FTS5.
99
141
 
100
142
  ### Skill
101
- Composición de tools con triggers semánticos:
102
- - Definida con `defineSkill()`
103
- - Categorización automática
143
+ Composición de tools con triggers semánticos. Definida con `defineSkill()`.
144
+
145
+ ### Bun Worker
146
+ Thread aislado que ejecuta un agente con system prompt propio. Creado con `createWorker()`.
147
+
148
+ ### WorkerPool
149
+ Gestiona múltiples Bun Workers para ejecución paralela de tareas.
104
150
 
105
151
  ### Swarm (DAG)
106
- Ejecución paralela de múltiples agentes:
107
- - Nodos = tareas con dependencias
108
- - Topological sort automático
109
- - Workers paralelos con estrategias
152
+ Ejecución paralela de múltiples agentes con dependencias. Topological sort automático.
153
+
154
+ ### Gateway
155
+ Servidor HTTP/WebSocket que expone el agente como API.
156
+
157
+ ### Channel
158
+ Integración con plataformas de mensajería (Telegram, Discord, WhatsApp, Slack, Webchat).
110
159
 
111
160
  ### MCP
112
- Model Context Protocol:
113
- - Servidores MCP como herramientas externas
114
- - Transports: STDIO, SSE, WebSocket
161
+ Model Context Protocol — herramientas externas via STDIO/SSE/WebSocket.
115
162
 
116
163
  ---
117
164
 
@@ -119,9 +166,11 @@ Model Context Protocol:
119
166
 
120
167
  ```bash
121
168
  HIVE_DATA_DIR=./data # Directorio de datos
169
+ HIVE_HOST=127.0.0.1 # Gateway host
170
+ HIVE_PORT=18790 # Gateway port
122
171
  OPENAI_API_KEY=sk-... # OpenAI
123
172
  ANTHROPIC_API_KEY=sk-ant-... # Anthropic
124
- LOG_LEVEL=info # debug | info | warn | error
173
+ LOG_LEVEL=info # debug | info | warn | error
125
174
  ```
126
175
 
127
176
  ---
@@ -129,13 +178,13 @@ LOG_LEVEL=info # debug | info | warn | error
129
178
  ## Tests
130
179
 
131
180
  ```bash
132
- # Tests unitarios
133
- bun test packages/core/src/
181
+ # Tests unitarios (paralelo)
182
+ bun test
134
183
 
135
184
  # Tests con timeout extendido
136
- bun test --timeout 60000 packages/core/src/
185
+ bun test --timeout 60000
137
186
  ```
138
187
 
139
188
  ---
140
189
 
141
- *Documentación Hive SDK v2.0.0*
190
+ *Documentación Hive SDK v0.0.17*