@johpaz/hive 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONTRIBUTING.md +44 -0
- package/README.md +310 -0
- package/package.json +96 -0
- package/packages/cli/package.json +28 -0
- package/packages/cli/src/commands/agent-run.ts +168 -0
- package/packages/cli/src/commands/agents.ts +398 -0
- package/packages/cli/src/commands/chat.ts +142 -0
- package/packages/cli/src/commands/config.ts +50 -0
- package/packages/cli/src/commands/cron.ts +161 -0
- package/packages/cli/src/commands/dev.ts +95 -0
- package/packages/cli/src/commands/doctor.ts +133 -0
- package/packages/cli/src/commands/gateway.ts +443 -0
- package/packages/cli/src/commands/logs.ts +57 -0
- package/packages/cli/src/commands/mcp.ts +175 -0
- package/packages/cli/src/commands/message.ts +77 -0
- package/packages/cli/src/commands/onboard.ts +1868 -0
- package/packages/cli/src/commands/security.ts +144 -0
- package/packages/cli/src/commands/service.ts +50 -0
- package/packages/cli/src/commands/sessions.ts +116 -0
- package/packages/cli/src/commands/skills.ts +187 -0
- package/packages/cli/src/commands/update.ts +25 -0
- package/packages/cli/src/index.ts +185 -0
- package/packages/cli/src/utils/token.ts +6 -0
- package/packages/code-bridge/README.md +78 -0
- package/packages/code-bridge/package.json +18 -0
- package/packages/code-bridge/src/index.ts +95 -0
- package/packages/code-bridge/src/process-manager.ts +212 -0
- package/packages/code-bridge/src/schemas.ts +133 -0
- package/packages/core/package.json +46 -0
- package/packages/core/src/agent/agent-loop.ts +369 -0
- package/packages/core/src/agent/compaction.ts +140 -0
- package/packages/core/src/agent/context-compiler.ts +378 -0
- package/packages/core/src/agent/context-guard.ts +91 -0
- package/packages/core/src/agent/context.ts +138 -0
- package/packages/core/src/agent/conversation-store.ts +198 -0
- package/packages/core/src/agent/curator.ts +158 -0
- package/packages/core/src/agent/hooks.ts +166 -0
- package/packages/core/src/agent/index.ts +116 -0
- package/packages/core/src/agent/llm-client.ts +503 -0
- package/packages/core/src/agent/native-tools.ts +505 -0
- package/packages/core/src/agent/prompt-builder.ts +532 -0
- package/packages/core/src/agent/providers/index.ts +167 -0
- package/packages/core/src/agent/providers.ts +1 -0
- package/packages/core/src/agent/reflector.ts +170 -0
- package/packages/core/src/agent/service.ts +64 -0
- package/packages/core/src/agent/stuck-loop.ts +133 -0
- package/packages/core/src/agent/supervisor.ts +39 -0
- package/packages/core/src/agent/tracer.ts +102 -0
- package/packages/core/src/agent/workspace.ts +110 -0
- package/packages/core/src/canvas/canvas-manager.test.ts +161 -0
- package/packages/core/src/canvas/canvas-manager.ts +319 -0
- package/packages/core/src/canvas/canvas-tools.ts +420 -0
- package/packages/core/src/canvas/emitter.ts +115 -0
- package/packages/core/src/canvas/index.ts +2 -0
- package/packages/core/src/channels/base.ts +138 -0
- package/packages/core/src/channels/discord.ts +260 -0
- package/packages/core/src/channels/index.ts +7 -0
- package/packages/core/src/channels/manager.ts +383 -0
- package/packages/core/src/channels/slack.ts +287 -0
- package/packages/core/src/channels/telegram.ts +502 -0
- package/packages/core/src/channels/webchat.ts +128 -0
- package/packages/core/src/channels/whatsapp.ts +375 -0
- package/packages/core/src/config/index.ts +12 -0
- package/packages/core/src/config/loader.ts +529 -0
- package/packages/core/src/events/event-bus.ts +169 -0
- package/packages/core/src/gateway/index.ts +5 -0
- package/packages/core/src/gateway/initializer.ts +290 -0
- package/packages/core/src/gateway/lane-queue.ts +169 -0
- package/packages/core/src/gateway/resolver.ts +108 -0
- package/packages/core/src/gateway/router.ts +124 -0
- package/packages/core/src/gateway/server.ts +3317 -0
- package/packages/core/src/gateway/session.ts +95 -0
- package/packages/core/src/gateway/slash-commands.ts +192 -0
- package/packages/core/src/heartbeat/index.ts +157 -0
- package/packages/core/src/index.ts +19 -0
- package/packages/core/src/integrations/catalog.ts +286 -0
- package/packages/core/src/integrations/env.ts +64 -0
- package/packages/core/src/integrations/index.ts +2 -0
- package/packages/core/src/memory/index.ts +1 -0
- package/packages/core/src/memory/notes.ts +68 -0
- package/packages/core/src/plugins/api.ts +128 -0
- package/packages/core/src/plugins/index.ts +2 -0
- package/packages/core/src/plugins/loader.ts +365 -0
- package/packages/core/src/resilience/circuit-breaker.ts +225 -0
- package/packages/core/src/security/google-chat.ts +269 -0
- package/packages/core/src/security/index.ts +192 -0
- package/packages/core/src/security/pairing.ts +250 -0
- package/packages/core/src/security/rate-limit.ts +270 -0
- package/packages/core/src/security/signal.ts +321 -0
- package/packages/core/src/state/store.ts +312 -0
- package/packages/core/src/storage/bun-sqlite-store.ts +188 -0
- package/packages/core/src/storage/crypto.ts +101 -0
- package/packages/core/src/storage/db-context.ts +333 -0
- package/packages/core/src/storage/onboarding.ts +1087 -0
- package/packages/core/src/storage/schema.ts +541 -0
- package/packages/core/src/storage/seed.ts +571 -0
- package/packages/core/src/storage/sqlite.ts +387 -0
- package/packages/core/src/storage/usage.ts +212 -0
- package/packages/core/src/tools/bridge-events.ts +74 -0
- package/packages/core/src/tools/browser.ts +275 -0
- package/packages/core/src/tools/codebridge.ts +421 -0
- package/packages/core/src/tools/coordinator-tools.ts +179 -0
- package/packages/core/src/tools/cron.ts +611 -0
- package/packages/core/src/tools/exec.ts +140 -0
- package/packages/core/src/tools/fs.ts +364 -0
- package/packages/core/src/tools/index.ts +12 -0
- package/packages/core/src/tools/memory.ts +176 -0
- package/packages/core/src/tools/notify.ts +113 -0
- package/packages/core/src/tools/project-management.ts +376 -0
- package/packages/core/src/tools/project.ts +375 -0
- package/packages/core/src/tools/read.ts +158 -0
- package/packages/core/src/tools/web.ts +436 -0
- package/packages/core/src/tools/workspace.ts +171 -0
- package/packages/core/src/utils/benchmark.ts +80 -0
- package/packages/core/src/utils/crypto.ts +73 -0
- package/packages/core/src/utils/date.ts +42 -0
- package/packages/core/src/utils/index.ts +4 -0
- package/packages/core/src/utils/logger.ts +388 -0
- package/packages/core/src/utils/retry.ts +70 -0
- package/packages/core/src/voice/index.ts +583 -0
- package/packages/core/tsconfig.json +9 -0
- package/packages/mcp/package.json +26 -0
- package/packages/mcp/src/config.ts +13 -0
- package/packages/mcp/src/index.ts +1 -0
- package/packages/mcp/src/logger.ts +42 -0
- package/packages/mcp/src/manager.ts +434 -0
- package/packages/mcp/src/transports/index.ts +67 -0
- package/packages/mcp/src/transports/sse.ts +241 -0
- package/packages/mcp/src/transports/websocket.ts +159 -0
- package/packages/skills/package.json +21 -0
- package/packages/skills/src/bundled/agent_management/SKILL.md +24 -0
- package/packages/skills/src/bundled/browser_automation/SKILL.md +30 -0
- package/packages/skills/src/bundled/context_compact/SKILL.md +35 -0
- package/packages/skills/src/bundled/cron_manager/SKILL.md +52 -0
- package/packages/skills/src/bundled/file_manager/SKILL.md +76 -0
- package/packages/skills/src/bundled/http_client/SKILL.md +24 -0
- package/packages/skills/src/bundled/memory/SKILL.md +42 -0
- package/packages/skills/src/bundled/project_management/SKILL.md +26 -0
- package/packages/skills/src/bundled/shell/SKILL.md +43 -0
- package/packages/skills/src/bundled/system_notify/SKILL.md +52 -0
- package/packages/skills/src/bundled/voice/SKILL.md +25 -0
- package/packages/skills/src/bundled/web_search/SKILL.md +29 -0
- package/packages/skills/src/index.ts +1 -0
- package/packages/skills/src/loader.ts +282 -0
- package/packages/tools/package.json +43 -0
- package/packages/tools/src/browser/browser.test.ts +111 -0
- package/packages/tools/src/browser/index.ts +272 -0
- package/packages/tools/src/canvas/index.ts +220 -0
- package/packages/tools/src/cron/cron.test.ts +164 -0
- package/packages/tools/src/cron/index.ts +304 -0
- package/packages/tools/src/filesystem/filesystem.test.ts +240 -0
- package/packages/tools/src/filesystem/index.ts +379 -0
- package/packages/tools/src/git/index.ts +239 -0
- package/packages/tools/src/index.ts +4 -0
- package/packages/tools/src/shell/detect-env.ts +70 -0
- package/packages/tools/tsconfig.json +9 -0
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
import { logger } from "../utils/logger.ts";
|
|
2
|
+
import { getDb } from "./sqlite";
|
|
3
|
+
|
|
4
|
+
const log = logger.child("db-context");
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Obtiene la configuración del agente desde la BD
|
|
8
|
+
*/
|
|
9
|
+
export function getAgentFromDb(agentId: string): {
|
|
10
|
+
id: string;
|
|
11
|
+
name: string;
|
|
12
|
+
userId: string;
|
|
13
|
+
providerId: string | null;
|
|
14
|
+
modelId: string | null;
|
|
15
|
+
tone: string;
|
|
16
|
+
status: string;
|
|
17
|
+
} | null {
|
|
18
|
+
try {
|
|
19
|
+
const db = getDb();
|
|
20
|
+
const agent = db.query(`
|
|
21
|
+
SELECT id, name, user_id, provider_id, model_id, tone, status
|
|
22
|
+
FROM agents
|
|
23
|
+
WHERE id = ?
|
|
24
|
+
`).get(agentId) as any;
|
|
25
|
+
|
|
26
|
+
if (!agent) return null;
|
|
27
|
+
|
|
28
|
+
return agent;
|
|
29
|
+
} catch (e) {
|
|
30
|
+
log.error("[getAgentFromDb] Error:", { error: (e as Error).message });
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Obtiene la configuración del usuario desde la BD
|
|
37
|
+
*/
|
|
38
|
+
export function getUserFromDb(userId: string): {
|
|
39
|
+
id: string;
|
|
40
|
+
name: string;
|
|
41
|
+
language: string;
|
|
42
|
+
timezone: string;
|
|
43
|
+
occupation: string | null;
|
|
44
|
+
notes: string | null;
|
|
45
|
+
} | null {
|
|
46
|
+
try {
|
|
47
|
+
const db = getDb();
|
|
48
|
+
const user = db.query(`
|
|
49
|
+
SELECT id, name, language, timezone, occupation, notes
|
|
50
|
+
FROM users
|
|
51
|
+
WHERE id = ?
|
|
52
|
+
`).get(userId) as any;
|
|
53
|
+
|
|
54
|
+
if (!user) return null;
|
|
55
|
+
|
|
56
|
+
return user;
|
|
57
|
+
} catch (e) {
|
|
58
|
+
log.error("[getUserFromDb] Error:", { error: (e as Error).message });
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Obtiene el template de ética desde la BD
|
|
65
|
+
*/
|
|
66
|
+
export function getEthicsFromDb(ethicsId: string): {
|
|
67
|
+
id: string;
|
|
68
|
+
name: string;
|
|
69
|
+
description: string | null;
|
|
70
|
+
content: string;
|
|
71
|
+
} | null {
|
|
72
|
+
try {
|
|
73
|
+
const db = getDb();
|
|
74
|
+
const ethics = db.query(`
|
|
75
|
+
SELECT id, name, description, content
|
|
76
|
+
FROM ethics
|
|
77
|
+
WHERE id = ?
|
|
78
|
+
`).get(ethicsId) as any;
|
|
79
|
+
|
|
80
|
+
if (!ethics) return null;
|
|
81
|
+
|
|
82
|
+
return ethics;
|
|
83
|
+
} catch (e) {
|
|
84
|
+
log.error("[getEthicsFromDb] Error:", { error: (e as Error).message });
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Obtiene las tools activas desde la BD
|
|
91
|
+
*/
|
|
92
|
+
export function getActiveToolsFromDb(): Array<{
|
|
93
|
+
id: string;
|
|
94
|
+
name: string;
|
|
95
|
+
description: string | null;
|
|
96
|
+
category: string | null;
|
|
97
|
+
}> {
|
|
98
|
+
try {
|
|
99
|
+
const db = getDb();
|
|
100
|
+
const results = db.query(`
|
|
101
|
+
SELECT id, name, description, category
|
|
102
|
+
FROM tools
|
|
103
|
+
WHERE active = 1
|
|
104
|
+
`).all() as Array<{
|
|
105
|
+
id: string;
|
|
106
|
+
name: string;
|
|
107
|
+
description: string | null;
|
|
108
|
+
category: string | null;
|
|
109
|
+
}>;
|
|
110
|
+
|
|
111
|
+
return results;
|
|
112
|
+
} catch (e) {
|
|
113
|
+
log.error("[getActiveToolsFromDb] Error:", { error: (e as Error).message });
|
|
114
|
+
return [];
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Obtiene las skills activas desde la BD
|
|
120
|
+
*/
|
|
121
|
+
export function getActiveSkillsFromDb(): Array<{
|
|
122
|
+
id: string;
|
|
123
|
+
name: string;
|
|
124
|
+
description: string | null;
|
|
125
|
+
source: string;
|
|
126
|
+
}> {
|
|
127
|
+
try {
|
|
128
|
+
const db = getDb();
|
|
129
|
+
const results = db.query(`
|
|
130
|
+
SELECT id, name, description, source
|
|
131
|
+
FROM skills
|
|
132
|
+
WHERE active = 1
|
|
133
|
+
`).all() as Array<{
|
|
134
|
+
id: string;
|
|
135
|
+
name: string;
|
|
136
|
+
description: string | null;
|
|
137
|
+
source: string;
|
|
138
|
+
}>;
|
|
139
|
+
|
|
140
|
+
return results;
|
|
141
|
+
} catch (e) {
|
|
142
|
+
log.error("[getActiveSkillsFromDb] Error:", { error: (e as Error).message });
|
|
143
|
+
return [];
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Obtiene los MCP servers (activos e inactivos) desde la BD
|
|
149
|
+
*/
|
|
150
|
+
export function getAllMcpServersFromDb(): Array<{
|
|
151
|
+
id: string;
|
|
152
|
+
name: string;
|
|
153
|
+
transport: string;
|
|
154
|
+
command: string | null;
|
|
155
|
+
args: string | null;
|
|
156
|
+
url: string | null;
|
|
157
|
+
enabled: boolean;
|
|
158
|
+
active: boolean;
|
|
159
|
+
builtin: boolean;
|
|
160
|
+
}> {
|
|
161
|
+
try {
|
|
162
|
+
const db = getDb();
|
|
163
|
+
const results = db.query(`
|
|
164
|
+
SELECT id, name, transport, command, args, url, enabled, active, builtin
|
|
165
|
+
FROM mcp_servers
|
|
166
|
+
`).all() as Array<{
|
|
167
|
+
id: string;
|
|
168
|
+
name: string;
|
|
169
|
+
transport: string;
|
|
170
|
+
command: string | null;
|
|
171
|
+
args: string | null;
|
|
172
|
+
url: string | null;
|
|
173
|
+
enabled: number;
|
|
174
|
+
active: number;
|
|
175
|
+
builtin: number;
|
|
176
|
+
}>;
|
|
177
|
+
|
|
178
|
+
return results.map(r => ({
|
|
179
|
+
...r,
|
|
180
|
+
enabled: r.enabled === 1,
|
|
181
|
+
active: r.active === 1,
|
|
182
|
+
builtin: r.builtin === 1,
|
|
183
|
+
}));
|
|
184
|
+
} catch (e) {
|
|
185
|
+
log.error("[getAllMcpServersFromDb] Error:", { error: (e as Error).message });
|
|
186
|
+
return [];
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Obtiene los channels activos desde la BD
|
|
192
|
+
*/
|
|
193
|
+
export function getActiveChannelsFromDb(): Array<{
|
|
194
|
+
id: string;
|
|
195
|
+
type: string;
|
|
196
|
+
accountId: string;
|
|
197
|
+
status: string;
|
|
198
|
+
}> {
|
|
199
|
+
try {
|
|
200
|
+
const db = getDb();
|
|
201
|
+
const results = db.query(`
|
|
202
|
+
SELECT id, type, id as account_id, status
|
|
203
|
+
FROM channels
|
|
204
|
+
WHERE active = 1
|
|
205
|
+
`).all() as Array<{
|
|
206
|
+
id: string;
|
|
207
|
+
type: string;
|
|
208
|
+
account_id: string;
|
|
209
|
+
status: string;
|
|
210
|
+
}>;
|
|
211
|
+
|
|
212
|
+
return results.map(r => ({
|
|
213
|
+
id: r.id,
|
|
214
|
+
type: r.type,
|
|
215
|
+
accountId: r.id,
|
|
216
|
+
status: r.status,
|
|
217
|
+
}));
|
|
218
|
+
} catch (e) {
|
|
219
|
+
log.error("[getActiveChannelsFromDb] Error:", { error: (e as Error).message });
|
|
220
|
+
return [];
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Obtiene la configuración de Code Bridge desde la BD
|
|
226
|
+
*/
|
|
227
|
+
export function getCodeBridgeFromDb(): Array<{
|
|
228
|
+
id: string;
|
|
229
|
+
name: string;
|
|
230
|
+
cliCommand: string;
|
|
231
|
+
port: number;
|
|
232
|
+
enabled: boolean;
|
|
233
|
+
active: boolean;
|
|
234
|
+
}> {
|
|
235
|
+
try {
|
|
236
|
+
const db = getDb();
|
|
237
|
+
const results = db.query(`
|
|
238
|
+
SELECT id, name, cli_command, port, enabled, active
|
|
239
|
+
FROM code_bridge
|
|
240
|
+
WHERE enabled = 1 OR active = 1
|
|
241
|
+
`).all() as Array<{
|
|
242
|
+
id: string;
|
|
243
|
+
name: string;
|
|
244
|
+
cli_command: string;
|
|
245
|
+
port: number;
|
|
246
|
+
enabled: number;
|
|
247
|
+
active: number;
|
|
248
|
+
}>;
|
|
249
|
+
|
|
250
|
+
return results.map(r => ({
|
|
251
|
+
id: r.id,
|
|
252
|
+
name: r.name,
|
|
253
|
+
cliCommand: r.cli_command,
|
|
254
|
+
port: r.port,
|
|
255
|
+
enabled: r.enabled === 1,
|
|
256
|
+
active: r.active === 1,
|
|
257
|
+
}));
|
|
258
|
+
} catch (e) {
|
|
259
|
+
log.error("[getCodeBridgeFromDb] Error:", { error: (e as Error).message });
|
|
260
|
+
return [];
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Obtiene los providers activos con API key configurada desde la BD
|
|
266
|
+
*/
|
|
267
|
+
export function getActiveProvidersFromDb(): Array<{
|
|
268
|
+
id: string;
|
|
269
|
+
name: string;
|
|
270
|
+
baseUrl: string | null;
|
|
271
|
+
hasApiKey: boolean;
|
|
272
|
+
}> {
|
|
273
|
+
try {
|
|
274
|
+
const db = getDb();
|
|
275
|
+
const results = db.query(`
|
|
276
|
+
SELECT id, name, base_url, api_key_encrypted
|
|
277
|
+
FROM providers
|
|
278
|
+
WHERE active = 1 AND api_key_encrypted IS NOT NULL
|
|
279
|
+
`).all() as Array<{
|
|
280
|
+
id: string;
|
|
281
|
+
name: string;
|
|
282
|
+
base_url: string | null;
|
|
283
|
+
api_key_encrypted: string | null;
|
|
284
|
+
}>;
|
|
285
|
+
|
|
286
|
+
return results.map(r => ({
|
|
287
|
+
id: r.id,
|
|
288
|
+
name: r.name,
|
|
289
|
+
baseUrl: r.base_url,
|
|
290
|
+
hasApiKey: r.api_key_encrypted !== null,
|
|
291
|
+
}));
|
|
292
|
+
} catch (e) {
|
|
293
|
+
log.error("[getActiveProvidersFromDb] Error:", { error: (e as Error).message });
|
|
294
|
+
return [];
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* Obtiene los models activos desde la BD
|
|
300
|
+
*/
|
|
301
|
+
export function getActiveModelsFromDb(): Array<{
|
|
302
|
+
id: string;
|
|
303
|
+
name: string;
|
|
304
|
+
providerId: string;
|
|
305
|
+
contextWindow: number | null;
|
|
306
|
+
capabilities: string | null;
|
|
307
|
+
}> {
|
|
308
|
+
try {
|
|
309
|
+
const db = getDb();
|
|
310
|
+
const results = db.query(`
|
|
311
|
+
SELECT id, name, provider_id, context_window, capabilities
|
|
312
|
+
FROM models
|
|
313
|
+
WHERE active = 1
|
|
314
|
+
`).all() as Array<{
|
|
315
|
+
id: string;
|
|
316
|
+
name: string;
|
|
317
|
+
provider_id: string;
|
|
318
|
+
context_window: number | null;
|
|
319
|
+
capabilities: string | null;
|
|
320
|
+
}>;
|
|
321
|
+
|
|
322
|
+
return results.map(r => ({
|
|
323
|
+
id: r.id,
|
|
324
|
+
name: r.name,
|
|
325
|
+
providerId: r.provider_id,
|
|
326
|
+
contextWindow: r.context_window,
|
|
327
|
+
capabilities: r.capabilities,
|
|
328
|
+
}));
|
|
329
|
+
} catch (e) {
|
|
330
|
+
log.error("[getActiveModelsFromDb] Error:", { error: (e as Error).message });
|
|
331
|
+
return [];
|
|
332
|
+
}
|
|
333
|
+
}
|