@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,252 @@
|
|
|
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 (FTS5 tool/skill/playbook selection) |
|
|
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
|
+
import { getDb } from "@johpaz/hive-sdk";
|
|
118
|
+
|
|
119
|
+
const db = getDb();
|
|
120
|
+
const pad = new Scratchpad(db);
|
|
121
|
+
|
|
122
|
+
// Escribir nota
|
|
123
|
+
pad.write("thread-1", "mi-nota", "contenido");
|
|
124
|
+
|
|
125
|
+
// Leer nota
|
|
126
|
+
const value = pad.read("thread-1", "mi-nota");
|
|
127
|
+
|
|
128
|
+
// Listar notas de un hilo
|
|
129
|
+
const all = pad.list("thread-1");
|
|
130
|
+
|
|
131
|
+
// Eliminar nota
|
|
132
|
+
pad.delete("thread-1", "mi-nota");
|
|
133
|
+
|
|
134
|
+
// Limpiar todas las notas de un hilo
|
|
135
|
+
pad.clear("thread-1");
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## EthicsGuard
|
|
141
|
+
|
|
142
|
+
Guardián de reglas de calidad de respuesta desde la base de datos.
|
|
143
|
+
|
|
144
|
+
```typescript
|
|
145
|
+
import { EthicsGuard } from "@johpaz/hive-sdk";
|
|
146
|
+
import { getDb } from "@johpaz/hive-sdk";
|
|
147
|
+
|
|
148
|
+
const db = getDb();
|
|
149
|
+
const guard = new EthicsGuard(db);
|
|
150
|
+
|
|
151
|
+
// Obtener reglas
|
|
152
|
+
const rules = guard.getRules(); // Todas
|
|
153
|
+
const rulesForRole = guard.getRules("agent"); // Con FTS5
|
|
154
|
+
|
|
155
|
+
// Inyectar en system prompt
|
|
156
|
+
const prompt = guard.injectIntoPrompt(
|
|
157
|
+
"Eres un asistente.",
|
|
158
|
+
rules
|
|
159
|
+
);
|
|
160
|
+
|
|
161
|
+
// Verificar si hay reglas
|
|
162
|
+
if (guard.hasEthicsLayer()) {
|
|
163
|
+
console.log("Reglas de calidad activas");
|
|
164
|
+
}
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## ACE (Tracer, Reflector, Curator)
|
|
170
|
+
|
|
171
|
+
Sistema de Auto-Corrección por Experiencia.
|
|
172
|
+
|
|
173
|
+
### Tracer
|
|
174
|
+
|
|
175
|
+
```typescript
|
|
176
|
+
import { saveTrace, recordLLMUsage } from "@hive/core/ace";
|
|
177
|
+
|
|
178
|
+
// Guardar traza de ejecución
|
|
179
|
+
saveTrace({
|
|
180
|
+
agentId: "analyst",
|
|
181
|
+
model: "gpt-4o-mini",
|
|
182
|
+
messages: 5,
|
|
183
|
+
toolCalls: ["web_search", "read_file"],
|
|
184
|
+
durationMs: 1200,
|
|
185
|
+
tokensUsed: 450,
|
|
186
|
+
success: true,
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
// Registrar uso de LLM
|
|
190
|
+
recordLLMUsage({
|
|
191
|
+
model: "gpt-4o-mini",
|
|
192
|
+
inputTokens: 200,
|
|
193
|
+
outputTokens: 250,
|
|
194
|
+
durationMs: 800,
|
|
195
|
+
});
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### Reflector + Curator
|
|
199
|
+
|
|
200
|
+
```typescript
|
|
201
|
+
import { runReflector, runCurator } from "@hive/core/ace";
|
|
202
|
+
|
|
203
|
+
// Analizar trazas y generar insights
|
|
204
|
+
await runReflector();
|
|
205
|
+
|
|
206
|
+
// Curar insights en reglas del playbook
|
|
207
|
+
await runCurator();
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## MCP Internals
|
|
213
|
+
|
|
214
|
+
### Config
|
|
215
|
+
|
|
216
|
+
```typescript
|
|
217
|
+
import type { MCPConfig, MCPServerConfig } from "@johpaz/hive-sdk";
|
|
218
|
+
|
|
219
|
+
const config: MCPConfig = {
|
|
220
|
+
servers: {
|
|
221
|
+
"my-server": {
|
|
222
|
+
transport: "stdio", // "stdio" | "sse" | "websocket"
|
|
223
|
+
command: "npx",
|
|
224
|
+
args: ["-y", "@server/pkg"],
|
|
225
|
+
env: { KEY: "value" },
|
|
226
|
+
enabled: true,
|
|
227
|
+
},
|
|
228
|
+
},
|
|
229
|
+
};
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### Singleton
|
|
233
|
+
|
|
234
|
+
```typescript
|
|
235
|
+
import { setMCPManager, getMCPManager, hasMCPManager } from "@johpaz/hive-sdk";
|
|
236
|
+
|
|
237
|
+
setMCPManager(mcpManager);
|
|
238
|
+
const mcp = getMCPManager(); // MCPClientManager | undefined
|
|
239
|
+
const exists = hasMCPManager(); // boolean
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### Hot Reload
|
|
243
|
+
|
|
244
|
+
```typescript
|
|
245
|
+
import { startMCPHotReload, stopMCPHotReload } from "@johpaz/hive-sdk";
|
|
246
|
+
|
|
247
|
+
// Watch de configuración MCP
|
|
248
|
+
startMCPHotReload();
|
|
249
|
+
|
|
250
|
+
// Detener watch
|
|
251
|
+
stopMCPHotReload();
|
|
252
|
+
```
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
# API Reference — DAG Scheduler
|
|
2
|
+
|
|
3
|
+
## Índice
|
|
4
|
+
|
|
5
|
+
1. [Arquitectura](#arquitectura)
|
|
6
|
+
2. [TaskNode](#tasknode)
|
|
7
|
+
3. [TaskGraph](#taskgraph)
|
|
8
|
+
4. [DAGScheduler](#dagscheduler)
|
|
9
|
+
5. [Estrategias](#estrategias)
|
|
10
|
+
6. [Presets](#presets)
|
|
11
|
+
7. [EventBridge](#eventbridge)
|
|
12
|
+
8. [Errores Comunes](#errores-comunes)
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Arquitectura
|
|
17
|
+
|
|
18
|
+
El DAG Scheduler orquesta la ejecución de grafos acíclicos dirigidos (DAG) de tareas.
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
TaskNode → TaskGraph → DAGScheduler
|
|
22
|
+
│
|
|
23
|
+
┌──────────────┼──────────────┐
|
|
24
|
+
▼ ▼ ▼
|
|
25
|
+
Worker 1 Worker 2 Worker 3
|
|
26
|
+
(agente) (agente) (agente)
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## TaskNode
|
|
32
|
+
|
|
33
|
+
Representa una tarea individual en el grafo.
|
|
34
|
+
|
|
35
|
+
### TaskNodeConfig
|
|
36
|
+
|
|
37
|
+
```typescript
|
|
38
|
+
import { TaskNode } from "@johpaz/hive-sdk";
|
|
39
|
+
|
|
40
|
+
interface TaskNodeConfig {
|
|
41
|
+
id: string;
|
|
42
|
+
agentId: string;
|
|
43
|
+
name?: string;
|
|
44
|
+
taskDescription: string;
|
|
45
|
+
deps: string[];
|
|
46
|
+
priority?: number;
|
|
47
|
+
timeout?: number;
|
|
48
|
+
maxRetries?: number;
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Estados
|
|
53
|
+
|
|
54
|
+
```typescript
|
|
55
|
+
type NodeStatus = "PENDING" | "READY" | "RUNNING" | "COMPLETED" | "FAILED";
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Ejemplo
|
|
59
|
+
|
|
60
|
+
```typescript
|
|
61
|
+
const node = new TaskNode({
|
|
62
|
+
id: "fetch-data",
|
|
63
|
+
agentId: "fetcher",
|
|
64
|
+
taskDescription: "Obtener datos de API",
|
|
65
|
+
deps: [],
|
|
66
|
+
});
|
|
67
|
+
node.markRunning();
|
|
68
|
+
// ... ejecutar ...
|
|
69
|
+
node.markCompleted("datos obtenidos");
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## TaskGraph
|
|
75
|
+
|
|
76
|
+
Grafo acíclico dirigido de tareas.
|
|
77
|
+
|
|
78
|
+
```typescript
|
|
79
|
+
import { TaskGraph } from "@johpaz/hive-sdk";
|
|
80
|
+
|
|
81
|
+
const graph = new TaskGraph([
|
|
82
|
+
{ id: "a", agentId: "worker", taskDescription: "Tarea A", deps: [] },
|
|
83
|
+
{ id: "b", agentId: "worker", taskDescription: "Tarea B", deps: ["a"] },
|
|
84
|
+
{ id: "c", agentId: "worker", taskDescription: "Tarea C", deps: ["a"] },
|
|
85
|
+
{ id: "d", agentId: "worker", taskDescription: "Tarea D", deps: ["b", "c"] },
|
|
86
|
+
]);
|
|
87
|
+
|
|
88
|
+
// Nodos listos para ejecutar (sin deps pendientes)
|
|
89
|
+
const ready = graph.getReadyNodes();
|
|
90
|
+
|
|
91
|
+
// IDs de nodos completados
|
|
92
|
+
const completed = graph.getCompletedIds();
|
|
93
|
+
|
|
94
|
+
// Nodos recién listos tras completar uno
|
|
95
|
+
const newlyReady = graph.getNewlyReadyIds(new Set(["a"]));
|
|
96
|
+
|
|
97
|
+
// Resultados de dependencias
|
|
98
|
+
const depResults = graph.getDepResults("d");
|
|
99
|
+
|
|
100
|
+
// Progreso
|
|
101
|
+
const progress = graph.getProgress();
|
|
102
|
+
// { total: 4, completed: 1, running: 0, failed: 0, pending: 3, percentComplete: 25 }
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## DAGScheduler
|
|
108
|
+
|
|
109
|
+
Orquestador principal de la ejecución.
|
|
110
|
+
|
|
111
|
+
```typescript
|
|
112
|
+
import { DAGScheduler, TaskGraph } from "@johpaz/hive-sdk";
|
|
113
|
+
|
|
114
|
+
const graph = new TaskGraph([
|
|
115
|
+
{ id: "fetch", agentId: "fetcher", taskDescription: "Fetch data", deps: [] },
|
|
116
|
+
{ id: "process", agentId: "processor", taskDescription: "Process", deps: ["fetch"] },
|
|
117
|
+
{ id: "save", agentId: "saver", taskDescription: "Save", deps: ["process"] },
|
|
118
|
+
]);
|
|
119
|
+
|
|
120
|
+
const scheduler = new DAGScheduler({
|
|
121
|
+
maxConcurrentWorkers: 2,
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
const result = await scheduler.execute(graph);
|
|
125
|
+
|
|
126
|
+
console.log(`Success: ${result.success}`);
|
|
127
|
+
console.log(`Duration: ${result.totalDurationMs}ms`);
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### DAGResult
|
|
131
|
+
|
|
132
|
+
```typescript
|
|
133
|
+
interface DAGResult {
|
|
134
|
+
swarmId: string;
|
|
135
|
+
totalDurationMs: number;
|
|
136
|
+
completed: NodeSummary[];
|
|
137
|
+
failed: NodeSummary[];
|
|
138
|
+
success: boolean;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
interface NodeSummary {
|
|
142
|
+
id: string;
|
|
143
|
+
name: string;
|
|
144
|
+
status: "COMPLETED" | "FAILED";
|
|
145
|
+
durationMs: number;
|
|
146
|
+
result?: string;
|
|
147
|
+
error?: string;
|
|
148
|
+
retries: number;
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Control
|
|
153
|
+
|
|
154
|
+
```typescript
|
|
155
|
+
scheduler.abort(); // Abortar ejecución en curso
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## Estrategias
|
|
161
|
+
|
|
162
|
+
### ParallelStrategy (FIFO)
|
|
163
|
+
|
|
164
|
+
```typescript
|
|
165
|
+
import { ParallelStrategy } from "@johpaz/hive-sdk";
|
|
166
|
+
|
|
167
|
+
const strategy = new ParallelStrategy(); // Orden de llegada
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### PriorityStrategy
|
|
171
|
+
|
|
172
|
+
```typescript
|
|
173
|
+
import { PriorityStrategy } from "@johpaz/hive-sdk";
|
|
174
|
+
|
|
175
|
+
const strategy = new PriorityStrategy(); // Por prioridad + path crítico
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### Custom Strategy
|
|
179
|
+
|
|
180
|
+
```typescript
|
|
181
|
+
import type { ExecutionStrategy } from "@johpaz/hive-sdk";
|
|
182
|
+
|
|
183
|
+
const myStrategy: ExecutionStrategy = {
|
|
184
|
+
initialize(nodes) { /* precomputar */ },
|
|
185
|
+
pick(nodes) { return nodes[0]; }, // FIFO
|
|
186
|
+
};
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## Presets
|
|
192
|
+
|
|
193
|
+
Grafos predefinidos.
|
|
194
|
+
|
|
195
|
+
### ResearchPreset
|
|
196
|
+
|
|
197
|
+
```typescript
|
|
198
|
+
import { createResearchGraph } from "@hive/core/swarm/presets";
|
|
199
|
+
|
|
200
|
+
const graph = createResearchGraph({
|
|
201
|
+
agents: { researcher: "researcher-id", writer: "writer-id" },
|
|
202
|
+
query: "Análisis de mercado",
|
|
203
|
+
});
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### HiveLearnPreset
|
|
207
|
+
|
|
208
|
+
```typescript
|
|
209
|
+
import { createHiveLearnGraph } from "@hive/core/swarm/presets";
|
|
210
|
+
|
|
211
|
+
const graph = createHiveLearnGraph({
|
|
212
|
+
agents: { teacher: "teacher-id", student: "student-id" },
|
|
213
|
+
topic: "Machine Learning",
|
|
214
|
+
});
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## EventBridge
|
|
220
|
+
|
|
221
|
+
Puente de eventos entre el scheduler y el resto del sistema.
|
|
222
|
+
|
|
223
|
+
```typescript
|
|
224
|
+
import { EventBridge } from "@johpaz/hive-sdk";
|
|
225
|
+
|
|
226
|
+
const bridge = new EventBridge("swarm-123", "project-1", "coordinator-1");
|
|
227
|
+
|
|
228
|
+
bridge.onTaskCompleted = (node, progress) => {
|
|
229
|
+
console.log(`${node.name}: ${progress.percentComplete}%`);
|
|
230
|
+
};
|
|
231
|
+
|
|
232
|
+
bridge.onSwarmCompleted = (result) => {
|
|
233
|
+
console.log(`Swarm completed. Success: ${result.success}`);
|
|
234
|
+
};
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## IAgentExecutor
|
|
240
|
+
|
|
241
|
+
```typescript
|
|
242
|
+
import type { IAgentExecutor } from "@johpaz/hive-sdk";
|
|
243
|
+
|
|
244
|
+
const myExecutor: IAgentExecutor = {
|
|
245
|
+
async execute(node, depResults, threadId) {
|
|
246
|
+
const context = Object.values(depResults).join("\n");
|
|
247
|
+
return await myCustomFunction(node.taskDescription, context);
|
|
248
|
+
},
|
|
249
|
+
};
|
|
250
|
+
|
|
251
|
+
const result = await scheduler.execute(graph, { executor: myExecutor });
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
## Errores Comunes
|
|
257
|
+
|
|
258
|
+
### Cyclic dependency detected
|
|
259
|
+
|
|
260
|
+
```typescript
|
|
261
|
+
// ❌ Ciclo: a→b→a
|
|
262
|
+
[{ id: "a", deps: ["b"] }, { id: "b", deps: ["a"] }];
|
|
263
|
+
|
|
264
|
+
// ✅ Sin ciclo
|
|
265
|
+
[{ id: "a", deps: [] }, { id: "b", deps: ["a"] }];
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
### Task timeout
|
|
269
|
+
|
|
270
|
+
```typescript
|
|
271
|
+
// Configurar timeout razonable
|
|
272
|
+
const config = { id: "task", agentId: "w", taskDescription: "...", deps: [], timeout: 30000 };
|
|
273
|
+
```
|