@johpaz/hive-sdk 0.0.14 → 0.0.16

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 (257) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/README.md +280 -0
  3. package/docs/API-AGENTS.md +316 -0
  4. package/docs/API-CONTEXT-COMPILER.md +252 -0
  5. package/docs/API-DAG-SCHEDULER.md +273 -0
  6. package/docs/API-TOOLS-SKILLS-CHANNELS.md +350 -0
  7. package/docs/API-WORKERS-EVENTS.md +299 -0
  8. package/docs/INDEX.md +190 -0
  9. package/docs/README.md +161 -0
  10. package/docs/TEMPLATE-HIVE-APP.md +360 -0
  11. package/package.json +60 -104
  12. package/packages/cli/bin/hive +2 -0
  13. package/packages/cli/package.json +17 -0
  14. package/packages/cli/src/commands/add-skill.ts +42 -0
  15. package/packages/cli/src/commands/add-tool.ts +45 -0
  16. package/packages/cli/src/commands/add-worker.ts +49 -0
  17. package/packages/cli/src/commands/create-app-utils.ts +32 -0
  18. package/packages/cli/src/commands/create-app.test.ts +151 -0
  19. package/packages/cli/src/commands/create-app.ts +35 -0
  20. package/packages/cli/src/commands/init.ts +56 -0
  21. package/packages/cli/src/commands/run.ts +45 -0
  22. package/packages/cli/src/commands/test.ts +42 -0
  23. package/packages/cli/src/commands/trace.ts +55 -0
  24. package/packages/cli/src/index.ts +59 -0
  25. package/packages/cli/templates/hive-app/.env.example +17 -0
  26. package/packages/cli/templates/hive-app/docker-compose.yml +20 -0
  27. package/packages/cli/templates/hive-app/hive.config.ts +19 -0
  28. package/packages/cli/templates/hive-app/package.json +16 -0
  29. package/packages/cli/templates/hive-app/src/agents/coordinator.ts +9 -0
  30. package/packages/cli/templates/hive-app/src/main.ts +56 -0
  31. package/packages/core/package.json +58 -0
  32. package/packages/core/src/ace/Curator.ts +158 -0
  33. package/packages/core/src/ace/Reflector.ts +200 -0
  34. package/packages/core/src/ace/Tracer.ts +100 -0
  35. package/packages/core/src/ace/index.ts +4 -0
  36. package/packages/core/src/agent/AgentRunner.ts +699 -0
  37. package/packages/core/src/agent/Compaction.ts +221 -0
  38. package/packages/core/src/agent/ContextCompiler.ts +567 -0
  39. package/packages/core/src/agent/ContextGuard.ts +91 -0
  40. package/packages/core/src/agent/ConversationStore.ts +244 -0
  41. package/packages/core/src/agent/Hooks.ts +166 -0
  42. package/packages/core/src/agent/NativeTools.ts +31 -0
  43. package/packages/core/src/agent/PromptBuilder.ts +169 -0
  44. package/packages/core/src/agent/Service.ts +267 -0
  45. package/packages/core/src/agent/StuckLoop.ts +133 -0
  46. package/packages/core/src/agent/index.ts +12 -0
  47. package/packages/core/src/agent/providers/LLMClient.ts +149 -0
  48. package/packages/core/src/agent/providers/anthropic.ts +212 -0
  49. package/packages/core/src/agent/providers/gemini.ts +215 -0
  50. package/packages/core/src/agent/providers/index.ts +199 -0
  51. package/packages/core/src/agent/providers/interface.ts +195 -0
  52. package/packages/core/src/agent/providers/ollama.ts +175 -0
  53. package/packages/core/src/agent/providers/openai-compat.ts +231 -0
  54. package/packages/core/src/agent/selectors/PlaybookSelector.ts +147 -0
  55. package/packages/core/src/agent/selectors/SkillSelector.ts +478 -0
  56. package/packages/core/src/agent/selectors/ToolSelector.ts +577 -0
  57. package/packages/core/src/agent/selectors/index.ts +6 -0
  58. package/packages/core/src/api/createAgent.test.ts +48 -0
  59. package/packages/core/src/api/createAgent.ts +122 -0
  60. package/packages/core/src/api/index.ts +2 -0
  61. package/packages/core/src/auth/auth.ts +108 -0
  62. package/packages/core/src/auth/index.ts +1 -0
  63. package/packages/core/src/canvas/CanvasManager.ts +390 -0
  64. package/packages/core/src/canvas/a2ui-tools.ts +255 -0
  65. package/packages/core/src/canvas/canvas-tools.ts +448 -0
  66. package/packages/core/src/canvas/canvas.test.ts +32 -0
  67. package/packages/core/src/canvas/emitter.ts +149 -0
  68. package/packages/core/src/canvas/index.ts +3 -0
  69. package/packages/core/src/channels/base.ts +154 -0
  70. package/packages/core/src/channels/channels.test.ts +18 -0
  71. package/packages/core/src/channels/discord.ts +273 -0
  72. package/packages/core/src/channels/index.ts +7 -0
  73. package/packages/core/src/channels/manager.ts +450 -0
  74. package/packages/core/src/channels/slack.ts +323 -0
  75. package/packages/core/src/channels/telegram.ts +612 -0
  76. package/packages/core/src/channels/webchat.ts +139 -0
  77. package/packages/core/src/channels/whatsapp.ts +548 -0
  78. package/packages/core/src/config/index.ts +2 -0
  79. package/packages/core/src/config/loader.ts +554 -0
  80. package/packages/core/src/ethics/EthicsGuard.test.ts +54 -0
  81. package/packages/core/src/ethics/EthicsGuard.ts +66 -0
  82. package/packages/core/src/ethics/index.ts +2 -0
  83. package/packages/core/src/events/agent-bus.ts +460 -0
  84. package/packages/core/src/events/event-bus.ts +169 -0
  85. package/packages/core/src/gateway/channel-notify.ts +37 -0
  86. package/packages/core/src/gateway/gateway.test.ts +38 -0
  87. package/packages/core/src/gateway/index.ts +2 -0
  88. package/packages/core/src/gateway/server.ts +139 -0
  89. package/packages/core/src/heartbeat/index.ts +157 -0
  90. package/packages/core/src/index.ts +81 -0
  91. package/packages/core/src/mcp/MCPClient.ts +439 -0
  92. package/packages/core/src/mcp/MCPToolAdapter.ts +176 -0
  93. package/packages/core/src/mcp/config.ts +13 -0
  94. package/packages/core/src/mcp/hot-reload.ts +147 -0
  95. package/packages/core/src/mcp/index.ts +11 -0
  96. package/packages/core/src/mcp/logger.ts +42 -0
  97. package/packages/core/src/mcp/singleton.ts +21 -0
  98. package/packages/core/src/mcp/transports/index.ts +67 -0
  99. package/packages/core/src/mcp/transports/sse.ts +241 -0
  100. package/packages/core/src/mcp/transports/websocket.ts +159 -0
  101. package/packages/core/src/memory/Scratchpad.test.ts +47 -0
  102. package/packages/core/src/memory/Scratchpad.ts +37 -0
  103. package/packages/core/src/memory/Storage.ts +6 -0
  104. package/packages/core/src/memory/index.ts +2 -0
  105. package/packages/core/src/multimodal/VisionService.ts +293 -0
  106. package/packages/core/src/multimodal/index.ts +2 -0
  107. package/packages/core/src/multimodal/types.ts +28 -0
  108. package/packages/core/src/multimodal/vision-service.ts +283 -0
  109. package/packages/core/src/plugins/api.ts +128 -0
  110. package/packages/core/src/plugins/index.ts +2 -0
  111. package/packages/core/src/plugins/loader.ts +365 -0
  112. package/packages/core/src/resilience/circuit-breaker.ts +225 -0
  113. package/packages/core/src/scheduler/CronScheduler.ts +699 -0
  114. package/packages/core/src/scheduler/dag/AgentExecutor.ts +53 -0
  115. package/packages/core/src/scheduler/dag/DAGScheduler.ts +250 -0
  116. package/packages/core/src/scheduler/dag/EventBridge.ts +122 -0
  117. package/packages/core/src/scheduler/dag/TaskGraph.ts +192 -0
  118. package/packages/core/src/scheduler/dag/TaskNode.ts +97 -0
  119. package/packages/core/src/scheduler/dag/TaskResult.ts +22 -0
  120. package/packages/core/src/scheduler/dag/errors.ts +37 -0
  121. package/packages/core/src/scheduler/dag/index.ts +26 -0
  122. package/packages/core/src/scheduler/dag/presets/ResearchPreset.ts +97 -0
  123. package/packages/core/src/scheduler/dag/strategies/ParallelStrategy.ts +21 -0
  124. package/packages/core/src/scheduler/dag/strategies/PriorityStrategy.ts +46 -0
  125. package/packages/core/src/scheduler/index.ts +22 -0
  126. package/packages/core/src/scheduler/integration.ts +237 -0
  127. package/packages/core/src/scheduler/scheduler.test.ts +19 -0
  128. package/packages/core/src/scheduler/types.ts +164 -0
  129. package/packages/core/src/security/Pairing.ts +250 -0
  130. package/packages/core/src/security/RateLimit.ts +270 -0
  131. package/packages/core/src/security/google-chat.ts +269 -0
  132. package/packages/core/src/security/index.ts +192 -0
  133. package/packages/core/src/security/rate-limit.ts +270 -0
  134. package/packages/core/src/security/signal.ts +321 -0
  135. package/packages/core/src/skills/SkillLoader.ts +388 -0
  136. package/packages/core/src/skills/bundled-data.generated.ts +3332 -0
  137. package/packages/core/src/skills/defineSkill.ts +18 -0
  138. package/packages/core/src/skills/index.ts +4 -0
  139. package/packages/core/src/state/index.ts +2 -0
  140. package/packages/core/src/state/store.ts +312 -0
  141. package/packages/core/src/storage/SQLiteStorage.ts +407 -0
  142. package/packages/core/src/storage/crypto.ts +233 -0
  143. package/packages/core/src/storage/index.ts +10 -0
  144. package/packages/core/src/storage/onboarding.ts +1603 -0
  145. package/packages/core/src/storage/schema.ts +689 -0
  146. package/packages/core/src/storage/seed.ts +740 -0
  147. package/packages/core/src/storage/storage.test.ts +37 -0
  148. package/packages/core/src/storage/usage.ts +374 -0
  149. package/packages/core/src/swarm/AgentBus.ts +460 -0
  150. package/packages/core/src/swarm/AgentExecutor.ts +53 -0
  151. package/packages/core/src/swarm/Coordinator.ts +251 -0
  152. package/packages/core/src/swarm/EventBridge.ts +122 -0
  153. package/packages/core/src/swarm/EventBus.ts +169 -0
  154. package/packages/core/src/swarm/TaskGraph.ts +192 -0
  155. package/packages/core/src/swarm/TaskNode.ts +97 -0
  156. package/packages/core/src/swarm/TaskResult.ts +22 -0
  157. package/packages/core/src/swarm/WorkerPool.ts +236 -0
  158. package/packages/core/src/swarm/errors.ts +37 -0
  159. package/packages/core/src/swarm/index.ts +30 -0
  160. package/packages/core/src/swarm/presets/HiveLearnPreset.ts +99 -0
  161. package/packages/core/src/swarm/presets/ResearchPreset.ts +97 -0
  162. package/packages/core/src/swarm/presets/index.ts +4 -0
  163. package/packages/core/src/swarm/strategies/ParallelStrategy.ts +21 -0
  164. package/packages/core/src/swarm/strategies/PriorityStrategy.ts +46 -0
  165. package/packages/core/src/swarm/strategies/index.ts +3 -0
  166. package/packages/core/src/swarm/swarm.test.ts +24 -0
  167. package/packages/core/src/swarm/types.ts +164 -0
  168. package/packages/core/src/tool-runtime/index.ts +522 -0
  169. package/packages/core/src/tool-runtime/tool-runtime.test.ts +91 -0
  170. package/packages/core/src/tool-runtime/tool-worker.ts +125 -0
  171. package/packages/core/src/tools/ToolExecutor.ts +58 -0
  172. package/packages/core/src/tools/ToolRegistry.test.ts +98 -0
  173. package/packages/core/src/tools/ToolRegistry.ts +61 -0
  174. package/packages/core/src/tools/agents/get-available-models.ts +118 -0
  175. package/packages/core/src/tools/agents/index.ts +715 -0
  176. package/packages/core/src/tools/bridge-events.ts +26 -0
  177. package/packages/core/src/tools/canvas/index.ts +375 -0
  178. package/packages/core/src/tools/cli/index.ts +142 -0
  179. package/packages/core/src/tools/codebridge/index.ts +342 -0
  180. package/packages/core/src/tools/core/index.ts +476 -0
  181. package/packages/core/src/tools/cron/index.ts +626 -0
  182. package/packages/core/src/tools/filesystem/fs-delete.ts +78 -0
  183. package/packages/core/src/tools/filesystem/fs-edit.ts +106 -0
  184. package/packages/core/src/tools/filesystem/fs-exists.ts +63 -0
  185. package/packages/core/src/tools/filesystem/fs-glob.ts +108 -0
  186. package/packages/core/src/tools/filesystem/fs-list.ts +129 -0
  187. package/packages/core/src/tools/filesystem/fs-read.ts +72 -0
  188. package/packages/core/src/tools/filesystem/fs-write.ts +67 -0
  189. package/packages/core/src/tools/filesystem/index.ts +34 -0
  190. package/packages/core/src/tools/filesystem/workspace-guard.ts +62 -0
  191. package/packages/core/src/tools/index.ts +231 -0
  192. package/packages/core/src/tools/meeting/index.ts +363 -0
  193. package/packages/core/src/tools/office/index.ts +47 -0
  194. package/packages/core/src/tools/office/office-escribir-docx.ts +192 -0
  195. package/packages/core/src/tools/office/office-escribir-pdf.ts +172 -0
  196. package/packages/core/src/tools/office/office-escribir-pptx.ts +174 -0
  197. package/packages/core/src/tools/office/office-escribir-xlsx.ts +116 -0
  198. package/packages/core/src/tools/office/office-leer-docx.ts +93 -0
  199. package/packages/core/src/tools/office/office-leer-pdf.ts +114 -0
  200. package/packages/core/src/tools/office/office-leer-pptx.ts +136 -0
  201. package/packages/core/src/tools/office/office-leer-xlsx.ts +124 -0
  202. package/packages/core/src/tools/projects/index.ts +37 -0
  203. package/packages/core/src/tools/projects/project-create.ts +94 -0
  204. package/packages/core/src/tools/projects/project-done.ts +66 -0
  205. package/packages/core/src/tools/projects/project-fail.ts +66 -0
  206. package/packages/core/src/tools/projects/project-list.ts +96 -0
  207. package/packages/core/src/tools/projects/project-update.ts +72 -0
  208. package/packages/core/src/tools/projects/task-create.ts +68 -0
  209. package/packages/core/src/tools/projects/task-evaluate.ts +93 -0
  210. package/packages/core/src/tools/projects/task-update.ts +93 -0
  211. package/packages/core/src/tools/types.ts +39 -0
  212. package/packages/core/src/tools/voice/index.ts +104 -0
  213. package/packages/core/src/tools/web/browser-click.ts +78 -0
  214. package/packages/core/src/tools/web/browser-extract.ts +139 -0
  215. package/packages/core/src/tools/web/browser-navigate.ts +106 -0
  216. package/packages/core/src/tools/web/browser-screenshot.ts +87 -0
  217. package/packages/core/src/tools/web/browser-script.ts +88 -0
  218. package/packages/core/src/tools/web/browser-service.ts +554 -0
  219. package/packages/core/src/tools/web/browser-type.ts +101 -0
  220. package/packages/core/src/tools/web/browser-wait.ts +136 -0
  221. package/packages/core/src/tools/web/index.ts +41 -0
  222. package/packages/core/src/tools/web/web-fetch.ts +78 -0
  223. package/packages/core/src/tools/web/web-search.ts +123 -0
  224. package/packages/core/src/utils/benchmark.ts +80 -0
  225. package/packages/core/src/utils/crypto.ts +73 -0
  226. package/packages/core/src/utils/date.ts +42 -0
  227. package/packages/core/src/utils/index.ts +10 -0
  228. package/packages/core/src/utils/logger.ts +389 -0
  229. package/packages/core/src/utils/retry.ts +70 -0
  230. package/packages/core/src/utils/toon.ts +253 -0
  231. package/packages/core/src/voice/index.ts +643 -0
  232. package/packages/core/src/workers/WorkerPool.ts +167 -0
  233. package/packages/core/src/workers/agent.worker.ts +68 -0
  234. package/packages/core/src/workers/createWorker.ts +144 -0
  235. package/packages/core/src/workers/index.ts +5 -0
  236. package/packages/core/src/workers/workers.test.ts +48 -0
  237. package/test/setup-db.ts +216 -0
  238. package/tsconfig.json +40 -0
  239. package/src/agents.ts +0 -1
  240. package/src/canvas.ts +0 -1
  241. package/src/channels.ts +0 -1
  242. package/src/config.ts +0 -1
  243. package/src/events.ts +0 -1
  244. package/src/gateway.ts +0 -1
  245. package/src/index.ts +0 -304
  246. package/src/mcp.ts +0 -1
  247. package/src/multimodal.ts +0 -1
  248. package/src/scheduler.ts +0 -1
  249. package/src/security.ts +0 -1
  250. package/src/skills.ts +0 -1
  251. package/src/state.ts +0 -1
  252. package/src/storage.ts +0 -1
  253. package/src/tools.ts +0 -1
  254. package/src/tts.ts +0 -1
  255. package/src/types.ts +0 -82
  256. package/src/utils.ts +0 -1
  257. package/src/voice.ts +0 -1
