@imisbahk/hive 0.2.0 → 0.2.2

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 (99) hide show
  1. package/dist/agent/agent.d.ts.map +1 -1
  2. package/dist/agent/agent.js +6 -1
  3. package/dist/agent/agent.js.map +1 -1
  4. package/dist/cli/commands/chat.d.ts.map +1 -1
  5. package/dist/cli/commands/chat.js +218 -5
  6. package/dist/cli/commands/chat.js.map +1 -1
  7. package/dist/cli/commands/config.d.ts.map +1 -1
  8. package/dist/cli/commands/config.js +30 -0
  9. package/dist/cli/commands/config.js.map +1 -1
  10. package/dist/cli/commands/daemon-service.d.ts +1 -0
  11. package/dist/cli/commands/daemon-service.d.ts.map +1 -1
  12. package/dist/cli/commands/daemon-service.js +45 -8
  13. package/dist/cli/commands/daemon-service.js.map +1 -1
  14. package/dist/cli/commands/daemon.d.ts +1 -1
  15. package/dist/cli/commands/daemon.d.ts.map +1 -1
  16. package/dist/cli/commands/daemon.js +187 -58
  17. package/dist/cli/commands/daemon.js.map +1 -1
  18. package/dist/cli/commands/doctor.d.ts.map +1 -1
  19. package/dist/cli/commands/doctor.js +122 -1
  20. package/dist/cli/commands/doctor.js.map +1 -1
  21. package/dist/cli/commands/integrations.d.ts +3 -0
  22. package/dist/cli/commands/integrations.d.ts.map +1 -0
  23. package/dist/cli/commands/integrations.js +360 -0
  24. package/dist/cli/commands/integrations.js.map +1 -0
  25. package/dist/cli/commands/nuke.d.ts.map +1 -1
  26. package/dist/cli/commands/nuke.js +9 -0
  27. package/dist/cli/commands/nuke.js.map +1 -1
  28. package/dist/cli/commands/status.d.ts.map +1 -1
  29. package/dist/cli/commands/status.js +31 -1
  30. package/dist/cli/commands/status.js.map +1 -1
  31. package/dist/cli/commands/task.d.ts +8 -0
  32. package/dist/cli/commands/task.d.ts.map +1 -0
  33. package/dist/cli/commands/task.js +262 -0
  34. package/dist/cli/commands/task.js.map +1 -0
  35. package/dist/cli/helpers/tasks.d.ts +6 -0
  36. package/dist/cli/helpers/tasks.d.ts.map +1 -0
  37. package/dist/cli/helpers/tasks.js +57 -0
  38. package/dist/cli/helpers/tasks.js.map +1 -0
  39. package/dist/cli/index.js +4 -0
  40. package/dist/cli/index.js.map +1 -1
  41. package/dist/cli/theme.d.ts +1 -0
  42. package/dist/cli/theme.d.ts.map +1 -1
  43. package/dist/cli/theme.js +1 -0
  44. package/dist/cli/theme.js.map +1 -1
  45. package/dist/daemon/index.js +381 -6
  46. package/dist/daemon/index.js.map +1 -1
  47. package/dist/daemon/watcher.js +4 -1
  48. package/dist/daemon/watcher.js.map +1 -1
  49. package/dist/integrations/auth.d.ts +34 -0
  50. package/dist/integrations/auth.d.ts.map +1 -0
  51. package/dist/integrations/auth.js +111 -0
  52. package/dist/integrations/auth.js.map +1 -0
  53. package/dist/integrations/discord.d.ts +14 -0
  54. package/dist/integrations/discord.d.ts.map +1 -0
  55. package/dist/integrations/discord.js +132 -0
  56. package/dist/integrations/discord.js.map +1 -0
  57. package/dist/integrations/handler.d.ts +29 -0
  58. package/dist/integrations/handler.d.ts.map +1 -0
  59. package/dist/integrations/handler.js +138 -0
  60. package/dist/integrations/handler.js.map +1 -0
  61. package/dist/integrations/index.d.ts +8 -0
  62. package/dist/integrations/index.d.ts.map +1 -0
  63. package/dist/integrations/index.js +8 -0
  64. package/dist/integrations/index.js.map +1 -0
  65. package/dist/integrations/keychain.d.ts +5 -0
  66. package/dist/integrations/keychain.d.ts.map +1 -0
  67. package/dist/integrations/keychain.js +22 -0
  68. package/dist/integrations/keychain.js.map +1 -0
  69. package/dist/integrations/rate-limit.d.ts +12 -0
  70. package/dist/integrations/rate-limit.d.ts.map +1 -0
  71. package/dist/integrations/rate-limit.js +17 -0
  72. package/dist/integrations/rate-limit.js.map +1 -0
  73. package/dist/integrations/slack.d.ts +20 -0
  74. package/dist/integrations/slack.d.ts.map +1 -0
  75. package/dist/integrations/slack.js +100 -0
  76. package/dist/integrations/slack.js.map +1 -0
  77. package/dist/integrations/telegram.d.ts +19 -0
  78. package/dist/integrations/telegram.d.ts.map +1 -0
  79. package/dist/integrations/telegram.js +92 -0
  80. package/dist/integrations/telegram.js.map +1 -0
  81. package/dist/integrations/whatsapp.d.ts +17 -0
  82. package/dist/integrations/whatsapp.d.ts.map +1 -0
  83. package/dist/integrations/whatsapp.js +82 -0
  84. package/dist/integrations/whatsapp.js.map +1 -0
  85. package/dist/providers/groq.js +1 -1
  86. package/dist/providers/groq.js.map +1 -1
  87. package/dist/providers/openai-compatible.d.ts +2 -0
  88. package/dist/providers/openai-compatible.d.ts.map +1 -1
  89. package/dist/providers/openai-compatible.js +29 -2
  90. package/dist/providers/openai-compatible.js.map +1 -1
  91. package/dist/storage/db.d.ts +30 -2
  92. package/dist/storage/db.d.ts.map +1 -1
  93. package/dist/storage/db.js +183 -0
  94. package/dist/storage/db.js.map +1 -1
  95. package/dist/storage/schema.d.ts +21 -1
  96. package/dist/storage/schema.d.ts.map +1 -1
  97. package/dist/storage/schema.js +38 -1
  98. package/dist/storage/schema.js.map +1 -1
  99. package/package.json +77 -70
