volute 0.23.0 → 0.25.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.
Files changed (88) hide show
  1. package/README.md +5 -5
  2. package/dist/{activity-events-3WHHCOBB.js → activity-events-4O37J7PD.js} +2 -2
  3. package/dist/api.d.ts +419 -19
  4. package/dist/{channel-BOOMFULW.js → channel-HZOSHGNF.js} +1 -1
  5. package/dist/{chunk-QIXPN3OO.js → chunk-2767L2RZ.js} +5 -5
  6. package/dist/{chunk-SGPEZ32F.js → chunk-33XAVCS4.js} +16 -0
  7. package/dist/{chunk-VT5QODNE.js → chunk-3AIBT4TW.js} +4 -3
  8. package/dist/{chunk-A4S7H6G6.js → chunk-BFK6SOEJ.js} +1 -1
  9. package/dist/{chunk-RK627D57.js → chunk-BOTQ25QT.js} +3 -3
  10. package/dist/{chunk-TFS25FIM.js → chunk-DG7TO7EE.js} +31 -3
  11. package/dist/{chunk-HGCDWKSP.js → chunk-E7GOKNOT.js} +1 -1
  12. package/dist/{chunk-ISWZ6QUK.js → chunk-PMX4EIJK.js} +804 -115
  13. package/dist/{chunk-M5CNKH4J.js → chunk-SHSWYG2J.js} +7 -7
  14. package/dist/{chunk-XLC342FO.js → chunk-SIAG3QMM.js} +14 -1
  15. package/dist/{chunk-KFI7TQJ6.js → chunk-TRQEV3CD.js} +9 -5
  16. package/dist/{chunk-JG4CCJOA.js → chunk-ZSH4G2P5.js} +33 -15
  17. package/dist/cli.js +18 -18
  18. package/dist/{cloud-sync-PI47U2LT.js → cloud-sync-PPBBJDY6.js} +7 -9
  19. package/dist/{connector-PYT5UOTZ.js → connector-M6XFI6GM.js} +1 -1
  20. package/dist/{create-WIDA3M4C.js → create-VDQJER52.js} +1 -1
  21. package/dist/{daemon-client-ZHCDL4RS.js → daemon-client-JOVQZ52X.js} +1 -1
  22. package/dist/{daemon-restart-RMGOOGPE.js → daemon-restart-FDNOZEAD.js} +5 -5
  23. package/dist/daemon.js +1047 -981
  24. package/dist/{delete-LOIANQGD.js → delete-2MRR4JX5.js} +1 -1
  25. package/dist/{down-WSUASL5E.js → down-674SX2IZ.js} +2 -2
  26. package/dist/{env-4PHIHTF4.js → env-2FPOZK37.js} +1 -1
  27. package/dist/{export-XD6PJBQP.js → export-IKFAPRAO.js} +1 -1
  28. package/dist/{file-X4L5TTOL.js → file-KT3UIQM3.js} +1 -1
  29. package/dist/{history-HTEKRNID.js → history-46WZN5CN.js} +1 -1
  30. package/dist/{import-EAXTHHXL.js → import-TH26J76F.js} +2 -2
  31. package/dist/{log-SRO5Q6AD.js → log-6SGSSR3D.js} +1 -1
  32. package/dist/{logs-HNTNNBDW.js → logs-HRBONI5I.js} +1 -1
  33. package/dist/{merge-B6SYTGI7.js → merge-KSFJKX6T.js} +1 -1
  34. package/dist/{message-delivery-FHV4NO2F.js → message-delivery-XMGV3FUM.js} +6 -6
  35. package/dist/{mind-BTXR5B3C.js → mind-YVWAHL2A.js} +17 -17
  36. package/dist/{mind-activity-tracker-PGC3DBJ7.js → mind-activity-tracker-NMDDEV3K.js} +3 -3
  37. package/dist/{mind-manager-KMY4GA2J.js → mind-manager-4NDNAYAB.js} +2 -2
  38. package/dist/{mind-sleep-FWRBIFBS.js → mind-sleep-GHPTSAYN.js} +1 -1
  39. package/dist/{mind-wake-LJK2YU5X.js → mind-wake-BJDJFMDF.js} +1 -1
  40. package/dist/{package-CUBJ4PKS.js → package-3HF5MXU2.js} +2 -1
  41. package/dist/{pages-YSTRWJR4.js → pages-Y6DRWUOJ.js} +1 -1
  42. package/dist/{publish-BZNHKUUK.js → publish-EEKTZBHW.js} +1 -1
  43. package/dist/{pull-GRQAXM2E.js → pull-D32SPFVU.js} +1 -1
  44. package/dist/{restart-CIDAKGG2.js → restart-5BMNV7KU.js} +1 -1
  45. package/dist/{schedule-NLR3LZLY.js → schedule-YEFDLVMJ.js} +1 -1
  46. package/dist/{seed-3H2MRREW.js → seed-6FEKB3YC.js} +1 -1
  47. package/dist/{send-RP2TA7SG.js → send-IISDYFCL.js} +1 -1
  48. package/dist/{service-7BFXDI6J.js → service-FASYWLTC.js} +3 -3
  49. package/dist/{setup-SSIIXQMI.js → setup-BMLM2UTK.js} +1 -1
  50. package/dist/{shared-2OGT3NSL.js → shared-LWMNTTZN.js} +4 -4
  51. package/dist/{skill-Q2Y6PQ3L.js → skill-T3EMR6IR.js} +11 -3
  52. package/dist/skills/imagegen/SKILL.md +37 -0
  53. package/dist/skills/imagegen/references/INSTALL.md +13 -0
  54. package/dist/skills/imagegen/scripts/imagegen.ts +136 -0
  55. package/dist/skills/resonance/SKILL.md +73 -0
  56. package/dist/skills/resonance/assets/default-config.json +21 -0
  57. package/dist/skills/resonance/references/INSTALL.md +23 -0
  58. package/dist/skills/resonance/scripts/resonance.ts +1250 -0
  59. package/dist/skills/volute-mind/SKILL.md +94 -4
  60. package/dist/{sleep-manager-2TMQ65E4.js → sleep-manager-RKTFZPD3.js} +6 -6
  61. package/dist/{sprout-UKCYBGHK.js → sprout-QJVGJDSH.js} +3 -3
  62. package/dist/{start-JR6CUUWF.js → start-C7XITZ5O.js} +1 -1
  63. package/dist/{status-5XDGYHKP.js → status-LYS4NUOZ.js} +1 -1
  64. package/dist/{status-H2MKDN6L.js → status-SIRPLEZC.js} +4 -3
  65. package/dist/{stop-VKPGK25U.js → stop-CVKBSLXY.js} +1 -1
  66. package/dist/tailscale-AJ4VL5XK.js +49 -0
  67. package/dist/{up-Z5JRG2M2.js → up-CJ26KQLN.js} +2 -2
  68. package/dist/{update-ELC6MEUT.js → update-7XCZMYBT.js} +7 -7
  69. package/dist/{upgrade-GXW2EQY3.js → upgrade-7RUIXGOO.js} +1 -1
  70. package/dist/{variant-A4I7PHXS.js → variant-UGREB4G5.js} +4 -4
  71. package/dist/{version-notify-LKABEJSA.js → version-notify-AZQMC32A.js} +6 -6
  72. package/dist/web-assets/assets/index-CGPSVu19.js +69 -0
  73. package/dist/web-assets/assets/index-V_rNDsM8.css +1 -0
  74. package/dist/web-assets/favicon.png +0 -0
  75. package/dist/web-assets/index.html +5 -4
  76. package/dist/web-assets/logo.png +0 -0
  77. package/drizzle/0013_user_profiles.sql +3 -0
  78. package/drizzle/0014_conversation_reads.sql +7 -0
  79. package/drizzle/meta/0013_snapshot.json +7 -0
  80. package/drizzle/meta/_journal.json +14 -0
  81. package/package.json +2 -1
  82. package/templates/_base/home/public/.gitkeep +0 -0
  83. package/templates/_base/src/lib/format-prefix.ts +18 -2
  84. package/templates/_base/src/lib/routing.ts +2 -1
  85. package/templates/_base/src/lib/types.ts +8 -0
  86. package/dist/chunk-G5KRTU2F.js +0 -76
  87. package/dist/web-assets/assets/index-CZ26vsyY.js +0 -69
  88. package/dist/web-assets/assets/index-DyyAvJwW.css +0 -1