@@ -0,0 +1,350 @@
1
+ # API Reference — Tools, Skills, MCP, Gateway, Channels y Storage
2
+
3
+ ## Índice
4
+
5
+ 1. [Tools](#tools)
6
+ 2. [Skills](#skills)
7
+ 3. [MCP](#mcp)
8
+ 4. [Gateway](#gateway)
9
+ 5. [Channels](#channels)
10
+ 6. [Tool Runtime](#tool-runtime)
11
+ 7. [Canvas](#canvas)
12
+ 8. [Storage](#storage)
13
+ 9. [Config](#config)
14
+
15
+ ---
16
+
17
+ ## Tools
18
+
19
+ ### defineTool
20
+
21
+ Función para definir herramientas que el agente puede invocar.
22
+
23
+ ```typescript
24
+ import { defineTool } from "@johpaz/hive-sdk";
25
+
26
+ const tool = defineTool({
27
+ name: "saludar",
28
+ description: "Saluda a alguien por su nombre",
29
+ execute: async (args: { nombre: string }) => {
30
+ return { mensaje: `¡Hola ${args.nombre}!` };
31
+ },
32
+ });
33
+ ```
34
+
35
+ ### ToolRegistry
36
+
37
+ Registro central de herramientas.
38
+
39
+ ```typescript
40
+ import { ToolRegistry, defineTool } from "@johpaz/hive-sdk";
41
+
42
+ const reg = new ToolRegistry();
43
+
44
+ reg.register(defineTool({ name: "t1", description: "...", execute: async () => ({}) }));
45
+
46
+ reg.has("t1"); // true
47
+ reg.get("t1"); // ToolDefinition
48
+ reg.list(); // ToolDefinition[]
49
+ reg.getByCategory("web"); // Filtrar por categoría
50
+ reg.getNames(); // ["t1"]
51
+ reg.size(); // 1
52
+ reg.merge(otherRegistry);
53
+ reg.clear();
54
+ ```
55
+
56
+ ### ToolExecutor
57
+
58
+ Ejecutor de herramientas con validación Zod.
59
+
60
+ ```typescript
61
+ import { ToolRegistry, ToolExecutor, defineTool } from "@johpaz/hive-sdk";
62
+
63
+ const reg = new ToolRegistry();
64
+ reg.register(defineTool({
65
+ name: "echo",
66
+ description: "Echo",
67
+ execute: async (args) => args,
68
+ }));
69
+
70
+ const exec = new ToolExecutor(reg);
71
+ const result = await exec.execute("echo", { msg: "hola" });
72
+ ```
73
+
74
+ ### Tool Selection (FTS5)
75
+
76
+ ```typescript
77
+ import { selectTools, CORE_TOOL_CATALOG } from "@johpaz/hive-sdk";
78
+
79
+ const tools = selectTools("Buscar archivos en el proyecto");
80
+ const webTools = tools.filter(t => t.category === "web");
81
+ ```
82
+
83
+ ---
84
+
85
+ ## Skills
86
+
87
+ ### defineSkill
88
+
89
+ ```typescript
90
+ import { defineSkill } from "@johpaz/hive-sdk";
91
+
92
+ const skill = defineSkill({
93
+ name: "file-manager",
94
+ description: "Gestiona archivos y directorios",
95
+ steps: [
96
+ { action: "fs_list", instruction: "Listar archivos" },
97
+ { action: "fs_read", instruction: "Leer archivo" },
98
+ ],
99
+ tools: ["fs_list", "fs_read"],
100
+ triggers: ["archivo", "directorio", "listar"],
101
+ });
102
+ ```
103
+
104
+ ### SkillLoader
105
+
106
+ ```typescript
107
+ import { SkillLoader } from "@johpaz/hive-sdk";
108
+
109
+ const loader = new SkillLoader({
110
+ allowBundled: ["file-manager", "web-researcher"],
111
+ managedDir: "./skills",
112
+ });
113
+
114
+ const skills = loader.list();
115
+ const skill = loader.get("file-manager");
116
+ ```
117
+
118
+ ---
119
+
120
+ ## MCP
121
+
122
+ Model Context Protocol — herramientas externas via STDIO/SSE/WebSocket.
123
+
124
+ ### MCPClientManager
125
+
126
+ ```typescript
127
+ import { MCPClientManager } from "@johpaz/hive-sdk";
128
+
129
+ const mcp = new MCPClientManager({
130
+ servers: {
131
+ "filesystem": {
132
+ transport: "stdio",
133
+ command: "npx",
134
+ args: ["-y", "@modelcontextprotocol/server-filesystem", "./data"],
135
+ enabled: true,
136
+ },
137
+ "weather-api": {
138
+ transport: "sse",
139
+ url: "https://api.weather.com/mcp",
140
+ enabled: true,
141
+ },
142
+ },
143
+ });
144
+
145
+ await mcp.initialize();
146
+ const tools = mcp.getTools("filesystem");
147
+ ```
148
+
149
+ ### Transports
150
+
151
+ ```typescript
152
+ import { createTransport, SSETransport, WebSocketTransport } from "@johpaz/hive-sdk";
153
+
154
+ const transport = createTransport({
155
+ type: "stdio",
156
+ stdio: { command: "npx", args: ["-y", "server"], env: {} },
157
+ });
158
+ ```
159
+
160
+ ---
161
+
162
+ ## Gateway
163
+
164
+ Servidor HTTP/WebSocket simplificado para exponer el agente como API.
165
+
166
+ ### startGateway
167
+
168
+ ```typescript
169
+ import { startGateway } from "@johpaz/hive-sdk";
170
+
171
+ const server = await startGateway({
172
+ host: "127.0.0.1",
173
+ port: 18790,
174
+ agentId: "coordinator",
175
+ mcpManager: null,
176
+ });
177
+
178
+ console.log(`Gateway at http://127.0.0.1:18790`);
179
+ ```
180
+
181
+ ### Endpoints
182
+
183
+ | Método | Ruta | Descripción |
184
+ |--------|------|-------------|
185
+ | GET | `/status` | Health check |
186
+ | POST | `/chat` | Chat con el agente |
187
+ | WS | `/ws` | WebSocket streaming |
188
+
189
+ ### Ejemplo: Chat HTTP
190
+
191
+ ```typescript
192
+ const res = await fetch("http://127.0.0.1:18790/chat", {
193
+ method: "POST",
194
+ headers: { "Content-Type": "application/json" },
195
+ body: JSON.stringify({ message: "Hello!", threadId: "t1" }),
196
+ });
197
+
198
+ const data = await res.json();
199
+ console.log(data.response);
200
+ ```
201
+
202
+ ---
203
+
204
+ ## Channels
205
+
206
+ Integraciones con plataformas de mensajería.
207
+
208
+ ### ChannelManager
209
+
210
+ ```typescript
211
+ import { ChannelManager } from "@johpaz/hive-sdk";
212
+
213
+ const manager = new ChannelManager(config);
214
+ await manager.initialize();
215
+ ```
216
+
217
+ ### Canales soportados
218
+
219
+ ```typescript
220
+ import {
221
+ TelegramChannel,
222
+ DiscordChannel,
223
+ WhatsAppChannel,
224
+ SlackChannel,
225
+ WebChatChannel,
226
+ } from "@johpaz/hive-sdk";
227
+
228
+ // Telegram
229
+ const telegram = new TelegramChannel({ botToken: process.env.TELEGRAM_BOT_TOKEN! });
230
+
231
+ // Discord
232
+ const discord = new DiscordChannel({ botToken: process.env.DISCORD_BOT_TOKEN! });
233
+
234
+ // WhatsApp
235
+ const whatsapp = new WhatsAppChannel();
236
+
237
+ // Slack
238
+ const slack = new SlackChannel({ botToken: process.env.SLACK_BOT_TOKEN! });
239
+
240
+ // Webchat
241
+ const webchat = new WebChatChannel();
242
+ ```
243
+
244
+ ---
245
+
246
+ ## Tool Runtime
247
+
248
+ Ejecución paralela de herramientas vía Bun Workers.
249
+
250
+ ### executeToolBatch
251
+
252
+ ```typescript
253
+ import { executeToolBatch, shutdownToolRuntime } from "@johpaz/hive-sdk";
254
+
255
+ const results = await executeToolBatch({
256
+ toolCalls: [
257
+ { id: "1", function: { name: "search", arguments: JSON.stringify({ q: "AI" }) } },
258
+ { id: "2", function: { name: "fetch", arguments: JSON.stringify({ url: "..." }) } },
259
+ ],
260
+ allTools: [searchTool, fetchTool],
261
+ toolConfig: { user_id: "u1", thread_id: "t1" },
262
+ hiveConfig: loadConfig(),
263
+ workerPool: {
264
+ enabled: true,
265
+ maxWorkers: 4,
266
+ toolTimeoutMs: 30000,
267
+ parallelToolCalls: true,
268
+ },
269
+ });
270
+
271
+ // Limpieza
272
+ shutdownToolRuntime();
273
+ ```
274
+
275
+ ### ToolBatchResult
276
+
277
+ ```typescript
278
+ interface ToolBatchResult {
279
+ toolCall: ToolCallLike;
280
+ toolName: string;
281
+ result: unknown;
282
+ ok: boolean;
283
+ durationMs: number;
284
+ error?: SerializedError;
285
+ timedOut?: boolean;
286
+ aborted?: boolean;
287
+ }
288
+ ```
289
+
290
+ ---
291
+
292
+ ## Canvas
293
+
294
+ Visualización en tiempo real del estado de agentes.
295
+
296
+ ```typescript
297
+ import { emitCanvas, subscribeCanvas, unsubscribeCanvas } from "@johpaz/hive-sdk";
298
+
299
+ const handler = (data: any) => console.log("Canvas:", data);
300
+ subscribeCanvas(handler);
301
+
302
+ emitCanvas("canvas:node_update", {
303
+ nodeId: "agent-1",
304
+ changes: { status: "running", currentTool: "web_search" },
305
+ });
306
+
307
+ unsubscribeCanvas(handler);
308
+ ```
309
+
310
+ ---
311
+
312
+ ## Storage
313
+
314
+ Base de datos SQLite con FTS5.
315
+
316
+ ```typescript
317
+ import { initializeDatabase, dbService } from "@johpaz/hive-sdk";
318
+
319
+ await initializeDatabase();
320
+ const db = getTestDb();
321
+
322
+ const results = db.query("SELECT * FROM agents WHERE id = ?").all(agentId);
323
+ const single = db.query("SELECT * FROM agents WHERE id = ?").get(agentId);
324
+
325
+ dbService.close();
326
+ ```
327
+
328
+ ### Schemas FTS5
329
+
330
+ ```sql
331
+ CREATE VIRTUAL TABLE playbook_fts USING fts5(rule, category, applicable_to);
332
+ CREATE VIRTUAL TABLE tools_fts USING fts5(tool_name, name, description, category);
333
+ CREATE VIRTUAL TABLE skills_fts USING fts5(id, name, description, category, tools, triggers, body);
334
+ CREATE VIRTUAL TABLE mcp_tools_fts USING fts5(id, name, description, category);
335
+ ```
336
+
337
+ ---
338
+
339
+ ## Config
340
+
341
+ ```typescript
342
+ import { loadConfig, loadEnv, getHiveDir } from "@johpaz/hive-sdk";
343
+
344
+ const config = await loadConfig();
345
+ const hiveDir = getHiveDir(); // ~/.hive o HIVE_DATA_DIR
346
+ ```
347
+
348
+ ---
349
+
350
+ *Documentación Hive SDK v0.0.16*
@@ -0,0 +1,299 @@
1
+ # API Reference — Workers y Eventos
2
+
3
+ ## Índice
4
+
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)
11
+
12
+ ---
13
+
14
+ ## Bun Workers
15
+
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.
17
+
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
75
+
76
+ ```typescript
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);
90
+
91
+ researcher.terminate();
92
+ ```
93
+
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
113
+
114
+ Gestiona un pool de Bun Workers para ejecución paralela.
115
+
116
+ ### Firma
117
+
118
+ ```typescript
119
+ import { WorkerPool } from "@johpaz/hive-sdk";
120
+
121
+ const pool = new WorkerPool(config?: WorkerPoolConfig);
122
+ ```
123
+
124
+ ### WorkerPoolConfig
125
+
126
+ ```typescript
127
+ interface WorkerPoolConfig {
128
+ maxWorkers?: number; // Default: 4
129
+ taskTimeoutMs?: number; // Default: 120000
130
+ workerConfig?: WorkerConfig;
131
+ }
132
+ ```
133
+
134
+ ### Métodos
135
+
136
+ ```typescript
137
+ // Ejecutar una tarea
138
+ pool.execute(task: PoolTask): Promise<PoolTaskResult>
139
+
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.",
163
+ },
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: hive add-worker
196
+
197
+ Genera un Bun Worker en tu proyecto:
198
+
199
+ ```bash
200
+ cd my-project
201
+ hive 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
+ });
213
+ ```
214
+
215
+ ---
216
+
217
+ ## AgentBus
218
+
219
+ Sistema de eventos singleton para comunicación entre agentes.
220
+
221
+ ```typescript
222
+ import { agentBus, getUnreadMessagesForWorker } from "@johpaz/hive-sdk";
223
+
224
+ // Publicar evento
225
+ agentBus.publish("worker:task_started", { taskId: "task-1" }, "worker-1");
226
+
227
+ // Suscribirse
228
+ const unsub = agentBus.subscribe("worker:task_completed", (data) => {
229
+ console.log("Task completed:", data);
230
+ });
231
+
232
+ // Unsubscribe
233
+ unsub();
234
+ ```
235
+
236
+ ### Métodos Helper
237
+
238
+ ```typescript
239
+ import {
240
+ getUnreadMessagesForWorker,
241
+ getProjectMessageHistory,
242
+ } from "@johpaz/hive-sdk";
243
+
244
+ const messages = getUnreadMessagesForWorker("worker-1");
245
+ const history = getProjectMessageHistory("project-1");
246
+ ```
247
+
248
+ ---
249
+
250
+ ## EventBus
251
+
252
+ EventBus global singleton (eventos del sistema).
253
+
254
+ ```typescript
255
+ import { eventBus } from "@johpaz/hive-sdk";
256
+
257
+ // Escuchar eventos
258
+ eventBus.on("agent:start", (data) => {
259
+ console.log("Agent started:", data);
260
+ });
261
+
262
+ // Emitir eventos
263
+ eventBus.emit("agent:complete", { agentId: "a1", result: "ok" });
264
+ ```
265
+
266
+ ---
267
+
268
+ ## Canvas Events
269
+
270
+ Eventos de actualización visual del canvas.
271
+
272
+ ```typescript
273
+ import { emitCanvas, subscribeCanvas, unsubscribeCanvas } from "@johpaz/hive-sdk";
274
+
275
+ // Suscribirse a eventos canvas
276
+ const handler = (data: any) => console.log("Canvas:", data);
277
+ subscribeCanvas(handler);
278
+
279
+ // Emitir evento
280
+ emitCanvas("canvas:node_update", {
281
+ nodeId: "agent-1",
282
+ changes: { status: "thinking" },
283
+ });
284
+
285
+ // Desuscribirse
286
+ unsubscribeCanvas(handler);
287
+ ```
288
+
289
+ ### CanvasManager
290
+
291
+ ```typescript
292
+ import { CanvasManager } from "@johpaz/hive-sdk";
293
+
294
+ const canvas = new CanvasManager();
295
+ ```
296
+
297
+ ---
298
+
299
+ *Documentación Hive SDK v0.0.16*