@johpaz/hive-sdk 0.0.15 → 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 +27 -1
- package/README.md +179 -57
- package/docs/API-AGENTS.md +9 -9
- package/docs/API-CONTEXT-COMPILER.md +13 -13
- package/docs/API-DAG-SCHEDULER.md +8 -8
- package/docs/API-TOOLS-SKILLS-CHANNELS.md +150 -93
- package/docs/API-WORKERS-EVENTS.md +206 -59
- package/docs/INDEX.md +99 -50
- package/docs/README.md +117 -24
- package/docs/TEMPLATE-HIVE-APP.md +360 -0
- package/package.json +13 -6
- package/packages/cli/bin/hive +2 -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/index.ts +21 -5
- 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/src/auth/auth.ts +108 -0
- package/packages/core/src/auth/index.ts +1 -0
- package/packages/core/src/canvas/canvas.test.ts +32 -0
- package/packages/core/src/canvas/emitter.ts +1 -1
- package/packages/core/src/canvas/index.ts +3 -6
- 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/events/agent-bus.ts +460 -0
- package/packages/core/src/events/event-bus.ts +169 -0
- package/packages/core/src/gateway/channel-notify.ts +32 -7
- package/packages/core/src/gateway/gateway.test.ts +38 -0
- package/packages/core/src/gateway/index.ts +2 -1
- package/packages/core/src/gateway/server.ts +139 -0
- package/packages/core/src/heartbeat/index.ts +157 -0
- package/packages/core/src/index.ts +44 -0
- package/packages/core/src/multimodal/index.ts +2 -2
- 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/google-chat.ts +269 -0
- package/packages/core/src/security/index.ts +192 -4
- package/packages/core/src/security/rate-limit.ts +270 -0
- package/packages/core/src/security/signal.ts +321 -0
- package/packages/core/src/storage/crypto.ts +198 -66
- package/packages/core/src/storage/storage.test.ts +37 -0
- package/packages/core/src/swarm/swarm.test.ts +24 -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/voice/index.ts +5 -18
- 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 +2 -2
- package/tsconfig.json +2 -1
- package/.github/CODEOWNERS +0 -9
- package/.github/workflows/publish.yml +0 -89
- package/.github/workflows/version-bump.yml +0 -102
- package/bun.lock +0 -543
- package/bunfig.toml +0 -7
- package/packages/core/src/agent/providers.ts +0 -1
- package/packages/core/src/gateway/channel-notify.test.ts +0 -14
|
@@ -2,49 +2,214 @@
|
|
|
2
2
|
|
|
3
3
|
## Índice
|
|
4
4
|
|
|
5
|
-
1. [Workers](#workers)
|
|
6
|
-
2. [
|
|
7
|
-
3. [
|
|
8
|
-
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)
|
|
9
11
|
|
|
10
12
|
---
|
|
11
13
|
|
|
12
|
-
## Workers
|
|
14
|
+
## Bun Workers
|
|
13
15
|
|
|
14
|
-
|
|
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.
|
|
15
17
|
|
|
16
|
-
###
|
|
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
|
|
17
75
|
|
|
18
76
|
```typescript
|
|
19
|
-
import {
|
|
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);
|
|
20
90
|
|
|
21
|
-
|
|
22
|
-
const result = await executor.execute(node, depResults, threadId);
|
|
91
|
+
researcher.terminate();
|
|
23
92
|
```
|
|
24
93
|
|
|
25
|
-
###
|
|
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
|
|
26
113
|
|
|
27
|
-
|
|
114
|
+
Gestiona un pool de Bun Workers para ejecución paralela.
|
|
115
|
+
|
|
116
|
+
### Firma
|
|
28
117
|
|
|
29
118
|
```typescript
|
|
30
|
-
import {
|
|
119
|
+
import { WorkerPool } from "@johpaz/hive-sdk";
|
|
120
|
+
|
|
121
|
+
const pool = new WorkerPool(config?: WorkerPoolConfig);
|
|
122
|
+
```
|
|
31
123
|
|
|
32
|
-
|
|
33
|
-
|
|
124
|
+
### WorkerPoolConfig
|
|
125
|
+
|
|
126
|
+
```typescript
|
|
127
|
+
interface WorkerPoolConfig {
|
|
128
|
+
maxWorkers?: number; // Default: 4
|
|
129
|
+
taskTimeoutMs?: number; // Default: 120000
|
|
130
|
+
workerConfig?: WorkerConfig;
|
|
131
|
+
}
|
|
34
132
|
```
|
|
35
133
|
|
|
36
|
-
###
|
|
134
|
+
### Métodos
|
|
37
135
|
|
|
38
136
|
```typescript
|
|
39
|
-
|
|
137
|
+
// Ejecutar una tarea
|
|
138
|
+
pool.execute(task: PoolTask): Promise<PoolTaskResult>
|
|
40
139
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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.",
|
|
46
163
|
},
|
|
47
|
-
};
|
|
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
|
+
});
|
|
48
213
|
```
|
|
49
214
|
|
|
50
215
|
---
|
|
@@ -54,7 +219,7 @@ const myWorker: IAgentExecutor = {
|
|
|
54
219
|
Sistema de eventos singleton para comunicación entre agentes.
|
|
55
220
|
|
|
56
221
|
```typescript
|
|
57
|
-
import { agentBus, getUnreadMessagesForWorker } from "@hive
|
|
222
|
+
import { agentBus, getUnreadMessagesForWorker } from "@johpaz/hive-sdk";
|
|
58
223
|
|
|
59
224
|
// Publicar evento
|
|
60
225
|
agentBus.publish("worker:task_started", { taskId: "task-1" }, "worker-1");
|
|
@@ -71,15 +236,12 @@ unsub();
|
|
|
71
236
|
### Métodos Helper
|
|
72
237
|
|
|
73
238
|
```typescript
|
|
74
|
-
import {
|
|
75
|
-
getUnreadMessagesForWorker,
|
|
76
|
-
getProjectMessageHistory
|
|
77
|
-
} from "@hive
|
|
239
|
+
import {
|
|
240
|
+
getUnreadMessagesForWorker,
|
|
241
|
+
getProjectMessageHistory,
|
|
242
|
+
} from "@johpaz/hive-sdk";
|
|
78
243
|
|
|
79
|
-
// Mensajes no leídos para un worker
|
|
80
244
|
const messages = getUnreadMessagesForWorker("worker-1");
|
|
81
|
-
|
|
82
|
-
// Historial de un proyecto
|
|
83
245
|
const history = getProjectMessageHistory("project-1");
|
|
84
246
|
```
|
|
85
247
|
|
|
@@ -90,7 +252,7 @@ const history = getProjectMessageHistory("project-1");
|
|
|
90
252
|
EventBus global singleton (eventos del sistema).
|
|
91
253
|
|
|
92
254
|
```typescript
|
|
93
|
-
import { eventBus } from "@hive
|
|
255
|
+
import { eventBus } from "@johpaz/hive-sdk";
|
|
94
256
|
|
|
95
257
|
// Escuchar eventos
|
|
96
258
|
eventBus.on("agent:start", (data) => {
|
|
@@ -108,45 +270,30 @@ eventBus.emit("agent:complete", { agentId: "a1", result: "ok" });
|
|
|
108
270
|
Eventos de actualización visual del canvas.
|
|
109
271
|
|
|
110
272
|
```typescript
|
|
111
|
-
import { emitCanvas } from "@hive
|
|
273
|
+
import { emitCanvas, subscribeCanvas, unsubscribeCanvas } from "@johpaz/hive-sdk";
|
|
112
274
|
|
|
113
|
-
//
|
|
275
|
+
// Suscribirse a eventos canvas
|
|
276
|
+
const handler = (data: any) => console.log("Canvas:", data);
|
|
277
|
+
subscribeCanvas(handler);
|
|
278
|
+
|
|
279
|
+
// Emitir evento
|
|
114
280
|
emitCanvas("canvas:node_update", {
|
|
115
281
|
nodeId: "agent-1",
|
|
116
282
|
changes: { status: "thinking" },
|
|
117
283
|
});
|
|
118
284
|
|
|
119
|
-
//
|
|
120
|
-
|
|
121
|
-
emitCanvas("canvas:graph_update", { graphId, changes });
|
|
122
|
-
emitCanvas("canvas:worker_update", { workerId, changes });
|
|
285
|
+
// Desuscribirse
|
|
286
|
+
unsubscribeCanvas(handler);
|
|
123
287
|
```
|
|
124
288
|
|
|
125
289
|
### CanvasManager
|
|
126
290
|
|
|
127
291
|
```typescript
|
|
128
|
-
import { CanvasManager
|
|
129
|
-
|
|
130
|
-
// Singleton
|
|
131
|
-
const canvas = canvasManager;
|
|
292
|
+
import { CanvasManager } from "@johpaz/hive-sdk";
|
|
132
293
|
|
|
133
|
-
|
|
134
|
-
canvas.subscribe("agent-1", (update) => {
|
|
135
|
-
console.log("Node update:", update);
|
|
136
|
-
});
|
|
294
|
+
const canvas = new CanvasManager();
|
|
137
295
|
```
|
|
138
296
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
```typescript
|
|
142
|
-
// Cliente se conecta
|
|
143
|
-
const ws = new WebSocket("ws://localhost:3000/ws/canvas");
|
|
144
|
-
|
|
145
|
-
ws.onmessage = (event) => {
|
|
146
|
-
const update = JSON.parse(event.data);
|
|
147
|
-
// { type: "node_update", nodeId: "...", changes: {...} }
|
|
148
|
-
};
|
|
297
|
+
---
|
|
149
298
|
|
|
150
|
-
|
|
151
|
-
ws.send(JSON.stringify({ type: "user_message", message: "ejecutar tarea" }));
|
|
152
|
-
```
|
|
299
|
+
*Documentación Hive SDK v0.0.16*
|
package/docs/INDEX.md
CHANGED
|
@@ -4,21 +4,33 @@
|
|
|
4
4
|
|
|
5
5
|
| Documento | Descripción |
|
|
6
6
|
|-----------|-------------|
|
|
7
|
-
| [README.md](../README.md) | Introducción
|
|
8
|
-
| [API-AGENTS.md](./API-AGENTS.md) | AgentLoop, Tool/Skill Selector, LLM Providers |
|
|
7
|
+
| [README.md](../README.md) | Introducción, instalación, CLI, guía rápida |
|
|
8
|
+
| [API-AGENTS.md](./API-AGENTS.md) | createAgent, AgentLoop, Tool/Skill Selector, LLM Providers |
|
|
9
9
|
| [API-DAG-SCHEDULER.md](./API-DAG-SCHEDULER.md) | DAGScheduler, TaskGraph, Estrategias, Presets |
|
|
10
|
-
| [API-WORKERS-EVENTS.md](./API-WORKERS-EVENTS.md) | Workers, AgentBus,
|
|
11
|
-
| [API-TOOLS-SKILLS-CHANNELS.md](./API-TOOLS-SKILLS-CHANNELS.md) | Tools, Skills,
|
|
12
|
-
| [API-CONTEXT-COMPILER.md](./API-CONTEXT-COMPILER.md) | Context Compiler,
|
|
10
|
+
| [API-WORKERS-EVENTS.md](./API-WORKERS-EVENTS.md) | **Bun Workers**, createWorker, WorkerPool, AgentBus, EventBus, Canvas |
|
|
11
|
+
| [API-TOOLS-SKILLS-CHANNELS.md](./API-TOOLS-SKILLS-CHANNELS.md) | Tools, Skills, MCP, Gateway, Channels, Tool Runtime, Storage |
|
|
12
|
+
| [API-CONTEXT-COMPILER.md](./API-CONTEXT-COMPILER.md) | Context Compiler, Message History, Scratchpad, EthicsGuard, ACE |
|
|
13
|
+
| [TEMPLATE-HIVE-APP.md](./TEMPLATE-HIVE-APP.md) | **Template hive-app** — estructura, opciones, personalización |
|
|
14
|
+
| [HIVE-HARNESS.md](../docs/HIVE-HARNESS.md) | Posicionamiento: Hive como Agent Harness vertical |
|
|
13
15
|
|
|
14
16
|
---
|
|
15
17
|
|
|
16
18
|
## Guía de Inicio Rápido
|
|
17
19
|
|
|
18
|
-
### 1. Crear
|
|
20
|
+
### 1. Crear una app harness completa
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
hive create-app my-hive
|
|
24
|
+
cd my-hive
|
|
25
|
+
bun install
|
|
26
|
+
cp .env.example .env
|
|
27
|
+
bun run dev
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### 2. Crear Agente
|
|
19
31
|
|
|
20
32
|
```typescript
|
|
21
|
-
import { createAgent, defineTool } from "@hive
|
|
33
|
+
import { createAgent, defineTool } from "@johpaz/hive-sdk";
|
|
22
34
|
|
|
23
35
|
const tool = defineTool({
|
|
24
36
|
name: "saludar",
|
|
@@ -36,49 +48,85 @@ const agent = await createAgent({
|
|
|
36
48
|
const respuesta = await agent.run("Saluda a Juan");
|
|
37
49
|
```
|
|
38
50
|
|
|
39
|
-
###
|
|
51
|
+
### 3. Crear un Bun Worker
|
|
52
|
+
|
|
53
|
+
```typescript
|
|
54
|
+
import { createWorker } from "@johpaz/hive-sdk";
|
|
55
|
+
|
|
56
|
+
const worker = createWorker({
|
|
57
|
+
name: "researcher",
|
|
58
|
+
systemPrompt: "You are a research specialist...",
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
const result = await worker.run("Research quantum computing");
|
|
62
|
+
worker.terminate();
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### 4. Ejecutar un Swarm (DAG)
|
|
40
66
|
|
|
41
67
|
```typescript
|
|
42
|
-
import { DAGScheduler, TaskGraph } from "@hive
|
|
68
|
+
import { DAGScheduler, TaskGraph } from "@johpaz/hive-sdk";
|
|
43
69
|
|
|
44
70
|
const graph = new TaskGraph([
|
|
45
|
-
{ id: "task1", agentId: "worker", taskDescription: "Tarea 1", deps: [] },
|
|
46
|
-
{ id: "task2", agentId: "worker", taskDescription: "Tarea 2", deps: ["task1"] },
|
|
71
|
+
{ id: "task1", agentId: "worker", name: "T1", taskDescription: "Tarea 1", deps: [] },
|
|
72
|
+
{ id: "task2", agentId: "worker", name: "T2", taskDescription: "Tarea 2", deps: ["task1"] },
|
|
47
73
|
]);
|
|
48
74
|
|
|
49
75
|
const result = await new DAGScheduler().execute(graph);
|
|
50
76
|
```
|
|
51
77
|
|
|
78
|
+
### 5. Gateway + Canales
|
|
79
|
+
|
|
80
|
+
```typescript
|
|
81
|
+
import { startGateway, ChannelManager, TelegramChannel } from "@johpaz/hive-sdk";
|
|
82
|
+
|
|
83
|
+
const server = await startGateway({ host: "127.0.0.1", port: 18790 });
|
|
84
|
+
|
|
85
|
+
const channels = new ChannelManager(config);
|
|
86
|
+
// channels.register("telegram", new TelegramChannel({ botToken: "..." }));
|
|
87
|
+
```
|
|
88
|
+
|
|
52
89
|
---
|
|
53
90
|
|
|
54
91
|
## Estructura de Paquetes
|
|
55
92
|
|
|
56
93
|
```
|
|
57
94
|
packages/
|
|
58
|
-
├── core/ # @hive
|
|
95
|
+
├── core/ # @johpaz/hive-sdk
|
|
59
96
|
│ └── src/
|
|
60
|
-
│ ├──
|
|
97
|
+
│ ├── api/ # createAgent(), Agent interface
|
|
98
|
+
│ ├── agent/ # AgentLoop, ContextCompiler, ConversationStore
|
|
61
99
|
│ │ ├── providers/ # LLM providers (OpenAI, Anthropic, Gemini, Ollama)
|
|
62
|
-
│ │ └── selectors/ # FTS5 ToolSelector, SkillSelector
|
|
63
|
-
│ ├── tools/ #
|
|
100
|
+
│ │ └── selectors/ # FTS5 ToolSelector, SkillSelector, PlaybookSelector
|
|
101
|
+
│ ├── tools/ # 70+ built-in tools + ToolRegistry + ToolExecutor
|
|
64
102
|
│ ├── skills/ # SkillLoader, defineSkill()
|
|
65
103
|
│ ├── swarm/ # DAGScheduler, TaskGraph, WorkerPool
|
|
66
|
-
│
|
|
67
|
-
│
|
|
68
|
-
│ ├──
|
|
104
|
+
│ ├── workers/ # Bun Workers: createWorker, WorkerPool, agent.worker.ts
|
|
105
|
+
│ ├── gateway/ # HTTP/WebSocket server (Bun.serve)
|
|
106
|
+
│ ├── channels/ # Telegram, Discord, WhatsApp, Slack, Webchat
|
|
107
|
+
│ ├── mcp/ # MCPClientManager + transports (SSE, WS, STDIO)
|
|
69
108
|
│ ├── storage/ # SQLite (bun:sqlite) + FTS5
|
|
70
|
-
│ ├──
|
|
71
|
-
│ ├──
|
|
72
|
-
│ ├──
|
|
109
|
+
│ ├── canvas/ # CanvasManager + A2UI emitter
|
|
110
|
+
│ ├── scheduler/ # CronScheduler + DAG execution
|
|
111
|
+
│ ├── tool-runtime/ # Bun Worker pool para ejecución paralela de tools
|
|
73
112
|
│ ├── ethics/ # EthicsGuard
|
|
74
|
-
│ ├──
|
|
75
|
-
│ ├──
|
|
76
|
-
│ ├──
|
|
77
|
-
│ └── index.ts # Public API
|
|
113
|
+
│ ├── memory/ # Scratchpad
|
|
114
|
+
│ ├── config/ # loadConfig, loadEnv, getHiveDir
|
|
115
|
+
│ ├── utils/ # logger, toon, crypto, retry
|
|
116
|
+
│ └── index.ts # Public API barrel
|
|
78
117
|
│
|
|
79
|
-
└── cli/ #
|
|
118
|
+
└── cli/ # Hive CLI
|
|
80
119
|
└── src/
|
|
81
|
-
|
|
120
|
+
├── index.ts # Entry: hive <command>
|
|
121
|
+
└── commands/
|
|
122
|
+
├── init.ts
|
|
123
|
+
├── create-app.ts # Generar app harness completa
|
|
124
|
+
├── add-tool.ts # Generar boilerplate de tool
|
|
125
|
+
├── add-skill.ts # Generar boilerplate de skill
|
|
126
|
+
├── add-worker.ts # Generar Bun Worker
|
|
127
|
+
├── run.ts
|
|
128
|
+
├── test.ts
|
|
129
|
+
└── trace.ts
|
|
82
130
|
```
|
|
83
131
|
|
|
84
132
|
---
|
|
@@ -86,32 +134,31 @@ packages/
|
|
|
86
134
|
## Conceptos Clave
|
|
87
135
|
|
|
88
136
|
### Agente
|
|
89
|
-
Unidad de ejecución con
|
|
90
|
-
- Configuración (provider, model, system prompt)
|
|
91
|
-
- Contexto (historial, tools, skills)
|
|
92
|
-
- Ciclo de ejecución (prompt → LLM → tools → response)
|
|
137
|
+
Unidad de ejecución con configuración, contexto y ciclo de ejecución.
|
|
93
138
|
|
|
94
139
|
### Tool
|
|
95
|
-
Función
|
|
96
|
-
- Definida con `defineTool()`
|
|
97
|
-
- Seleccionada dinámicamente via FTS5
|
|
98
|
-
- Ejecutada por el worker
|
|
140
|
+
Función invocable por el agente. Definida con `defineTool()`, seleccionada vía FTS5.
|
|
99
141
|
|
|
100
142
|
### Skill
|
|
101
|
-
Composición de tools con triggers semánticos
|
|
102
|
-
|
|
103
|
-
|
|
143
|
+
Composición de tools con triggers semánticos. Definida con `defineSkill()`.
|
|
144
|
+
|
|
145
|
+
### Bun Worker
|
|
146
|
+
Thread aislado que ejecuta un agente con system prompt propio. Creado con `createWorker()`.
|
|
147
|
+
|
|
148
|
+
### WorkerPool
|
|
149
|
+
Gestiona múltiples Bun Workers para ejecución paralela de tareas.
|
|
104
150
|
|
|
105
151
|
### Swarm (DAG)
|
|
106
|
-
Ejecución paralela de múltiples agentes
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
152
|
+
Ejecución paralela de múltiples agentes con dependencias. Topological sort automático.
|
|
153
|
+
|
|
154
|
+
### Gateway
|
|
155
|
+
Servidor HTTP/WebSocket que expone el agente como API.
|
|
156
|
+
|
|
157
|
+
### Channel
|
|
158
|
+
Integración con plataformas de mensajería (Telegram, Discord, WhatsApp, Slack, Webchat).
|
|
110
159
|
|
|
111
160
|
### MCP
|
|
112
|
-
Model Context Protocol
|
|
113
|
-
- Servidores MCP como herramientas externas
|
|
114
|
-
- Transports: STDIO, SSE, WebSocket
|
|
161
|
+
Model Context Protocol — herramientas externas via STDIO/SSE/WebSocket.
|
|
115
162
|
|
|
116
163
|
---
|
|
117
164
|
|
|
@@ -119,9 +166,11 @@ Model Context Protocol:
|
|
|
119
166
|
|
|
120
167
|
```bash
|
|
121
168
|
HIVE_DATA_DIR=./data # Directorio de datos
|
|
169
|
+
HIVE_HOST=127.0.0.1 # Gateway host
|
|
170
|
+
HIVE_PORT=18790 # Gateway port
|
|
122
171
|
OPENAI_API_KEY=sk-... # OpenAI
|
|
123
172
|
ANTHROPIC_API_KEY=sk-ant-... # Anthropic
|
|
124
|
-
LOG_LEVEL=info
|
|
173
|
+
LOG_LEVEL=info # debug | info | warn | error
|
|
125
174
|
```
|
|
126
175
|
|
|
127
176
|
---
|
|
@@ -129,13 +178,13 @@ LOG_LEVEL=info # debug | info | warn | error
|
|
|
129
178
|
## Tests
|
|
130
179
|
|
|
131
180
|
```bash
|
|
132
|
-
# Tests unitarios
|
|
133
|
-
bun test
|
|
181
|
+
# Tests unitarios (paralelo)
|
|
182
|
+
bun test
|
|
134
183
|
|
|
135
184
|
# Tests con timeout extendido
|
|
136
|
-
bun test --timeout 60000
|
|
185
|
+
bun test --timeout 60000
|
|
137
186
|
```
|
|
138
187
|
|
|
139
188
|
---
|
|
140
189
|
|
|
141
|
-
*Documentación Hive SDK
|
|
190
|
+
*Documentación Hive SDK v0.0.16*
|