@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
@@ -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
- });