@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.
- package/CHANGELOG.md +441 -0
- package/README.md +21 -3
- package/package.json +27 -5
- package/packages/core/src/agent/acceptance-checks.ts +9 -9
- package/packages/core/src/agent/agent-catalog.ts +82 -25
- package/packages/core/src/agent/agent-loop.ts +115 -26
- package/packages/core/src/agent/capability-search.ts +2 -2
- package/packages/core/src/agent/catalog-selector.ts +4 -4
- package/packages/core/src/agent/compaction.ts +30 -10
- package/packages/core/src/agent/context-compiler.ts +63 -36
- package/packages/core/src/agent/conversation-store.ts +167 -9
- package/packages/core/src/agent/curator.ts +16 -7
- package/packages/core/src/agent/delegation-runtime.ts +5 -5
- package/packages/core/src/agent/goal-runner.ts +9 -9
- package/packages/core/src/agent/index.ts +1 -0
- package/packages/core/src/agent/llm-client.ts +98 -37
- package/packages/core/src/agent/llm-providers/anthropic.ts +4 -4
- package/packages/core/src/agent/llm-providers/deepseek.ts +1 -1
- package/packages/core/src/agent/llm-providers/gemini.ts +4 -4
- package/packages/core/src/agent/llm-providers/groq.ts +1 -1
- package/packages/core/src/agent/llm-providers/hiveagents.ts +3 -3
- package/packages/core/src/agent/llm-providers/interface.ts +2 -2
- package/packages/core/src/agent/llm-providers/kimi.ts +1 -1
- package/packages/core/src/agent/llm-providers/minimax.ts +1 -1
- package/packages/core/src/agent/llm-providers/mistral.ts +1 -1
- package/packages/core/src/agent/llm-providers/modelscope.ts +1 -1
- package/packages/core/src/agent/llm-providers/nvidia.ts +40 -1
- package/packages/core/src/agent/llm-providers/ollama.ts +4 -4
- package/packages/core/src/agent/llm-providers/openai-compat-base.ts +47 -7
- package/packages/core/src/agent/llm-providers/openai.ts +1 -1
- package/packages/core/src/agent/llm-providers/opencode-go.ts +1 -1
- package/packages/core/src/agent/llm-providers/openrouter.ts +1 -1
- package/packages/core/src/agent/llm-providers/qwen.ts +1 -1
- package/packages/core/src/agent/llm-providers/z-ai.ts +1 -1
- package/packages/core/src/agent/mcp-result-normalizer.ts +192 -0
- package/packages/core/src/agent/playbook-selector.ts +22 -7
- package/packages/core/src/agent/prompt-builder.ts +5 -5
- package/packages/core/src/agent/proof-packet.ts +5 -5
- package/packages/core/src/agent/providers/index.ts +39 -4
- package/packages/core/src/agent/realtime-providers/gemini-live.ts +238 -0
- package/packages/core/src/agent/realtime-providers/index.ts +29 -0
- package/packages/core/src/agent/realtime-providers/interface.ts +108 -0
- package/packages/core/src/agent/reflector.ts +38 -15
- package/packages/core/src/agent/run-store.ts +8 -8
- package/packages/core/src/agent/service.ts +10 -10
- package/packages/core/src/agent/skill-selector.ts +6 -6
- package/packages/core/src/agent/thread-id.ts +71 -0
- package/packages/core/src/agent/thread-store.ts +293 -0
- package/packages/core/src/agent/tool-selector.ts +9 -5
- package/packages/core/src/agent/tracer.ts +5 -5
- package/packages/core/src/api/createAgent.ts +67 -2
- package/packages/core/src/artifacts/index.ts +15 -0
- package/packages/core/src/artifacts/store.ts +161 -5
- package/packages/core/src/canvas/emitter.ts +2 -2
- package/packages/core/src/canvas/index.ts +9 -0
- package/packages/core/src/channels/telegram.ts +1 -1
- package/packages/core/src/channels/webchat.ts +1 -1
- package/packages/core/src/config/loader.ts +14 -5
- package/packages/core/src/ethics/EthicsGuard.ts +7 -1
- package/packages/core/src/events/agent-bus.ts +3 -3
- package/packages/core/src/events/channel-narration.ts +3 -3
- package/packages/core/src/events/event-bus.ts +1 -1
- package/packages/core/src/events/index.ts +18 -0
- package/packages/core/src/events/narration.ts +3 -3
- package/packages/core/src/events/tool-narration.ts +4 -0
- package/packages/core/src/gateway/channel-notify.ts +103 -6
- package/packages/core/src/gateway/delegation-groups.ts +4 -4
- package/packages/core/src/gateway/durable-queue.ts +18 -6
- package/packages/core/src/gateway/index.ts +3 -0
- package/packages/core/src/gateway/job-store.ts +11 -5
- package/packages/core/src/gateway/notification-inbox.ts +2 -2
- package/packages/core/src/gateway/server.ts +2 -2
- package/packages/core/src/harness/executors.ts +493 -0
- package/packages/core/src/harness/index.ts +12 -2
- package/packages/core/src/hooks/index.ts +203 -0
- package/packages/core/src/images/index.ts +161 -0
- package/packages/core/src/index.ts +1 -0
- package/packages/core/src/mcp/MCPClient.ts +3 -3
- package/packages/core/src/mcp/hot-reload.ts +5 -5
- package/packages/core/src/mcp/tool-sync.ts +5 -5
- package/packages/core/src/mcp/transports/index.ts +2 -2
- package/packages/core/src/mcp/transports/sse.ts +1 -1
- package/packages/core/src/models/index.ts +36 -0
- package/packages/core/src/multimodal/index.ts +2 -2
- package/packages/core/src/multimodal/vision-service.ts +51 -19
- package/packages/core/src/plugins/loader.ts +4 -1
- package/packages/core/src/resilience/circuit-breaker.ts +16 -5
- package/packages/core/src/resilience/index.ts +13 -0
- package/packages/core/src/resilience/retry.ts +1 -1
- package/packages/core/src/scheduler/CronScheduler.ts +54 -27
- package/packages/core/src/scheduler/cron/expression.ts +165 -0
- package/packages/core/src/scheduler/cron/index.ts +10 -0
- package/packages/core/src/scheduler/cron/job.ts +339 -0
- package/packages/core/src/scheduler/cron/next-run.ts +121 -0
- package/packages/core/src/scheduler/cron/zoned-time.ts +138 -0
- package/packages/core/src/scheduler/index.ts +21 -3
- package/packages/core/src/scheduler/integration.ts +25 -14
- package/packages/core/src/scheduler/types.ts +3 -18
- package/packages/core/src/services/agents.ts +268 -0
- package/packages/core/src/services/cron.ts +257 -0
- package/packages/core/src/services/endpoints.ts +289 -0
- package/packages/core/src/services/ethics.ts +107 -0
- package/packages/core/src/services/images.ts +212 -0
- package/packages/core/src/services/index.ts +112 -0
- package/packages/core/src/services/mcp.ts +201 -0
- package/packages/core/src/services/memory.ts +133 -0
- package/packages/core/src/services/models.ts +179 -0
- package/packages/core/src/services/providers.ts +152 -0
- package/packages/core/src/services/setup.ts +222 -0
- package/packages/core/src/services/skills.ts +241 -0
- package/packages/core/src/services/swarms.ts +307 -0
- package/packages/core/src/services/tools.ts +106 -0
- package/packages/core/src/sessions/index.ts +268 -0
- package/packages/core/src/sessions/resolve.ts +108 -0
- package/packages/core/src/skills/SkillLoader.ts +8 -1
- package/packages/core/src/skills/bundled/artifacts/artifact_reader/SKILL.md +105 -0
- package/packages/core/src/skills/bundled/cron_manager/SKILL.md +21 -11
- package/packages/core/src/skills/bundled/images/image_editor/SKILL.md +120 -0
- package/packages/core/src/skills/bundled/web/browser_automate/SKILL.md +12 -3
- package/packages/core/src/skills/bundled/web/browser_scrape/SKILL.md +22 -7
- package/packages/core/src/skills/bundled-data.generated.ts +110 -12
- package/packages/core/src/storage/bootstrap.ts +107 -12
- package/packages/core/src/storage/causal-events.ts +1 -1
- package/packages/core/src/storage/collections.ts +138 -2
- package/packages/core/src/storage/crypto.ts +35 -4
- package/packages/core/src/storage/hive.ts +1 -1
- package/packages/core/src/storage/hivedb.ts +10 -1
- package/packages/core/src/storage/index.ts +2 -1
- package/packages/core/src/storage/onboarding.ts +61 -45
- package/packages/core/src/storage/reconcile.ts +11 -6
- package/packages/core/src/storage/seed.ts +191 -23
- package/packages/core/src/storage/usage.ts +3 -3
- package/packages/core/src/swarm/AgentExecutor.ts +2 -2
- package/packages/core/src/swarm/Coordinator.ts +8 -8
- package/packages/core/src/swarm/EventBridge.ts +2 -2
- package/packages/core/src/swarm/RoleSwarm.ts +234 -0
- package/packages/core/src/swarm/TaskGraph.ts +2 -2
- package/packages/core/src/swarm/index.ts +7 -0
- package/packages/core/src/swarm/presets/HiveLearnPreset.ts +2 -2
- package/packages/core/src/swarm/presets/ResearchPreset.ts +2 -2
- package/packages/core/src/swarm/strategies/ParallelStrategy.ts +1 -1
- package/packages/core/src/swarm/strategies/PriorityStrategy.ts +3 -3
- package/packages/core/src/swarm/types.ts +3 -18
- package/packages/core/src/tool-runtime/embedded-worker.generated.ts +21 -0
- package/packages/core/src/tool-runtime/index.ts +129 -14
- package/packages/core/src/tools/ToolExecutor.ts +7 -3
- package/packages/core/src/tools/agents/index.ts +18 -60
- package/packages/core/src/tools/cli/index.ts +55 -0
- package/packages/core/src/tools/core/index.ts +52 -4
- package/packages/core/src/tools/cron/index.ts +8 -8
- package/packages/core/src/tools/images/index.ts +130 -0
- package/packages/core/src/tools/index.ts +14 -1
- package/packages/core/src/tools/office/office-escribir-xlsx.ts +2 -1
- package/packages/core/src/tools/office/office-leer-xlsx.ts +2 -1
- package/packages/core/src/tools/office/xlsx-loader.ts +19 -0
- package/packages/core/src/tools/web/artifact-inspect.ts +2 -2
- package/packages/core/src/tools/web/artifact-read.ts +162 -0
- package/packages/core/src/tools/web/browser-backend.ts +141 -44
- package/packages/core/src/tools/web/browser-click.ts +2 -2
- package/packages/core/src/tools/web/browser-extract.ts +2 -2
- package/packages/core/src/tools/web/browser-navigate.ts +2 -2
- package/packages/core/src/tools/web/browser-screenshot.ts +12 -5
- package/packages/core/src/tools/web/browser-script.ts +2 -2
- package/packages/core/src/tools/web/browser-service.ts +63 -384
- package/packages/core/src/tools/web/browser-session.ts +125 -0
- package/packages/core/src/tools/web/browser-type.ts +2 -2
- package/packages/core/src/tools/web/browser-wait.ts +2 -2
- package/packages/core/src/tools/web/computer-use.ts +553 -0
- package/packages/core/src/tools/web/index.ts +8 -1
- package/packages/core/src/tools/web/webview-backend.ts +460 -21
- package/packages/core/src/utils/index.ts +1 -0
- package/packages/core/src/utils/logger.ts +12 -4
- package/packages/core/src/utils/redact-binary.ts +17 -0
- package/packages/core/src/utils/toon.ts +1 -1
- package/packages/core/src/voice/index.ts +6 -6
- package/bun.lock +0 -859
- package/bunfig.toml +0 -9
- package/docs/API-AGENTS.md +0 -367
- package/docs/API-CONTEXT-COMPILER.md +0 -249
- package/docs/API-DAG-SCHEDULER.md +0 -273
- package/docs/API-TOOLS-SKILLS-CHANNELS.md +0 -446
- package/docs/API-WORKERS-EVENTS.md +0 -299
- package/docs/HIVE-HARNESS.md +0 -113
- package/docs/INDEX.md +0 -190
- package/docs/TEMPLATE-HIVE-APP.md +0 -360
- package/packages/cli/package.json +0 -17
- package/packages/cli/src/commands/create-app.test.ts +0 -180
- package/packages/core/package.json +0 -70
- package/packages/core/src/api/createAgent.test.ts +0 -160
- package/packages/core/src/canvas/canvas.test.ts +0 -36
- package/packages/core/src/channels/channels.test.ts +0 -18
- package/packages/core/src/ethics/EthicsGuard.test.ts +0 -108
- package/packages/core/src/gateway/gateway.test.ts +0 -38
- package/packages/core/src/memory/Scratchpad.test.ts +0 -68
- package/packages/core/src/scheduler/scheduler.test.ts +0 -15
- package/packages/core/src/skills/skills.test.ts +0 -62
- package/packages/core/src/swarm/swarm.test.ts +0 -24
- package/packages/core/src/tool-runtime/tool-runtime.test.ts +0 -99
- package/packages/core/src/tools/ToolRegistry.test.ts +0 -98
- package/packages/core/src/tools/api/api-request.test.ts +0 -164
- package/packages/core/src/tools/web/browser-service.test.ts +0 -83
- package/packages/core/src/workers/workers.test.ts +0 -41
- package/scripts/bump-version.ts +0 -248
- package/scripts/generate-skill-bundle.ts +0 -108
- package/test/acceptance-checks.test.ts +0 -403
- package/test/agent-loop-terminal-synthesis.test.ts +0 -32
- package/test/browser-backend.test.ts +0 -308
- package/test/catalog-agents-stay-enabled.test.ts +0 -117
- package/test/causal-events.test.ts +0 -117
- package/test/compaction.test.ts +0 -105
- package/test/context-compiler.test.ts +0 -269
- package/test/curator.test.ts +0 -130
- package/test/durable-queue.test.ts +0 -114
- package/test/harness-barrel.test.ts +0 -64
- package/test/hive-helpers.test.ts +0 -130
- package/test/hivedb-search.test.ts +0 -189
- package/test/internal-turns.test.ts +0 -166
- package/test/job-idempotency.test.ts +0 -68
- package/test/job-retry-backoff.test.ts +0 -184
- package/test/job-store.test.ts +0 -381
- package/test/llm-retry.test.ts +0 -97
- package/test/memory-perf.test.ts +0 -774
- package/test/minimal-loadout.test.ts +0 -78
- package/test/model-catalog.test.ts +0 -105
- package/test/preload.ts +0 -12
- package/test/reflector.test.ts +0 -320
- package/test/retention-cap.test.ts +0 -91
- package/test/retired-capabilities-pruned.test.ts +0 -192
- package/test/run-store.test.ts +0 -355
- package/test/scratchpad.test.ts +0 -74
- package/test/secrets-durability.test.ts +0 -119
- package/test/seed-model-reseed.test.ts +0 -155
- package/test/setup-agent-seed.test.ts +0 -264
- package/test/tool-inventory.test.ts +0 -65
- package/test/tool-runtime.test.ts +0 -258
- package/test/tool-selector-runtime-tools.test.ts +0 -117
- package/test/toon.test.ts +0 -429
- 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/"
|
package/docs/API-AGENTS.md
DELETED
|
@@ -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
|
-
```
|