@johpaz/hive-sdk 0.1.4 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (278) hide show
  1. package/CHANGELOG.md +129 -0
  2. package/README.md +78 -23
  3. package/bun.lock +55 -29
  4. package/bunfig.toml +4 -2
  5. package/docs/API-AGENTS.md +78 -27
  6. package/docs/API-CONTEXT-COMPILER.md +31 -34
  7. package/docs/API-TOOLS-SKILLS-CHANNELS.md +58 -22
  8. package/docs/HIVE-HARNESS.md +1 -1
  9. package/docs/INDEX.md +4 -4
  10. package/docs/TEMPLATE-HIVE-APP.md +10 -10
  11. package/package.json +17 -12
  12. package/packages/cli/package.json +2 -2
  13. package/packages/cli/src/commands/create-app.test.ts +36 -7
  14. package/packages/cli/src/commands/init.ts +3 -3
  15. package/packages/cli/src/commands/run.ts +1 -1
  16. package/packages/cli/src/commands/test.ts +37 -25
  17. package/packages/cli/src/commands/trace.ts +30 -28
  18. package/packages/cli/templates/hive-app/.env.example +10 -2
  19. package/packages/cli/templates/hive-app/README.md +103 -0
  20. package/packages/cli/templates/hive-app/hive.config.ts +9 -3
  21. package/packages/cli/templates/hive-app/src/agents/coordinator.ts +8 -1
  22. package/packages/cli/templates/hive-app/src/main.ts +12 -19
  23. package/packages/core/package.json +13 -12
  24. package/packages/core/src/agent/acceptance-checks.ts +172 -0
  25. package/packages/core/src/agent/agent-catalog.ts +348 -0
  26. package/packages/core/src/agent/agent-loop.ts +1373 -0
  27. package/packages/core/src/agent/capability-search.ts +186 -0
  28. package/packages/core/src/agent/catalog-selector.ts +103 -0
  29. package/packages/core/src/agent/{Compaction.ts → compaction.ts} +86 -63
  30. package/packages/core/src/agent/context-compiler.ts +689 -0
  31. package/packages/core/src/agent/conversation-store.ts +381 -0
  32. package/packages/core/src/agent/curator.ts +276 -0
  33. package/packages/core/src/agent/delegation-runtime.ts +241 -0
  34. package/packages/core/src/agent/goal-runner.ts +323 -0
  35. package/packages/core/src/agent/index.ts +17 -12
  36. package/packages/core/src/agent/llm-client.ts +266 -0
  37. package/packages/core/src/agent/llm-providers/anthropic.ts +264 -0
  38. package/packages/core/src/agent/llm-providers/deepseek.ts +8 -0
  39. package/packages/core/src/agent/{providers → llm-providers}/gemini.ts +98 -60
  40. package/packages/core/src/agent/llm-providers/groq.ts +5 -0
  41. package/packages/core/src/agent/llm-providers/hiveagents.ts +253 -0
  42. package/packages/core/src/agent/{providers → llm-providers}/interface.ts +73 -13
  43. package/packages/core/src/agent/llm-providers/kimi.ts +8 -0
  44. package/packages/core/src/agent/llm-providers/minimax.ts +13 -0
  45. package/packages/core/src/agent/llm-providers/mistral.ts +5 -0
  46. package/packages/core/src/agent/llm-providers/modelscope.ts +5 -0
  47. package/packages/core/src/agent/llm-providers/nvidia.ts +5 -0
  48. package/packages/core/src/agent/{providers → llm-providers}/ollama.ts +31 -5
  49. package/packages/core/src/agent/llm-providers/openai-compat-base.ts +418 -0
  50. package/packages/core/src/agent/llm-providers/openai.ts +5 -0
  51. package/packages/core/src/agent/llm-providers/opencode-go.ts +9 -0
  52. package/packages/core/src/agent/llm-providers/openrouter.ts +5 -0
  53. package/packages/core/src/agent/llm-providers/qwen.ts +5 -0
  54. package/packages/core/src/agent/llm-providers/z-ai.ts +5 -0
  55. package/packages/core/src/agent/minimal-loadout.ts +47 -0
  56. package/packages/core/src/agent/playbook-selector.ts +119 -0
  57. package/packages/core/src/agent/{PromptBuilder.ts → prompt-builder.ts} +21 -22
  58. package/packages/core/src/{harness → agent}/proof-packet.ts +16 -21
  59. package/packages/core/src/agent/providers/index.ts +35 -16
  60. package/packages/core/src/agent/reflector.ts +320 -0
  61. package/packages/core/src/agent/routing-intent.ts +22 -0
  62. package/packages/core/src/{harness → agent}/run-epoch.ts +4 -3
  63. package/packages/core/src/{harness → agent}/run-store.ts +142 -81
  64. package/packages/core/src/agent/{Service.ts → service.ts} +37 -26
  65. package/packages/core/src/agent/skill-selector.ts +374 -0
  66. package/packages/core/src/agent/stuck-loop.ts +209 -0
  67. package/packages/core/src/agent/{selectors/ToolSelector.ts → tool-selector.ts} +188 -178
  68. package/packages/core/src/{ace/Tracer.ts → agent/tracer.ts} +37 -27
  69. package/packages/core/src/api/createAgent.test.ts +139 -27
  70. package/packages/core/src/api/createAgent.ts +232 -44
  71. package/packages/core/src/artifacts/store.ts +162 -0
  72. package/packages/core/src/canvas/canvas-manager.ts +161 -0
  73. package/packages/core/src/canvas/canvas.test.ts +8 -4
  74. package/packages/core/src/canvas/emitter.ts +131 -80
  75. package/packages/core/src/canvas/index.ts +1 -3
  76. package/packages/core/src/channels/base.ts +9 -1
  77. package/packages/core/src/channels/discord.ts +5 -4
  78. package/packages/core/src/channels/manager.ts +122 -30
  79. package/packages/core/src/channels/slack.ts +5 -4
  80. package/packages/core/src/channels/telegram.ts +36 -6
  81. package/packages/core/src/channels/webchat.ts +11 -10
  82. package/packages/core/src/channels/whatsapp.ts +23 -7
  83. package/packages/core/src/config/index.ts +13 -2
  84. package/packages/core/src/config/loader.ts +76 -29
  85. package/packages/core/src/ethics/EthicsGuard.test.ts +90 -36
  86. package/packages/core/src/ethics/EthicsGuard.ts +51 -47
  87. package/packages/core/src/events/agent-bus.ts +44 -68
  88. package/packages/core/src/events/channel-narration.ts +150 -0
  89. package/packages/core/src/events/narration.ts +82 -0
  90. package/packages/core/src/events/tool-narration.ts +62 -0
  91. package/packages/core/src/gateway/delegation-groups.ts +258 -0
  92. package/packages/core/src/{harness → gateway}/durable-queue.ts +102 -42
  93. package/packages/core/src/{harness → gateway}/job-store.ts +85 -48
  94. package/packages/core/src/gateway/lane-queue.ts +173 -0
  95. package/packages/core/src/gateway/notification-inbox.ts +57 -0
  96. package/packages/core/src/gateway/server.ts +1 -1
  97. package/packages/core/src/harness/index.ts +46 -27
  98. package/packages/core/src/index.ts +33 -27
  99. package/packages/core/src/mcp/hot-reload.ts +32 -23
  100. package/packages/core/src/mcp/index.ts +6 -3
  101. package/packages/core/src/mcp/singleton.ts +1 -4
  102. package/packages/core/src/mcp/tool-sync.ts +138 -0
  103. package/packages/core/src/memory/Scratchpad.test.ts +39 -20
  104. package/packages/core/src/memory/Scratchpad.ts +27 -34
  105. package/packages/core/src/multimodal/vision-service.ts +44 -38
  106. package/packages/core/src/resilience/retry.ts +95 -0
  107. package/packages/core/src/scheduler/CronScheduler.ts +334 -287
  108. package/packages/core/src/scheduler/index.ts +9 -7
  109. package/packages/core/src/scheduler/integration.ts +46 -26
  110. package/packages/core/src/scheduler/scheduler.test.ts +9 -13
  111. package/packages/core/src/scheduler/types.ts +7 -2
  112. package/packages/core/src/security/Pairing.ts +1 -1
  113. package/packages/core/src/skills/bundled/a2ui/a2ui_dashboard/SKILL.md +176 -0
  114. package/packages/core/src/skills/bundled/a2ui/a2ui_form/SKILL.md +202 -0
  115. package/packages/core/src/skills/bundled/a2ui/a2ui_interactive/SKILL.md +206 -0
  116. package/packages/core/src/skills/bundled/agents/agent_spawner/SKILL.md +173 -0
  117. package/packages/core/src/skills/bundled/agents/memory_manager/SKILL.md +143 -0
  118. package/packages/core/src/skills/bundled/agents/research_and_remember/SKILL.md +139 -0
  119. package/packages/core/src/skills/bundled/agents/task_orchestrator/SKILL.md +98 -0
  120. package/packages/core/src/skills/bundled/api/api_client/SKILL.md +132 -0
  121. package/packages/core/src/skills/bundled/cli/cli_pipeline/SKILL.md +135 -0
  122. package/packages/core/src/skills/bundled/cli/cli_safe_exec/SKILL.md +125 -0
  123. package/packages/core/src/skills/bundled/cli/software_engineering/SKILL.md +23 -0
  124. package/packages/core/src/skills/bundled/cron_manager/SKILL.md +188 -0
  125. package/packages/core/src/skills/bundled/cron_reminder/SKILL.md +112 -0
  126. package/packages/core/src/skills/bundled/filesystem/file_manager/SKILL.md +118 -0
  127. package/packages/core/src/skills/bundled/filesystem/file_read_and_summarize/SKILL.md +109 -0
  128. package/packages/core/src/skills/bundled/filesystem/file_writer/SKILL.md +129 -0
  129. package/packages/core/src/skills/bundled/filesystem/workspace_file_operator/SKILL.md +22 -0
  130. package/packages/core/src/skills/bundled/office/office_document_manager/SKILL.md +262 -0
  131. package/packages/core/src/skills/bundled/search_knowledge/capability_discovery/SKILL.md +75 -0
  132. package/packages/core/src/skills/bundled/web/browser_automate/SKILL.md +120 -0
  133. package/packages/core/src/skills/bundled/web/browser_scrape/SKILL.md +109 -0
  134. package/packages/core/src/skills/bundled/web/web_monitor/SKILL.md +127 -0
  135. package/packages/core/src/skills/bundled/web/web_research/SKILL.md +119 -0
  136. package/packages/core/src/skills/bundled-data.generated.ts +731 -2678
  137. package/packages/core/src/skills/skills.test.ts +52 -11
  138. package/packages/core/src/{harness → storage}/boot-id.ts +5 -2
  139. package/packages/core/src/storage/bootstrap.ts +151 -0
  140. package/packages/core/src/storage/causal-events.ts +84 -0
  141. package/packages/core/src/storage/collections.ts +680 -0
  142. package/packages/core/src/storage/crypto.ts +205 -74
  143. package/packages/core/src/{harness/db-helpers.ts → storage/hive.ts} +63 -7
  144. package/packages/core/src/storage/hivedb.ts +61 -0
  145. package/packages/core/src/storage/index.ts +111 -18
  146. package/packages/core/src/storage/model-id.ts +53 -0
  147. package/packages/core/src/storage/onboarding.ts +540 -972
  148. package/packages/core/src/storage/reconcile.ts +238 -0
  149. package/packages/core/src/storage/seed.ts +572 -406
  150. package/packages/core/src/storage/usage.ts +285 -225
  151. package/packages/core/src/storage/user-email.ts +11 -0
  152. package/packages/core/src/swarm/AgentExecutor.ts +1 -1
  153. package/packages/core/src/swarm/EventBridge.ts +1 -1
  154. package/packages/core/src/swarm/index.ts +12 -9
  155. package/packages/core/src/tool-runtime/index.ts +146 -23
  156. package/packages/core/src/tool-runtime/tool-worker.ts +2 -2
  157. package/packages/core/src/tool-runtime/worker-tools.ts +27 -0
  158. package/packages/core/src/{canvas/a2ui-tools.ts → tools/a2ui/index.ts} +17 -8
  159. package/packages/core/src/tools/agents/get-available-models.ts +36 -54
  160. package/packages/core/src/tools/agents/index.ts +784 -292
  161. package/packages/core/src/tools/api/api-request.test.ts +164 -0
  162. package/packages/core/src/tools/api/api-request.ts +174 -0
  163. package/packages/core/src/tools/api/index.ts +16 -0
  164. package/packages/core/src/tools/cli/index.ts +4 -0
  165. package/packages/core/src/tools/core/index.ts +281 -112
  166. package/packages/core/src/tools/cron/index.ts +121 -124
  167. package/packages/core/src/tools/index.ts +63 -78
  168. package/packages/core/src/tools/office/office-escribir-xlsx.ts +3 -1
  169. package/packages/core/src/tools/types.ts +3 -1
  170. package/packages/core/src/tools/web/artifact-inspect.ts +23 -0
  171. package/packages/core/src/tools/web/browser-backend.ts +129 -0
  172. package/packages/core/src/tools/web/browser-screenshot.ts +26 -5
  173. package/packages/core/src/tools/web/browser-service.ts +80 -35
  174. package/packages/core/src/tools/web/browser-type.ts +3 -8
  175. package/packages/core/src/tools/web/index.ts +4 -4
  176. package/packages/core/src/tools/web/webview-backend.ts +412 -0
  177. package/packages/core/src/voice/index.ts +89 -63
  178. package/packages/core/src/workers/agent.worker.ts +2 -2
  179. package/packages/core/src/workers/workers.test.ts +3 -10
  180. package/scripts/bump-version.ts +248 -0
  181. package/scripts/generate-skill-bundle.ts +108 -0
  182. package/test/acceptance-checks.test.ts +403 -0
  183. package/test/agent-loop-terminal-synthesis.test.ts +32 -0
  184. package/test/browser-backend.test.ts +308 -0
  185. package/test/catalog-agents-stay-enabled.test.ts +117 -0
  186. package/test/causal-events.test.ts +117 -0
  187. package/test/compaction.test.ts +105 -0
  188. package/test/context-compiler.test.ts +269 -0
  189. package/test/curator.test.ts +130 -0
  190. package/test/durable-queue.test.ts +114 -0
  191. package/test/harness-barrel.test.ts +64 -0
  192. package/test/hive-helpers.test.ts +130 -0
  193. package/test/hivedb-search.test.ts +189 -0
  194. package/test/internal-turns.test.ts +166 -0
  195. package/test/job-idempotency.test.ts +68 -0
  196. package/test/job-retry-backoff.test.ts +184 -0
  197. package/test/job-store.test.ts +381 -0
  198. package/test/llm-retry.test.ts +97 -0
  199. package/test/memory-perf.test.ts +774 -0
  200. package/test/minimal-loadout.test.ts +78 -0
  201. package/test/model-catalog.test.ts +105 -0
  202. package/test/preload.ts +12 -0
  203. package/test/reflector.test.ts +320 -0
  204. package/test/retention-cap.test.ts +91 -0
  205. package/test/retired-capabilities-pruned.test.ts +192 -0
  206. package/test/run-store.test.ts +355 -0
  207. package/test/scratchpad.test.ts +74 -0
  208. package/test/secrets-durability.test.ts +119 -0
  209. package/test/seed-model-reseed.test.ts +155 -0
  210. package/test/setup-agent-seed.test.ts +264 -0
  211. package/test/tool-inventory.test.ts +65 -0
  212. package/test/tool-runtime.test.ts +258 -0
  213. package/test/tool-selector-runtime-tools.test.ts +117 -0
  214. package/test/toon.test.ts +429 -0
  215. package/tsconfig.json +2 -0
  216. package/packages/core/src/ace/Curator.ts +0 -158
  217. package/packages/core/src/ace/Reflector.ts +0 -200
  218. package/packages/core/src/ace/index.ts +0 -4
  219. package/packages/core/src/agent/AgentRunner.ts +0 -711
  220. package/packages/core/src/agent/ContextCompiler.ts +0 -567
  221. package/packages/core/src/agent/ContextGuard.ts +0 -91
  222. package/packages/core/src/agent/ConversationStore.ts +0 -254
  223. package/packages/core/src/agent/Hooks.ts +0 -166
  224. package/packages/core/src/agent/StuckLoop.ts +0 -133
  225. package/packages/core/src/agent/providers/LLMClient.ts +0 -149
  226. package/packages/core/src/agent/providers/anthropic.ts +0 -212
  227. package/packages/core/src/agent/providers/openai-compat.ts +0 -231
  228. package/packages/core/src/agent/selectors/PlaybookSelector.ts +0 -121
  229. package/packages/core/src/agent/selectors/SkillSelector.ts +0 -322
  230. package/packages/core/src/agent/selectors/index.ts +0 -6
  231. package/packages/core/src/auth/auth.ts +0 -121
  232. package/packages/core/src/auth/index.ts +0 -1
  233. package/packages/core/src/canvas/CanvasManager.ts +0 -390
  234. package/packages/core/src/canvas/canvas-tools.ts +0 -448
  235. package/packages/core/src/harness/collections.ts +0 -98
  236. package/packages/core/src/harness/goal-verifier.ts +0 -141
  237. package/packages/core/src/harness/harness.test.ts +0 -236
  238. package/packages/core/src/harness/reconcile.ts +0 -149
  239. package/packages/core/src/mcp/MCPToolAdapter.ts +0 -176
  240. package/packages/core/src/multimodal/VisionService.ts +0 -293
  241. package/packages/core/src/scheduler/dag/AgentExecutor.ts +0 -53
  242. package/packages/core/src/scheduler/dag/DAGScheduler.ts +0 -250
  243. package/packages/core/src/scheduler/dag/EventBridge.ts +0 -122
  244. package/packages/core/src/scheduler/dag/TaskGraph.ts +0 -192
  245. package/packages/core/src/scheduler/dag/TaskNode.ts +0 -97
  246. package/packages/core/src/scheduler/dag/TaskResult.ts +0 -22
  247. package/packages/core/src/scheduler/dag/errors.ts +0 -37
  248. package/packages/core/src/scheduler/dag/index.ts +0 -26
  249. package/packages/core/src/scheduler/dag/presets/ResearchPreset.ts +0 -97
  250. package/packages/core/src/scheduler/dag/strategies/ParallelStrategy.ts +0 -21
  251. package/packages/core/src/scheduler/dag/strategies/PriorityStrategy.ts +0 -46
  252. package/packages/core/src/storage/HiveDBStorage.ts +0 -64
  253. package/packages/core/src/storage/SQLiteStorage.ts +0 -414
  254. package/packages/core/src/storage/hiveSeed.ts +0 -308
  255. package/packages/core/src/storage/hiveStorage.test.ts +0 -38
  256. package/packages/core/src/storage/schema.ts +0 -689
  257. package/packages/core/src/storage/storage.test.ts +0 -37
  258. package/packages/core/src/swarm/AgentBus.ts +0 -460
  259. package/packages/core/src/swarm/EventBus.ts +0 -169
  260. package/packages/core/src/swarm/WorkerPool.ts +0 -236
  261. package/packages/core/src/tools/bridge-events.ts +0 -26
  262. package/packages/core/src/tools/canvas/index.ts +0 -375
  263. package/packages/core/src/tools/codebridge/index.ts +0 -342
  264. package/packages/core/src/tools/meeting/index.ts +0 -353
  265. package/packages/core/src/tools/projects/index.ts +0 -37
  266. package/packages/core/src/tools/projects/project-create.ts +0 -94
  267. package/packages/core/src/tools/projects/project-done.ts +0 -66
  268. package/packages/core/src/tools/projects/project-fail.ts +0 -66
  269. package/packages/core/src/tools/projects/project-list.ts +0 -96
  270. package/packages/core/src/tools/projects/project-update.ts +0 -72
  271. package/packages/core/src/tools/projects/task-create.ts +0 -68
  272. package/packages/core/src/tools/projects/task-evaluate.ts +0 -93
  273. package/packages/core/src/tools/projects/task-update.ts +0 -93
  274. package/packages/core/src/tools/voice/index.ts +0 -104
  275. package/packages/core/src/tools/web/api-request.test.ts +0 -170
  276. package/packages/core/src/tools/web/api-request.ts +0 -239
  277. package/test/setup-db.ts +0 -216
  278. /package/packages/core/src/agent/{NativeTools.ts → native-tools.ts} +0 -0
