@johpaz/hive-sdk 0.1.6 → 0.3.0

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 (238) hide show
  1. package/CHANGELOG.md +441 -0
  2. package/README.md +21 -3
  3. package/package.json +27 -5
  4. package/packages/core/src/agent/acceptance-checks.ts +9 -9
  5. package/packages/core/src/agent/agent-catalog.ts +82 -25
  6. package/packages/core/src/agent/agent-loop.ts +115 -26
  7. package/packages/core/src/agent/capability-search.ts +2 -2
  8. package/packages/core/src/agent/catalog-selector.ts +4 -4
  9. package/packages/core/src/agent/compaction.ts +30 -10
  10. package/packages/core/src/agent/context-compiler.ts +63 -36
  11. package/packages/core/src/agent/conversation-store.ts +167 -9
  12. package/packages/core/src/agent/curator.ts +16 -7
  13. package/packages/core/src/agent/delegation-runtime.ts +5 -5
  14. package/packages/core/src/agent/goal-runner.ts +9 -9
  15. package/packages/core/src/agent/index.ts +1 -0
  16. package/packages/core/src/agent/llm-client.ts +98 -37
  17. package/packages/core/src/agent/llm-providers/anthropic.ts +4 -4
  18. package/packages/core/src/agent/llm-providers/deepseek.ts +1 -1
  19. package/packages/core/src/agent/llm-providers/gemini.ts +4 -4
  20. package/packages/core/src/agent/llm-providers/groq.ts +1 -1
  21. package/packages/core/src/agent/llm-providers/hiveagents.ts +3 -3
  22. package/packages/core/src/agent/llm-providers/interface.ts +2 -2
  23. package/packages/core/src/agent/llm-providers/kimi.ts +1 -1
  24. package/packages/core/src/agent/llm-providers/minimax.ts +1 -1
  25. package/packages/core/src/agent/llm-providers/mistral.ts +1 -1
  26. package/packages/core/src/agent/llm-providers/modelscope.ts +1 -1
  27. package/packages/core/src/agent/llm-providers/nvidia.ts +40 -1
  28. package/packages/core/src/agent/llm-providers/ollama.ts +4 -4
  29. package/packages/core/src/agent/llm-providers/openai-compat-base.ts +47 -7
  30. package/packages/core/src/agent/llm-providers/openai.ts +1 -1
  31. package/packages/core/src/agent/llm-providers/opencode-go.ts +1 -1
  32. package/packages/core/src/agent/llm-providers/openrouter.ts +1 -1
  33. package/packages/core/src/agent/llm-providers/qwen.ts +1 -1
  34. package/packages/core/src/agent/llm-providers/z-ai.ts +1 -1
  35. package/packages/core/src/agent/mcp-result-normalizer.ts +192 -0
  36. package/packages/core/src/agent/playbook-selector.ts +22 -7
  37. package/packages/core/src/agent/prompt-builder.ts +5 -5
  38. package/packages/core/src/agent/proof-packet.ts +5 -5
  39. package/packages/core/src/agent/providers/index.ts +39 -4
  40. package/packages/core/src/agent/realtime-providers/gemini-live.ts +238 -0
  41. package/packages/core/src/agent/realtime-providers/index.ts +29 -0
  42. package/packages/core/src/agent/realtime-providers/interface.ts +108 -0
  43. package/packages/core/src/agent/reflector.ts +38 -15
  44. package/packages/core/src/agent/run-store.ts +8 -8
  45. package/packages/core/src/agent/service.ts +10 -10
  46. package/packages/core/src/agent/skill-selector.ts +6 -6
  47. package/packages/core/src/agent/thread-id.ts +71 -0
  48. package/packages/core/src/agent/thread-store.ts +293 -0
  49. package/packages/core/src/agent/tool-selector.ts +9 -5
  50. package/packages/core/src/agent/tracer.ts +5 -5
  51. package/packages/core/src/api/createAgent.ts +67 -2
  52. package/packages/core/src/artifacts/index.ts +15 -0
  53. package/packages/core/src/artifacts/store.ts +161 -5
  54. package/packages/core/src/canvas/emitter.ts +2 -2
  55. package/packages/core/src/canvas/index.ts +9 -0
  56. package/packages/core/src/channels/telegram.ts +1 -1
  57. package/packages/core/src/channels/webchat.ts +1 -1
  58. package/packages/core/src/config/loader.ts +14 -5
  59. package/packages/core/src/ethics/EthicsGuard.ts +7 -1
  60. package/packages/core/src/events/agent-bus.ts +3 -3
  61. package/packages/core/src/events/channel-narration.ts +3 -3
  62. package/packages/core/src/events/event-bus.ts +1 -1
  63. package/packages/core/src/events/index.ts +18 -0
  64. package/packages/core/src/events/narration.ts +3 -3
  65. package/packages/core/src/events/tool-narration.ts +4 -0
  66. package/packages/core/src/gateway/channel-notify.ts +103 -6
  67. package/packages/core/src/gateway/delegation-groups.ts +4 -4
  68. package/packages/core/src/gateway/durable-queue.ts +18 -6
  69. package/packages/core/src/gateway/index.ts +3 -0
  70. package/packages/core/src/gateway/job-store.ts +11 -5
  71. package/packages/core/src/gateway/notification-inbox.ts +2 -2
  72. package/packages/core/src/gateway/server.ts +2 -2
  73. package/packages/core/src/harness/executors.ts +493 -0
  74. package/packages/core/src/harness/index.ts +12 -2
  75. package/packages/core/src/hooks/index.ts +203 -0
  76. package/packages/core/src/images/index.ts +161 -0
  77. package/packages/core/src/index.ts +1 -0
  78. package/packages/core/src/mcp/MCPClient.ts +3 -3
  79. package/packages/core/src/mcp/hot-reload.ts +5 -5
  80. package/packages/core/src/mcp/tool-sync.ts +5 -5
  81. package/packages/core/src/mcp/transports/index.ts +2 -2
  82. package/packages/core/src/mcp/transports/sse.ts +1 -1
  83. package/packages/core/src/models/index.ts +36 -0
  84. package/packages/core/src/multimodal/index.ts +2 -2
  85. package/packages/core/src/multimodal/vision-service.ts +51 -19
  86. package/packages/core/src/plugins/loader.ts +4 -1
  87. package/packages/core/src/resilience/circuit-breaker.ts +16 -5
  88. package/packages/core/src/resilience/index.ts +13 -0
  89. package/packages/core/src/resilience/retry.ts +1 -1
  90. package/packages/core/src/scheduler/CronScheduler.ts +54 -27
  91. package/packages/core/src/scheduler/cron/expression.ts +165 -0
  92. package/packages/core/src/scheduler/cron/index.ts +10 -0
  93. package/packages/core/src/scheduler/cron/job.ts +339 -0
  94. package/packages/core/src/scheduler/cron/next-run.ts +121 -0
  95. package/packages/core/src/scheduler/cron/zoned-time.ts +138 -0
  96. package/packages/core/src/scheduler/index.ts +21 -3
  97. package/packages/core/src/scheduler/integration.ts +25 -14
  98. package/packages/core/src/scheduler/types.ts +3 -18
  99. package/packages/core/src/services/agents.ts +268 -0
  100. package/packages/core/src/services/cron.ts +257 -0
  101. package/packages/core/src/services/endpoints.ts +289 -0
  102. package/packages/core/src/services/ethics.ts +107 -0
  103. package/packages/core/src/services/images.ts +212 -0
  104. package/packages/core/src/services/index.ts +112 -0
  105. package/packages/core/src/services/mcp.ts +201 -0
  106. package/packages/core/src/services/memory.ts +133 -0
  107. package/packages/core/src/services/models.ts +179 -0
  108. package/packages/core/src/services/providers.ts +152 -0
  109. package/packages/core/src/services/setup.ts +222 -0
  110. package/packages/core/src/services/skills.ts +241 -0
  111. package/packages/core/src/services/swarms.ts +307 -0
  112. package/packages/core/src/services/tools.ts +106 -0
  113. package/packages/core/src/sessions/index.ts +268 -0
  114. package/packages/core/src/sessions/resolve.ts +108 -0
  115. package/packages/core/src/skills/SkillLoader.ts +8 -1
  116. package/packages/core/src/skills/bundled/artifacts/artifact_reader/SKILL.md +105 -0
  117. package/packages/core/src/skills/bundled/cron_manager/SKILL.md +21 -11
  118. package/packages/core/src/skills/bundled/images/image_editor/SKILL.md +120 -0
  119. package/packages/core/src/skills/bundled/web/browser_automate/SKILL.md +12 -3
  120. package/packages/core/src/skills/bundled/web/browser_scrape/SKILL.md +22 -7
  121. package/packages/core/src/skills/bundled-data.generated.ts +110 -12
  122. package/packages/core/src/storage/bootstrap.ts +107 -12
  123. package/packages/core/src/storage/causal-events.ts +1 -1
  124. package/packages/core/src/storage/collections.ts +138 -2
  125. package/packages/core/src/storage/crypto.ts +35 -4
  126. package/packages/core/src/storage/hive.ts +1 -1
  127. package/packages/core/src/storage/hivedb.ts +10 -1
  128. package/packages/core/src/storage/index.ts +2 -1
  129. package/packages/core/src/storage/onboarding.ts +61 -45
  130. package/packages/core/src/storage/reconcile.ts +11 -6
  131. package/packages/core/src/storage/seed.ts +191 -23
  132. package/packages/core/src/storage/usage.ts +3 -3
  133. package/packages/core/src/swarm/AgentExecutor.ts +2 -2
  134. package/packages/core/src/swarm/Coordinator.ts +8 -8
  135. package/packages/core/src/swarm/EventBridge.ts +2 -2
  136. package/packages/core/src/swarm/RoleSwarm.ts +234 -0
  137. package/packages/core/src/swarm/TaskGraph.ts +2 -2
  138. package/packages/core/src/swarm/index.ts +7 -0
  139. package/packages/core/src/swarm/presets/HiveLearnPreset.ts +2 -2
  140. package/packages/core/src/swarm/presets/ResearchPreset.ts +2 -2
  141. package/packages/core/src/swarm/strategies/ParallelStrategy.ts +1 -1
  142. package/packages/core/src/swarm/strategies/PriorityStrategy.ts +3 -3
  143. package/packages/core/src/swarm/types.ts +3 -18
  144. package/packages/core/src/tool-runtime/embedded-worker.generated.ts +21 -0
  145. package/packages/core/src/tool-runtime/index.ts +129 -14
  146. package/packages/core/src/tools/ToolExecutor.ts +7 -3
  147. package/packages/core/src/tools/agents/index.ts +18 -60
  148. package/packages/core/src/tools/cli/index.ts +55 -0
  149. package/packages/core/src/tools/core/index.ts +52 -4
  150. package/packages/core/src/tools/cron/index.ts +8 -8
  151. package/packages/core/src/tools/images/index.ts +130 -0
  152. package/packages/core/src/tools/index.ts +14 -1
  153. package/packages/core/src/tools/office/office-escribir-xlsx.ts +2 -1
  154. package/packages/core/src/tools/office/office-leer-xlsx.ts +2 -1
  155. package/packages/core/src/tools/office/xlsx-loader.ts +19 -0
  156. package/packages/core/src/tools/web/artifact-inspect.ts +2 -2
  157. package/packages/core/src/tools/web/artifact-read.ts +162 -0
  158. package/packages/core/src/tools/web/browser-backend.ts +141 -44
  159. package/packages/core/src/tools/web/browser-click.ts +2 -2
  160. package/packages/core/src/tools/web/browser-extract.ts +2 -2
  161. package/packages/core/src/tools/web/browser-navigate.ts +2 -2
  162. package/packages/core/src/tools/web/browser-screenshot.ts +12 -5
  163. package/packages/core/src/tools/web/browser-script.ts +2 -2
  164. package/packages/core/src/tools/web/browser-service.ts +63 -384
  165. package/packages/core/src/tools/web/browser-session.ts +125 -0
  166. package/packages/core/src/tools/web/browser-type.ts +2 -2
  167. package/packages/core/src/tools/web/browser-wait.ts +2 -2
  168. package/packages/core/src/tools/web/computer-use.ts +553 -0
  169. package/packages/core/src/tools/web/index.ts +8 -1
  170. package/packages/core/src/tools/web/webview-backend.ts +460 -21
  171. package/packages/core/src/utils/index.ts +1 -0
  172. package/packages/core/src/utils/logger.ts +12 -4
  173. package/packages/core/src/utils/redact-binary.ts +17 -0
  174. package/packages/core/src/utils/toon.ts +1 -1
  175. package/packages/core/src/voice/index.ts +6 -6
  176. package/bun.lock +0 -859
  177. package/bunfig.toml +0 -9
  178. package/docs/API-AGENTS.md +0 -367
  179. package/docs/API-CONTEXT-COMPILER.md +0 -249
  180. package/docs/API-DAG-SCHEDULER.md +0 -273
  181. package/docs/API-TOOLS-SKILLS-CHANNELS.md +0 -446
  182. package/docs/API-WORKERS-EVENTS.md +0 -299
  183. package/docs/HIVE-HARNESS.md +0 -113
  184. package/docs/INDEX.md +0 -190
  185. package/docs/TEMPLATE-HIVE-APP.md +0 -360
  186. package/packages/cli/package.json +0 -17
  187. package/packages/cli/src/commands/create-app.test.ts +0 -180
  188. package/packages/core/package.json +0 -70
  189. package/packages/core/src/api/createAgent.test.ts +0 -160
  190. package/packages/core/src/canvas/canvas.test.ts +0 -36
  191. package/packages/core/src/channels/channels.test.ts +0 -18
  192. package/packages/core/src/ethics/EthicsGuard.test.ts +0 -108
  193. package/packages/core/src/gateway/gateway.test.ts +0 -38
  194. package/packages/core/src/memory/Scratchpad.test.ts +0 -68
  195. package/packages/core/src/scheduler/scheduler.test.ts +0 -15
  196. package/packages/core/src/skills/skills.test.ts +0 -62
  197. package/packages/core/src/swarm/swarm.test.ts +0 -24
  198. package/packages/core/src/tool-runtime/tool-runtime.test.ts +0 -99
  199. package/packages/core/src/tools/ToolRegistry.test.ts +0 -98
  200. package/packages/core/src/tools/api/api-request.test.ts +0 -164
  201. package/packages/core/src/tools/web/browser-service.test.ts +0 -83
  202. package/packages/core/src/workers/workers.test.ts +0 -41
  203. package/scripts/bump-version.ts +0 -248
  204. package/scripts/generate-skill-bundle.ts +0 -108
  205. package/test/acceptance-checks.test.ts +0 -403
  206. package/test/agent-loop-terminal-synthesis.test.ts +0 -32
  207. package/test/browser-backend.test.ts +0 -308
  208. package/test/catalog-agents-stay-enabled.test.ts +0 -117
  209. package/test/causal-events.test.ts +0 -117
  210. package/test/compaction.test.ts +0 -105
  211. package/test/context-compiler.test.ts +0 -269
  212. package/test/curator.test.ts +0 -130
  213. package/test/durable-queue.test.ts +0 -114
  214. package/test/harness-barrel.test.ts +0 -64
  215. package/test/hive-helpers.test.ts +0 -130
  216. package/test/hivedb-search.test.ts +0 -189
  217. package/test/internal-turns.test.ts +0 -166
  218. package/test/job-idempotency.test.ts +0 -68
  219. package/test/job-retry-backoff.test.ts +0 -184
  220. package/test/job-store.test.ts +0 -381
  221. package/test/llm-retry.test.ts +0 -97
  222. package/test/memory-perf.test.ts +0 -774
  223. package/test/minimal-loadout.test.ts +0 -78
  224. package/test/model-catalog.test.ts +0 -105
  225. package/test/preload.ts +0 -12
  226. package/test/reflector.test.ts +0 -320
  227. package/test/retention-cap.test.ts +0 -91
  228. package/test/retired-capabilities-pruned.test.ts +0 -192
  229. package/test/run-store.test.ts +0 -355
  230. package/test/scratchpad.test.ts +0 -74
  231. package/test/secrets-durability.test.ts +0 -119
  232. package/test/seed-model-reseed.test.ts +0 -155
  233. package/test/setup-agent-seed.test.ts +0 -264
  234. package/test/tool-inventory.test.ts +0 -65
  235. package/test/tool-runtime.test.ts +0 -258
  236. package/test/tool-selector-runtime-tools.test.ts +0 -117
  237. package/test/toon.test.ts +0 -429
  238. package/tsconfig.json +0 -42