@@ -0,0 +1,100 @@
1
+ import slackPkg from "@slack/bolt";
2
+ const { App } = slackPkg;
3
+ export async function startSlackIntegration(deps) {
4
+ const socketMode = Boolean(deps.tokens.appToken);
5
+ const app = new App({
6
+ token: deps.tokens.botToken,
7
+ appToken: deps.tokens.appToken,
8
+ signingSecret: deps.tokens.signingSecret ?? "hive-signing-secret",
9
+ socketMode,
10
+ });
11
+ const postBlocks = async (channel, text) => {
12
+ const blocks = [
13
+ {
14
+ type: "section",
15
+ text: { type: "mrkdwn", text },
16
+ },
17
+ ];
18
+ await app.client.chat.postMessage({ channel, text, blocks });
19
+ };
20
+ app.command("/hive", async ({ command, ack }) => {
21
+ await ack();
22
+ try {
23
+ const result = await deps.handleIncoming({
24
+ platform: "slack",
25
+ from: String(command.user_id),
26
+ text: String(command.text ?? "").trim(),
27
+ messageId: String(command.trigger_id ?? ""),
28
+ timestamp: Date.now(),
29
+ });
30
+ await postBlocks(String(command.channel_id), result);
31
+ }
32
+ catch (error) {
33
+ deps.log(`[integrations][slack] /hive error: ${String(error)}`);
34
+ }
35
+ });
36
+ app.event("app_mention", async ({ event }) => {
37
+ try {
38
+ const channel = String(event.channel);
39
+ const user = String(event.user);
40
+ const text = String(event.text ?? "").replace(/<@[^>]+>/g, "").trim();
41
+ if (!text)
42
+ return;
43
+ const result = await deps.handleIncoming({
44
+ platform: "slack",
45
+ from: user,
46
+ text,
47
+ messageId: String(event.ts ?? ""),
48
+ timestamp: Date.now(),
49
+ });
50
+ await postBlocks(channel, result);
51
+ }
52
+ catch (error) {
53
+ deps.log(`[integrations][slack] mention error: ${String(error)}`);
54
+ }
55
+ });
56
+ app.message(async ({ message, say }) => {
57
+ try {
58
+ if (message.subtype)
59
+ return;
60
+ if (message.channel_type !== "im")
61
+ return;
62
+ const user = String(message.user);
63
+ const text = String(message.text ?? "").trim();
64
+ if (!text)
65
+ return;
66
+ const result = await deps.handleIncoming({
67
+ platform: "slack",
68
+ from: user,
69
+ text,
70
+ messageId: String(message.ts ?? ""),
71
+ timestamp: Date.now(),
72
+ });
73
+ await say({
74
+ text: result,
75
+ blocks: [
76
+ {
77
+ type: "section",
78
+ text: { type: "mrkdwn", text: result },
79
+ },
80
+ ],
81
+ });
82
+ }
83
+ catch (error) {
84
+ deps.log(`[integrations][slack] dm error: ${String(error)}`);
85
+ }
86
+ });
87
+ await app.start();
88
+ deps.log("[integrations][slack] started");
89
+ const platform = "slack";
90
+ const stop = async () => {
91
+ try {
92
+ await app.stop();
93
+ }
94
+ catch {
95
+ // ignore
96
+ }
97
+ };
98
+ return { platform, stop };
99
+ }
100
+ //# sourceMappingURL=slack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack.js","sourceRoot":"","sources":["../../src/integrations/slack.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { IncomingMessage } from "./handler.js";
2
+ import type { IntegrationPlatform } from "./auth.js";
3
+ export interface TelegramIntegrationDeps {
4
+ token: string;
5
+ handleMessage: (msg: IncomingMessage) => Promise<{
6
+ text: string;
7
+ replyTo?: string;
8
+ to: string;
9
+ }>;
10
+ log: (line: string) => void;
11
+ getTasksText: () => Promise<string>;
12
+ getStatusText: () => Promise<string>;
13
+ }
14
+ export interface RunningIntegration {
15
+ platform: IntegrationPlatform;
16
+ stop: () => Promise<void>;
17
+ }
18
+ export declare function startTelegramIntegration(deps: TelegramIntegrationDeps): Promise<RunningIntegration>;
19
+ //# sourceMappingURL=telegram.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telegram.d.ts","sourceRoot":"","sources":["../../src/integrations/telegram.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAGrD,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjG,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,YAAY,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACpC,aAAa,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AA4BD,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAuFzG"}
@@ -0,0 +1,92 @@
1
+ import TelegramBot from "node-telegram-bot-api";
2
+ const TELEGRAM_MAX_MESSAGE = 4096;
3
+ function splitTelegramText(text) {
4
+ if (text.length <= TELEGRAM_MAX_MESSAGE) {
5
+ return [text];
6
+ }
7
+ const parts = [];
8
+ let remaining = text;
9
+ while (remaining.length > TELEGRAM_MAX_MESSAGE) {
10
+ let cut = remaining.lastIndexOf("\n", TELEGRAM_MAX_MESSAGE);
11
+ if (cut < 1000) {
12
+ cut = TELEGRAM_MAX_MESSAGE;
13
+ }
14
+ parts.push(remaining.slice(0, cut));
15
+ remaining = remaining.slice(cut);
16
+ }
17
+ if (remaining.trim().length > 0) {
18
+ parts.push(remaining);
19
+ }
20
+ return parts;
21
+ }
22
+ export async function startTelegramIntegration(deps) {
23
+ const bot = new TelegramBot(encodeURIComponent(deps.token), { polling: true });
24
+ const stop = async () => {
25
+ try {
26
+ await bot.stopPolling();
27
+ }
28
+ catch {
29
+ // ignore
30
+ }
31
+ };
32
+ bot.on("polling_error", (error) => {
33
+ deps.log(`[integrations][telegram] polling_error: ${error?.message ?? String(error)}`);
34
+ });
35
+ bot.on("message", async (message) => {
36
+ try {
37
+ const text = typeof message?.text === "string" ? message.text : "";
38
+ if (!text)
39
+ return;
40
+ const chatId = String(message.chat?.id);
41
+ const messageId = String(message.message_id ?? "");
42
+ const timestamp = typeof message.date === "number" ? message.date * 1000 : Date.now();
43
+ const normalized = text.trim();
44
+ const lower = normalized.toLowerCase();
45
+ if (lower === "/help") {
46
+ await bot.sendMessage(chatId, ["Commands:", "/help", "/status", "/tasks", "", "Just message me to ask anything."].join("\n"));
47
+ return;
48
+ }
49
+ if (lower === "/status") {
50
+ const status = await deps.getStatusText();
51
+ await bot.sendMessage(chatId, status);
52
+ return;
53
+ }
54
+ if (lower === "/tasks") {
55
+ const tasks = await deps.getTasksText();
56
+ await bot.sendMessage(chatId, tasks);
57
+ return;
58
+ }
59
+ await bot.sendChatAction(chatId, "typing").catch(() => { });
60
+ const outgoing = await deps.handleMessage({
61
+ platform: "telegram",
62
+ from: chatId,
63
+ text: normalized,
64
+ messageId,
65
+ timestamp,
66
+ });
67
+ const replyTo = outgoing.replyTo ? Number.parseInt(outgoing.replyTo, 10) : undefined;
68
+ for (const part of splitTelegramText(outgoing.text)) {
69
+ // eslint-disable-next-line no-await-in-loop
70
+ await bot.sendMessage(chatId, part, {
71
+ parse_mode: "Markdown",
72
+ reply_to_message_id: Number.isFinite(replyTo) ? replyTo : undefined,
73
+ disable_web_page_preview: true,
74
+ });
75
+ }
76
+ }
77
+ catch (error) {
78
+ deps.log(`[integrations][telegram] message handler error: ${error instanceof Error ? error.message : String(error)}`);
79
+ }
80
+ });
81
+ // Validate token and report bot username to logs
82
+ try {
83
+ const me = await bot.getMe();
84
+ deps.log(`[integrations][telegram] started as @${me.username ?? "unknown"}`);
85
+ }
86
+ catch (error) {
87
+ deps.log(`[integrations][telegram] getMe failed: ${error instanceof Error ? error.message : String(error)}`);
88
+ }
89
+ const platform = "telegram";
90
+ return { platform, stop };
91
+ }
92
+ //# sourceMappingURL=telegram.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telegram.js","sourceRoot":"","sources":["../../src/integrations/telegram.ts"],"names":[],"mappings":"AAEA,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAehD,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAElC,SAAS,iBAAiB,CAAC,IAAY;IACrC,IAAI,IAAI,CAAC,MAAM,IAAI,oBAAoB,EAAE,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,SAAS,GAAG,IAAI,CAAC;IAErB,OAAO,SAAS,CAAC,MAAM,GAAG,oBAAoB,EAAE,CAAC;QAC/C,IAAI,GAAG,GAAG,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;QAC5D,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC;YACf,GAAG,GAAG,oBAAoB,CAAC;QAC7B,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACpC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,IAA6B;IAC1E,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/E,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;QACtB,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC,CAAC;IAEF,GAAG,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,KAAU,EAAE,EAAE;QACrC,IAAI,CAAC,GAAG,CAAC,2CAA2C,KAAK,EAAE,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,OAAY,EAAE,EAAE;QACvC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,OAAO,OAAO,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACnE,IAAI,CAAC,IAAI;gBAAE,OAAO;YAElB,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACxC,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;YACnD,MAAM,SAAS,GAAG,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAEtF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;YAEvC,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;gBACtB,MAAM,GAAG,CAAC,WAAW,CACnB,MAAM,EACN,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,kCAAkC,CAAC,CAAC,IAAI,CACtF,IAAI,CACL,CACF,CAAC;gBACF,OAAO;YACT,CAAC;YAED,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC1C,MAAM,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBACtC,OAAO;YACT,CAAC;YAED,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACvB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;gBACxC,MAAM,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBACrC,OAAO;YACT,CAAC;YAED,MAAM,GAAG,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YAE5D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC;gBACxC,QAAQ,EAAE,UAAU;gBACpB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,UAAU;gBAChB,SAAS;gBACT,SAAS;aACV,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACrF,KAAK,MAAM,IAAI,IAAI,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpD,4CAA4C;gBAC5C,MAAM,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE;oBAClC,UAAU,EAAE,UAAU;oBACtB,mBAAmB,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;oBAC1E,wBAAwB,EAAE,IAAI;iBAC/B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CACN,mDAAmD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC5G,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,iDAAiD;IACjD,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,wCAAwC,EAAE,CAAC,QAAQ,IAAI,SAAS,EAAE,CAAC,CAAC;IAC/E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,GAAG,CACN,0CAA0C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACnG,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAwB,UAAU,CAAC;IACjD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { IncomingMessage } from "./handler.js";
2
+ import type { IntegrationPlatform } from "./auth.js";
3
+ export interface WhatsAppIntegrationDeps {
4
+ sessionDir: string;
5
+ handleMessage: (msg: IncomingMessage) => Promise<{
6
+ text: string;
7
+ }>;
8
+ log: (line: string) => void;
9
+ agentName: string;
10
+ }
11
+ export interface RunningIntegration {
12
+ platform: IntegrationPlatform;
13
+ stop: () => Promise<void>;
14
+ }
15
+ export declare function startWhatsAppIntegration(deps: WhatsAppIntegrationDeps): Promise<RunningIntegration>;
16
+ export declare function runWhatsAppSetup(sessionDir: string, log: (line: string) => void): Promise<void>;
17
+ //# sourceMappingURL=whatsapp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whatsapp.d.ts","sourceRoot":"","sources":["../../src/integrations/whatsapp.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAErD,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnE,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,uBAAuB,GAC5B,OAAO,CAAC,kBAAkB,CAAC,CA6D7B;AAED,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BrG"}
@@ -0,0 +1,82 @@
1
+ import * as fs from "node:fs";
2
+ import pkg from "whatsapp-web.js";
3
+ import qrcode from "qrcode-terminal";
4
+ const { Client, LocalAuth } = pkg;
5
+ export async function startWhatsAppIntegration(deps) {
6
+ if (!fs.existsSync(deps.sessionDir)) {
7
+ fs.mkdirSync(deps.sessionDir, { recursive: true });
8
+ }
9
+ const client = new Client({
10
+ authStrategy: new LocalAuth({
11
+ dataPath: deps.sessionDir,
12
+ }),
13
+ puppeteer: {
14
+ headless: true,
15
+ args: ["--no-sandbox", "--disable-setuid-sandbox"],
16
+ },
17
+ });
18
+ client.on("ready", () => deps.log("[integrations][whatsapp] ready"));
19
+ client.on("auth_failure", (msg) => deps.log(`[integrations][whatsapp] auth_failure: ${String(msg)}`));
20
+ client.on("disconnected", (reason) => deps.log(`[integrations][whatsapp] disconnected: ${String(reason)}`));
21
+ client.on("message", async (message) => {
22
+ try {
23
+ const body = typeof message?.body === "string" ? message.body : "";
24
+ if (!body)
25
+ return;
26
+ const from = typeof message?.from === "string" ? message.from : "";
27
+ if (!from)
28
+ return;
29
+ await client.sendStateTyping(from).catch(() => { });
30
+ const outgoing = await deps.handleMessage({
31
+ platform: "whatsapp",
32
+ from,
33
+ text: body.trim(),
34
+ messageId: String(message?.id?._serialized ?? message?.id ?? ""),
35
+ timestamp: Date.now(),
36
+ });
37
+ const response = `${deps.agentName}: ${outgoing.text}`;
38
+ await client.sendMessage(from, response);
39
+ }
40
+ catch (error) {
41
+ deps.log(`[integrations][whatsapp] message handler error: ${error instanceof Error ? error.message : String(error)}`);
42
+ }
43
+ });
44
+ await client.initialize();
45
+ const platform = "whatsapp";
46
+ const stop = async () => {
47
+ try {
48
+ await client.destroy();
49
+ }
50
+ catch {
51
+ // ignore
52
+ }
53
+ };
54
+ return { platform, stop };
55
+ }
56
+ export async function runWhatsAppSetup(sessionDir, log) {
57
+ fs.mkdirSync(sessionDir, { recursive: true });
58
+ const client = new Client({
59
+ authStrategy: new LocalAuth({ dataPath: sessionDir }),
60
+ puppeteer: {
61
+ headless: true,
62
+ args: ["--no-sandbox", "--disable-setuid-sandbox"],
63
+ },
64
+ });
65
+ client.on("qr", (qr) => {
66
+ log("Scan this QR code in WhatsApp (Linked devices):");
67
+ qrcode.generate(qr, { small: true });
68
+ });
69
+ await new Promise((resolve, reject) => {
70
+ client.on("ready", () => resolve());
71
+ client.on("auth_failure", (msg) => reject(new Error(String(msg))));
72
+ client.initialize().catch(reject);
73
+ });
74
+ log("WhatsApp session saved.");
75
+ try {
76
+ await client.destroy();
77
+ }
78
+ catch {
79
+ // ignore
80
+ }
81
+ }
82
+ //# sourceMappingURL=whatsapp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whatsapp.js","sourceRoot":"","sources":["../../src/integrations/whatsapp.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ export class GroqProvider extends OpenAICompatibleProvider {
9
9
  baseUrl: process.env.GROQ_BASE_URL ?? DEFAULT_GROQ_BASE_URL,
