@johpaz/hive-sdk 0.1.4 → 0.1.6

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 (278) hide show
  1. package/CHANGELOG.md +129 -0
  2. package/README.md +78 -23
  3. package/bun.lock +55 -29
  4. package/bunfig.toml +4 -2
  5. package/docs/API-AGENTS.md +78 -27
  6. package/docs/API-CONTEXT-COMPILER.md +31 -34
  7. package/docs/API-TOOLS-SKILLS-CHANNELS.md +58 -22
  8. package/docs/HIVE-HARNESS.md +1 -1
  9. package/docs/INDEX.md +4 -4
  10. package/docs/TEMPLATE-HIVE-APP.md +10 -10
  11. package/package.json +17 -12
  12. package/packages/cli/package.json +2 -2
  13. package/packages/cli/src/commands/create-app.test.ts +36 -7
  14. package/packages/cli/src/commands/init.ts +3 -3
  15. package/packages/cli/src/commands/run.ts +1 -1
  16. package/packages/cli/src/commands/test.ts +37 -25
  17. package/packages/cli/src/commands/trace.ts +30 -28
  18. package/packages/cli/templates/hive-app/.env.example +10 -2
  19. package/packages/cli/templates/hive-app/README.md +103 -0
  20. package/packages/cli/templates/hive-app/hive.config.ts +9 -3
  21. package/packages/cli/templates/hive-app/src/agents/coordinator.ts +8 -1
  22. package/packages/cli/templates/hive-app/src/main.ts +12 -19
  23. package/packages/core/package.json +13 -12
  24. package/packages/core/src/agent/acceptance-checks.ts +172 -0
  25. package/packages/core/src/agent/agent-catalog.ts +348 -0
  26. package/packages/core/src/agent/agent-loop.ts +1373 -0
  27. package/packages/core/src/agent/capability-search.ts +186 -0
  28. package/packages/core/src/agent/catalog-selector.ts +103 -0
  29. package/packages/core/src/agent/{Compaction.ts → compaction.ts} +86 -63
  30. package/packages/core/src/agent/context-compiler.ts +689 -0
  31. package/packages/core/src/agent/conversation-store.ts +381 -0
  32. package/packages/core/src/agent/curator.ts +276 -0
  33. package/packages/core/src/agent/delegation-runtime.ts +241 -0
  34. package/packages/core/src/agent/goal-runner.ts +323 -0
  35. package/packages/core/src/agent/index.ts +17 -12
  36. package/packages/core/src/agent/llm-client.ts +266 -0
  37. package/packages/core/src/agent/llm-providers/anthropic.ts +264 -0
  38. package/packages/core/src/agent/llm-providers/deepseek.ts +8 -0
  39. package/packages/core/src/agent/{providers → llm-providers}/gemini.ts +98 -60
  40. package/packages/core/src/agent/llm-providers/groq.ts +5 -0
  41. package/packages/core/src/agent/llm-providers/hiveagents.ts +253 -0
  42. package/packages/core/src/agent/{providers → llm-providers}/interface.ts +73 -13
  43. package/packages/core/src/agent/llm-providers/kimi.ts +8 -0
  44. package/packages/core/src/agent/llm-providers/minimax.ts +13 -0
  45. package/packages/core/src/agent/llm-providers/mistral.ts +5 -0
  46. package/packages/core/src/agent/llm-providers/modelscope.ts +5 -0
  47. package/packages/core/src/agent/llm-providers/nvidia.ts +5 -0
  48. package/packages/core/src/agent/{providers → llm-providers}/ollama.ts +31 -5
  49. package/packages/core/src/agent/llm-providers/openai-compat-base.ts +418 -0
  50. package/packages/core/src/agent/llm-providers/openai.ts +5 -0
  51. package/packages/core/src/agent/llm-providers/opencode-go.ts +9 -0
  52. package/packages/core/src/agent/llm-providers/openrouter.ts +5 -0
  53. package/packages/core/src/agent/llm-providers/qwen.ts +5 -0
  54. package/packages/core/src/agent/llm-providers/z-ai.ts +5 -0
  55. package/packages/core/src/agent/minimal-loadout.ts +47 -0
  56. package/packages/core/src/agent/playbook-selector.ts +119 -0
  57. package/packages/core/src/agent/{PromptBuilder.ts → prompt-builder.ts} +21 -22
  58. package/packages/core/src/{harness → agent}/proof-packet.ts +16 -21
  59. package/packages/core/src/agent/providers/index.ts +35 -16
  60. package/packages/core/src/agent/reflector.ts +320 -0
  61. package/packages/core/src/agent/routing-intent.ts +22 -0
  62. package/packages/core/src/{harness → agent}/run-epoch.ts +4 -3
  63. package/packages/core/src/{harness → agent}/run-store.ts +142 -81
  64. package/packages/core/src/agent/{Service.ts → service.ts} +37 -26
  65. package/packages/core/src/agent/skill-selector.ts +374 -0
  66. package/packages/core/src/agent/stuck-loop.ts +209 -0
  67. package/packages/core/src/agent/{selectors/ToolSelector.ts → tool-selector.ts} +188 -178
  68. package/packages/core/src/{ace/Tracer.ts → agent/tracer.ts} +37 -27
  69. package/packages/core/src/api/createAgent.test.ts +139 -27
  70. package/packages/core/src/api/createAgent.ts +232 -44
  71. package/packages/core/src/artifacts/store.ts +162 -0
  72. package/packages/core/src/canvas/canvas-manager.ts +161 -0
  73. package/packages/core/src/canvas/canvas.test.ts +8 -4
  74. package/packages/core/src/canvas/emitter.ts +131 -80
  75. package/packages/core/src/canvas/index.ts +1 -3
  76. package/packages/core/src/channels/base.ts +9 -1
  77. package/packages/core/src/channels/discord.ts +5 -4
  78. package/packages/core/src/channels/manager.ts +122 -30
  79. package/packages/core/src/channels/slack.ts +5 -4
  80. package/packages/core/src/channels/telegram.ts +36 -6
  81. package/packages/core/src/channels/webchat.ts +11 -10
  82. package/packages/core/src/channels/whatsapp.ts +23 -7
  83. package/packages/core/src/config/index.ts +13 -2
  84. package/packages/core/src/config/loader.ts +76 -29
  85. package/packages/core/src/ethics/EthicsGuard.test.ts +90 -36
  86. package/packages/core/src/ethics/EthicsGuard.ts +51 -47
  87. package/packages/core/src/events/agent-bus.ts +44 -68
  88. package/packages/core/src/events/channel-narration.ts +150 -0
  89. package/packages/core/src/events/narration.ts +82 -0
  90. package/packages/core/src/events/tool-narration.ts +62 -0
  91. package/packages/core/src/gateway/delegation-groups.ts +258 -0
  92. package/packages/core/src/{harness → gateway}/durable-queue.ts +102 -42
  93. package/packages/core/src/{harness → gateway}/job-store.ts +85 -48
  94. package/packages/core/src/gateway/lane-queue.ts +173 -0
  95. package/packages/core/src/gateway/notification-inbox.ts +57 -0
  96. package/packages/core/src/gateway/server.ts +1 -1
  97. package/packages/core/src/harness/index.ts +46 -27
  98. package/packages/core/src/index.ts +33 -27
  99. package/packages/core/src/mcp/hot-reload.ts +32 -23
  100. package/packages/core/src/mcp/index.ts +6 -3
  101. package/packages/core/src/mcp/singleton.ts +1 -4
  102. package/packages/core/src/mcp/tool-sync.ts +138 -0
  103. package/packages/core/src/memory/Scratchpad.test.ts +39 -20
  104. package/packages/core/src/memory/Scratchpad.ts +27 -34
  105. package/packages/core/src/multimodal/vision-service.ts +44 -38
  106. package/packages/core/src/resilience/retry.ts +95 -0
  107. package/packages/core/src/scheduler/CronScheduler.ts +334 -287
  108. package/packages/core/src/scheduler/index.ts +9 -7
  109. package/packages/core/src/scheduler/integration.ts +46 -26
  110. package/packages/core/src/scheduler/scheduler.test.ts +9 -13
  111. package/packages/core/src/scheduler/types.ts +7 -2
  112. package/packages/core/src/security/Pairing.ts +1 -1
  113. package/packages/core/src/skills/bundled/a2ui/a2ui_dashboard/SKILL.md +176 -0
  114. package/packages/core/src/skills/bundled/a2ui/a2ui_form/SKILL.md +202 -0
  115. package/packages/core/src/skills/bundled/a2ui/a2ui_interactive/SKILL.md +206 -0
  116. package/packages/core/src/skills/bundled/agents/agent_spawner/SKILL.md +173 -0
  117. package/packages/core/src/skills/bundled/agents/memory_manager/SKILL.md +143 -0
  118. package/packages/core/src/skills/bundled/agents/research_and_remember/SKILL.md +139 -0
  119. package/packages/core/src/skills/bundled/agents/task_orchestrator/SKILL.md +98 -0
  120. package/packages/core/src/skills/bundled/api/api_client/SKILL.md +132 -0
  121. package/packages/core/src/skills/bundled/cli/cli_pipeline/SKILL.md +135 -0
  122. package/packages/core/src/skills/bundled/cli/cli_safe_exec/SKILL.md +125 -0
  123. package/packages/core/src/skills/bundled/cli/software_engineering/SKILL.md +23 -0
  124. package/packages/core/src/skills/bundled/cron_manager/SKILL.md +188 -0
  125. package/packages/core/src/skills/bundled/cron_reminder/SKILL.md +112 -0
  126. package/packages/core/src/skills/bundled/filesystem/file_manager/SKILL.md +118 -0
  127. package/packages/core/src/skills/bundled/filesystem/file_read_and_summarize/SKILL.md +109 -0
  128. package/packages/core/src/skills/bundled/filesystem/file_writer/SKILL.md +129 -0
  129. package/packages/core/src/skills/bundled/filesystem/workspace_file_operator/SKILL.md +22 -0
  130. package/packages/core/src/skills/bundled/office/office_document_manager/SKILL.md +262 -0
  131. package/packages/core/src/skills/bundled/search_knowledge/capability_discovery/SKILL.md +75 -0
  132. package/packages/core/src/skills/bundled/web/browser_automate/SKILL.md +120 -0
  133. package/packages/core/src/skills/bundled/web/browser_scrape/SKILL.md +109 -0
  134. package/packages/core/src/skills/bundled/web/web_monitor/SKILL.md +127 -0
  135. package/packages/core/src/skills/bundled/web/web_research/SKILL.md +119 -0
  136. package/packages/core/src/skills/bundled-data.generated.ts +731 -2678
  137. package/packages/core/src/skills/skills.test.ts +52 -11
  138. package/packages/core/src/{harness → storage}/boot-id.ts +5 -2
  139. package/packages/core/src/storage/bootstrap.ts +151 -0
  140. package/packages/core/src/storage/causal-events.ts +84 -0
  141. package/packages/core/src/storage/collections.ts +680 -0
  142. package/packages/core/src/storage/crypto.ts +205 -74
  143. package/packages/core/src/{harness/db-helpers.ts → storage/hive.ts} +63 -7
  144. package/packages/core/src/storage/hivedb.ts +61 -0
  145. package/packages/core/src/storage/index.ts +111 -18
  146. package/packages/core/src/storage/model-id.ts +53 -0
  147. package/packages/core/src/storage/onboarding.ts +540 -972
  148. package/packages/core/src/storage/reconcile.ts +238 -0
  149. package/packages/core/src/storage/seed.ts +572 -406
  150. package/packages/core/src/storage/usage.ts +285 -225
  151. package/packages/core/src/storage/user-email.ts +11 -0
  152. package/packages/core/src/swarm/AgentExecutor.ts +1 -1
  153. package/packages/core/src/swarm/EventBridge.ts +1 -1
  154. package/packages/core/src/swarm/index.ts +12 -9
  155. package/packages/core/src/tool-runtime/index.ts +146 -23
  156. package/packages/core/src/tool-runtime/tool-worker.ts +2 -2
  157. package/packages/core/src/tool-runtime/worker-tools.ts +27 -0
  158. package/packages/core/src/{canvas/a2ui-tools.ts → tools/a2ui/index.ts} +17 -8
  159. package/packages/core/src/tools/agents/get-available-models.ts +36 -54
  160. package/packages/core/src/tools/agents/index.ts +784 -292
  161. package/packages/core/src/tools/api/api-request.test.ts +164 -0
  162. package/packages/core/src/tools/api/api-request.ts +174 -0
  163. package/packages/core/src/tools/api/index.ts +16 -0
  164. package/packages/core/src/tools/cli/index.ts +4 -0
  165. package/packages/core/src/tools/core/index.ts +281 -112
  166. package/packages/core/src/tools/cron/index.ts +121 -124
  167. package/packages/core/src/tools/index.ts +63 -78
  168. package/packages/core/src/tools/office/office-escribir-xlsx.ts +3 -1
  169. package/packages/core/src/tools/types.ts +3 -1
  170. package/packages/core/src/tools/web/artifact-inspect.ts +23 -0
  171. package/packages/core/src/tools/web/browser-backend.ts +129 -0
  172. package/packages/core/src/tools/web/browser-screenshot.ts +26 -5
  173. package/packages/core/src/tools/web/browser-service.ts +80 -35
  174. package/packages/core/src/tools/web/browser-type.ts +3 -8
  175. package/packages/core/src/tools/web/index.ts +4 -4
  176. package/packages/core/src/tools/web/webview-backend.ts +412 -0
  177. package/packages/core/src/voice/index.ts +89 -63
  178. package/packages/core/src/workers/agent.worker.ts +2 -2
  179. package/packages/core/src/workers/workers.test.ts +3 -10
  180. package/scripts/bump-version.ts +248 -0
  181. package/scripts/generate-skill-bundle.ts +108 -0
  182. package/test/acceptance-checks.test.ts +403 -0
  183. package/test/agent-loop-terminal-synthesis.test.ts +32 -0
  184. package/test/browser-backend.test.ts +308 -0
  185. package/test/catalog-agents-stay-enabled.test.ts +117 -0
  186. package/test/causal-events.test.ts +117 -0
  187. package/test/compaction.test.ts +105 -0
  188. package/test/context-compiler.test.ts +269 -0
  189. package/test/curator.test.ts +130 -0
  190. package/test/durable-queue.test.ts +114 -0
  191. package/test/harness-barrel.test.ts +64 -0
  192. package/test/hive-helpers.test.ts +130 -0
  193. package/test/hivedb-search.test.ts +189 -0
  194. package/test/internal-turns.test.ts +166 -0
  195. package/test/job-idempotency.test.ts +68 -0
  196. package/test/job-retry-backoff.test.ts +184 -0
  197. package/test/job-store.test.ts +381 -0
  198. package/test/llm-retry.test.ts +97 -0
  199. package/test/memory-perf.test.ts +774 -0
  200. package/test/minimal-loadout.test.ts +78 -0
  201. package/test/model-catalog.test.ts +105 -0
  202. package/test/preload.ts +12 -0
  203. package/test/reflector.test.ts +320 -0
  204. package/test/retention-cap.test.ts +91 -0
  205. package/test/retired-capabilities-pruned.test.ts +192 -0
  206. package/test/run-store.test.ts +355 -0
  207. package/test/scratchpad.test.ts +74 -0
  208. package/test/secrets-durability.test.ts +119 -0
  209. package/test/seed-model-reseed.test.ts +155 -0
  210. package/test/setup-agent-seed.test.ts +264 -0
  211. package/test/tool-inventory.test.ts +65 -0
  212. package/test/tool-runtime.test.ts +258 -0
  213. package/test/tool-selector-runtime-tools.test.ts +117 -0
  214. package/test/toon.test.ts +429 -0
  215. package/tsconfig.json +2 -0
  216. package/packages/core/src/ace/Curator.ts +0 -158
  217. package/packages/core/src/ace/Reflector.ts +0 -200
  218. package/packages/core/src/ace/index.ts +0 -4
  219. package/packages/core/src/agent/AgentRunner.ts +0 -711
  220. package/packages/core/src/agent/ContextCompiler.ts +0 -567
  221. package/packages/core/src/agent/ContextGuard.ts +0 -91
  222. package/packages/core/src/agent/ConversationStore.ts +0 -254
  223. package/packages/core/src/agent/Hooks.ts +0 -166
  224. package/packages/core/src/agent/StuckLoop.ts +0 -133
  225. package/packages/core/src/agent/providers/LLMClient.ts +0 -149
  226. package/packages/core/src/agent/providers/anthropic.ts +0 -212
  227. package/packages/core/src/agent/providers/openai-compat.ts +0 -231
  228. package/packages/core/src/agent/selectors/PlaybookSelector.ts +0 -121
  229. package/packages/core/src/agent/selectors/SkillSelector.ts +0 -322
  230. package/packages/core/src/agent/selectors/index.ts +0 -6
  231. package/packages/core/src/auth/auth.ts +0 -121
  232. package/packages/core/src/auth/index.ts +0 -1
  233. package/packages/core/src/canvas/CanvasManager.ts +0 -390
  234. package/packages/core/src/canvas/canvas-tools.ts +0 -448
  235. package/packages/core/src/harness/collections.ts +0 -98
  236. package/packages/core/src/harness/goal-verifier.ts +0 -141
  237. package/packages/core/src/harness/harness.test.ts +0 -236
  238. package/packages/core/src/harness/reconcile.ts +0 -149
  239. package/packages/core/src/mcp/MCPToolAdapter.ts +0 -176
  240. package/packages/core/src/multimodal/VisionService.ts +0 -293
  241. package/packages/core/src/scheduler/dag/AgentExecutor.ts +0 -53
  242. package/packages/core/src/scheduler/dag/DAGScheduler.ts +0 -250
  243. package/packages/core/src/scheduler/dag/EventBridge.ts +0 -122
  244. package/packages/core/src/scheduler/dag/TaskGraph.ts +0 -192
  245. package/packages/core/src/scheduler/dag/TaskNode.ts +0 -97
  246. package/packages/core/src/scheduler/dag/TaskResult.ts +0 -22
  247. package/packages/core/src/scheduler/dag/errors.ts +0 -37
  248. package/packages/core/src/scheduler/dag/index.ts +0 -26
  249. package/packages/core/src/scheduler/dag/presets/ResearchPreset.ts +0 -97
  250. package/packages/core/src/scheduler/dag/strategies/ParallelStrategy.ts +0 -21
  251. package/packages/core/src/scheduler/dag/strategies/PriorityStrategy.ts +0 -46
  252. package/packages/core/src/storage/HiveDBStorage.ts +0 -64
  253. package/packages/core/src/storage/SQLiteStorage.ts +0 -414
  254. package/packages/core/src/storage/hiveSeed.ts +0 -308
  255. package/packages/core/src/storage/hiveStorage.test.ts +0 -38
  256. package/packages/core/src/storage/schema.ts +0 -689
  257. package/packages/core/src/storage/storage.test.ts +0 -37
  258. package/packages/core/src/swarm/AgentBus.ts +0 -460
  259. package/packages/core/src/swarm/EventBus.ts +0 -169
  260. package/packages/core/src/swarm/WorkerPool.ts +0 -236
  261. package/packages/core/src/tools/bridge-events.ts +0 -26
  262. package/packages/core/src/tools/canvas/index.ts +0 -375
  263. package/packages/core/src/tools/codebridge/index.ts +0 -342
  264. package/packages/core/src/tools/meeting/index.ts +0 -353
  265. package/packages/core/src/tools/projects/index.ts +0 -37
  266. package/packages/core/src/tools/projects/project-create.ts +0 -94
  267. package/packages/core/src/tools/projects/project-done.ts +0 -66
  268. package/packages/core/src/tools/projects/project-fail.ts +0 -66
  269. package/packages/core/src/tools/projects/project-list.ts +0 -96
  270. package/packages/core/src/tools/projects/project-update.ts +0 -72
  271. package/packages/core/src/tools/projects/task-create.ts +0 -68
  272. package/packages/core/src/tools/projects/task-evaluate.ts +0 -93
  273. package/packages/core/src/tools/projects/task-update.ts +0 -93
  274. package/packages/core/src/tools/voice/index.ts +0 -104
  275. package/packages/core/src/tools/web/api-request.test.ts +0 -170
  276. package/packages/core/src/tools/web/api-request.ts +0 -239
  277. package/test/setup-db.ts +0 -216
  278. /package/packages/core/src/agent/{NativeTools.ts → native-tools.ts} +0 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,129 @@
