@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.
Files changed (272) hide show
  1. package/CHANGELOG.md +97 -0
  2. package/README.md +78 -23
  3. package/bunfig.toml +4 -2
  4. package/docs/API-AGENTS.md +78 -27
  5. package/docs/API-CONTEXT-COMPILER.md +31 -34
  6. package/docs/API-TOOLS-SKILLS-CHANNELS.md +58 -22
  7. package/docs/HIVE-HARNESS.md +1 -1
  8. package/docs/INDEX.md +4 -4
  9. package/docs/TEMPLATE-HIVE-APP.md +10 -10
  10. package/package.json +9 -4
  11. package/packages/cli/package.json +2 -2
  12. package/packages/cli/src/commands/create-app.test.ts +36 -7
  13. package/packages/cli/src/commands/init.ts +3 -3
  14. package/packages/cli/src/commands/run.ts +1 -1
  15. package/packages/cli/src/commands/test.ts +37 -25
  16. package/packages/cli/src/commands/trace.ts +30 -28
  17. package/packages/cli/templates/hive-app/.env.example +10 -2
  18. package/packages/cli/templates/hive-app/README.md +103 -0
  19. package/packages/cli/templates/hive-app/hive.config.ts +9 -3
  20. package/packages/cli/templates/hive-app/src/agents/coordinator.ts +8 -1
  21. package/packages/cli/templates/hive-app/src/main.ts +12 -19
  22. package/packages/core/package.json +5 -4
  23. package/packages/core/src/agent/acceptance-checks.ts +166 -0
  24. package/packages/core/src/agent/agent-catalog.ts +348 -0
  25. package/packages/core/src/agent/agent-loop.ts +1373 -0
  26. package/packages/core/src/agent/capability-search.ts +186 -0
  27. package/packages/core/src/agent/catalog-selector.ts +103 -0
  28. package/packages/core/src/agent/{Compaction.ts → compaction.ts} +86 -63
  29. package/packages/core/src/agent/context-compiler.ts +689 -0
  30. package/packages/core/src/agent/conversation-store.ts +381 -0
  31. package/packages/core/src/agent/curator.ts +276 -0
  32. package/packages/core/src/agent/delegation-runtime.ts +241 -0
  33. package/packages/core/src/agent/goal-runner.ts +323 -0
  34. package/packages/core/src/agent/index.ts +17 -12
  35. package/packages/core/src/agent/llm-client.ts +266 -0
  36. package/packages/core/src/agent/llm-providers/anthropic.ts +264 -0
  37. package/packages/core/src/agent/llm-providers/deepseek.ts +8 -0
  38. package/packages/core/src/agent/{providers → llm-providers}/gemini.ts +98 -60
  39. package/packages/core/src/agent/llm-providers/groq.ts +5 -0
  40. package/packages/core/src/agent/llm-providers/hiveagents.ts +253 -0
  41. package/packages/core/src/agent/{providers → llm-providers}/interface.ts +73 -13
  42. package/packages/core/src/agent/llm-providers/kimi.ts +8 -0
  43. package/packages/core/src/agent/llm-providers/minimax.ts +13 -0
  44. package/packages/core/src/agent/llm-providers/mistral.ts +5 -0
  45. package/packages/core/src/agent/llm-providers/modelscope.ts +5 -0
  46. package/packages/core/src/agent/llm-providers/nvidia.ts +5 -0
  47. package/packages/core/src/agent/{providers → llm-providers}/ollama.ts +31 -5
  48. package/packages/core/src/agent/llm-providers/openai-compat-base.ts +418 -0
  49. package/packages/core/src/agent/llm-providers/openai.ts +5 -0
  50. package/packages/core/src/agent/llm-providers/opencode-go.ts +9 -0
  51. package/packages/core/src/agent/llm-providers/openrouter.ts +5 -0
  52. package/packages/core/src/agent/llm-providers/qwen.ts +5 -0
  53. package/packages/core/src/agent/llm-providers/z-ai.ts +5 -0
  54. package/packages/core/src/agent/minimal-loadout.ts +47 -0
  55. package/packages/core/src/agent/playbook-selector.ts +119 -0
  56. package/packages/core/src/agent/{PromptBuilder.ts → prompt-builder.ts} +21 -22
  57. package/packages/core/src/{harness → agent}/proof-packet.ts +16 -21
  58. package/packages/core/src/agent/providers/index.ts +35 -16
  59. package/packages/core/src/agent/reflector.ts +320 -0
  60. package/packages/core/src/agent/routing-intent.ts +22 -0
  61. package/packages/core/src/{harness → agent}/run-epoch.ts +4 -3
  62. package/packages/core/src/{harness → agent}/run-store.ts +142 -81
  63. package/packages/core/src/agent/{Service.ts → service.ts} +37 -26
  64. package/packages/core/src/agent/skill-selector.ts +374 -0
  65. package/packages/core/src/agent/stuck-loop.ts +209 -0
  66. package/packages/core/src/agent/{selectors/ToolSelector.ts → tool-selector.ts} +188 -178
  67. package/packages/core/src/{ace/Tracer.ts → agent/tracer.ts} +37 -27
  68. package/packages/core/src/api/createAgent.test.ts +139 -27
  69. package/packages/core/src/api/createAgent.ts +232 -44
  70. package/packages/core/src/artifacts/store.ts +162 -0
  71. package/packages/core/src/canvas/canvas-manager.ts +161 -0
  72. package/packages/core/src/canvas/canvas.test.ts +8 -4
  73. package/packages/core/src/canvas/emitter.ts +131 -80
  74. package/packages/core/src/canvas/index.ts +1 -3
  75. package/packages/core/src/channels/base.ts +9 -1
  76. package/packages/core/src/channels/discord.ts +5 -4
  77. package/packages/core/src/channels/manager.ts +122 -30
  78. package/packages/core/src/channels/slack.ts +5 -4
  79. package/packages/core/src/channels/telegram.ts +36 -6
  80. package/packages/core/src/channels/webchat.ts +11 -10
  81. package/packages/core/src/channels/whatsapp.ts +23 -7
  82. package/packages/core/src/config/index.ts +13 -2
  83. package/packages/core/src/config/loader.ts +71 -29
  84. package/packages/core/src/ethics/EthicsGuard.test.ts +90 -36
  85. package/packages/core/src/ethics/EthicsGuard.ts +51 -47
  86. package/packages/core/src/events/agent-bus.ts +44 -68
  87. package/packages/core/src/events/channel-narration.ts +150 -0
  88. package/packages/core/src/events/narration.ts +82 -0
  89. package/packages/core/src/events/tool-narration.ts +62 -0
  90. package/packages/core/src/gateway/delegation-groups.ts +258 -0
  91. package/packages/core/src/{harness → gateway}/durable-queue.ts +102 -42
  92. package/packages/core/src/{harness → gateway}/job-store.ts +85 -48
  93. package/packages/core/src/gateway/lane-queue.ts +173 -0
  94. package/packages/core/src/gateway/notification-inbox.ts +57 -0
  95. package/packages/core/src/gateway/server.ts +1 -1
  96. package/packages/core/src/harness/index.ts +46 -27
  97. package/packages/core/src/index.ts +33 -20
  98. package/packages/core/src/mcp/hot-reload.ts +32 -23
  99. package/packages/core/src/mcp/index.ts +6 -3
  100. package/packages/core/src/mcp/singleton.ts +1 -4
  101. package/packages/core/src/mcp/tool-sync.ts +138 -0
  102. package/packages/core/src/memory/Scratchpad.test.ts +39 -20
  103. package/packages/core/src/memory/Scratchpad.ts +27 -34
  104. package/packages/core/src/multimodal/vision-service.ts +44 -38
  105. package/packages/core/src/resilience/retry.ts +95 -0
  106. package/packages/core/src/scheduler/CronScheduler.ts +334 -287
  107. package/packages/core/src/scheduler/index.ts +9 -7
  108. package/packages/core/src/scheduler/integration.ts +46 -26
  109. package/packages/core/src/scheduler/scheduler.test.ts +9 -13
  110. package/packages/core/src/scheduler/types.ts +7 -2
  111. package/packages/core/src/security/Pairing.ts +1 -1
  112. package/packages/core/src/skills/bundled/a2ui/a2ui_dashboard/SKILL.md +176 -0
  113. package/packages/core/src/skills/bundled/a2ui/a2ui_form/SKILL.md +202 -0
  114. package/packages/core/src/skills/bundled/a2ui/a2ui_interactive/SKILL.md +206 -0
  115. package/packages/core/src/skills/bundled/agents/agent_spawner/SKILL.md +173 -0
  116. package/packages/core/src/skills/bundled/agents/memory_manager/SKILL.md +143 -0
  117. package/packages/core/src/skills/bundled/agents/research_and_remember/SKILL.md +139 -0
  118. package/packages/core/src/skills/bundled/agents/task_orchestrator/SKILL.md +98 -0
  119. package/packages/core/src/skills/bundled/api/api_client/SKILL.md +132 -0
  120. package/packages/core/src/skills/bundled/cli/cli_pipeline/SKILL.md +135 -0
  121. package/packages/core/src/skills/bundled/cli/cli_safe_exec/SKILL.md +125 -0
  122. package/packages/core/src/skills/bundled/cli/software_engineering/SKILL.md +23 -0
  123. package/packages/core/src/skills/bundled/cron_manager/SKILL.md +188 -0
  124. package/packages/core/src/skills/bundled/cron_reminder/SKILL.md +112 -0
  125. package/packages/core/src/skills/bundled/filesystem/file_manager/SKILL.md +118 -0
  126. package/packages/core/src/skills/bundled/filesystem/file_read_and_summarize/SKILL.md +109 -0
  127. package/packages/core/src/skills/bundled/filesystem/file_writer/SKILL.md +129 -0
  128. package/packages/core/src/skills/bundled/filesystem/workspace_file_operator/SKILL.md +22 -0
  129. package/packages/core/src/skills/bundled/office/office_document_manager/SKILL.md +262 -0
  130. package/packages/core/src/skills/bundled/search_knowledge/capability_discovery/SKILL.md +75 -0
  131. package/packages/core/src/skills/bundled/web/browser_automate/SKILL.md +120 -0
  132. package/packages/core/src/skills/bundled/web/browser_scrape/SKILL.md +109 -0
  133. package/packages/core/src/skills/bundled/web/web_monitor/SKILL.md +127 -0
  134. package/packages/core/src/skills/bundled/web/web_research/SKILL.md +119 -0
  135. package/packages/core/src/skills/bundled-data.generated.ts +731 -2678
  136. package/packages/core/src/skills/skills.test.ts +52 -11
  137. package/packages/core/src/{harness → storage}/boot-id.ts +5 -2
  138. package/packages/core/src/storage/bootstrap.ts +151 -0
  139. package/packages/core/src/storage/causal-events.ts +84 -0
  140. package/packages/core/src/storage/collections.ts +680 -0
  141. package/packages/core/src/storage/crypto.ts +205 -74
  142. package/packages/core/src/{harness/db-helpers.ts → storage/hive.ts} +63 -7
  143. package/packages/core/src/storage/hivedb.ts +61 -0
  144. package/packages/core/src/storage/index.ts +111 -17
  145. package/packages/core/src/storage/model-id.ts +53 -0
  146. package/packages/core/src/storage/onboarding.ts +540 -972
  147. package/packages/core/src/storage/reconcile.ts +238 -0
  148. package/packages/core/src/storage/seed.ts +572 -406
  149. package/packages/core/src/storage/usage.ts +285 -225
  150. package/packages/core/src/storage/user-email.ts +11 -0
  151. package/packages/core/src/swarm/AgentExecutor.ts +1 -1
  152. package/packages/core/src/swarm/EventBridge.ts +1 -1
  153. package/packages/core/src/swarm/index.ts +12 -9
  154. package/packages/core/src/tool-runtime/index.ts +146 -23
  155. package/packages/core/src/tool-runtime/tool-worker.ts +2 -2
  156. package/packages/core/src/tool-runtime/worker-tools.ts +27 -0
  157. package/packages/core/src/{canvas/a2ui-tools.ts → tools/a2ui/index.ts} +17 -8
  158. package/packages/core/src/tools/agents/get-available-models.ts +36 -54
  159. package/packages/core/src/tools/agents/index.ts +784 -292
  160. package/packages/core/src/tools/api/api-request.test.ts +164 -0
  161. package/packages/core/src/tools/api/api-request.ts +174 -0
  162. package/packages/core/src/tools/api/index.ts +16 -0
  163. package/packages/core/src/tools/cli/index.ts +4 -0
  164. package/packages/core/src/tools/core/index.ts +281 -112
  165. package/packages/core/src/tools/cron/index.ts +121 -124
  166. package/packages/core/src/tools/index.ts +63 -78
  167. package/packages/core/src/tools/office/office-escribir-xlsx.ts +3 -1
  168. package/packages/core/src/tools/types.ts +3 -1
  169. package/packages/core/src/tools/web/artifact-inspect.ts +23 -0
  170. package/packages/core/src/tools/web/browser-screenshot.ts +26 -5
  171. package/packages/core/src/tools/web/browser-service.ts +5 -0
  172. package/packages/core/src/tools/web/browser-type.ts +3 -8
  173. package/packages/core/src/tools/web/index.ts +4 -4
  174. package/packages/core/src/voice/index.ts +89 -63
  175. package/packages/core/src/workers/agent.worker.ts +2 -2
  176. package/packages/core/src/workers/workers.test.ts +3 -10
  177. package/scripts/bump-version.ts +248 -0
  178. package/scripts/generate-skill-bundle.ts +108 -0
  179. package/test/agent-loop-terminal-synthesis.test.ts +32 -0
  180. package/test/catalog-agents-stay-enabled.test.ts +117 -0
  181. package/test/causal-events.test.ts +117 -0
  182. package/test/compaction.test.ts +105 -0
  183. package/test/context-compiler.test.ts +269 -0
  184. package/test/curator.test.ts +130 -0
  185. package/test/durable-queue.test.ts +114 -0
  186. package/test/harness-barrel.test.ts +64 -0
  187. package/test/hive-helpers.test.ts +130 -0
  188. package/test/hivedb-search.test.ts +189 -0
  189. package/test/internal-turns.test.ts +166 -0
  190. package/test/job-idempotency.test.ts +68 -0
  191. package/test/job-retry-backoff.test.ts +184 -0
  192. package/test/job-store.test.ts +381 -0
  193. package/test/llm-retry.test.ts +97 -0
  194. package/test/memory-perf.test.ts +774 -0
  195. package/test/minimal-loadout.test.ts +78 -0
  196. package/test/model-catalog.test.ts +105 -0
  197. package/test/preload.ts +12 -0
  198. package/test/reflector.test.ts +320 -0
  199. package/test/retention-cap.test.ts +91 -0
  200. package/test/retired-capabilities-pruned.test.ts +192 -0
  201. package/test/run-store.test.ts +355 -0
  202. package/test/scratchpad.test.ts +74 -0
  203. package/test/secrets-durability.test.ts +119 -0
  204. package/test/seed-model-reseed.test.ts +155 -0
  205. package/test/setup-agent-seed.test.ts +264 -0
  206. package/test/tool-inventory.test.ts +65 -0
  207. package/test/tool-runtime.test.ts +258 -0
  208. package/test/toon.test.ts +429 -0
  209. package/tsconfig.json +2 -0
  210. package/packages/core/src/ace/Curator.ts +0 -158
  211. package/packages/core/src/ace/Reflector.ts +0 -200
  212. package/packages/core/src/ace/index.ts +0 -4
  213. package/packages/core/src/agent/AgentRunner.ts +0 -711
  214. package/packages/core/src/agent/ContextCompiler.ts +0 -567
  215. package/packages/core/src/agent/ContextGuard.ts +0 -91
  216. package/packages/core/src/agent/ConversationStore.ts +0 -254
  217. package/packages/core/src/agent/Hooks.ts +0 -166
  218. package/packages/core/src/agent/StuckLoop.ts +0 -133
  219. package/packages/core/src/agent/providers/LLMClient.ts +0 -149
  220. package/packages/core/src/agent/providers/anthropic.ts +0 -212
  221. package/packages/core/src/agent/providers/openai-compat.ts +0 -231
  222. package/packages/core/src/agent/selectors/PlaybookSelector.ts +0 -121
  223. package/packages/core/src/agent/selectors/SkillSelector.ts +0 -322
  224. package/packages/core/src/agent/selectors/index.ts +0 -6
  225. package/packages/core/src/auth/auth.ts +0 -121
  226. package/packages/core/src/auth/index.ts +0 -1
  227. package/packages/core/src/canvas/CanvasManager.ts +0 -390
  228. package/packages/core/src/canvas/canvas-tools.ts +0 -448
  229. package/packages/core/src/harness/collections.ts +0 -98
  230. package/packages/core/src/harness/goal-verifier.ts +0 -141
  231. package/packages/core/src/harness/harness.test.ts +0 -236
  232. package/packages/core/src/harness/reconcile.ts +0 -149
  233. package/packages/core/src/mcp/MCPToolAdapter.ts +0 -176
  234. package/packages/core/src/multimodal/VisionService.ts +0 -293
  235. package/packages/core/src/scheduler/dag/AgentExecutor.ts +0 -53
  236. package/packages/core/src/scheduler/dag/DAGScheduler.ts +0 -250
  237. package/packages/core/src/scheduler/dag/EventBridge.ts +0 -122
  238. package/packages/core/src/scheduler/dag/TaskGraph.ts +0 -192
  239. package/packages/core/src/scheduler/dag/TaskNode.ts +0 -97
  240. package/packages/core/src/scheduler/dag/TaskResult.ts +0 -22
  241. package/packages/core/src/scheduler/dag/errors.ts +0 -37
  242. package/packages/core/src/scheduler/dag/index.ts +0 -26
  243. package/packages/core/src/scheduler/dag/presets/ResearchPreset.ts +0 -97
  244. package/packages/core/src/scheduler/dag/strategies/ParallelStrategy.ts +0 -21
  245. package/packages/core/src/scheduler/dag/strategies/PriorityStrategy.ts +0 -46
  246. package/packages/core/src/storage/HiveDBStorage.ts +0 -64
  247. package/packages/core/src/storage/SQLiteStorage.ts +0 -414
  248. package/packages/core/src/storage/hiveSeed.ts +0 -308
  249. package/packages/core/src/storage/hiveStorage.test.ts +0 -38
  250. package/packages/core/src/storage/schema.ts +0 -689
  251. package/packages/core/src/storage/storage.test.ts +0 -37
  252. package/packages/core/src/swarm/AgentBus.ts +0 -460
  253. package/packages/core/src/swarm/EventBus.ts +0 -169
  254. package/packages/core/src/swarm/WorkerPool.ts +0 -236
  255. package/packages/core/src/tools/bridge-events.ts +0 -26
  256. package/packages/core/src/tools/canvas/index.ts +0 -375
  257. package/packages/core/src/tools/codebridge/index.ts +0 -342
  258. package/packages/core/src/tools/meeting/index.ts +0 -353
  259. package/packages/core/src/tools/projects/index.ts +0 -37
  260. package/packages/core/src/tools/projects/project-create.ts +0 -94
  261. package/packages/core/src/tools/projects/project-done.ts +0 -66
  262. package/packages/core/src/tools/projects/project-fail.ts +0 -66
  263. package/packages/core/src/tools/projects/project-list.ts +0 -96
  264. package/packages/core/src/tools/projects/project-update.ts +0 -72
  265. package/packages/core/src/tools/projects/task-create.ts +0 -68
  266. package/packages/core/src/tools/projects/task-evaluate.ts +0 -93
  267. package/packages/core/src/tools/projects/task-update.ts +0 -93
  268. package/packages/core/src/tools/voice/index.ts +0 -104
  269. package/packages/core/src/tools/web/api-request.test.ts +0 -170
  270. package/packages/core/src/tools/web/api-request.ts +0 -239
  271. package/test/setup-db.ts +0 -216
  272. /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