10
10
  apiKey,
11
11
  defaultModel: process.env.GROQ_MODEL ?? DEFAULT_GROQ_MODEL,
12
- supportsTools: false,
12
+ supportsTools: true,
13
13
  });
14
14
  }
15
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"groq.js","sourceRoot":"","sources":["../../src/providers/groq.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,MAAM,qBAAqB,GAAG,gCAAgC,CAAC;AAC/D,MAAM,kBAAkB,GAAG,yBAAyB,CAAC;AAErD,MAAM,OAAO,YAAa,SAAQ,wBAAwB;IACxD,YAAY,MAAe;QACzB,KAAK,CAAC;YACJ,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,qBAAqB;YAC3D,MAAM;YACN,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,kBAAkB;YAC1D,aAAa,EAAE,KAAK;SACrB,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACnE,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"groq.js","sourceRoot":"","sources":["../../src/providers/groq.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,MAAM,qBAAqB,GAAG,gCAAgC,CAAC;AAC/D,MAAM,kBAAkB,GAAG,yBAAyB,CAAC;AAErD,MAAM,OAAO,YAAa,SAAQ,wBAAwB;IACxD,YAAY,MAAe;QACzB,KAAK,CAAC;YACJ,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,qBAAqB;YAC3D,MAAM;YACN,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,kBAAkB;YAC1D,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACnE,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC"}
@@ -21,5 +21,7 @@ export declare class OpenAICompatibleProvider implements Provider {
21
21
  constructor(config: OpenAICompatibleProviderConfig);
22
22
  streamChat(request: StreamChatRequest): AsyncGenerator<string>;
23
23
  completeChat(request: CompleteChatRequest): Promise<CompleteChatResponse>;
24
+ private completeChatInternal;
25
+ private shouldRetryWithoutTools;
24
26
  }
25
27
  //# sourceMappingURL=openai-compatible.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"openai-compatible.d.ts","sourceRoot":"","sources":["../../src/providers/openai-compatible.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EAEzB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,iBAAiB,EAEvB,MAAM,WAAW,CAAC;AAEnB,MAAM,WAAW,8BAA8B;IAC7C,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,qBAAa,wBAAyB,YAAW,QAAQ;IACvD,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAEhC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IAC7C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAyB;IACvD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAA0B;gBAEzC,MAAM,EAAE,8BAA8B;IAW3C,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,cAAc,CAAC,MAAM,CAAC;IAkB/D,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAkBhF"}
1
+ {"version":3,"file":"openai-compatible.d.ts","sourceRoot":"","sources":["../../src/providers/openai-compatible.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EAGzB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,iBAAiB,EAEvB,MAAM,WAAW,CAAC;AAEnB,MAAM,WAAW,8BAA8B;IAC7C,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,qBAAa,wBAAyB,YAAW,QAAQ;IACvD,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAEhC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IAC7C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAyB;IACvD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAA0B;gBAEzC,MAAM,EAAE,8BAA8B;IAW3C,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,cAAc,CAAC,MAAM,CAAC;IAkB/D,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAiB/E,OAAO,CAAC,oBAAoB;IAkB5B,OAAO,CAAC,uBAAuB;CAmBhC"}
@@ -1,4 +1,5 @@
1
- import { completeOpenAICompatibleChat, ProviderConfigurationError, streamOpenAICompatibleChat, } from "./base.js";
1
+ import chalk from "chalk";
2
+ import { completeOpenAICompatibleChat, ProviderConfigurationError, ProviderRequestError, streamOpenAICompatibleChat, } from "./base.js";
2
3
  export class OpenAICompatibleProvider {
3
4
  name;
4
5
  defaultModel;
@@ -38,6 +39,18 @@ export class OpenAICompatibleProvider {
38
39
  if (!this.allowMissingApiKey && !this.apiKey) {
39
40
  throw new ProviderConfigurationError(`Provider "${this.name}" is missing an API key.`);
40
41
  }
42
+ try {
43
+ return await this.completeChatInternal(request, { includeTools: this.supportsTools });
44
+ }
45
+ catch (error) {
46
+ if (this.shouldRetryWithoutTools(error, request)) {
47
+ process.stderr.write(chalk.dim("· tool call failed — retrying without tools") + "\n");
48
+ return await this.completeChatInternal(request, { includeTools: false });
49
+ }
50
+ throw error;
51
+ }
52
+ }
53
+ completeChatInternal(request, options) {
41
54
  return completeOpenAICompatibleChat({
42
55
  provider: this.name,
43
56
  baseUrl: this.baseUrl,
@@ -46,10 +59,24 @@ export class OpenAICompatibleProvider {
46
59
  messages: request.messages,
47
60
  temperature: request.temperature,
48
61
  maxTokens: request.maxTokens,
49
- tools: this.supportsTools ? request.tools : undefined,
62
+ tools: options.includeTools ? request.tools : undefined,
50
63
  extraHeaders: this.extraHeaders,
51
64
  extraBody: this.extraBody,
52
65
  });
53
66
  }
67
+ shouldRetryWithoutTools(error, request) {
68
+ if (this.name !== "groq") {
69
+ return false;
70
+ }
71
+ if (!this.supportsTools || !request.tools || request.tools.length === 0) {
72
+ return false;
73
+ }
74
+ if (!(error instanceof ProviderRequestError)) {
75
+ return false;
76
+ }
77
+ const message = error.message.toLowerCase();
78
+ const is400 = message.includes("http 400") || message.includes("status 400") || message.includes(" 400 ");
79
+ return is400 && message.includes("tool_use_failed");
80
+ }
54
81
  }
55
82
  //# sourceMappingURL=openai-compatible.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"openai-compatible.js","sourceRoot":"","sources":["../../src/providers/openai-compatible.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAG5B,0BAA0B,EAI1B,0BAA0B,GAC3B,MAAM,WAAW,CAAC;AAanB,MAAM,OAAO,wBAAwB;IAC1B,IAAI,CAAe;IACnB,YAAY,CAAS;IACrB,aAAa,CAAU;IAEf,OAAO,CAAS;IAChB,MAAM,CAAU;IAChB,kBAAkB,CAAU;IAC5B,YAAY,CAA0B;IACtC,SAAS,CAA2B;IAErD,YAAY,MAAsC;QAChD,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QACxC,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,IAAI,KAAK,CAAC;QAC7D,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QACxC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,CAAC,UAAU,CAAC,OAA0B;QAC1C,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAC7C,MAAM,IAAI,0BAA0B,CAAC,aAAa,IAAI,CAAC,IAAI,0BAA0B,CAAC,CAAC;QACzF,CAAC;QAED,KAAK,CAAC,CAAC,0BAA0B,CAAC;YAChC,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY;YACzC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAA4B;QAC7C,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAC7C,MAAM,IAAI,0BAA0B,CAAC,aAAa,IAAI,CAAC,IAAI,0BAA0B,CAAC,CAAC;QACzF,CAAC;QAED,OAAO,4BAA4B,CAAC;YAClC,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY;YACzC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YACrD,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"openai-compatible.js","sourceRoot":"","sources":["../../src/providers/openai-compatible.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import Database from "better-sqlite3";
2
- import { type AgentRecord, type ConversationRecord, type EpisodeRecord, type KnowledgeRecord, type MessageRecord, type MessageRole } from "./schema.js";
2
+ import { type AgentRecord, type ConversationRecord, type EpisodeRecord, type KnowledgeRecord, type MessageRecord, type MessageRole, type PlatformConversationRecord, type TaskRecord, type TaskStatus } from "./schema.js";
3
3
  export type HiveDatabase = Database.Database;
4
- export type { AgentRecord, ConversationRecord, EpisodeRecord, KnowledgeRecord, MessageRecord, MessageRole, MetaRecord, } from "./schema.js";
4
+ export type { AgentRecord, ConversationRecord, EpisodeRecord, KnowledgeRecord, MessageRecord, MessageRole, MetaRecord, PlatformConversationRecord, TaskRecord, TaskStatus, } from "./schema.js";
5
5
  export interface UpsertAgentInput {
6
6
  name: string;
7
7
  provider: string;
@@ -45,12 +45,29 @@ export interface RelevantEpisode {
45
45
  episode: EpisodeRecord;
46
46
  score: number;
47
47
  }
48
+ export interface InsertTaskInput {
49
+ id: string;
50
+ title: string;
51
+ agentId?: string | null;
52
+ }
53
+ export interface PlatformConversationMessage {
54
+ role: "user" | "assistant";
55
+ text: string;
56
+ messageId?: string;
57
+ timestamp: number;
58
+ }
48
59
  export declare const HIVE_DIRECTORY_NAME = ".hive";
49
60
  export declare const HIVE_DB_FILENAME = "hive.db";
50
61
  export declare function getHiveHomeDir(): string;
51
62
  export declare function getHiveDatabasePath(): string;
52
63
  export declare function openHiveDatabase(databasePath?: string): HiveDatabase;
53
64
  export declare function closeHiveDatabase(db: HiveDatabase): void;
65
+ export declare function upsertPlatformConversation(db: HiveDatabase, input: {
66
+ platform: string;
67
+ externalId: string;
68
+ messages: PlatformConversationMessage[];
69
+ }): PlatformConversationRecord;
70
+ export declare function getPlatformConversation(db: HiveDatabase, platform: string, externalId: string): PlatformConversationRecord | null;
54
71
  export declare function runMigrations(db: HiveDatabase): void;
55
72
  export declare function getMetaValue(db: HiveDatabase, key: string): string | null;
56
73
  export declare function setMetaValue(db: HiveDatabase, key: string, value: string): void;
@@ -77,4 +94,15 @@ export declare function insertEpisode(db: HiveDatabase, content: string): Episod
77
94
  export declare function listEpisodes(db: HiveDatabase, limit?: number): EpisodeRecord[];
78
95
  export declare function findRelevantEpisodes(db: HiveDatabase, query: string, limit?: number): RelevantEpisode[];
79
96
  export declare function clearEpisodes(db: HiveDatabase): void;
97
+ export declare function insertTask(db: HiveDatabase, input: InsertTaskInput): TaskRecord;
98
+ export declare function getTaskById(db: HiveDatabase, id: string): TaskRecord | null;
99
+ export declare function listTasks(db: HiveDatabase): TaskRecord[];
100
+ export declare function countTasksByStatus(db: HiveDatabase): Record<TaskStatus, number>;
101
+ export declare function claimNextQueuedTask(db: HiveDatabase): TaskRecord | null;
102
+ export declare function resetRunningTasksToQueued(db: HiveDatabase): number;
103
+ export declare function markTaskRunning(db: HiveDatabase, id: string): void;
104
+ export declare function markTaskDone(db: HiveDatabase, id: string, result: string): void;
105
+ export declare function markTaskFailed(db: HiveDatabase, id: string, error: string): void;
106
+ export declare function cancelTask(db: HiveDatabase, id: string): boolean;
107
+ export declare function clearCompletedTasks(db: HiveDatabase): number;
80
108
  //# sourceMappingURL=db.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/storage/db.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/storage/db.ts"],"names":[],"mappings":"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"}