1
+ # Changelog
2
+
3
+ ## Sin publicar
4
+
5
+ ### Seguridad
6
+
7
+ - **`sanitizeDiagnostic` dejaba el token en claro detrás del esquema de auth.**
8
+ La regex consumía sólo la palabra `Bearer`, así que un diagnóstico con
9
+ `authorization: Bearer <token>` quedaba como `authorization: [REDACTED] <token>`
10
+ y la credencial viajaba al prompt del coordinador. Afecta a **0.1.5 y
11
+ anteriores**: el archivo viaja en el tarball publicado.
12
+
13
+ ### Corregido
14
+
15
+ - Se fijaron las 8 dependencias que estaban en `latest` (`zod`, `discord.js`,
16
+ `grammy`, `@slack/bolt`, `@whiskeysockets/baileys`, `@modelcontextprotocol/sdk`,
17
+ `qrcode-terminal`, `@sapphire/snowflake`). Como `bun.lock` no se publica, cada
18
+ instalación resolvía `latest` de nuevo: el SDK ya estaba corriendo
19
+ `@slack/bolt` **5.0.0** mientras hive, con el mismo código de canales, corría
20
+ **4.7.x**. Ahora quedan alineados.
21
+
22
+ ### Añadido
23
+
24
+ - **Backend de navegador intercambiable.** Las tools hablan con la interfaz
25
+ `BrowserBackend`; además del `agent-browser` de siempre (default, sin cambios)
26
+ hay un `WebViewBackend` sobre `Bun.WebView`, in-process, sin instalación de
27
+ ~75 MB ni descarga de Chrome. Se elige con `tools.browser.backend`
28
+ (`"agent-browser" | "webview" | "auto"`) o `HIVE_BROWSER_BACKEND`.
29
+ - Cobertura de `acceptance-checks` (27 tests), del backend de navegador (27) y
30
+ del selector con tools registradas en runtime (6).
31
+ - Workflow de CI: typecheck, tests, verificación de aislamiento de la base, y un
32
+ job que genera un scaffold con `create-app` y lo typechequea contra el SDK de
33
+ ese commit.
34
+
35
+ ## 0.1.5
36
+
37
+ Sincronización del SDK con el runtime de agentes de `hive`. **Trae rupturas de
38
+ API** (permitidas en 0.x, pero léelas antes de actualizar): el SDK y hive habían
39
+ divergido hasta compartir sólo 87 de 224 nombres de archivo, y quien instalaba
40
+ `@johpaz/hive-sdk` recibía un runtime más viejo y con bugs que en hive ya estaban
41
+ arreglados.
42
+
43
+ ### Corregido
44
+
45
+ - **Las caídas del provider ya no se guardan como respuestas del agente.**
46
+ `callLLM` devolvía `{ content: "[LLM Error] …", stop_reason: "error" }` y nadie
47
+ chequeaba `stop_reason`: el texto del error se persistía con `addMessage` y —
48
+ peor — la compactación lo guardaba como **el resumen permanente** que reemplaza
49
+ N mensajes de historial. `LLMResponse` ahora tiene un campo `error` tipado y hay
50
+ guardas en el loop, en la síntesis terminal y en la compactación.
51
+ - **HTTP 404/410 se distinguen del resto.** Un modelo retirado por el proveedor
52
+ produce un mensaje accionable con `error.modelUnavailable`, en vez de un error
53
+ opaco y reintentos que no pueden funcionar.
54
+ - **Las claves de modelo ya no colisionan.** Dos providers que sirven el mismo
55
+ modelo (`z-ai/glm-5.2` bajo NVIDIA y bajo OpenRouter) se pisaban la fila. Los
56
+ cuatro revendedores (`nvidia`, `openrouter`, `opencode-go`, `modelscope`,
57
+ `groq`) prefijan sus ids; el prefijo no llega al cable.
58
+ - **Los precios salen de la base.** `MODEL_PRICING` era un mapa hardcodeado de
59
+ ~62 entradas en paralelo al catálogo, y mantener dos listas fallaba en silencio.
60
+ Ahora el precio vive en la fila del modelo (`input_per_1m` / `output_per_1m`) y
61
+ un modelo sin tarifa avisa una vez en vez de reportar $0 como si fuera gratis.
62
+ - **`createAgent` honra su configuración.** `provider`, `model`, `maxIterations`,
63
+ `skills` y `workspace` se aceptaban y se descartaban: el agente corría con lo
64
+ que hubiera en la base. Ahora se persisten en la fila del agente.
65
+ - **Las tools de la app son usables.** `defineTool` registraba la declaración pero
66
+ no el ejecutor, así que una llamada moría con "no matching executor found". Y
67
+ aunque lo tuviera, el índice de capacidad no se llenaba nunca por la vía del
68
+ SDK, así que el agente quedaba limitado al loadout mínimo para siempre.
69
+ - **El selector ya no descarta tools que el índice sí encontró.** `selectTools`
70
+ resolvía los resultados contra `CORE_TOOL_CATALOG` mientras el índice se
71
+ construía con ése **más** la colección `tools`: una tool registrada en runtime
72
+ podía puntuar primera en BM25 y aun así nunca ofrecerse al modelo.
73
+ - **`Scratchpad` escribe el documento completo.** Compartía colección e id con
74
+ `conversation-store` pero guardaba un doc sin `source`, `createdAt` ni `seq`,
75
+ así que sus notas se ordenaban mal dentro del prompt.
76
+ - **La suite de tests dejó de escribir en la base real del usuario.** Un preload
77
+ fija `HIVE_DB_PATH=":memory:"` antes de que cargue cualquier módulo.
78
+ - **`tool_choice` de Mistral.** Estaba en `"any"`, que según docs.mistral.ai
79
+ *fuerza* una llamada a tool en cada turno; ahora es `"auto"`.
80
+
81
+ ### Ruptura
82
+
83
+ | Antes | Ahora |
84
+ |---|---|
85
+ | `initializeDatabase()`, `dbService`, `getDb()` | `ensureHiveDb()`, `col()` |
86
+ | `seedHiveDB()` | `seedAllData()` (lo llama `ensureHiveDb`) |
87
+ | `getAverageTokenCost()`, `getProviderPricing()`, `estimateCostForTokens()` | `calculateCost()` |
88
+ | `new EthicsGuard(db)`, métodos sync | `new EthicsGuard()`, métodos async |
89
+ | `new CronScheduler(db, handler)` | `new CronScheduler(handler)` |
90
+ | `new Scratchpad(db)` | `new Scratchpad()` |
91
+ | subpath `./ace` | `curator`, `reflector`, `tracer` desde `./agent` |
92
+ | subpath `./agent/selectors` | selectores desde `./agent` |
93
+ | `AgentConfig.provider: "openai" \| "anthropic" \| "gemini" \| "ollama"` | los 16 providers del catálogo |
94
+ | `api_request` con `auth`, `body` objeto, `timeoutMs` | headers, `body` string, `timeout_ms` |
95
+ | evento de canvas `canvas:render` | `canvas:node_add` / `node_update` / `edge_*` |
96
+
97
+ Módulos eliminados: `auth/` (sin un solo import), `agent/ContextGuard.ts` y
98
+ `agent/Hooks.ts` (muertos), `storage/SQLiteStorage.ts`, `storage/schema.ts`,
99
+ `storage/hiveSeed.ts`, `scheduler/dag/` (copia byte-idéntica de `swarm/`),
100
+ `swarm/WorkerPool.ts` (copia rezagada de `scheduler/integration.ts`),
101
+ `swarm/AgentBus.ts` y `swarm/EventBus.ts` (duplicaban `events/`), y las tools
102
+ `canvas/`, `codebridge/`, `meeting/`, `projects/`, `voice/`.
103
+
104
+ `harness/` pasó de tener implementación propia a ser un barrel sobre la
105
+ implementación única. El subpath `@johpaz/hive-sdk/harness` exporta lo mismo.
106
+
107
+ ### Agregado
108
+
109
+ - 16 providers LLM con `OpenAICompatBase`, incluidos `nvidia`, `z-ai`,
110
+ `modelscope`, `opencode-go`, `minimax`, `hiveagents`.
111
+ - Catálogo sembrado de 18 providers y 106 modelos con precio, actualizable
112
+ editando `SEED_DATA.models`: las filas de catálogo se borran y se recrean en
113
+ cada arranque, preservando qué modelo tenía activo el usuario.
114
+ - `registerAppTool()` / `clearAppTools()` como punto de extensión del registry.
115
+ - `catalogModelKey()`, `wireModelId()`, `isResellerProvider()`.
116
+ - `callLLM` y los tipos de `llm-client` en la superficie pública: antes sólo se
117
+ exportaba el wrapper `AgentRunner`.
118
+ - `bun run skills:bundle` regenera el catálogo de skills desde los `SKILL.md`
119
+ (el generador apuntaba a una ruta que no existe en este repo).
120
+ - Subpaths `./scheduler`, `./workers` y `./events`.
121
+ - De 18 a 44 archivos de test (77 → 314 casos), incluyendo agent loop, context
122
+ compiler, compactación, seed, precios y claves de modelo, que no tenían ninguno.
123
+
124
+ ### Corregido en el CLI
125
+
126
+ `init`, `run`, `test` y `trace` importaban `@hive/core`, un nombre de workspace
127
+ que no está publicado en npm: los cuatro comandos estaban rotos para cualquier
128
+ usuario. `hives test` además hacía glob sobre `packages/core/src/**`, rutas del
129
+ repo del SDK y no del proyecto donde se ejecuta.
package/README.md CHANGED
@@ -1,30 +1,26 @@
1
- # Documentación — Hive SDK
1
+ # @johpaz/hive-sdk
2
2
 