@@ -6,7 +6,7 @@ import {
6
6
  getDb,
7
7
  mindHistory,
8
8
  systemPrompts
9
- } from "./chunk-SGPEZ32F.js";
9
+ } from "./chunk-33XAVCS4.js";
10
10
  import {
11
11
  logger_default
12
12
  } from "./chunk-YUIHSKR6.js";
@@ -173,19 +173,19 @@ To reject, delete \${filePath}`,
173
173
  category: "mind"
174
174
  },
175
175
  pre_sleep: {
176
- content: "It's time to sleep. Save anything important to memory or your journal before resting.\nYou'll wake at ${wakeTime}. ${queuedInfo}",
176
+ content: "Time to rest. You have this turn to wind down however feels right \u2014 reflect on your day, update your journal or memory, finish any threads of thought, or simply settle.\n\nYour current session will be archived and a fresh one will begin when you wake. Anything in session context that isn't saved to files will be lost.\n\nYou'll wake at ${wakeTime}. ${queuedInfo}",
177
177
  description: "Pre-sleep message sent before stopping the mind",
178
178
  variables: ["wakeTime", "queuedInfo"],
179
179
  category: "system"
180
180
  },
181
181
  wake_summary: {
182
- content: "Good morning \u2014 it's ${currentDate}. You slept from ${sleepTime} to now (${duration}).\n${queuedSummary}",
182
+ content: "Good morning \u2014 it's ${currentDate}. You slept from ${sleepTime} to now (${duration}).\n\n${queuedSummary}",
183
183
  description: "Wake-up summary after scheduled sleep",
184
184
  variables: ["currentDate", "sleepTime", "duration", "queuedSummary"],
185
185
  category: "system"
186
186
  },
187
187
  wake_trigger_summary: {
188
- content: "You were woken at ${currentDate} by a message on ${triggerChannel}.\nYou've been sleeping since ${sleepTime} (${duration}). ${queuedSummary}\nYou'll go back to sleep after handling this.",
188
+ content: "You were woken during sleep by a message on ${triggerChannel}. It's ${currentDate} \u2014 you've been asleep since ${sleepTime} (${duration}).\n\nYou have this full turn to respond and handle anything else. You'll return to sleep when you go idle.\n\n${queuedSummary}",
189
189
  description: "Wake-up summary when woken by a trigger message",
190
190
  variables: ["currentDate", "triggerChannel", "sleepTime", "duration", "queuedSummary"],
191
191
  category: "system"
@@ -548,7 +548,7 @@ var MindManager = class {
548
548
  if (this.shuttingDown || this.stopping.has(name)) return;
549
549
  mlog.error(`mind ${name} exited with code ${code}`);
550
550
  try {
551
- const { getSleepManagerIfReady } = await import("./sleep-manager-2TMQ65E4.js");
551
+ const { getSleepManagerIfReady } = await import("./sleep-manager-RKTFZPD3.js");
552
552
  if (getSleepManagerIfReady()?.isSleeping(name)) {
553
553
  mlog.info(`${name} is sleeping \u2014 skipping crash recovery`);
554
554
  return;
@@ -556,8 +556,8 @@ var MindManager = class {
556
556
  } catch (err) {
557
557
  mlog.warn(`failed to check sleep state for ${name}`, logger_default.errorData(err));
558
558
  }
559
- import("./mind-activity-tracker-PGC3DBJ7.js").then(({ markIdle }) => markIdle(name)).catch((err) => mlog.warn(`failed to mark ${name} idle after crash`, logger_default.errorData(err)));
560
- import("./activity-events-3WHHCOBB.js").then(
559
+ import("./mind-activity-tracker-NMDDEV3K.js").then(({ markIdle }) => markIdle(name)).catch((err) => mlog.warn(`failed to mark ${name} idle after crash`, logger_default.errorData(err)));
560
+ import("./activity-events-4O37J7PD.js").then(
561
561
  ({ publish }) => publish({ type: "mind_stopped", mind: name, summary: `${name} crashed (exit ${code})` })
562
562
  ).catch((err) => mlog.warn(`failed to publish crash event for ${name}`, logger_default.errorData(err)));
563
563
  const { shouldRestart, delay, attempt } = this.restartTracker.recordCrash(name);
@@ -14,7 +14,20 @@ function readJson(path) {
14
14
  }
15
15
  function readVoluteConfig(mindDir) {
16
16
  const path = resolve(mindDir, "home/.config/volute.json");
17
- return readJson(path);
17
+ const config = readJson(path);
18
+ if (!config) return null;
19
+ const legacy = config;
20
+ if (!config.profile && ("displayName" in config || "description" in config || "avatar" in config)) {
21
+ config.profile = {
22
+ displayName: legacy.displayName,
23
+ description: legacy.description,
24
+ avatar: legacy.avatar
25
+ };
26
+ delete legacy.displayName;
27
+ delete legacy.description;
28
+ delete legacy.avatar;
29
+ }
30
+ return config;
18
31
  }
19
32
  function writeVoluteConfig(mindDir, config) {
20
33
  const path = resolve(mindDir, "home/.config/volute.json");
@@ -32,11 +32,15 @@ function readDaemonConfig() {
32
32
  }
33
33
  function buildUrl(config) {
34
34
  const url = new URL("http://localhost");
35
- let hostname = config.hostname || "localhost";
36
- if (hostname === "0.0.0.0") hostname = "127.0.0.1";
37
- if (hostname === "::") hostname = "[::1]";
38
- url.hostname = hostname;
39
- url.port = String(config.port);
35
+ url.port = String(config.internalPort ?? config.port);
36
+ if (config.internalPort) {
37
+ url.hostname = "127.0.0.1";
38
+ } else {
39
+ let hostname = config.hostname || "localhost";
40
+ if (hostname === "0.0.0.0") hostname = "127.0.0.1";
41
+ if (hostname === "::") hostname = "[::1]";
42
+ url.hostname = hostname;
43
+ }
40
44
  return url.origin;
41
45
  }
42
46
  async function daemonFetch(path, options) {
@@ -4,7 +4,7 @@ import {
4
4
  modeLabel,
5
5
  pollHealth,
6
6
  startService
7
- } from "./chunk-VT5QODNE.js";
7
+ } from "./chunk-3AIBT4TW.js";
8
8
  import {
9
9
  parseArgs
10
10
  } from "./chunk-D424ZQGI.js";
@@ -30,7 +30,8 @@ async function run(args) {
30
30
  const { flags } = parseArgs(args, {
31
31
  port: { type: "number" },
32
32
  host: { type: "string" },
33
- foreground: { type: "boolean" }
33
+ foreground: { type: "boolean" },
34
+ tailscale: { type: "boolean" }
34
35
  });
35
36
  const mode = getServiceMode();
36
37
  if (!flags.foreground && mode !== "manual") {
@@ -43,7 +44,7 @@ async function run(args) {
43
44
  }
44
45
  const config2 = readGlobalConfig();
45
46
  const h = flags.host ?? config2.hostname ?? "127.0.0.1";
46
- const p = flags.port ?? config2.port ?? 4200;
47
+ const p = flags.port ?? config2.port ?? 1618;
47
48
  if (await pollHealth(h, p)) {
48
49
  console.log(`Volute daemon running on ${h}:${p}`);
49
50
  } else {
@@ -53,7 +54,7 @@ async function run(args) {
53
54
  return;
54
55
  }
55
56
  const config = readGlobalConfig();
56
- const port = flags.port ?? config.port ?? 4200;
57
+ const port = flags.port ?? config.port ?? 1618;
57
58
  const hostname = flags.host ?? config.hostname ?? "127.0.0.1";
58
59
  const home = voluteHome();
59
60
  const pidPath = resolve(home, "daemon.pid");
@@ -67,6 +68,20 @@ async function run(args) {
67
68
  }
68
69
  }
69
70
  const pollHost = hostname === "0.0.0.0" || hostname === "::" ? "localhost" : hostname;
71
+ let tailscaleHostname;
72
+ if (flags.tailscale) {
73
+ try {
74
+ const { execFile } = await import("child_process");
75
+ const { promisify } = await import("util");
76
+ const execFileAsync = promisify(execFile);
77
+ const { stdout } = await execFileAsync("tailscale", ["status", "--json"]);
78
+ const status = JSON.parse(stdout);
79
+ tailscaleHostname = status.Self?.DNSName?.replace(/\.$/, "");
80
+ } catch (err) {
81
+ console.error(`Tailscale setup failed: ${err instanceof Error ? err.message : err}`);
82
+ process.exit(1);
83
+ }
84
+ }
70
85
  try {
71
86
  const res = await fetch(`http://${pollHost}:${port}/api/health`);