@@ -1,308 +0,0 @@
1
- import { getHiveDB, hiveCollection } from "./HiveDBStorage.ts";
2
- import { logger } from "../utils/logger.ts";
3
- import { SEED_DATA, INITIAL_PLAYBOOK_RULES } from "./seed.ts";
4
- import { SkillLoader } from "../skills/index.ts";
5
- import { enrichToolDescription } from "../agent/selectors/ToolSelector.ts";
6
- import type { ToolDescriptor } from "../agent/selectors/ToolSelector.ts";
7
- import type { IndexDoc, HiveDB } from "@johpaz/hive-db";
8
-
9
- const log = logger.child("hive-seed");
10
-
11
- export interface HiveToolDoc {
12
- name: string;
13
- description: string;
14
- category: string;
15
- enabled: boolean;
16
- active: boolean;
17
- }
18
-
19
- export interface HiveProviderDoc {
20
- id: string;
21
- name: string;
22
- baseUrl?: string;
23
- category: string;
24
- enabled: boolean;
25
- active: boolean;
26
- }
27
-
28
- export interface HiveModelDoc {
29
- id: string;
30
- providerId: string;
31
- name: string;
32
- modelType: string;
33
- contextWindow?: number;
34
- capabilities?: string[];
35
- enabled: boolean;
36
- active: boolean;
37
- }
38
-
39
- export interface HiveSkillDoc {
40
- id: string;
41
- name: string;
42
- description: string;
43
- version: string;
44
- author: string;
45
- icon: string;
46
- category: string;
47
- permissions: string[];
48
- dependencies: string[];
49
- tools: string[];
50
- triggers: string[];
51
- preferredAgents: string[];
52
- body: string;
53
- versionNum: number;
54
- active: boolean;
55
- }
56
-
57
- export interface HiveAgentDoc {
58
- id: string;
59
- userId?: string;
60
- name: string;
61
- description: string;
62
- systemPrompt: string;
63
- toolsJson?: string;
64
- role: string;
65
- status: string;
66
- parentId?: string;
67
- providerId: string;
68
- modelId: string;
69
- tone?: string;
70
- maxIterations: number;
71
- workspace?: string;
72
- enabled: boolean;
73
- active: boolean;
74
- createdAt: number;
75
- updatedAt: number;
76
- }
77
-
78
- export interface HiveChannelDoc {
79
- id: string;
80
- type: string;
81
- enabled: boolean;
82
- active: boolean;
83
- status: string;
84
- }
85
-
86
- export interface HiveEthicsDoc {
87
- id: string;
88
- name: string;
89
- description: string;
90
- content: string;
91
- isDefault: boolean;
92
- enabled: boolean;
93
- active: boolean;
94
- }
95
-
96
- export interface HiveCodeBridgeDoc {
97
- id: string;
98
- name: string;
99
- cliCommand: string;
100
- port: number;
101
- enabled: boolean;
102
- active: boolean;
103
- }
104
-
105
- export interface HiveCodeBridgeConfigDoc {
106
- id: string;
107
- key: string;
108
- value: string;
109
- }
110
-
111
- export interface HivePlaybookDoc {
112
- rule: string;
113
- category: string;
114
- applicableTo?: string[];
115
- helpfulCount: number;
116
- harmfulCount: number;
117
- active: boolean;
118
- }
119
-
120
- export async function seedHiveDB(db?: HiveDB): Promise<void> {
121
- db ??= await getHiveDB();
122
-
123
- log.info("[hive-seed] 🌱 Iniciando seed de HiveDB");
124
-
125
- // 1️⃣ Tools
126
- const toolsCol = db.collection<HiveToolDoc>("tools");
127
- await toolsCol.createIndex("name", { unique: true });
128
- for (const tool of SEED_DATA.tools) {
129
- await toolsCol.put(tool.id, {
130
- name: tool.name,
131
- description: tool.description,
132
- category: tool.category,
133
- enabled: tool.enabled ?? true,
134
- active: true,
135
- });
136
- }
137
- log.info(`[hive-seed] ✅ ${SEED_DATA.tools.length} tools seeded`);
138
-
139
- // 2️⃣ Index tools for hybrid search
140
- const toolDocs: IndexDoc[] = SEED_DATA.tools.map(tool => ({
141
- id: tool.name,
142
- name: tool.name,
143
- body: enrichToolDescription({ name: tool.name, description: tool.description, category: tool.category } as ToolDescriptor),
144
- tags: tool.category,
145
- filters: [{ field: "type", value: "tool" }],
146
- }));
147
- await db.upsertBatch(toolDocs);
148
- log.info(`[hive-seed] ✅ ${toolDocs.length} tools indexed`);
149
-
150
- // 3️⃣ Providers
151
- const providersCol = db.collection<HiveProviderDoc>("providers");
152
- await providersCol.createIndex("id", { unique: true });
153
- for (const provider of SEED_DATA.providers) {
154
- await providersCol.put(provider.id, {
155
- id: provider.id,
156
- name: provider.name,
157
- baseUrl: provider.baseUrl,
158
- category: provider.category ?? "llm",
159
- enabled: true,
160
- active: false,
161
- });
162
- }
163
- const ollamaHost = process.env.OLLAMA_HOST;
164
- if (ollamaHost) {
165
- const entry = await providersCol.get("ollama");
166
- if (entry) {
167
- await providersCol.put("ollama", { ...entry.doc, baseUrl: ollamaHost });
168
- }
169
- }
170
- log.info(`[hive-seed] ✅ ${SEED_DATA.providers.length} providers seeded`);
171
-
172
- // 4️⃣ Models
173
- const modelsCol = db.collection<HiveModelDoc>("models");
174
- await modelsCol.createIndex("id", { unique: true });
175
- await modelsCol.createIndex("providerId");
176
- for (const model of SEED_DATA.models) {
177
- await modelsCol.put(model.id, {
178
- id: model.id,
179
- providerId: model.providerId,
180
- name: model.name,
181
- modelType: model.modelType,
182
- contextWindow: model.contextWindow,
183
- capabilities: model.capabilities ? JSON.parse(model.capabilities) : undefined,
184
- enabled: true,
185
- active: false,
186
- });
187
- }
188
- log.info(`[hive-seed] ✅ ${SEED_DATA.models.length} models seeded`);
189
-
190
- // 5️⃣ MCP servers
191
- const mcpCol = db.collection("mcp_servers");
192
- await mcpCol.createIndex("id", { unique: true });
193
- for (const mcp of SEED_DATA.mcpServers) {
194
- await mcpCol.put(mcp.id, { ...mcp, enabled: true, active: false, builtin: mcp.builtin, toolsCount: 0 });
195
- }
196
- log.info(`[hive-seed] ✅ ${SEED_DATA.mcpServers.length} MCP servers seeded`);
197
-
198
- // 6️⃣ Channels
199
- const channelsCol = db.collection<HiveChannelDoc>("channels");
200
- await channelsCol.createIndex("id", { unique: true });
201
- for (const channel of SEED_DATA.channels) {
202
- const isWebChat = channel.id === "webchat";
203
- await channelsCol.put(channel.id, {
204
- id: channel.id,
205
- type: channel.type,
206
- enabled: true,
207
- active: isWebChat,
208
- status: isWebChat ? "connected" : "disconnected",
209
- });
210
- }
211
- log.info(`[hive-seed] ✅ ${SEED_DATA.channels.length} channels seeded`);
212
-
213
- // 7️⃣ Ethics
214
- const ethicsCol = db.collection<HiveEthicsDoc>("ethics");
215
- await ethicsCol.createIndex("id", { unique: true });
216
- for (const ethics of SEED_DATA.ethics) {
217
- await ethicsCol.put(ethics.id, {
218
- id: ethics.id,
219
- name: ethics.name,
220
- description: ethics.description,
221
- content: ethics.content,
222
- isDefault: ethics.isDefault,
223
- enabled: true,
224
- active: ethics.isDefault,
225
- });
226
- }
227
- log.info(`[hive-seed] ✅ ${SEED_DATA.ethics.length} ethics templates seeded`);
228
-
229
- // 8️⃣ Code Bridge
230
- const cbCol = db.collection<HiveCodeBridgeDoc>("code_bridge");
231
- await cbCol.createIndex("id", { unique: true });
232
- for (const cb of SEED_DATA.codeBridge) {
233
- await cbCol.put(cb.id, { ...cb, enabled: false, active: false });
234
- }
235
- log.info(`[hive-seed] ✅ ${SEED_DATA.codeBridge.length} Code Bridge entries seeded`);
236
-
237
- // 9️⃣ Code Bridge Config
238
- const cbConfigCol = db.collection<HiveCodeBridgeConfigDoc>("code_bridge_config");
239
- await cbConfigCol.createIndex("id", { unique: true });
240
- for (const config of SEED_DATA.codeBridgeConfig) {
241
- await cbConfigCol.put(config.id, config);
242
- }
243
- log.info(`[hive-seed] ✅ ${SEED_DATA.codeBridgeConfig.length} Code Bridge Config entries seeded`);
244
-
245
- // 🔟 Skills
246
- const skillLoader = new SkillLoader({ workspacePath: process.env.HIVE_HOME || process.cwd() });
247
- const realSkills = skillLoader.loadBundledSkills();
248
- const skillsCol = db.collection("skills");
249
- await skillsCol.createIndex("id", { unique: true });
250
- const skillDocs: IndexDoc[] = [];
251
- for (const s of realSkills) {
252
- const doc = {
253
- id: s.name,
254
- name: s.name,
255
- description: s.description || "",
256
- version: typeof s.version === "string" ? s.version : String(s.version || "0.0.1"),
257
- author: s.author || "Anonymous",
258
- icon: s.icon || "🧩",
259
- category: s.category || "general",
260
- permissions: s.permissions || [],
261
- dependencies: s.dependencies || [],
262
- tools: s.tools || [],
263
- triggers: s.triggers || [],
264
- preferredAgents: s.preferred_agents || [],
265
- body: s.content || "",
266
- versionNum: parseInt(String(s.version || "0.0.1").split(".")[0]) || 1,
267
- active: true,
268
- };
269
- await skillsCol.put(s.name, doc);
270
- skillDocs.push({
271
- id: s.name,
272
- name: s.name,
273
- body: `${s.description || ""} ${s.content || ""}`,
274
- tags: [s.category || "general", ...(s.tools || []), ...(s.triggers || [])].join(" "),
275
- filters: [{ field: "type", value: "skill" }],
276
- });
277
- }
278
- await db.upsertBatch(skillDocs);
279
- log.info(`[hive-seed] ✅ ${realSkills.length} skills seeded and indexed`);
280
-
281
- // 11. ACE Playbook
282
- const playbookCol = db.collection<HivePlaybookDoc>("playbook");
283
- await playbookCol.createIndex("id", { unique: true });
284
- const playbookDocs: IndexDoc[] = [];
285
- for (const rule of INITIAL_PLAYBOOK_RULES) {
286
- const doc = {
287
- rule: rule.rule,
288
- category: rule.category,
289
- applicableTo: rule.applicable_to ? JSON.parse(rule.applicable_to) : undefined,
290
- helpfulCount: 1,
291
- harmfulCount: 0,
292
- active: true,
293
- };
294
- const id = `${rule.category}-${rule.rule.slice(0, 32).replace(/\s+/g, "-")}`;
295
- await playbookCol.put(id, doc);
296
- playbookDocs.push({
297
- id,
298
- name: rule.category,
299
- body: rule.rule,
300
- tags: rule.applicable_to || "",
301
- filters: [{ field: "type", value: "playbook" }],
302
- });
303
- }
304
- await db.upsertBatch(playbookDocs);
305
- log.info(`[hive-seed] ✅ ${INITIAL_PLAYBOOK_RULES.length} playbook rules seeded and indexed`);
306
-
307
- log.info("[hive-seed] ✨ HiveDB seed completado");
308
- }
@@ -1,38 +0,0 @@
1
- import { describe, it, expect, beforeAll, afterAll } from "bun:test";
2
- import { HiveDB } from "@johpaz/hive-db";
3
- import { seedHiveDB } from "./hiveSeed.ts";
4
-
5
- describe("HiveDB integration", () => {
6
- let db: HiveDB;
7
-
8
- beforeAll(async () => {
9
- db = await HiveDB.open(":memory:", { vector: { dimension: 384, spaceId: "hive-sdk-v1" } });
10
- await seedHiveDB(db);
11
- });
12
-
13
- afterAll(() => {
14
- db.close();
15
- });
16
-
17
- it("seeds providers and models", async () => {
18
- const providers = await db.collection("providers").count();
19
- const models = await db.collection("models").count();
20
- expect(providers).toBeGreaterThan(0);
21
- expect(models).toBeGreaterThan(0);
22
- });
23
-
24
- it("indexes tools for hybrid search", async () => {
25
- const hits = await db.queryHybrid({ text: "buscar archivos", k: 10 });
26
- expect(hits.length).toBeGreaterThan(0);
27
- const names = hits.map(h => h.id);
28
- expect(names.some(n => n.startsWith("fs_") || n.includes("research"))).toBe(true);
29
- });
30
-
31
- it("supports collection CRUD for agents", async () => {
32
- const agents = db.collection<{ name: string; role: string; status: string }>("agents");
33
- await agents.put("agent-1", { name: "Test Worker", role: "worker", status: "idle" });
34
- const entry = await agents.get("agent-1");
35
- expect(entry).toBeDefined();
36
- expect(entry!.doc.name).toBe("Test Worker");
37
- });
38
- });