3
- > **Hive Agent Harness SDK** — Build, deploy, and scale AI agent applications with multi-channel support, Bun Workers, and swarm orchestration.
3
+ > **Hive Agent Harness SDK** — construí, desplegá y escalá aplicaciones de agentes de IA, con soporte multi-canal, Bun Workers y orquestación en swarm.
4
4
 
5
- ## Documentos
5
+ [![npm](https://img.shields.io/npm/v/@johpaz/hive-sdk)](https://www.npmjs.com/package/@johpaz/hive-sdk)
6
6
 
7
- | Documento | Descripción |
8
- |-----------|-------------|
9
- | [API-AGENTS.md](docs/API-AGENTS.md) | createAgent, AgentLoop, Tool/Skill Selector, LLM Providers |
10
- | [API-DAG-SCHEDULER.md](docs/API-DAG-SCHEDULER.md) | DAGScheduler, TaskGraph, TaskNode, Estrategias, Presets |
11
- | [API-WORKERS-EVENTS.md](docs/API-WORKERS-EVENTS.md) | **Bun Workers**, createWorker, WorkerPool, AgentBus, EventBus, Canvas |
12
- | [API-TOOLS-SKILLS-CHANNELS.md](docs/API-TOOLS-SKILLS-CHANNELS.md) | Tools, Skills, MCP, **Gateway**, **Channels**, **Tool Runtime**, Storage |
13
- | [API-CONTEXT-COMPILER.md](docs/API-CONTEXT-COMPILER.md) | Context Compiler, Message History, Scratchpad, EthicsGuard, ACE |
14
- | [TEMPLATE-HIVE-APP.md](docs/TEMPLATE-HIVE-APP.md) | **Template hive-app** — estructura, opciones, personalización |
7
+ ```bash
8
+ bun add @johpaz/hive-sdk
9
+ ```
15
10
 
16
11
  ## ¿Qué es Hive SDK?
17
12
 
18
13
  **Hive SDK es un Agent Harness**: un marco de trabajo completo para construir, desplegar y escalar aplicaciones de agentes de IA. A diferencia de un simple wrapper de LLM, un *harness* provee todo lo necesario para que un agente opere en producción:
19
14
 
20
- - **Agentes**: ciclo ReAct, selección dinámica de tools/skills vía FTS5, múltiples providers (OpenAI, Anthropic, Gemini, Ollama).
21
- - **Tools**: 70+ tools incluidas filesystem, web search, browser automation (`agent-browser`), APIs (`api_request`), canvas, voz, office, cron.
22
- - **Skills**: workflows reutilizables con `defineSkill` y `SkillLoader`.
15
+ - **Agentes**: ciclo ReAct nativo con checkpoint durable, 16 providers LLM y descubrimiento de tools/skills por búsqueda BM25.
16
+ - **Catálogo**: 18 providers y 106 modelos sembrados, cada uno con su precio por millón de tokens una sola fuente de verdad para el costo.
17
+ - **Tools**: 58 tools incluidas — filesystem, web search, browser automation (`agent-browser`), APIs (`api_request`), a2ui, office, cron, delegación.
18
+ - **Skills**: 23 workflows bundled, más los tuyos con `defineSkill` y `SkillLoader`.
23
19
  - **Canales**: Telegram, Discord, WhatsApp, Slack y WebChat con `ChannelManager`.
24
20
  - **Swarm**: orquestación multi-agente con `DAGScheduler`, `TaskGraph` y `WorkerPool`.
25
21
  - **Runtime**: ejecución paralela de tools vía Bun Workers.
26
22
  - **Gateway**: servidor HTTP/WebSocket para exponer agentes como API.
27
- - **Memoria y estado**: SQLite + FTS5, scratchpad, context compiler.
23
+ - **Memoria y estado**: HiveDB (colecciones + índice BM25), scratchpad, context compiler con compactación.
28
24
 
29
25
  Con Hive SDK no montas un agente desde cero: **enganchas tu lógica de negocio en un harness ya armado**.
30
26
 
@@ -67,17 +63,19 @@ bun run dev
67
63
 
68
64
  ```typescript
69
65
  import { createAgent, defineTool } from "@johpaz/hive-sdk";
66
+ import { z } from "zod";
70
67
 
71
68
  const tool = defineTool({
72
69
  name: "saludar",
73
- description: "Saluda a alguien",
70
+ description: "Saluda a alguien por su nombre",
71
+ schema: z.object({ nombre: z.string().describe("a quién saludar") }),
74
72
  execute: async (args: { nombre: string }) => `¡Hola ${args.nombre}!`,
75
73
  });
76
74
 
77
75
  const agent = await createAgent({
78
76
  name: "asistente",
79
- provider: "openai",
80
- model: "gpt-4o-mini",
77
+ provider: "openai", // cualquiera de los 16 del catálogo
78
+ model: "gpt-5.6-luna", // tiene que existir en el catálogo sembrado
81
79
  tools: [tool],
82
80
  });
83
81
 
@@ -85,6 +83,11 @@ const respuesta = await agent.run("Saluda a Juan");
85
83
  console.log(respuesta);
86
84
  ```
87
85
 
86
+ `createAgent` abre HiveDB, siembra el catálogo de providers y modelos, persiste
87
+ la configuración en la fila del agente y deja tus tools indexadas para que el
88
+ modelo pueda descubrirlas. El `schema` de Zod es lo que se traduce a los
89
+ parámetros que ve el LLM — sin él, la tool se ofrece sin argumentos.
90
+
88
91
  ### 3. Crear un worker especializado
89
92
 
90
93
  ```typescript
@@ -135,15 +138,26 @@ console.log(`Gateway at http://127.0.0.1:18790`);
135
138
  ## Variables de Entorno
136
139
 
137
140
  ```bash
138
- HIVE_DATA_DIR=./data # Directorio de datos SQLite
141
+ HIVE_HOME=~/.hive # Directorio de datos (HiveDB vive en <HIVE_HOME>/data)
142
+ HIVE_DB_PATH= # Ruta explícita de la base; ":memory:" para efímera
139
143
  HIVE_HOST=127.0.0.1 # Gateway host
140
144
  HIVE_PORT=18790 # Gateway port
141
- OPENAI_API_KEY=sk-... # OpenAI
142
- ANTHROPIC_API_KEY=sk-ant-... # Anthropic
143
- GOOGLE_API_KEY=... # Gemini
144
145
  LOG_LEVEL=info # debug | info | warn | error
145
146
  ```
146
147
 
148
+ La API key de cada provider se guarda cifrada en la base. Como alternativa, el
149
+ SDK cae a `<PROVIDER>_API_KEY` del entorno, en mayúsculas y con el id del
150
+ provider tal cual:
151
+
152
+ ```bash
153
+ OPENAI_API_KEY=sk-...
154
+ ANTHROPIC_API_KEY=sk-ant-...
155
+ GOOGLE_API_KEY=... # provider "gemini"
156
+ MODELSCOPE_API_KEY=ms-...
157
+ NVIDIA_API_KEY=nvapi-...
158
+ OPENROUTER_API_KEY=sk-or-...
159
+ ```
160
+
147
161
  ## Tests
148
162
 
149
163
  ```bash
@@ -154,7 +168,48 @@ bun test
154
168
  bun test --timeout 60000
155
169
  ```
156
170
 
171
+ La suite usa una base efímera (`HIVE_DB_PATH=":memory:"`, fijado en
172
+ `test/preload.ts`) para no escribir en la del usuario.
173
+
174
+ ## Publicar
175
+
176
+ ```bash
177
+ # 1. Actualizar archivos, sin tocar git — revisá el diff
178
+ bun run version:set 0.1.6
179
+
180
+ # 2. Cuando estés conforme: typecheck + tests + commit + tag + push
181
+ bun run version:set 0.1.6 --push
182
+
183
+ # Preview que no se instala por defecto
184
+ bun run version:set 0.2.0-rc.1 --push --npm-tag=next
185
+ ```
186
+
187
+ `--push` corre `typecheck` y `bun test` antes de tocar git, y pide confirmación
188
+ explícita. El tag `vX.Y.Z` es lo que dispara `.github/workflows/publish.yml`, que
189
+ publica **sólo el paquete raíz** (`packages/*` son workspaces internos). El
190
+ dist-tag viaja en el mensaje del tag, así que `--npm-tag=next` publica bajo `next`
191
+ y no mueve `latest`.
157
192
 
193
+ El script aborta si la versión ya existe en npm — republicar da 403 — y si el tag
194
+ local ya existe.
158
195
 
196
+ ```bash
197
+ npm view @johpaz/hive-sdk dist-tags # verificar después del release
198
+ ```
199
+
200
+ ## Documentación
159
201
 
160
- *Documentación Hive SDK v0.0.18*
202
+ | Documento | Descripción |
203
+ |-----------|-------------|
204
+ | [API-AGENTS.md](docs/API-AGENTS.md) | createAgent, AgentLoop, Tool/Skill Selector, los 16 LLM Providers |
205
+ | [API-CONTEXT-COMPILER.md](docs/API-CONTEXT-COMPILER.md) | Context Compiler, historial, Scratchpad, EthicsGuard, ACE |
206
+ | [API-TOOLS-SKILLS-CHANNELS.md](docs/API-TOOLS-SKILLS-CHANNELS.md) | Tools, Skills, MCP, Gateway, Channels, Tool Runtime, Storage |
207
+ | [API-DAG-SCHEDULER.md](docs/API-DAG-SCHEDULER.md) | DAGScheduler, TaskGraph, TaskNode, estrategias, presets |
208
+ | [API-WORKERS-EVENTS.md](docs/API-WORKERS-EVENTS.md) | Bun Workers, createWorker, WorkerPool, AgentBus, EventBus, Canvas |
209
+ | [HIVE-HARNESS.md](docs/HIVE-HARNESS.md) | Ejecución durable: cola de jobs, checkpoints, leases, proof packets |
210
+ | [TEMPLATE-HIVE-APP.md](docs/TEMPLATE-HIVE-APP.md) | Template `hive-app` — estructura, opciones, personalización |
211
+ | [CHANGELOG.md](CHANGELOG.md) | Cambios por versión |
212
+
213
+ ---
214
+
215
+ *Hive SDK v0.1.6 — MIT*
package/bun.lock CHANGED
@@ -8,16 +8,16 @@
8
8
  "@anthropic-ai/sdk": "^0.74.0",
9
9
  "@google/genai": "^1.43.0",
10
10
  "@johpaz/hive-db": "^0.4.0",
11
- "@modelcontextprotocol/sdk": "latest",
12
- "@sapphire/snowflake": "latest",
13
- "@slack/bolt": "latest",
14
- "@whiskeysockets/baileys": "latest",
11
+ "@modelcontextprotocol/sdk": "^1.26.0",
12
+ "@sapphire/snowflake": "^3.5.5",
13
+ "@slack/bolt": "^4.7.2",
14
+ "@whiskeysockets/baileys": "7.0.0-rc11",
15
15
  "async-mutex": "^0.5.0",
16
16
  "cron-parser": "^5.5.0",
17
17
  "croner": "^10.0.1",
18
- "discord.js": "latest",
18
+ "discord.js": "^14.26.4",
19
19
  "docx": "^9.6.1",
20
- "grammy": "latest",
20
+ "grammy": "^1.42.0",
21
21
  "groq-sdk": "^0.37.0",
22
22
  "jsonwebtoken": "^9.0.3",
23
23
  "jszip": "^3.10.1",
@@ -27,10 +27,10 @@
27
27
  "pdf-lib": "^1.17.1",
28
28
  "pdfjs-dist": "^5.6.205",
29
29
  "pptxgenjs": "^4.0.1",
30
- "qrcode-terminal": "latest",
30
+ "qrcode-terminal": "^0.12.0",
31
31
  "toon-format-parser": "^1.1.0",
32
32
  "xlsx": "^0.18.5",
33
- "zod": "latest",
33
+ "zod": "^4.4.3",
34
34
  },
35
35
  "devDependencies": {
36
36
  "@types/bun": "^1.3.13",
@@ -40,7 +40,7 @@
40
40
  },
41
41
  "packages/cli": {
42
42
  "name": "@hive/cli",
43
- "version": "0.0.15",
43
+ "version": "0.1.5",
44
44
  "bin": {
45
45
  "hive": "./src/index.ts",
46
46
  },
@@ -50,21 +50,21 @@
50
50
  },
51
51
  "packages/core": {
52
52
  "name": "@hive/core",
53
- "version": "0.0.15",
53
+ "version": "0.1.5",
54
54
  "dependencies": {
55
55
  "@anthropic-ai/sdk": "^0.74.0",
56
56
  "@google/genai": "^1.43.0",
57
57
  "@johpaz/hive-db": "^0.4.0",
58
- "@modelcontextprotocol/sdk": "latest",
59
- "@sapphire/snowflake": "latest",
60
- "@slack/bolt": "latest",
61
- "@whiskeysockets/baileys": "latest",
58
+ "@modelcontextprotocol/sdk": "^1.26.0",
59
+ "@sapphire/snowflake": "^3.5.5",
60
+ "@slack/bolt": "^4.7.2",
61
+ "@whiskeysockets/baileys": "7.0.0-rc11",
62
62
  "async-mutex": "^0.5.0",
63
63
  "cron-parser": "^5.5.0",
64
64
  "croner": "^10.0.1",
65
- "discord.js": "latest",
65
+ "discord.js": "^14.26.4",
66
66
  "docx": "^9.6.1",
67
- "grammy": "latest",
67
+ "grammy": "^1.42.0",
68
68
  "groq-sdk": "^0.37.0",
69
69
  "jsonwebtoken": "^9.0.3",
70
70
  "jszip": "^3.10.1",
@@ -74,10 +74,10 @@
74
74
  "pdf-lib": "^1.17.1",
75
75
  "pdfjs-dist": "^5.6.205",
76
76
  "pptxgenjs": "^4.0.1",
77
- "qrcode-terminal": "latest",
77
+ "qrcode-terminal": "^0.12.0",
78
78
  "toon-format-parser": "^1.1.0",
79
79
  "xlsx": "^0.18.5",
80
- "zod": "latest",
80
+ "zod": "^4.4.3",
81
81
  },
82
82
  "devDependencies": {
83
83
  "@types/jsonwebtoken": "^9.0.10",
@@ -258,17 +258,17 @@
258
258
 
259
259
  "@sapphire/snowflake": ["@sapphire/snowflake@3.5.5", "", {}, "sha512-xzvBr1Q1c4lCe7i6sRnrofxeO1QTP/LKQ6A6qy0iB4x5yfiSfARMEQEghojzTNALDTcv8En04qYNIco9/K9eZQ=="],
260
260
 
261
- "@slack/bolt": ["@slack/bolt@5.0.0", "", { "dependencies": { "@slack/logger": "^5.0.0", "@slack/oauth": "^4.0.0", "@slack/socket-mode": "^3.0.0", "@slack/types": "^3.0.0", "@slack/web-api": "^8.0.0", "express": "^5.0.0", "path-to-regexp": "^8.1.0", "raw-body": "^3", "tsscmp": "^1.0.6" }, "peerDependencies": { "@types/express": "^5.0.0" } }, "sha512-L0FTzidrDKTu4Ph8sdv0bB3acafBTAC02TBcD+hojPTTNSMX3hSK+rkpkUKkqbbc0vGpSjd6A/g71Rjy7EbBhw=="],
261
+ "@slack/bolt": ["@slack/bolt@4.7.3", "", { "dependencies": { "@slack/logger": "^4.0.1", "@slack/oauth": "^3.0.5", "@slack/socket-mode": "^2.0.7", "@slack/types": "^2.21.1", "@slack/web-api": "^7.16.0", "axios": "^1.12.0", "express": "^5.0.0", "path-to-regexp": "^8.1.0", "raw-body": "^3", "tsscmp": "^1.0.6" }, "peerDependencies": { "@types/express": "^5.0.0" } }, "sha512-bODs8q/yNDWUPoxmQhFrRqLMA5vhB/PDizYWqb6CkQhLWEUo5JFtfJcmeU4ElGl6qSt++OKjSYNa4MPc77CleQ=="],
262
262
 
263
- "@slack/logger": ["@slack/logger@5.0.0", "", { "dependencies": { "@types/node": ">=20" } }, "sha512-VGXhmmgsAo9shdQYh4tFDndd+7nsgp0Y5h0UPDaUp8K359pBasI6YdkMqFW3mCOxLQkq09qj7o7cq6f3DuXcJQ=="],
263
+ "@slack/logger": ["@slack/logger@4.0.1", "", { "dependencies": { "@types/node": ">=18" } }, "sha512-6cmdPrV/RYfd2U0mDGiMK8S7OJqpCTm7enMLRR3edccsPX8j7zXTLnaEF4fhxxJJTAIOil6+qZrnUPTuaLvwrQ=="],
264
264
 
265
- "@slack/oauth": ["@slack/oauth@4.0.0", "", { "dependencies": { "@slack/logger": "^5.0.0", "@slack/web-api": "^8.0.0", "@types/jsonwebtoken": "^9", "@types/node": ">=20", "jsonwebtoken": "^9" } }, "sha512-Aqs5bGghT+VtNcdwVOQy7CcyCfDNd9YYnZsCRukIF9p1Mxuq4uL+BjqlWQB0SeS4wzrLzePPgvj8JDuQil+ezA=="],
265
+ "@slack/oauth": ["@slack/oauth@3.0.5", "", { "dependencies": { "@slack/logger": "^4.0.1", "@slack/web-api": "^7.15.0", "@types/jsonwebtoken": "^9", "@types/node": ">=18", "jsonwebtoken": "^9" } }, "sha512-exqFQySKhNDptWYSWhvRUJ4/+ndu2gayIy7vg/JfmJq3wGtGdHk531P96fAZyBm5c1Le3yaPYqv92rL4COlU3A=="],
266
266
 
267
- "@slack/socket-mode": ["@slack/socket-mode@3.0.0", "", { "dependencies": { "@slack/logger": "^5.0.0", "@slack/web-api": "^8.0.0", "@types/node": ">=20", "eventemitter3": "^5" }, "peerDependencies": { "undici": "^7.0.0" } }, "sha512-QShO60SB0E+HH+TbcKj3CBEQbodToRyiXnxuSB4t1kvUlqEmuGA1nOOjrRDkDJbOECAZ13PLe4ek9SrntpfoYg=="],
267
+ "@slack/socket-mode": ["@slack/socket-mode@2.0.7", "", { "dependencies": { "@slack/logger": "^4.0.1", "@slack/web-api": "^7.15.0", "@types/node": ">=18", "@types/ws": "^8", "eventemitter3": "^5", "ws": "^8" } }, "sha512-qYy07je71WnEHgRwmw12DlAnZLi5HXmdlI2WUzUK2LH/rYXQpP6uEg462S5CwfE8FoCKUdIigHtYnOOfzZH1lQ=="],
268
268
 
269
- "@slack/types": ["@slack/types@3.0.0", "", {}, "sha512-KNOqpnNAlsFt5Jk9XBclslQ0lobRIg/0tnhpmvZJAglHJx9E8oceN8hC3gaBzkR6UzQ9Wzq4rLsJ98wUcxWPfw=="],
269
+ "@slack/types": ["@slack/types@2.22.0", "", {}, "sha512-sZ9lIgJhPX2qft/tKWiklFlc0o1FWeI7QtciZJfW1+ErH1eGGHvOZ8e73sleTCFEFJp1q/R0WeS8Oa7AsiDprg=="],
270
270
 
271
- "@slack/web-api": ["@slack/web-api@8.0.0", "", { "dependencies": { "@slack/logger": "^5.0.0", "@slack/types": "^3.0.0", "@types/node": ">=20", "@types/retry": "0.12.0", "eventemitter3": "^5.0.1", "p-queue": "^6", "p-retry": "^4", "retry": "^0.13.1" } }, "sha512-ORx3XQryQPq2Jnxv5giSKXVoQRUeylrrymIR2S9fPzLjPcCts8RayMeBSZMcpfpAqp6fnBRuPW2UB6dUPUTEZA=="],
271
+ "@slack/web-api": ["@slack/web-api@7.19.0", "", { "dependencies": { "@slack/logger": "^4.0.1", "@slack/types": "^2.21.0", "@types/node": ">=18", "@types/retry": "0.12.0", "axios": "^1.16.0", "eventemitter3": "^5.0.1", "form-data": "^4.0.4", "is-electron": "2.2.2", "is-stream": "^2", "p-queue": "^6", "p-retry": "^4", "retry": "^0.13.1" } }, "sha512-ItjyjEZml+LDH8CjcCLRLJHh7VZtevPKExrRN3l5KWyBliyDnGAeoO4Y+K+fFBmRpKLYVPgqWMX4THldv2HVtA=="],
272
272
 
273
273
  "@tokenizer/inflate": ["@tokenizer/inflate@0.4.1", "", { "dependencies": { "debug": "^4.4.3", "token-types": "^6.1.1" } }, "sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA=="],
274
274
 
@@ -308,7 +308,7 @@
308
308
 
309
309
  "@vladfrangu/async_event_emitter": ["@vladfrangu/async_event_emitter@2.4.7", "", {}, "sha512-Xfe6rpCTxSxfbswi/W/Pz7zp1WWSNn4A0eW4mLkQUewCrXXtMj31lCg+iQyTkh/CkusZSq9eDflu7tjEDXUY6g=="],
310
310
 
311
- "@whiskeysockets/baileys": ["@whiskeysockets/baileys@7.0.0-rc13", "", { "dependencies": { "@cacheable/node-cache": "^1.4.0", "@hapi/boom": "^9.1.3", "async-mutex": "^0.5.0", "libsignal": "^6.0.0", "lru-cache": "^11.1.0", "music-metadata": "^11.12.3", "p-queue": "^9.0.0", "pino": "^9.6", "protobufjs": "^7.5.6", "whatsapp-rust-bridge": "0.5.4", "ws": "^8.13.0" }, "peerDependencies": { "audio-decode": "^2.1.3", "jimp": "^1.6.1", "link-preview-js": "^3.0.0", "sharp": "*" }, "optionalPeers": ["audio-decode", "jimp", "link-preview-js"] }, "sha512-8JPc8gaaCRykkjW2jxLGQ7/RZGrc7awO7WU+QJocf58eSUI9jAdcuYLynzhAbyU4UWvJJsHImZ+5E/JaZj5ypA=="],
311
+ "@whiskeysockets/baileys": ["@whiskeysockets/baileys@7.0.0-rc11", "", { "dependencies": { "@cacheable/node-cache": "^1.4.0", "@hapi/boom": "^9.1.3", "async-mutex": "^0.5.0", "libsignal": "^6.0.0", "lru-cache": "^11.1.0", "music-metadata": "^11.12.3", "p-queue": "^9.0.0", "pino": "^9.6", "protobufjs": "^7.5.6", "whatsapp-rust-bridge": "0.5.4", "ws": "^8.13.0" }, "peerDependencies": { "audio-decode": "^2.1.3", "jimp": "^1.6.1", "link-preview-js": "^3.0.0", "sharp": "*" }, "optionalPeers": ["audio-decode", "jimp", "link-preview-js"] }, "sha512-4FKCVZR8mGz7oy6aRJgcBdM5t1CjzzDOedfccphwJao5BAy6RKCTTDbjyOaJejCkYDwjkEADpZBRmKDxvGmoUQ=="],
312
312
 
313
313
  "@xmldom/xmldom": ["@xmldom/xmldom@0.8.13", "", {}, "sha512-KRYzxepc14G/CEpEGc3Yn+JKaAeT63smlDr+vjB8jRfgTBBI9wRj/nkQEO+ucV8p8I9bfKLWp37uHgFrbntPvw=="],
314
314
 
@@ -318,7 +318,7 @@
318
318
 
319
319
  "adler-32": ["adler-32@1.3.1", "", {}, "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A=="],
320
320
 
321
- "agent-base": ["agent-base@7.1.4", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="],
321
+ "agent-base": ["agent-base@6.0.2", "", { "dependencies": { "debug": "4" } }, "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ=="],
322
322
 
323
323
  "agentkeepalive": ["agentkeepalive@4.6.0", "", { "dependencies": { "humanize-ms": "^1.2.1" } }, "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ=="],
324
324
 
@@ -334,6 +334,8 @@
334
334
 
335
335
  "atomic-sleep": ["atomic-sleep@1.0.0", "", {}, "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ=="],
336
336
 
337
+ "axios": ["axios@1.19.0", "", { "dependencies": { "follow-redirects": "^1.16.0", "form-data": "^4.0.6", "https-proxy-agent": "^5.0.1", "proxy-from-env": "^2.1.0" } }, "sha512-ht/iuYZXEjFxLH/Hkezgd7m6JKlHHXEUSneaDz8uZe1Gj5QZtCnpyDsckvAiEnT89OEbCLmnte4R4sn7P0EKFw=="],
338
+
337
339
  "base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="],
338
340
 
339
341
  "bignumber.js": ["bignumber.js@9.3.1", "", {}, "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ=="],
@@ -446,7 +448,9 @@
446
448
 
447
449
  "finalhandler": ["finalhandler@2.1.1", "", { "dependencies": { "debug": "^4.4.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "on-finished": "^2.4.1", "parseurl": "^1.3.3", "statuses": "^2.0.1" } }, "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA=="],
448
450
 
449
- "form-data": ["form-data@4.0.5", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.2", "mime-types": "^2.1.12" } }, "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w=="],
451
+ "follow-redirects": ["follow-redirects@1.16.0", "", {}, "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw=="],
452
+
453
+ "form-data": ["form-data@4.0.6", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.4", "mime-types": "^2.1.35" } }, "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ=="],
450
454
 
451
455
  "form-data-encoder": ["form-data-encoder@1.7.2", "", {}, "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A=="],
452
456
 
@@ -488,7 +492,7 @@
488
492
 
489
493
  "hashery": ["hashery@1.5.1", "", { "dependencies": { "hookified": "^1.15.0" } }, "sha512-iZyKG96/JwPz1N55vj2Ie2vXbhu440zfUfJvSwEqEbeLluk7NnapfGqa7LH0mOsnDxTF85Mx8/dyR6HfqcbmbQ=="],
490
494
 
491
- "hasown": ["hasown@2.0.3", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg=="],
495
+ "hasown": ["hasown@2.0.4", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A=="],
492
496
 
493
497
  "hono": ["hono@4.12.18", "", {}, "sha512-RWzP96k/yv0PQfyXnWjs6zot20TqfpfsNXhOnev8d1InAxubW93L11/oNUc3tQqn2G0bSdAOBpX+2uDFHV7kdQ=="],
494
498
 
@@ -498,7 +502,7 @@
498
502
 
499
503
  "https": ["https@1.0.0", "", {}, "sha512-4EC57ddXrkaF0x83Oj8sM6SLQHAWXw90Skqu2M4AEWENZ3F02dFJE/GARA8igO79tcgYqGrD7ae4f5L3um2lgg=="],
500
504
 
501
- "https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="],
505
+ "https-proxy-agent": ["https-proxy-agent@5.0.1", "", { "dependencies": { "agent-base": "6", "debug": "4" } }, "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA=="],
502
506
 
503
507
  "humanize-ms": ["humanize-ms@1.2.1", "", { "dependencies": { "ms": "^2.0.0" } }, "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ=="],
504
508
 
@@ -516,8 +520,12 @@
516
520
 
517
521
  "ipaddr.js": ["ipaddr.js@1.9.1", "", {}, "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="],
518
522
 
523
+ "is-electron": ["is-electron@2.2.2", "", {}, "sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg=="],
524
+
519
525
  "is-promise": ["is-promise@4.0.0", "", {}, "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ=="],
520
526
 
527
+ "is-stream": ["is-stream@2.0.1", "", {}, "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="],
528
+
521
529
  "isarray": ["isarray@1.0.0", "", {}, "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="],
522
530
 
523
531
  "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="],
@@ -656,6 +664,8 @@
656
664
 
657
665
  "proxy-addr": ["proxy-addr@2.0.7", "", { "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg=="],
658
666
 
667
+ "proxy-from-env": ["proxy-from-env@2.1.0", "", {}, "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA=="],
668
+
659
669
  "qified": ["qified@0.10.1", "", { "dependencies": { "hookified": "^2.1.1" } }, "sha512-+Owyggi9IxT1ePKGafcI87ubSmxol6smwJ+RAHDQlx9+9cPwFWDiKFFCPuWhr9ignlGpZ9vDQLw67N4dcTVFEA=="],
660
670
 
661
671
  "qrcode-terminal": ["qrcode-terminal@0.12.0", "", { "bin": { "qrcode-terminal": "./bin/qrcode-terminal.js" } }, "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ=="],
@@ -802,12 +812,20 @@
802
812
 
803
813
  "@slack/web-api/p-queue": ["p-queue@6.6.2", "", { "dependencies": { "eventemitter3": "^4.0.4", "p-timeout": "^3.2.0" } }, "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ=="],
804
814
 
815
+ "@types/node-fetch/form-data": ["form-data@4.0.5", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.2", "mime-types": "^2.1.12" } }, "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w=="],
816
+
817
+ "es-set-tostringtag/hasown": ["hasown@2.0.3", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg=="],
818
+
805
819
  "fetch-blob/web-streams-polyfill": ["web-streams-polyfill@3.3.3", "", {}, "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw=="],
806
820
 
807
821
  "form-data/mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="],
808
822
 
823
+ "gaxios/https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="],
824
+
809
825
  "gaxios/node-fetch": ["node-fetch@3.3.2", "", { "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", "formdata-polyfill": "^4.0.10" } }, "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA=="],
810
826
 
827
+ "get-intrinsic/hasown": ["hasown@2.0.3", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg=="],
828
+
811
829
  "groq-sdk/@types/node": ["@types/node@18.19.130", "", { "dependencies": { "undici-types": "~5.26.4" } }, "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg=="],
812
830
 
813
831
  "music-metadata/content-type": ["content-type@2.0.0", "", {}, "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ=="],
@@ -824,10 +842,18 @@
824
842
 
825
843
  "@slack/web-api/p-queue/p-timeout": ["p-timeout@3.2.0", "", { "dependencies": { "p-finally": "^1.0.0" } }, "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg=="],
826
844
 
845
+ "@types/node-fetch/form-data/hasown": ["hasown@2.0.3", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg=="],
846
+
847
+ "@types/node-fetch/form-data/mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="],
848
+
827
849
  "form-data/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="],
828
850
 
851
+ "gaxios/https-proxy-agent/agent-base": ["agent-base@7.1.4", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="],
852
+
829
853
  "groq-sdk/@types/node/undici-types": ["undici-types@5.26.5", "", {}, "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="],
830
854
 
831
855
  "pptxgenjs/@types/node/undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="],
856
+
857
+ "@types/node-fetch/form-data/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="],
832
858
  }
833
859
  }
package/bunfig.toml CHANGED
@@ -1,7 +1,9 @@
1
1
  [test]
2
- preload = ["./test/setup-db.ts"]
2
+ # Fija HIVE_DB_PATH=":memory:" antes de que cargue cualquier módulo — ver test/preload.ts.
3
+ # Sin esto la suite abre la base real del usuario (~/.hive/data/hive) y le escribe.
4
+ preload = ["./test/preload.ts"]
3
5
  timeout = 30000
4
6
  randomize = false
5
7
 
6
8
  [install]
7
- registry = "https://registry.npmjs.org/"
9
+ registry = "https://registry.npmjs.org/"