@johpaz/hive-sdk 0.1.4 → 0.1.6
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 +129 -0
- package/README.md +78 -23
- package/bun.lock +55 -29
- package/bunfig.toml +4 -2
- package/docs/API-AGENTS.md +78 -27
- package/docs/API-CONTEXT-COMPILER.md +31 -34
- package/docs/API-TOOLS-SKILLS-CHANNELS.md +58 -22
- package/docs/HIVE-HARNESS.md +1 -1
- package/docs/INDEX.md +4 -4
- package/docs/TEMPLATE-HIVE-APP.md +10 -10
- package/package.json +17 -12
- package/packages/cli/package.json +2 -2
- package/packages/cli/src/commands/create-app.test.ts +36 -7
- package/packages/cli/src/commands/init.ts +3 -3
- package/packages/cli/src/commands/run.ts +1 -1
- package/packages/cli/src/commands/test.ts +37 -25
- package/packages/cli/src/commands/trace.ts +30 -28
- package/packages/cli/templates/hive-app/.env.example +10 -2
- package/packages/cli/templates/hive-app/README.md +103 -0
- package/packages/cli/templates/hive-app/hive.config.ts +9 -3
- package/packages/cli/templates/hive-app/src/agents/coordinator.ts +8 -1
- package/packages/cli/templates/hive-app/src/main.ts +12 -19
- package/packages/core/package.json +13 -12
- package/packages/core/src/agent/acceptance-checks.ts +172 -0
- package/packages/core/src/agent/agent-catalog.ts +348 -0
- package/packages/core/src/agent/agent-loop.ts +1373 -0
- package/packages/core/src/agent/capability-search.ts +186 -0
- package/packages/core/src/agent/catalog-selector.ts +103 -0
- package/packages/core/src/agent/{Compaction.ts → compaction.ts} +86 -63
- package/packages/core/src/agent/context-compiler.ts +689 -0
- package/packages/core/src/agent/conversation-store.ts +381 -0
- package/packages/core/src/agent/curator.ts +276 -0
- package/packages/core/src/agent/delegation-runtime.ts +241 -0
- package/packages/core/src/agent/goal-runner.ts +323 -0
- package/packages/core/src/agent/index.ts +17 -12
- package/packages/core/src/agent/llm-client.ts +266 -0
- package/packages/core/src/agent/llm-providers/anthropic.ts +264 -0
- package/packages/core/src/agent/llm-providers/deepseek.ts +8 -0
- package/packages/core/src/agent/{providers → llm-providers}/gemini.ts +98 -60
- package/packages/core/src/agent/llm-providers/groq.ts +5 -0
- package/packages/core/src/agent/llm-providers/hiveagents.ts +253 -0
- package/packages/core/src/agent/{providers → llm-providers}/interface.ts +73 -13
- package/packages/core/src/agent/llm-providers/kimi.ts +8 -0
- package/packages/core/src/agent/llm-providers/minimax.ts +13 -0
- package/packages/core/src/agent/llm-providers/mistral.ts +5 -0
- package/packages/core/src/agent/llm-providers/modelscope.ts +5 -0
- package/packages/core/src/agent/llm-providers/nvidia.ts +5 -0
- package/packages/core/src/agent/{providers → llm-providers}/ollama.ts +31 -5
- package/packages/core/src/agent/llm-providers/openai-compat-base.ts +418 -0
- package/packages/core/src/agent/llm-providers/openai.ts +5 -0
- package/packages/core/src/agent/llm-providers/opencode-go.ts +9 -0
- package/packages/core/src/agent/llm-providers/openrouter.ts +5 -0
- package/packages/core/src/agent/llm-providers/qwen.ts +5 -0
- package/packages/core/src/agent/llm-providers/z-ai.ts +5 -0
- package/packages/core/src/agent/minimal-loadout.ts +47 -0
- package/packages/core/src/agent/playbook-selector.ts +119 -0
- package/packages/core/src/agent/{PromptBuilder.ts → prompt-builder.ts} +21 -22
- package/packages/core/src/{harness → agent}/proof-packet.ts +16 -21
- package/packages/core/src/agent/providers/index.ts +35 -16
- package/packages/core/src/agent/reflector.ts +320 -0
- package/packages/core/src/agent/routing-intent.ts +22 -0
- package/packages/core/src/{harness → agent}/run-epoch.ts +4 -3
- package/packages/core/src/{harness → agent}/run-store.ts +142 -81
- package/packages/core/src/agent/{Service.ts → service.ts} +37 -26
- package/packages/core/src/agent/skill-selector.ts +374 -0
- package/packages/core/src/agent/stuck-loop.ts +209 -0
- package/packages/core/src/agent/{selectors/ToolSelector.ts → tool-selector.ts} +188 -178
- package/packages/core/src/{ace/Tracer.ts → agent/tracer.ts} +37 -27
- package/packages/core/src/api/createAgent.test.ts +139 -27
- package/packages/core/src/api/createAgent.ts +232 -44
- package/packages/core/src/artifacts/store.ts +162 -0
- package/packages/core/src/canvas/canvas-manager.ts +161 -0
- package/packages/core/src/canvas/canvas.test.ts +8 -4
- package/packages/core/src/canvas/emitter.ts +131 -80
- package/packages/core/src/canvas/index.ts +1 -3
- package/packages/core/src/channels/base.ts +9 -1
- package/packages/core/src/channels/discord.ts +5 -4
- package/packages/core/src/channels/manager.ts +122 -30
- package/packages/core/src/channels/slack.ts +5 -4
- package/packages/core/src/channels/telegram.ts +36 -6
- package/packages/core/src/channels/webchat.ts +11 -10
- package/packages/core/src/channels/whatsapp.ts +23 -7
- package/packages/core/src/config/index.ts +13 -2
- package/packages/core/src/config/loader.ts +76 -29
- package/packages/core/src/ethics/EthicsGuard.test.ts +90 -36
- package/packages/core/src/ethics/EthicsGuard.ts +51 -47
- package/packages/core/src/events/agent-bus.ts +44 -68
- package/packages/core/src/events/channel-narration.ts +150 -0
- package/packages/core/src/events/narration.ts +82 -0
- package/packages/core/src/events/tool-narration.ts +62 -0
- package/packages/core/src/gateway/delegation-groups.ts +258 -0
- package/packages/core/src/{harness → gateway}/durable-queue.ts +102 -42
- package/packages/core/src/{harness → gateway}/job-store.ts +85 -48
- package/packages/core/src/gateway/lane-queue.ts +173 -0
- package/packages/core/src/gateway/notification-inbox.ts +57 -0
- package/packages/core/src/gateway/server.ts +1 -1
- package/packages/core/src/harness/index.ts +46 -27
- package/packages/core/src/index.ts +33 -27
- package/packages/core/src/mcp/hot-reload.ts +32 -23
- package/packages/core/src/mcp/index.ts +6 -3
- package/packages/core/src/mcp/singleton.ts +1 -4
- package/packages/core/src/mcp/tool-sync.ts +138 -0
- package/packages/core/src/memory/Scratchpad.test.ts +39 -20
- package/packages/core/src/memory/Scratchpad.ts +27 -34
- package/packages/core/src/multimodal/vision-service.ts +44 -38
- package/packages/core/src/resilience/retry.ts +95 -0
- package/packages/core/src/scheduler/CronScheduler.ts +334 -287
- package/packages/core/src/scheduler/index.ts +9 -7
- package/packages/core/src/scheduler/integration.ts +46 -26
- package/packages/core/src/scheduler/scheduler.test.ts +9 -13
- package/packages/core/src/scheduler/types.ts +7 -2
- package/packages/core/src/security/Pairing.ts +1 -1
- package/packages/core/src/skills/bundled/a2ui/a2ui_dashboard/SKILL.md +176 -0
- package/packages/core/src/skills/bundled/a2ui/a2ui_form/SKILL.md +202 -0
- package/packages/core/src/skills/bundled/a2ui/a2ui_interactive/SKILL.md +206 -0
- package/packages/core/src/skills/bundled/agents/agent_spawner/SKILL.md +173 -0
- package/packages/core/src/skills/bundled/agents/memory_manager/SKILL.md +143 -0
- package/packages/core/src/skills/bundled/agents/research_and_remember/SKILL.md +139 -0
- package/packages/core/src/skills/bundled/agents/task_orchestrator/SKILL.md +98 -0
- package/packages/core/src/skills/bundled/api/api_client/SKILL.md +132 -0
- package/packages/core/src/skills/bundled/cli/cli_pipeline/SKILL.md +135 -0
- package/packages/core/src/skills/bundled/cli/cli_safe_exec/SKILL.md +125 -0
- package/packages/core/src/skills/bundled/cli/software_engineering/SKILL.md +23 -0
- package/packages/core/src/skills/bundled/cron_manager/SKILL.md +188 -0
- package/packages/core/src/skills/bundled/cron_reminder/SKILL.md +112 -0
- package/packages/core/src/skills/bundled/filesystem/file_manager/SKILL.md +118 -0
- package/packages/core/src/skills/bundled/filesystem/file_read_and_summarize/SKILL.md +109 -0
- package/packages/core/src/skills/bundled/filesystem/file_writer/SKILL.md +129 -0
- package/packages/core/src/skills/bundled/filesystem/workspace_file_operator/SKILL.md +22 -0
- package/packages/core/src/skills/bundled/office/office_document_manager/SKILL.md +262 -0
- package/packages/core/src/skills/bundled/search_knowledge/capability_discovery/SKILL.md +75 -0
- package/packages/core/src/skills/bundled/web/browser_automate/SKILL.md +120 -0
- package/packages/core/src/skills/bundled/web/browser_scrape/SKILL.md +109 -0
- package/packages/core/src/skills/bundled/web/web_monitor/SKILL.md +127 -0
- package/packages/core/src/skills/bundled/web/web_research/SKILL.md +119 -0
- package/packages/core/src/skills/bundled-data.generated.ts +731 -2678
- package/packages/core/src/skills/skills.test.ts +52 -11
- package/packages/core/src/{harness → storage}/boot-id.ts +5 -2
- package/packages/core/src/storage/bootstrap.ts +151 -0
- package/packages/core/src/storage/causal-events.ts +84 -0
- package/packages/core/src/storage/collections.ts +680 -0
- package/packages/core/src/storage/crypto.ts +205 -74
- package/packages/core/src/{harness/db-helpers.ts → storage/hive.ts} +63 -7
- package/packages/core/src/storage/hivedb.ts +61 -0
- package/packages/core/src/storage/index.ts +111 -18
- package/packages/core/src/storage/model-id.ts +53 -0
- package/packages/core/src/storage/onboarding.ts +540 -972
- package/packages/core/src/storage/reconcile.ts +238 -0
- package/packages/core/src/storage/seed.ts +572 -406
- package/packages/core/src/storage/usage.ts +285 -225
- package/packages/core/src/storage/user-email.ts +11 -0
- package/packages/core/src/swarm/AgentExecutor.ts +1 -1
- package/packages/core/src/swarm/EventBridge.ts +1 -1
- package/packages/core/src/swarm/index.ts +12 -9
- package/packages/core/src/tool-runtime/index.ts +146 -23
- package/packages/core/src/tool-runtime/tool-worker.ts +2 -2
- package/packages/core/src/tool-runtime/worker-tools.ts +27 -0
- package/packages/core/src/{canvas/a2ui-tools.ts → tools/a2ui/index.ts} +17 -8
- package/packages/core/src/tools/agents/get-available-models.ts +36 -54
- package/packages/core/src/tools/agents/index.ts +784 -292
- package/packages/core/src/tools/api/api-request.test.ts +164 -0
- package/packages/core/src/tools/api/api-request.ts +174 -0
- package/packages/core/src/tools/api/index.ts +16 -0
- package/packages/core/src/tools/cli/index.ts +4 -0
- package/packages/core/src/tools/core/index.ts +281 -112
- package/packages/core/src/tools/cron/index.ts +121 -124
- package/packages/core/src/tools/index.ts +63 -78
- package/packages/core/src/tools/office/office-escribir-xlsx.ts +3 -1
- package/packages/core/src/tools/types.ts +3 -1
- package/packages/core/src/tools/web/artifact-inspect.ts +23 -0
- package/packages/core/src/tools/web/browser-backend.ts +129 -0
- package/packages/core/src/tools/web/browser-screenshot.ts +26 -5
- package/packages/core/src/tools/web/browser-service.ts +80 -35
- package/packages/core/src/tools/web/browser-type.ts +3 -8
- package/packages/core/src/tools/web/index.ts +4 -4
- package/packages/core/src/tools/web/webview-backend.ts +412 -0
- package/packages/core/src/voice/index.ts +89 -63
- package/packages/core/src/workers/agent.worker.ts +2 -2
- package/packages/core/src/workers/workers.test.ts +3 -10
- package/scripts/bump-version.ts +248 -0
- package/scripts/generate-skill-bundle.ts +108 -0
- package/test/acceptance-checks.test.ts +403 -0
- package/test/agent-loop-terminal-synthesis.test.ts +32 -0
- package/test/browser-backend.test.ts +308 -0
- package/test/catalog-agents-stay-enabled.test.ts +117 -0
- package/test/causal-events.test.ts +117 -0
- package/test/compaction.test.ts +105 -0
- package/test/context-compiler.test.ts +269 -0
- package/test/curator.test.ts +130 -0
- package/test/durable-queue.test.ts +114 -0
- package/test/harness-barrel.test.ts +64 -0
- package/test/hive-helpers.test.ts +130 -0
- package/test/hivedb-search.test.ts +189 -0
- package/test/internal-turns.test.ts +166 -0
- package/test/job-idempotency.test.ts +68 -0
- package/test/job-retry-backoff.test.ts +184 -0
- package/test/job-store.test.ts +381 -0
- package/test/llm-retry.test.ts +97 -0
- package/test/memory-perf.test.ts +774 -0
- package/test/minimal-loadout.test.ts +78 -0
- package/test/model-catalog.test.ts +105 -0
- package/test/preload.ts +12 -0
- package/test/reflector.test.ts +320 -0
- package/test/retention-cap.test.ts +91 -0
- package/test/retired-capabilities-pruned.test.ts +192 -0
- package/test/run-store.test.ts +355 -0
- package/test/scratchpad.test.ts +74 -0
- package/test/secrets-durability.test.ts +119 -0
- package/test/seed-model-reseed.test.ts +155 -0
- package/test/setup-agent-seed.test.ts +264 -0
- package/test/tool-inventory.test.ts +65 -0
- package/test/tool-runtime.test.ts +258 -0
- package/test/tool-selector-runtime-tools.test.ts +117 -0
- package/test/toon.test.ts +429 -0
- package/tsconfig.json +2 -0
- package/packages/core/src/ace/Curator.ts +0 -158
- package/packages/core/src/ace/Reflector.ts +0 -200
- package/packages/core/src/ace/index.ts +0 -4
- package/packages/core/src/agent/AgentRunner.ts +0 -711
- package/packages/core/src/agent/ContextCompiler.ts +0 -567
- package/packages/core/src/agent/ContextGuard.ts +0 -91
- package/packages/core/src/agent/ConversationStore.ts +0 -254
- package/packages/core/src/agent/Hooks.ts +0 -166
- package/packages/core/src/agent/StuckLoop.ts +0 -133
- package/packages/core/src/agent/providers/LLMClient.ts +0 -149
- package/packages/core/src/agent/providers/anthropic.ts +0 -212
- package/packages/core/src/agent/providers/openai-compat.ts +0 -231
- package/packages/core/src/agent/selectors/PlaybookSelector.ts +0 -121
- package/packages/core/src/agent/selectors/SkillSelector.ts +0 -322
- package/packages/core/src/agent/selectors/index.ts +0 -6
- package/packages/core/src/auth/auth.ts +0 -121
- package/packages/core/src/auth/index.ts +0 -1
- package/packages/core/src/canvas/CanvasManager.ts +0 -390
- package/packages/core/src/canvas/canvas-tools.ts +0 -448
- package/packages/core/src/harness/collections.ts +0 -98
- package/packages/core/src/harness/goal-verifier.ts +0 -141
- package/packages/core/src/harness/harness.test.ts +0 -236
- package/packages/core/src/harness/reconcile.ts +0 -149
- package/packages/core/src/mcp/MCPToolAdapter.ts +0 -176
- package/packages/core/src/multimodal/VisionService.ts +0 -293
- package/packages/core/src/scheduler/dag/AgentExecutor.ts +0 -53
- package/packages/core/src/scheduler/dag/DAGScheduler.ts +0 -250
- package/packages/core/src/scheduler/dag/EventBridge.ts +0 -122
- package/packages/core/src/scheduler/dag/TaskGraph.ts +0 -192
- package/packages/core/src/scheduler/dag/TaskNode.ts +0 -97
- package/packages/core/src/scheduler/dag/TaskResult.ts +0 -22
- package/packages/core/src/scheduler/dag/errors.ts +0 -37
- package/packages/core/src/scheduler/dag/index.ts +0 -26
- package/packages/core/src/scheduler/dag/presets/ResearchPreset.ts +0 -97
- package/packages/core/src/scheduler/dag/strategies/ParallelStrategy.ts +0 -21
- package/packages/core/src/scheduler/dag/strategies/PriorityStrategy.ts +0 -46
- package/packages/core/src/storage/HiveDBStorage.ts +0 -64
- package/packages/core/src/storage/SQLiteStorage.ts +0 -414
- package/packages/core/src/storage/hiveSeed.ts +0 -308
- package/packages/core/src/storage/hiveStorage.test.ts +0 -38
- package/packages/core/src/storage/schema.ts +0 -689
- package/packages/core/src/storage/storage.test.ts +0 -37
- package/packages/core/src/swarm/AgentBus.ts +0 -460
- package/packages/core/src/swarm/EventBus.ts +0 -169
- package/packages/core/src/swarm/WorkerPool.ts +0 -236
- package/packages/core/src/tools/bridge-events.ts +0 -26
- package/packages/core/src/tools/canvas/index.ts +0 -375
- package/packages/core/src/tools/codebridge/index.ts +0 -342
- package/packages/core/src/tools/meeting/index.ts +0 -353
- package/packages/core/src/tools/projects/index.ts +0 -37
- package/packages/core/src/tools/projects/project-create.ts +0 -94
- package/packages/core/src/tools/projects/project-done.ts +0 -66
- package/packages/core/src/tools/projects/project-fail.ts +0 -66
- package/packages/core/src/tools/projects/project-list.ts +0 -96
- package/packages/core/src/tools/projects/project-update.ts +0 -72
- package/packages/core/src/tools/projects/task-create.ts +0 -68
- package/packages/core/src/tools/projects/task-evaluate.ts +0 -93
- package/packages/core/src/tools/projects/task-update.ts +0 -93
- package/packages/core/src/tools/voice/index.ts +0 -104
- package/packages/core/src/tools/web/api-request.test.ts +0 -170
- package/packages/core/src/tools/web/api-request.ts +0 -239
- package/test/setup-db.ts +0 -216
- /package/packages/core/src/agent/{NativeTools.ts → native-tools.ts} +0 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: task_orchestrator
|
|
3
|
+
description: "Orchestrate tasks across multiple workers with delegation, status tracking, and bus communication"
|
|
4
|
+
version: 1.2.0
|
|
5
|
+
author: Hive Team
|
|
6
|
+
icon: "🎻"
|
|
7
|
+
category: agents
|
|
8
|
+
permissions:
|
|
9
|
+
- agent_manage
|
|
10
|
+
- agent_bus
|
|
11
|
+
dependencies: []
|
|
12
|
+
tools: [get_available_models, task_delegate, task_list, task_status, agent_find, agent_create, bus_publish, bus_read]
|
|
13
|
+
|
|
14
|
+
# Structured skill fields
|
|
15
|
+
triggers:
|
|
16
|
+
- "delegá esta tarea"
|
|
17
|
+
- "delegate task"
|
|
18
|
+
- "orquestá los workers"
|
|
19
|
+
- "orchestrate workers"
|
|
20
|
+
- "coordiná el equipo"
|
|
21
|
+
- "coordinate team"
|
|
22
|
+
- "estado de las tareas"
|
|
23
|
+
- "task status"
|
|
24
|
+
- "comunicá los workers"
|
|
25
|
+
- "communicate workers"
|
|
26
|
+
- "mensaje al bus"
|
|
27
|
+
- "bus message"
|
|
28
|
+
- "tarea en paralelo"
|
|
29
|
+
- "parallel tasks"
|
|
30
|
+
|
|
31
|
+
preferred_agents: []
|
|
32
|
+
---
|
|
33
|
+
# Task Orchestrator — referencia operativa
|
|
34
|
+
|
|
35
|
+
La doctrina de orquestación (descomponer → delegar en paralelo → terminar el turno → sintetizar en el fan-in) está en tu system prompt. Esta skill es la referencia de las herramientas.
|
|
36
|
+
|
|
37
|
+
## Herramientas
|
|
38
|
+
|
|
39
|
+
| Tool | Qué hace | Cuándo |
|
|
40
|
+
|------|----------|--------|
|
|
41
|
+
| `task_delegate` | Persiste y asigna una tarea a un worker | Delegar. Preferí `mode="async"` |
|
|
42
|
+
| `agent_find` | Descubre workers del catálogo y propios | Antes de delegar. Nunca para comprobar ejecución |
|
|
43
|
+
| `task_list` | Lista ejecuciones reales persistidas | El usuario pregunta y no conocés IDs |
|
|
44
|
+
| `task_status` | Estado de tareas por ID | El usuario pide estado antes del fan-in |
|
|
45
|
+
| `get_available_models` | Providers y modelos activos | Antes de crear un worker |
|
|
46
|
+
| `agent_create` | Crea un worker nuevo | Último recurso: nada del catálogo sirve |
|
|
47
|
+
| `bus_publish` / `bus_read` | Mensajes entre workers | Dependencias entre workers en vuelo |
|
|
48
|
+
|
|
49
|
+
## Fan-out
|
|
50
|
+
|
|
51
|
+
```javascript
|
|
52
|
+
// Tres partes independientes → tres llamadas en la MISMA respuesta
|
|
53
|
+
task_delegate({ worker_id: "web_researcher", task_description: "...", mode: "async" })
|
|
54
|
+
task_delegate({ worker_id: "office_document_agent", task_description: "...", mode: "async" })
|
|
55
|
+
task_delegate({ worker_id: "schedule_automation_agent", task_description: "...", mode: "async" })
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Cada llamada devuelve `task_id`, `job_id` y `run_id`: prueba de que la tarea quedó persistida.
|
|
59
|
+
|
|
60
|
+
## Fan-in
|
|
61
|
+
|
|
62
|
+
Hive te reinvoca con:
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
[Sistema] Todas las tareas delegadas de este turno alcanzaron estado terminal.
|
|
66
|
+
[{ task_id, worker_id, task, ok, result, error }, ...]
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Sintetizá una sola respuesta. Las entradas con `ok: false` se reportan con su motivo real.
|
|
70
|
+
|
|
71
|
+
## Crear un worker (último recurso)
|
|
72
|
+
|
|
73
|
+
```javascript
|
|
74
|
+
get_available_models({ capabilities: "analysis" })
|
|
75
|
+
// → [{ providerId: "anthropic", modelId: "claude-sonnet-4-6", ... }]
|
|
76
|
+
|
|
77
|
+
agent_create({
|
|
78
|
+
name: "data_analyst",
|
|
79
|
+
description: "Experto en análisis de datos",
|
|
80
|
+
system_prompt: "Sos analista de datos experto...",
|
|
81
|
+
tools_json: ["web_search", "web_fetch", "save_note"],
|
|
82
|
+
providerId: "anthropic", // OBLIGATORIO
|
|
83
|
+
modelId: "claude-sonnet-4-6", // OBLIGATORIO
|
|
84
|
+
})
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Para una integración MCP sin especialista, pedí autorización primero. Si el usuario acepta, creá un worker con `mcp_server_id`; si participan varios servidores, creá o reutilizá uno por servidor. Nunca pases servidores MCP dinámicos a `task_delegate`.
|
|
88
|
+
|
|
89
|
+
## Errores a evitar
|
|
90
|
+
|
|
91
|
+
- ❌ Serializar tareas independientes en vez de fan-out paralelo
|
|
92
|
+
- ❌ Polling con `task_status` esperando el resultado — el fan-in llega solo
|
|
93
|
+
- ❌ Declarar éxito antes de recibir el `[Sistema]`, o presentar `ok=false` como éxito
|
|
94
|
+
- ❌ Reportar éxito sin revisar `acceptance`/`checks` de la entrega, o ignorar un `checks.status="failed"`
|
|
95
|
+
- ❌ Corregir a mano lo que `task_revise` puede reencolar en el mismo worker
|
|
96
|
+
- ❌ Crear un worker que el catálogo ya cubre
|
|
97
|
+
- ❌ Delegar saludos, preguntas simples o la conversación
|
|
98
|
+
- ❌ Usar `delegate_task`, `find_agent`, `create_agent`, `get_task_status`, `publish_to_bus`, `get_bus_messages` — **no existen**
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: api_client
|
|
3
|
+
description: "Make HTTP requests to REST APIs using curl-like methods (GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS)"
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
author: Hive Team
|
|
6
|
+
icon: "🌐"
|
|
7
|
+
category: api
|
|
8
|
+
permissions:
|
|
9
|
+
- internet_access
|
|
10
|
+
dependencies: []
|
|
11
|
+
tools: [api_request]
|
|
12
|
+
|
|
13
|
+
# Structured skill fields
|
|
14
|
+
triggers:
|
|
15
|
+
- "llama a la api"
|
|
16
|
+
- "llama al api"
|
|
17
|
+
- "consume la api"
|
|
18
|
+
- "haz una petición"
|
|
19
|
+
- "haz un request"
|
|
20
|
+
- "envía un post"
|
|
21
|
+
- "envía un put"
|
|
22
|
+
- "envía un delete"
|
|
23
|
+
- "curl"
|
|
24
|
+
- "api request"
|
|
25
|
+
- "rest api"
|
|
26
|
+
- "endpoint"
|
|
27
|
+
- "webhook"
|
|
28
|
+
- "integrar con api"
|
|
29
|
+
- "conectar con api"
|
|
30
|
+
- "obtener datos de api"
|
|
31
|
+
- "enviar datos a api"
|
|
32
|
+
|
|
33
|
+
preferred_agents: []
|
|
34
|
+
|
|
35
|
+
steps:
|
|
36
|
+
- step: 1
|
|
37
|
+
action: api_request
|
|
38
|
+
instruction: "Call the API endpoint with the correct HTTP method, headers, and body. Always include Content-Type and Authorization if required by the API."
|
|
39
|
+
params:
|
|
40
|
+
method: "GET | POST | PUT | DELETE | PATCH"
|
|
41
|
+
url: "https://api.example.com/endpoint"
|
|
42
|
+
headers:
|
|
43
|
+
Content-Type: "application/json"
|
|
44
|
+
Authorization: "Bearer TOKEN_IF_NEEDED"
|
|
45
|
+
body: '{"key":"value"}'
|
|
46
|
+
output: api_response
|
|
47
|
+
|
|
48
|
+
- step: 2
|
|
49
|
+
action: validate
|
|
50
|
+
instruction: "Check the response status. If 2xx, extract and present the data. If 4xx/5xx, analyze the error and suggest fixes (missing auth, wrong payload, rate limit)."
|
|
51
|
+
output: validated_result
|
|
52
|
+
|
|
53
|
+
rules:
|
|
54
|
+
- "Always use api_request instead of web_fetch when you need custom headers, body, or non-GET methods"
|
|
55
|
+
- "Never expose API keys or tokens in the final response to the user — mention they are handled securely"
|
|
56
|
+
- "If the API returns JSON, parse and present it in a readable format (tables, lists, markdown)"
|
|
57
|
+
- "For paginated APIs, indicate if more pages exist and offer to fetch them"
|
|
58
|
+
- "Respect rate limits — if a 429 is returned, wait and retry or inform the user"
|
|
59
|
+
- "Always include the Content-Type header when sending a body (usually application/json)"
|
|
60
|
+
- "Use query_params object instead of manually appending to the URL"
|
|
61
|
+
- "If the user provides a curl command, translate it into api_request parameters"
|
|
62
|
+
|
|
63
|
+
output_format:
|
|
64
|
+
structure: markdown
|
|
65
|
+
sections:
|
|
66
|
+
- "summary"
|
|
67
|
+
- "request_details"
|
|
68
|
+
- "response_data"
|
|
69
|
+
- "next_steps"
|
|
70
|
+
max_length: "800 words unless user requests full raw response"
|
|
71
|
+
|
|
72
|
+
examples:
|
|
73
|
+
- user_input: "haz un get a https://api.github.com/users/octocat"
|
|
74
|
+
expected_behavior: "api_request({ method: 'GET', url: 'https://api.github.com/users/octocat' }) → parse JSON → show key fields"
|
|
75
|
+
|
|
76
|
+
- user_input: "envía un post a https://httpbin.org/post con {nombre: 'Juan'}"
|
|
77
|
+
expected_behavior: "api_request({ method: 'POST', url: 'https://httpbin.org/post', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({nombre:'Juan'}) }) → show response"
|
|
78
|
+
|
|
79
|
+
- user_input: "actualiza el recurso 123 en la API con {status: 'active'}"
|
|
80
|
+
expected_behavior: "api_request({ method: 'PUT', url: '.../123', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ...' }, body: JSON.stringify({status:'active'}) }) → confirm update"
|
|
81
|
+
|
|
82
|
+
- user_input: "curl -X DELETE https://api.example.com/items/456 -H 'Authorization: Bearer token123'"
|
|
83
|
+
expected_behavior: "Translate curl to api_request({ method: 'DELETE', url: 'https://api.example.com/items/456', headers: { 'Authorization': 'Bearer token123' } }) → confirm deletion"
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
# API Client Skill
|
|
87
|
+
|
|
88
|
+
## Cuándo se Activa
|
|
89
|
+
|
|
90
|
+
Esta skill se activa cuando el usuario necesita interactuar con una API REST: consultar datos, crear recursos, actualizar, eliminar, o cualquier operación HTTP.
|
|
91
|
+
|
|
92
|
+
## Herramientas Disponibles
|
|
93
|
+
|
|
94
|
+
| Tool | Qué hace | Cuándo usarla |
|
|
95
|
+
|------|----------|---------------|
|
|
96
|
+
| `api_request` | Realiza peticiones HTTP completas (GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS) con headers, body, query params y timeout | Siempre que necesites llamar un endpoint REST, webhook, o servicio externo |
|
|
97
|
+
|
|
98
|
+
## Parámetros de api_request
|
|
99
|
+
|
|
100
|
+
- `method` (requerido): GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS
|
|
101
|
+
- `url` (requerido): URL completa del endpoint
|
|
102
|
+
- `headers` (opcional): objeto con headers HTTP. Ej: `{ "Authorization": "Bearer TOKEN", "Content-Type": "application/json" }`
|
|
103
|
+
- `body` (opcional): cuerpo de la petición como string. Para JSON, enviar JSON.stringify(objeto)
|
|
104
|
+
- `query_params` (opcional): parámetros de query que se codificarán automáticamente en la URL
|
|
105
|
+
- `timeout_ms` (opcional): timeout en ms. Default: 30000. Máx: 120000
|
|
106
|
+
|
|
107
|
+
## Diferencia con web_fetch
|
|
108
|
+
|
|
109
|
+
- `web_fetch`: solo GET, sin headers custom, ideal para scraping de páginas web
|
|
110
|
+
- `api_request`: cualquier método HTTP, headers custom, body, query params — ideal para APIs REST
|
|
111
|
+
|
|
112
|
+
## Workflow
|
|
113
|
+
|
|
114
|
+
1. **Identificar endpoint y método** → Determinar URL, método, headers necesarios
|
|
115
|
+
2. **Construir request** → `api_request({ method, url, headers, body })`
|
|
116
|
+
3. **Validar respuesta** → Si 2xx: extraer datos. Si error: analizar y sugerir fix
|
|
117
|
+
4. **Presentar resultados** → JSON parseado en formato legible, no crudo a menos que se pida
|
|
118
|
+
|
|
119
|
+
## Mejores Prácticas
|
|
120
|
+
|
|
121
|
+
- Siempre enviar `Content-Type: application/json` cuando el body es JSON
|
|
122
|
+
- Usar `query_params` en lugar de append manual a la URL
|
|
123
|
+
- No exponer tokens/secrets en la respuesta final al usuario
|
|
124
|
+
- Si la API requiere auth, pedirla al usuario o usar variables de entorno
|
|
125
|
+
- Para errores 4xx, revisar: auth, formato del body, campos requeridos, rate limits
|
|
126
|
+
|
|
127
|
+
## Errores a Evitar
|
|
128
|
+
|
|
129
|
+
- ❌ Usar web_fetch para POST/PUT/DELETE con headers
|
|
130
|
+
- ❌ Enviar objetos directamente en body (debe ser string)
|
|
131
|
+
- ❌ Olvidar Content-Type al enviar JSON
|
|
132
|
+
- ❌ Exponer API keys en la respuesta visible
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cli_pipeline
|
|
3
|
+
description: "Execute shell commands and pipe output to files for logging and further processing"
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
author: Hive Team
|
|
6
|
+
icon: "🔗"
|
|
7
|
+
category: cli
|
|
8
|
+
permissions:
|
|
9
|
+
- shell_exec
|
|
10
|
+
- filesystem_write
|
|
11
|
+
dependencies: []
|
|
12
|
+
tools: [cli_exec, fs_write]
|
|
13
|
+
|
|
14
|
+
# Structured skill fields
|
|
15
|
+
triggers:
|
|
16
|
+
- "guardá el output"
|
|
17
|
+
- "save output"
|
|
18
|
+
- "pipeline"
|
|
19
|
+
- "pipe to file"
|
|
20
|
+
- "redireccioná el output"
|
|
21
|
+
- "redirect output"
|
|
22
|
+
- "log del comando"
|
|
23
|
+
- "command log"
|
|
24
|
+
- "ejecutá y guardá"
|
|
25
|
+
- "run and save"
|
|
26
|
+
- "resultado en archivo"
|
|
27
|
+
- "result to file"
|
|
28
|
+
|
|
29
|
+
preferred_agents: []
|
|
30
|
+
|
|
31
|
+
steps:
|
|
32
|
+
- step: 1
|
|
33
|
+
action: validate_command
|
|
34
|
+
instruction: "Validate command is safe and appropriate for pipeline execution"
|
|
35
|
+
output: validated_command
|
|
36
|
+
|
|
37
|
+
- step: 2
|
|
38
|
+
action: cli_exec
|
|
39
|
+
instruction: "Execute command and capture full output (stdout + stderr)"
|
|
40
|
+
params:
|
|
41
|
+
command: "validated command"
|
|
42
|
+
timeout: "appropriate timeout"
|
|
43
|
+
output: command_output
|
|
44
|
+
|
|
45
|
+
- step: 3
|
|
46
|
+
action: format_output
|
|
47
|
+
instruction: "Format output for file storage: add timestamp, command, execution time"
|
|
48
|
+
output: formatted_output
|
|
49
|
+
|
|
50
|
+
- step: 4
|
|
51
|
+
action: fs_write
|
|
52
|
+
instruction: "Write output to specified file path"
|
|
53
|
+
params:
|
|
54
|
+
path: "logs/command_YYYY-MM-DD_HH-MM-SS.log"
|
|
55
|
+
content: "formatted output"
|
|
56
|
+
output: file_written
|
|
57
|
+
|
|
58
|
+
rules:
|
|
59
|
+
- "Capture both stdout and stderr for complete logging"
|
|
60
|
+
- "Add metadata: timestamp, command, execution time, exitCode"
|
|
61
|
+
- "Use descriptive filenames with timestamps for logs"
|
|
62
|
+
- "For large outputs, write incrementally or split files"
|
|
63
|
+
- "Confirm file path before writing"
|
|
64
|
+
|
|
65
|
+
output_format:
|
|
66
|
+
structure: markdown
|
|
67
|
+
sections:
|
|
68
|
+
- "command"
|
|
69
|
+
- "timestamp"
|
|
70
|
+
- "exit_code"
|
|
71
|
+
- "execution_time"
|
|
72
|
+
- "output_file"
|
|
73
|
+
max_length: "Full logged output"
|
|
74
|
+
|
|
75
|
+
examples:
|
|
76
|
+
- user_input: "ejecutá npm install y guardá el output en logs/install.log"
|
|
77
|
+
expected_behavior: "cli_exec({ command: 'npm install' }) → format with metadata → fs_write({ path: 'logs/install.log' })"
|
|
78
|
+
|
|
79
|
+
- user_input: "corré los tests y guardá el resultado"
|
|
80
|
+
expected_behavior: "cli_exec({ command: 'npm test' }) → capture full output → write to timestamped log file"
|
|
81
|
+
|
|
82
|
+
- user_input: "hacé un pipeline de git log a archivo"
|
|
83
|
+
expected_behavior: "cli_exec({ command: 'git log --oneline' }) → write to 'logs/git_log_YYYY-MM-DD.md'"
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
# CLI Pipeline Skill
|
|
87
|
+
|
|
88
|
+
## Cuándo se Activa
|
|
89
|
+
|
|
90
|
+
Para ejecutar comandos y guardar el output en archivos para logging o procesamiento posterior.
|
|
91
|
+
|
|
92
|
+
## Herramientas Disponibles
|
|
93
|
+
|
|
94
|
+
| Tool | Qué hace | Cuándo usarla |
|
|
95
|
+
|------|----------|---------------|
|
|
96
|
+
| `cli_exec` | Ejecuta un comando con timeout y captura su salida | Comandos autorizados |
|
|
97
|
+
| `fs_write` | Escribe un archivo dentro del workspace | Guardar output |
|
|
98
|
+
|
|
99
|
+
## Workflow
|
|
100
|
+
|
|
101
|
+
1. **Validar comando** → Seguro para ejecución
|
|
102
|
+
2. **Ejecutar** → Capturar stdout + stderr
|
|
103
|
+
3. **Formatear** → Agregar timestamp, comando, metadata
|
|
104
|
+
4. **Escribir** → `fs_write({ path, content })`
|
|
105
|
+
|
|
106
|
+
## Formato de Log
|
|
107
|
+
|
|
108
|
+
```markdown
|
|
109
|
+
# Command Log
|
|
110
|
+
|
|
111
|
+
**Command**: npm install
|
|
112
|
+
**Timestamp**: 2025-03-09 14:30:00
|
|
113
|
+
**Exit Code**: 0
|
|
114
|
+
**Execution Time**: 45.2s
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Output
|
|
119
|
+
|
|
120
|
+
[stdout content...]
|
|
121
|
+
[stderr if any...]
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Mejores Prácticas
|
|
125
|
+
|
|
126
|
+
- Filenames con timestamp para tracking
|
|
127
|
+
- Incluir metadata completa (exitCode, tiempo)
|
|
128
|
+
- Capturar stdout y stderr
|
|
129
|
+
- Para outputs grandes, escribir incrementalmente
|
|
130
|
+
|
|
131
|
+
## Errores a Evitar
|
|
132
|
+
|
|
133
|
+
- ❌ No incluir metadata en log
|
|
134
|
+
- ❌ Filenames genéricos sin timestamp
|
|
135
|
+
- ❌ No capturar stderr
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cli_safe_exec
|
|
3
|
+
description: "Execute shell commands safely with error handling, timeouts, and output validation"
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
author: Hive Team
|
|
6
|
+
icon: "💻"
|
|
7
|
+
category: cli
|
|
8
|
+
permissions:
|
|
9
|
+
- shell_exec
|
|
10
|
+
dependencies: []
|
|
11
|
+
tools: [cli_exec]
|
|
12
|
+
|
|
13
|
+
# Structured skill fields
|
|
14
|
+
triggers:
|
|
15
|
+
- "ejecutá este comando"
|
|
16
|
+
- "run this command"
|
|
17
|
+
- "corré el comando"
|
|
18
|
+
- "execute command"
|
|
19
|
+
- "terminal"
|
|
20
|
+
- "bash"
|
|
21
|
+
- "shell"
|
|
22
|
+
- "npm"
|
|
23
|
+
- "yarn"
|
|
24
|
+
- "bun"
|
|
25
|
+
- "git"
|
|
26
|
+
- "docker"
|
|
27
|
+
- "comando de sistema"
|
|
28
|
+
- "system command"
|
|
29
|
+
|
|
30
|
+
preferred_agents: []
|
|
31
|
+
|
|
32
|
+
steps:
|
|
33
|
+
- step: 1
|
|
34
|
+
action: validate_command
|
|
35
|
+
instruction: "Validate command is safe. Check for destructive operations (rm, DROP, DELETE)"
|
|
36
|
+
output: validated_command
|
|
37
|
+
|
|
38
|
+
- step: 2
|
|
39
|
+
action: exec or terminal
|
|
40
|
+
instruction: "Execute with appropriate timeout. Use exec for simple, terminal for complex"
|
|
41
|
+
params:
|
|
42
|
+
command: "validated command"
|
|
43
|
+
timeout: 30-300 seconds
|
|
44
|
+
output: command_result
|
|
45
|
+
|
|
46
|
+
- step: 3
|
|
47
|
+
action: parse_result
|
|
48
|
+
instruction: "Parse stdout and stderr. Check exitCode (0=success)"
|
|
49
|
+
output: parsed_output
|
|
50
|
+
|
|
51
|
+
- step: 4
|
|
52
|
+
action: handle_error
|
|
53
|
+
instruction: "If failed, analyze error and suggest fixes or retry options"
|
|
54
|
+
output: error_handling
|
|
55
|
+
|
|
56
|
+
rules:
|
|
57
|
+
- "NEVER use for scheduled tasks — use cron.create instead"
|
|
58
|
+
- "Prefer read-only commands when possible"
|
|
59
|
+
- "Confirm before destructive operations (rm, DROP, DELETE, --force)"
|
|
60
|
+
- "Set appropriate timeout: 30s simple, 120s builds, 300s heavy"
|
|
61
|
+
- "Always check exitCode — non-zero means failure"
|
|
62
|
+
- "Use absolute paths for reliability"
|
|
63
|
+
|
|
64
|
+
output_format:
|
|
65
|
+
structure: markdown
|
|
66
|
+
sections:
|
|
67
|
+
- "command"
|
|
68
|
+
- "exit_code"
|
|
69
|
+
- "stdout"
|
|
70
|
+
- "stderr"
|
|
71
|
+
- "execution_time"
|
|
72
|
+
max_length: "Full output with analysis"
|
|
73
|
+
|
|
74
|
+
examples:
|
|
75
|
+
- user_input: "ejecutá npm install"
|
|
76
|
+
expected_behavior: "exec({ command: 'npm install', timeout: 120 }) → check exitCode → return installation summary"
|
|
77
|
+
|
|
78
|
+
- user_input: "corré los tests"
|
|
79
|
+
expected_behavior: "exec({ command: 'npm test', timeout: 180 }) → parse results → report pass/fail count"
|
|
80
|
+
|
|
81
|
+
- user_input: "hacé git status"
|
|
82
|
+
expected_behavior: "exec({ command: 'git status' }) → return current branch and changes"
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
# CLI Safe Exec Skill
|
|
86
|
+
|
|
87
|
+
## Cuándo se Activa
|
|
88
|
+
|
|
89
|
+
Para ejecutar comandos de shell de forma segura con manejo de errores y timeouts.
|
|
90
|
+
|
|
91
|
+
## Herramientas Disponibles
|
|
92
|
+
|
|
93
|
+
| Tool | Qué hace | Cuándo usarla |
|
|
94
|
+
|------|----------|---------------|
|
|
95
|
+
| `exec` | Ejecuta con validación y timeout | Comandos simples (<30s) |
|
|
96
|
+
| `terminal` | Ejecuta con entorno completo | Comandos complejos, Git, npm |
|
|
97
|
+
|
|
98
|
+
## ⚠️ ADVERTENCIA CRÍTICA
|
|
99
|
+
|
|
100
|
+
**NUNCA usar para tareas programadas** — usar `cron.create` en su lugar.
|
|
101
|
+
|
|
102
|
+
## Workflow
|
|
103
|
+
|
|
104
|
+
1. **Validar** → Comando es seguro, no destructivo
|
|
105
|
+
2. **Ejecutar** → `exec` o `terminal` con timeout apropiado
|
|
106
|
+
3. **Parsear** → Check exitCode, stdout, stderr
|
|
107
|
+
4. **Manejar error** → Si falló, analizar y sugerir fixes
|
|
108
|
+
|
|
109
|
+
## Timeouts Apropiados
|
|
110
|
+
|
|
111
|
+
| Tipo | Timeout |
|
|
112
|
+
|------|---------|
|
|
113
|
+
| Listar archivos | 10s |
|
|
114
|
+
| Git operations | 30s |
|
|
115
|
+
| npm install | 120s |
|
|
116
|
+
| npm run build | 120s |
|
|
117
|
+
| npm test | 180s |
|
|
118
|
+
| Docker builds | 300s |
|
|
119
|
+
|
|
120
|
+
## Errores a Evitar
|
|
121
|
+
|
|
122
|
+
- ❌ Usar para cron (usar cron.create)
|
|
123
|
+
- ❌ Sin timeout apropiado
|
|
124
|
+
- ❌ Ignorar exitCode
|
|
125
|
+
- ❌ Comandos destructivos sin confirmar
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: software_engineering
|
|
3
|
+
description: "Implement, debug, and verify scoped software changes in an existing repository"
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
author: Hive Team
|
|
6
|
+
icon: "🛠️"
|
|
7
|
+
category: cli
|
|
8
|
+
permissions: [filesystem_read, filesystem_write, shell_exec]
|
|
9
|
+
dependencies: []
|
|
10
|
+
tools: [fs_read, fs_write, fs_edit, fs_list, fs_glob, fs_exists, cli_exec]
|
|
11
|
+
triggers: [implementar código, corregir bug, ejecutar tests, implement code, fix bug]
|
|
12
|
+
preferred_agents: [software_engineer]
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Ingeniería de software
|
|
16
|
+
|
|
17
|
+
1. Inspecciona estructura, convenciones y cambios existentes.
|
|
18
|
+
2. Determina la causa o el cambio mínimo antes de editar.
|
|
19
|
+
3. Conserva cambios ajenos y limita el diff al objetivo.
|
|
20
|
+
4. Ejecuta tests, typecheck o build proporcionales al riesgo.
|
|
21
|
+
5. Entrega archivos cambiados, comandos ejecutados, resultados y riesgos.
|
|
22
|
+
|
|
23
|
+
No publiques, no delegues y no uses comandos destructivos sin autorización explícita.
|