72
87
  if (res.ok) {
@@ -82,7 +97,7 @@ async function run(args) {
82
97
  }
83
98
  if (flags.foreground) {
84
99
  const { startDaemon } = await import("./daemon.js");
85
- await startDaemon({ port, hostname, foreground: true });
100
+ await startDaemon({ port, hostname, foreground: true, tailscale: flags.tailscale });
86
101
  return;
87
102
  }
88
103
  const daemonModule = resolve(dirname(new URL(import.meta.url).pathname), "daemon.js");
@@ -93,23 +108,26 @@ async function run(args) {
93
108
  mkdirSync(home, { recursive: true });
94
109
  const logFile = resolve(home, "daemon.log");
95
110
  const logFd = openSync(logFile, "a");
96
- const child = spawn(
97
- process.execPath,
98
- [daemonModule, "--port", String(port), "--host", hostname],
99
- {
100
- stdio: ["ignore", "ignore", logFd],
101
- detached: true
102
- }
103
- );
111
+ const daemonArgs = [daemonModule, "--port", String(port), "--host", hostname];
112
+ if (flags.tailscale) daemonArgs.push("--tailscale");
113
+ const child = spawn(process.execPath, daemonArgs, {
114
+ stdio: ["ignore", "ignore", logFd],
115
+ detached: true
116
+ });
104
117
  child.unref();
105
- const url = `http://${pollHost}:${port}/api/health`;
118
+ const pollPort = flags.tailscale ? port + 1 : port;
119
+ const url = `http://localhost:${pollPort}/api/health`;
106
120
  const maxWait = 3e4;
107
121
  const start = Date.now();
108
122
  while (Date.now() - start < maxWait) {
109
123
  try {
110
124
  const res = await fetch(url);
111
125
  if (res.ok) {
112
- console.log(`Volute daemon running on ${hostname}:${port} (pid ${child.pid})`);
126
+ const displayHost = tailscaleHostname ?? hostname;
127
+ const displayProto = flags.tailscale ? "https" : "http";
128
+ console.log(
129
+ `Volute daemon running on ${displayProto}://${displayHost}:${port} (pid ${child.pid})`
130
+ );
113
131
  console.log(`Logs: ${logFile}`);
114
132
  return;
115
133
  }
package/dist/cli.js CHANGED
@@ -9,61 +9,61 @@ if (!process.env.VOLUTE_HOME) {
9
9
  var command = process.argv[2];
10
10
  var args = process.argv.slice(3);
11
11
  if (command === "--version" || command === "-v") {
12
- const { default: pkg } = await import("./package-CUBJ4PKS.js");
12
+ const { default: pkg } = await import("./package-3HF5MXU2.js");
13
13
  console.log(pkg.version);
14
14
  process.exit(0);
15
15
  }
16
16
  switch (command) {
17
17
  case "mind":
18
- await import("./mind-BTXR5B3C.js").then((m) => m.run(args));
18
+ await import("./mind-YVWAHL2A.js").then((m) => m.run(args));
19
19
  break;
20
20
  case "send":
21
- await import("./send-RP2TA7SG.js").then((m) => m.run(args));
21
+ await import("./send-IISDYFCL.js").then((m) => m.run(args));
22
22
  break;
23
23
  case "history":
24
- await import("./history-HTEKRNID.js").then((m) => m.run(args));
24
+ await import("./history-46WZN5CN.js").then((m) => m.run(args));
25
25
  break;
26
26
  case "variant":
27
- await import("./variant-A4I7PHXS.js").then((m) => m.run(args));
27
+ await import("./variant-UGREB4G5.js").then((m) => m.run(args));
28
28
  break;
29
29
  case "channel":
30
- await import("./channel-BOOMFULW.js").then((m) => m.run(args));
30
+ await import("./channel-HZOSHGNF.js").then((m) => m.run(args));
31
31
  break;
32
32
  case "schedule":
33
- await import("./schedule-NLR3LZLY.js").then((m) => m.run(args));
33
+ await import("./schedule-YEFDLVMJ.js").then((m) => m.run(args));
34
34
  break;
35
35
  case "skill":
36
- await import("./skill-Q2Y6PQ3L.js").then((m) => m.run(args));
36
+ await import("./skill-T3EMR6IR.js").then((m) => m.run(args));
37
37
  break;
38
38
  case "shared":
39
- await import("./shared-2OGT3NSL.js").then((m) => m.run(args));
39
+ await import("./shared-LWMNTTZN.js").then((m) => m.run(args));
40
40
  break;
41
41
  case "file":
42
- await import("./file-X4L5TTOL.js").then((m) => m.run(args));
42
+ await import("./file-KT3UIQM3.js").then((m) => m.run(args));
43
43
  break;
44
44
  case "env":
45
- await import("./env-4PHIHTF4.js").then((m) => m.run(args));
45
+ await import("./env-2FPOZK37.js").then((m) => m.run(args));
46
46
  break;
47
47
  case "up":
48
- await import("./up-Z5JRG2M2.js").then((m) => m.run(args));
48
+ await import("./up-CJ26KQLN.js").then((m) => m.run(args));
49
49
  break;
50
50
  case "down":
51
- await import("./down-WSUASL5E.js").then((m) => m.run(args));
51
+ await import("./down-674SX2IZ.js").then((m) => m.run(args));
52
52
  break;
53
53
  case "restart":
54
- await import("./daemon-restart-RMGOOGPE.js").then((m) => m.run(args));
54
+ await import("./daemon-restart-FDNOZEAD.js").then((m) => m.run(args));
55
55
  break;
56
56
  case "service":
57
- await import("./service-7BFXDI6J.js").then((m) => m.run(args));
57
+ await import("./service-FASYWLTC.js").then((m) => m.run(args));
58
58
  break;
59
59
  case "update":
60
- await import("./update-ELC6MEUT.js").then((m) => m.run(args));
60
+ await import("./update-7XCZMYBT.js").then((m) => m.run(args));
61
61
  break;
62
62
  case "status":
63
- await import("./status-H2MKDN6L.js").then((m) => m.run(args));
63
+ await import("./status-SIRPLEZC.js").then((m) => m.run(args));
64
64
  break;
65
65
  case "pages":
66
- await import("./pages-YSTRWJR4.js").then((m) => m.run(args));
66
+ await import("./pages-Y6DRWUOJ.js").then((m) => m.run(args));
67
67
  break;
68
68
  case "auth":
69
69
  await import("./auth-HM2RSPY7.js").then((m) => m.run(args));
@@ -1,18 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
+ deliverMessage,
3
4
  getAuthHeaders,
4
5
  getWebhookUrl
5
- } from "./chunk-G5KRTU2F.js";
6
- import {
7
- deliverMessage
8
- } from "./chunk-ISWZ6QUK.js";
6
+ } from "./chunk-PMX4EIJK.js";
9
7
  import "./chunk-HFCBO2GL.js";
10
- import "./chunk-HGCDWKSP.js";
11
- import "./chunk-A4S7H6G6.js";
12
- import "./chunk-M5CNKH4J.js";
13
- import "./chunk-XLC342FO.js";
8
+ import "./chunk-E7GOKNOT.js";
9
+ import "./chunk-BFK6SOEJ.js";
10
+ import "./chunk-SHSWYG2J.js";
11
+ import "./chunk-SIAG3QMM.js";
14
12
  import "./chunk-PHU4DEAJ.js";
15
- import "./chunk-SGPEZ32F.js";
13
+ import "./chunk-33XAVCS4.js";
16
14
  import {
17
15
  logger_default
18
16
  } from "./chunk-YUIHSKR6.js";
@@ -14,7 +14,7 @@ import {
14
14
  } from "./chunk-D424ZQGI.js";
15
15
  import {
16
16
  daemonFetch
17
- } from "./chunk-KFI7TQJ6.js";
17
+ } from "./chunk-TRQEV3CD.js";
18
18
  import "./chunk-B2CPS4QU.js";
19
19
  import "./chunk-K3NQKI34.js";
20
20
 
@@ -17,7 +17,7 @@ async function run(args) {
17
17
  process.exit(1);
18
18
  }
19
19
  const skills = flags.skills === "none" ? [] : flags.skills ? flags.skills.split(",") : void 0;
20
- const { daemonFetch } = await import("./daemon-client-ZHCDL4RS.js");
20
+ const { daemonFetch } = await import("./daemon-client-JOVQZ52X.js");
21
21
  const { getClient, urlOf } = await import("./api-client-YPKOZP2O.js");
22
22
  const client = getClient();
23
23
  const res = await daemonFetch(urlOf(client.api.minds.$url()), {
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  daemonFetch
4
- } from "./chunk-KFI7TQJ6.js";
4
+ } from "./chunk-TRQEV3CD.js";
5
5
  import "./chunk-B2CPS4QU.js";
6
6
  import "./chunk-K3NQKI34.js";
7
7
  export {
@@ -1,17 +1,17 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  run
4
- } from "./chunk-JG4CCJOA.js";
4
+ } from "./chunk-ZSH4G2P5.js";
5
5
  import {
6
6
  stopDaemon
7
- } from "./chunk-QIXPN3OO.js";
7
+ } from "./chunk-2767L2RZ.js";
8
8
  import {
9
9
  getServiceMode,
10
10
  modeLabel,
11
11
  pollHealth,
12
12
  readDaemonConfig,
13
13
  restartService
14
- } from "./chunk-VT5QODNE.js";
14
+ } from "./chunk-3AIBT4TW.js";
15
15
  import "./chunk-D424ZQGI.js";
16
16
  import "./chunk-JTDFJWI2.js";
17
17
  import "./chunk-NWPT4ASZ.js";
@@ -29,8 +29,8 @@ async function run2(args) {
29
29
  console.error(`Failed to restart service: ${err instanceof Error ? err.message : err}`);
30
30
  process.exit(1);
31
31
  }
32
- const { hostname, port } = readDaemonConfig();
33
- if (await pollHealth(hostname, port)) {
32
+ const config = readDaemonConfig();
33
+ if (await pollHealth("127.0.0.1", config.internalPort ?? config.port)) {
34
34
  console.log("Daemon restarted.");
35
35
  } else {
36
36
  console.error("Service restarted but daemon did not become healthy within 30s.");