@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
@@ -1,11 +1,12 @@
1
1
  import * as fs from "node:fs";
2
2
  import * as path from "node:path";
3
3
  import { createConnection } from "node:net";
4
- import { homedir } from "node:os";
4
+ import { fileURLToPath } from "node:url";
5
+ import { spawn } from "node:child_process";
5
6
  import chalk from "chalk";
6
7
  import ora from "ora";
7
8
  import { getHiveHomeDir, getPrimaryAgent, openHiveDatabase, closeHiveDatabase, } from "../../storage/db.js";
8
- import { renderHiveHeader, renderInfo, renderError, } from "../ui.js";
9
+ import { renderHiveHeader, renderInfo, renderError } from "../ui.js";
9
10
  const HIVE_HOME = getHiveHomeDir();
10
11
  const DAEMON_PID_FILE = path.join(HIVE_HOME, "daemon.pid");
11
12
  const DAEMON_PORT_FILE = path.join(HIVE_HOME, "daemon.port");
@@ -13,12 +14,10 @@ const DAEMON_LOCK_FILE = path.join(HIVE_HOME, "daemon.lock");
13
14
  const DAEMON_LOG_FILE = path.join(HIVE_HOME, "daemon.log");
14
15
  const DAEMON_WATCHER_PID_FILE = path.join(HIVE_HOME, "daemon.watcher.pid");
15
16
  const DAEMON_STOP_SENTINEL = path.join(HIVE_HOME, "daemon.stop");
16
- const DAEMON_SERVICE_FILE_MAC = path.join(homedir(), "Library", "LaunchAgents", "net.thehiveagent.hive-watcher.plist");
17
- const DAEMON_SERVICE_FILE_LINUX = path.join(homedir(), ".config", "systemd", "user", "hive-watcher.service");
18
17
  const DEFAULT_PORT = 2718;
19
18
  const TCP_TIMEOUT_MS = 3000;
20
19
  // Import helper functions from other modules
