@johpaz/hive-sdk 0.1.4 → 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 -27
  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 -18
  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,188 @@
1
+ ---
2
+ name: cron_manager
3
+ description: "Manage Hive scheduled automations. Create, list, update, pause, resume, delete, trigger, and inspect recurring or one-shot jobs."
4
+ version: 2.0.0
5
+ author: Hive Team
6
+ icon: "⏰"
7
+ category: cron
8
+ permissions:
9
+ - cron_manage
10
+ dependencies: []
11
+ tools: [cron.create, cron.list, cron.update, cron.delete, cron.pause, cron.resume, cron.trigger, cron.history]
12
+
13
+ # Structured skill fields
14
+ triggers:
15
+ - "programá una tarea"
16
+ - "schedule task"
17
+ - "creá un cron"
18
+ - "create cron"
19
+ - "editá el cron"
20
+ - "edit cron"
21
+ - "eliminá el cron"
22
+ - "remove cron"
23
+ - "lista las tareas"
24
+ - "list cron jobs"
25
+ - "modificá el cron"
26
+ - "modify cron"
27
+ - "tarea recurrente"
28
+ - "recurring task"
29
+ - "todos los días"
30
+ - "daily"
31
+ - "cada semana"
32
+ - "weekly"
33
+
34
+ preferred_agents: []
35
+
36
+ steps:
37
+ - step: 1
38
+ action: clarify_task
39
+ instruction: "Ask if task is one_shot (single execution) or recurring (repeats). Get specific time and task instruction."
40
+ output: task_type
41
+
42
+ - step: 2
43
+ action: build_cron_expression
44
+ instruction: "For recurring: construct cron expression (minute hour day month weekday). For one_shot: get ISO datetime."
45
+ output: cron_expression or fire_at
46
+
47
+ - step: 3
48
+ action: cron.create
49
+ instruction: "Create new cron job with required 'task' field (instruction for the agent)"
50
+ params:
51
+ name: "Short identifier (e.g., 'daily-report')"
52
+ task: "REQUIRED - Natural language instruction the agent reads when triggered (e.g., 'Generate sales report and send to Telegram')"
53
+ task_type: "'recurring' or 'one_shot'"
54
+ cron_expression: "Cron expression for recurring (e.g., '0 9 * * *')"
55
+ fire_at: "ISO datetime for one_shot (e.g., '2026-04-20T09:00:00')"
56
+ channel: "Notification channel (telegram, discord, webchat)"
57
+ start_at: "Optional ISO datetime - start of execution window (Croner startAt)"
58
+ stop_at: "Optional ISO datetime - end of execution window (Croner stopAt)"
59
+ dom_and_dow: "0 = OR logic (default), 1 = AND logic for day-of-month + day-of-week"
60
+ max_runs: "Optional max executions"
61
+ output: cron_id
62
+
63
+ - step: 4
64
+ action: cron.list
65
+ instruction: "List all cron jobs with next execution times"
66
+ output: cron_jobs
67
+
68
+ rules:
69
+ - "ALWAYS use cron.* tools — never exec/terminal"
70
+ - "The 'task' field is REQUIRED and contains the instruction the agent reads when triggered"
71
+ - "Ask if one_shot or recurring before creating"
72
+ - "For one_shot: use fire_at with ISO datetime"
73
+ - "For daily: 'MM HH * * *'"
74
+ - "For weekly: 'MM HH * * N' (N=0-6, 0=Sun)"
75
+ - "For monthly: 'MM HH D * *' (D=1-31)"
76
+ - "Always show next 3 execution times after creating"
77
+ - "Use start_at/stop_at to limit execution time window"
78
+ - "Use dom_and_dow=1 to require BOTH day-of-month AND day-of-week"
79
+ - "To edit: ALWAYS call cron.update with task_id (get from cron.list first)"
80
+
81
+ output_format:
82
+ structure: markdown
83
+ sections:
84
+ - "job_name"
85
+ - "task_instruction"
86
+ - "cron_expression"
87
+ - "next_executions"
88
+ max_length: "List all jobs"
89
+
90
+ examples:
91
+ - user_input: "programá un recordatorio diario a las 9am"
92
+ expected_behavior: "cron.create({ name: 'daily-reminder', task: 'Send reminder message', task_type: 'recurring', cron_expression: '0 9 * * *', channel: 'telegram' })"
93
+
94
+ - user_input: "lista las tareas programadas"
95
+ expected_behavior: "cron.list({})"
96
+
97
+ - user_input: "editá el cron para que sea a las 10am"
98
+ expected_behavior: "cron.list() → get task_id → cron.update({ task_id: '<id>', cron_expression: '0 10 * * *' })"
99
+
100
+ - user_input: "actualizá la instrucción del cron"
101
+ expected_behavior: "cron.list() → get task_id → cron.update({ task_id: '<id>', task: 'New instruction for agent' })"
102
+
103
+ - user_input: "elimina el cron"
104
+ expected_behavior: "cron.list() → get task_id → cron.delete({ task_id: '<id>' })"
105
+ ---
106
+
107
+ # Cron Manager Skill
108
+
109
+ ## Cuándo se Activa
110
+
111
+ Para gestionar tareas programadas (cron jobs): crear, listar, actualizar, pausar, reanudar, eliminar, ejecutar y ver historial.
112
+
113
+ ## Herramientas Disponibles
114
+
115
+ | Tool | Qué hace | Cuándo usarla |
116
+ |------|----------|---------------|
117
+ | `cron.create` | Crear cron job | Nueva tarea |
118
+ | `cron.list` | Listar todos | Ver existentes |
119
+ | `cron.update` | Actualizar existente | Cambiar horario/instrucción |
120
+ | `cron.pause` | Pausar temporalmente | Sin eliminar |
121
+ | `cron.resume` | Reanudar pausado | Continuar ejecución |
122
+ | `cron.delete` | Eliminar permanentemente | Cancelar para siempre |
123
+ | `cron.trigger` | Ejecutar ahora | Forzar ejecución |
124
+ | `cron.history` | Ver historial | Ver logs de ejecuciones |
125
+
126
+ ## Campos Principales
127
+
128
+ | Campo | Tipo | Descripción |
129
+ |-------|------|-------------|
130
+ | `name` | string | Identificador corto (e.g., 'daily-report') |
131
+ | `task` | string | **REQUERIDO** - Instrucciones para el agente al ejecutarse |
132
+ | `task_type` | string | 'recurring' (repite) o 'one_shot' (una vez) |
133
+ | `cron_expression` | string | Expresión cron (solo para recurring) |
134
+ | `fire_at` | string | Datetime ISO (solo para one_shot) |
135
+ | `channel` | string | Canal de notificación |
136
+ | `start_at` | string | Inicio de ventana opcional (Croner startAt) |
137
+ | `stop_at` | string | Fin de ventana opcional (Croner stopAt) |
138
+ | `dom_and_dow` | number | 0=OR (default), 1=AND (día mes + día semana) |
139
+
140
+ ## Cron Expression Format
141
+
142
+ ```
143
+ * * * * *
144
+ │ │ │ │ │
145
+ │ │ │ │ └── Día semana (0-6, 0=Domingo)
146
+ │ │ │ └──── Mes (1-12)
147
+ │ │ └────── Día del mes (1-31)
148
+ │ └──────── Hora (0-23)
149
+ └────────── Minuto (0-59)
150
+ ```
151
+
152
+ ## Ejemplos Comunes
153
+
154
+ | Expresión | Significado |
155
+ |-----------|-------------|
156
+ | `0 9 * * *` | Diario 9:00 AM |
157
+ | `0 7 * * 1-5` | Lun-Vie 7:00 AM |
158
+ | `0 */2 * * *` | Cada 2 horas |
159
+ | `0 0 * * 0` | Domingos medianoche |
160
+ | `0 0 1 * *` | Día 1 de cada mes |
161
+
162
+ ## Cómo Usar start_at / stop_at
163
+
164
+ - `start_at`: La tarea no ejecuta antes de esta fecha
165
+ - `stop_at`: La tarea no ejecuta después de esta fecha
166
+ - Formato ISO: `'2026-04-01T00:00:00'`
167
+
168
+ ## Cómo Usar dom_and_dow
169
+
170
+ - `0` (default): Se ejecuta si es el día del mes O el día de semana
171
+ - `1`: Se ejecuta solo si es EL MISMO día del mes Y el día de semana
172
+
173
+ Ejemplo: `0 9 15 * *` con dom_and_dow=1 significa "los 15 de cada mes QUE SEA domingo"
174
+
175
+ ## Workflow para Crear
176
+
177
+ 1. **Preguntar** → ¿one_shot o recurring?
178
+ 2. **Obtener** → Hora y canal de notificación
179
+ 3. **Crear** → `cron.create` con campo `task` obligatorio
180
+ 4. **Confirmar** → `cron.list` mostrar next runs
181
+
182
+ ## Errores a Evitar
183
+
184
+ - ❌ Olvidar el campo `task` — es obligatorio
185
+ - ❌ Usar exec para tareas programadas
186
+ - ❌ No preguntar si es one_shot o recurring
187
+ - ❌ No mostrar próximos horarios al crear
188
+ - ❌ Llamar `cron.update` sin `task_id` — siempre hacer `cron.list` primero
@@ -0,0 +1,112 @@
1
+ ---
2
+ name: cron_reminder
3
+ description: "Schedule a reminder for yourself at a specific time. Creates a one_shot cron job that sends a notification message via your preferred channel."
4
+ version: 2.0.0
5
+ author: Hive Team
6
+ icon: "⏰"
7
+ category: cron
8
+ permissions:
9
+ - cron_manage
10
+ dependencies: []
11
+ tools: [cron.create, notify]
12
+
13
+ # Structured skill fields
14
+ triggers:
15
+ - "recordame"
16
+ - "remind me"
17
+ - "recordatorio"
18
+ - "reminder"
19
+ - "alerta"
20
+ - "alert"
21
+ - "avísame"
22
+ - "notify me"
23
+ - "programá"
24
+ - "schedule"
25
+ - "para mañana"
26
+ - "for tomorrow"
27
+ - "en 30 minutos"
28
+ - "in 30 minutes"
29
+
30
+ preferred_agents: []
31
+
32
+ steps:
33
+ - step: 1
34
+ action: clarify_reminder
35
+ instruction: "Ask: What do you want to be reminded about? At what time? Via which channel?"
36
+ output: reminder_message, reminder_time, channel
37
+
38
+ - step: 2
39
+ action: build_reminder_payload
40
+ instruction: "Build the task payload with message and channel"
41
+ output: payload
42
+
43
+ - step: 3
44
+ action: cron.create
45
+ instruction: "Create one_shot cron job"
46
+ params:
47
+ name: "Short name (e.g., 'follow-up-reminder')"
48
+ task: "REQUIRED - The reminder message (e.g., 'Review the pending report')"
49
+ task_type: "one_shot"
50
+ fire_at: "ISO datetime (e.g., '2026-04-20T14:00:00')"
51
+ channel: "telegram, discord, webchat, whatsapp"
52
+ output: cron_id
53
+
54
+ rules:
55
+ - "ALWAYS use cron.create with task_type='one_shot' for reminders"
56
+ - "The 'task' field is REQUIRED and contains the reminder message"
57
+ - "fire_at must be in the future"
58
+ - "Use notify tool as fallback if cron fails"
59
+ - "Default channel is user's preferred, ask if not specified"
60
+
61
+ output_format:
62
+ structure: markdown
63
+ sections:
64
+ - "reminder_message"
65
+ - "scheduled_time"
66
+ - "channel"
67
+ max_length: "Short confirmation"
68
+
69
+ examples:
70
+ - user_input: "recordame revisar el informe a las 3pm"
71
+ expected_behavior: "cron.create({ name: 'report-reminder', task: 'Revisar el informe pendiente', task_type: 'one_shot', fire_at: '2026-04-20T15:00:00', channel: 'telegram' })"
72
+
73
+ - user_input: "avísame en 30 minutos"
74
+ expected_behavior: "cron.create({ name: 'quick-reminder', task: 'Revisa el email', task_type: 'one_shot', fire_at: '<30-min-from-now>', channel: 'telegram' })"
75
+
76
+ - user_input: "recordame mañana a las 9am revisar las métricas"
77
+ expected_behavior: "cron.create({ name: 'metrics-reminder', task: 'Revisar las métricas', task_type: 'one_shot', fire_at: '<tomorrow-9am>', channel: 'telegram' })"
78
+ ---
79
+
80
+ # Cron Reminder Skill
81
+
82
+ ## Cuándo se Activa
83
+
84
+ Para crear recordatorios de una sola ejecución (one_shot): "recuerdame a las 3pm", "avísame en 30 minutos", etc.
85
+
86
+ ## Herramientas
87
+
88
+ | Tool | Qué hace |
89
+ |------|----------|
90
+ | `cron.create` | Crear recordatorio one_shot |
91
+ | `notify` | Enviar notificación directa |
92
+
93
+ ## Cómo Funciona
94
+
95
+ 1. **Preguntar** → ¿De qué te aviso? ¿A qué hora? ¿Por qué canal?
96
+ 2. **Crear** → `cron.create` con `task_type: 'one_shot'` y `fire_at` en formato ISO
97
+ 3. **Confirmar** → Mostrar hora programada
98
+
99
+ ## Parámetros
100
+
101
+ | Campo | Descripción |
102
+ |-------|-------------|
103
+ | `task` | **REQUERIDO** - Mensaje del recordatorio |
104
+ | `task_type` | Siempre `'one_shot'` |
105
+ | `fire_at` | Fecha/hora ISO (ej: `'2026-04-20T15:00:00'`) |
106
+ | `channel` | Canal (telegram, discord, whatsapp, webchat) |
107
+
108
+ ## Errores Comunes
109
+
110
+ - ❌ Olvidar el campo `task` — obligatorio para que el agente sepa qué enviar
111
+ - ❌ Usar expresiones cron para recordatorios (usar `fire_at` en vez de `cron_expression`)
112
+ - ❌ Poner `fire_at` en el pasado
@@ -0,0 +1,118 @@
1
+ ---
2
+ name: file_manager
3
+ description: "Explore project structure and locate files using glob patterns and directory listing"
4
+ version: 1.0.0
5
+ author: Hive Team
6
+ icon: "📁"
7
+ category: filesystem
8
+ permissions:
9
+ - filesystem_read
10
+ dependencies: []
11
+ tools: [fs_list, fs_glob, fs_exists]
12
+
13
+ # Structured skill fields
14
+ triggers:
15
+ - "lista los archivos"
16
+ - "list files"
17
+ - "buscá archivos"
18
+ - "find files"
19
+ - "explorá el proyecto"
20
+ - "explore project"
21
+ - "qué archivos hay"
22
+ - "what files exist"
23
+ - "buscá por patrón"
24
+ - "search by pattern"
25
+ - "existe este archivo"
26
+ - "file exists"
27
+ - "dónde está"
28
+ - "where is"
29
+
30
+ preferred_agents: []
31
+
32
+ steps:
33
+ - step: 1
34
+ action: fs_list
35
+ instruction: "List directory contents to understand project structure"
36
+ params:
37
+ path: "."
38
+ output: directory_tree
39
+
40
+ - step: 2
41
+ action: fs_glob
42
+ instruction: "Find files matching specific pattern (e.g., **/*.ts, **/*.md)"
43
+ params:
44
+ pattern: "**/*.ts"
45
+ output: matching_files
46
+
47
+ - step: 3
48
+ action: fs_exists
49
+ instruction: "Verify specific file or directory exists"
50
+ params:
51
+ path: "specific/path"
52
+ output: exists_boolean
53
+
54
+ rules:
55
+ - "Use fs_list for initial exploration of unknown directories"
56
+ - "Use fs_glob when user specifies file type or pattern"
57
+ - "Always verify with fs_exists before read/edit operations"
58
+ - "Stay within workspace directory unless explicitly requested otherwise"
59
+ - "For recursive search, use ** pattern (e.g., **/*.ts finds all .ts files)"
60
+
61
+ output_format:
62
+ structure: markdown
63
+ sections:
64
+ - "search_type"
65
+ - "results"
66
+ - "file_count"
67
+ max_length: "List up to 20 files, summarize if more"
68
+
69
+ examples:
70
+ - user_input: "lista los archivos del proyecto"
71
+ expected_behavior: "fs_list({ path: '.' }) → return root directory structure"
72
+
73
+ - user_input: "buscá todos los archivos TypeScript"
74
+ expected_behavior: "fs_glob({ pattern: '**/*.ts' }) → return list of .ts files"
75
+
76
+ - user_input: "existe el archivo src/config.ts"
77
+ expected_behavior: "fs_exists({ path: 'src/config.ts' }) → return true/false"
78
+ ---
79
+
80
+ # File Manager Skill
81
+
82
+ ## Cuándo se Activa
83
+
84
+ Esta skill se activa cuando el usuario necesita:
85
+ - Explorar la estructura del proyecto
86
+ - Buscar archivos por extensión o patrón
87
+ - Verificar si existe un archivo o directorio
88
+ - Encontrar la ubicación de un archivo
89
+
90
+ ## Herramientas Disponibles
91
+
92
+ | Tool | Qué hace | Cuándo usarla |
93
+ |------|----------|---------------|
94
+ | `fs_list` | Lista directorios y archivos | Exploración inicial |
95
+ | `fs_glob` | Busca archivos por patrón wildcard | Búsqueda por extensión/patrón |
96
+ | `fs_exists` | Verifica existencia | Pre-check antes de operaciones |
97
+
98
+ ## Workflow
99
+
100
+ 1. **Explorar** → `fs_list({ path })` para estructura general
101
+ 2. **Buscar por patrón** → `fs_glob({ pattern })` para tipos específicos
102
+ 3. **Verificar** → `fs_exists({ path })` para confirmación
103
+
104
+ ## Patrones Glob Comunes
105
+
106
+ | Patrón | Encuentra |
107
+ |--------|-----------|
108
+ | `**/*.ts` | Todos los TypeScript |
109
+ | `**/*.test.ts` | Solo tests |
110
+ | `**/*.md` | Documentación |
111
+ | `**/package.json` | Todos los package.json |
112
+ | `src/**/*.tsx` | React components en src |
113
+
114
+ ## Errores a Evitar
115
+
116
+ - ❌ No verificar existencia antes de leer/editar
117
+ - ❌ Usar fs_list cuando se conoce el patrón (usar glob)
118
+ - ❌ Patrones muy amplios sin filtrado
@@ -0,0 +1,109 @@
1
+ ---
2
+ name: file_read_and_summarize
3
+ description: "Read and understand file content with automatic summarization for large files"
4
+ version: 1.0.0
5
+ author: Hive Team
6
+ icon: "📄"
7
+ category: filesystem
8
+ permissions:
9
+ - filesystem_read
10
+ dependencies: []
11
+ tools: [fs_read, fs_exists]
12
+
13
+ # Structured skill fields
14
+ triggers:
15
+ - "leé este archivo"
16
+ - "read this file"
17
+ - "mostrame el contenido"
18
+ - "show content"
19
+ - "qué dice este archivo"
20
+ - "resumí este archivo"
21
+ - "summarize this file"
22
+ - "entendé este código"
23
+ - "understand this code"
24
+
25
+ preferred_agents: []
26
+
27
+ steps:
28
+ - step: 1
29
+ action: fs_exists
30
+ instruction: "Verify file exists before attempting to read"
31
+ output: exists_boolean
32
+
33
+ - step: 2
34
+ action: fs_read
35
+ instruction: "Read file content. Use offset/limit for large files (>1000 lines)"
36
+ params:
37
+ path: "file path"
38
+ offset: 0
39
+ limit: 100
40
+ output: file_content
41
+
42
+ - step: 3
43
+ action: synthesize
44
+ instruction: "Summarize content if file is large. Extract key information relevant to user request"
45
+ output: summary
46
+
47
+ rules:
48
+ - "Always check file exists with fs_exists before reading"
49
+ - "Use offset and limit for files >1000 lines to avoid context saturation"
50
+ - "Read in chunks for very large files — iterate with offset"
51
+ - "Summarize automatically for files >500 lines unless user requests full content"
52
+ - "Identify file type by extension and adapt summary format (code vs text vs config)"
53
+
54
+ output_format:
55
+ structure: markdown
56
+ sections:
57
+ - "file_path"
58
+ - "file_type"
59
+ - "line_count"
60
+ - "summary"
61
+ - "key_points"
62
+ max_length: "500 words for summary, full content if requested"
63
+
64
+ examples:
65
+ - user_input: "leé el archivo package.json"
66
+ expected_behavior: "Check exists → fs_read({ path: 'package.json' }) → return full content (small file)"
67
+
68
+ - user_input: "resumí el archivo src/main.ts"
69
+ expected_behavior: "fs_read with offset/limit → identify main exports and functions → summarize structure"
70
+
71
+ - user_input: "qué dice este archivo de configuración"
72
+ expected_behavior: "fs_read → parse config format → explain key settings in plain language"
73
+ ---
74
+
75
+ # File Read and Summarize Skill
76
+
77
+ ## Cuándo se Activa
78
+
79
+ Esta skill se activa cuando el usuario necesita leer y entender el contenido de un archivo, especialmente cuando:
80
+ - El archivo es grande y necesita resumen
81
+ - Se requiere comprensión del contenido (no solo lectura)
82
+ - El usuario pide "qué dice", "resumí", "entendé"
83
+
84
+ ## Herramientas Disponibles
85
+
86
+ | Tool | Qué hace | Cuándo usarla |
87
+ |------|----------|---------------|
88
+ | `fs_exists` | Comprueba que el path exista | Antes de leer |
89
+ | `fs_read` | Lee contenido de archivo del workspace | Lectura de cualquier archivo |
90
+
91
+ ## Workflow
92
+
93
+ 1. **Verificar existencia** → `fs_exists({ path })`
94
+ 2. **Leer contenido** → `fs_read({ path, offset, limit })`
95
+ 3. **Sintetizar** → Resumir si es grande, extraer puntos clave
96
+
97
+ ## Mejores Prácticas
98
+
99
+ - Para archivos >1000 líneas, usar `offset` y `limit`
100
+ - Identificar tipo de archivo por extensión y adaptar formato de resumen
101
+ - Para código: identificar funciones, clases, exports principales
102
+ - Para config: explicar settings clave en lenguaje simple
103
+ - Para texto: extraer ideas principales
104
+
105
+ ## Errores a Evitar
106
+
107
+ - ❌ Leer sin verificar existencia
108
+ - ❌ Retornar archivo completo sin resumir si es muy grande
109
+ - ❌ No identificar tipo de archivo para adaptar resumen
@@ -0,0 +1,129 @@
1
+ ---
2
+ name: file_writer
3
+ description: "Create, modify, and delete files with safe edit operations after required authorization"
4
+ version: 1.0.0
5
+ author: Hive Team
6
+ icon: "✍️"
7
+ category: filesystem
8
+ permissions:
9
+ - filesystem_read
10
+ - filesystem_write
11
+ dependencies: []
12
+ tools: [fs_read, fs_write, fs_edit, fs_exists]
13
+
14
+ # Structured skill fields
15
+ triggers:
16
+ - "creá un archivo"
17
+ - "create a file"
18
+ - "escribí en"
19
+ - "write to"
20
+ - "editá este archivo"
21
+ - "edit this file"
22
+ - "modificá"
23
+ - "modify"
24
+ - "eliminá el archivo"
25
+ - "delete file"
26
+ - "guardá esto"
27
+ - "save this"
28
+ - "actualizá el archivo"
29
+ - "update file"
30
+
31
+ preferred_agents: []
32
+
33
+ steps:
34
+ - step: 1
35
+ action: fs_exists
36
+ instruction: "Check if file exists to determine if creating or editing"
37
+ output: exists_boolean
38
+
39
+ - step: 2
40
+ action: fs_read
41
+ instruction: "Read existing file to understand current structure before modifying"
42
+ output: current_content
43
+
44
+ - step: 3
45
+ action: decision_write_or_edit
46
+ instruction: "Choose fs_write for new files or complete rewrite, fs_edit for targeted changes"
47
+ output: operation_type
48
+
49
+ - step: 4
50
+ action: fs_write_or_edit
51
+ instruction: "Execute the authorized write operation with the appropriate method"
52
+ output: result
53
+
54
+ rules:
55
+ - "Always read file before editing to understand structure"
56
+ - "Use fs_edit for small, targeted changes (find/replace)"
57
+ - "Use fs_write for new files or complete rewrites"
58
+ - "Verify file path is within workspace unless explicitly requested otherwise"
59
+ - "For destructive operations, require explicit authorization before this skill runs"
60
+
61
+ output_format:
62
+ structure: markdown
63
+ sections:
64
+ - "operation"
65
+ - "file_path"
66
+ - "lines_changed"
67
+ - "summary"
68
+ max_length: "Brief summary of changes"
69
+
70
+ examples:
71
+ - user_input: "creá un archivo README.md con la descripción del proyecto"
72
+ expected_behavior: "fs_exists (false) → fs_write({ path: 'README.md', content: '...' })"
73
+
74
+ - user_input: "editá el package.json para agregar la dependencia lodash"
75
+ expected_behavior: "fs_read → fs_edit with old_string/new_string for dependencies"
76
+
77
+ - user_input: "eliminá el archivo temporal.log"
78
+ expected_behavior: "after explicit authorization: fs_exists → fs_delete"
79
+ ---
80
+
81
+ # File Writer Skill
82
+
83
+ ## Cuándo se Activa
84
+
85
+ Esta skill se activa cuando el usuario necesita:
86
+ - Crear nuevos archivos
87
+ - Modificar contenido existente
88
+ - Eliminar archivos
89
+ - Guardar cambios
90
+
91
+ ## Herramientas Disponibles
92
+
93
+ | Tool | Qué hace | Cuándo usarla |
94
+ |------|----------|---------------|
95
+ | `fs_read` | Lee archivo existente | Antes de editar para entender estructura |
96
+ | `fs_write` | Crea o sobreescribe archivo | Archivos nuevos o reescritura completa |
97
+ | `fs_edit` | Edita secciones específicas | Cambios puntuales (find/replace) |
98
+ | `fs_exists` | Verifica existencia | Para decidir crear vs editar |
99
+
100
+ ## Workflow
101
+
102
+ ### Crear Archivo Nuevo
103
+ 1. `fs_exists({ path })` → verificar no existe
104
+ 2. `fs_write({ path, content })` → crear
105
+
106
+ ### Editar Archivo Existente
107
+ 1. `fs_exists({ path })` → verificar existe
108
+ 2. `fs_read({ path })` → entender estructura
109
+ 3. `fs_edit({ path, old_string, new_string })` → modificar
110
+ 4. Ejecutar únicamente dentro del alcance autorizado por el coordinador
111
+
112
+ ### Eliminar Archivo
113
+ 1. `fs_exists({ path })` → verificar existe
114
+ 2. Verificar que el coordinador ya obtuvo autorización explícita
115
+ 3. `fs_delete({ path })`
116
+
117
+ ## Mejores Prácticas
118
+
119
+ - **Leer antes de editar**: Nunca modificar sin entender estructura
120
+ - **Edit vs Write**: Usar edit para cambios pequeños, write para nuevos archivos
121
+ - **Respetar autorización**: las confirmaciones se gestionan previamente desde el panel interactivo
122
+ - **Paths seguros**: Trabajar dentro del workspace por defecto
123
+
124
+ ## Errores a Evitar
125
+
126
+ - ❌ Editar sin leer primero
127
+ - ❌ Ampliar el alcance autorizado
128
+ - ❌ Eliminar sin autorización explícita previa
129
+ - ❌ Usar write cuando edit es suficiente
@@ -0,0 +1,22 @@
1
+ ---
2
+ name: workspace_file_operator
3
+ description: "Safely create, read, edit, organize, and verify files or folders inside an authorized workspace"
4
+ version: 1.0.0
5
+ author: Hive Team
6
+ icon: "📁"
7
+ category: filesystem
8
+ permissions: [filesystem_read, filesystem_write]
9
+ dependencies: []
10
+ tools: [fs_read, fs_write, fs_edit, fs_delete, fs_list, fs_glob, fs_exists]
11
+ triggers: [crear carpeta, organizar archivos, editar archivo, create folder, manage files]
12
+ preferred_agents: [workspace_file_operator]
13
+ ---
14
+
15
+ # Operación segura del workspace
16
+
17
+ 1. Resuelve todas las rutas contra el workspace asignado.
18
+ 2. Comprueba el estado inicial con `fs_exists`, `fs_list` o `fs_read`.
19
+ 3. Aplica la operación mínima solicitada.
20
+ 4. Verifica el estado final mediante readback.
21
+
22
+ Nunca accedas fuera del workspace ni declares éxito basándote solo en el resultado de una escritura.