@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,252 @@
1
+ # API Reference — Context Compiler y Componentes Avanzados
2
+
3
+ ## Índice
4
+
5
+ 1. [Context Compiler](#context-compiler)
6
+ 2. [Message History](#message-history)
7
+ 3. [Scratchpad](#scratchpad)
8
+ 4. [EthicsGuard](#ethicsguard)
9
+ 5. [ACE (Tracer, Reflector, Curator)](#ace)
10
+ 6. [MCP Internals](#mcp)
11
+
12
+ ---
13
+
14
+ ## Context Compiler
15
+
16
+ Compila todo el contexto necesario para cada ejecución del agente.
17
+
18
+ ### compileContext
19
+
20
+ ```typescript
21
+ import { compileContext } from "@johpaz/hive-sdk";
22
+
23
+ const ctx = await compileContext({
24
+ agentId: "analyst",
25
+ threadId: "thread-123",
26
+ userMessage: "Analiza esto",
27
+ channel: "slack",
28
+ mcpManager: mcpClient,
29
+ isolated: false,
30
+ });
31
+
32
+ // Resultado
33
+ console.log(ctx.systemPrompt);
34
+ console.log(ctx.messages); // Historial compilado
35
+ ```
36
+
37
+ ### Estrategias
38
+
39
+ El Context Compiler implementa 4 estrategias de Context Engineering:
40
+
41
+ | Estrategia | Descripción |
42
+ |------------|-------------|
43
+ | **ESCRIBIR** | Guardar información fuera del contexto (Scratchpad, trazas) |
44
+ | **SELECCIONAR** | Traer solo lo relevante (FTS5 tool/skill/playbook selection) |
45
+ | **COMPRIMIR** | Reducir tokens (compaction, tool result clearing) |
46
+ | **AISLAR** | Separar contextos por agente (workers reciben contexto mínimo) |
47
+
48
+ ---
49
+
50
+ ## Message History
51
+
52
+ ### addMessage
53
+
54
+ ```typescript
55
+ import { addMessage } from "@johpaz/hive-sdk";
56
+
57
+ await addMessage(
58
+ threadId: string,
59
+ role: "user" | "assistant" | "system",
60
+ content: string | ContentPart[],
61
+ options?: {
62
+ channel?: string;
63
+ tool_calls?: ToolCall[];
64
+ }
65
+ );
66
+ ```
67
+
68
+ ### getRecentMessages
69
+
70
+ ```typescript
71
+ import { getRecentMessages } from "@johpaz/hive-sdk";
72
+
73
+ const messages = await getRecentMessages(threadId, {
74
+ maxTokens: 32000,
75
+ maxMessages: 50,
76
+ });
77
+ ```
78
+
79
+ ### maybeCompact
80
+
81
+ Reduce el historial cuando excede el límite de tokens.
82
+
83
+ ```typescript
84
+ import { maybeCompact } from "@johpaz/hive-sdk";
85
+
86
+ await maybeCompact(threadId, { channel: "slack", userId: "U123" });
87
+ ```
88
+
89
+ ### clearOldToolResults
90
+
91
+ ```typescript
92
+ import { clearOldToolResults } from "@johpaz/hive-sdk";
93
+
94
+ const clean = clearOldToolResults(messages);
95
+ ```
96
+
97
+ ### ConversationStore
98
+
99
+ ```typescript
100
+ import { getSummary, saveSummary, getScratchpad, saveScratchpadNote } from "@johpaz/hive-sdk";
101
+
102
+ // Resumen de conversación
103
+ const summary = getSummary(threadId);
104
+
105
+ // Notas del scratchpad
106
+ const notes = getScratchpad(threadId, "worker-1");
107
+ ```
108
+
109
+ ---
110
+
111
+ ## Scratchpad
112
+
113
+ Memoria temporal por hilo de conversación.
114
+
115
+ ```typescript
116
+ import { Scratchpad } from "@johpaz/hive-sdk";
117
+ import { getDb } from "@johpaz/hive-sdk";
118
+
119
+ const db = getDb();
120
+ const pad = new Scratchpad(db);
121
+
122
+ // Escribir nota
123
+ pad.write("thread-1", "mi-nota", "contenido");
124
+
125
+ // Leer nota
126
+ const value = pad.read("thread-1", "mi-nota");
127
+
128
+ // Listar notas de un hilo
129
+ const all = pad.list("thread-1");
130
+
131
+ // Eliminar nota
132
+ pad.delete("thread-1", "mi-nota");
133
+
134
+ // Limpiar todas las notas de un hilo
135
+ pad.clear("thread-1");
136
+ ```
137
+
138
+ ---
139
+
140
+ ## EthicsGuard
141
+
142
+ Guardián de reglas de calidad de respuesta desde la base de datos.
143
+
144
+ ```typescript
145
+ import { EthicsGuard } from "@johpaz/hive-sdk";
146
+ import { getDb } from "@johpaz/hive-sdk";
147
+
148
+ const db = getDb();
149
+ const guard = new EthicsGuard(db);
150
+
151
+ // Obtener reglas
152
+ const rules = guard.getRules(); // Todas
153
+ const rulesForRole = guard.getRules("agent"); // Con FTS5
154
+
155
+ // Inyectar en system prompt
156
+ const prompt = guard.injectIntoPrompt(
157
+ "Eres un asistente.",
158
+ rules
159
+ );
160
+
161
+ // Verificar si hay reglas
162
+ if (guard.hasEthicsLayer()) {
163
+ console.log("Reglas de calidad activas");
164
+ }
165
+ ```
166
+
167
+ ---
168
+
169
+ ## ACE (Tracer, Reflector, Curator)
170
+
171
+ Sistema de Auto-Corrección por Experiencia.
172
+
173
+ ### Tracer
174
+
175
+ ```typescript
176
+ import { saveTrace, recordLLMUsage } from "@hive/core/ace";
177
+
178
+ // Guardar traza de ejecución
179
+ saveTrace({
180
+ agentId: "analyst",
181
+ model: "gpt-4o-mini",
182
+ messages: 5,
183
+ toolCalls: ["web_search", "read_file"],
184
+ durationMs: 1200,
185
+ tokensUsed: 450,
186
+ success: true,
187
+ });
188
+
189
+ // Registrar uso de LLM
190
+ recordLLMUsage({
191
+ model: "gpt-4o-mini",
192
+ inputTokens: 200,
193
+ outputTokens: 250,
194
+ durationMs: 800,
195
+ });
196
+ ```
197
+
198
+ ### Reflector + Curator
199
+
200
+ ```typescript
201
+ import { runReflector, runCurator } from "@hive/core/ace";
202
+
203
+ // Analizar trazas y generar insights
204
+ await runReflector();
205
+
206
+ // Curar insights en reglas del playbook
207
+ await runCurator();
208
+ ```
209
+
210
+ ---
211
+
212
+ ## MCP Internals
213
+
214
+ ### Config
215
+
216
+ ```typescript
217
+ import type { MCPConfig, MCPServerConfig } from "@johpaz/hive-sdk";
218
+
219
+ const config: MCPConfig = {
220
+ servers: {
221
+ "my-server": {
222
+ transport: "stdio", // "stdio" | "sse" | "websocket"
223
+ command: "npx",
224
+ args: ["-y", "@server/pkg"],
225
+ env: { KEY: "value" },
226
+ enabled: true,
227
+ },
228
+ },
229
+ };
230
+ ```
231
+
232
+ ### Singleton
233
+
234
+ ```typescript
235
+ import { setMCPManager, getMCPManager, hasMCPManager } from "@johpaz/hive-sdk";
236
+
237
+ setMCPManager(mcpManager);
238
+ const mcp = getMCPManager(); // MCPClientManager | undefined
239
+ const exists = hasMCPManager(); // boolean
240
+ ```
241
+
242
+ ### Hot Reload
243
+
244
+ ```typescript
245
+ import { startMCPHotReload, stopMCPHotReload } from "@johpaz/hive-sdk";
246
+
247
+ // Watch de configuración MCP
248
+ startMCPHotReload();
249
+
250
+ // Detener watch
251
+ stopMCPHotReload();
252
+ ```
@@ -0,0 +1,273 @@
1
+ # API Reference — DAG Scheduler
2
+
3
+ ## Índice
4
+
5
+ 1. [Arquitectura](#arquitectura)
6
+ 2. [TaskNode](#tasknode)
7
+ 3. [TaskGraph](#taskgraph)
8
+ 4. [DAGScheduler](#dagscheduler)
9
+ 5. [Estrategias](#estrategias)
10
+ 6. [Presets](#presets)
11
+ 7. [EventBridge](#eventbridge)
12
+ 8. [Errores Comunes](#errores-comunes)
13
+
14
+ ---
15
+
16
+ ## Arquitectura
17
+
18
+ El DAG Scheduler orquesta la ejecución de grafos acíclicos dirigidos (DAG) de tareas.
19
+
20
+ ```
21
+ TaskNode → TaskGraph → DAGScheduler
22
+
23
+ ┌──────────────┼──────────────┐
24
+ ▼ ▼ ▼
25
+ Worker 1 Worker 2 Worker 3
26
+ (agente) (agente) (agente)
27
+ ```
28
+
29
+ ---
30
+
31
+ ## TaskNode
32
+
33
+ Representa una tarea individual en el grafo.
34
+
35
+ ### TaskNodeConfig
36
+
37
+ ```typescript
38
+ import { TaskNode } from "@johpaz/hive-sdk";
39
+
40
+ interface TaskNodeConfig {
41
+ id: string;
42
+ agentId: string;
43
+ name?: string;
44
+ taskDescription: string;
45
+ deps: string[];
46
+ priority?: number;
47
+ timeout?: number;
48
+ maxRetries?: number;
49
+ }
50
+ ```
51
+
52
+ ### Estados
53
+
54
+ ```typescript
55
+ type NodeStatus = "PENDING" | "READY" | "RUNNING" | "COMPLETED" | "FAILED";
56
+ ```
57
+
58
+ ### Ejemplo
59
+
60
+ ```typescript
61
+ const node = new TaskNode({
62
+ id: "fetch-data",
63
+ agentId: "fetcher",
64
+ taskDescription: "Obtener datos de API",
65
+ deps: [],
66
+ });
67
+ node.markRunning();
68
+ // ... ejecutar ...
69
+ node.markCompleted("datos obtenidos");
70
+ ```
71
+
72
+ ---
73
+
74
+ ## TaskGraph
75
+
76
+ Grafo acíclico dirigido de tareas.
77
+
78
+ ```typescript
79
+ import { TaskGraph } from "@johpaz/hive-sdk";
80
+
81
+ const graph = new TaskGraph([
82
+ { id: "a", agentId: "worker", taskDescription: "Tarea A", deps: [] },
83
+ { id: "b", agentId: "worker", taskDescription: "Tarea B", deps: ["a"] },
84
+ { id: "c", agentId: "worker", taskDescription: "Tarea C", deps: ["a"] },
85
+ { id: "d", agentId: "worker", taskDescription: "Tarea D", deps: ["b", "c"] },
86
+ ]);
87
+
88
+ // Nodos listos para ejecutar (sin deps pendientes)
89
+ const ready = graph.getReadyNodes();
90
+
91
+ // IDs de nodos completados
92
+ const completed = graph.getCompletedIds();
93
+
94
+ // Nodos recién listos tras completar uno
95
+ const newlyReady = graph.getNewlyReadyIds(new Set(["a"]));
96
+
97
+ // Resultados de dependencias
98
+ const depResults = graph.getDepResults("d");
99
+
100
+ // Progreso
101
+ const progress = graph.getProgress();
102
+ // { total: 4, completed: 1, running: 0, failed: 0, pending: 3, percentComplete: 25 }
103
+ ```
104
+
105
+ ---
106
+
107
+ ## DAGScheduler
108
+
109
+ Orquestador principal de la ejecución.
110
+
111
+ ```typescript
112
+ import { DAGScheduler, TaskGraph } from "@johpaz/hive-sdk";
113
+
114
+ const graph = new TaskGraph([
115
+ { id: "fetch", agentId: "fetcher", taskDescription: "Fetch data", deps: [] },
116
+ { id: "process", agentId: "processor", taskDescription: "Process", deps: ["fetch"] },
117
+ { id: "save", agentId: "saver", taskDescription: "Save", deps: ["process"] },
118
+ ]);
119
+
120
+ const scheduler = new DAGScheduler({
121
+ maxConcurrentWorkers: 2,
122
+ });
123
+
124
+ const result = await scheduler.execute(graph);
125
+
126
+ console.log(`Success: ${result.success}`);
127
+ console.log(`Duration: ${result.totalDurationMs}ms`);
128
+ ```
129
+
130
+ ### DAGResult
131
+
132
+ ```typescript
133
+ interface DAGResult {
134
+ swarmId: string;
135
+ totalDurationMs: number;
136
+ completed: NodeSummary[];
137
+ failed: NodeSummary[];
138
+ success: boolean;
139
+ }
140
+
141
+ interface NodeSummary {
142
+ id: string;
143
+ name: string;
144
+ status: "COMPLETED" | "FAILED";
145
+ durationMs: number;
146
+ result?: string;
147
+ error?: string;
148
+ retries: number;
149
+ }
150
+ ```
151
+
152
+ ### Control
153
+
154
+ ```typescript
155
+ scheduler.abort(); // Abortar ejecución en curso
156
+ ```
157
+
158
+ ---
159
+
160
+ ## Estrategias
161
+
162
+ ### ParallelStrategy (FIFO)
163
+
164
+ ```typescript
165
+ import { ParallelStrategy } from "@johpaz/hive-sdk";
166
+
167
+ const strategy = new ParallelStrategy(); // Orden de llegada
168
+ ```
169
+
170
+ ### PriorityStrategy
171
+
172
+ ```typescript
173
+ import { PriorityStrategy } from "@johpaz/hive-sdk";
174
+
175
+ const strategy = new PriorityStrategy(); // Por prioridad + path crítico
176
+ ```
177
+
178
+ ### Custom Strategy
179
+
180
+ ```typescript
181
+ import type { ExecutionStrategy } from "@johpaz/hive-sdk";
182
+
183
+ const myStrategy: ExecutionStrategy = {
184
+ initialize(nodes) { /* precomputar */ },
185
+ pick(nodes) { return nodes[0]; }, // FIFO
186
+ };
187
+ ```
188
+
189
+ ---
190
+
191
+ ## Presets
192
+
193
+ Grafos predefinidos.
194
+
195
+ ### ResearchPreset
196
+
197
+ ```typescript
198
+ import { createResearchGraph } from "@hive/core/swarm/presets";
199
+
200
+ const graph = createResearchGraph({
201
+ agents: { researcher: "researcher-id", writer: "writer-id" },
202
+ query: "Análisis de mercado",
203
+ });
204
+ ```
205
+
206
+ ### HiveLearnPreset
207
+
208
+ ```typescript
209
+ import { createHiveLearnGraph } from "@hive/core/swarm/presets";
210
+
211
+ const graph = createHiveLearnGraph({
212
+ agents: { teacher: "teacher-id", student: "student-id" },
213
+ topic: "Machine Learning",
214
+ });
215
+ ```
216
+
217
+ ---
218
+
219
+ ## EventBridge
220
+
221
+ Puente de eventos entre el scheduler y el resto del sistema.
222
+
223
+ ```typescript
224
+ import { EventBridge } from "@johpaz/hive-sdk";
225
+
226
+ const bridge = new EventBridge("swarm-123", "project-1", "coordinator-1");
227
+
228
+ bridge.onTaskCompleted = (node, progress) => {
229
+ console.log(`${node.name}: ${progress.percentComplete}%`);
230
+ };
231
+
232
+ bridge.onSwarmCompleted = (result) => {
233
+ console.log(`Swarm completed. Success: ${result.success}`);
234
+ };
235
+ ```
236
+
237
+ ---
238
+
239
+ ## IAgentExecutor
240
+
241
+ ```typescript
242
+ import type { IAgentExecutor } from "@johpaz/hive-sdk";
243
+
244
+ const myExecutor: IAgentExecutor = {
245
+ async execute(node, depResults, threadId) {
246
+ const context = Object.values(depResults).join("\n");
247
+ return await myCustomFunction(node.taskDescription, context);
248
+ },
249
+ };
250
+
251
+ const result = await scheduler.execute(graph, { executor: myExecutor });
252
+ ```
253
+
254
+ ---
255
+
256
+ ## Errores Comunes
257
+
258
+ ### Cyclic dependency detected
259
+
260
+ ```typescript
261
+ // ❌ Ciclo: a→b→a
262
+ [{ id: "a", deps: ["b"] }, { id: "b", deps: ["a"] }];
263
+
264
+ // ✅ Sin ciclo
265
+ [{ id: "a", deps: [] }, { id: "b", deps: ["a"] }];
266
+ ```
267
+
268
+ ### Task timeout
269
+
270
+ ```typescript
271
+ // Configurar timeout razonable
272
+ const config = { id: "task", agentId: "w", taskDescription: "...", deps: [], timeout: 30000 };
273
+ ```