@johpaz/hive-sdk 0.0.14 → 0.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +64 -0
- package/README.md +280 -0
- package/docs/API-AGENTS.md +316 -0
- package/docs/API-CONTEXT-COMPILER.md +252 -0
- package/docs/API-DAG-SCHEDULER.md +273 -0
- package/docs/API-TOOLS-SKILLS-CHANNELS.md +350 -0
- package/docs/API-WORKERS-EVENTS.md +299 -0
- package/docs/INDEX.md +190 -0
- package/docs/README.md +161 -0
- package/docs/TEMPLATE-HIVE-APP.md +360 -0
- package/package.json +60 -104
- package/packages/cli/bin/hive +2 -0
- package/packages/cli/package.json +17 -0
- package/packages/cli/src/commands/add-skill.ts +42 -0
- package/packages/cli/src/commands/add-tool.ts +45 -0
- package/packages/cli/src/commands/add-worker.ts +49 -0
- package/packages/cli/src/commands/create-app-utils.ts +32 -0
- package/packages/cli/src/commands/create-app.test.ts +151 -0
- package/packages/cli/src/commands/create-app.ts +35 -0
- package/packages/cli/src/commands/init.ts +56 -0
- package/packages/cli/src/commands/run.ts +45 -0
- package/packages/cli/src/commands/test.ts +42 -0
- package/packages/cli/src/commands/trace.ts +55 -0
- package/packages/cli/src/index.ts +59 -0
- package/packages/cli/templates/hive-app/.env.example +17 -0
- package/packages/cli/templates/hive-app/docker-compose.yml +20 -0
- package/packages/cli/templates/hive-app/hive.config.ts +19 -0
- package/packages/cli/templates/hive-app/package.json +16 -0
- package/packages/cli/templates/hive-app/src/agents/coordinator.ts +9 -0
- package/packages/cli/templates/hive-app/src/main.ts +56 -0
- package/packages/core/package.json +58 -0
- package/packages/core/src/ace/Curator.ts +158 -0
- package/packages/core/src/ace/Reflector.ts +200 -0
- package/packages/core/src/ace/Tracer.ts +100 -0
- package/packages/core/src/ace/index.ts +4 -0
- package/packages/core/src/agent/AgentRunner.ts +699 -0
- package/packages/core/src/agent/Compaction.ts +221 -0
- package/packages/core/src/agent/ContextCompiler.ts +567 -0
- package/packages/core/src/agent/ContextGuard.ts +91 -0
- package/packages/core/src/agent/ConversationStore.ts +244 -0
- package/packages/core/src/agent/Hooks.ts +166 -0
- package/packages/core/src/agent/NativeTools.ts +31 -0
- package/packages/core/src/agent/PromptBuilder.ts +169 -0
- package/packages/core/src/agent/Service.ts +267 -0
- package/packages/core/src/agent/StuckLoop.ts +133 -0
- package/packages/core/src/agent/index.ts +12 -0
- package/packages/core/src/agent/providers/LLMClient.ts +149 -0
- package/packages/core/src/agent/providers/anthropic.ts +212 -0
- package/packages/core/src/agent/providers/gemini.ts +215 -0
- package/packages/core/src/agent/providers/index.ts +199 -0
- package/packages/core/src/agent/providers/interface.ts +195 -0
- package/packages/core/src/agent/providers/ollama.ts +175 -0
- package/packages/core/src/agent/providers/openai-compat.ts +231 -0
- package/packages/core/src/agent/selectors/PlaybookSelector.ts +147 -0
- package/packages/core/src/agent/selectors/SkillSelector.ts +478 -0
- package/packages/core/src/agent/selectors/ToolSelector.ts +577 -0
- package/packages/core/src/agent/selectors/index.ts +6 -0
- package/packages/core/src/api/createAgent.test.ts +48 -0
- package/packages/core/src/api/createAgent.ts +122 -0
- package/packages/core/src/api/index.ts +2 -0
- package/packages/core/src/auth/auth.ts +108 -0
- package/packages/core/src/auth/index.ts +1 -0
- package/packages/core/src/canvas/CanvasManager.ts +390 -0
- package/packages/core/src/canvas/a2ui-tools.ts +255 -0
- package/packages/core/src/canvas/canvas-tools.ts +448 -0
- package/packages/core/src/canvas/canvas.test.ts +32 -0
- package/packages/core/src/canvas/emitter.ts +149 -0
- package/packages/core/src/canvas/index.ts +3 -0
- package/packages/core/src/channels/base.ts +154 -0
- package/packages/core/src/channels/channels.test.ts +18 -0
- package/packages/core/src/channels/discord.ts +273 -0
- package/packages/core/src/channels/index.ts +7 -0
- package/packages/core/src/channels/manager.ts +450 -0
- package/packages/core/src/channels/slack.ts +323 -0
- package/packages/core/src/channels/telegram.ts +612 -0
- package/packages/core/src/channels/webchat.ts +139 -0
- package/packages/core/src/channels/whatsapp.ts +548 -0
- package/packages/core/src/config/index.ts +2 -0
- package/packages/core/src/config/loader.ts +554 -0
- package/packages/core/src/ethics/EthicsGuard.test.ts +54 -0
- package/packages/core/src/ethics/EthicsGuard.ts +66 -0
- package/packages/core/src/ethics/index.ts +2 -0
- package/packages/core/src/events/agent-bus.ts +460 -0
- package/packages/core/src/events/event-bus.ts +169 -0
- package/packages/core/src/gateway/channel-notify.ts +37 -0
- package/packages/core/src/gateway/gateway.test.ts +38 -0
- package/packages/core/src/gateway/index.ts +2 -0
- package/packages/core/src/gateway/server.ts +139 -0
- package/packages/core/src/heartbeat/index.ts +157 -0
- package/packages/core/src/index.ts +81 -0
- package/packages/core/src/mcp/MCPClient.ts +439 -0
- package/packages/core/src/mcp/MCPToolAdapter.ts +176 -0
- package/packages/core/src/mcp/config.ts +13 -0
- package/packages/core/src/mcp/hot-reload.ts +147 -0
- package/packages/core/src/mcp/index.ts +11 -0
- package/packages/core/src/mcp/logger.ts +42 -0
- package/packages/core/src/mcp/singleton.ts +21 -0
- package/packages/core/src/mcp/transports/index.ts +67 -0
- package/packages/core/src/mcp/transports/sse.ts +241 -0
- package/packages/core/src/mcp/transports/websocket.ts +159 -0
- package/packages/core/src/memory/Scratchpad.test.ts +47 -0
- package/packages/core/src/memory/Scratchpad.ts +37 -0
- package/packages/core/src/memory/Storage.ts +6 -0
- package/packages/core/src/memory/index.ts +2 -0
- package/packages/core/src/multimodal/VisionService.ts +293 -0
- package/packages/core/src/multimodal/index.ts +2 -0
- package/packages/core/src/multimodal/types.ts +28 -0
- package/packages/core/src/multimodal/vision-service.ts +283 -0
- package/packages/core/src/plugins/api.ts +128 -0
- package/packages/core/src/plugins/index.ts +2 -0
- package/packages/core/src/plugins/loader.ts +365 -0
- package/packages/core/src/resilience/circuit-breaker.ts +225 -0
- package/packages/core/src/scheduler/CronScheduler.ts +699 -0
- package/packages/core/src/scheduler/dag/AgentExecutor.ts +53 -0
- package/packages/core/src/scheduler/dag/DAGScheduler.ts +250 -0
- package/packages/core/src/scheduler/dag/EventBridge.ts +122 -0
- package/packages/core/src/scheduler/dag/TaskGraph.ts +192 -0
- package/packages/core/src/scheduler/dag/TaskNode.ts +97 -0
- package/packages/core/src/scheduler/dag/TaskResult.ts +22 -0
- package/packages/core/src/scheduler/dag/errors.ts +37 -0
- package/packages/core/src/scheduler/dag/index.ts +26 -0
- package/packages/core/src/scheduler/dag/presets/ResearchPreset.ts +97 -0
- package/packages/core/src/scheduler/dag/strategies/ParallelStrategy.ts +21 -0
- package/packages/core/src/scheduler/dag/strategies/PriorityStrategy.ts +46 -0
- package/packages/core/src/scheduler/index.ts +22 -0
- package/packages/core/src/scheduler/integration.ts +237 -0
- package/packages/core/src/scheduler/scheduler.test.ts +19 -0
- package/packages/core/src/scheduler/types.ts +164 -0
- package/packages/core/src/security/Pairing.ts +250 -0
- package/packages/core/src/security/RateLimit.ts +270 -0
- package/packages/core/src/security/google-chat.ts +269 -0
- package/packages/core/src/security/index.ts +192 -0
- package/packages/core/src/security/rate-limit.ts +270 -0
- package/packages/core/src/security/signal.ts +321 -0
- package/packages/core/src/skills/SkillLoader.ts +388 -0
- package/packages/core/src/skills/bundled-data.generated.ts +3332 -0
- package/packages/core/src/skills/defineSkill.ts +18 -0
- package/packages/core/src/skills/index.ts +4 -0
- package/packages/core/src/state/index.ts +2 -0
- package/packages/core/src/state/store.ts +312 -0
- package/packages/core/src/storage/SQLiteStorage.ts +407 -0
- package/packages/core/src/storage/crypto.ts +233 -0
- package/packages/core/src/storage/index.ts +10 -0
- package/packages/core/src/storage/onboarding.ts +1603 -0
- package/packages/core/src/storage/schema.ts +689 -0
- package/packages/core/src/storage/seed.ts +740 -0
- package/packages/core/src/storage/storage.test.ts +37 -0
- package/packages/core/src/storage/usage.ts +374 -0
- package/packages/core/src/swarm/AgentBus.ts +460 -0
- package/packages/core/src/swarm/AgentExecutor.ts +53 -0
- package/packages/core/src/swarm/Coordinator.ts +251 -0
- package/packages/core/src/swarm/EventBridge.ts +122 -0
- package/packages/core/src/swarm/EventBus.ts +169 -0
- package/packages/core/src/swarm/TaskGraph.ts +192 -0
- package/packages/core/src/swarm/TaskNode.ts +97 -0
- package/packages/core/src/swarm/TaskResult.ts +22 -0
- package/packages/core/src/swarm/WorkerPool.ts +236 -0
- package/packages/core/src/swarm/errors.ts +37 -0
- package/packages/core/src/swarm/index.ts +30 -0
- package/packages/core/src/swarm/presets/HiveLearnPreset.ts +99 -0
- package/packages/core/src/swarm/presets/ResearchPreset.ts +97 -0
- package/packages/core/src/swarm/presets/index.ts +4 -0
- package/packages/core/src/swarm/strategies/ParallelStrategy.ts +21 -0
- package/packages/core/src/swarm/strategies/PriorityStrategy.ts +46 -0
- package/packages/core/src/swarm/strategies/index.ts +3 -0
- package/packages/core/src/swarm/swarm.test.ts +24 -0
- package/packages/core/src/swarm/types.ts +164 -0
- package/packages/core/src/tool-runtime/index.ts +522 -0
- package/packages/core/src/tool-runtime/tool-runtime.test.ts +91 -0
- package/packages/core/src/tool-runtime/tool-worker.ts +125 -0
- package/packages/core/src/tools/ToolExecutor.ts +58 -0
- package/packages/core/src/tools/ToolRegistry.test.ts +98 -0
- package/packages/core/src/tools/ToolRegistry.ts +61 -0
- package/packages/core/src/tools/agents/get-available-models.ts +118 -0
- package/packages/core/src/tools/agents/index.ts +715 -0
- package/packages/core/src/tools/bridge-events.ts +26 -0
- package/packages/core/src/tools/canvas/index.ts +375 -0
- package/packages/core/src/tools/cli/index.ts +142 -0
- package/packages/core/src/tools/codebridge/index.ts +342 -0
- package/packages/core/src/tools/core/index.ts +476 -0
- package/packages/core/src/tools/cron/index.ts +626 -0
- package/packages/core/src/tools/filesystem/fs-delete.ts +78 -0
- package/packages/core/src/tools/filesystem/fs-edit.ts +106 -0
- package/packages/core/src/tools/filesystem/fs-exists.ts +63 -0
- package/packages/core/src/tools/filesystem/fs-glob.ts +108 -0
- package/packages/core/src/tools/filesystem/fs-list.ts +129 -0
- package/packages/core/src/tools/filesystem/fs-read.ts +72 -0
- package/packages/core/src/tools/filesystem/fs-write.ts +67 -0
- package/packages/core/src/tools/filesystem/index.ts +34 -0
- package/packages/core/src/tools/filesystem/workspace-guard.ts +62 -0
- package/packages/core/src/tools/index.ts +231 -0
- package/packages/core/src/tools/meeting/index.ts +363 -0
- package/packages/core/src/tools/office/index.ts +47 -0
- package/packages/core/src/tools/office/office-escribir-docx.ts +192 -0
- package/packages/core/src/tools/office/office-escribir-pdf.ts +172 -0
- package/packages/core/src/tools/office/office-escribir-pptx.ts +174 -0
- package/packages/core/src/tools/office/office-escribir-xlsx.ts +116 -0
- package/packages/core/src/tools/office/office-leer-docx.ts +93 -0
- package/packages/core/src/tools/office/office-leer-pdf.ts +114 -0
- package/packages/core/src/tools/office/office-leer-pptx.ts +136 -0
- package/packages/core/src/tools/office/office-leer-xlsx.ts +124 -0
- package/packages/core/src/tools/projects/index.ts +37 -0
- package/packages/core/src/tools/projects/project-create.ts +94 -0
- package/packages/core/src/tools/projects/project-done.ts +66 -0
- package/packages/core/src/tools/projects/project-fail.ts +66 -0
- package/packages/core/src/tools/projects/project-list.ts +96 -0
- package/packages/core/src/tools/projects/project-update.ts +72 -0
- package/packages/core/src/tools/projects/task-create.ts +68 -0
- package/packages/core/src/tools/projects/task-evaluate.ts +93 -0
- package/packages/core/src/tools/projects/task-update.ts +93 -0
- package/packages/core/src/tools/types.ts +39 -0
- package/packages/core/src/tools/voice/index.ts +104 -0
- package/packages/core/src/tools/web/browser-click.ts +78 -0
- package/packages/core/src/tools/web/browser-extract.ts +139 -0
- package/packages/core/src/tools/web/browser-navigate.ts +106 -0
- package/packages/core/src/tools/web/browser-screenshot.ts +87 -0
- package/packages/core/src/tools/web/browser-script.ts +88 -0
- package/packages/core/src/tools/web/browser-service.ts +554 -0
- package/packages/core/src/tools/web/browser-type.ts +101 -0
- package/packages/core/src/tools/web/browser-wait.ts +136 -0
- package/packages/core/src/tools/web/index.ts +41 -0
- package/packages/core/src/tools/web/web-fetch.ts +78 -0
- package/packages/core/src/tools/web/web-search.ts +123 -0
- package/packages/core/src/utils/benchmark.ts +80 -0
- package/packages/core/src/utils/crypto.ts +73 -0
- package/packages/core/src/utils/date.ts +42 -0
- package/packages/core/src/utils/index.ts +10 -0
- package/packages/core/src/utils/logger.ts +389 -0
- package/packages/core/src/utils/retry.ts +70 -0
- package/packages/core/src/utils/toon.ts +253 -0
- package/packages/core/src/voice/index.ts +643 -0
- package/packages/core/src/workers/WorkerPool.ts +167 -0
- package/packages/core/src/workers/agent.worker.ts +68 -0
- package/packages/core/src/workers/createWorker.ts +144 -0
- package/packages/core/src/workers/index.ts +5 -0
- package/packages/core/src/workers/workers.test.ts +48 -0
- package/test/setup-db.ts +216 -0
- package/tsconfig.json +40 -0
- package/src/agents.ts +0 -1
- package/src/canvas.ts +0 -1
- package/src/channels.ts +0 -1
- package/src/config.ts +0 -1
- package/src/events.ts +0 -1
- package/src/gateway.ts +0 -1
- package/src/index.ts +0 -304
- package/src/mcp.ts +0 -1
- package/src/multimodal.ts +0 -1
- package/src/scheduler.ts +0 -1
- package/src/security.ts +0 -1
- package/src/skills.ts +0 -1
- package/src/state.ts +0 -1
- package/src/storage.ts +0 -1
- package/src/tools.ts +0 -1
- package/src/tts.ts +0 -1
- package/src/types.ts +0 -82
- package/src/utils.ts +0 -1
- package/src/voice.ts +0 -1
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
# API Reference — Tools, Skills, MCP, Gateway, Channels y Storage
|
|
2
|
+
|
|
3
|
+
## Índice
|
|
4
|
+
|
|
5
|
+
1. [Tools](#tools)
|
|
6
|
+
2. [Skills](#skills)
|
|
7
|
+
3. [MCP](#mcp)
|
|
8
|
+
4. [Gateway](#gateway)
|
|
9
|
+
5. [Channels](#channels)
|
|
10
|
+
6. [Tool Runtime](#tool-runtime)
|
|
11
|
+
7. [Canvas](#canvas)
|
|
12
|
+
8. [Storage](#storage)
|
|
13
|
+
9. [Config](#config)
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Tools
|
|
18
|
+
|
|
19
|
+
### defineTool
|
|
20
|
+
|
|
21
|
+
Función para definir herramientas que el agente puede invocar.
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
import { defineTool } from "@johpaz/hive-sdk";
|
|
25
|
+
|
|
26
|
+
const tool = defineTool({
|
|
27
|
+
name: "saludar",
|
|
28
|
+
description: "Saluda a alguien por su nombre",
|
|
29
|
+
execute: async (args: { nombre: string }) => {
|
|
30
|
+
return { mensaje: `¡Hola ${args.nombre}!` };
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### ToolRegistry
|
|
36
|
+
|
|
37
|
+
Registro central de herramientas.
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
import { ToolRegistry, defineTool } from "@johpaz/hive-sdk";
|
|
41
|
+
|
|
42
|
+
const reg = new ToolRegistry();
|
|
43
|
+
|
|
44
|
+
reg.register(defineTool({ name: "t1", description: "...", execute: async () => ({}) }));
|
|
45
|
+
|
|
46
|
+
reg.has("t1"); // true
|
|
47
|
+
reg.get("t1"); // ToolDefinition
|
|
48
|
+
reg.list(); // ToolDefinition[]
|
|
49
|
+
reg.getByCategory("web"); // Filtrar por categoría
|
|
50
|
+
reg.getNames(); // ["t1"]
|
|
51
|
+
reg.size(); // 1
|
|
52
|
+
reg.merge(otherRegistry);
|
|
53
|
+
reg.clear();
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### ToolExecutor
|
|
57
|
+
|
|
58
|
+
Ejecutor de herramientas con validación Zod.
|
|
59
|
+
|
|
60
|
+
```typescript
|
|
61
|
+
import { ToolRegistry, ToolExecutor, defineTool } from "@johpaz/hive-sdk";
|
|
62
|
+
|
|
63
|
+
const reg = new ToolRegistry();
|
|
64
|
+
reg.register(defineTool({
|
|
65
|
+
name: "echo",
|
|
66
|
+
description: "Echo",
|
|
67
|
+
execute: async (args) => args,
|
|
68
|
+
}));
|
|
69
|
+
|
|
70
|
+
const exec = new ToolExecutor(reg);
|
|
71
|
+
const result = await exec.execute("echo", { msg: "hola" });
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Tool Selection (FTS5)
|
|
75
|
+
|
|
76
|
+
```typescript
|
|
77
|
+
import { selectTools, CORE_TOOL_CATALOG } from "@johpaz/hive-sdk";
|
|
78
|
+
|
|
79
|
+
const tools = selectTools("Buscar archivos en el proyecto");
|
|
80
|
+
const webTools = tools.filter(t => t.category === "web");
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Skills
|
|
86
|
+
|
|
87
|
+
### defineSkill
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
import { defineSkill } from "@johpaz/hive-sdk";
|
|
91
|
+
|
|
92
|
+
const skill = defineSkill({
|
|
93
|
+
name: "file-manager",
|
|
94
|
+
description: "Gestiona archivos y directorios",
|
|
95
|
+
steps: [
|
|
96
|
+
{ action: "fs_list", instruction: "Listar archivos" },
|
|
97
|
+
{ action: "fs_read", instruction: "Leer archivo" },
|
|
98
|
+
],
|
|
99
|
+
tools: ["fs_list", "fs_read"],
|
|
100
|
+
triggers: ["archivo", "directorio", "listar"],
|
|
101
|
+
});
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### SkillLoader
|
|
105
|
+
|
|
106
|
+
```typescript
|
|
107
|
+
import { SkillLoader } from "@johpaz/hive-sdk";
|
|
108
|
+
|
|
109
|
+
const loader = new SkillLoader({
|
|
110
|
+
allowBundled: ["file-manager", "web-researcher"],
|
|
111
|
+
managedDir: "./skills",
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
const skills = loader.list();
|
|
115
|
+
const skill = loader.get("file-manager");
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## MCP
|
|
121
|
+
|
|
122
|
+
Model Context Protocol — herramientas externas via STDIO/SSE/WebSocket.
|
|
123
|
+
|
|
124
|
+
### MCPClientManager
|
|
125
|
+
|
|
126
|
+
```typescript
|
|
127
|
+
import { MCPClientManager } from "@johpaz/hive-sdk";
|
|
128
|
+
|
|
129
|
+
const mcp = new MCPClientManager({
|
|
130
|
+
servers: {
|
|
131
|
+
"filesystem": {
|
|
132
|
+
transport: "stdio",
|
|
133
|
+
command: "npx",
|
|
134
|
+
args: ["-y", "@modelcontextprotocol/server-filesystem", "./data"],
|
|
135
|
+
enabled: true,
|
|
136
|
+
},
|
|
137
|
+
"weather-api": {
|
|
138
|
+
transport: "sse",
|
|
139
|
+
url: "https://api.weather.com/mcp",
|
|
140
|
+
enabled: true,
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
await mcp.initialize();
|
|
146
|
+
const tools = mcp.getTools("filesystem");
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### Transports
|
|
150
|
+
|
|
151
|
+
```typescript
|
|
152
|
+
import { createTransport, SSETransport, WebSocketTransport } from "@johpaz/hive-sdk";
|
|
153
|
+
|
|
154
|
+
const transport = createTransport({
|
|
155
|
+
type: "stdio",
|
|
156
|
+
stdio: { command: "npx", args: ["-y", "server"], env: {} },
|
|
157
|
+
});
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## Gateway
|
|
163
|
+
|
|
164
|
+
Servidor HTTP/WebSocket simplificado para exponer el agente como API.
|
|
165
|
+
|
|
166
|
+
### startGateway
|
|
167
|
+
|
|
168
|
+
```typescript
|
|
169
|
+
import { startGateway } from "@johpaz/hive-sdk";
|
|
170
|
+
|
|
171
|
+
const server = await startGateway({
|
|
172
|
+
host: "127.0.0.1",
|
|
173
|
+
port: 18790,
|
|
174
|
+
agentId: "coordinator",
|
|
175
|
+
mcpManager: null,
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
console.log(`Gateway at http://127.0.0.1:18790`);
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### Endpoints
|
|
182
|
+
|
|
183
|
+
| Método | Ruta | Descripción |
|
|
184
|
+
|--------|------|-------------|
|
|
185
|
+
| GET | `/status` | Health check |
|
|
186
|
+
| POST | `/chat` | Chat con el agente |
|
|
187
|
+
| WS | `/ws` | WebSocket streaming |
|
|
188
|
+
|
|
189
|
+
### Ejemplo: Chat HTTP
|
|
190
|
+
|
|
191
|
+
```typescript
|
|
192
|
+
const res = await fetch("http://127.0.0.1:18790/chat", {
|
|
193
|
+
method: "POST",
|
|
194
|
+
headers: { "Content-Type": "application/json" },
|
|
195
|
+
body: JSON.stringify({ message: "Hello!", threadId: "t1" }),
|
|
196
|
+
});
|
|
197
|
+
|
|
198
|
+
const data = await res.json();
|
|
199
|
+
console.log(data.response);
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## Channels
|
|
205
|
+
|
|
206
|
+
Integraciones con plataformas de mensajería.
|
|
207
|
+
|
|
208
|
+
### ChannelManager
|
|
209
|
+
|
|
210
|
+
```typescript
|
|
211
|
+
import { ChannelManager } from "@johpaz/hive-sdk";
|
|
212
|
+
|
|
213
|
+
const manager = new ChannelManager(config);
|
|
214
|
+
await manager.initialize();
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### Canales soportados
|
|
218
|
+
|
|
219
|
+
```typescript
|
|
220
|
+
import {
|
|
221
|
+
TelegramChannel,
|
|
222
|
+
DiscordChannel,
|
|
223
|
+
WhatsAppChannel,
|
|
224
|
+
SlackChannel,
|
|
225
|
+
WebChatChannel,
|
|
226
|
+
} from "@johpaz/hive-sdk";
|
|
227
|
+
|
|
228
|
+
// Telegram
|
|
229
|
+
const telegram = new TelegramChannel({ botToken: process.env.TELEGRAM_BOT_TOKEN! });
|
|
230
|
+
|
|
231
|
+
// Discord
|
|
232
|
+
const discord = new DiscordChannel({ botToken: process.env.DISCORD_BOT_TOKEN! });
|
|
233
|
+
|
|
234
|
+
// WhatsApp
|
|
235
|
+
const whatsapp = new WhatsAppChannel();
|
|
236
|
+
|
|
237
|
+
// Slack
|
|
238
|
+
const slack = new SlackChannel({ botToken: process.env.SLACK_BOT_TOKEN! });
|
|
239
|
+
|
|
240
|
+
// Webchat
|
|
241
|
+
const webchat = new WebChatChannel();
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
## Tool Runtime
|
|
247
|
+
|
|
248
|
+
Ejecución paralela de herramientas vía Bun Workers.
|
|
249
|
+
|
|
250
|
+
### executeToolBatch
|
|
251
|
+
|
|
252
|
+
```typescript
|
|
253
|
+
import { executeToolBatch, shutdownToolRuntime } from "@johpaz/hive-sdk";
|
|
254
|
+
|
|
255
|
+
const results = await executeToolBatch({
|
|
256
|
+
toolCalls: [
|
|
257
|
+
{ id: "1", function: { name: "search", arguments: JSON.stringify({ q: "AI" }) } },
|
|
258
|
+
{ id: "2", function: { name: "fetch", arguments: JSON.stringify({ url: "..." }) } },
|
|
259
|
+
],
|
|
260
|
+
allTools: [searchTool, fetchTool],
|
|
261
|
+
toolConfig: { user_id: "u1", thread_id: "t1" },
|
|
262
|
+
hiveConfig: loadConfig(),
|
|
263
|
+
workerPool: {
|
|
264
|
+
enabled: true,
|
|
265
|
+
maxWorkers: 4,
|
|
266
|
+
toolTimeoutMs: 30000,
|
|
267
|
+
parallelToolCalls: true,
|
|
268
|
+
},
|
|
269
|
+
});
|
|
270
|
+
|
|
271
|
+
// Limpieza
|
|
272
|
+
shutdownToolRuntime();
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
### ToolBatchResult
|
|
276
|
+
|
|
277
|
+
```typescript
|
|
278
|
+
interface ToolBatchResult {
|
|
279
|
+
toolCall: ToolCallLike;
|
|
280
|
+
toolName: string;
|
|
281
|
+
result: unknown;
|
|
282
|
+
ok: boolean;
|
|
283
|
+
durationMs: number;
|
|
284
|
+
error?: SerializedError;
|
|
285
|
+
timedOut?: boolean;
|
|
286
|
+
aborted?: boolean;
|
|
287
|
+
}
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
## Canvas
|
|
293
|
+
|
|
294
|
+
Visualización en tiempo real del estado de agentes.
|
|
295
|
+
|
|
296
|
+
```typescript
|
|
297
|
+
import { emitCanvas, subscribeCanvas, unsubscribeCanvas } from "@johpaz/hive-sdk";
|
|
298
|
+
|
|
299
|
+
const handler = (data: any) => console.log("Canvas:", data);
|
|
300
|
+
subscribeCanvas(handler);
|
|
301
|
+
|
|
302
|
+
emitCanvas("canvas:node_update", {
|
|
303
|
+
nodeId: "agent-1",
|
|
304
|
+
changes: { status: "running", currentTool: "web_search" },
|
|
305
|
+
});
|
|
306
|
+
|
|
307
|
+
unsubscribeCanvas(handler);
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
---
|
|
311
|
+
|
|
312
|
+
## Storage
|
|
313
|
+
|
|
314
|
+
Base de datos SQLite con FTS5.
|
|
315
|
+
|
|
316
|
+
```typescript
|
|
317
|
+
import { initializeDatabase, dbService } from "@johpaz/hive-sdk";
|
|
318
|
+
|
|
319
|
+
await initializeDatabase();
|
|
320
|
+
const db = getTestDb();
|
|
321
|
+
|
|
322
|
+
const results = db.query("SELECT * FROM agents WHERE id = ?").all(agentId);
|
|
323
|
+
const single = db.query("SELECT * FROM agents WHERE id = ?").get(agentId);
|
|
324
|
+
|
|
325
|
+
dbService.close();
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
### Schemas FTS5
|
|
329
|
+
|
|
330
|
+
```sql
|
|
331
|
+
CREATE VIRTUAL TABLE playbook_fts USING fts5(rule, category, applicable_to);
|
|
332
|
+
CREATE VIRTUAL TABLE tools_fts USING fts5(tool_name, name, description, category);
|
|
333
|
+
CREATE VIRTUAL TABLE skills_fts USING fts5(id, name, description, category, tools, triggers, body);
|
|
334
|
+
CREATE VIRTUAL TABLE mcp_tools_fts USING fts5(id, name, description, category);
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
---
|
|
338
|
+
|
|
339
|
+
## Config
|
|
340
|
+
|
|
341
|
+
```typescript
|
|
342
|
+
import { loadConfig, loadEnv, getHiveDir } from "@johpaz/hive-sdk";
|
|
343
|
+
|
|
344
|
+
const config = await loadConfig();
|
|
345
|
+
const hiveDir = getHiveDir(); // ~/.hive o HIVE_DATA_DIR
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
---
|
|
349
|
+
|
|
350
|
+
*Documentación Hive SDK v0.0.16*
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
# API Reference — Workers y Eventos
|
|
2
|
+
|
|
3
|
+
## Índice
|
|
4
|
+
|
|
5
|
+
1. [Bun Workers](#bun-workers)
|
|
6
|
+
2. [createWorker](#createworker)
|
|
7
|
+
3. [WorkerPool](#workerpool)
|
|
8
|
+
4. [AgentBus](#agentbus)
|
|
9
|
+
5. [EventBus](#eventbus)
|
|
10
|
+
6. [Canvas Events](#canvas-events)
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Bun Workers
|
|
15
|
+
|
|
16
|
+
Hive SDK soporta **workers individuales con Bun Workers**. Cada worker corre en un thread aislado (`Bun.Worker` con `{ smol: true }`), con su propio system prompt y configuración.
|
|
17
|
+
|
|
18
|
+
### Casos de uso
|
|
19
|
+
|
|
20
|
+
- **Workers especializados**: Un worker para research, otro para coding, otro para review
|
|
21
|
+
- **Paralelismo**: Ejecutar múltiples tareas simultáneamente sin bloquear el hilo principal
|
|
22
|
+
- **Aislamiento**: Cada worker tiene su propio contexto y no interfere con otros
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## createWorker
|
|
27
|
+
|
|
28
|
+
Crea un worker individual con Bun Workers.
|
|
29
|
+
|
|
30
|
+
### Firma
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
import { createWorker } from "@johpaz/hive-sdk";
|
|
34
|
+
|
|
35
|
+
const worker = createWorker(config: WorkerConfig): WorkerInstance
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### WorkerConfig
|
|
39
|
+
|
|
40
|
+
```typescript
|
|
41
|
+
interface WorkerConfig {
|
|
42
|
+
name: string; // Identificador del worker
|
|
43
|
+
agentId?: string; // ID del agente en DB (default: name)
|
|
44
|
+
systemPrompt?: string; // System prompt personalizado
|
|
45
|
+
model?: string; // Modelo LLM
|
|
46
|
+
provider?: string; // Provider LLM
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### WorkerInstance
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
interface WorkerInstance {
|
|
54
|
+
readonly name: string;
|
|
55
|
+
readonly id: string;
|
|
56
|
+
|
|
57
|
+
// Ejecutar y esperar resultado
|
|
58
|
+
run(message: string, opts?: {
|
|
59
|
+
threadId?: string;
|
|
60
|
+
channel?: string;
|
|
61
|
+
}): Promise<string>;
|
|
62
|
+
|
|
63
|
+
// Streaming de resultados
|
|
64
|
+
runStream(message: string, opts?: {
|
|
65
|
+
threadId?: string;
|
|
66
|
+
channel?: string;
|
|
67
|
+
}): AsyncGenerator<WorkerChunk>;
|
|
68
|
+
|
|
69
|
+
// Terminar el worker
|
|
70
|
+
terminate(): void;
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Ejemplo básico
|
|
75
|
+
|
|
76
|
+
```typescript
|
|
77
|
+
import { createWorker } from "@johpaz/hive-sdk";
|
|
78
|
+
|
|
79
|
+
const researcher = createWorker({
|
|
80
|
+
name: "researcher",
|
|
81
|
+
systemPrompt: `
|
|
82
|
+
You are a research specialist.
|
|
83
|
+
Provide concise, factual summaries with citations.
|
|
84
|
+
Always verify facts before presenting them.
|
|
85
|
+
`,
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
const result = await researcher.run("Latest advances in quantum computing 2025");
|
|
89
|
+
console.log(result);
|
|
90
|
+
|
|
91
|
+
researcher.terminate();
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Streaming
|
|
95
|
+
|
|
96
|
+
```typescript
|
|
97
|
+
const stream = researcher.runStream("Explain quantum entanglement");
|
|
98
|
+
|
|
99
|
+
for await (const chunk of stream) {
|
|
100
|
+
if (chunk.type === "chunk") {
|
|
101
|
+
console.log("Chunk:", chunk.chunk);
|
|
102
|
+
} else if (chunk.type === "result") {
|
|
103
|
+
console.log("Final:", chunk.content);
|
|
104
|
+
} else if (chunk.type === "error") {
|
|
105
|
+
console.error("Error:", chunk.error);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## WorkerPool
|
|
113
|
+
|
|
114
|
+
Gestiona un pool de Bun Workers para ejecución paralela.
|
|
115
|
+
|
|
116
|
+
### Firma
|
|
117
|
+
|
|
118
|
+
```typescript
|
|
119
|
+
import { WorkerPool } from "@johpaz/hive-sdk";
|
|
120
|
+
|
|
121
|
+
const pool = new WorkerPool(config?: WorkerPoolConfig);
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### WorkerPoolConfig
|
|
125
|
+
|
|
126
|
+
```typescript
|
|
127
|
+
interface WorkerPoolConfig {
|
|
128
|
+
maxWorkers?: number; // Default: 4
|
|
129
|
+
taskTimeoutMs?: number; // Default: 120000
|
|
130
|
+
workerConfig?: WorkerConfig;
|
|
131
|
+
}
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### Métodos
|
|
135
|
+
|
|
136
|
+
```typescript
|
|
137
|
+
// Ejecutar una tarea
|
|
138
|
+
pool.execute(task: PoolTask): Promise<PoolTaskResult>
|
|
139
|
+
|
|
140
|
+
// Ejecutar múltiples tareas en paralelo
|
|
141
|
+
pool.executeBatch(tasks: PoolTask[]): Promise<PoolTaskResult[]>
|
|
142
|
+
|
|
143
|
+
// Ejecutar con límite de concurrencia
|
|
144
|
+
pool.executeWithConcurrency(tasks: PoolTask[], concurrency: number): Promise<PoolTaskResult[]>
|
|
145
|
+
|
|
146
|
+
// Estadísticas
|
|
147
|
+
pool.stats // { total, busy, idle }
|
|
148
|
+
|
|
149
|
+
// Cerrar todos los workers
|
|
150
|
+
pool.shutdown(): void
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Ejemplo: Batch processing
|
|
154
|
+
|
|
155
|
+
```typescript
|
|
156
|
+
import { WorkerPool } from "@johpaz/hive-sdk";
|
|
157
|
+
|
|
158
|
+
const pool = new WorkerPool({
|
|
159
|
+
maxWorkers: 4,
|
|
160
|
+
workerConfig: {
|
|
161
|
+
name: "analyzer",
|
|
162
|
+
systemPrompt: "You analyze text and extract key insights.",
|
|
163
|
+
},
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
const articles = [
|
|
167
|
+
{ id: "a1", message: "Summarize article about AI..." },
|
|
168
|
+
{ id: "a2", message: "Summarize article about climate..." },
|
|
169
|
+
{ id: "a3", message: "Summarize article about space..." },
|
|
170
|
+
];
|
|
171
|
+
|
|
172
|
+
const results = await pool.executeBatch(articles);
|
|
173
|
+
|
|
174
|
+
for (const result of results) {
|
|
175
|
+
console.log(`${result.taskId}: ${result.result} (${result.durationMs}ms)`);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
pool.shutdown();
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### Ejemplo: Concurrency limit
|
|
182
|
+
|
|
183
|
+
```typescript
|
|
184
|
+
// Procesar 100 tareas pero solo 5 a la vez
|
|
185
|
+
const tasks = Array.from({ length: 100 }, (_, i) => ({
|
|
186
|
+
id: `task-${i}`,
|
|
187
|
+
message: `Process item ${i}`,
|
|
188
|
+
}));
|
|
189
|
+
|
|
190
|
+
const results = await pool.executeWithConcurrency(tasks, 5);
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## CLI: hive add-worker
|
|
196
|
+
|
|
197
|
+
Genera un Bun Worker en tu proyecto:
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
cd my-project
|
|
201
|
+
hive add-worker researcher
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
Crea `src/workers/researcher.worker.ts`:
|
|
205
|
+
|
|
206
|
+
```typescript
|
|
207
|
+
import { createWorker } from "@johpaz/hive-sdk";
|
|
208
|
+
|
|
209
|
+
export const researcherWorker = createWorker({
|
|
210
|
+
name: "researcher",
|
|
211
|
+
systemPrompt: `You are the ResearcherWorker specialist...`,
|
|
212
|
+
});
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## AgentBus
|
|
218
|
+
|
|
219
|
+
Sistema de eventos singleton para comunicación entre agentes.
|
|
220
|
+
|
|
221
|
+
```typescript
|
|
222
|
+
import { agentBus, getUnreadMessagesForWorker } from "@johpaz/hive-sdk";
|
|
223
|
+
|
|
224
|
+
// Publicar evento
|
|
225
|
+
agentBus.publish("worker:task_started", { taskId: "task-1" }, "worker-1");
|
|
226
|
+
|
|
227
|
+
// Suscribirse
|
|
228
|
+
const unsub = agentBus.subscribe("worker:task_completed", (data) => {
|
|
229
|
+
console.log("Task completed:", data);
|
|
230
|
+
});
|
|
231
|
+
|
|
232
|
+
// Unsubscribe
|
|
233
|
+
unsub();
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### Métodos Helper
|
|
237
|
+
|
|
238
|
+
```typescript
|
|
239
|
+
import {
|
|
240
|
+
getUnreadMessagesForWorker,
|
|
241
|
+
getProjectMessageHistory,
|
|
242
|
+
} from "@johpaz/hive-sdk";
|
|
243
|
+
|
|
244
|
+
const messages = getUnreadMessagesForWorker("worker-1");
|
|
245
|
+
const history = getProjectMessageHistory("project-1");
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## EventBus
|
|
251
|
+
|
|
252
|
+
EventBus global singleton (eventos del sistema).
|
|
253
|
+
|
|
254
|
+
```typescript
|
|
255
|
+
import { eventBus } from "@johpaz/hive-sdk";
|
|
256
|
+
|
|
257
|
+
// Escuchar eventos
|
|
258
|
+
eventBus.on("agent:start", (data) => {
|
|
259
|
+
console.log("Agent started:", data);
|
|
260
|
+
});
|
|
261
|
+
|
|
262
|
+
// Emitir eventos
|
|
263
|
+
eventBus.emit("agent:complete", { agentId: "a1", result: "ok" });
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
---
|
|
267
|
+
|
|
268
|
+
## Canvas Events
|
|
269
|
+
|
|
270
|
+
Eventos de actualización visual del canvas.
|
|
271
|
+
|
|
272
|
+
```typescript
|
|
273
|
+
import { emitCanvas, subscribeCanvas, unsubscribeCanvas } from "@johpaz/hive-sdk";
|
|
274
|
+
|
|
275
|
+
// Suscribirse a eventos canvas
|
|
276
|
+
const handler = (data: any) => console.log("Canvas:", data);
|
|
277
|
+
subscribeCanvas(handler);
|
|
278
|
+
|
|
279
|
+
// Emitir evento
|
|
280
|
+
emitCanvas("canvas:node_update", {
|
|
281
|
+
nodeId: "agent-1",
|
|
282
|
+
changes: { status: "thinking" },
|
|
283
|
+
});
|
|
284
|
+
|
|
285
|
+
// Desuscribirse
|
|
286
|
+
unsubscribeCanvas(handler);
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
### CanvasManager
|
|
290
|
+
|
|
291
|
+
```typescript
|
|
292
|
+
import { CanvasManager } from "@johpaz/hive-sdk";
|
|
293
|
+
|
|
294
|
+
const canvas = new CanvasManager();
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
---
|
|
298
|
+
|
|
299
|
+
*Documentación Hive SDK v0.0.16*
|