@@ -1,360 +0,0 @@
1
- # Template `hive-app` — Documentación Completa
2
-
3
- El template `hive-app` genera una **aplicación harness completa** lista para ejecutar. Incluye gateway HTTP/WebSocket, agente coordinador, configuración de canales, base de datos HiveDB, y deployment con Docker.
4
-
5
- ---
6
-
7
- ## Generar una app
8
-
9
- ```bash
10
- hives create-app my-hive
11
- ```
12
-
13
- Esto crea el directorio `my-hive/` con la estructura completa.
14
-
15
- ---
16
-
17
- ## Estructura generada
18
-
19
- ```
20
- my-hive/
21
- ├── package.json # Dependencias y scripts
22
- ├── hive.config.ts # Configuración del harness
23
- ├── docker-compose.yml # Deployment con Docker
24
- ├── .env.example # Variables de entorno de ejemplo
25
- ├── .gitignore # Archivos ignorados por git
26
- └── src/
27
- ├── main.ts # Entry point — arranca gateway + agente
28
- └── agents/
29
- └── coordinator.ts # Definición del agente coordinador
30
- ```
31
-
32
- ---
33
-
34
- ## Archivos y opciones
35
-
36
- ### `package.json`
37
-
38
- ```json
39
- {
40
- "name": "my-hive",
41
- "version": "0.1.0",
42
- "type": "module",
43
- "scripts": {
44
- "dev": "bun run src/main.ts",
45
- "start": "bun run src/main.ts",
46
- "build": "bun build src/main.ts --outdir dist --target bun"
47
- },
48
- "dependencies": {
49
- "@johpaz/hive-sdk": "latest"
50
- }
51
- }
52
- ```
53
-
54
- | Script | Comando | Descripción |
55
- |--------|---------|-------------|
56
- | `dev` | `bun run src/main.ts` | Ejecutar en desarrollo |
57
- | `start` | `bun run src/main.ts` | Ejecutar en producción |
58
- | `build` | `bun build ...` | Compilar a `dist/` |
59
-
60
- ---
61
-
62
- ### `hive.config.ts`
63
-
64
- Configuración central del harness.
65
-
66
- ```typescript
67
- import type { Config } from "@johpaz/hive-sdk";
68
-
69
- export default {
70
- name: "my-hive",
71
- gateway: {
72
- host: process.env.HIVE_HOST ?? "127.0.0.1",
73
- port: Number(process.env.HIVE_PORT ?? 18790),
74
- },
75
- channels: {
76
- webchat: { enabled: true }, // Siempre habilitado
77
- telegram: { enabled: false }, // Requiere TELEGRAM_BOT_TOKEN
78
- discord: { enabled: false }, // Requiere DISCORD_BOT_TOKEN
79
- whatsapp: { enabled: false }, // Requiere configuración adicional
80
- slack: { enabled: false }, // Requiere SLACK_BOT_TOKEN
81
- },
82
- database: {
83
- path: process.env.HIVE_DATA_DIR ?? "./data/hive.db",
84
- },
85
- } satisfies Config;
86
- ```
87
-
88
- #### Opciones de configuración
89
-
90
- | Opción | Tipo | Default | Descripción |
91
- |--------|------|---------|-------------|
92
- | `name` | `string` | `"my-hive"` | Nombre de la aplicación |
93
- | `gateway.host` | `string` | `"127.0.0.1"` | Host del gateway |
94
- | `gateway.port` | `number` | `18790` | Puerto del gateway |
95
- | `channels.webchat.enabled` | `boolean` | `true` | Canal webchat integrado |
96
- | `channels.telegram.enabled` | `boolean` | `false` | Bot de Telegram |
97
- | `channels.discord.enabled` | `boolean` | `false` | Bot de Discord |
98
- | `channels.whatsapp.enabled` | `boolean` | `false` | Bot de WhatsApp |
99
- | `channels.slack.enabled` | `boolean` | `false` | Bot de Slack |
100
- | `database.path` | `string` | `"./data/hive"` | Ruta de la base de datos HiveDB |
101
-
102
- ---
103
-
104
- ### `src/main.ts`
105
-
106
- Entry point de la aplicación. Realiza:
107
-
108
- 1. Inicializa la base de datos (`ensureHiveDb`, que además siembra el catálogo)
109
- 2. Crea el agente coordinador (`createAgent`)
110
- 3. Inicializa el ChannelManager
111
- 4. Arranca el gateway (`startGateway`)
112
- 5. Maneja shutdown graceful (`SIGINT`)
113
-
114
- ```typescript
115
- import {
116
- createAgent,
117
- startGateway,
118
- ensureHiveDb,
119
- ChannelManager,
120
- logger,
121
- } from "@johpaz/hive-sdk";
122
- import config from "../hive.config.ts";
123
-
124
- const log = logger.child("app");
125
-
126
- async function main() {
127
- log.info(`Starting my-hive...`);
128
-
129
- await ensureHiveDb();
130
-
131
- const agent = await createAgent({
132
- name: "coordinator",
133
- provider: "openai",
134
- model: "gpt-5.6-luna",
135
- systemPrompt: "You are a helpful AI assistant...",
136
- });
137
-
138
- const channelManager = new ChannelManager();
139
- // TODO: configure channels from hive.config.ts
140
-
141
- const gateway = await startGateway({
142
- host: config.gateway?.host,
143
- port: config.gateway?.port,
144
- agentId: "coordinator",
145
- });
146
-
147
- log.info(`my-hive is running at http://${gateway.hostname}:${gateway.port}`);
148
- }
149
-
150
- main().catch((err) => {
151
- log.error("Fatal error:", err);
152
- process.exit(1);
153
- });
154
- ```
155
-
156
- #### Personalizar el agente
157
-
158
- Puedes cambiar el `provider`, `model`, y `systemPrompt`:
159
-
160
- ```typescript
161
- const agent = await createAgent({
162
- name: "coordinator",
163
- provider: "anthropic", // cualquiera de los 16 del catálogo
164
- model: "claude-3-5-sonnet-20241022",
165
- systemPrompt: "Tu system prompt personalizado...",
166
- });
167
- ```
168
-
169
- #### Añadir tools al agente
170
-
171
- ```typescript
172
- import { defineTool } from "@johpaz/hive-sdk";
173
-
174
- const searchTool = defineTool({
175
- name: "search",
176
- description: "Search the web",
177
- execute: async (args: { query: string }) => {
178
- // Implementation
179
- return { results: [] };
180
- },
181
- });
182
-
183
- const agent = await createAgent({
184
- name: "coordinator",
185
- provider: "openai",
186
- model: "gpt-5.6-luna",
187
- tools: [searchTool],
188
- });
189
- ```
190
-
191
- ---
192
-
193
- ### `src/agents/coordinator.ts`
194
-
195
- Definición standalone del agente coordinador. Puedes importarlo desde `main.ts` o usarlo directamente.
196
-
197
- ```typescript
198
- import { createAgent } from "@johpaz/hive-sdk";
199
-
200
- export const coordinatorAgent = await createAgent({
201
- name: "coordinator",
202
- provider: "openai",
203
- model: "gpt-5.6-luna",
204
- systemPrompt: "You are the coordinator agent...",
205
- });
206
- ```
207
-
208
- ---
209
-
210
- ### `docker-compose.yml`
211
-
212
- Deployment containerizado.
213
-
214
- ```yaml
215
- services:
216
- app:
217
- image: oven/bun:latest
218
- working_dir: /app
219
- volumes:
220
- - .:/app
221
- - hive-data:/app/data
222
- ports:
223
- - "${HIVE_PORT:-18790}:18790"
224
- environment:
225
- - HIVE_HOST=0.0.0.0
226
- - HIVE_PORT=18790
227
- - HIVE_DATA_DIR=/app/data
228
- - OPENAI_API_KEY=${OPENAI_API_KEY}
229
- - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
230
- command: ["bun", "run", "src/main.ts"]
231
- restart: unless-stopped
232
-
233
- volumes:
234
- hive-data:
235
- ```
236
-
237
- #### Deployment
238
-
239
- ```bash
240
- # Copiar variables de entorno
241
- cp .env.example .env
242
- # Editar .env con tus API keys
243
-
244
- # Levantar con Docker
245
- docker compose up -d
246
-
247
- # Ver logs
248
- docker compose logs -f
249
- ```
250
-
251
- ---
252
-
253
- ### `.env.example`
254
-
255
- Variables de entorno disponibles:
256
-
257
- ```bash
258
- # Hive Harness Configuration
259
- HIVE_HOST=127.0.0.1
260
- HIVE_PORT=18790
261
- HIVE_DATA_DIR=./data
262
-
263
- # LLM Providers
264
- OPENAI_API_KEY=sk-...
265
- ANTHROPIC_API_KEY=sk-ant-...
266
- GOOGLE_API_KEY=...
267
-
268
- # Channels (enable as needed)
269
- TELEGRAM_BOT_TOKEN=
270
- DISCORD_BOT_TOKEN=
271
- SLACK_BOT_TOKEN=
272
-
273
- # Logging
274
- LOG_LEVEL=info
275
- ```
276
-
277
- | Variable | Requerida | Descripción |
278
- |----------|-----------|-------------|
279
- | `HIVE_HOST` | No | Host del gateway |
280
- | `HIVE_PORT` | No | Puerto del gateway |
281
- | `HIVE_HOME` | No | Directorio de datos (HiveDB en `<HIVE_HOME>/data`) |
282
- | `OPENAI_API_KEY` | Sí* | API key de OpenAI |
283
- | `ANTHROPIC_API_KEY` | Sí* | API key de Anthropic |
284
- | `GOOGLE_API_KEY` | Sí* | API key de Gemini |
285
- | `TELEGRAM_BOT_TOKEN` | No | Token del bot de Telegram |
286
- | `DISCORD_BOT_TOKEN` | No | Token del bot de Discord |
287
- | `SLACK_BOT_TOKEN` | No | Token del bot de Slack |
288
- | `LOG_LEVEL` | No | `debug` \| `info` \| `warn` \| `error` |
289
-
290
- \* Al menos una API key de LLM es requerida.
291
-
292
- ---
293
-
294
- ## Personalización avanzada
295
-
296
- ### Añadir canales
297
-
298
- ```typescript
299
- // src/main.ts
300
- import { TelegramChannel, DiscordChannel } from "@johpaz/hive-sdk";
301
-
302
- const channelManager = new ChannelManager(config);
303
-
304
- if (config.channels.telegram.enabled) {
305
- channelManager.register("telegram", new TelegramChannel({
306
- botToken: process.env.TELEGRAM_BOT_TOKEN!,
307
- }));
308
- }
309
-
310
- if (config.channels.discord.enabled) {
311
- channelManager.register("discord", new DiscordChannel({
312
- botToken: process.env.DISCORD_BOT_TOKEN!,
313
- }));
314
- }
315
-
316
- await channelManager.initialize();
317
- ```
318
-
319
- ### Añadir workers especializados
320
-
321
- ```bash
322
- cd my-hive
323
- hives add-worker researcher
324
- hives add-worker coder
325
- ```
326
-
327
- Esto genera `src/workers/researcher.worker.ts` y `src/workers/coder.worker.ts`.
328
-
329
- ### Añadir tools
330
-
331
- ```bash
332
- cd my-hive
333
- hives add-tool search-docs
334
- ```
335
-
336
- Genera `src/tools/search-docs.ts`.
337
-
338
- ### Añadir skills
339
-
340
- ```bash
341
- cd my-hive
342
- hives add-skill onboarding
343
- ```
344
-
345
- Genera `src/skills/onboarding.ts`.
346
-
347
- ---
348
-
349
- ## Tests del template
350
-
351
- El template incluye tests para verificar que la estructura se genera correctamente.
352
-
353
- ```bash
354
- cd my-hive
355
- bun test
356
- ```
357
-
358
- ---
359
-
360
- *Documentación Hive SDK v0.0.17*
@@ -1,17 +0,0 @@
1
- {
2
- "name": "@hive/cli",
3
- "version": "0.1.6",
4
- "description": "Hive CLI — init, run, test, trace",
5
- "license": "MIT",
6
- "type": "module",
7
- "bin": {
8
- "hives": "./src/index.ts"
9
- },
10
- "main": "./src/index.ts",
11
- "exports": {
12
- ".": "./src/index.ts"
13
- },
14
- "dependencies": {
15
- "@hive/core": "workspace:*"
16
- }
17
- }
@@ -1,180 +0,0 @@
1
- import { describe, expect, it, beforeEach, afterEach } from "bun:test";
2
- import { existsSync, rmSync, readFileSync } from "node:fs";
3
- import { join } from "node:path";
4
- import * as process from "node:process";
5
-
6
- const TEST_DIR = join(process.cwd(), "test-create-app-output");
7
-
8
- describe("hive create-app", () => {
9
- beforeEach(() => {
10
- // Clean up before each test
11
- if (existsSync(TEST_DIR)) {
12
- rmSync(TEST_DIR, { recursive: true });
13
- }
14
- });
15
-
16
- afterEach(() => {
17
- // Clean up after each test
18
- if (existsSync(TEST_DIR)) {
19
- rmSync(TEST_DIR, { recursive: true });
20
- }
21
- });
22
-
23
- it("generates a hive-app template with correct structure", async () => {
24
- const { copyTemplate } = await import("./create-app-utils.ts");
25
-
26
- copyTemplate(TEST_DIR, { "{{APP_NAME}}": "my-test-app" });
27
-
28
- // Check all expected files exist
29
- expect(existsSync(join(TEST_DIR, "package.json"))).toBe(true);
30
- expect(existsSync(join(TEST_DIR, "hive.config.ts"))).toBe(true);
31
- expect(existsSync(join(TEST_DIR, "docker-compose.yml"))).toBe(true);
32
- expect(existsSync(join(TEST_DIR, ".env.example"))).toBe(true);
33
- expect(existsSync(join(TEST_DIR, ".gitignore"))).toBe(true);
34
- // Sin README el que corre `hives create-app` queda sin una sola instrucción.
35
- expect(existsSync(join(TEST_DIR, "README.md"))).toBe(true);
36
- expect(existsSync(join(TEST_DIR, "src", "main.ts"))).toBe(true);
37
- expect(existsSync(join(TEST_DIR, "src", "agents", "coordinator.ts"))).toBe(true);
38
- });
39
-
40
- it("el README del scaffold lleva el nombre de la app y arranca con los pasos", async () => {
41
- const { copyTemplate } = await import("./create-app-utils.ts");
42
-
43
- copyTemplate(TEST_DIR, { "{{APP_NAME}}": "mi-app" });
44
-
45
- const readme = readFileSync(join(TEST_DIR, "README.md"), "utf-8");
46
- expect(readme).toContain("# mi-app");
47
- expect(readme).not.toContain("{{APP_NAME}}");
48
- expect(readme).toContain("bun install");
49
- expect(readme).toContain("bun run dev");
50
- });
51
-
52
- it("replaces {{APP_NAME}} placeholder in all files", async () => {
53
- const { copyTemplate } = await import("./create-app-utils.ts");
54
-
55
- copyTemplate(TEST_DIR, { "{{APP_NAME}}": "my-awesome-app" });
56
-
57
- const packageJson = readFileSync(join(TEST_DIR, "package.json"), "utf-8");
58
- expect(packageJson).toContain('"name": "my-awesome-app"');
59
-
60
- // `Config` no tiene una clave `name`, así que el nombre de la app sólo se
61
- // sustituye en el comentario de cabecera y en package.json.
62
- const config = readFileSync(join(TEST_DIR, "hive.config.ts"), "utf-8");
63
- expect(config).toContain("my-awesome-app");
64
-
65
- const main = readFileSync(join(TEST_DIR, "src", "main.ts"), "utf-8");
66
- expect(main).toContain("Starting my-awesome-app...");
67
- expect(main).toContain("my-awesome-app is running at");
68
- });
69
-
70
- it("generates valid package.json", async () => {
71
- const { copyTemplate } = await import("./create-app-utils.ts");
72
-
73
- copyTemplate(TEST_DIR, { "{{APP_NAME}}": "test-app" });
74
-
75
- const packageJson = JSON.parse(readFileSync(join(TEST_DIR, "package.json"), "utf-8"));
76
-
77
- expect(packageJson.name).toBe("test-app");
78
- expect(packageJson.version).toBe("0.1.0");
79
- expect(packageJson.type).toBe("module");
80
- expect(packageJson.scripts.dev).toBe("bun run src/main.ts");
81
- expect(packageJson.scripts.build).toBeDefined();
82
- expect(packageJson.dependencies["@johpaz/hive-sdk"]).toBe("latest");
83
- });
84
-
85
- it("generates hive.config.ts with correct defaults", async () => {
86
- const { copyTemplate } = await import("./create-app-utils.ts");
87
-
88
- copyTemplate(TEST_DIR, { "{{APP_NAME}}": "config-test" });
89
-
90
- const config = readFileSync(join(TEST_DIR, "hive.config.ts"), "utf-8");
91
-
92
- expect(config).toContain('host: process.env.HIVE_HOST ?? "127.0.0.1"');
93
- expect(config).toContain('port: Number(process.env.HIVE_PORT ?? 18790)');
94
- expect(config).toContain("webchat: { enabled: true }");
95
- expect(config).toContain("telegram: { enabled: false }");
96
- expect(config).toContain("discord: { enabled: false }");
97
- expect(config).toContain("whatsapp: { enabled: false }");
98
- expect(config).toContain("slack: { enabled: false }");
99
- // HiveDB no se configura por `hive.config.ts`: la ruta sale de HIVE_HOME /
100
- // HIVE_DB_PATH. Una clave `database` acá rompería el `satisfies Config`.
101
- expect(config).not.toContain("database:");
102
- expect(config).not.toContain("hive.db");
103
- expect(config).toContain("satisfies Config");
104
- });
105
-
106
- it("generates main.ts with all required imports", async () => {
107
- const { copyTemplate } = await import("./create-app-utils.ts");
108
-
109
- copyTemplate(TEST_DIR, { "{{APP_NAME}}": "main-test" });
110
-
111
- const main = readFileSync(join(TEST_DIR, "src", "main.ts"), "utf-8");
112
-
113
- expect(main).toContain('from "@johpaz/hive-sdk"');
114
- expect(main).toContain("startGateway");
115
- // `initializeDatabase()` desapareció con la capa SQLite: `ensureHiveDb()`
116
- // abre HiveDB, crea los índices y siembra el catálogo en un solo paso.
117
- expect(main).toContain("ensureHiveDb");
118
- expect(main).not.toContain("initializeDatabase");
119
- expect(main).toContain("ChannelManager");
120
- expect(main).toContain("logger");
121
- expect(main).toContain('import config from "../hive.config.ts"');
122
- expect(main).toContain("await ensureHiveDb()");
123
- expect(main).toContain('await startGateway({');
124
- expect(main).toContain('process.on("SIGINT"');
125
- // El coordinador se define una sola vez, en su módulo, y main.ts lo usa —
126
- // antes el template creaba uno propio y dejaba coordinator.ts huérfano.
127
- expect(main).toContain('from "./agents/coordinator.ts"');
128
- expect(main).toContain("agentId: coordinatorAgent.id");
129
- });
130
-
131
- it("generates coordinator agent with correct config", async () => {
132
- const { copyTemplate } = await import("./create-app-utils.ts");
133
-
134
- copyTemplate(TEST_DIR, { "{{APP_NAME}}": "agent-test" });
135
-
136
- const agent = readFileSync(join(TEST_DIR, "src", "agents", "coordinator.ts"), "utf-8");
137
-
138
- expect(agent).toContain('import { createAgent } from "@johpaz/hive-sdk"');
139
- expect(agent).toContain('name: "coordinator"');
140
- expect(agent).toContain('provider: "openai"');
141
- // El modelo del scaffold tiene que existir en SEED_DATA.models, o el primer
142
- // `bun run dev` de un usuario nuevo muere con "no está en el catálogo".
143
- expect(agent).toContain('model: "gpt-5.6-luna"');
144
- expect(agent).toContain("export const coordinatorAgent");
145
- });
146
-
147
- it("generates docker-compose.yml with correct ports", async () => {
148
- const { copyTemplate } = await import("./create-app-utils.ts");
149
-
150
- copyTemplate(TEST_DIR, { "{{APP_NAME}}": "docker-test" });
151
-
152
- const docker = readFileSync(join(TEST_DIR, "docker-compose.yml"), "utf-8");
153
-
154
- expect(docker).toContain('image: oven/bun:latest');
155
- expect(docker).toContain('"${HIVE_PORT:-18790}:18790"');
156
- expect(docker).toContain('HIVE_HOST=0.0.0.0');
157
- expect(docker).toContain('HIVE_PORT=18790');
158
- expect(docker).toContain('command: ["bun", "run", "src/main.ts"]');
159
- expect(docker).toContain('restart: unless-stopped');
160
- });
161
-
162
- it("generates .env.example with all required variables", async () => {
163
- const { copyTemplate } = await import("./create-app-utils.ts");
164
-
165
- copyTemplate(TEST_DIR, { "{{APP_NAME}}": "env-test" });
166
-
167
- const env = readFileSync(join(TEST_DIR, ".env.example"), "utf-8");
168
-
169
- expect(env).toContain("HIVE_HOST=");
170
- expect(env).toContain("HIVE_PORT=");
171
- expect(env).toContain("HIVE_HOME=");
172
- expect(env).toContain("OPENAI_API_KEY=");
173
- expect(env).toContain("ANTHROPIC_API_KEY=");
174
- expect(env).toContain("GOOGLE_API_KEY=");
175
- expect(env).toContain("TELEGRAM_BOT_TOKEN=");
176
- expect(env).toContain("DISCORD_BOT_TOKEN=");
177
- expect(env).toContain("SLACK_BOT_TOKEN=");
178
- expect(env).toContain("LOG_LEVEL=");
179
- });
180
- });
@@ -1,70 +0,0 @@
1
- {
2
- "name": "@hive/core",
3
- "version": "0.1.6",
4
- "description": "Hive Core — runtime de agentes con context engineering, catálogo de modelos y HiveDB",
5
- "license": "MIT",
6
- "type": "module",
7
- "main": "./src/index.ts",
8
- "types": "./src/index.ts",
9
- "exports": {
10
- ".": "./src/index.ts",
11
- "./agent": "./src/agent/index.ts",
12
- "./agent/providers": "./src/agent/providers/index.ts",
13
- "./tools": "./src/tools/index.ts",
14
- "./skills": "./src/skills/index.ts",
15
- "./storage": "./src/storage/index.ts",
16
- "./swarm": "./src/swarm/index.ts",
17
- "./swarm/strategies": "./src/swarm/strategies/index.ts",
18
- "./swarm/presets": "./src/swarm/presets/index.ts",
19
- "./scheduler": "./src/scheduler/index.ts",
20
- "./workers": "./src/workers/index.ts",
21
- "./events": "./src/events/event-bus.ts",
22
- "./ethics": "./src/ethics/index.ts",
23
- "./canvas": "./src/canvas/index.ts",
24
- "./config": "./src/config/index.ts",
25
- "./mcp": "./src/mcp/index.ts",
26
- "./mcp/transports": "./src/mcp/transports/index.ts",
27
- "./memory": "./src/memory/index.ts",
28
- "./multimodal": "./src/multimodal/index.ts",
29
- "./security": "./src/security/index.ts",
30
- "./state": "./src/state/index.ts",
31
- "./utils": "./src/utils/index.ts",
32
- "./gateway": "./src/gateway/index.ts",
33
- "./api": "./src/api/index.ts",
34
- "./harness": "./src/harness/index.ts"
35
- },
36
- "dependencies": {
37
- "@johpaz/hive-db": "^0.4.0",
38
- "@anthropic-ai/sdk": "^0.74.0",
39
- "@google/genai": "^1.43.0",
40
- "@modelcontextprotocol/sdk": "^1.26.0",
41
- "@sapphire/snowflake": "^3.5.5",
42
- "@slack/bolt": "^4.7.2",
43
- "@whiskeysockets/baileys": "7.0.0-rc11",
44
- "async-mutex": "^0.5.0",
45
- "cron-parser": "^5.5.0",
46
- "croner": "^10.0.1",
47
- "discord.js": "^14.26.4",
48
- "docx": "^9.6.1",
49
- "grammy": "^1.42.0",
50
- "groq-sdk": "^0.37.0",
51
- "jsonwebtoken": "^9.0.3",
52
- "jszip": "^3.10.1",
53
- "pdf-lib": "^1.17.1",
54
- "mammoth": "^1.12.0",
55
- "ollama": "^0.6.3",
56
- "openai": "^6.18.0",
57
- "pdfjs-dist": "^5.6.205",
58
- "pptxgenjs": "^4.0.1",
59
- "qrcode-terminal": "^0.12.0",
60
- "toon-format-parser": "^1.1.0",
61
- "xlsx": "^0.18.5",
62
- "zod": "^4.4.3"
63
- },
64
- "devDependencies": {
65
- "@types/jsonwebtoken": "^9.0.10"
66
- },
67
- "peerDependencies": {
68
- "typescript": "^5.0.0"
69
- }
70
- }