@johpaz/hive-sdk 0.1.6 → 0.2.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 (185) hide show
  1. package/CHANGELOG.md +135 -0
  2. package/README.md +11 -1
  3. package/package.json +18 -2
  4. package/packages/core/src/agent/acceptance-checks.ts +9 -9
  5. package/packages/core/src/agent/agent-catalog.ts +3 -3
  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 +10 -9
  10. package/packages/core/src/agent/context-compiler.ts +58 -34
  11. package/packages/core/src/agent/conversation-store.ts +31 -7
  12. package/packages/core/src/agent/curator.ts +4 -4
  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 +1 -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 +9 -5
  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 +4 -4
  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 +4 -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 +6 -6
  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 +250 -0
  49. package/packages/core/src/agent/tool-selector.ts +7 -5
  50. package/packages/core/src/agent/tracer.ts +5 -5
  51. package/packages/core/src/api/createAgent.ts +1 -1
  52. package/packages/core/src/artifacts/store.ts +84 -3
  53. package/packages/core/src/canvas/emitter.ts +2 -2
  54. package/packages/core/src/channels/telegram.ts +1 -1
  55. package/packages/core/src/channels/webchat.ts +1 -1
  56. package/packages/core/src/config/loader.ts +14 -5
  57. package/packages/core/src/events/agent-bus.ts +3 -3
  58. package/packages/core/src/events/channel-narration.ts +3 -3
  59. package/packages/core/src/events/event-bus.ts +1 -1
  60. package/packages/core/src/events/narration.ts +3 -3
  61. package/packages/core/src/gateway/delegation-groups.ts +4 -4
  62. package/packages/core/src/gateway/durable-queue.ts +5 -5
  63. package/packages/core/src/gateway/job-store.ts +5 -5
  64. package/packages/core/src/gateway/notification-inbox.ts +2 -2
  65. package/packages/core/src/gateway/server.ts +2 -2
  66. package/packages/core/src/mcp/MCPClient.ts +3 -3
  67. package/packages/core/src/mcp/hot-reload.ts +5 -5
  68. package/packages/core/src/mcp/tool-sync.ts +5 -5
  69. package/packages/core/src/mcp/transports/index.ts +2 -2
  70. package/packages/core/src/mcp/transports/sse.ts +1 -1
  71. package/packages/core/src/models/index.ts +36 -0
  72. package/packages/core/src/multimodal/index.ts +2 -2
  73. package/packages/core/src/multimodal/vision-service.ts +6 -6
  74. package/packages/core/src/plugins/loader.ts +4 -1
  75. package/packages/core/src/resilience/circuit-breaker.ts +16 -5
  76. package/packages/core/src/resilience/retry.ts +1 -1
  77. package/packages/core/src/scheduler/CronScheduler.ts +6 -6
  78. package/packages/core/src/scheduler/integration.ts +9 -9
  79. package/packages/core/src/sessions/index.ts +266 -0
  80. package/packages/core/src/storage/bootstrap.ts +34 -8
  81. package/packages/core/src/storage/causal-events.ts +1 -1
  82. package/packages/core/src/storage/collections.ts +32 -1
  83. package/packages/core/src/storage/crypto.ts +16 -2
  84. package/packages/core/src/storage/hive.ts +1 -1
  85. package/packages/core/src/storage/hivedb.ts +10 -1
  86. package/packages/core/src/storage/onboarding.ts +6 -6
  87. package/packages/core/src/storage/reconcile.ts +5 -5
  88. package/packages/core/src/storage/seed.ts +103 -13
  89. package/packages/core/src/storage/usage.ts +3 -3
  90. package/packages/core/src/swarm/AgentExecutor.ts +2 -2
  91. package/packages/core/src/swarm/Coordinator.ts +8 -8
  92. package/packages/core/src/swarm/EventBridge.ts +2 -2
  93. package/packages/core/src/swarm/RoleSwarm.ts +234 -0
  94. package/packages/core/src/swarm/TaskGraph.ts +2 -2
  95. package/packages/core/src/swarm/index.ts +7 -0
  96. package/packages/core/src/swarm/presets/HiveLearnPreset.ts +2 -2
  97. package/packages/core/src/swarm/presets/ResearchPreset.ts +2 -2
  98. package/packages/core/src/swarm/strategies/ParallelStrategy.ts +1 -1
  99. package/packages/core/src/swarm/strategies/PriorityStrategy.ts +3 -3
  100. package/packages/core/src/tools/ToolExecutor.ts +7 -3
  101. package/packages/core/src/tools/core/index.ts +2 -2
  102. package/packages/core/src/tools/cron/index.ts +4 -4
  103. package/packages/core/src/tools/web/artifact-inspect.ts +2 -2
  104. package/packages/core/src/tools/web/artifact-read.ts +162 -0
  105. package/packages/core/src/tools/web/browser-backend.ts +141 -44
  106. package/packages/core/src/tools/web/browser-click.ts +2 -2
  107. package/packages/core/src/tools/web/browser-extract.ts +2 -2
  108. package/packages/core/src/tools/web/browser-navigate.ts +2 -2
  109. package/packages/core/src/tools/web/browser-screenshot.ts +12 -5
  110. package/packages/core/src/tools/web/browser-script.ts +2 -2
  111. package/packages/core/src/tools/web/browser-service.ts +63 -384
  112. package/packages/core/src/tools/web/browser-session.ts +125 -0
  113. package/packages/core/src/tools/web/browser-type.ts +2 -2
  114. package/packages/core/src/tools/web/browser-wait.ts +2 -2
  115. package/packages/core/src/tools/web/computer-use.ts +553 -0
  116. package/packages/core/src/tools/web/index.ts +8 -1
  117. package/packages/core/src/tools/web/webview-backend.ts +460 -21
  118. package/packages/core/src/utils/index.ts +1 -0
  119. package/packages/core/src/utils/logger.ts +12 -4
  120. package/packages/core/src/utils/redact-binary.ts +17 -0
  121. package/packages/core/src/utils/toon.ts +1 -1
  122. package/packages/core/src/voice/index.ts +6 -6
  123. package/bun.lock +0 -859
  124. package/bunfig.toml +0 -9
  125. package/docs/API-AGENTS.md +0 -367
  126. package/docs/API-CONTEXT-COMPILER.md +0 -249
  127. package/docs/API-DAG-SCHEDULER.md +0 -273
  128. package/docs/API-TOOLS-SKILLS-CHANNELS.md +0 -446
  129. package/docs/API-WORKERS-EVENTS.md +0 -299
  130. package/docs/HIVE-HARNESS.md +0 -113
  131. package/docs/INDEX.md +0 -190
  132. package/docs/TEMPLATE-HIVE-APP.md +0 -360
  133. package/packages/cli/package.json +0 -17
  134. package/packages/cli/src/commands/create-app.test.ts +0 -180
  135. package/packages/core/package.json +0 -70
  136. package/packages/core/src/api/createAgent.test.ts +0 -160
  137. package/packages/core/src/canvas/canvas.test.ts +0 -36
  138. package/packages/core/src/channels/channels.test.ts +0 -18
  139. package/packages/core/src/ethics/EthicsGuard.test.ts +0 -108
  140. package/packages/core/src/gateway/gateway.test.ts +0 -38
  141. package/packages/core/src/memory/Scratchpad.test.ts +0 -68
  142. package/packages/core/src/scheduler/scheduler.test.ts +0 -15
  143. package/packages/core/src/skills/skills.test.ts +0 -62
  144. package/packages/core/src/swarm/swarm.test.ts +0 -24
  145. package/packages/core/src/tool-runtime/tool-runtime.test.ts +0 -99
  146. package/packages/core/src/tools/ToolRegistry.test.ts +0 -98
  147. package/packages/core/src/tools/api/api-request.test.ts +0 -164
  148. package/packages/core/src/tools/web/browser-service.test.ts +0 -83
  149. package/packages/core/src/workers/workers.test.ts +0 -41
  150. package/scripts/bump-version.ts +0 -248
  151. package/scripts/generate-skill-bundle.ts +0 -108
  152. package/test/acceptance-checks.test.ts +0 -403
  153. package/test/agent-loop-terminal-synthesis.test.ts +0 -32
  154. package/test/browser-backend.test.ts +0 -308
  155. package/test/catalog-agents-stay-enabled.test.ts +0 -117
  156. package/test/causal-events.test.ts +0 -117
  157. package/test/compaction.test.ts +0 -105
  158. package/test/context-compiler.test.ts +0 -269
  159. package/test/curator.test.ts +0 -130
  160. package/test/durable-queue.test.ts +0 -114
  161. package/test/harness-barrel.test.ts +0 -64
  162. package/test/hive-helpers.test.ts +0 -130
  163. package/test/hivedb-search.test.ts +0 -189
  164. package/test/internal-turns.test.ts +0 -166
  165. package/test/job-idempotency.test.ts +0 -68
  166. package/test/job-retry-backoff.test.ts +0 -184
  167. package/test/job-store.test.ts +0 -381
  168. package/test/llm-retry.test.ts +0 -97
  169. package/test/memory-perf.test.ts +0 -774
  170. package/test/minimal-loadout.test.ts +0 -78
  171. package/test/model-catalog.test.ts +0 -105
  172. package/test/preload.ts +0 -12
  173. package/test/reflector.test.ts +0 -320
  174. package/test/retention-cap.test.ts +0 -91
  175. package/test/retired-capabilities-pruned.test.ts +0 -192
  176. package/test/run-store.test.ts +0 -355
  177. package/test/scratchpad.test.ts +0 -74
  178. package/test/secrets-durability.test.ts +0 -119
  179. package/test/seed-model-reseed.test.ts +0 -155
  180. package/test/setup-agent-seed.test.ts +0 -264
  181. package/test/tool-inventory.test.ts +0 -65
  182. package/test/tool-runtime.test.ts +0 -258
  183. package/test/tool-selector-runtime-tools.test.ts +0 -117
  184. package/test/toon.test.ts +0 -429
  185. 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
- ```