@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.
- package/CHANGELOG.md +129 -0
- package/README.md +78 -23
- package/bun.lock +55 -29
- package/bunfig.toml +4 -2
- package/docs/API-AGENTS.md +78 -27
- package/docs/API-CONTEXT-COMPILER.md +31 -34
- package/docs/API-TOOLS-SKILLS-CHANNELS.md +58 -22
- package/docs/HIVE-HARNESS.md +1 -1
- package/docs/INDEX.md +4 -4
- package/docs/TEMPLATE-HIVE-APP.md +10 -10
- package/package.json +17 -12
- package/packages/cli/package.json +2 -2
- package/packages/cli/src/commands/create-app.test.ts +36 -7
- package/packages/cli/src/commands/init.ts +3 -3
- package/packages/cli/src/commands/run.ts +1 -1
- package/packages/cli/src/commands/test.ts +37 -25
- package/packages/cli/src/commands/trace.ts +30 -28
- package/packages/cli/templates/hive-app/.env.example +10 -2
- package/packages/cli/templates/hive-app/README.md +103 -0
- package/packages/cli/templates/hive-app/hive.config.ts +9 -3
- package/packages/cli/templates/hive-app/src/agents/coordinator.ts +8 -1
- package/packages/cli/templates/hive-app/src/main.ts +12 -19
- package/packages/core/package.json +13 -12
- package/packages/core/src/agent/acceptance-checks.ts +172 -0
- package/packages/core/src/agent/agent-catalog.ts +348 -0
- package/packages/core/src/agent/agent-loop.ts +1373 -0
- package/packages/core/src/agent/capability-search.ts +186 -0
- package/packages/core/src/agent/catalog-selector.ts +103 -0
- package/packages/core/src/agent/{Compaction.ts → compaction.ts} +86 -63
- package/packages/core/src/agent/context-compiler.ts +689 -0
- package/packages/core/src/agent/conversation-store.ts +381 -0
- package/packages/core/src/agent/curator.ts +276 -0
- package/packages/core/src/agent/delegation-runtime.ts +241 -0
- package/packages/core/src/agent/goal-runner.ts +323 -0
- package/packages/core/src/agent/index.ts +17 -12
- package/packages/core/src/agent/llm-client.ts +266 -0
- package/packages/core/src/agent/llm-providers/anthropic.ts +264 -0
- package/packages/core/src/agent/llm-providers/deepseek.ts +8 -0
- package/packages/core/src/agent/{providers → llm-providers}/gemini.ts +98 -60
- package/packages/core/src/agent/llm-providers/groq.ts +5 -0
- package/packages/core/src/agent/llm-providers/hiveagents.ts +253 -0
- package/packages/core/src/agent/{providers → llm-providers}/interface.ts +73 -13
- package/packages/core/src/agent/llm-providers/kimi.ts +8 -0
- package/packages/core/src/agent/llm-providers/minimax.ts +13 -0
- package/packages/core/src/agent/llm-providers/mistral.ts +5 -0
- package/packages/core/src/agent/llm-providers/modelscope.ts +5 -0
- package/packages/core/src/agent/llm-providers/nvidia.ts +5 -0
- package/packages/core/src/agent/{providers → llm-providers}/ollama.ts +31 -5
- package/packages/core/src/agent/llm-providers/openai-compat-base.ts +418 -0
- package/packages/core/src/agent/llm-providers/openai.ts +5 -0
- package/packages/core/src/agent/llm-providers/opencode-go.ts +9 -0
- package/packages/core/src/agent/llm-providers/openrouter.ts +5 -0
- package/packages/core/src/agent/llm-providers/qwen.ts +5 -0
- package/packages/core/src/agent/llm-providers/z-ai.ts +5 -0
- package/packages/core/src/agent/minimal-loadout.ts +47 -0
- package/packages/core/src/agent/playbook-selector.ts +119 -0
- package/packages/core/src/agent/{PromptBuilder.ts → prompt-builder.ts} +21 -22
- package/packages/core/src/{harness → agent}/proof-packet.ts +16 -21
- package/packages/core/src/agent/providers/index.ts +35 -16
- package/packages/core/src/agent/reflector.ts +320 -0
- package/packages/core/src/agent/routing-intent.ts +22 -0
- package/packages/core/src/{harness → agent}/run-epoch.ts +4 -3
- package/packages/core/src/{harness → agent}/run-store.ts +142 -81
- package/packages/core/src/agent/{Service.ts → service.ts} +37 -26
- package/packages/core/src/agent/skill-selector.ts +374 -0
- package/packages/core/src/agent/stuck-loop.ts +209 -0
- package/packages/core/src/agent/{selectors/ToolSelector.ts → tool-selector.ts} +188 -178
- package/packages/core/src/{ace/Tracer.ts → agent/tracer.ts} +37 -27
- package/packages/core/src/api/createAgent.test.ts +139 -27
- package/packages/core/src/api/createAgent.ts +232 -44
- package/packages/core/src/artifacts/store.ts +162 -0
- package/packages/core/src/canvas/canvas-manager.ts +161 -0
- package/packages/core/src/canvas/canvas.test.ts +8 -4
- package/packages/core/src/canvas/emitter.ts +131 -80
- package/packages/core/src/canvas/index.ts +1 -3
- package/packages/core/src/channels/base.ts +9 -1
- package/packages/core/src/channels/discord.ts +5 -4
- package/packages/core/src/channels/manager.ts +122 -30
- package/packages/core/src/channels/slack.ts +5 -4
- package/packages/core/src/channels/telegram.ts +36 -6
- package/packages/core/src/channels/webchat.ts +11 -10
- package/packages/core/src/channels/whatsapp.ts +23 -7
- package/packages/core/src/config/index.ts +13 -2
- package/packages/core/src/config/loader.ts +76 -29
- package/packages/core/src/ethics/EthicsGuard.test.ts +90 -36
- package/packages/core/src/ethics/EthicsGuard.ts +51 -47
- package/packages/core/src/events/agent-bus.ts +44 -68
- package/packages/core/src/events/channel-narration.ts +150 -0
- package/packages/core/src/events/narration.ts +82 -0
- package/packages/core/src/events/tool-narration.ts +62 -0
- package/packages/core/src/gateway/delegation-groups.ts +258 -0
- package/packages/core/src/{harness → gateway}/durable-queue.ts +102 -42
- package/packages/core/src/{harness → gateway}/job-store.ts +85 -48
- package/packages/core/src/gateway/lane-queue.ts +173 -0
- package/packages/core/src/gateway/notification-inbox.ts +57 -0
- package/packages/core/src/gateway/server.ts +1 -1
- package/packages/core/src/harness/index.ts +46 -27
- package/packages/core/src/index.ts +33 -27
- package/packages/core/src/mcp/hot-reload.ts +32 -23
- package/packages/core/src/mcp/index.ts +6 -3
- package/packages/core/src/mcp/singleton.ts +1 -4
- package/packages/core/src/mcp/tool-sync.ts +138 -0
- package/packages/core/src/memory/Scratchpad.test.ts +39 -20
- package/packages/core/src/memory/Scratchpad.ts +27 -34
- package/packages/core/src/multimodal/vision-service.ts +44 -38
- package/packages/core/src/resilience/retry.ts +95 -0
- package/packages/core/src/scheduler/CronScheduler.ts +334 -287
- package/packages/core/src/scheduler/index.ts +9 -7
- package/packages/core/src/scheduler/integration.ts +46 -26
- package/packages/core/src/scheduler/scheduler.test.ts +9 -13
- package/packages/core/src/scheduler/types.ts +7 -2
- package/packages/core/src/security/Pairing.ts +1 -1
- package/packages/core/src/skills/bundled/a2ui/a2ui_dashboard/SKILL.md +176 -0
- package/packages/core/src/skills/bundled/a2ui/a2ui_form/SKILL.md +202 -0
- package/packages/core/src/skills/bundled/a2ui/a2ui_interactive/SKILL.md +206 -0
- package/packages/core/src/skills/bundled/agents/agent_spawner/SKILL.md +173 -0
- package/packages/core/src/skills/bundled/agents/memory_manager/SKILL.md +143 -0
- package/packages/core/src/skills/bundled/agents/research_and_remember/SKILL.md +139 -0
- package/packages/core/src/skills/bundled/agents/task_orchestrator/SKILL.md +98 -0
- package/packages/core/src/skills/bundled/api/api_client/SKILL.md +132 -0
- package/packages/core/src/skills/bundled/cli/cli_pipeline/SKILL.md +135 -0
- package/packages/core/src/skills/bundled/cli/cli_safe_exec/SKILL.md +125 -0
- package/packages/core/src/skills/bundled/cli/software_engineering/SKILL.md +23 -0
- package/packages/core/src/skills/bundled/cron_manager/SKILL.md +188 -0
- package/packages/core/src/skills/bundled/cron_reminder/SKILL.md +112 -0
- package/packages/core/src/skills/bundled/filesystem/file_manager/SKILL.md +118 -0
- package/packages/core/src/skills/bundled/filesystem/file_read_and_summarize/SKILL.md +109 -0
- package/packages/core/src/skills/bundled/filesystem/file_writer/SKILL.md +129 -0
- package/packages/core/src/skills/bundled/filesystem/workspace_file_operator/SKILL.md +22 -0
- package/packages/core/src/skills/bundled/office/office_document_manager/SKILL.md +262 -0
- package/packages/core/src/skills/bundled/search_knowledge/capability_discovery/SKILL.md +75 -0
- package/packages/core/src/skills/bundled/web/browser_automate/SKILL.md +120 -0
- package/packages/core/src/skills/bundled/web/browser_scrape/SKILL.md +109 -0
- package/packages/core/src/skills/bundled/web/web_monitor/SKILL.md +127 -0
- package/packages/core/src/skills/bundled/web/web_research/SKILL.md +119 -0
- package/packages/core/src/skills/bundled-data.generated.ts +731 -2678
- package/packages/core/src/skills/skills.test.ts +52 -11
- package/packages/core/src/{harness → storage}/boot-id.ts +5 -2
- package/packages/core/src/storage/bootstrap.ts +151 -0
- package/packages/core/src/storage/causal-events.ts +84 -0
- package/packages/core/src/storage/collections.ts +680 -0
- package/packages/core/src/storage/crypto.ts +205 -74
- package/packages/core/src/{harness/db-helpers.ts → storage/hive.ts} +63 -7
- package/packages/core/src/storage/hivedb.ts +61 -0
- package/packages/core/src/storage/index.ts +111 -18
- package/packages/core/src/storage/model-id.ts +53 -0
- package/packages/core/src/storage/onboarding.ts +540 -972
- package/packages/core/src/storage/reconcile.ts +238 -0
- package/packages/core/src/storage/seed.ts +572 -406
- package/packages/core/src/storage/usage.ts +285 -225
- package/packages/core/src/storage/user-email.ts +11 -0
- package/packages/core/src/swarm/AgentExecutor.ts +1 -1
- package/packages/core/src/swarm/EventBridge.ts +1 -1
- package/packages/core/src/swarm/index.ts +12 -9
- package/packages/core/src/tool-runtime/index.ts +146 -23
- package/packages/core/src/tool-runtime/tool-worker.ts +2 -2
- package/packages/core/src/tool-runtime/worker-tools.ts +27 -0
- package/packages/core/src/{canvas/a2ui-tools.ts → tools/a2ui/index.ts} +17 -8
- package/packages/core/src/tools/agents/get-available-models.ts +36 -54
- package/packages/core/src/tools/agents/index.ts +784 -292
- package/packages/core/src/tools/api/api-request.test.ts +164 -0
- package/packages/core/src/tools/api/api-request.ts +174 -0
- package/packages/core/src/tools/api/index.ts +16 -0
- package/packages/core/src/tools/cli/index.ts +4 -0
- package/packages/core/src/tools/core/index.ts +281 -112
- package/packages/core/src/tools/cron/index.ts +121 -124
- package/packages/core/src/tools/index.ts +63 -78
- package/packages/core/src/tools/office/office-escribir-xlsx.ts +3 -1
- package/packages/core/src/tools/types.ts +3 -1
- package/packages/core/src/tools/web/artifact-inspect.ts +23 -0
- package/packages/core/src/tools/web/browser-backend.ts +129 -0
- package/packages/core/src/tools/web/browser-screenshot.ts +26 -5
- package/packages/core/src/tools/web/browser-service.ts +80 -35
- package/packages/core/src/tools/web/browser-type.ts +3 -8
- package/packages/core/src/tools/web/index.ts +4 -4
- package/packages/core/src/tools/web/webview-backend.ts +412 -0
- package/packages/core/src/voice/index.ts +89 -63
- package/packages/core/src/workers/agent.worker.ts +2 -2
- package/packages/core/src/workers/workers.test.ts +3 -10
- package/scripts/bump-version.ts +248 -0
- package/scripts/generate-skill-bundle.ts +108 -0
- package/test/acceptance-checks.test.ts +403 -0
- package/test/agent-loop-terminal-synthesis.test.ts +32 -0
- package/test/browser-backend.test.ts +308 -0
- package/test/catalog-agents-stay-enabled.test.ts +117 -0
- package/test/causal-events.test.ts +117 -0
- package/test/compaction.test.ts +105 -0
- package/test/context-compiler.test.ts +269 -0
- package/test/curator.test.ts +130 -0
- package/test/durable-queue.test.ts +114 -0
- package/test/harness-barrel.test.ts +64 -0
- package/test/hive-helpers.test.ts +130 -0
- package/test/hivedb-search.test.ts +189 -0
- package/test/internal-turns.test.ts +166 -0
- package/test/job-idempotency.test.ts +68 -0
- package/test/job-retry-backoff.test.ts +184 -0
- package/test/job-store.test.ts +381 -0
- package/test/llm-retry.test.ts +97 -0
- package/test/memory-perf.test.ts +774 -0
- package/test/minimal-loadout.test.ts +78 -0
- package/test/model-catalog.test.ts +105 -0
- package/test/preload.ts +12 -0
- package/test/reflector.test.ts +320 -0
- package/test/retention-cap.test.ts +91 -0
- package/test/retired-capabilities-pruned.test.ts +192 -0
- package/test/run-store.test.ts +355 -0
- package/test/scratchpad.test.ts +74 -0
- package/test/secrets-durability.test.ts +119 -0
- package/test/seed-model-reseed.test.ts +155 -0
- package/test/setup-agent-seed.test.ts +264 -0
- package/test/tool-inventory.test.ts +65 -0
- package/test/tool-runtime.test.ts +258 -0
- package/test/tool-selector-runtime-tools.test.ts +117 -0
- package/test/toon.test.ts +429 -0
- package/tsconfig.json +2 -0
- package/packages/core/src/ace/Curator.ts +0 -158
- package/packages/core/src/ace/Reflector.ts +0 -200
- package/packages/core/src/ace/index.ts +0 -4
- package/packages/core/src/agent/AgentRunner.ts +0 -711
- package/packages/core/src/agent/ContextCompiler.ts +0 -567
- package/packages/core/src/agent/ContextGuard.ts +0 -91
- package/packages/core/src/agent/ConversationStore.ts +0 -254
- package/packages/core/src/agent/Hooks.ts +0 -166
- package/packages/core/src/agent/StuckLoop.ts +0 -133
- package/packages/core/src/agent/providers/LLMClient.ts +0 -149
- package/packages/core/src/agent/providers/anthropic.ts +0 -212
- package/packages/core/src/agent/providers/openai-compat.ts +0 -231
- package/packages/core/src/agent/selectors/PlaybookSelector.ts +0 -121
- package/packages/core/src/agent/selectors/SkillSelector.ts +0 -322
- package/packages/core/src/agent/selectors/index.ts +0 -6
- package/packages/core/src/auth/auth.ts +0 -121
- package/packages/core/src/auth/index.ts +0 -1
- package/packages/core/src/canvas/CanvasManager.ts +0 -390
- package/packages/core/src/canvas/canvas-tools.ts +0 -448
- package/packages/core/src/harness/collections.ts +0 -98
- package/packages/core/src/harness/goal-verifier.ts +0 -141
- package/packages/core/src/harness/harness.test.ts +0 -236
- package/packages/core/src/harness/reconcile.ts +0 -149
- package/packages/core/src/mcp/MCPToolAdapter.ts +0 -176
- package/packages/core/src/multimodal/VisionService.ts +0 -293
- package/packages/core/src/scheduler/dag/AgentExecutor.ts +0 -53
- package/packages/core/src/scheduler/dag/DAGScheduler.ts +0 -250
- package/packages/core/src/scheduler/dag/EventBridge.ts +0 -122
- package/packages/core/src/scheduler/dag/TaskGraph.ts +0 -192
- package/packages/core/src/scheduler/dag/TaskNode.ts +0 -97
- package/packages/core/src/scheduler/dag/TaskResult.ts +0 -22
- package/packages/core/src/scheduler/dag/errors.ts +0 -37
- package/packages/core/src/scheduler/dag/index.ts +0 -26
- package/packages/core/src/scheduler/dag/presets/ResearchPreset.ts +0 -97
- package/packages/core/src/scheduler/dag/strategies/ParallelStrategy.ts +0 -21
- package/packages/core/src/scheduler/dag/strategies/PriorityStrategy.ts +0 -46
- package/packages/core/src/storage/HiveDBStorage.ts +0 -64
- package/packages/core/src/storage/SQLiteStorage.ts +0 -414
- package/packages/core/src/storage/hiveSeed.ts +0 -308
- package/packages/core/src/storage/hiveStorage.test.ts +0 -38
- package/packages/core/src/storage/schema.ts +0 -689
- package/packages/core/src/storage/storage.test.ts +0 -37
- package/packages/core/src/swarm/AgentBus.ts +0 -460
- package/packages/core/src/swarm/EventBus.ts +0 -169
- package/packages/core/src/swarm/WorkerPool.ts +0 -236
- package/packages/core/src/tools/bridge-events.ts +0 -26
- package/packages/core/src/tools/canvas/index.ts +0 -375
- package/packages/core/src/tools/codebridge/index.ts +0 -342
- package/packages/core/src/tools/meeting/index.ts +0 -353
- package/packages/core/src/tools/projects/index.ts +0 -37
- package/packages/core/src/tools/projects/project-create.ts +0 -94
- package/packages/core/src/tools/projects/project-done.ts +0 -66
- package/packages/core/src/tools/projects/project-fail.ts +0 -66
- package/packages/core/src/tools/projects/project-list.ts +0 -96
- package/packages/core/src/tools/projects/project-update.ts +0 -72
- package/packages/core/src/tools/projects/task-create.ts +0 -68
- package/packages/core/src/tools/projects/task-evaluate.ts +0 -93
- package/packages/core/src/tools/projects/task-update.ts +0 -93
- package/packages/core/src/tools/voice/index.ts +0 -104
- package/packages/core/src/tools/web/api-request.test.ts +0 -170
- package/packages/core/src/tools/web/api-request.ts +0 -239
- package/test/setup-db.ts +0 -216
- /package/packages/core/src/agent/{NativeTools.ts → native-tools.ts} +0 -0
|
@@ -31,10 +31,24 @@ describe("hive create-app", () => {
|
|
|
31
31
|
expect(existsSync(join(TEST_DIR, "docker-compose.yml"))).toBe(true);
|
|
32
32
|
expect(existsSync(join(TEST_DIR, ".env.example"))).toBe(true);
|
|
33
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);
|
|
34
36
|
expect(existsSync(join(TEST_DIR, "src", "main.ts"))).toBe(true);
|
|
35
37
|
expect(existsSync(join(TEST_DIR, "src", "agents", "coordinator.ts"))).toBe(true);
|
|
36
38
|
});
|
|
37
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
|
+
|
|
38
52
|
it("replaces {{APP_NAME}} placeholder in all files", async () => {
|
|
39
53
|
const { copyTemplate } = await import("./create-app-utils.ts");
|
|
40
54
|
|
|
@@ -43,8 +57,10 @@ describe("hive create-app", () => {
|
|
|
43
57
|
const packageJson = readFileSync(join(TEST_DIR, "package.json"), "utf-8");
|
|
44
58
|
expect(packageJson).toContain('"name": "my-awesome-app"');
|
|
45
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.
|
|
46
62
|
const config = readFileSync(join(TEST_DIR, "hive.config.ts"), "utf-8");
|
|
47
|
-
expect(config).toContain(
|
|
63
|
+
expect(config).toContain("my-awesome-app");
|
|
48
64
|
|
|
49
65
|
const main = readFileSync(join(TEST_DIR, "src", "main.ts"), "utf-8");
|
|
50
66
|
expect(main).toContain("Starting my-awesome-app...");
|
|
@@ -80,7 +96,11 @@ describe("hive create-app", () => {
|
|
|
80
96
|
expect(config).toContain("discord: { enabled: false }");
|
|
81
97
|
expect(config).toContain("whatsapp: { enabled: false }");
|
|
82
98
|
expect(config).toContain("slack: { enabled: false }");
|
|
83
|
-
|
|
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");
|
|
84
104
|
});
|
|
85
105
|
|
|
86
106
|
it("generates main.ts with all required imports", async () => {
|
|
@@ -91,15 +111,21 @@ describe("hive create-app", () => {
|
|
|
91
111
|
const main = readFileSync(join(TEST_DIR, "src", "main.ts"), "utf-8");
|
|
92
112
|
|
|
93
113
|
expect(main).toContain('from "@johpaz/hive-sdk"');
|
|
94
|
-
expect(main).toContain("createAgent");
|
|
95
114
|
expect(main).toContain("startGateway");
|
|
96
|
-
|
|
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");
|
|
97
119
|
expect(main).toContain("ChannelManager");
|
|
98
120
|
expect(main).toContain("logger");
|
|
99
121
|
expect(main).toContain('import config from "../hive.config.ts"');
|
|
100
|
-
expect(main).toContain("await
|
|
122
|
+
expect(main).toContain("await ensureHiveDb()");
|
|
101
123
|
expect(main).toContain('await startGateway({');
|
|
102
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");
|
|
103
129
|
});
|
|
104
130
|
|
|
105
131
|
it("generates coordinator agent with correct config", async () => {
|
|
@@ -112,7 +138,10 @@ describe("hive create-app", () => {
|
|
|
112
138
|
expect(agent).toContain('import { createAgent } from "@johpaz/hive-sdk"');
|
|
113
139
|
expect(agent).toContain('name: "coordinator"');
|
|
114
140
|
expect(agent).toContain('provider: "openai"');
|
|
115
|
-
|
|
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");
|
|
116
145
|
});
|
|
117
146
|
|
|
118
147
|
it("generates docker-compose.yml with correct ports", async () => {
|
|
@@ -139,7 +168,7 @@ describe("hive create-app", () => {
|
|
|
139
168
|
|
|
140
169
|
expect(env).toContain("HIVE_HOST=");
|
|
141
170
|
expect(env).toContain("HIVE_PORT=");
|
|
142
|
-
expect(env).toContain("
|
|
171
|
+
expect(env).toContain("HIVE_HOME=");
|
|
143
172
|
expect(env).toContain("OPENAI_API_KEY=");
|
|
144
173
|
expect(env).toContain("ANTHROPIC_API_KEY=");
|
|
145
174
|
expect(env).toContain("GOOGLE_API_KEY=");
|
|
@@ -9,12 +9,12 @@ const HIVE_CONFIG = `{
|
|
|
9
9
|
"version": "0.1.0",
|
|
10
10
|
"type": "module",
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@hive
|
|
12
|
+
"@johpaz/hive-sdk": "latest"
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
`;
|
|
16
16
|
|
|
17
|
-
const HIVE_AGENT_TS = `import { createAgent, defineTool } from "@hive
|
|
17
|
+
const HIVE_AGENT_TS = `import { createAgent, defineTool } from "@johpaz/hive-sdk";
|
|
18
18
|
|
|
19
19
|
const myTool = defineTool({
|
|
20
20
|
name: "hello",
|
|
@@ -26,7 +26,7 @@ const myTool = defineTool({
|
|
|
26
26
|
|
|
27
27
|
const agent = await createAgent({
|
|
28
28
|
name: "my-agent",
|
|
29
|
-
model: "gpt-
|
|
29
|
+
model: "gpt-5.6-luna",
|
|
30
30
|
provider: "openai",
|
|
31
31
|
tools: [myTool],
|
|
32
32
|
});
|
|
@@ -10,7 +10,7 @@ async function runCommand() {
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
console.log(`Running agent from ${agentFile}...`);
|
|
13
|
-
const { createAgent } = await import("@hive
|
|
13
|
+
const { createAgent } = await import("@johpaz/hive-sdk");
|
|
14
14
|
const agentModule = await import(agentFile);
|
|
15
15
|
|
|
16
16
|
if (agentModule.agent) {
|
|
@@ -1,42 +1,54 @@
|
|
|
1
1
|
export {};
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* `hives test` — corre los tests del proyecto del usuario.
|
|
5
|
+
*
|
|
6
|
+
* Antes hacía glob sobre `packages/core/src/**` — rutas del repo del SDK, no del
|
|
7
|
+
* proyecto donde se ejecuta el comando, así que en la práctica no encontraba
|
|
8
|
+
* nada. Ahora busca en `src/` y `test(s)/` del cwd.
|
|
9
|
+
*/
|
|
2
10
|
async function testCommand() {
|
|
3
11
|
const filter = process.argv[3];
|
|
4
12
|
|
|
5
13
|
console.log("Hive Test Runner\n");
|
|
6
14
|
|
|
7
|
-
const {
|
|
8
|
-
await
|
|
15
|
+
const { ensureHiveDb } = await import("@johpaz/hive-sdk");
|
|
16
|
+
await ensureHiveDb();
|
|
9
17
|
|
|
10
18
|
const { Glob } = await import("bun");
|
|
11
|
-
const
|
|
12
|
-
|
|
19
|
+
const patterns = ["src/**/*.{test,spec}.ts", "test/**/*.{test,spec}.ts", "tests/**/*.{test,spec}.ts"];
|
|
20
|
+
|
|
21
|
+
const seen = new Set<string>();
|
|
22
|
+
for (const pattern of patterns) {
|
|
23
|
+
for (const file of new Glob(pattern).scanSync({ cwd: process.cwd(), absolute: true })) {
|
|
24
|
+
seen.add(file);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
13
27
|
|
|
14
|
-
const tests = filter
|
|
15
|
-
? testFiles.filter((f: string) => f.includes(filter))
|
|
16
|
-
: testFiles;
|
|
28
|
+
const tests = [...seen].filter((f) => !filter || f.includes(filter)).sort();
|
|
17
29
|
|
|
18
30
|
if (tests.length === 0) {
|
|
19
|
-
console.log("No tests found
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
let passed = 0;
|
|
23
|
-
let failed = 0;
|
|
24
|
-
|
|
25
|
-
for (const test of tests as string[]) {
|
|
26
|
-
try {
|
|
27
|
-
await import(test);
|
|
28
|
-
console.log(` ✓ ${test.split("/").pop()}`);
|
|
29
|
-
passed++;
|
|
30
|
-
} catch (err) {
|
|
31
|
-
console.error(` ✗ ${test.split("/").pop()}: ${(err as Error).message}`);
|
|
32
|
-
failed++;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
31
|
+
console.log("No tests found under src/, test/ or tests/.");
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
35
34
|
|
|
36
|
-
|
|
35
|
+
console.log(`Found ${tests.length} test(s)\n`);
|
|
36
|
+
let passed = 0;
|
|
37
|
+
let failed = 0;
|
|
38
|
+
|
|
39
|
+
for (const test of tests) {
|
|
40
|
+
try {
|
|
41
|
+
await import(test);
|
|
42
|
+
console.log(` ✓ ${test.split("/").pop()}`);
|
|
43
|
+
passed++;
|
|
44
|
+
} catch (err) {
|
|
45
|
+
console.error(` ✗ ${test.split("/").pop()}: ${(err as Error).message}`);
|
|
46
|
+
failed++;
|
|
47
|
+
}
|
|
37
48
|
}
|
|
38
49
|
|
|
39
|
-
|
|
50
|
+
console.log(`\n${passed} passed, ${failed} failed`);
|
|
51
|
+
if (failed > 0) process.exitCode = 1;
|
|
40
52
|
}
|
|
41
53
|
|
|
42
54
|
testCommand();
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
export {};
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* `hives trace` — últimas ejecuciones registradas por el ACE Tracer.
|
|
5
|
+
*
|
|
6
|
+
* Los traces pasaron de una tabla SQLite a la colección `traces` de HiveDB en
|
|
7
|
+
* 0.1.5, así que esto ya no es una query SQL.
|
|
8
|
+
*/
|
|
2
9
|
async function traceCommand() {
|
|
3
|
-
const {
|
|
4
|
-
const { getDb } = await import("@hive/core/storage");
|
|
10
|
+
const { ensureHiveDb, col } = await import("@johpaz/hive-sdk");
|
|
5
11
|
|
|
6
|
-
await
|
|
7
|
-
const db = getDb();
|
|
12
|
+
await ensureHiveDb();
|
|
8
13
|
|
|
9
14
|
const limit = parseInt(process.argv[3] || "20", 10);
|
|
10
15
|
|
|
@@ -12,43 +17,40 @@ async function traceCommand() {
|
|
|
12
17
|
console.log("─".repeat(80));
|
|
13
18
|
|
|
14
19
|
try {
|
|
15
|
-
const
|
|
16
|
-
.query(
|
|
17
|
-
`SELECT id, agent_id, model, tool_calls, duration_ms, tokens_used, created_at
|
|
18
|
-
FROM traces
|
|
19
|
-
ORDER BY created_at DESC
|
|
20
|
-
LIMIT ?`
|
|
21
|
-
)
|
|
22
|
-
.all(limit) as Array<{
|
|
23
|
-
id: string;
|
|
20
|
+
const tracesCol = await col<{
|
|
24
21
|
agent_id: string;
|
|
25
22
|
model: string;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
23
|
+
provider?: string;
|
|
24
|
+
tool_calls?: string | null;
|
|
25
|
+
duration_ms?: number;
|
|
26
|
+
tokens_used?: number;
|
|
27
|
+
created_at: number;
|
|
28
|
+
}>("traces");
|
|
29
|
+
|
|
30
|
+
const rows = (await tracesCol.scan({}))
|
|
31
|
+
.sort((a, b) => b.doc.created_at - a.doc.created_at)
|
|
32
|
+
.slice(0, limit);
|
|
31
33
|
|
|
32
34
|
if (rows.length === 0) {
|
|
33
|
-
console.log("No traces found.");
|
|
35
|
+
console.log("No traces found (run the agent first).");
|
|
34
36
|
return;
|
|
35
37
|
}
|
|
36
38
|
|
|
37
39
|
for (const row of rows) {
|
|
38
40
|
console.log(`ID: ${row.id}`);
|
|
39
|
-
console.log(`Agent: ${row.agent_id}`);
|
|
40
|
-
console.log(`Model: ${row.model}`);
|
|
41
|
-
console.log(`Duration: ${row.duration_ms}ms`);
|
|
42
|
-
console.log(`Tokens: ${row.tokens_used}`);
|
|
43
|
-
console.log(`Time: ${row.created_at}`);
|
|
44
|
-
if (row.tool_calls) {
|
|
45
|
-
const tools = JSON.parse(row.tool_calls);
|
|
46
|
-
console.log(`Tools: ${Array.isArray(tools) ? tools.join(", ") : row.tool_calls}`);
|
|
41
|
+
console.log(`Agent: ${row.doc.agent_id}`);
|
|
42
|
+
console.log(`Model: ${row.doc.provider ? `${row.doc.provider}/` : ""}${row.doc.model}`);
|
|
43
|
+
console.log(`Duration: ${row.doc.duration_ms ?? 0}ms`);
|
|
44
|
+
console.log(`Tokens: ${row.doc.tokens_used ?? 0}`);
|
|
45
|
+
console.log(`Time: ${new Date(row.doc.created_at).toISOString()}`);
|
|
46
|
+
if (row.doc.tool_calls) {
|
|
47
|
+
const tools = JSON.parse(row.doc.tool_calls);
|
|
48
|
+
console.log(`Tools: ${Array.isArray(tools) ? tools.join(", ") : row.doc.tool_calls}`);
|
|
47
49
|
}
|
|
48
50
|
console.log("─".repeat(80));
|
|
49
51
|
}
|
|
50
52
|
} catch (err) {
|
|
51
|
-
console.
|
|
53
|
+
console.error(`No se pudieron leer los traces: ${(err as Error).message}`);
|
|
52
54
|
}
|
|
53
55
|
}
|
|
54
56
|
|
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
# Hive Harness Configuration
|
|
2
2
|
HIVE_HOST=127.0.0.1
|
|
3
3
|
HIVE_PORT=18790
|
|
4
|
-
HIVE_DATA_DIR=./data
|
|
5
4
|
|
|
6
|
-
#
|
|
5
|
+
# Directorio de datos. HiveDB vive en <HIVE_HOME>/data.
|
|
6
|
+
HIVE_HOME=./.hive
|
|
7
|
+
# Ruta explícita de la base (opcional). ":memory:" para una base efímera.
|
|
8
|
+
# HIVE_DB_PATH=
|
|
9
|
+
|
|
10
|
+
# LLM Providers — <PROVIDER>_API_KEY, en mayúsculas y con el id del provider.
|
|
11
|
+
# La clave también se puede cargar cifrada en la base desde la app.
|
|
7
12
|
OPENAI_API_KEY=sk-...
|
|
8
13
|
ANTHROPIC_API_KEY=sk-ant-...
|
|
9
14
|
GOOGLE_API_KEY=...
|
|
15
|
+
# MODELSCOPE_API_KEY=ms-...
|
|
16
|
+
# NVIDIA_API_KEY=nvapi-...
|
|
17
|
+
# OPENROUTER_API_KEY=sk-or-...
|
|
10
18
|
|
|
11
19
|
# Channels (enable as needed)
|
|
12
20
|
TELEGRAM_BOT_TOKEN=
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# {{APP_NAME}}
|
|
2
|
+
|
|
3
|
+
Aplicación de agentes construida sobre [`@johpaz/hive-sdk`](https://www.npmjs.com/package/@johpaz/hive-sdk).
|
|
4
|
+
|
|
5
|
+
## Arrancar
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
bun install
|
|
9
|
+
cp .env.example .env # cargá al menos una API key
|
|
10
|
+
bun run dev
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
El gateway queda en `http://127.0.0.1:18790`. Probalo:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
curl -X POST http://127.0.0.1:18790/chat \
|
|
17
|
+
-H "Content-Type: application/json" \
|
|
18
|
+
-d '{"message":"Hola","threadId":"t1"}'
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Estructura
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
src/
|
|
25
|
+
main.ts # arranque: base de datos, canales y gateway
|
|
26
|
+
agents/coordinator.ts # el agente principal
|
|
27
|
+
hive.config.ts # gateway, canales y logging
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
`main.ts` llama a `ensureHiveDb()`, que abre HiveDB, crea los índices y siembra
|
|
31
|
+
el catálogo de providers y modelos. Es idempotente: correrlo en cada arranque es
|
|
32
|
+
justamente cómo se actualiza el catálogo.
|
|
33
|
+
|
|
34
|
+
## Cambiar de modelo
|
|
35
|
+
|
|
36
|
+
En `src/agents/coordinator.ts`. `provider` y `model` tienen que existir en el
|
|
37
|
+
catálogo sembrado, o `createAgent` lanza avisando cuál falta:
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
export const coordinatorAgent = await createAgent({
|
|
41
|
+
name: "coordinator",
|
|
42
|
+
provider: "anthropic",
|
|
43
|
+
model: "claude-opus-5",
|
|
44
|
+
systemPrompt: "...",
|
|
45
|
+
});
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Hay 18 providers y 106 modelos disponibles. La API key sale de la variable
|
|
49
|
+
`<PROVIDER>_API_KEY` (`ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, `MODELSCOPE_API_KEY`…).
|
|
50
|
+
|
|
51
|
+
## Agregar una tool
|
|
52
|
+
|
|
53
|
+
```typescript
|
|
54
|
+
import { createAgent, defineTool } from "@johpaz/hive-sdk";
|
|
55
|
+
import { z } from "zod";
|
|
56
|
+
|
|
57
|
+
const clima = defineTool({
|
|
58
|
+
name: "get_weather",
|
|
59
|
+
description: "Consulta el clima de una ciudad. Sinónimos: tiempo, temperatura",
|
|
60
|
+
schema: z.object({ city: z.string().describe("la ciudad") }),
|
|
61
|
+
execute: async ({ city }) => `Soleado en ${city}`,
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
export const coordinatorAgent = await createAgent({
|
|
65
|
+
name: "coordinator",
|
|
66
|
+
provider: "anthropic",
|
|
67
|
+
model: "claude-opus-5",
|
|
68
|
+
tools: [clima],
|
|
69
|
+
});
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Dos cosas que conviene saber sobre cómo el agente usa las tools:
|
|
73
|
+
|
|
74
|
+
- El **`description` es lo que la hace encontrable**. El agente arranca con un
|
|
75
|
+
loadout mínimo y descubre el resto buscando por capacidad, así que poner
|
|
76
|
+
sinónimos en la descripción es lo que hace que aparezca cuando corresponde.
|
|
77
|
+
- El **`schema` de Zod se traduce a los parámetros que ve el modelo**. Sin
|
|
78
|
+
schema, la tool se le ofrece sin argumentos.
|
|
79
|
+
|
|
80
|
+
## Comandos
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
bun run dev # desarrollo
|
|
84
|
+
bun run start # producción
|
|
85
|
+
hives add-tool <nombre> # scaffold de una tool
|
|
86
|
+
hives add-skill <nombre> # scaffold de una skill
|
|
87
|
+
hives trace # últimas ejecuciones del agente
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Datos
|
|
91
|
+
|
|
92
|
+
HiveDB vive en `<HIVE_HOME>/data` (por defecto `./.hive/data`). Para una base
|
|
93
|
+
efímera —tests— usá `HIVE_DB_PATH=":memory:"`.
|
|
94
|
+
|
|
95
|
+
## Docker
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
docker compose up -d
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Documentación
|
|
102
|
+
|
|
103
|
+
[github.com/johpaz/hive-sdk](https://github.com/johpaz/hive-sdk#readme)
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import type { Config } from "@johpaz/hive-sdk";
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Configuración de {{APP_NAME}}.
|
|
5
|
+
*
|
|
6
|
+
* La ruta de la base no se configura acá: HiveDB vive en `<HIVE_HOME>/data`, o
|
|
7
|
+
* en `HIVE_DB_PATH` si lo definís. Usá `HIVE_DB_PATH=":memory:"` para una base
|
|
8
|
+
* efímera (tests).
|
|
9
|
+
*/
|
|
3
10
|
export default {
|
|
4
|
-
name: "{{APP_NAME}}",
|
|
5
11
|
gateway: {
|
|
6
12
|
host: process.env.HIVE_HOST ?? "127.0.0.1",
|
|
7
13
|
port: Number(process.env.HIVE_PORT ?? 18790),
|
|
@@ -13,7 +19,7 @@ export default {
|
|
|
13
19
|
whatsapp: { enabled: false },
|
|
14
20
|
slack: { enabled: false },
|
|
15
21
|
},
|
|
16
|
-
|
|
17
|
-
|
|
22
|
+
logging: {
|
|
23
|
+
level: (process.env.LOG_LEVEL as "debug" | "info" | "warn" | "error") ?? "info",
|
|
18
24
|
},
|
|
19
25
|
} satisfies Config;
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import { createAgent } from "@johpaz/hive-sdk";
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* El coordinador de la app.
|
|
5
|
+
*
|
|
6
|
+
* `provider` y `model` tienen que existir en el catálogo sembrado (ver
|
|
7
|
+
* `SEED_DATA.models`): `createAgent` los valida y los persiste en la fila del
|
|
8
|
+
* agente, que es de donde el loop resuelve a qué modelo llamar.
|
|
9
|
+
*/
|
|
3
10
|
export const coordinatorAgent = await createAgent({
|
|
4
11
|
name: "coordinator",
|
|
5
12
|
provider: "openai",
|
|
6
|
-
model: "gpt-
|
|
13
|
+
model: "gpt-5.6-luna",
|
|
7
14
|
systemPrompt:
|
|
8
15
|
"You are the coordinator agent. You orchestrate tasks, answer questions, and delegate to specialized agents when needed.",
|
|
9
16
|
});
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
|
-
createAgent,
|
|
5
4
|
startGateway,
|
|
6
|
-
|
|
5
|
+
ensureHiveDb,
|
|
7
6
|
ChannelManager,
|
|
8
|
-
logger,
|
|
9
7
|
loadConfig,
|
|
8
|
+
logger,
|
|
10
9
|
} from "@johpaz/hive-sdk";
|
|
10
|
+
import { coordinatorAgent } from "./agents/coordinator.ts";
|
|
11
11
|
import config from "../hive.config.ts";
|
|
12
12
|
|
|
13
13
|
const log = logger.child("app");
|
|
@@ -15,29 +15,22 @@ const log = logger.child("app");
|
|
|
15
15
|
async function main() {
|
|
16
16
|
log.info(`Starting {{APP_NAME}}...`);
|
|
17
17
|
|
|
18
|
-
//
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
// Create the main agent
|
|
22
|
-
const agent = await createAgent({
|
|
23
|
-
name: "coordinator",
|
|
24
|
-
provider: "openai",
|
|
25
|
-
model: "gpt-4o-mini",
|
|
26
|
-
systemPrompt:
|
|
27
|
-
"You are a helpful AI assistant running in a Hive harness. You can use tools, manage tasks, and communicate across channels.",
|
|
28
|
-
});
|
|
18
|
+
// Abre HiveDB, crea los índices y siembra el catálogo de providers y modelos.
|
|
19
|
+
// Es idempotente: correrlo en cada arranque es cómo se actualiza el catálogo.
|
|
20
|
+
await ensureHiveDb();
|
|
29
21
|
|
|
30
|
-
log.info(`Agent ready: ${
|
|
22
|
+
log.info(`Agent ready: ${coordinatorAgent.name}`);
|
|
31
23
|
|
|
32
|
-
// Initialize channels
|
|
33
|
-
|
|
34
|
-
|
|
24
|
+
// Initialize channels. `loadConfig()` mezcla los defaults del SDK con
|
|
25
|
+
// hive.config.ts y el entorno; `config` sólo tiene lo que declaraste vos.
|
|
26
|
+
const channelManager = new ChannelManager(await loadConfig());
|
|
27
|
+
await channelManager.initialize();
|
|
35
28
|
|
|
36
29
|
// Start the gateway
|
|
37
30
|
const gateway = await startGateway({
|
|
38
31
|
host: config.gateway?.host,
|
|
39
32
|
port: config.gateway?.port,
|
|
40
|
-
agentId:
|
|
33
|
+
agentId: coordinatorAgent.id,
|
|
41
34
|
});
|
|
42
35
|
|
|
43
36
|
log.info(`{{APP_NAME}} is running at http://${gateway.hostname}:${gateway.port}`);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hive/core",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "Hive Core —
|
|
3
|
+
"version": "0.1.6",
|
|
4
|
+
"description": "Hive Core — runtime de agentes con context engineering, catálogo de modelos y HiveDB",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "./src/index.ts",
|
|
@@ -10,14 +10,15 @@
|
|
|
10
10
|
".": "./src/index.ts",
|
|
11
11
|
"./agent": "./src/agent/index.ts",
|
|
12
12
|
"./agent/providers": "./src/agent/providers/index.ts",
|
|
13
|
-
"./agent/selectors": "./src/agent/selectors/index.ts",
|
|
14
13
|
"./tools": "./src/tools/index.ts",
|
|
15
14
|
"./skills": "./src/skills/index.ts",
|
|
16
15
|
"./storage": "./src/storage/index.ts",
|
|
17
16
|
"./swarm": "./src/swarm/index.ts",
|
|
18
17
|
"./swarm/strategies": "./src/swarm/strategies/index.ts",
|
|
19
18
|
"./swarm/presets": "./src/swarm/presets/index.ts",
|
|
20
|
-
"./
|
|
19
|
+
"./scheduler": "./src/scheduler/index.ts",
|
|
20
|
+
"./workers": "./src/workers/index.ts",
|
|
21
|
+
"./events": "./src/events/event-bus.ts",
|
|
21
22
|
"./ethics": "./src/ethics/index.ts",
|
|
22
23
|
"./canvas": "./src/canvas/index.ts",
|
|
23
24
|
"./config": "./src/config/index.ts",
|
|
@@ -36,16 +37,16 @@
|
|
|
36
37
|
"@johpaz/hive-db": "^0.4.0",
|
|
37
38
|
"@anthropic-ai/sdk": "^0.74.0",
|
|
38
39
|
"@google/genai": "^1.43.0",
|
|
39
|
-
"@modelcontextprotocol/sdk": "
|
|
40
|
-
"@sapphire/snowflake": "
|
|
41
|
-
"@slack/bolt": "
|
|
42
|
-
"@whiskeysockets/baileys": "
|
|
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",
|
|
43
44
|
"async-mutex": "^0.5.0",
|
|
44
45
|
"cron-parser": "^5.5.0",
|
|
45
46
|
"croner": "^10.0.1",
|
|
46
|
-
"discord.js": "
|
|
47
|
+
"discord.js": "^14.26.4",
|
|
47
48
|
"docx": "^9.6.1",
|
|
48
|
-
"grammy": "
|
|
49
|
+
"grammy": "^1.42.0",
|
|
49
50
|
"groq-sdk": "^0.37.0",
|
|
50
51
|
"jsonwebtoken": "^9.0.3",
|
|
51
52
|
"jszip": "^3.10.1",
|
|
@@ -55,10 +56,10 @@
|
|
|
55
56
|
"openai": "^6.18.0",
|
|
56
57
|
"pdfjs-dist": "^5.6.205",
|
|
57
58
|
"pptxgenjs": "^4.0.1",
|
|
58
|
-
"qrcode-terminal": "
|
|
59
|
+
"qrcode-terminal": "^0.12.0",
|
|
59
60
|
"toon-format-parser": "^1.1.0",
|
|
60
61
|
"xlsx": "^0.18.5",
|
|
61
|
-
"zod": "
|
|
62
|
+
"zod": "^4.4.3"
|
|
62
63
|
},
|
|
63
64
|
"devDependencies": {
|
|
64
65
|
"@types/jsonwebtoken": "^9.0.10"
|