21
- import { installService, uninstallService, getServiceStatus } from "./daemon-service.js";
20
+ import { installService, uninstallService, getServiceStatus, startService, } from "./daemon-service.js";
22
21
  export function registerDaemonCommand(program) {
23
22
  const daemonCmd = program.command("daemon").description("Manage the Hive background daemon");
24
23
  daemonCmd
@@ -66,8 +65,9 @@ function sendDaemonCommand(command, port) {
66
65
  let buffer = "";
67
66
  let responded = false;
68
67
  socket.on("data", (data) => {
69
- if (responded)
68
+ if (responded) {
70
69
  return;
70
+ }
71
71
  buffer += data.toString();
72
72
  // Check for complete JSON object
73
73
  try {
@@ -109,20 +109,15 @@ function getDaemonPort() {
109
109
  }
110
110
  }
111
111
  /**
112
- * Check if daemon is running
112
+ * Check if a process is alive
113
113
  */
114
- function isDaemonRunning() {
115
- const pid = getDaemonPid();
116
- if (!pid) {
117
- return { running: false };
118
- }
114
+ function isProcessAlive(pid) {
119
115
  try {
120
116
  process.kill(pid, 0);
121
- const port = getDaemonPort();
122
- return { running: true, pid, port };
117
+ return true;
123
118
  }
124
119
  catch {
125
- return { running: false };
120
+ return false;
126
121
  }
127
122
  }
128
123
  /**
@@ -155,10 +150,65 @@ function getDaemonPid() {
155
150
  return null;
156
151
  }
157
152
  }
153
+ function removeDaemonPidFile() {
154
+ try {
155
+ fs.unlinkSync(DAEMON_PID_FILE);
156
+ }
157
+ catch {
158
+ // Ignore
159
+ }
160
+ }
161
+ function ensureHiveHomeExists() {
162
+ try {
163
+ fs.mkdirSync(HIVE_HOME, { recursive: true });
164
+ }
165
+ catch {
166
+ // Ignore
167
+ }
168
+ }
169
+ function writeDaemonPidFile(pid) {
170
+ ensureHiveHomeExists();
171
+ fs.writeFileSync(DAEMON_PID_FILE, String(pid));
172
+ }
173
+ function canConnectTcp(port, timeoutMs) {
174
+ return new Promise((resolve) => {
175
+ const socket = createConnection({ host: "127.0.0.1", port });
176
+ const done = (ok) => {
177
+ try {
178
+ socket.destroy();
179
+ }
180
+ catch {
181
+ // Ignore
182
+ }
183
+ resolve(ok);
184
+ };
185
+ socket.on("connect", () => done(true));
186
+ socket.on("error", () => done(false));
187
+ socket.setTimeout(timeoutMs, () => done(false));
188
+ });
189
+ }
190
+ async function waitForTcpReady(port, timeoutMs, pollMs) {
191
+ const start = Date.now();
192
+ while (Date.now() - start <= timeoutMs) {
193
+ const ok = await canConnectTcp(port, Math.min(250, pollMs));
194
+ if (ok) {
195
+ return true;
196
+ }
197
+ await new Promise((resolve) => setTimeout(resolve, pollMs));
198
+ }
199
+ return false;
200
+ }
201
+ function getPackageRootDir() {
202
+ const thisFile = fileURLToPath(import.meta.url);
203
+ const thisDir = path.dirname(thisFile);
204
+ // dist/cli/commands/daemon.js -> package root
205
+ return path.resolve(thisDir, "..", "..", "..");
206
+ }
158
207
  export async function runDaemonStartCommand(options = {}) {
159
208
  renderHiveHeader("Daemon Start");
160
209
  const spinner = ora("Starting Hive daemon...").start();
161
210
  try {
211
+ ensureHiveHomeExists();
162
212
  // Install service if needed
163
213
  const status = await getServiceStatus();
164
214
  if (!status.installed || options.force) {
@@ -169,39 +219,87 @@ export async function runDaemonStartCommand(options = {}) {
169
219
  else {
170
220
  spinner.info("Service already installed");
171
221
  }
172
- // Start watcher (which will start daemon)
173
- spinner.text = "Starting watcher process...";
174
- const { spawn } = await import("node:child_process");
175
- const daemonScript = path.join(path.dirname(import.meta.dirname || import.meta.url), "dist", "daemon", "watcher.js");
176
- const watcher = spawn(process.execPath, [daemonScript], {
177
- detached: true,
178
- stdio: ["ignore", "pipe", "pipe"],
179
- env: {
180
- ...process.env,
181
- HIVE_HOME,
182
- },
183
- });
184
- watcher.unref();
185
- // Give watcher time to start
186
- await new Promise((resolve) => setTimeout(resolve, 1000));
187
- // Wait for daemon to be ready
188
- let attempts = 0;
189
- const maxAttempts = 30; // 30 seconds max
190
- while (attempts < maxAttempts) {
191
- const status = isDaemonRunning();
192
- if (status.running) {
193
- break;
222
+ // Explicitly start the registered service right away (don't wait for reboot/login)
223
+ spinner.text = "Starting service...";
224
+ try {
225
+ await startService();
226
+ // Wait for watcher PID to appear (verify watcher actually started)
227
+ spinner.text = "Verifying watcher started...";
228
+ let watcherStarted = false;
229
+ for (let i = 0; i < 20; i++) { // Check for up to 10 seconds
230
+ const watcherStatus = isWatcherRunning();
231
+ if (watcherStatus.running) {
232
+ watcherStarted = true;
233
+ break;
234
+ }
235
+ await new Promise(resolve => setTimeout(resolve, 500));
236
+ }
237
+ if (!watcherStarted) {
238
+ spinner.info("Watcher failed to start via launchctl, trying fallback...");
239
+ // Fallback: spawn watcher directly
240
+ const packageRoot = getPackageRootDir();
241
+ const watcherChild = spawn("node", ["dist/daemon/watcher.js"], {
242
+ cwd: packageRoot,
243
+ detached: true,
244
+ stdio: "ignore",
245
+ env: { ...process.env, HIVE_HOME },
246
+ windowsHide: true,
247
+ });
248
+ watcherChild.unref();
249
+ if (typeof watcherChild.pid === "number") {
250
+ // Write watcher PID manually since we spawned it directly
251
+ fs.writeFileSync(DAEMON_WATCHER_PID_FILE, String(watcherChild.pid));
252
+ }
253
+ }
254
+ }
255
+ catch {
256
+ spinner.info("Service start failed, trying fallback...");
257
+ // Fallback: spawn watcher directly
258
+ const packageRoot = getPackageRootDir();
259
+ const watcherChild = spawn("node", ["dist/daemon/watcher.js"], {
260
+ cwd: packageRoot,
261
+ detached: true,
262
+ stdio: "ignore",
263
+ env: { ...process.env, HIVE_HOME },
264
+ windowsHide: true,
265
+ });
266
+ watcherChild.unref();
267
+ if (typeof watcherChild.pid === "number") {
268
+ // Write watcher PID manually since we spawned it directly
269
+ fs.writeFileSync(DAEMON_WATCHER_PID_FILE, String(watcherChild.pid));
270
+ }
271
+ }
272
+ const port = getDaemonPort();
273
+ // If daemon is already reachable, we're done.
274
+ const alreadyUp = await canConnectTcp(port, 250);
275
+ let startedPid = null;
276
+ if (!alreadyUp) {
277
+ spinner.text = "Starting daemon process (fallback)...";
278
+ const packageRoot = getPackageRootDir();
279
+ const child = spawn("node", ["dist/daemon/index.js"], {
280
+ cwd: packageRoot,
281
+ detached: true,
282
+ stdio: "ignore",
283
+ env: { ...process.env, HIVE_HOME },
284
+ windowsHide: true,
285
+ });
286
+ child.unref();
287
+ if (typeof child.pid === "number") {
288
+ startedPid = child.pid;
289
+ writeDaemonPidFile(child.pid);
194
290
  }
195
- await new Promise((resolve) => setTimeout(resolve, 1000));
196
- attempts++;
197
291
  }
198
- if (attempts < maxAttempts) {
199
- spinner.succeed(`Daemon running on port ${getDaemonPort()}`);
292
+ spinner.text = `Waiting for daemon TCP on 127.0.0.1:${port}...`;
293
+ const ready = await waitForTcpReady(port, 10000, 500);
294
+ spinner.stop();
295
+ if (ready) {
296
+ const pidFromFile = getDaemonPid();
297
+ const pid = pidFromFile && isProcessAlive(pidFromFile) ? pidFromFile : startedPid;
298
+ console.log(chalk.green(`✓ Daemon running · PID ${pid ?? "unknown"}`));
200
299
  }
201
300
  else {
202
- spinner.warn("Watcher started but daemon not responding yet");
301
+ console.log(chalk.red(" Daemon failed to start check ~/.hive/daemon.log."));
203
302
  }
204
- // Show status
205
303
  await runDaemonStatusCommand();
206
304
  }
207
305
  catch (error) {
@@ -214,7 +312,8 @@ export async function runDaemonStopCommand() {
214
312
  renderHiveHeader("Daemon Stop");
215
313
  const spinner = ora("Stopping Hive daemon...").start();
216
314
  try {
217
- const status = isDaemonRunning();
315
+ const pid = getDaemonPid();
316
+ const status = pid && isProcessAlive(pid) ? { running: true, pid } : { running: false };
218
317
  if (!status.running) {
219
318
  spinner.info("Daemon is not running");
220
319
  }
@@ -228,7 +327,7 @@ export async function runDaemonStopCommand() {
228
327
  await sendDaemonCommand({ type: "stop" }, port);
229
328
  spinner.text = "Stop command sent";
230
329
  }
231
- catch (error) {
330
+ catch {
232
331
  // May fail if daemon is already unresponsive
233
332
  spinner.info("TCP connection failed (daemon may be unresponsive)");
234
333
  }
@@ -236,14 +335,15 @@ export async function runDaemonStopCommand() {
236
335
  let waitTime = 0;
237
336
  const maxWait = 10000; // 10 seconds
238
337
  while (waitTime < maxWait) {
239
- if (!isDaemonRunning().running) {
338
+ const pidNow = getDaemonPid();
339
+ if (!pidNow || !isProcessAlive(pidNow)) {
240
340
  break;
241
341
  }
242
342
  await new Promise((resolve) => setTimeout(resolve, 100));
243
343
  waitTime += 100;
244
344
  }
245
345
  // Force kill if still running
246
- if (isDaemonRunning().running) {
346
+ if (status.running) {
247
347
  try {
248
348
  process.kill(status.pid, "SIGKILL");
249
349
  }
@@ -276,14 +376,15 @@ export async function runDaemonRestartCommand() {
276
376
  const spinner = ora("Restarting Hive daemon...").start();
277
377
  try {
278
378
  // Stop first (with sentinel to prevent auto-restart)
279
- const status = isDaemonRunning();
379
+ const pid = getDaemonPid();
380
+ const status = pid && isProcessAlive(pid) ? { running: true, pid } : { running: false };
280
381
  if (status.running) {
281
382
  fs.writeFileSync(DAEMON_STOP_SENTINEL, String(Date.now()));
282
383
  }
283
384
  // Kill daemon if still running
284
385
  if (status.running) {
285
386
  try {
286
- process.kill(status.pid, "SIGKILL");
387
+ process.kill(status.pid ?? 0, "SIGKILL");
287
388
  }
288
389
  catch {
289
390
  // Ignore
@@ -302,15 +403,27 @@ export async function runDaemonRestartCommand() {
302
403
  await runDaemonStartCommand();
303
404
  spinner.succeed("Daemon restarted");
304
405
  }
305
- catch (error) {
406
+ catch {
306
407
  spinner.fail("Failed to restart daemon");
307
- renderError(String(error));
308
- throw error;
408
+ renderError("Unknown error occurred");
409
+ throw new Error("Failed to restart daemon");
309
410
  }
310
411
  }
311
412
  export async function runDaemonStatusCommand() {
312
413
  renderHiveHeader("Daemon Status");
313
- const daemonStatus = isDaemonRunning();
414
+ const pidFromFile = getDaemonPid();
415
+ const pidAlive = pidFromFile ? isProcessAlive(pidFromFile) : false;
416
+ if (pidFromFile && !pidAlive) {
417
+ removeDaemonPidFile();
418
+ }
419
+ const port = getDaemonPort();
420
+ const tcpOk = pidAlive ? await canConnectTcp(port, 250) : false;
421
+ const daemonStatus = {
422
+ pid: pidAlive ? pidFromFile ?? undefined : undefined,
423
+ pidAlive,
424
+ tcpOk,
425
+ running: pidAlive && tcpOk,
426
+ };
314
427
  const watcherStatus = isWatcherRunning();
315
428
  // Get agent info from database
316
429
  let agentInfo = null;
@@ -344,7 +457,7 @@ export async function runDaemonStatusCommand() {
344
457
  let daemonStatusFromDaemon = null;
345
458
  if (daemonStatus.running) {
346
459
  try {
347
- daemonStatusFromDaemon = await sendDaemonCommand({ type: "status" }, getDaemonPort());
460
+ daemonStatusFromDaemon = await sendDaemonCommand({ type: "status" }, port);
348
461
  }
349
462
  catch {
350
463
  // Ignore
@@ -353,10 +466,18 @@ export async function runDaemonStatusCommand() {
353
466
  // Daemon status line
354
467
  let statusColor = chalk.green;
355
468
  let statusText = "running";
356
- if (!daemonStatus.running) {
469
+ if (!pidFromFile) {
470
+ statusColor = chalk.red;
471
+ statusText = "stopped";
472
+ }
473
+ else if (!pidAlive) {
357
474
  statusColor = chalk.red;
358
475
  statusText = "stopped";
359
476
  }
477
+ else if (!tcpOk) {
478
+ statusColor = chalk.yellow;
479
+ statusText = "unresponsive";
480
+ }
360
481
  // Heartbeat age
361
482
  let heartbeatAge = null;
362
483
  try {
@@ -392,12 +513,19 @@ export async function runDaemonStatusCommand() {
392
513
  watcherColor = chalk.green;
393
514
  }
394
515
  // Port
395
- const port = daemonStatusFromDaemon?.port || getDaemonPort();
516
+ const displayPort = daemonStatusFromDaemon?.port || port;
396
517
  // Uptime
397
518
  let uptime = "n/a";
398
519
  if (daemonStatusFromDaemon) {
399
- uptime = daemonStatusFromDaemon.uptime || "n/a";
520
+ uptime = typeof daemonStatusFromDaemon.uptime === "string" ? daemonStatusFromDaemon.uptime : "n/a";
400
521
  }
522
+ // Integrations
523
+ const integrations = (daemonStatusFromDaemon?.integrations ?? null);
524
+ const integrationsText = integrations
525
+ ? Object.entries(integrations)
526
+ .map(([k, v]) => `${k} ${v === "running" ? chalk.green("✓") : v === "disabled" ? chalk.gray("—") : chalk.red("✗")}`)
527
+ .join(" ")
528
+ : chalk.dim("n/a");
401
529
  console.log("");
402
530
  console.log(chalk.gray(" ◆ Daemon Status"));
403
531
  console.log(chalk.gray(" " + "─".repeat(28)));
@@ -408,8 +536,9 @@ export async function runDaemonStatusCommand() {
408
536
  console.log(` ${chalk.dim("· Provider ")} ${agentInfo?.provider ?? chalk.dim("none")} · ${agentInfo?.model ?? chalk.dim("none")}`);
409
537
  console.log(` ${chalk.dim("· Heartbeat ")} ${heartbeatAge ?? chalk.dim("unknown")}`);
410
538
  console.log(` ${chalk.dim("· Watcher ")} ${watcherColor(watcherText)}`);
539
+ console.log(` ${chalk.dim("· Integrations")} ${integrationsText}`);
411
540
  console.log(` ${chalk.dim("· Memory ")} ${memoryStats ? `${memoryStats.episodes} episodes · ${memoryStats.conversations} conversations` : chalk.dim("n/a")}`);
412
- console.log(` ${chalk.dim("· Port ")} ${chalk.white(`127.0.0.1:${port}`)}`);
541
+ console.log(` ${chalk.dim("· Port ")} ${chalk.white(`127.0.0.1:${displayPort}`)}`);
413
542
  console.log(` ${chalk.dim("· Log ")} ${chalk.dim(`${DAEMON_LOG_FILE} (${logSize})`)}`);
414
543
  console.log("");
415
544
  }
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../../src/cli/commands/daemon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../../src/cli/commands/daemon.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+BpC,UAAU,aAAa;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAYD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAO5D;AAED,wBAAsB,gBAAgB,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4KjF"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkCpC,UAAU,aAAa;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAYD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAO5D;AAED,wBAAsB,gBAAgB,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmMjF"}
@@ -1,17 +1,20 @@
1
1
  import * as fs from "node:fs";
2
2
  import { homedir } from "node:os";
3
3
  import { join } from "node:path";
4
+ import { createConnection } from "node:net";
4
5
  import process from "node:process";
5
6
  import Database from "better-sqlite3";
6
7
  import fetch from "node-fetch";
7
8
  import keytar from "keytar";
8
9
  import { normalizeProviderName } from "../../providers/base.js";
9
- import { closeHiveDatabase, getHiveDatabasePath, getHiveHomeDir, getMetaValue, getPrimaryAgent, } from "../../storage/db.js";
10
+ import { readAuthorizedConfig, readDisabledConfig } from "../../integrations/auth.js";
11
+ import { closeHiveDatabase, countTasksByStatus, getHiveDatabasePath, getHiveHomeDir, getMetaValue, getPrimaryAgent, } from "../../storage/db.js";
10
12
  import { BUILT_IN_THEMES, DEFAULT_THEME_HEX, DEFAULT_THEME_NAME, isValidHexColor, } from "../theme.js";
11
13
  import { renderError, renderHiveHeader, renderInfo, renderSuccess } from "../ui.js";
12
14
  const KEYCHAIN_SERVICE = "hive";
13
15
  const PROMPTS_DIRECTORY = "prompts";
14
16
  const CTX_DIRECTORY = "ctx";
17
+ const DEFAULT_DAEMON_PORT = 2718;
15
18
  const PROVIDER_PING_TIMEOUT_MS = 5_000;
16
19
  const OLLAMA_PING_TIMEOUT_MS = 5_000;
17
20
  const DB_SIZE_WARNING_BYTES = 100 * 1024 * 1024;
@@ -130,6 +133,31 @@ export async function runDoctorCommand(options = {}) {
130
133
  else {
131
134
  renderFailure("hive-ctx", hiveCtxCheck.message, counters);
132
135
  }
136
+ if (db) {
137
+ const taskCounts = countTasksByStatus(db);
138
+ const daemonStatus = await probeDaemonStatus();
139
+ const summary = `${taskCounts.queued} queued · ${taskCounts.running} running · ${taskCounts.done} done`;
140
+ if (taskCounts.queued + taskCounts.running > 0 && !daemonStatus) {
141
+ renderFailure("Task worker", `${summary} · daemon unreachable`, counters);
142
+ }
143
+ else if (daemonStatus) {
144
+ renderSuccess(formatCheckLine("Task worker", `${summary} · running`));
145
+ }
146
+ else {
147
+ renderSuccess(formatCheckLine("Task worker", `${summary} · idle`));
148
+ }
149
+ const integrations = await diagnoseIntegrations(daemonStatus);
150
+ if (integrations.warning) {
151
+ renderWarning("Integrations", integrations.summary, counters);
152
+ }
153
+ else {
154
+ renderSuccess(formatCheckLine("Integrations", integrations.summary));
155
+ }
156
+ renderInfo(formatInfoLine("Auth", integrations.authSummary));
157
+ }
158
+ else {
159
+ renderFailure("Task worker", "not checked (database unavailable)", counters);
160
+ }
133
161
  if (db) {
134
162
  const theme = resolveThemeDetails(db);
135
163
  renderSuccess(formatCheckLine("Theme", `${theme.name} ${theme.hex}`));
@@ -193,6 +221,50 @@ export async function runDoctorCommand(options = {}) {
193
221
  closeHiveDatabase(db);
194
222
  }
195
223
  }
224
+ async function diagnoseIntegrations(daemonStatus) {
225
+ const platforms = ["telegram", "whatsapp", "discord", "slack"];
226
+ const safeKeychainHas = async (account) => {
227
+ try {
228
+ const value = await keytar.getPassword(KEYCHAIN_SERVICE, account);
229
+ return Boolean(value && value.trim().length > 0);
230
+ }
231
+ catch {
232
+ return false;
233
+ }
234
+ };
235
+ const configured = {
236
+ telegram: await safeKeychainHas("telegram"),
237
+ discord: await safeKeychainHas("discord"),
238
+ slack: await safeKeychainHas("slack"),
239
+ whatsapp: fs.existsSync(join(getHiveHomeDir(), "integrations", "whatsapp", "session")),
240
+ };
241
+ const disabled = readDisabledConfig();
242
+ const auth = readAuthorizedConfig();
243
+ const running = (daemonStatus?.integrations ?? null);
244
+ const daemonReachable = Boolean(daemonStatus);
245
+ const parts = platforms.map((p) => {
246
+ if (disabled[p])
247
+ return `${p} disabled`;
248
+ if (!configured[p])
249
+ return `${p} not configured`;
250
+ const r = running?.[p];
251
+ if (r === "running")
252
+ return `${p} running`;
253
+ if (daemonReachable)
254
+ return `${p} ${r ?? "configured"}`;
255
+ return `${p} configured`;
256
+ });
257
+ const authSummary = platforms
258
+ .map((p) => `${p} ${auth[p]?.length ?? 0}`)
259
+ .join(" ");
260
+ const anyConfigured = Object.values(configured).some(Boolean);
261
+ const warning = anyConfigured && !daemonReachable;
262
+ return {
263
+ summary: parts.join(" · "),
264
+ authSummary,
265
+ warning,
266
+ };
267
+ }
196
268
  function checkDatabase(databasePath) {
197
269
  if (!fs.existsSync(databasePath)) {
198
270
  return {
@@ -368,6 +440,55 @@ async function checkHiveCtxStorage(ctxPath) {
368
440
  }
369
441
  return { ok: true, message: "storage ready" };
370
442
  }
443
+ async function probeDaemonStatus() {
444
+ const hiveHome = getHiveHomeDir();
445
+ const portFile = join(hiveHome, "daemon.port");
446
+ const port = readPortFile(portFile) ?? DEFAULT_DAEMON_PORT;
447
+ return new Promise((resolve) => {
448
+ const socket = createConnection({ host: "127.0.0.1", port }, () => {
449
+ socket.write(JSON.stringify({ type: "status" }) + "\n");
450
+ });
451
+ let buffer = "";
452
+ let responded = false;
453
+ socket.on("data", (data) => {
454
+ if (responded) {
455
+ return;
456
+ }
457
+ buffer += data.toString();
458
+ try {
459
+ const response = JSON.parse(buffer);
460
+ responded = true;
461
+ socket.end();
462
+ resolve(response);
463
+ }
464
+ catch {
465
+ // wait for more data
466
+ }
467
+ });
468
+ socket.on("error", () => {
469
+ if (!responded) {
470
+ socket.destroy();
471
+ resolve(null);
472
+ }
473
+ });
474
+ socket.setTimeout(500, () => {
475
+ if (!responded) {
476
+ socket.destroy();
477
+ resolve(null);
478
+ }
479
+ });
480
+ });
481
+ }
482
+ function readPortFile(portFile) {
483
+ try {
484
+ const raw = fs.readFileSync(portFile, "utf8").trim();
485
+ const port = Number.parseInt(raw, 10);
486
+ return Number.isFinite(port) ? port : null;
487
+ }
488
+ catch {
489
+ return null;
490
+ }
491
+ }
371
492
  function checkNodeVersion(version) {
372
493
  const major = parseNodeMajorVersion(version);
373
494
  if (major !== null && major >= NODE_MAJOR_WARNING_VERSION) {