@johpaz/hive-sdk 0.1.6 → 0.3.0

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 (238) hide show
  1. package/CHANGELOG.md +441 -0
  2. package/README.md +21 -3
  3. package/package.json +27 -5
  4. package/packages/core/src/agent/acceptance-checks.ts +9 -9
  5. package/packages/core/src/agent/agent-catalog.ts +82 -25
  6. package/packages/core/src/agent/agent-loop.ts +115 -26
  7. package/packages/core/src/agent/capability-search.ts +2 -2
  8. package/packages/core/src/agent/catalog-selector.ts +4 -4
  9. package/packages/core/src/agent/compaction.ts +30 -10
  10. package/packages/core/src/agent/context-compiler.ts +63 -36
  11. package/packages/core/src/agent/conversation-store.ts +167 -9
  12. package/packages/core/src/agent/curator.ts +16 -7
  13. package/packages/core/src/agent/delegation-runtime.ts +5 -5
  14. package/packages/core/src/agent/goal-runner.ts +9 -9
  15. package/packages/core/src/agent/index.ts +1 -0
  16. package/packages/core/src/agent/llm-client.ts +98 -37
  17. package/packages/core/src/agent/llm-providers/anthropic.ts +4 -4
  18. package/packages/core/src/agent/llm-providers/deepseek.ts +1 -1
  19. package/packages/core/src/agent/llm-providers/gemini.ts +4 -4
  20. package/packages/core/src/agent/llm-providers/groq.ts +1 -1
  21. package/packages/core/src/agent/llm-providers/hiveagents.ts +3 -3
  22. package/packages/core/src/agent/llm-providers/interface.ts +2 -2
  23. package/packages/core/src/agent/llm-providers/kimi.ts +1 -1
  24. package/packages/core/src/agent/llm-providers/minimax.ts +1 -1
  25. package/packages/core/src/agent/llm-providers/mistral.ts +1 -1
  26. package/packages/core/src/agent/llm-providers/modelscope.ts +1 -1
  27. package/packages/core/src/agent/llm-providers/nvidia.ts +40 -1
  28. package/packages/core/src/agent/llm-providers/ollama.ts +4 -4
  29. package/packages/core/src/agent/llm-providers/openai-compat-base.ts +47 -7
  30. package/packages/core/src/agent/llm-providers/openai.ts +1 -1
  31. package/packages/core/src/agent/llm-providers/opencode-go.ts +1 -1
  32. package/packages/core/src/agent/llm-providers/openrouter.ts +1 -1
  33. package/packages/core/src/agent/llm-providers/qwen.ts +1 -1
  34. package/packages/core/src/agent/llm-providers/z-ai.ts +1 -1
  35. package/packages/core/src/agent/mcp-result-normalizer.ts +192 -0
  36. package/packages/core/src/agent/playbook-selector.ts +22 -7
  37. package/packages/core/src/agent/prompt-builder.ts +5 -5
  38. package/packages/core/src/agent/proof-packet.ts +5 -5
  39. package/packages/core/src/agent/providers/index.ts +39 -4
  40. package/packages/core/src/agent/realtime-providers/gemini-live.ts +238 -0
  41. package/packages/core/src/agent/realtime-providers/index.ts +29 -0
  42. package/packages/core/src/agent/realtime-providers/interface.ts +108 -0
  43. package/packages/core/src/agent/reflector.ts +38 -15
  44. package/packages/core/src/agent/run-store.ts +8 -8
  45. package/packages/core/src/agent/service.ts +10 -10
  46. package/packages/core/src/agent/skill-selector.ts +6 -6
  47. package/packages/core/src/agent/thread-id.ts +71 -0
  48. package/packages/core/src/agent/thread-store.ts +293 -0
  49. package/packages/core/src/agent/tool-selector.ts +9 -5
  50. package/packages/core/src/agent/tracer.ts +5 -5
  51. package/packages/core/src/api/createAgent.ts +67 -2
  52. package/packages/core/src/artifacts/index.ts +15 -0
  53. package/packages/core/src/artifacts/store.ts +161 -5
  54. package/packages/core/src/canvas/emitter.ts +2 -2
  55. package/packages/core/src/canvas/index.ts +9 -0
  56. package/packages/core/src/channels/telegram.ts +1 -1
  57. package/packages/core/src/channels/webchat.ts +1 -1
  58. package/packages/core/src/config/loader.ts +14 -5
  59. package/packages/core/src/ethics/EthicsGuard.ts +7 -1
  60. package/packages/core/src/events/agent-bus.ts +3 -3
  61. package/packages/core/src/events/channel-narration.ts +3 -3
  62. package/packages/core/src/events/event-bus.ts +1 -1
  63. package/packages/core/src/events/index.ts +18 -0
  64. package/packages/core/src/events/narration.ts +3 -3
  65. package/packages/core/src/events/tool-narration.ts +4 -0
  66. package/packages/core/src/gateway/channel-notify.ts +103 -6
  67. package/packages/core/src/gateway/delegation-groups.ts +4 -4
  68. package/packages/core/src/gateway/durable-queue.ts +18 -6
  69. package/packages/core/src/gateway/index.ts +3 -0
  70. package/packages/core/src/gateway/job-store.ts +11 -5
  71. package/packages/core/src/gateway/notification-inbox.ts +2 -2
  72. package/packages/core/src/gateway/server.ts +2 -2
  73. package/packages/core/src/harness/executors.ts +493 -0
  74. package/packages/core/src/harness/index.ts +12 -2
  75. package/packages/core/src/hooks/index.ts +203 -0
  76. package/packages/core/src/images/index.ts +161 -0
  77. package/packages/core/src/index.ts +1 -0
  78. package/packages/core/src/mcp/MCPClient.ts +3 -3
  79. package/packages/core/src/mcp/hot-reload.ts +5 -5
  80. package/packages/core/src/mcp/tool-sync.ts +5 -5
  81. package/packages/core/src/mcp/transports/index.ts +2 -2
  82. package/packages/core/src/mcp/transports/sse.ts +1 -1
  83. package/packages/core/src/models/index.ts +36 -0
  84. package/packages/core/src/multimodal/index.ts +2 -2
  85. package/packages/core/src/multimodal/vision-service.ts +51 -19
  86. package/packages/core/src/plugins/loader.ts +4 -1
  87. package/packages/core/src/resilience/circuit-breaker.ts +16 -5
  88. package/packages/core/src/resilience/index.ts +13 -0
  89. package/packages/core/src/resilience/retry.ts +1 -1
  90. package/packages/core/src/scheduler/CronScheduler.ts +54 -27
  91. package/packages/core/src/scheduler/cron/expression.ts +165 -0
  92. package/packages/core/src/scheduler/cron/index.ts +10 -0
  93. package/packages/core/src/scheduler/cron/job.ts +339 -0
  94. package/packages/core/src/scheduler/cron/next-run.ts +121 -0
  95. package/packages/core/src/scheduler/cron/zoned-time.ts +138 -0
  96. package/packages/core/src/scheduler/index.ts +21 -3
  97. package/packages/core/src/scheduler/integration.ts +25 -14
  98. package/packages/core/src/scheduler/types.ts +3 -18
  99. package/packages/core/src/services/agents.ts +268 -0
  100. package/packages/core/src/services/cron.ts +257 -0
  101. package/packages/core/src/services/endpoints.ts +289 -0
  102. package/packages/core/src/services/ethics.ts +107 -0
  103. package/packages/core/src/services/images.ts +212 -0
  104. package/packages/core/src/services/index.ts +112 -0
  105. package/packages/core/src/services/mcp.ts +201 -0
  106. package/packages/core/src/services/memory.ts +133 -0
  107. package/packages/core/src/services/models.ts +179 -0
  108. package/packages/core/src/services/providers.ts +152 -0
  109. package/packages/core/src/services/setup.ts +222 -0
  110. package/packages/core/src/services/skills.ts +241 -0
  111. package/packages/core/src/services/swarms.ts +307 -0
  112. package/packages/core/src/services/tools.ts +106 -0
  113. package/packages/core/src/sessions/index.ts +268 -0
  114. package/packages/core/src/sessions/resolve.ts +108 -0
  115. package/packages/core/src/skills/SkillLoader.ts +8 -1
  116. package/packages/core/src/skills/bundled/artifacts/artifact_reader/SKILL.md +105 -0
  117. package/packages/core/src/skills/bundled/cron_manager/SKILL.md +21 -11
  118. package/packages/core/src/skills/bundled/images/image_editor/SKILL.md +120 -0
  119. package/packages/core/src/skills/bundled/web/browser_automate/SKILL.md +12 -3
  120. package/packages/core/src/skills/bundled/web/browser_scrape/SKILL.md +22 -7
  121. package/packages/core/src/skills/bundled-data.generated.ts +110 -12
  122. package/packages/core/src/storage/bootstrap.ts +107 -12
  123. package/packages/core/src/storage/causal-events.ts +1 -1
  124. package/packages/core/src/storage/collections.ts +138 -2
  125. package/packages/core/src/storage/crypto.ts +35 -4
  126. package/packages/core/src/storage/hive.ts +1 -1
  127. package/packages/core/src/storage/hivedb.ts +10 -1
  128. package/packages/core/src/storage/index.ts +2 -1
  129. package/packages/core/src/storage/onboarding.ts +61 -45
  130. package/packages/core/src/storage/reconcile.ts +11 -6
  131. package/packages/core/src/storage/seed.ts +191 -23
  132. package/packages/core/src/storage/usage.ts +3 -3
  133. package/packages/core/src/swarm/AgentExecutor.ts +2 -2
  134. package/packages/core/src/swarm/Coordinator.ts +8 -8
  135. package/packages/core/src/swarm/EventBridge.ts +2 -2
  136. package/packages/core/src/swarm/RoleSwarm.ts +234 -0
  137. package/packages/core/src/swarm/TaskGraph.ts +2 -2
  138. package/packages/core/src/swarm/index.ts +7 -0
  139. package/packages/core/src/swarm/presets/HiveLearnPreset.ts +2 -2
  140. package/packages/core/src/swarm/presets/ResearchPreset.ts +2 -2
  141. package/packages/core/src/swarm/strategies/ParallelStrategy.ts +1 -1
  142. package/packages/core/src/swarm/strategies/PriorityStrategy.ts +3 -3
  143. package/packages/core/src/swarm/types.ts +3 -18
  144. package/packages/core/src/tool-runtime/embedded-worker.generated.ts +21 -0
  145. package/packages/core/src/tool-runtime/index.ts +129 -14
  146. package/packages/core/src/tools/ToolExecutor.ts +7 -3
  147. package/packages/core/src/tools/agents/index.ts +18 -60
  148. package/packages/core/src/tools/cli/index.ts +55 -0
  149. package/packages/core/src/tools/core/index.ts +52 -4
  150. package/packages/core/src/tools/cron/index.ts +8 -8
  151. package/packages/core/src/tools/images/index.ts +130 -0
  152. package/packages/core/src/tools/index.ts +14 -1
  153. package/packages/core/src/tools/office/office-escribir-xlsx.ts +2 -1
  154. package/packages/core/src/tools/office/office-leer-xlsx.ts +2 -1
  155. package/packages/core/src/tools/office/xlsx-loader.ts +19 -0
  156. package/packages/core/src/tools/web/artifact-inspect.ts +2 -2
  157. package/packages/core/src/tools/web/artifact-read.ts +162 -0
  158. package/packages/core/src/tools/web/browser-backend.ts +141 -44
  159. package/packages/core/src/tools/web/browser-click.ts +2 -2
  160. package/packages/core/src/tools/web/browser-extract.ts +2 -2
  161. package/packages/core/src/tools/web/browser-navigate.ts +2 -2
  162. package/packages/core/src/tools/web/browser-screenshot.ts +12 -5
  163. package/packages/core/src/tools/web/browser-script.ts +2 -2
  164. package/packages/core/src/tools/web/browser-service.ts +63 -384
  165. package/packages/core/src/tools/web/browser-session.ts +125 -0
  166. package/packages/core/src/tools/web/browser-type.ts +2 -2
  167. package/packages/core/src/tools/web/browser-wait.ts +2 -2
  168. package/packages/core/src/tools/web/computer-use.ts +553 -0
  169. package/packages/core/src/tools/web/index.ts +8 -1
  170. package/packages/core/src/tools/web/webview-backend.ts +460 -21
  171. package/packages/core/src/utils/index.ts +1 -0
  172. package/packages/core/src/utils/logger.ts +12 -4
  173. package/packages/core/src/utils/redact-binary.ts +17 -0
  174. package/packages/core/src/utils/toon.ts +1 -1
  175. package/packages/core/src/voice/index.ts +6 -6
  176. package/bun.lock +0 -859
  177. package/bunfig.toml +0 -9
  178. package/docs/API-AGENTS.md +0 -367
  179. package/docs/API-CONTEXT-COMPILER.md +0 -249
  180. package/docs/API-DAG-SCHEDULER.md +0 -273
  181. package/docs/API-TOOLS-SKILLS-CHANNELS.md +0 -446
  182. package/docs/API-WORKERS-EVENTS.md +0 -299
  183. package/docs/HIVE-HARNESS.md +0 -113
  184. package/docs/INDEX.md +0 -190
  185. package/docs/TEMPLATE-HIVE-APP.md +0 -360
  186. package/packages/cli/package.json +0 -17
  187. package/packages/cli/src/commands/create-app.test.ts +0 -180
  188. package/packages/core/package.json +0 -70
  189. package/packages/core/src/api/createAgent.test.ts +0 -160
  190. package/packages/core/src/canvas/canvas.test.ts +0 -36
  191. package/packages/core/src/channels/channels.test.ts +0 -18
  192. package/packages/core/src/ethics/EthicsGuard.test.ts +0 -108
  193. package/packages/core/src/gateway/gateway.test.ts +0 -38
  194. package/packages/core/src/memory/Scratchpad.test.ts +0 -68
  195. package/packages/core/src/scheduler/scheduler.test.ts +0 -15
  196. package/packages/core/src/skills/skills.test.ts +0 -62
  197. package/packages/core/src/swarm/swarm.test.ts +0 -24
  198. package/packages/core/src/tool-runtime/tool-runtime.test.ts +0 -99
  199. package/packages/core/src/tools/ToolRegistry.test.ts +0 -98
  200. package/packages/core/src/tools/api/api-request.test.ts +0 -164
  201. package/packages/core/src/tools/web/browser-service.test.ts +0 -83
  202. package/packages/core/src/workers/workers.test.ts +0 -41
  203. package/scripts/bump-version.ts +0 -248
  204. package/scripts/generate-skill-bundle.ts +0 -108
  205. package/test/acceptance-checks.test.ts +0 -403
  206. package/test/agent-loop-terminal-synthesis.test.ts +0 -32
  207. package/test/browser-backend.test.ts +0 -308
  208. package/test/catalog-agents-stay-enabled.test.ts +0 -117
  209. package/test/causal-events.test.ts +0 -117
  210. package/test/compaction.test.ts +0 -105
  211. package/test/context-compiler.test.ts +0 -269
  212. package/test/curator.test.ts +0 -130
  213. package/test/durable-queue.test.ts +0 -114
  214. package/test/harness-barrel.test.ts +0 -64
  215. package/test/hive-helpers.test.ts +0 -130
  216. package/test/hivedb-search.test.ts +0 -189
  217. package/test/internal-turns.test.ts +0 -166
  218. package/test/job-idempotency.test.ts +0 -68
  219. package/test/job-retry-backoff.test.ts +0 -184
  220. package/test/job-store.test.ts +0 -381
  221. package/test/llm-retry.test.ts +0 -97
  222. package/test/memory-perf.test.ts +0 -774
  223. package/test/minimal-loadout.test.ts +0 -78
  224. package/test/model-catalog.test.ts +0 -105
  225. package/test/preload.ts +0 -12
  226. package/test/reflector.test.ts +0 -320
  227. package/test/retention-cap.test.ts +0 -91
  228. package/test/retired-capabilities-pruned.test.ts +0 -192
  229. package/test/run-store.test.ts +0 -355
  230. package/test/scratchpad.test.ts +0 -74
  231. package/test/secrets-durability.test.ts +0 -119
  232. package/test/seed-model-reseed.test.ts +0 -155
  233. package/test/setup-agent-seed.test.ts +0 -264
  234. package/test/tool-inventory.test.ts +0 -65
  235. package/test/tool-runtime.test.ts +0 -258
  236. package/test/tool-selector-runtime-tools.test.ts +0 -117
  237. package/test/toon.test.ts +0 -429
  238. package/tsconfig.json +0 -42
