@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,206 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: a2ui_interactive
|
|
3
|
+
description: "Create multi-step interactive workflows using A2UI v0.9 protocol with tabs, modals, choice pickers, and dynamic updates based on user actions"
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
author: Hive Team
|
|
6
|
+
icon: "🔄"
|
|
7
|
+
category: a2ui
|
|
8
|
+
permissions:
|
|
9
|
+
- a2ui_write
|
|
10
|
+
dependencies: []
|
|
11
|
+
tools: [a2ui_create_surface, a2ui_update_components, a2ui_update_data_model, a2ui_delete_surface]
|
|
12
|
+
|
|
13
|
+
# Structured skill fields
|
|
14
|
+
triggers:
|
|
15
|
+
- "interfaz interactiva A2UI"
|
|
16
|
+
- "A2UI interactive UI"
|
|
17
|
+
- "flujo A2UI"
|
|
18
|
+
- "A2UI workflow"
|
|
19
|
+
- "asistente A2UI"
|
|
20
|
+
- "A2UI assistant"
|
|
21
|
+
- "wizard A2UI"
|
|
22
|
+
- "flujo multi-paso A2UI"
|
|
23
|
+
- "multi-step flow A2UI"
|
|
24
|
+
- "workflow interactivo"
|
|
25
|
+
- "interactive workflow"
|
|
26
|
+
- "asistente paso a paso"
|
|
27
|
+
- "step-by-step assistant"
|
|
28
|
+
- "A2UI con tabs y modales"
|
|
29
|
+
|
|
30
|
+
preferred_agents: []
|
|
31
|
+
|
|
32
|
+
steps:
|
|
33
|
+
- step: 1
|
|
34
|
+
action: a2ui_create_surface
|
|
35
|
+
instruction: "Create an A2UI surface for the interactive workflow. Set theme with agent display name."
|
|
36
|
+
params:
|
|
37
|
+
surfaceId: "Descriptive ID (e.g. 'onboarding_flow', 'booking_assistant')"
|
|
38
|
+
catalogId: "https://a2ui.org/specification/v0_9/basic_catalog.json"
|
|
39
|
+
theme: "{ primaryColor: '#8B5CF6', agentDisplayName: 'Asistente' }"
|
|
40
|
+
output: surface_created
|
|
41
|
+
|
|
42
|
+
- step: 2
|
|
43
|
+
action: a2ui_update_components
|
|
44
|
+
instruction: "Build the initial workflow layout. Use Tabs for multi-step flows, Modal for confirmations, ChoicePicker for selections."
|
|
45
|
+
params:
|
|
46
|
+
surfaceId: "Same surfaceId from step 1"
|
|
47
|
+
components: "Array of A2UI component definitions for workflow steps"
|
|
48
|
+
output: workflow_layout
|
|
49
|
+
|
|
50
|
+
- step: 3
|
|
51
|
+
action: a2ui_update_data_model
|
|
52
|
+
instruction: "Initialize workflow state data. Include all fields needed across steps."
|
|
53
|
+
params:
|
|
54
|
+
surfaceId: "Same surfaceId"
|
|
55
|
+
path: "/"
|
|
56
|
+
value: "Initial workflow state object"
|
|
57
|
+
output: state_initialized
|
|
58
|
+
|
|
59
|
+
- step: 4
|
|
60
|
+
action: a2ui_update_components
|
|
61
|
+
instruction: "Update components based on user actions. Show/hide steps, change options, add validation feedback."
|
|
62
|
+
params:
|
|
63
|
+
surfaceId: "Same surfaceId"
|
|
64
|
+
components: "Updated component definitions reflecting state changes"
|
|
65
|
+
output: workflow_updated
|
|
66
|
+
|
|
67
|
+
- step: 5
|
|
68
|
+
action: a2ui_delete_surface
|
|
69
|
+
instruction: "Delete the workflow surface when the flow is completed or cancelled."
|
|
70
|
+
params:
|
|
71
|
+
surfaceId: "Same surfaceId"
|
|
72
|
+
output: surface_deleted
|
|
73
|
+
|
|
74
|
+
rules:
|
|
75
|
+
- "Always call a2ui_create_surface BEFORE a2ui_update_components"
|
|
76
|
+
- "Components MUST include a root component with id='root'"
|
|
77
|
+
- "Use Tabs for multi-step workflows with tabItems: [{title, child}]"
|
|
78
|
+
- "Use Modal for confirmation dialogs: {entryPointChild, contentChild}"
|
|
79
|
+
- "Use ChoicePicker for selections: variant='mutuallyExclusive' for single, omit for multiple"
|
|
80
|
+
- "Use Button actions with event format: {event: {name: 'action_name', context: {key: {path: '/data/key'}}}}"
|
|
81
|
+
- "Update workflow state with a2ui_update_data_model after each user action"
|
|
82
|
+
- "Use a2ui_update_components to change the UI structure between steps"
|
|
83
|
+
- "Show progress indicators with Text components showing current step"
|
|
84
|
+
- "Validate inputs with checks on TextField: [{call: 'required', args: {value: {path: '...'}}, message: 'Required'}]"
|
|
85
|
+
- "Delete surfaces with a2ui_delete_surface when workflow is completed"
|
|
86
|
+
- "Use an A2UI Modal for confirmations and A2UI layouts for multi-step workflows"
|
|
87
|
+
|
|
88
|
+
output_format:
|
|
89
|
+
structure: a2ui_interactive
|
|
90
|
+
sections:
|
|
91
|
+
- "surface_creation"
|
|
92
|
+
- "workflow_layout"
|
|
93
|
+
- "state_initialization"
|
|
94
|
+
- "dynamic_updates"
|
|
95
|
+
- "cleanup"
|
|
96
|
+
max_length: "Structured JSON components"
|
|
97
|
+
|
|
98
|
+
examples:
|
|
99
|
+
- user_input: "creá un asistente de reserva"
|
|
100
|
+
expected_behavior: "a2ui_create_surface(surfaceId:'booking', theme:{primaryColor:'#8B5CF6'}) → a2ui_update_components with Tabs[step1:service, step2:datetime, step3:confirm] → a2ui_update_data_model(path:'/', value:{service:'', date:'', time:''})"
|
|
101
|
+
|
|
102
|
+
- user_input: "I need a multi-step onboarding flow"
|
|
103
|
+
expected_behavior: "a2ui_create_surface → a2ui_update_components with Column[step indicator, step content, nav buttons] → a2ui_update_data_model with empty state → on action: a2ui_update_components for next step"
|
|
104
|
+
|
|
105
|
+
- user_input: "creá un wizard con selección de opciones"
|
|
106
|
+
expected_behavior: "a2ui_create_surface → a2ui_update_components with ChoicePicker for options, Button for navigation → a2ui_update_data_model with initial state"
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
# A2UI Interactive Skill
|
|
110
|
+
|
|
111
|
+
## Cuándo se Activa
|
|
112
|
+
|
|
113
|
+
Para crear flujos interactivos multi-paso usando A2UI v0.9. Usar cuando se necesita:
|
|
114
|
+
- Wizards paso a paso
|
|
115
|
+
- Flujos de onboarding
|
|
116
|
+
- Asistentes de reserva/configuración
|
|
117
|
+
- Formularios con selections dinámicas
|
|
118
|
+
- Interacciones con modales de confirmación
|
|
119
|
+
- UIs que cambian según las acciones del usuario
|
|
120
|
+
|
|
121
|
+
## Herramientes Disponibles
|
|
122
|
+
|
|
123
|
+
| Tool | Qué hace | Cuándo usarla |
|
|
124
|
+
|------|----------|---------------|
|
|
125
|
+
| `a2ui_create_surface` | Crea la superficie A2UI | Siempre primero |
|
|
126
|
+
| `a2ui_update_components` | Envía/actualiza componentes | Para layout y cambios de UI |
|
|
127
|
+
| `a2ui_update_data_model` | Actualiza datos | Para estado del workflow |
|
|
128
|
+
| `a2ui_delete_surface` | Elimina la superficie | Al terminar flujo |
|
|
129
|
+
|
|
130
|
+
## Flujo Obligatorio
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
1. a2ui_create_surface(surfaceId, catalogId, theme)
|
|
134
|
+
2. a2ui_update_components(surfaceId, components[])
|
|
135
|
+
3. a2ui_update_data_model(surfaceId, path, value) // estado inicial
|
|
136
|
+
4. [recibir acción del usuario]
|
|
137
|
+
5. a2ui_update_data_model(...) // actualizar estado con respuesta
|
|
138
|
+
6. a2ui_update_components(...) // cambiar UI al siguiente paso
|
|
139
|
+
7. ... repetir 4-6 según necesidad ...
|
|
140
|
+
8. a2ui_delete_surface(surfaceId) // al terminar
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## Patrones de Flujo Interactivo
|
|
144
|
+
|
|
145
|
+
### Wizard con Tabs (multi-paso)
|
|
146
|
+
|
|
147
|
+
```json
|
|
148
|
+
[
|
|
149
|
+
{id: "root", component: "Column", children: ["step_indicator", "tabs"]},
|
|
150
|
+
{id: "step_indicator", component: "Text", text: {path: "/stepLabel"}, variant: "caption"},
|
|
151
|
+
{id: "tabs", component: "Tabs", tabs: [
|
|
152
|
+
{title: "Servicio", child: "step1"},
|
|
153
|
+
{title: "Fecha", child: "step2"},
|
|
154
|
+
{title: "Confirmar", child: "step3"}
|
|
155
|
+
]},
|
|
156
|
+
{id: "step1", component: "Column", children: ["svc_label", "svc_picker"]},
|
|
157
|
+
{id: "svc_label", component: "Text", text: "Seleccioná un servicio", variant: "h3"},
|
|
158
|
+
{id: "svc_picker", component: "ChoicePicker", variant: "mutuallyExclusive", options: [...], value: {path: "/data/service"}},
|
|
159
|
+
// ... más pasos
|
|
160
|
+
]
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Confirmación con Modal
|
|
164
|
+
|
|
165
|
+
```json
|
|
166
|
+
[
|
|
167
|
+
{id: "confirm_modal", component: "Modal", trigger: "confirm_btn", content: "confirm_dialog"},
|
|
168
|
+
{id: "confirm_btn", component: "Button", child: "confirm_btn_text", action: {}},
|
|
169
|
+
{id: "confirm_btn_text", component: "Text", text: "Confirmar Reserva"},
|
|
170
|
+
{id: "confirm_dialog", component: "Column", children: ["confirm_msg", "confirm_yes", "confirm_no"]},
|
|
171
|
+
{id: "confirm_msg", component: "Text", text: "¿Confirmás tu reserva?"},
|
|
172
|
+
{id: "confirm_yes", component: "Button", child: "yes_text", variant: "primary", action: {event: {name: "confirm_booking", context: {service: {path: "/data/service"}}}}},
|
|
173
|
+
{id: "yes_text", component: "Text", text: "Sí, confirmar"},
|
|
174
|
+
{id: "confirm_no", component: "Button", child: "no_text", variant: "borderless", action: {event: {name: "cancel"}}}},
|
|
175
|
+
{id: "no_text", component: "Text", text: "Cancelar"}
|
|
176
|
+
]
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### Selección con ChoicePicker
|
|
180
|
+
|
|
181
|
+
```json
|
|
182
|
+
[
|
|
183
|
+
{id: "service_picker", component: "ChoicePicker",
|
|
184
|
+
variant: "mutuallyExclusive",
|
|
185
|
+
options: [
|
|
186
|
+
{label: "Consulta General", value: "general"},
|
|
187
|
+
{label: "Especializada", value: "specialized"},
|
|
188
|
+
{label: "Urgencia", value: "urgent"}
|
|
189
|
+
],
|
|
190
|
+
value: {path: "/data/serviceType"},
|
|
191
|
+
action: {event: {name: "service_selected", context: {service: {path: "/data/serviceType"}}}}
|
|
192
|
+
}
|
|
193
|
+
]
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## Mejores Prácticas
|
|
197
|
+
|
|
198
|
+
- Usar Tabs para wizards multi-paso
|
|
199
|
+
- Usar Modal para confirmaciones antes de acciones críticas
|
|
200
|
+
- Usar ChoicePicker con `variant: "mutuallyExclusive"` para selección única
|
|
201
|
+
- Mostrar indicador de progreso (paso X de Y)
|
|
202
|
+
- Actualizar data model después de cada acción del usuario
|
|
203
|
+
- Usar `a2ui_update_components` para cambiar la UI entre pasos
|
|
204
|
+
- Agregar validación con `checks` en TextField
|
|
205
|
+
- Mantener el estado del flujo en el data model (`/data/step`, `/data/serviceType`, etc.)
|
|
206
|
+
- Eliminar surfaces con `a2ui_delete_surface` al completar o cancelar
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agent_spawner
|
|
3
|
+
description: "Create and manage specialized worker agents with optimal tool assignments and lifecycle control"
|
|
4
|
+
version: 1.1.0
|
|
5
|
+
author: Hive Team
|
|
6
|
+
icon: "🤖"
|
|
7
|
+
category: agents
|
|
8
|
+
permissions:
|
|
9
|
+
- agent_manage
|
|
10
|
+
dependencies: []
|
|
11
|
+
tools: [get_available_models, agent_find, agent_create, agent_archive]
|
|
12
|
+
|
|
13
|
+
# Structured skill fields
|
|
14
|
+
triggers:
|
|
15
|
+
- "creá un agente"
|
|
16
|
+
- "create agent"
|
|
17
|
+
- "creá un worker"
|
|
18
|
+
- "create worker"
|
|
19
|
+
- "nuevo agente"
|
|
20
|
+
- "new agent"
|
|
21
|
+
- "agente especializado"
|
|
22
|
+
- "specialized agent"
|
|
23
|
+
- "buscá un agente"
|
|
24
|
+
- "find agent"
|
|
25
|
+
- "archivá agente"
|
|
26
|
+
- "archive agent"
|
|
27
|
+
- "worker inactivo"
|
|
28
|
+
- "inactive worker"
|
|
29
|
+
|
|
30
|
+
preferred_agents: []
|
|
31
|
+
|
|
32
|
+
steps:
|
|
33
|
+
- step: 1
|
|
34
|
+
action: agent_find
|
|
35
|
+
instruction: "Search for existing agents before creating new one"
|
|
36
|
+
params:
|
|
37
|
+
search: "agent name or specialty"
|
|
38
|
+
status: "idle"
|
|
39
|
+
output: existing_agents
|
|
40
|
+
|
|
41
|
+
- step: 2
|
|
42
|
+
action: decision_reuse_or_create
|
|
43
|
+
instruction: "If suitable agent exists, reuse it. Otherwise, proceed to create"
|
|
44
|
+
output: decision
|
|
45
|
+
|
|
46
|
+
- step: 3
|
|
47
|
+
action: get_available_models
|
|
48
|
+
instruction: "Query available providers and models from database to select optimal model for the agent"
|
|
49
|
+
params:
|
|
50
|
+
capabilities: "required capability (coding, chat, analysis, vision)"
|
|
51
|
+
modelType: "llm (default)"
|
|
52
|
+
output: available_models
|
|
53
|
+
|
|
54
|
+
- step: 4
|
|
55
|
+
action: agent_create
|
|
56
|
+
instruction: "Create new worker with focused system_prompt, minimal tools, and optimal provider/model"
|
|
57
|
+
params:
|
|
58
|
+
name: "specialty_name"
|
|
59
|
+
description: "Clear specialty description"
|
|
60
|
+
system_prompt: "Focused instructions for role"
|
|
61
|
+
tools_json: ["minimal", "required", "tools"]
|
|
62
|
+
providerId: "selected from get_available_models"
|
|
63
|
+
modelId: "selected from get_available_models"
|
|
64
|
+
output: new_agent_id
|
|
65
|
+
|
|
66
|
+
- step: 5
|
|
67
|
+
action: agent_archive (if needed)
|
|
68
|
+
instruction: "Archive a worker only after an explicit user request"
|
|
69
|
+
params:
|
|
70
|
+
agent_id: "agent to archive"
|
|
71
|
+
reason: "no longer needed"
|
|
72
|
+
output: archived
|
|
73
|
+
|
|
74
|
+
rules:
|
|
75
|
+
- "The COLMENA DE AGENTES catalog workers already cover web, browser, files, code, Office, A2UI, cron and APIs — creating a new worker is normally a LAST RESORT"
|
|
76
|
+
- "MCP is the explicit exception: after user confirmation, create one persistent specialist per server with mcp_server_id"
|
|
77
|
+
- "ALWAYS use agent_find BEFORE agent_create — never duplicate workers"
|
|
78
|
+
- "ALWAYS use get_available_models BEFORE agent_create — providerId y modelId son OBLIGATORIOS"
|
|
79
|
+
- "Workers have role='worker', coordinator has role='coordinator'"
|
|
80
|
+
- "Assign MINIMUM required tools (principle of least privilege)"
|
|
81
|
+
- "system_prompt must be specific and focused on specialty"
|
|
82
|
+
- "Use descriptive names that indicate agent's purpose"
|
|
83
|
+
- "Never archive agents automatically; only do it after an explicit user request"
|
|
84
|
+
|
|
85
|
+
output_format:
|
|
86
|
+
structure: markdown
|
|
87
|
+
sections:
|
|
88
|
+
- "action_taken"
|
|
89
|
+
- "agent_name"
|
|
90
|
+
- "specialty"
|
|
91
|
+
- "tools_assigned"
|
|
92
|
+
- "status"
|
|
93
|
+
max_length: "Agent creation/management summary"
|
|
94
|
+
|
|
95
|
+
examples:
|
|
96
|
+
- user_input: "creá un agente para investigación web"
|
|
97
|
+
expected_behavior: "agent_find('researcher') → if not exists, agent_create({ name: 'ai_researcher', tools: ['web_search', 'web_fetch'] })"
|
|
98
|
+
|
|
99
|
+
- user_input: "hay un worker para escribir contenido"
|
|
100
|
+
expected_behavior: "agent_find({ search: 'writer' }) → return existing writer agents"
|
|
101
|
+
|
|
102
|
+
- user_input: "archivá los agentes inactivos"
|
|
103
|
+
expected_behavior: "Confirm the exact user-selected workers → agent_archive only those IDs"
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
# Agent Spawner Skill
|
|
107
|
+
|
|
108
|
+
## Cuándo se Activa
|
|
109
|
+
|
|
110
|
+
Para crear nuevos workers especializados o gestionar el ciclo de vida de agents existentes.
|
|
111
|
+
|
|
112
|
+
> **Antes de crear nada**: la sección COLMENA DE AGENTES del system prompt ya lista workers listos para recibir trabajo (web, browser, archivos, código, Office, A2UI, cron y APIs). Crear un worker es el último recurso, excepto para MCP: si no existe un especialista del servidor, primero se pide autorización al usuario y luego se crea uno persistente.
|
|
113
|
+
|
|
114
|
+
## Herramientas Disponibles
|
|
115
|
+
|
|
116
|
+
| Tool | Qué hace | Cuándo usarla |
|
|
117
|
+
|------|----------|---------------|
|
|
118
|
+
| `get_available_models` | Consulta providers y modelos activos de la BD | **ANTES de crear** — seleccionar modelo óptimo |
|
|
119
|
+
| `agent_find` | Busca agents existentes | **PRIMERO** — antes de crear |
|
|
120
|
+
| `agent_create` | Crea nuevo worker | Si no existe apto |
|
|
121
|
+
| `agent_archive` | Archiva worker | Limpieza, inactivos |
|
|
122
|
+
|
|
123
|
+
## Workflow
|
|
124
|
+
|
|
125
|
+
### Crear Agent
|
|
126
|
+
1. **Buscar** → `agent_find({ search })` — ¿existe?
|
|
127
|
+
2. **Si existe** → Reutilizar
|
|
128
|
+
3. **Si no existe** → `get_available_models({ capabilities })` — seleccionar modelo óptimo
|
|
129
|
+
4. **Crear** → `agent_create({...})` con providerId y modelId seleccionados
|
|
130
|
+
|
|
131
|
+
Para MCP, incluí `mcp_server_id` y creá un agente por servidor. La tool rechaza duplicados y nunca debe llamarse antes de la confirmación del usuario.
|
|
132
|
+
|
|
133
|
+
### Create Agent Config
|
|
134
|
+
```javascript
|
|
135
|
+
// 1. Consultar modelos disponibles para coding
|
|
136
|
+
get_available_models({ capabilities: "coding" })
|
|
137
|
+
// → [{ providerId: "openai", modelId: "gpt-4o", contextWindow: 128000 }, ...]
|
|
138
|
+
|
|
139
|
+
// 2. Crear agente con modelo óptimo (providerId y modelId son OBLIGATORIOS)
|
|
140
|
+
agent_create({
|
|
141
|
+
name: "ai_coder",
|
|
142
|
+
description: "Experto en código y refactorización",
|
|
143
|
+
system_prompt: `
|
|
144
|
+
Sos desarrollador experto. Tu rol:
|
|
145
|
+
1. Escribir código limpio y testeable
|
|
146
|
+
2. Refactorizar código existente
|
|
147
|
+
3. Revisar PRs y sugerir mejoras
|
|
148
|
+
`,
|
|
149
|
+
tools_json: ["fs_read", "fs_write", "fs_edit", "cli_exec"],
|
|
150
|
+
providerId: "openai", // OBLIGATORIO - seleccionado de get_available_models
|
|
151
|
+
modelId: "gpt-4o", // OBLIGATORIO - seleccionado de get_available_models
|
|
152
|
+
tone: "professional",
|
|
153
|
+
max_iterations: 15
|
|
154
|
+
})
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## Mejores Prácticas
|
|
158
|
+
|
|
159
|
+
- **Buscar primero**: Nunca duplicar workers
|
|
160
|
+
- **Consultar modelos**: Usar `get_available_models` ANTES de crear para seleccionar provider/model óptimo
|
|
161
|
+
- **System prompt específico**: Enfocado en especialidad
|
|
162
|
+
- **Mínimo privilegio**: Solo tools necesarias
|
|
163
|
+
- **Nombres descriptivos**: Que indiquen propósito
|
|
164
|
+
- **Modelo adecuado**: Seleccionar según capacidad requerida (coding, chat, analysis, vision)
|
|
165
|
+
|
|
166
|
+
## Errores a Evitar
|
|
167
|
+
|
|
168
|
+
- ❌ Crear sin buscar primero
|
|
169
|
+
- ❌ Crear sin consultar modelos disponibles (`get_available_models`)
|
|
170
|
+
- ❌ Usar modelo inadecuado para la tarea (ej: modelo pequeño para coding complejo)
|
|
171
|
+
- ❌ Tools en exceso ("por las dudas")
|
|
172
|
+
- ❌ System prompt genérico
|
|
173
|
+
- ❌ Nombres vagos ("worker1", "agent1")
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: memory_manager
|
|
3
|
+
description: "Complete management of persistent memory including write, read, search, list, and delete operations"
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
author: Hive Team
|
|
6
|
+
icon: "🧠"
|
|
7
|
+
category: agents
|
|
8
|
+
permissions:
|
|
9
|
+
- memory_read
|
|
10
|
+
- memory_write
|
|
11
|
+
dependencies: []
|
|
12
|
+
tools: [memory_write, memory_read, memory_list, memory_search, memory_delete]
|
|
13
|
+
|
|
14
|
+
# Structured skill fields
|
|
15
|
+
triggers:
|
|
16
|
+
- "guardá en memoria"
|
|
17
|
+
- "save to memory"
|
|
18
|
+
- "recordá esto"
|
|
19
|
+
- "remember this"
|
|
20
|
+
- "leé la memoria"
|
|
21
|
+
- "read memory"
|
|
22
|
+
- "qué hay en memoria"
|
|
23
|
+
- "what's in memory"
|
|
24
|
+
- "buscá en memoria"
|
|
25
|
+
- "search memory"
|
|
26
|
+
- "lista las memorias"
|
|
27
|
+
- "list memories"
|
|
28
|
+
- "eliminá de memoria"
|
|
29
|
+
- "delete from memory"
|
|
30
|
+
- "preferencias"
|
|
31
|
+
- "preferences"
|
|
32
|
+
- "datos persistentes"
|
|
33
|
+
- "persistent data"
|
|
34
|
+
|
|
35
|
+
preferred_agents: []
|
|
36
|
+
|
|
37
|
+
steps:
|
|
38
|
+
- step: 1
|
|
39
|
+
action: determine_operation
|
|
40
|
+
instruction: "Determine if user wants to write, read, list, search, or delete"
|
|
41
|
+
output: operation_type
|
|
42
|
+
|
|
43
|
+
- step: 2
|
|
44
|
+
action: execute_memory_op
|
|
45
|
+
instruction: "Execute appropriate memory operation"
|
|
46
|
+
params:
|
|
47
|
+
write: "memory_write({ title, content })"
|
|
48
|
+
read: "memory_read({ title })"
|
|
49
|
+
list: "memory_list({})"
|
|
50
|
+
search: "memory_search({ query })"
|
|
51
|
+
delete: "memory_delete({ title })"
|
|
52
|
+
output: memory_result
|
|
53
|
+
|
|
54
|
+
- step: 3
|
|
55
|
+
action: format_result
|
|
56
|
+
instruction: "Format memory content for user consumption"
|
|
57
|
+
output: formatted_result
|
|
58
|
+
|
|
59
|
+
rules:
|
|
60
|
+
- "Use descriptive, unique titles for memory_write — titles are used for direct lookup"
|
|
61
|
+
- "If title exists, memory_write overwrites — confirm before overwriting important data"
|
|
62
|
+
- "Use memory_search for fuzzy matching when exact title unknown"
|
|
63
|
+
- "Use memory_list to show all when user asks 'what did you save'"
|
|
64
|
+
- "Avoid storing sensitive data (passwords, API keys, tokens)"
|
|
65
|
+
- "Keep content concise — split large data into multiple entries"
|
|
66
|
+
|
|
67
|
+
output_format:
|
|
68
|
+
structure: markdown
|
|
69
|
+
sections:
|
|
70
|
+
- "title"
|
|
71
|
+
- "content_summary"
|
|
72
|
+
- "created_at"
|
|
73
|
+
max_length: "1000 characters per entry"
|
|
74
|
+
|
|
75
|
+
examples:
|
|
76
|
+
- user_input: "guardá en memoria que prefiero TypeScript"
|
|
77
|
+
expected_behavior: "memory_write({ title: 'Preferencias de Desarrollo', content: 'El usuario prefiere TypeScript' })"
|
|
78
|
+
|
|
79
|
+
- user_input: "qué guardaste sobre mis preferencias"
|
|
80
|
+
expected_behavior: "memory_search({ query: 'preferencias' }) → return matching memories"
|
|
81
|
+
|
|
82
|
+
- user_input: "lista todas las memorias"
|
|
83
|
+
expected_behavior: "memory_list({}) → return all memory titles"
|
|
84
|
+
|
|
85
|
+
- user_input: "buscá en memoria información sobre la DB"
|
|
86
|
+
expected_behavior: "memory_search({ query: 'DB database' }) → return relevant entries"
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
# Memory Manager Skill
|
|
90
|
+
|
|
91
|
+
## Cuándo se Activa
|
|
92
|
+
|
|
93
|
+
Para guardar, recuperar, buscar, listar o eliminar información persistente entre sesiones.
|
|
94
|
+
|
|
95
|
+
## Herramientas Disponibles
|
|
96
|
+
|
|
97
|
+
| Tool | Qué hace | Cuándo usarla |
|
|
98
|
+
|------|----------|---------------|
|
|
99
|
+
| `memory_write` | Almacena con título único | Guardar preferencias, datos |
|
|
100
|
+
| `memory_read` | Recupera por título exacto | Cuando conocés el título |
|
|
101
|
+
| `memory_list` | Lista todos los títulos | Explorar qué hay guardado |
|
|
102
|
+
| `memory_search` | Busca por keywords | Cuando no recordás título exacto |
|
|
103
|
+
| `memory_delete` | Elimina entrada | Limpiar datos obsoletos |
|
|
104
|
+
|
|
105
|
+
## Workflow
|
|
106
|
+
|
|
107
|
+
### Write
|
|
108
|
+
```javascript
|
|
109
|
+
memory_write({
|
|
110
|
+
title: "Preferencias de Desarrollo",
|
|
111
|
+
content: "TypeScript, VS Code, Prettier single quotes"
|
|
112
|
+
})
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Read/Search
|
|
116
|
+
```javascript
|
|
117
|
+
memory_read({ title: "Preferencias" }) // Título exacto
|
|
118
|
+
memory_search({ query: "preferencias" }) // Fuzzy match
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### List
|
|
122
|
+
```javascript
|
|
123
|
+
memory_list({}) // Todos los títulos
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Delete
|
|
127
|
+
```javascript
|
|
128
|
+
memory_delete({ title: "Datos Temporales" })
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## Mejores Prácticas
|
|
132
|
+
|
|
133
|
+
- Títulos descriptivos y únicos
|
|
134
|
+
- Agrupar datos relacionados en misma entrada
|
|
135
|
+
- Confirmar antes de sobrescribir
|
|
136
|
+
- No guardar datos sensibles
|
|
137
|
+
|
|
138
|
+
## Errores a Evitar
|
|
139
|
+
|
|
140
|
+
- ❌ Datos sensibles (passwords, API keys)
|
|
141
|
+
- ❌ Títulos genéricos ("Config", "Datos")
|
|
142
|
+
- ❌ Sobrescribir sin confirmar
|
|
143
|
+
- ❌ Entradas gigantes (split por tema)
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: research_and_remember
|
|
3
|
+
description: "Research information from web sources and save findings to persistent memory"
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
author: Hive Team
|
|
6
|
+
icon: "🔍🧠"
|
|
7
|
+
category: agents
|
|
8
|
+
permissions:
|
|
9
|
+
- internet_access
|
|
10
|
+
- memory_write
|
|
11
|
+
dependencies: []
|
|
12
|
+
tools: [web_search, web_fetch, memory_write]
|
|
13
|
+
|
|
14
|
+
# Structured skill fields
|
|
15
|
+
triggers:
|
|
16
|
+
- "investigá y guardá"
|
|
17
|
+
- "research and save"
|
|
18
|
+
- "buscá y recordá"
|
|
19
|
+
- "find and remember"
|
|
20
|
+
- "aprendé sobre"
|
|
21
|
+
- "learn about"
|
|
22
|
+
- "estudiá esto"
|
|
23
|
+
- "study this"
|
|
24
|
+
- "documentate y guardá"
|
|
25
|
+
- "research and store"
|
|
26
|
+
|
|
27
|
+
preferred_agents: []
|
|
28
|
+
|
|
29
|
+
steps:
|
|
30
|
+
- step: 1
|
|
31
|
+
action: web_search
|
|
32
|
+
instruction: "Search for topic using clear query. Get 5-8 relevant results"
|
|
33
|
+
params:
|
|
34
|
+
query: "topic keywords"
|
|
35
|
+
numResults: 8
|
|
36
|
+
output: search_results
|
|
37
|
+
|
|
38
|
+
- step: 2
|
|
39
|
+
action: web_fetch
|
|
40
|
+
instruction: "Fetch 2-3 most relevant URLs for detailed content"
|
|
41
|
+
params:
|
|
42
|
+
urls: "top 2-3 URLs"
|
|
43
|
+
output: detailed_content
|
|
44
|
+
|
|
45
|
+
- step: 3
|
|
46
|
+
action: synthesize
|
|
47
|
+
instruction: "Synthesize findings into structured knowledge with sources"
|
|
48
|
+
output: synthesized_knowledge
|
|
49
|
+
|
|
50
|
+
- step: 4
|
|
51
|
+
action: memory_write
|
|
52
|
+
instruction: "Store synthesized knowledge with clear title for future retrieval"
|
|
53
|
+
params:
|
|
54
|
+
title: "Topic: {topic_name}"
|
|
55
|
+
content: "synthesized knowledge + sources"
|
|
56
|
+
output: memory_stored
|
|
57
|
+
|
|
58
|
+
rules:
|
|
59
|
+
- "Always do at least 2 searches for comprehensive coverage"
|
|
60
|
+
- "Cross-reference information across multiple sources"
|
|
61
|
+
- "Include source URLs in stored memory for verification"
|
|
62
|
+
- "Organize knowledge with clear structure (headings, bullet points)"
|
|
63
|
+
- "Use descriptive titles that include topic and date if relevant"
|
|
64
|
+
- "Flag uncertain or conflicting information explicitly"
|
|
65
|
+
|
|
66
|
+
output_format:
|
|
67
|
+
structure: markdown
|
|
68
|
+
sections:
|
|
69
|
+
- "topic"
|
|
70
|
+
- "summary"
|
|
71
|
+
- "key_findings"
|
|
72
|
+
- "sources"
|
|
73
|
+
- "memory_title"
|
|
74
|
+
max_length: "Comprehensive but concise knowledge entry"
|
|
75
|
+
|
|
76
|
+
examples:
|
|
77
|
+
- user_input: "investigá y guardá información sobre transformers en ML"
|
|
78
|
+
expected_behavior: "web_search → web_fetch top sources → synthesize → memory_write({ title: 'Transformers ML', content: '...' })"
|
|
79
|
+
|
|
80
|
+
- user_input: "aprendé sobre las mejores prácticas de React 2025"
|
|
81
|
+
expected_behavior: "Search 'React best practices 2025' → fetch docs → synthesize → memory_write"
|
|
82
|
+
|
|
83
|
+
- user_input: "buscá y recordá las tendencias de IA actuales"
|
|
84
|
+
expected_behavior: "Search 'AI trends 2025' → fetch multiple sources → compile trends → memory_write"
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
# Research and Remember Skill
|
|
88
|
+
|
|
89
|
+
## Cuándo se Activa
|
|
90
|
+
|
|
91
|
+
Para investigar temas en la web y guardar el conocimiento sintetizado en memoria persistente.
|
|
92
|
+
|
|
93
|
+
## Herramientas Disponibles
|
|
94
|
+
|
|
95
|
+
| Tool | Qué hace | Cuándo usarla |
|
|
96
|
+
|------|----------|---------------|
|
|
97
|
+
| `web_search` | Busca en internet | Encontrar fuentes |
|
|
98
|
+
| `web_fetch` | Descarga contenido | Obtener detalles |
|
|
99
|
+
| `memory_write` | Guarda conocimiento | Almacenar para futuro |
|
|
100
|
+
|
|
101
|
+
## Workflow
|
|
102
|
+
|
|
103
|
+
1. **Buscar** → `web_search({ query, numResults: 8 })`
|
|
104
|
+
2. **Fetch** → `web_fetch({ urls: top 2-3 })`
|
|
105
|
+
3. **Sintetizar** → Compilar hallazgos con estructura clara
|
|
106
|
+
4. **Guardar** → `memory_write({ title, content })`
|
|
107
|
+
|
|
108
|
+
## Estructura de Conocimiento
|
|
109
|
+
|
|
110
|
+
```markdown
|
|
111
|
+
# {Topic}
|
|
112
|
+
|
|
113
|
+
## Summary
|
|
114
|
+
2-3 oración resumen
|
|
115
|
+
|
|
116
|
+
## Key Findings
|
|
117
|
+
- Punto clave 1
|
|
118
|
+
- Punto clave 2
|
|
119
|
+
- ...
|
|
120
|
+
|
|
121
|
+
## Sources
|
|
122
|
+
- [Source 1](url)
|
|
123
|
+
- [Source 2](url)
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## Mejores Prácticas
|
|
127
|
+
|
|
128
|
+
- Mínimo 2 searches para cobertura completa
|
|
129
|
+
- Cruzar información entre fuentes múltiples
|
|
130
|
+
- Incluir URLs para verificación
|
|
131
|
+
- Estructura clara con headings
|
|
132
|
+
- Flaggear información incierta
|
|
133
|
+
|
|
134
|
+
## Errores a Evitar
|
|
135
|
+
|
|
136
|
+
- ❌ Una sola búsqueda (insuficiente)
|
|
137
|
+
- ❌ Sin fuentes (no verificable)
|
|
138
|
+
- ❌ Títulos vagos para memoria
|
|
139
|
+
- ❌ No flaggear información conflictiva
|