@johpaz/hive-sdk 0.1.3 → 0.1.5
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 +97 -0
- package/README.md +78 -23
- 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 +9 -4
- 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 +5 -4
- package/packages/core/src/agent/acceptance-checks.ts +166 -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 +71 -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 -20
- 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 -17
- 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-screenshot.ts +26 -5
- package/packages/core/src/tools/web/browser-service.ts +5 -0
- 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/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/agent-loop-terminal-synthesis.test.ts +32 -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/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,262 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: office_document_manager
|
|
3
|
+
description: "Leer, crear y manipular archivos Office (PDF, Word, Excel, PowerPoint) desde el workspace"
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
author: Hive Team
|
|
6
|
+
icon: "📄"
|
|
7
|
+
category: office
|
|
8
|
+
permissions:
|
|
9
|
+
- filesystem_read
|
|
10
|
+
- filesystem_write
|
|
11
|
+
dependencies: []
|
|
12
|
+
tools:
|
|
13
|
+
- office_leer_pdf
|
|
14
|
+
- office_escribir_pdf
|
|
15
|
+
- office_leer_docx
|
|
16
|
+
- office_escribir_docx
|
|
17
|
+
- office_leer_xlsx
|
|
18
|
+
- office_escribir_xlsx
|
|
19
|
+
- office_leer_pptx
|
|
20
|
+
- office_escribir_pptx
|
|
21
|
+
|
|
22
|
+
triggers:
|
|
23
|
+
- "leer pdf"
|
|
24
|
+
- "abrir pdf"
|
|
25
|
+
- "extraer texto de pdf"
|
|
26
|
+
- "pdf a texto"
|
|
27
|
+
- "crear pdf"
|
|
28
|
+
- "generar pdf"
|
|
29
|
+
- "exportar a pdf"
|
|
30
|
+
- "leer word"
|
|
31
|
+
- "abrir docx"
|
|
32
|
+
- "extraer texto de word"
|
|
33
|
+
- "crear word"
|
|
34
|
+
- "generar docx"
|
|
35
|
+
- "documento word"
|
|
36
|
+
- "leer excel"
|
|
37
|
+
- "abrir xlsx"
|
|
38
|
+
- "datos de excel"
|
|
39
|
+
- "crear excel"
|
|
40
|
+
- "generar xlsx"
|
|
41
|
+
- "exportar a excel"
|
|
42
|
+
- "leer powerpoint"
|
|
43
|
+
- "abrir pptx"
|
|
44
|
+
- "presentacion"
|
|
45
|
+
- "diapositivas"
|
|
46
|
+
- "crear presentacion"
|
|
47
|
+
- "generar pptx"
|
|
48
|
+
- "read pdf"
|
|
49
|
+
- "open pdf"
|
|
50
|
+
- "create pdf"
|
|
51
|
+
- "read excel"
|
|
52
|
+
- "create excel"
|
|
53
|
+
- "read word"
|
|
54
|
+
- "create word"
|
|
55
|
+
- "read powerpoint"
|
|
56
|
+
- "create presentation"
|
|
57
|
+
|
|
58
|
+
preferred_agents: []
|
|
59
|
+
|
|
60
|
+
steps:
|
|
61
|
+
- step: 1
|
|
62
|
+
action: office_leer_pdf
|
|
63
|
+
instruction: "Leer un archivo PDF y extraer su texto e información básica"
|
|
64
|
+
params:
|
|
65
|
+
ruta: "path/to/file.pdf"
|
|
66
|
+
output: pdf_content
|
|
67
|
+
|
|
68
|
+
- step: 2
|
|
69
|
+
action: office_escribir_pdf
|
|
70
|
+
instruction: "Generar un archivo PDF desde texto o contenido procesado"
|
|
71
|
+
params:
|
|
72
|
+
ruta: "path/to/output.pdf"
|
|
73
|
+
contenido: "texto a escribir"
|
|
74
|
+
titulo: "Título del documento"
|
|
75
|
+
tamaño_pagina: "A4"
|
|
76
|
+
output: pdf_created
|
|
77
|
+
|
|
78
|
+
- step: 3
|
|
79
|
+
action: office_leer_docx
|
|
80
|
+
instruction: "Leer un documento Word y extraer párrafos y tablas"
|
|
81
|
+
params:
|
|
82
|
+
ruta: "path/to/file.docx"
|
|
83
|
+
incluir_tablas: true
|
|
84
|
+
output: docx_content
|
|
85
|
+
|
|
86
|
+
- step: 4
|
|
87
|
+
action: office_escribir_docx
|
|
88
|
+
instruction: "Generar un documento Word con párrafos, títulos y tablas estructuradas"
|
|
89
|
+
params:
|
|
90
|
+
ruta: "path/to/output.docx"
|
|
91
|
+
titulo: "Título"
|
|
92
|
+
parrafos:
|
|
93
|
+
- texto: "Introducción"
|
|
94
|
+
tipo: "titulo1"
|
|
95
|
+
- texto: "Contenido del documento"
|
|
96
|
+
tipo: "parrafo"
|
|
97
|
+
output: docx_created
|
|
98
|
+
|
|
99
|
+
- step: 5
|
|
100
|
+
action: office_leer_xlsx
|
|
101
|
+
instruction: "Leer un archivo Excel y obtener los datos de cada hoja como JSON"
|
|
102
|
+
params:
|
|
103
|
+
ruta: "path/to/file.xlsx"
|
|
104
|
+
incluir_encabezados: true
|
|
105
|
+
output: xlsx_data
|
|
106
|
+
|
|
107
|
+
- step: 6
|
|
108
|
+
action: office_escribir_xlsx
|
|
109
|
+
instruction: "Generar un archivo Excel con múltiples hojas desde datos JSON"
|
|
110
|
+
params:
|
|
111
|
+
ruta: "path/to/output.xlsx"
|
|
112
|
+
hojas:
|
|
113
|
+
- nombre: "Hoja1"
|
|
114
|
+
datos:
|
|
115
|
+
- col1: "valor"
|
|
116
|
+
col2: "valor"
|
|
117
|
+
output: xlsx_created
|
|
118
|
+
|
|
119
|
+
- step: 7
|
|
120
|
+
action: office_leer_pptx
|
|
121
|
+
instruction: "Leer una presentación PowerPoint y extraer el texto de cada diapositiva"
|
|
122
|
+
params:
|
|
123
|
+
ruta: "path/to/file.pptx"
|
|
124
|
+
output: pptx_content
|
|
125
|
+
|
|
126
|
+
- step: 8
|
|
127
|
+
action: office_escribir_pptx
|
|
128
|
+
instruction: "Generar una presentación PowerPoint con título, viñetas y notas por diapositiva"
|
|
129
|
+
params:
|
|
130
|
+
ruta: "path/to/output.pptx"
|
|
131
|
+
titulo_presentacion: "Mi Presentación"
|
|
132
|
+
diapositivas:
|
|
133
|
+
- titulo: "Intro"
|
|
134
|
+
puntos:
|
|
135
|
+
- "Punto 1"
|
|
136
|
+
- "Punto 2"
|
|
137
|
+
output: pptx_created
|
|
138
|
+
|
|
139
|
+
rules:
|
|
140
|
+
- "Usa office_leer_* para extraer contenido antes de generar una versión nueva"
|
|
141
|
+
- "Siempre confirma la ruta de salida con el usuario antes de sobrescribir un archivo existente"
|
|
142
|
+
- "Para PDFs grandes, usa pagina_inicio/pagina_fin para leer por secciones"
|
|
143
|
+
- "Para Excel, especifica el nombre de hoja con el parámetro 'hoja' si solo necesitas una"
|
|
144
|
+
- "Al escribir DOCX, usa 'tipo: titulo1/titulo2/titulo3' para crear jerarquía de encabezados"
|
|
145
|
+
- "Para presentaciones, usa 'puntos' en lugar de 'contenido' cuando el texto es una lista"
|
|
146
|
+
- "Usa fs_read/fs_exists antes de leer un office file para confirmar que la ruta existe"
|
|
147
|
+
|
|
148
|
+
output_format:
|
|
149
|
+
structure: markdown
|
|
150
|
+
sections:
|
|
151
|
+
- "archivo"
|
|
152
|
+
- "contenido_extraido"
|
|
153
|
+
- "resultado"
|
|
154
|
+
max_length: "Truncar texto extraído a 2000 caracteres si es muy largo, con indicación de páginas/hojas restantes"
|
|
155
|
+
|
|
156
|
+
examples:
|
|
157
|
+
- user_input: "lee el PDF en /documentos/informe.pdf y dime de qué trata"
|
|
158
|
+
expected_behavior: "office_leer_pdf({ ruta: '/documentos/informe.pdf' }) → resume el contenido extraído"
|
|
159
|
+
|
|
160
|
+
- user_input: "crea un PDF con el resumen de la reunión"
|
|
161
|
+
expected_behavior: "office_escribir_pdf({ ruta: 'resumen_reunion.pdf', contenido: '...', titulo: 'Resumen de Reunión' })"
|
|
162
|
+
|
|
163
|
+
- user_input: "pasa los datos del Excel a un formato que pueda entender"
|
|
164
|
+
expected_behavior: "office_leer_xlsx({ ruta: 'datos.xlsx' }) → retorna datos como JSON con estructura de hojas"
|
|
165
|
+
|
|
166
|
+
- user_input: "genera una presentación de 5 slides sobre machine learning"
|
|
167
|
+
expected_behavior: "office_escribir_pptx({ ruta: 'ml_intro.pptx', titulo_presentacion: 'Introducción a ML', diapositivas: [...] })"
|
|
168
|
+
|
|
169
|
+
- user_input: "extrae el texto del contrato en Word"
|
|
170
|
+
expected_behavior: "office_leer_docx({ ruta: 'contrato.docx', incluir_tablas: true }) → retorna texto plano con tablas"
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
# Office Document Manager Skill
|
|
174
|
+
|
|
175
|
+
## Cuándo se Activa
|
|
176
|
+
|
|
177
|
+
Esta skill se activa cuando el usuario necesita:
|
|
178
|
+
- **Leer** archivos PDF, Word (.docx), Excel (.xlsx) o PowerPoint (.pptx)
|
|
179
|
+
- **Generar** nuevos archivos en cualquiera de esos formatos
|
|
180
|
+
- **Convertir** contenido entre formatos (ej: texto → PDF, JSON → Excel)
|
|
181
|
+
- **Extraer** datos estructurados de documentos (tablas de Excel, slides de presentación)
|
|
182
|
+
|
|
183
|
+
## Herramientas Disponibles
|
|
184
|
+
|
|
185
|
+
| Tool | Qué hace | Cuándo usarla |
|
|
186
|
+
|------|----------|---------------|
|
|
187
|
+
| `office_leer_pdf` | Extrae texto + metadata de PDF | Leer informes, contratos, libros en PDF |
|
|
188
|
+
| `office_escribir_pdf` | Genera PDF desde texto | Crear reportes, resúmenes, documentación |
|
|
189
|
+
| `office_leer_docx` | Extrae texto y tablas de Word | Leer documentos, contratos, informes Word |
|
|
190
|
+
| `office_escribir_docx` | Genera Word con estructura | Crear documentos formales con títulos/tablas |
|
|
191
|
+
| `office_leer_xlsx` | Lee hojas de Excel como JSON | Procesar datos, tablas, inventarios |
|
|
192
|
+
| `office_escribir_xlsx` | Genera Excel desde JSON | Exportar datos, crear reportes tabulares |
|
|
193
|
+
| `office_leer_pptx` | Extrae texto de cada slide | Resumir presentaciones, extraer contenido |
|
|
194
|
+
| `office_escribir_pptx` | Genera presentación PowerPoint | Crear slides desde datos o resúmenes |
|
|
195
|
+
|
|
196
|
+
## Workflow por Caso de Uso
|
|
197
|
+
|
|
198
|
+
### Leer y resumir un documento
|
|
199
|
+
1. `office_leer_pdf/docx/xlsx/pptx` → extraer contenido
|
|
200
|
+
2. Procesar y resumir el texto
|
|
201
|
+
3. `notify` → enviar resumen al usuario
|
|
202
|
+
|
|
203
|
+
### Transformar datos a Excel
|
|
204
|
+
1. Obtener datos (de memoria, herramienta o cálculo)
|
|
205
|
+
2. Estructurar en `hojas` con `datos` como array de objetos
|
|
206
|
+
3. `office_escribir_xlsx` → generar archivo
|
|
207
|
+
4. Confirmar ruta al usuario
|
|
208
|
+
|
|
209
|
+
### Crear un informe PDF
|
|
210
|
+
1. Compilar el contenido del informe como texto
|
|
211
|
+
2. `office_escribir_pdf` → generar con título y márgenes
|
|
212
|
+
3. Confirmar que el archivo quedó en la ruta esperada
|
|
213
|
+
|
|
214
|
+
### Generar una presentación
|
|
215
|
+
1. Definir estructura: título + array de slides (título + puntos)
|
|
216
|
+
2. `office_escribir_pptx` → generar .pptx
|
|
217
|
+
3. Opcional: incluir notas del presentador en cada slide
|
|
218
|
+
|
|
219
|
+
## Parámetros Clave
|
|
220
|
+
|
|
221
|
+
### `parrafos` para DOCX
|
|
222
|
+
```json
|
|
223
|
+
[
|
|
224
|
+
{ "texto": "Capítulo 1", "tipo": "titulo1" },
|
|
225
|
+
{ "texto": "Subtítulo", "tipo": "titulo2" },
|
|
226
|
+
{ "texto": "Contenido normal", "tipo": "parrafo" },
|
|
227
|
+
{ "texto": "Ítem de lista", "tipo": "lista" },
|
|
228
|
+
{ "texto": "Texto importante", "tipo": "parrafo", "negrita": true }
|
|
229
|
+
]
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### `hojas` para XLSX
|
|
233
|
+
```json
|
|
234
|
+
[
|
|
235
|
+
{
|
|
236
|
+
"nombre": "Ventas",
|
|
237
|
+
"datos": [
|
|
238
|
+
{ "Mes": "Enero", "Total": 5000 },
|
|
239
|
+
{ "Mes": "Febrero", "Total": 6200 }
|
|
240
|
+
]
|
|
241
|
+
}
|
|
242
|
+
]
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
### `diapositivas` para PPTX
|
|
246
|
+
```json
|
|
247
|
+
[
|
|
248
|
+
{
|
|
249
|
+
"titulo": "¿Qué es Machine Learning?",
|
|
250
|
+
"puntos": ["Subcampo de IA", "Aprende de datos", "Hace predicciones"],
|
|
251
|
+
"notas": "Mencionar el enfoque supervisado y no supervisado"
|
|
252
|
+
}
|
|
253
|
+
]
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
## Errores a Evitar
|
|
257
|
+
|
|
258
|
+
- ❌ Intentar leer un archivo que no existe (verifica con `fs_exists` primero)
|
|
259
|
+
- ❌ Sobrescribir sin confirmar cuando el archivo destino ya existe
|
|
260
|
+
- ❌ Usar `contenido` y `puntos` a la vez en PPTX — `puntos` tiene prioridad
|
|
261
|
+
- ❌ Pasar un array de arrays como `datos` de XLSX cuando se esperan objetos con claves
|
|
262
|
+
- ❌ Intentar leer PDF de más de 100 páginas sin especificar rango (usar `pagina_inicio`/`pagina_fin`)
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: capability_discovery
|
|
3
|
+
description: "Core discovery skill - find any capability with a single keyword"
|
|
4
|
+
version: 1.2.0
|
|
5
|
+
author: Hive Team
|
|
6
|
+
icon: "🔍"
|
|
7
|
+
category: core
|
|
8
|
+
permissions: []
|
|
9
|
+
dependencies: []
|
|
10
|
+
tools: [search_knowledge]
|
|
11
|
+
|
|
12
|
+
triggers:
|
|
13
|
+
- cómo busco herramientas
|
|
14
|
+
- cómo encuentro skills
|
|
15
|
+
- how to find tools
|
|
16
|
+
- search knowledge
|
|
17
|
+
- discovery
|
|
18
|
+
- buscar en la base
|
|
19
|
+
- encontrar herramientas
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# capability_discovery — Sistema de Discovery
|
|
24
|
+
|
|
25
|
+
Arrancás con 7 herramientas esenciales. Todo lo demás se descubre con **search_knowledge**.
|
|
26
|
+
|
|
27
|
+
## Regla de oro: UNA PALABRA, busca TODO
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
search_knowledge(query="email")
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Eso solo — sin type, sin frases largas — devuelve tools, skills, MCP y playbook relacionados con "email".
|
|
34
|
+
|
|
35
|
+
**Evitá esto:** `search_knowledge(type="tools", query="enviar correo electrónico")` — el motor rankea por relevancia (BM25), así que una frase larga no falla, pero diluye el resultado: cada palabra de más sesga el ranking hacia coincidencias parciales y mezcla resultados menos relevantes.
|
|
36
|
+
|
|
37
|
+
**Preferí esto:** `search_knowledge(query="email")` — una palabra precisa da el resultado más ajustado y encuentra todo lo relacionado.
|
|
38
|
+
|
|
39
|
+
## Cuándo especificar type
|
|
40
|
+
|
|
41
|
+
Solo si querés filtrar resultados que ya son muchos:
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
search_knowledge(query="email", type="mcp") → solo herramientas externas de email
|
|
45
|
+
search_knowledge(query="email", type="tools") → solo herramientas nativas de email
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Por defecto type="all" — no hace falta especificarlo.
|
|
49
|
+
|
|
50
|
+
## Regla de prioridad
|
|
51
|
+
|
|
52
|
+
**Preferí herramientas nativas sobre MCP** cuando ambas sirven.
|
|
53
|
+
- Nativas: más rápidas, sin red, siempre disponibles
|
|
54
|
+
- MCP: cuando no hay equivalente nativo
|
|
55
|
+
|
|
56
|
+
## Flujo de uso
|
|
57
|
+
|
|
58
|
+
1. Identificá la palabra clave de lo que necesitás
|
|
59
|
+
2. `search_knowledge(query="<palabra>")` → resultados de todos los tipos
|
|
60
|
+
3. Cada resultado MCP incluye `server_id`; usalo para identificar la integración y buscar un especialista existente
|
|
61
|
+
4. Antes del primer uso de un servidor sin especialista, seguí el flujo de consentimiento del system prompt
|
|
62
|
+
5. Las tools encontradas se inyectan automáticamente en tu contexto para una ejecución directa solo cuando corresponda
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Ejemplos
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
search_knowledge(query="pdf") → tools para leer/escribir PDFs
|
|
70
|
+
search_knowledge(query="browser") → tools de navegación web
|
|
71
|
+
search_knowledge(query="github") → tools MCP de GitHub si están configuradas
|
|
72
|
+
search_knowledge(query="calendar") → tools de Google Calendar
|
|
73
|
+
search_knowledge(query="A2UI") → skills del panel interactivo
|
|
74
|
+
search_knowledge(query="slack") → tools de Slack si están configuradas
|
|
75
|
+
```
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: browser_automate
|
|
3
|
+
description: "Automate web workflows with navigation, clicks, form filling, and visual verification"
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
author: Hive Team
|
|
6
|
+
icon: "🤖"
|
|
7
|
+
category: web
|
|
8
|
+
permissions:
|
|
9
|
+
- browser_control
|
|
10
|
+
dependencies: []
|
|
11
|
+
tools: [browser_navigate, browser_click, browser_type, browser_screenshot]
|
|
12
|
+
|
|
13
|
+
# Structured skill fields
|
|
14
|
+
triggers:
|
|
15
|
+
- "automatizá el navegador"
|
|
16
|
+
- "automate browser"
|
|
17
|
+
- "completá el formulario"
|
|
18
|
+
- "fill form"
|
|
19
|
+
- "hacé clic en"
|
|
20
|
+
- "click on"
|
|
21
|
+
- "iniciá sesión"
|
|
22
|
+
- "login"
|
|
23
|
+
- "registrate"
|
|
24
|
+
- "sign up"
|
|
25
|
+
- "interactuá con la web"
|
|
26
|
+
- "interact with website"
|
|
27
|
+
- "flujo web"
|
|
28
|
+
- "web workflow"
|
|
29
|
+
|
|
30
|
+
preferred_agents: []
|
|
31
|
+
|
|
32
|
+
steps:
|
|
33
|
+
- step: 1
|
|
34
|
+
action: browser_navigate
|
|
35
|
+
instruction: "Navigate to target URL and wait for page to fully load"
|
|
36
|
+
params:
|
|
37
|
+
url: "target URL"
|
|
38
|
+
output: page_loaded
|
|
39
|
+
|
|
40
|
+
- step: 2
|
|
41
|
+
action: browser_click
|
|
42
|
+
instruction: "Click on elements (buttons, links) to navigate or trigger actions"
|
|
43
|
+
params:
|
|
44
|
+
selector: "CSS selector for element"
|
|
45
|
+
output: click_result
|
|
46
|
+
|
|
47
|
+
- step: 3
|
|
48
|
+
action: browser_type
|
|
49
|
+
instruction: "Type text into form fields (inputs, textareas)"
|
|
50
|
+
params:
|
|
51
|
+
selector: "CSS selector for input"
|
|
52
|
+
text: "text to type"
|
|
53
|
+
output: type_result
|
|
54
|
+
|
|
55
|
+
- step: 4
|
|
56
|
+
action: browser_screenshot
|
|
57
|
+
instruction: "Take screenshot to verify state after interactions"
|
|
58
|
+
output: verification_screenshot
|
|
59
|
+
|
|
60
|
+
rules:
|
|
61
|
+
- "Wait for page to fully load after each navigation or significant interaction"
|
|
62
|
+
- "Use specific, stable CSS selectors (IDs preferred over classes)"
|
|
63
|
+
- "Take screenshots after critical steps for verification"
|
|
64
|
+
- "Handle errors gracefully — element may not exist or be interactable"
|
|
65
|
+
- "For multi-step flows, verify state after each step before proceeding"
|
|
66
|
+
|
|
67
|
+
output_format:
|
|
68
|
+
structure: markdown
|
|
69
|
+
sections:
|
|
70
|
+
- "workflow_steps"
|
|
71
|
+
- "final_state"
|
|
72
|
+
- "screenshot_path"
|
|
73
|
+
max_length: "Summary of automation flow"
|
|
74
|
+
|
|
75
|
+
examples:
|
|
76
|
+
- user_input: "automatizá el login en example.com"
|
|
77
|
+
expected_behavior: "Navigate → type credentials → click submit → screenshot verification"
|
|
78
|
+
|
|
79
|
+
- user_input: "completá el formulario de contacto"
|
|
80
|
+
expected_behavior: "Navigate → type name/email/message → click submit → verify submission"
|
|
81
|
+
|
|
82
|
+
- user_input: "hacé clic en todos los enlaces del menú"
|
|
83
|
+
expected_behavior: "Navigate → click each menu item → screenshot each page"
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
# Browser Automate Skill
|
|
87
|
+
|
|
88
|
+
## Cuándo se Activa
|
|
89
|
+
|
|
90
|
+
Esta skill se activa para automatizar flujos de interacción con aplicaciones web: logins, formularios, navegación programática.
|
|
91
|
+
|
|
92
|
+
## Herramientas Disponibles
|
|
93
|
+
|
|
94
|
+
| Tool | Qué hace | Cuándo usarla |
|
|
95
|
+
|------|----------|---------------|
|
|
96
|
+
| `browser_navigate` | Navega a URL | Inicio de flujo |
|
|
97
|
+
| `browser_click` | Click en elementos | Botones, enlaces, triggers |
|
|
98
|
+
| `browser_type` | Escribe en inputs | Formularios, búsquedas |
|
|
99
|
+
| `browser_screenshot` | Captura estado | Verificación visual |
|
|
100
|
+
|
|
101
|
+
## Workflow Típico
|
|
102
|
+
|
|
103
|
+
1. **Navegar** → URL inicial
|
|
104
|
+
2. **Interactuar** → click/type según flujo
|
|
105
|
+
3. **Verificar** → screenshot después de acciones críticas
|
|
106
|
+
4. **Repetir** → para flujos multi-paso
|
|
107
|
+
|
|
108
|
+
## Mejores Prácticas
|
|
109
|
+
|
|
110
|
+
- Selectores estables (IDs > classes > XPath)
|
|
111
|
+
- Esperar carga después de navegación
|
|
112
|
+
- Verificar estado visual con screenshots
|
|
113
|
+
- Manejar errores de elementos no encontrados
|
|
114
|
+
|
|
115
|
+
## Errores a Evitar
|
|
116
|
+
|
|
117
|
+
- ❌ Selectores frágiles que cambian
|
|
118
|
+
- ❌ No esperar carga de página
|
|
119
|
+
- ❌ Ignorar errores de elementos
|
|
120
|
+
- ❌ No verificar estado después de acciones
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: browser_scrape
|
|
3
|
+
description: "Navigate to web pages and capture rendered content including screenshots for dynamic sites"
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
author: Hive Team
|
|
6
|
+
icon: "📸"
|
|
7
|
+
category: web
|
|
8
|
+
permissions:
|
|
9
|
+
- browser_control
|
|
10
|
+
dependencies: []
|
|
11
|
+
tools: [browser_navigate, browser_screenshot, web_fetch]
|
|
12
|
+
|
|
13
|
+
# Structured skill fields
|
|
14
|
+
triggers:
|
|
15
|
+
- "capturá el contenido"
|
|
16
|
+
- "scrape content"
|
|
17
|
+
- "obtené la página renderizada"
|
|
18
|
+
- "get rendered page"
|
|
19
|
+
- "sitios dinámicos"
|
|
20
|
+
- "dynamic sites"
|
|
21
|
+
- "web con javascript"
|
|
22
|
+
- "javascript websites"
|
|
23
|
+
- "tomá screenshot y contenido"
|
|
24
|
+
- "screenshot and content"
|
|
25
|
+
|
|
26
|
+
preferred_agents: []
|
|
27
|
+
|
|
28
|
+
steps:
|
|
29
|
+
- step: 1
|
|
30
|
+
action: browser_navigate
|
|
31
|
+
instruction: "Navigate to URL and wait for full page load including JavaScript rendering"
|
|
32
|
+
params:
|
|
33
|
+
url: "target URL"
|
|
34
|
+
output: page_loaded
|
|
35
|
+
|
|
36
|
+
- step: 2
|
|
37
|
+
action: browser_screenshot
|
|
38
|
+
instruction: "Take screenshot to capture visual state of rendered page"
|
|
39
|
+
output: screenshot
|
|
40
|
+
|
|
41
|
+
- step: 3
|
|
42
|
+
action: web_fetch
|
|
43
|
+
instruction: "Extract text content from rendered page as markdown"
|
|
44
|
+
output: extracted_content
|
|
45
|
+
|
|
46
|
+
- step: 4
|
|
47
|
+
action: synthesize
|
|
48
|
+
instruction: "Combine screenshot and text content for comprehensive capture"
|
|
49
|
+
output: scraped_data
|
|
50
|
+
|
|
51
|
+
rules:
|
|
52
|
+
- "Wait for full page load including JavaScript-rendered content"
|
|
53
|
+
- "Take screenshot before extracting text to capture initial state"
|
|
54
|
+
- "For infinite scroll pages, scroll down and capture multiple screenshots"
|
|
55
|
+
- "Respect website terms of service — no aggressive scraping"
|
|
56
|
+
- "Store both screenshot and text for complete record"
|
|
57
|
+
|
|
58
|
+
output_format:
|
|
59
|
+
structure: markdown
|
|
60
|
+
sections:
|
|
61
|
+
- "url"
|
|
62
|
+
- "screenshot_path"
|
|
63
|
+
- "extracted_content"
|
|
64
|
+
- "timestamp"
|
|
65
|
+
max_length: "Full content extraction"
|
|
66
|
+
|
|
67
|
+
examples:
|
|
68
|
+
- user_input: "capturá el contenido de https://example.com/dashboard"
|
|
69
|
+
expected_behavior: "browser_navigate → wait for JS render → browser_screenshot → browser_fetch → return both"
|
|
70
|
+
|
|
71
|
+
- user_input: "obtené la página renderizada de la app"
|
|
72
|
+
expected_behavior: "Navigate → wait for SPA to load → screenshot + fetch content"
|
|
73
|
+
|
|
74
|
+
- user_input: "scrapeá este sitio con javascript"
|
|
75
|
+
expected_behavior: "Full browser render → capture visual and text content"
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
# Browser Scrape Skill
|
|
79
|
+
|
|
80
|
+
## Cuándo se Activa
|
|
81
|
+
|
|
82
|
+
Esta skill se activa para sitios web dinámicos que requieren JavaScript rendering, donde el contenido no está disponible en HTML estático.
|
|
83
|
+
|
|
84
|
+
## Herramientas Disponibles
|
|
85
|
+
|
|
86
|
+
| Tool | Qué hace | Cuándo usarla |
|
|
87
|
+
|------|----------|---------------|
|
|
88
|
+
| `browser_navigate` | Navega y renderiza página completa | Sitios con JavaScript/SPA |
|
|
89
|
+
| `browser_screenshot` | Captura estado visual | Evidencia de contenido renderizado |
|
|
90
|
+
| `web_fetch` | Extrae texto como markdown | Contenido textual de página renderizada |
|
|
91
|
+
|
|
92
|
+
## Workflow
|
|
93
|
+
|
|
94
|
+
1. **Navegar** → `browser_navigate({ url })` + esperar renderizado JS
|
|
95
|
+
2. **Capturar visual** → `browser_screenshot()`
|
|
96
|
+
3. **Extraer texto** → `web_fetch()`
|
|
97
|
+
4. **Combinar** → screenshot + texto para scrape completo
|
|
98
|
+
|
|
99
|
+
## Mejores Prácticas
|
|
100
|
+
|
|
101
|
+
- Esperar renderizado completo de JavaScript
|
|
102
|
+
- Para infinite scroll: hacer scroll y múltiples screenshots
|
|
103
|
+
- Capturar antes y después de interacciones si es dinámico
|
|
104
|
+
|
|
105
|
+
## Errores a Evitar
|
|
106
|
+
|
|
107
|
+
- ❌ No esperar renderizado JavaScript
|
|
108
|
+
- ❌ Solo capturar HTML estático para sitios SPA
|
|
109
|
+
- ❌ Ignorar términos de servicio del sitio
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: web_monitor
|
|
3
|
+
description: "Monitor changes in web sources and track updates over time with persistent memory"
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
author: Hive Team
|
|
6
|
+
icon: "📡"
|
|
7
|
+
category: web
|
|
8
|
+
permissions:
|
|
9
|
+
- internet_access
|
|
10
|
+
- memory_write
|
|
11
|
+
- memory_read
|
|
12
|
+
dependencies: []
|
|
13
|
+
tools: [web_search, web_fetch, memory_write, memory_read]
|
|
14
|
+
|
|
15
|
+
# Structured skill fields
|
|
16
|
+
triggers:
|
|
17
|
+
- "monitoreá"
|
|
18
|
+
- "monitor"
|
|
19
|
+
- "seguí los cambios"
|
|
20
|
+
- "track changes"
|
|
21
|
+
- "avisame si cambia"
|
|
22
|
+
- "notify if changes"
|
|
23
|
+
- "actualización de"
|
|
24
|
+
- "update on"
|
|
25
|
+
- "novedades de"
|
|
26
|
+
- "news about"
|
|
27
|
+
- "cambios en"
|
|
28
|
+
- "changes in"
|
|
29
|
+
|
|
30
|
+
preferred_agents: []
|
|
31
|
+
|
|
32
|
+
steps:
|
|
33
|
+
- step: 1
|
|
34
|
+
action: memory_read
|
|
35
|
+
instruction: "Read previously stored content for this URL/topic to compare"
|
|
36
|
+
params:
|
|
37
|
+
title: "monitor_{url_or_topic}"
|
|
38
|
+
output: previous_content
|
|
39
|
+
|
|
40
|
+
- step: 2
|
|
41
|
+
action: web_fetch
|
|
42
|
+
instruction: "Fetch current content from monitored URL"
|
|
43
|
+
params:
|
|
44
|
+
url: "monitored URL"
|
|
45
|
+
output: current_content
|
|
46
|
+
|
|
47
|
+
- step: 3
|
|
48
|
+
action: compare
|
|
49
|
+
instruction: "Compare current content with previous version to identify changes"
|
|
50
|
+
output: changes_detected
|
|
51
|
+
|
|
52
|
+
- step: 4
|
|
53
|
+
action: memory_write
|
|
54
|
+
instruction: "Store current content as new baseline for future comparisons"
|
|
55
|
+
params:
|
|
56
|
+
title: "monitor_{url_or_topic}"
|
|
57
|
+
content: "current content + timestamp"
|
|
58
|
+
output: stored
|
|
59
|
+
|
|
60
|
+
- step: 5
|
|
61
|
+
action: notify
|
|
62
|
+
instruction: "If changes detected, notify user with summary of what changed"
|
|
63
|
+
output: notification_sent
|
|
64
|
+
|
|
65
|
+
rules:
|
|
66
|
+
- "Always store baseline on first monitor request"
|
|
67
|
+
- "Compare content systematically — identify additions, removals, modifications"
|
|
68
|
+
- "Notify only if meaningful changes detected (ignore timestamps, ads)"
|
|
69
|
+
- "Store timestamp with each baseline for tracking frequency"
|
|
70
|
+
- "For recurring monitors, use cron.create to schedule automatic checks"
|
|
71
|
+
|
|
72
|
+
output_format:
|
|
73
|
+
structure: markdown
|
|
74
|
+
sections:
|
|
75
|
+
- "url"
|
|
76
|
+
- "change_detected"
|
|
77
|
+
- "summary_of_changes"
|
|
78
|
+
- "timestamp"
|
|
79
|
+
max_length: "Brief summary of changes"
|
|
80
|
+
|
|
81
|
+
examples:
|
|
82
|
+
- user_input: "monitoreá cambios en https://example.com/pricing"
|
|
83
|
+
expected_behavior: "Fetch current pricing → store as baseline → on next check, compare and notify if changed"
|
|
84
|
+
|
|
85
|
+
- user_input: "avisame si hay novedades sobre IA"
|
|
86
|
+
expected_behavior: "web_search('IA news') → compare with stored results → notify if new significant news"
|
|
87
|
+
|
|
88
|
+
- user_input: "seguí los cambios en la documentación de React"
|
|
89
|
+
expected_behavior: "Fetch React docs → store baseline → periodic checks → notify on content changes"
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
# Web Monitor Skill
|
|
93
|
+
|
|
94
|
+
## Cuándo se Activa
|
|
95
|
+
|
|
96
|
+
Esta skill se activa cuando el usuario necesita:
|
|
97
|
+
- Monitorear cambios en una URL específica
|
|
98
|
+
- Recibir notificaciones de actualizaciones
|
|
99
|
+
- Seguir novedades sobre un tema
|
|
100
|
+
- Trackear evolución de contenido
|
|
101
|
+
|
|
102
|
+
## Herramientas Disponibles
|
|
103
|
+
|
|
104
|
+
| Tool | Qué hace | Cuándo usarla |
|
|
105
|
+
|------|----------|---------------|
|
|
106
|
+
| `web_fetch` | Descarga contenido de URL | Obtener contenido actual |
|
|
107
|
+
| `web_search` | Busca novedades | Monitoreo por tema (no URL fija) |
|
|
108
|
+
| `memory_write` | Guarda baseline | Almacenar contenido para comparación |
|
|
109
|
+
| `memory_read` | Recupera baseline anterior | Comparar con contenido actual |
|
|
110
|
+
|
|
111
|
+
## Workflow
|
|
112
|
+
|
|
113
|
+
1. **Primera ejecución**: `web_fetch` → `memory_write` (baseline)
|
|
114
|
+
2. **Chequeos siguientes**: `memory_read` → `web_fetch` → comparar → `notify` si cambia
|
|
115
|
+
3. **Actualizar baseline**: `memory_write` con nuevo contenido
|
|
116
|
+
|
|
117
|
+
## Mejores Prácticas
|
|
118
|
+
|
|
119
|
+
- Ignorar cambios menores (timestamps, ads, contenido dinámico irrelevante)
|
|
120
|
+
- Notificar solo cambios significativos
|
|
121
|
+
- Para monitoreo periódico, combinar con `cron.create`
|
|
122
|
+
|
|
123
|
+
## Errores a Evitar
|
|
124
|
+
|
|
125
|
+
- ❌ No almacenar baseline inicial
|
|
126
|
+
- ❌ Notificar por cambios triviales
|
|
127
|
+
- ❌ No actualizar timestamp de baseline
|