package/bunfig.toml DELETED
@@ -1,9 +0,0 @@
1
- [test]
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"]
5
- timeout = 30000
6
- randomize = false
7
-
8
- [install]
9
- registry = "https://registry.npmjs.org/"
@@ -1,367 +0,0 @@
1
- # API Reference — Agentes
2
-
3
- ## Índice
4
-
5
- 1. [createAgent](#createagent)
6
- 2. [AgentLoop](#agentloop)
7
- 3. [Tool Selector](#tool-selector)
8
- 4. [Skill Selector](#skill-selector)
9
- 5. [LLM Providers](#llm-providers)
10
-
11
- ---
12
-
13
- ## createAgent
14
-
15
- Función de alto nivel para crear y ejecutar agentes.
16
-
17
- ### Firma
18
-
19
- ```typescript
20
- import { createAgent } from "@johpaz/hive-sdk";
21
-
22
- const agent = await createAgent(config: AgentConfig): Promise<Agent>
23
- ```
24
-
25
- ### AgentConfig
26
-
27
- ```typescript
28
- interface AgentConfig {
29
- name: string;
30
- model?: string; // id tal como lo nombra su dueño, ej. "claude-opus-5"
31
- provider?: Provider; // cualquiera de los 16 del catálogo
32
- systemPrompt?: string;
33
- tools?: ToolDefinition[]; // Tools custom
34
- skills?: SkillDefinition[]; // Skills custom
35
- mcpServers?: Record<string, { // Servidores MCP
36
- command?: string; // STDIO transport
37
- url?: string; // SSE transport
38
- args?: string[];
39
- env?: Record<string, string>;
40
- }>;
41
- maxIterations?: number;
42
- workspace?: string;
43
- }
44
- ```
45
-
46
- La config **se persiste en la fila del agente**, que es de donde el loop resuelve
47
- provider y modelo en cada turno. Consecuencias que conviene tener presentes:
48
-
49
- - `model` exige `provider`: el mismo modelo lo sirven varios providers y la clave
50
- del catálogo depende de cuál. Sin provider, `createAgent` lanza.
51
- - El modelo tiene que existir en `SEED_DATA.models`, o lanza con el nombre del
52
- provider al que no pertenece.
53
- - `name` deriva el id del agente (`"Mi Agente"` → `mi_agente`), así que dos
54
- `createAgent` con el mismo nombre comparten fila e historial.
55
- - Las tools pasadas acá quedan registradas **y** indexadas, así que el modelo
56
- puede descubrirlas con `search_knowledge` como a las nativas.
57
-
58
- > Hasta 0.1.5 `provider`, `model`, `maxIterations`, `skills` y `workspace` se
59
- > aceptaban y se descartaban: el agente corría con lo que hubiera en la base.
60
-
61
- ### Agent
62
-
63
- ```typescript
64
- interface Agent {
65
- readonly name: string;
66
- readonly config: AgentConfig;
67
-
68
- // Streaming chat
69
- chat(message: string, opts?: {
70
- threadId?: string;
71
- channel?: string;
72
- }): AsyncGenerator<AgentEvent>;
73
-
74
- // Run to completion (devuelve string final)
75
- run(task: string, opts?: {
76
- threadId?: string;
77
- channel?: string;
78
- }): Promise<string>;
79
- }
80
- ```
81
-
82
- ### AgentEvent
83
-
84
- ```typescript
85
- type AgentEvent =
86
- | { type: "text"; content: string }
87
- | { type: "tool_call"; name: string; args: Record<string, unknown> }
88
- | { type: "tool_result"; name: string; result: unknown }
89
- | { type: "done"; response: string };
90
- ```
91
-
92
- ### Ejemplo
93
-
94
- ```typescript
95
- import { createAgent, defineTool } from "@johpaz/hive-sdk";
96
-
97
- const agent = await createAgent({
98
- name: "asistente",
99
- provider: "openai",
100
- model: "gpt-5.6-luna",
101
- systemPrompt: "Eres un asistente útil.",
102
- });
103
-
104
- // Streaming
105
- for await (const event of agent.chat("Hola!")) {
106
- if (event.type === "text") process.stdout.write(event.content);
107
- }
108
-
109
- // Run to completion
110
- const respuesta = await agent.run("Analiza las ventas del mes");
111
- ```
112
-
113
- ---
114
-
115
- ## defineTool
116
-
117
- Define una herramienta que el agente puede invocar.
118
-
119
- ```typescript
120
- import { defineTool } from "@johpaz/hive-sdk";
121
-
122
- const tool = defineTool({
123
- name: "saludar",
124
- description: "Saluda a alguien por su nombre",
125
- execute: async (args: { nombre: string }) => {
126
- return { mensaje: `¡Hola ${args.nombre}!` };
127
- },
128
- });
129
- ```
130
-
131
- ### ToolDefinition
132
-
133
- ```typescript
134
- interface ToolDefinition {
135
- name: string;
136
- description: string;
137
- schema?: z.ZodType; // Validación Zod opcional
138
- execute: (args: any, config?: any) => Promise<any>;
139
- category?: string;
140
- }
141
- ```
142
-
143
- ---
144
-
145
- ## defineSkill
146
-
147
- Define una composición de herramientas con triggers semánticos.
148
-
149
- ```typescript
150
- import { defineSkill } from "@johpaz/hive-sdk";
151
-
152
- const skill = defineSkill({
153
- name: "analisis-datos",
154
- description: "Analiza datos y genera reportes",
155
- steps: [
156
- { action: "web_search", instruction: "Buscar datos relevantes" },
157
- { action: "create_report", instruction: "Generar reporte" },
158
- ],
159
- tools: ["web_search", "create_report"],
160
- triggers: ["analizar", "reporte", "datos"],
161
- });
162
- ```
163
-
164
- ---
165
-
166
- ## AgentLoop
167
-
168
- Clase de bajo nivel para control directo del bucle del agente.
169
-
170
- ```typescript
171
- import { AgentLoop, buildAgentLoop } from "@johpaz/hive-sdk";
172
-
173
- const loop = buildAgentLoop({ mcpManager });
174
-
175
- const stream = loop.stream(
176
- { messages: [{ role: "user", content: "Hola" }] },
177
- { configurable: { thread_id: "thread-1" } }
178
- );
179
-
180
- for await (const chunk of stream) {
181
- if (chunk.agent?.messages) {
182
- console.log(chunk.agent.messages[0].content);
183
- }
184
- if (chunk.tools?.messages) {
185
- console.log("Tool result:", chunk.tools.messages);
186
- }
187
- }
188
- ```
189
-
190
- ### StreamChunk
191
-
192
- ```typescript
193
- interface StreamChunk {
194
- agent?: { messages: any[] };
195
- tools?: { messages: any[] };
196
- usage?: { input_tokens: number; output_tokens: number };
197
- }
198
- ```
199
-
200
- ### runAgent (bajo nivel)
201
-
202
- ```typescript
203
- import { runAgent, runAgentIsolated } from "@johpaz/hive-sdk";
204
-
205
- // Streaming
206
- for await (const chunk of runAgent({
207
- agentId: "assistant",
208
- userMessage: "Analiza las ventas",
209
- threadId: "thread-123",
210
- })) {
211
- // procesar chunk
212
- }
213
-
214
- // Modo aislado (para workers DAG)
215
- const result = await runAgentIsolated({
216
- agentId: "processor",
217
- taskDescription: "Procesa estos datos",
218
- threadId: "dag-thread",
219
- });
220
- ```
221
-
222
- ---
223
-
224
- ## Tool Selector
225
-
226
- Selección automática de tools por búsqueda BM25 sobre el índice de capacidad.
227
-
228
- ```typescript
229
- import { selectTools, CORE_TOOL_CATALOG } from "@johpaz/hive-sdk";
230
-
231
- // Seleccionar tools relevantes
232
- const tools = selectTools("Buscar archivos en el proyecto");
233
- console.log(tools.map(t => t.name));
234
-
235
- // Con límite personalizado
236
- const limited = selectTools("search query", CORE_TOOL_CATALOG, 3);
237
- ```
238
-
239
- ### Constantes
240
-
241
- ```typescript
242
- const MIN_RELEVANCE_THRESHOLD = -30;
243
- ```
244
-
245
- ### CORE_TOOL_CATALOG
246
-
247
- 58 tools built-in organizadas por categoría:
248
-
249
- | Categoría | # | Descripción |
250
- |-----------|---|-------------|
251
- | agents | 15 | delegación (`task_delegate`, `task_revise`), memoria, catálogo de modelos |
252
- | web | 10 | `web_search`, `web_fetch`, automatización de browser, `artifact_inspect` |
253
- | cron | 8 | scheduling con Croner |
254
- | office | 8 | PDF, DOCX, XLSX, PPTX |
255
- | filesystem | 7 | read, write, edit, delete, list, glob, exists |
256
- | a2ui | 4 | superficies de UI generadas por el agente |
257
- | core | 4 | `save_note`, `notify`, `report_progress`, `search_knowledge` |
258
- | cli | 1 | ejecución de comandos |
259
- | api | 1 | `api_request` |
260
-
261
- Las categorías `projects`, `canvas`, `codebridge`, `voice` y `meeting`
262
- desaparecieron en 0.1.5 junto con sus tools.
263
-
264
- ---
265
-
266
- ## Skill Selector
267
-
268
- ```typescript
269
- import { selectSkills, getMinimalSkills } from "@johpaz/hive-sdk";
270
-
271
- // Skills según mensaje
272
- const skills = selectSkills("Analyze the sales data");
273
-
274
- // Skills mínimos siempre disponibles
275
- const minimal = getMinimalSkills();
276
- ```
277
-
278
- ---
279
-
280
- ## LLM Providers
281
-
282
- ### Providers Soportados
283
-
284
- 16 providers, todos sembrados con su catálogo de modelos y su precio por millón
285
- de tokens. `provider` en `createAgent` acepta cualquiera de estos ids.
286
-
287
- | Provider | Adapter | Notas |
288
- |----------|---------|-------|
289
- | `anthropic` | nativo | extended thinking, round-trip de thinking blocks |
290
- | `gemini` | nativo | REST v1beta |
291
- | `ollama` | nativo | modelos locales, flag `think` |
292
- | `openai` | OpenAI-compat | Sol / Terra / Luna |
293
- | `deepseek`, `kimi` | OpenAI-compat | round-trip de `reasoning_content` |
294
- | `mistral`, `groq`, `qwen`, `minimax` | OpenAI-compat | |
295
- | `z-ai` | OpenAI-compat | sirve en `/api/paas/v4`, no en `/v1` |
296
- | `hiveagents` | OpenAI-compat | |
297
- | `nvidia`, `openrouter`, `opencode-go`, `modelscope` | OpenAI-compat | **revendedores** |
298
-
299
- Los cuatro revendedores prefijan sus ids de modelo con su propio id de provider
300
- (`modelscope/Qwen/Qwen3.5-397B-A17B`), porque sirven modelos de terceros que se
301
- solapan entre sí y la colección `models` se indexa por una sola clave. El
302
- prefijo no llega al cable: el adapter lo quita antes del request.
303
-
304
- ```typescript
305
- import { catalogModelKey, wireModelId } from "@johpaz/hive-sdk";
306
-
307
- catalogModelKey("modelscope", "Qwen/Qwen3.5-397B-A17B"); // modelscope/Qwen/Qwen3.5-397B-A17B
308
- wireModelId("modelscope", "modelscope/Qwen/Qwen3.5-397B-A17B"); // Qwen/Qwen3.5-397B-A17B
309
- ```
310
-
311
- ### Errores del provider
312
-
313
- `callLLM` nunca lanza: devuelve `stop_reason: "error"` con un campo `error`
314
- tipado. Chequealo antes de persistir `content` en cualquier lado — es texto para
315
- mostrar, no salida del modelo.
316
-
317
- ```typescript
318
- const response = await callLLM({ ... });
319
-
320
- if (response.stop_reason === "error") {
321
- console.error(response.error?.message);
322
- // HTTP 404/410 → el proveedor retiró el modelo; reintentar no sirve.
323
- if (response.error?.modelUnavailable) selectAnotherModel();
324
- }
325
- ```
326
-
327
- ### callLLM
328
-
329
- ```typescript
330
- import { callLLM, resolveProviderConfig } from "@johpaz/hive-sdk";
331
-
332
- const config = await resolveProviderConfig("openai", "gpt-5.6-luna");
333
-
334
- const response = await callLLM({
335
- provider: config.provider,
336
- model: config.model,
337
- messages: [{ role: "user", content: "Hola" }],
338
- });
339
- ```
340
-
341
- ---
342
-
343
- ## Errores Comunes
344
-
345
- ### createAgent: no se encuentra el agente
346
-
347
- ```typescript
348
- // El agente no necesita existir en DB — createAgent lo gestiona internamente
349
- // Si falla, verificar API keys en variables de entorno
350
- ```
351
-
352
- ### Tool no encontrada
353
-
354
- ```typescript
355
- // Verificar que la tool está registrada
356
- const reg = new ToolRegistry();
357
- reg.register(myTool);
358
- reg.has("my_tool"); // true
359
- ```
360
-
361
- ### Context too large
362
-
363
- ```typescript
364
- // Usar maybeCompact para reducir historial
365
- const { maybeCompact } = await import("../agent/Compaction.ts");
366
- await maybeCompact(threadId, { channel, userId });
367
- ```
@@ -1,249 +0,0 @@
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 (selección BM25 de tool/skill/playbook) |
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
-
118
- const pad = new Scratchpad();
119
-
120
- await pad.write("thread-1", "mi-nota", "contenido");
121
- const value = await pad.read("thread-1", "mi-nota");
122
- const all = await pad.list("thread-1"); // { "mi-nota": "contenido" }
123
- await pad.delete("thread-1", "mi-nota");
124
- await pad.clear("thread-1");
125
- ```
126
-
127
- El scratchpad se inyecta al system prompt en cada turno bajo
128
- `# SCRATCHPAD (Persistent Notes)`, comprimido con TOON. La clase es una fachada
129
- sobre las funciones de `conversation-store`: hasta 0.1.5 tenía implementación
130
- propia y, como usaba el mismo id, escribía las mismas filas con un documento
131
- incompleto que rompía el orden por recencia.
132
-
133
- ---
134
-
135
- ## EthicsGuard
136
-
137
- Capa opcional de reglas de calidad de respuesta, leídas de la colección
138
- `playbook` (`category: "response_quality"`).
139
-
140
- ```typescript
141
- import { EthicsGuard } from "@johpaz/hive-sdk";
142
-
143
- const guard = new EthicsGuard();
144
-
145
- const rules = await guard.getRules(); // todas las activas
146
- const rulesForRole = await guard.getRules("coordinator"); // filtra por applicable_to
147
-
148
- const prompt = guard.injectIntoPrompt("Eres un asistente.", rules);
149
-
150
- if (await guard.hasEthicsLayer()) {
151
- console.log("Reglas de calidad activas");
152
- }
153
- ```
154
-
155
- > El constructor ya no recibe un handle de base y todos los métodos son async:
156
- > hasta 0.1.5 la clase armaba SQL a mano contra la tabla `playbook` y hacía un
157
- > JOIN con la tabla virtual `playbook_fts`. Ninguna de las dos existe.
158
-
159
- **Esto no es la ética constitucional del agente.** Esa vive en la colección
160
- `ethics` y la ensambla `buildSystemPrompt()` como primera sección, completa y sin
161
- comprimir. `EthicsGuard` es un complemento para hosts que quieran inyectar,
162
- además, reglas aprendidas por ACE.
163
-
164
- ---
165
-
166
- ## ACE (Tracer, Reflector, Curator)
167
-
168
- Sistema de Auto-Corrección por Experiencia.
169
-
170
- ### Tracer
171
-
172
- ```typescript
173
- import { saveTrace, recordLLMUsage } from "@hive/core/ace";
174
-
175
- // Guardar traza de ejecución
176
- saveTrace({
177
- agentId: "analyst",
178
- model: "gpt-5.6-luna",
179
- messages: 5,
180
- toolCalls: ["web_search", "read_file"],
181
- durationMs: 1200,
182
- tokensUsed: 450,
183
- success: true,
184
- });
185
-
186
- // Registrar uso de LLM
187
- recordLLMUsage({
188
- model: "gpt-5.6-luna",
189
- inputTokens: 200,
190
- outputTokens: 250,
191
- durationMs: 800,
192
- });
193
- ```
194
-
195
- ### Reflector + Curator
196
-
197
- ```typescript
198
- import { runReflector, runCurator } from "@hive/core/ace";
199
-
200
- // Analizar trazas y generar insights
201
- await runReflector();
202
-
203
- // Curar insights en reglas del playbook
204
- await runCurator();
205
- ```
206
-
207
- ---
208
-
209
- ## MCP Internals
210
-
211
- ### Config
212
-
213
- ```typescript
214
- import type { MCPConfig, MCPServerConfig } from "@johpaz/hive-sdk";
215
-
216
- const config: MCPConfig = {
217
- servers: {
218
- "my-server": {
219
- transport: "stdio", // "stdio" | "sse" | "websocket"
220
- command: "npx",
221
- args: ["-y", "@server/pkg"],
222
- env: { KEY: "value" },
223
- enabled: true,
224
- },
225
- },
226
- };
227
- ```
228
-
229
- ### Singleton
230
-
231
- ```typescript
232
- import { setMCPManager, getMCPManager, hasMCPManager } from "@johpaz/hive-sdk";
233
-
234
- setMCPManager(mcpManager);
235
- const mcp = getMCPManager(); // MCPClientManager | undefined
236
- const exists = hasMCPManager(); // boolean
237
- ```
238
-
239
- ### Hot Reload
240
-
241
- ```typescript
242
- import { startMCPHotReload, stopMCPHotReload } from "@johpaz/hive-sdk";
243
-
244
- // Watch de configuración MCP
245
- startMCPHotReload();
246
-
247
- // Detener watch
248
- stopMCPHotReload();
249
- ```