skykoi 2026.3.372 → 2026.3.374

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 (98) hide show
  1. package/dist/{archive-CvVr15c3.js → archive-B3eMefRa.js} +1 -1
  2. package/dist/{audit-BhMw948Z.js → audit--3nZ378U.js} +3 -3
  3. package/dist/build-info.json +2 -2
  4. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  5. package/dist/{capture-cli-DpZ59sFU.js → capture-cli-ClZem-s-.js} +2 -2
  6. package/dist/{capture-service-C2YTzojU.js → capture-service-c4LFLVLD.js} +13 -59
  7. package/dist/capture-store-CW4hVLPX.js +66 -0
  8. package/dist/{channel-auth-DrJ2FCUT.js → channel-auth-Bu3z5Shg.js} +1 -1
  9. package/dist/{channel-options-CEI6AY4_.js → channel-options-DAkRGG8X.js} +1 -1
  10. package/dist/{channel-summary-Bpd0YaF9.js → channel-summary-BtotMHWQ.js} +2 -2
  11. package/dist/{channels-cli-Uen69Af9.js → channels-cli-DbBQzBzA.js} +21 -21
  12. package/dist/cli/daemon-cli.js +1 -1
  13. package/dist/{cli-Brw92j9E.js → cli-Dnh2IunR.js} +13 -13
  14. package/dist/{completion-cli-BHeSyCbm.js → completion-cli-DeQHSQKl.js} +1 -1
  15. package/dist/{config-guard-D_JgBdua.js → config-guard-r91G-rdb.js} +17 -17
  16. package/dist/{configure-B-ftdG9Z.js → configure-D9DlCvVy.js} +3 -3
  17. package/dist/{daemon-cli-CnddRCfX.js → daemon-cli-v5-R4zAv.js} +2 -2
  18. package/dist/{deliver-DJbxwsAM.js → deliver-DOHMG5Rz.js} +2 -2
  19. package/dist/{deps-Bw3HFVDz.js → deps-C40AV7FF.js} +2 -2
  20. package/dist/{dist-BYg0IiMA.js → dist-B0taJfp8.js} +2 -2
  21. package/dist/{docs-cli-r0Lv1ZYz.js → docs-cli-CHKUuL2d.js} +2 -2
  22. package/dist/{doctor-B1LZ6HYC.js → doctor-1TF44mR_.js} +6 -6
  23. package/dist/{doctor-completion-nuT3JOzC.js → doctor-completion-ahDb_IAk.js} +1 -1
  24. package/dist/entry.js +1 -1
  25. package/dist/{exec-approvals-cli-BNKVs16y.js → exec-approvals-cli-C05rnH9F.js} +2 -2
  26. package/dist/extension-api.js +13 -13
  27. package/dist/{gateway-cli-CEeaSrZL.js → gateway-cli-CIJ-Jgx4.js} +47 -47
  28. package/dist/{github-copilot-auth-DtB8cjB9.js → github-copilot-auth-CAM7sDl5.js} +1 -1
  29. package/dist/{gmail-setup-utils-DI2DjT9y.js → gmail-setup-utils-B6W2qrNw.js} +1 -1
  30. package/dist/{health-format-CaHzb0Cj.js → health-format-1k8pCgq2.js} +4 -4
  31. package/dist/{hooks-cli-kj3UD3EH.js → hooks-cli-qBcTlRwr.js} +16 -16
  32. package/dist/{hooks-status-B0H9mn8K.js → hooks-status-BDYS1g53.js} +1 -1
  33. package/dist/{image-CZ_X0a5U.js → image-C3E9B7uU.js} +2 -2
  34. package/dist/index.js +37 -37
  35. package/dist/{installs-D47ded8C.js → installs-BJYE96Lb.js} +1 -1
  36. package/dist/{koi-CWTJU-v1.js → koi-BZaNuNu7.js} +7 -7
  37. package/dist/{login-C71-L2cR.js → login-Cjb8NlG3.js} +1 -1
  38. package/dist/{login-qr-CFZIqrOV.js → login-qr-Zk90haay.js} +3 -3
  39. package/dist/{logs-cli-CNHbspO1.js → logs-cli-BCrmp8yo.js} +1 -1
  40. package/dist/{message-0gwe6UQ4.js → message-C-Jhw-K2.js} +2 -2
  41. package/dist/{models-cli-Dh_hSlpD.js → models-cli-CLwvmF5F.js} +14 -14
  42. package/dist/{node-cli-BH74iN-U.js → node-cli-CZMWmnHC.js} +2 -2
  43. package/dist/{nodes-cli-pjuHjNxb.js → nodes-cli-DwqW2k2v.js} +1 -1
  44. package/dist/{onboard-channels-HevjIHaS.js → onboard-channels-BjveHxG_.js} +2 -2
  45. package/dist/{onboard-skills-DHyNGIax.js → onboard-skills-pW0A8mDR.js} +6 -6
  46. package/dist/{onboarding-BD5BnV_9.js → onboarding-DtFQKsiq.js} +12 -12
  47. package/dist/{pi-embedded-helpers-VJ9hOBTv.js → pi-embedded-helpers-BMPkPwKV.js} +1 -1
  48. package/dist/{pi-model-discovery-1FYyRpLv.js → pi-model-discovery-FK8jErRV.js} +1 -1
  49. package/dist/{pi-tools.policy-DXLhV6cY.js → pi-tools.policy-BSGwpKU_.js} +1 -1
  50. package/dist/{plugin-registry-2wBo492w.js → plugin-registry-Ck8UGGLF.js} +1 -1
  51. package/dist/plugin-sdk/capture/proactive-eval.d.ts +3 -0
  52. package/dist/{plugins-cli-Brc-TF8o.js → plugins-cli-BmnU4zO0.js} +17 -17
  53. package/dist/proactive-eval-tdXZlkTF.js +265 -0
  54. package/dist/{program-CDcgY79e.js → program-BzgFh3Jk.js} +5 -5
  55. package/dist/{register.subclis-CyIrQbCu.js → register.subclis-C25mLHRU.js} +29 -29
  56. package/dist/{reply-DfvgJktO.js → reply-BZDAeRWS.js} +21 -21
  57. package/dist/{run-code-tool-D74Nw_Bq.js → run-code-tool-DgaptjNR.js} +1 -1
  58. package/dist/{run-main-DkjKHbpT.js → run-main-C0vdUtdQ.js} +41 -41
  59. package/dist/{sandbox-o5syhP4X.js → sandbox-Cboj7RQq.js} +2 -2
  60. package/dist/{sandbox-cli--yqf6YWR.js → sandbox-cli-BoG9q8K8.js} +4 -4
  61. package/dist/{security-cli-uhnLz-Ja.js → security-cli-CsNo3tNp.js} +6 -6
  62. package/dist/{server-node-events-yZgBPm8w.js → server-node-events-WMJod-Kq.js} +16 -16
  63. package/dist/{sessions-Cz4LlZH7.js → sessions-Bx2VARI1.js} +1 -1
  64. package/dist/{skills-BQWFFLxf.js → skills-Dh0SDBuy.js} +1 -1
  65. package/dist/{skills-cli-Dt8ELJM1.js → skills-cli-CAXNWDve.js} +3 -3
  66. package/dist/{skills-status-DakSfN8r.js → skills-status-zrpOQ6N9.js} +2 -2
  67. package/dist/{status-BrAYDdEe.js → status-TNpgkQma.js} +1 -1
  68. package/dist/{system-prompt-snippet-FxPx8VEt.js → system-prompt-snippet-DxhEuu4G.js} +1 -1
  69. package/dist/{tui-C8LwqY_j.js → tui-BJ7QDpZm.js} +4 -4
  70. package/dist/{tui-cli-YO24Pqdj.js → tui-cli-KHXEdWJ7.js} +7 -7
  71. package/dist/{update-KwCwTRxy.js → update-JQD9EQfX.js} +1 -1
  72. package/dist/{update-cli-D7AKtAEq.js → update-cli-DJvQzPMV.js} +25 -25
  73. package/dist/{webhooks-cli-YtxhryoY.js → webhooks-cli-COnzIihM.js} +3 -3
  74. package/package.json +1 -1
  75. /package/dist/{acp-cli-C7nH-mUZ.js → acp-cli-BV955-GX.js} +0 -0
  76. /package/dist/{cli-auto-update-BSNWMzZE.js → cli-auto-update-BcTBKikF.js} +0 -0
  77. /package/dist/{companions-CKOThEgi.js → companions-yGGfCit3.js} +0 -0
  78. /package/dist/{cron-cli-DzmymUA7.js → cron-cli-BmfGLNRg.js} +0 -0
  79. /package/dist/{declarations-txVRgjnT.js → declarations-B_Cov-W-.js} +0 -0
  80. /package/dist/{devices-cli-a6-CLK54.js → devices-cli-BVkazJ4w.js} +0 -0
  81. /package/dist/{directory-cli-DPAYFy8b.js → directory-cli-DcARszmY.js} +0 -0
  82. /package/dist/{dns-cli-BobgWXsc.js → dns-cli-BUdTrB_Z.js} +0 -0
  83. /package/dist/{first-run-Bb6RNHap.js → first-run-Clv7YnAC.js} +0 -0
  84. /package/dist/{koi-event-bridge-CTX2a4P-.js → koi-event-bridge-BWU_Rwh9.js} +0 -0
  85. /package/dist/{koi-utterance-trigger-D66MHqif.js → koi-utterance-trigger-DujDdolf.js} +0 -0
  86. /package/dist/{live-broadcast-B6skCJhb.js → live-broadcast-4WHT3Ttd.js} +0 -0
  87. /package/dist/{pairing-cli-DPrJbN-i.js → pairing-cli-YCG-zMZV.js} +0 -0
  88. /package/dist/{parse-log-line-cWE1HOyo.js → parse-log-line-BOe9IEjO.js} +0 -0
  89. /package/dist/{permissions-cli-BYFx1IyL.js → permissions-cli-DIjlNmoA.js} +0 -0
  90. /package/dist/{qmd-manager-CdAsstkR.js → qmd-manager-C4GhIhEk.js} +0 -0
  91. /package/dist/{readiness-IQ3DZmUE.js → readiness-CV3vZbo6.js} +0 -0
  92. /package/dist/{rpc-b0oa4lBw.js → rpc-fRk3LjKi.js} +0 -0
  93. /package/dist/{runner-F6kH3AsJ.js → runner-BKZKGx9n.js} +0 -0
  94. /package/dist/{shared-Dn4Lf8u-.js → shared-BJlh4CKo.js} +0 -0
  95. /package/dist/{shared-DNbcd3wi.js → shared-CwLJrrHf.js} +0 -0
  96. /package/dist/{status-BLjOBDvD.js → status-BN46BKoK.js} +0 -0
  97. /package/dist/{system-cli-B3fxMt3N.js → system-cli-QvhzOcHc.js} +0 -0
  98. /package/dist/{ws-log--YWgaGe1.js → ws-log-C9-8BLr6.js} +0 -0
@@ -1,5 +1,5 @@
1
1
  import { i as __require, o as __toESM, t as __commonJSMin } from "./chunk-D_gEzPfs.js";
2
- import { mt as require_inherits } from "./reply-DfvgJktO.js";
2
+ import { mt as require_inherits } from "./reply-BZDAeRWS.js";
3
3
  import path from "node:path";
4
4
  import fs from "node:fs/promises";
5
5
  import * as tar from "tar";
@@ -6,15 +6,15 @@ import { t as formatCliCommand } from "./command-format-DOYW_19_.js";
6
6
  import { O as INCLUDE_KEY, a as createConfigIO, k as MAX_INCLUDE_DEPTH } from "./config-BFoj5wyy.js";
7
7
  import { a as MANIFEST_KEY } from "./manifest-registry-DEGu_o5t.js";
8
8
  import { n as listChannelPlugins } from "./plugins-BXfIVhTg.js";
9
- import { d as resolveSandboxToolPolicyForKoi, l as resolveSandboxConfigForKoi } from "./sandbox-o5syhP4X.js";
9
+ import { d as resolveSandboxToolPolicyForKoi, l as resolveSandboxConfigForKoi } from "./sandbox-Cboj7RQq.js";
10
10
  import { s as resolveToolProfilePolicy } from "./tool-policy-D7sC9oiD.js";
11
- import { i as loadWorkspaceSkillEntries } from "./skills-BQWFFLxf.js";
11
+ import { i as loadWorkspaceSkillEntries } from "./skills-Dh0SDBuy.js";
12
12
  import { i as resolveBrowserConfig, o as resolveProfile } from "./server-context-Co6-risd.js";
13
13
  import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-CaDAAMe0.js";
14
14
  import { n as GatewayClient } from "./client-QUeLEngh.js";
15
15
  import { t as buildGatewayConnectionDetails } from "./call-C9iXIbXI.js";
16
16
  import { i as readChannelAllowFromStore } from "./pairing-store-DtLK_KGs.js";
17
- import { c as resolveNativeSkillsEnabled, n as isToolAllowedByPolicies, s as resolveNativeCommandsEnabled } from "./pi-tools.policy-DXLhV6cY.js";
17
+ import { c as resolveNativeSkillsEnabled, n as isToolAllowedByPolicies, s as resolveNativeCommandsEnabled } from "./pi-tools.policy-BSGwpKU_.js";
18
18
  import { t as resolveChannelDefaultAccountId } from "./helpers-y1KKH5pe.js";
19
19
  import { t as scanDirectoryWithSummary } from "./skill-scanner-CBHxr1An.js";
20
20
  import { i as resolveGatewayAuth } from "./auth-Vh115fQN.js";
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2026.3.372",
2
+ "version": "2026.3.374",
3
3
  "commit": "4bd60b7c1b294bb24b257d2f381ec929031df39c",
4
- "builtAt": "2026-06-25T10:24:30.408Z"
4
+ "builtAt": "2026-06-25T19:15:29.564Z"
5
5
  }
@@ -1 +1 @@
1
- 000033e87eeeb8596353e34bbdfed8cdced2ef9408c80a09ee3940c9595f3ae5
1
+ 4454242969ea3dda6b91dc838452afac20837a61a0ded3f366d2c6668cf546d4
@@ -18,7 +18,7 @@ function daemonBinary() {
18
18
  }
19
19
  function isDaemonRunning() {
20
20
  try {
21
- return execFileSync("pgrep", ["-f", "input-daemon"], {
21
+ return execFileSync("pgrep", ["-x", "input-daemon"], {
22
22
  encoding: "utf8",
23
23
  timeout: 3e3
24
24
  }).trim().length > 0;
@@ -77,7 +77,7 @@ function registerCaptureCli(program) {
77
77
  });
78
78
  cmd.command("stop").description("Stop the input capture daemon").action(async () => {
79
79
  try {
80
- execFileSync("pkill", ["-f", "input-daemon"], { timeout: 3e3 });
80
+ execFileSync("pkill", ["-x", "input-daemon"], { timeout: 3e3 });
81
81
  console.log("Input daemon stopped.");
82
82
  } catch {
83
83
  console.log("Input daemon was not running.");
@@ -1,4 +1,5 @@
1
- import { appendFileSync, closeSync, copyFileSync, createReadStream, existsSync, mkdirSync, openSync, readFileSync, readSync, statSync, unlinkSync, watch, writeFileSync } from "node:fs";
1
+ import { i as pushCaptureEvent, n as flushToDisk, r as getAllEvents, t as drainEvents } from "./capture-store-CW4hVLPX.js";
2
+ import { closeSync, copyFileSync, createReadStream, existsSync, openSync, readFileSync, readSync, statSync, unlinkSync, watch, writeFileSync } from "node:fs";
2
3
  import { dirname, extname, join, relative } from "node:path";
3
4
  import { homedir } from "node:os";
4
5
  import { execFile, execFileSync, execSync, spawn } from "node:child_process";
@@ -162,60 +163,6 @@ function captureTerminalDiffs(previous, current) {
162
163
  };
163
164
  }
164
165
 
165
- //#endregion
166
- //#region src/capture/capture-store.ts
167
- /**
168
- * Capture event store.
169
- *
170
- * Unbounded in-memory buffer that accumulates ALL events between koi turns.
171
- * On each turn, `drainEvents()` returns everything and resets the buffer.
172
- * Events are also flushed to disk periodically for historical queries.
173
- */
174
- const MAX_DISK_BYTES = 10 * 1024 * 1024;
175
- const STORE_DIR = join(homedir(), ".skykoi", "capture");
176
- let events = [];
177
- let flushedUpTo = 0;
178
- let initialized = false;
179
- function ensureDir() {
180
- if (initialized) return;
181
- try {
182
- mkdirSync(STORE_DIR, { recursive: true });
183
- } catch {}
184
- initialized = true;
185
- }
186
- function pushCaptureEvent(event) {
187
- events.push(event);
188
- }
189
- /**
190
- * Drain: return all events and clear the buffer.
191
- * Called after injecting into a koi turn so the next turn starts fresh.
192
- */
193
- function drainEvents() {
194
- const out = events;
195
- events = [];
196
- flushedUpTo = 0;
197
- return out;
198
- }
199
- /**
200
- * Flush new events to disk (append-only, does NOT clear the in-memory buffer).
201
- */
202
- function flushToDisk() {
203
- if (events.length === 0 || flushedUpTo >= events.length) return;
204
- ensureDir();
205
- const file = join(STORE_DIR, `${(/* @__PURE__ */ new Date()).toISOString().slice(0, 10)}.jsonl`);
206
- try {
207
- const toFlush = events.slice(flushedUpTo);
208
- flushedUpTo = events.length;
209
- appendFileSync(file, toFlush.map((e) => JSON.stringify(e)).join("\n") + "\n");
210
- try {
211
- if (statSync(file).size > MAX_DISK_BYTES) {
212
- const allLines = readFileSync(file, "utf8").trim().split("\n");
213
- writeFileSync(file, allLines.slice(-Math.floor(allLines.length / 2)).join("\n") + "\n");
214
- }
215
- } catch {}
216
- } catch {}
217
- }
218
-
219
166
  //#endregion
220
167
  //#region src/capture/input-capture.ts
221
168
  /**
@@ -241,7 +188,7 @@ function daemonBinary$1() {
241
188
  }
242
189
  function isDaemonRunning$1() {
243
190
  try {
244
- return execFileSync("pgrep", ["-f", "input-daemon"], {
191
+ return execFileSync("pgrep", ["-x", "input-daemon"], {
245
192
  encoding: "utf8",
246
193
  timeout: 3e3
247
194
  }).trim().length > 0;
@@ -1481,7 +1428,7 @@ function daemonBinary() {
1481
1428
  }
1482
1429
  function isDaemonRunning() {
1483
1430
  try {
1484
- return execFileSync("pgrep", ["-f", "audio-daemon"], {
1431
+ return execFileSync("pgrep", ["-x", "audio-daemon"], {
1485
1432
  encoding: "utf8",
1486
1433
  timeout: 3e3
1487
1434
  }).trim().length > 0;
@@ -1520,7 +1467,7 @@ function startAudioCapture() {
1520
1467
  console.log("[capture] Audio daemon already running");
1521
1468
  return { stop: () => {
1522
1469
  try {
1523
- execFileSync("pkill", ["-f", "audio-daemon"], { timeout: 3e3 });
1470
+ execFileSync("pkill", ["-x", "audio-daemon"], { timeout: 3e3 });
1524
1471
  } catch {}
1525
1472
  } };
1526
1473
  }
@@ -1553,7 +1500,7 @@ function startAudioCapture() {
1553
1500
  process.kill(pid, "SIGTERM");
1554
1501
  } catch {}
1555
1502
  try {
1556
- execFileSync("pkill", ["-f", "audio-daemon"], { timeout: 3e3 });
1503
+ execFileSync("pkill", ["-x", "audio-daemon"], { timeout: 3e3 });
1557
1504
  } catch {}
1558
1505
  } };
1559
1506
  }
@@ -2103,6 +2050,13 @@ async function startCaptureService(opts) {
2103
2050
  } catch (err) {
2104
2051
  console.error(`[capture] Audio capture failed to start: ${err}`);
2105
2052
  }
2053
+ try {
2054
+ const { startProactiveEval } = await import("./proactive-eval-tdXZlkTF.js");
2055
+ const proactiveHandle = startProactiveEval();
2056
+ stops.push(proactiveHandle.stop);
2057
+ } catch (err) {
2058
+ console.error(`[capture] Proactive eval failed to start: ${err}`);
2059
+ }
2106
2060
  const flushTimer = setInterval(() => {
2107
2061
  if (!stopped) flushToDisk();
2108
2062
  }, FLUSH_INTERVAL_MS);
@@ -0,0 +1,66 @@
1
+ import { appendFileSync, existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { homedir } from "node:os";
4
+
5
+ //#region src/capture/capture-store.ts
6
+ /**
7
+ * Capture event store.
8
+ *
9
+ * Unbounded in-memory buffer that accumulates ALL events between koi turns.
10
+ * On each turn, `drainEvents()` returns everything and resets the buffer.
11
+ * Events are also flushed to disk periodically for historical queries.
12
+ */
13
+ const MAX_DISK_BYTES = 10 * 1024 * 1024;
14
+ const STORE_DIR = join(homedir(), ".skykoi", "capture");
15
+ let events = [];
16
+ let flushedUpTo = 0;
17
+ let initialized = false;
18
+ function ensureDir() {
19
+ if (initialized) return;
20
+ try {
21
+ mkdirSync(STORE_DIR, { recursive: true });
22
+ } catch {}
23
+ initialized = true;
24
+ }
25
+ function pushCaptureEvent(event) {
26
+ events.push(event);
27
+ }
28
+ /**
29
+ * Get ALL events accumulated since the last drain (i.e. since the last koi turn).
30
+ * Returns oldest-first (chronological).
31
+ */
32
+ function getAllEvents() {
33
+ return events.slice();
34
+ }
35
+ /**
36
+ * Drain: return all events and clear the buffer.
37
+ * Called after injecting into a koi turn so the next turn starts fresh.
38
+ */
39
+ function drainEvents() {
40
+ const out = events;
41
+ events = [];
42
+ flushedUpTo = 0;
43
+ return out;
44
+ }
45
+ /**
46
+ * Flush new events to disk (append-only, does NOT clear the in-memory buffer).
47
+ */
48
+ function flushToDisk() {
49
+ if (events.length === 0 || flushedUpTo >= events.length) return;
50
+ ensureDir();
51
+ const file = join(STORE_DIR, `${(/* @__PURE__ */ new Date()).toISOString().slice(0, 10)}.jsonl`);
52
+ try {
53
+ const toFlush = events.slice(flushedUpTo);
54
+ flushedUpTo = events.length;
55
+ appendFileSync(file, toFlush.map((e) => JSON.stringify(e)).join("\n") + "\n");
56
+ try {
57
+ if (statSync(file).size > MAX_DISK_BYTES) {
58
+ const allLines = readFileSync(file, "utf8").trim().split("\n");
59
+ writeFileSync(file, allLines.slice(-Math.floor(allLines.length / 2)).join("\n") + "\n");
60
+ }
61
+ } catch {}
62
+ } catch {}
63
+ }
64
+
65
+ //#endregion
66
+ export { pushCaptureEvent as i, flushToDisk as n, getAllEvents as r, drainEvents as t };
@@ -2,7 +2,7 @@ import { b as success, f as danger, k as DEFAULT_CHAT_CHANNEL, p as info, s as d
2
2
  import { o as loadConfig } from "./config-BFoj5wyy.js";
3
3
  import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-BXfIVhTg.js";
4
4
  import { d as webAuthExists, n as resolveWhatsAppAccount, s as readWebSelfId } from "./accounts-DFSZwaCs.js";
5
- import { C as sendMessage$1, S as resolveNylasConfig, T as writeNylasGrant, _ as nylasLinked, g as nylasConfigured, l as DEFAULT_NYLAS_API_URI, t as sendMessage, x as readNylasGrant } from "./message-0gwe6UQ4.js";
5
+ import { C as sendMessage$1, S as resolveNylasConfig, T as writeNylasGrant, _ as nylasLinked, g as nylasConfigured, l as DEFAULT_NYLAS_API_URI, t as sendMessage, x as readNylasGrant } from "./message-C-Jhw-K2.js";
6
6
  import { t as resolveChannelDefaultAccountId } from "./helpers-y1KKH5pe.js";
7
7
  import { t as ensureLocalGatewayRunning } from "./ensure-local-gateway-VbJtdpui.js";
8
8
  import process from "node:process";
@@ -2,7 +2,7 @@ import { O as CHAT_CHANNEL_ORDER } from "./subsystem-hATE68va.js";
2
2
  import { t as isTruthyEnvValue } from "./env-ChCKTuXK.js";
3
3
  import { n as listChannelPlugins } from "./plugins-BXfIVhTg.js";
4
4
  import { i as listChannelPluginCatalogEntries } from "./plugin-auto-enable-Cg3LRidd.js";
5
- import { t as ensurePluginRegistryLoaded } from "./plugin-registry-2wBo492w.js";
5
+ import { t as ensurePluginRegistryLoaded } from "./plugin-registry-Ck8UGGLF.js";
6
6
 
7
7
  //#region src/cli/channel-options.ts
8
8
  function dedupe(values) {
@@ -1,11 +1,11 @@
1
- import { L as listThinkingLevels, m as formatRawAssistantErrorForUi } from "./pi-embedded-helpers-VJ9hOBTv.js";
1
+ import { L as listThinkingLevels, m as formatRawAssistantErrorForUi } from "./pi-embedded-helpers-BMPkPwKV.js";
2
2
  import { L as getActivePluginRegistry } from "./subsystem-hATE68va.js";
3
3
  import { r as theme } from "./theme-C5EwWDWE.js";
4
4
  import { t as DEFAULT_ACCOUNT_ID } from "./session-key-B2OXLVi_.js";
5
5
  import { St as DEFAULT_PROVIDER, d as resolveConfiguredModelRef, xt as DEFAULT_MODEL } from "./model-selection-B8ZAcQCt.js";
6
6
  import { o as loadConfig } from "./config-BFoj5wyy.js";
7
7
  import { n as listChannelPlugins } from "./plugins-BXfIVhTg.js";
8
- import { I as listChannelDocks } from "./sessions-Cz4LlZH7.js";
8
+ import { I as listChannelDocks } from "./sessions-Bx2VARI1.js";
9
9
  import { n as SILENT_REPLY_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-9rhTb1EM.js";
10
10
  import { n as formatTokenCount } from "./usage-format-16I7JWKr.js";
11
11
  import { createRequire } from "node:module";
@@ -1,5 +1,5 @@
1
- import "./pi-embedded-helpers-VJ9hOBTv.js";
2
- import { Gt as parseDiscordTarget, Kt as fetchChannelPermissionsDiscord, in as createSlackWebClient, lt as loadProviderUsageSummary, ut as formatUsageReportLines } from "./reply-DfvgJktO.js";
1
+ import "./pi-embedded-helpers-BMPkPwKV.js";
2
+ import { Gt as parseDiscordTarget, Kt as fetchChannelPermissionsDiscord, in as createSlackWebClient, lt as loadProviderUsageSummary, ut as formatUsageReportLines } from "./reply-BZDAeRWS.js";
3
3
  import { f as danger, s as defaultRuntime, w as getResolvedLoggerSettings } from "./subsystem-hATE68va.js";
4
4
  import "./paths-VdmjGGyc.js";
5
5
  import { r as theme } from "./theme-C5EwWDWE.js";
@@ -20,16 +20,16 @@ import "./version-BKRSzdyx.js";
20
20
  import { c as readConfigFileSnapshot, o as loadConfig, u as writeConfigFile } from "./config-BFoj5wyy.js";
21
21
  import "./manifest-registry-DEGu_o5t.js";
22
22
  import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-BXfIVhTg.js";
23
- import "./sessions-Cz4LlZH7.js";
24
- import "./image-CZ_X0a5U.js";
25
- import "./dist-BYg0IiMA.js";
23
+ import "./sessions-Bx2VARI1.js";
24
+ import "./image-C3E9B7uU.js";
25
+ import "./dist-B0taJfp8.js";
26
26
  import "./lib-pS0Bd7GL.js";
27
27
  import "./src-ByySp9O0.js";
28
28
  import "./core-B7QS0Vnt.js";
29
- import "./pi-model-discovery-1FYyRpLv.js";
30
- import "./sandbox-o5syhP4X.js";
29
+ import "./pi-model-discovery-FK8jErRV.js";
30
+ import "./sandbox-Cboj7RQq.js";
31
31
  import "./chrome-Dw_3cCvP.js";
32
- import "./skills-BQWFFLxf.js";
32
+ import "./skills-Dh0SDBuy.js";
33
33
  import "./routes-rN1UjOYR.js";
34
34
  import "./server-context-Co6-risd.js";
35
35
  import "./image-ops-DQULvF-U.js";
@@ -40,7 +40,7 @@ import "./paths-DLKQOevr.js";
40
40
  import "./tool-images-BqeQexfA.js";
41
41
  import "./redact-1AXapBET.js";
42
42
  import "./tool-display-DYOxwSs6.js";
43
- import "./deliver-DJbxwsAM.js";
43
+ import "./deliver-DOHMG5Rz.js";
44
44
  import "./dispatcher-D2EwEyDs.js";
45
45
  import "./dist-Byt8U32D.js";
46
46
  import "./pi-tool-definition-adapter-CgLxQsZ_.js";
@@ -48,9 +48,9 @@ import "./manager-D9gyRViO.js";
48
48
  import "./sqlite-BNq8OiKY.js";
49
49
  import "./warnings-ZtUGH1-N.js";
50
50
  import "./proxy-from-env-BnenCgWg.js";
51
- import "./login-qr-CFZIqrOV.js";
52
- import "./message-0gwe6UQ4.js";
53
- import { n as formatAge } from "./channel-summary-Bpd0YaF9.js";
51
+ import "./login-qr-Zk90haay.js";
52
+ import "./message-C-Jhw-K2.js";
53
+ import { n as formatAge } from "./channel-summary-BtotMHWQ.js";
54
54
  import "./device-identity-BZ8FfIMK.js";
55
55
  import "./client-QUeLEngh.js";
56
56
  import { n as callGateway } from "./call-C9iXIbXI.js";
@@ -60,7 +60,7 @@ import { t as formatDocsLink } from "./links-B0HTM-CT.js";
60
60
  import { n as runCommandWithRuntime } from "./cli-utils-CwUbbnsD.js";
61
61
  import { n as withProgress } from "./progress-BPDEiFpj.js";
62
62
  import "./node-pairing-DxF2w-Rz.js";
63
- import "./pi-tools.policy-DXLhV6cY.js";
63
+ import "./pi-tools.policy-BSGwpKU_.js";
64
64
  import "./onboard-helpers-DKhundDe.js";
65
65
  import "./prompt-style-e5zz5JM8.js";
66
66
  import "./pairing-labels-COEL5-l6.js";
@@ -73,22 +73,22 @@ import "./event-log-BJRHlOn8.js";
73
73
  import { t as resolveChannelDefaultAccountId } from "./helpers-y1KKH5pe.js";
74
74
  import "./note-DRoVRuAi.js";
75
75
  import { t as createClackPrompter } from "./clack-prompter-B9o3eQeW.js";
76
- import { i as reloadOnboardingPluginRegistry, n as setupChannels, r as ensureOnboardingPluginInstalled } from "./onboard-channels-HevjIHaS.js";
76
+ import { i as reloadOnboardingPluginRegistry, n as setupChannels, r as ensureOnboardingPluginInstalled } from "./onboard-channels-BjveHxG_.js";
77
77
  import { i as listChannelPluginCatalogEntries } from "./plugin-auto-enable-Cg3LRidd.js";
78
- import "./archive-CvVr15c3.js";
78
+ import "./archive-B3eMefRa.js";
79
79
  import "./skill-scanner-CBHxr1An.js";
80
- import "./installs-D47ded8C.js";
80
+ import "./installs-BJYE96Lb.js";
81
81
  import "./service-BGkVTESM.js";
82
82
  import "./systemd-BzTSelz8.js";
83
83
  import "./diagnostics-CFV2YxpG.js";
84
84
  import { t as collectChannelStatusIssues } from "./channels-status-issues-BLygTpUh.js";
85
- import { n as hasExplicitOptions } from "./plugin-registry-2wBo492w.js";
85
+ import { n as hasExplicitOptions } from "./plugin-registry-Ck8UGGLF.js";
86
86
  import "./daemon-runtime-r19-i0S0.js";
87
87
  import "./ensure-local-gateway-VbJtdpui.js";
88
- import { n as runChannelLoginAll, r as runChannelLogout, t as runChannelLogin } from "./channel-auth-DrJ2FCUT.js";
89
- import { t as formatCliChannelOptions } from "./channel-options-CEI6AY4_.js";
90
- import { t as buildChannelAccountSnapshot } from "./status-BLjOBDvD.js";
91
- import { t as parseLogLine } from "./parse-log-line-cWE1HOyo.js";
88
+ import { n as runChannelLoginAll, r as runChannelLogout, t as runChannelLogin } from "./channel-auth-Bu3z5Shg.js";
89
+ import { t as formatCliChannelOptions } from "./channel-options-DAkRGG8X.js";
90
+ import { t as buildChannelAccountSnapshot } from "./status-BN46BKoK.js";
91
+ import { t as parseLogLine } from "./parse-log-line-BOe9IEjO.js";
92
92
  import fs from "node:fs/promises";
93
93
 
94
94
  //#region src/commands/channels/add-mutators.ts
@@ -1,2 +1,2 @@
1
1
  // Legacy shim for pre-tsdown update-cli imports.
2
- export { registerDaemonCli, runDaemonInstall, runDaemonRestart, runDaemonStart, runDaemonStatus, runDaemonStop, runDaemonUninstall } from "../daemon-cli-CnddRCfX.js";
2
+ export { registerDaemonCli, runDaemonInstall, runDaemonRestart, runDaemonStart, runDaemonStatus, runDaemonStop, runDaemonUninstall } from "../daemon-cli-v5-R4zAv.js";
@@ -1,5 +1,5 @@
1
- import "./pi-embedded-helpers-VJ9hOBTv.js";
2
- import { ct as loadSKYKOIPlugins } from "./reply-DfvgJktO.js";
1
+ import "./pi-embedded-helpers-BMPkPwKV.js";
2
+ import { ct as loadSKYKOIPlugins } from "./reply-BZDAeRWS.js";
3
3
  import { t as createSubsystemLogger } from "./subsystem-hATE68va.js";
4
4
  import "./paths-VdmjGGyc.js";
5
5
  import "./theme-C5EwWDWE.js";
@@ -18,16 +18,16 @@ import "./version-BKRSzdyx.js";
18
18
  import { o as loadConfig } from "./config-BFoj5wyy.js";
19
19
  import "./manifest-registry-DEGu_o5t.js";
20
20
  import "./plugins-BXfIVhTg.js";
21
- import "./sessions-Cz4LlZH7.js";
22
- import "./image-CZ_X0a5U.js";
23
- import "./dist-BYg0IiMA.js";
21
+ import "./sessions-Bx2VARI1.js";
22
+ import "./image-C3E9B7uU.js";
23
+ import "./dist-B0taJfp8.js";
24
24
  import "./lib-pS0Bd7GL.js";
25
25
  import "./src-ByySp9O0.js";
26
26
  import "./core-B7QS0Vnt.js";
27
- import "./pi-model-discovery-1FYyRpLv.js";
28
- import "./sandbox-o5syhP4X.js";
27
+ import "./pi-model-discovery-FK8jErRV.js";
28
+ import "./sandbox-Cboj7RQq.js";
29
29
  import "./chrome-Dw_3cCvP.js";
30
- import "./skills-BQWFFLxf.js";
30
+ import "./skills-Dh0SDBuy.js";
31
31
  import "./routes-rN1UjOYR.js";
32
32
  import "./server-context-Co6-risd.js";
33
33
  import "./image-ops-DQULvF-U.js";
@@ -38,7 +38,7 @@ import "./paths-DLKQOevr.js";
38
38
  import "./tool-images-BqeQexfA.js";
39
39
  import "./redact-1AXapBET.js";
40
40
  import "./tool-display-DYOxwSs6.js";
41
- import "./deliver-DJbxwsAM.js";
41
+ import "./deliver-DOHMG5Rz.js";
42
42
  import "./dispatcher-D2EwEyDs.js";
43
43
  import "./dist-Byt8U32D.js";
44
44
  import "./pi-tool-definition-adapter-CgLxQsZ_.js";
@@ -46,9 +46,9 @@ import "./manager-D9gyRViO.js";
46
46
  import "./sqlite-BNq8OiKY.js";
47
47
  import "./warnings-ZtUGH1-N.js";
48
48
  import "./proxy-from-env-BnenCgWg.js";
49
- import "./login-qr-CFZIqrOV.js";
50
- import "./message-0gwe6UQ4.js";
51
- import "./channel-summary-Bpd0YaF9.js";
49
+ import "./login-qr-Zk90haay.js";
50
+ import "./message-C-Jhw-K2.js";
51
+ import "./channel-summary-BtotMHWQ.js";
52
52
  import "./device-identity-BZ8FfIMK.js";
53
53
  import "./client-QUeLEngh.js";
54
54
  import "./call-C9iXIbXI.js";
@@ -57,7 +57,7 @@ import "./pairing-store-DtLK_KGs.js";
57
57
  import "./links-B0HTM-CT.js";
58
58
  import "./progress-BPDEiFpj.js";
59
59
  import "./node-pairing-DxF2w-Rz.js";
60
- import "./pi-tools.policy-DXLhV6cY.js";
60
+ import "./pi-tools.policy-BSGwpKU_.js";
61
61
  import "./onboard-helpers-DKhundDe.js";
62
62
  import "./prompt-style-e5zz5JM8.js";
63
63
  import "./pairing-labels-COEL5-l6.js";
@@ -1,6 +1,6 @@
1
1
  import { r as __exportAll } from "./chunk-D_gEzPfs.js";
2
2
  import { g as resolveStateDir } from "./paths-VdmjGGyc.js";
3
- import { n as registerSubCliByName, t as getSubCliEntries } from "./register.subclis-CyIrQbCu.js";
3
+ import { n as registerSubCliByName, t as getSubCliEntries } from "./register.subclis-C25mLHRU.js";
4
4
  import path from "node:path";
5
5
  import os from "node:os";
6
6
  import fs from "node:fs/promises";
@@ -1,4 +1,4 @@
1
- import { B as CHANNEL_MESSAGE_ACTION_NAMES, Bn as lookupContextTokens, F as runMessageAction, Ot as registerMemoryCli, R as formatTargetDisplay, it as CHANNEL_TARGET_DESCRIPTION, kt as runMemoryStatus, rt as CHANNEL_TARGETS_DESCRIPTION } from "./reply-DfvgJktO.js";
1
+ import { B as CHANNEL_MESSAGE_ACTION_NAMES, Bn as lookupContextTokens, F as runMessageAction, Ot as registerMemoryCli, R as formatTargetDisplay, it as CHANNEL_TARGET_DESCRIPTION, kt as runMemoryStatus, rt as CHANNEL_TARGETS_DESCRIPTION } from "./reply-BZDAeRWS.js";
2
2
  import { I as normalizeChatChannelId, M as getChatChannelMeta, c as restoreTerminalState, f as danger, k as DEFAULT_CHAT_CHANNEL, p as info, s as defaultRuntime, v as setVerbose } from "./subsystem-hATE68va.js";
3
3
  import { g as resolveStateDir, i as isNixMode, m as resolveOAuthDir, o as resolveConfigPath, r as STATE_DIR, t as CONFIG_PATH, u as resolveGatewayPort } from "./paths-VdmjGGyc.js";
4
4
  import { n as isRich, r as theme, t as colorize } from "./theme-C5EwWDWE.js";
@@ -11,7 +11,7 @@ import { t as formatCliCommand } from "./command-format-DOYW_19_.js";
11
11
  import { t as parseBooleanValue } from "./boolean-D-3joTkO.js";
12
12
  import { D as applyLegacyMigrations, _ as parseDurationMs, a as createConfigIO, c as readConfigFileSnapshot, o as loadConfig, u as writeConfigFile } from "./config-BFoj5wyy.js";
13
13
  import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-BXfIVhTg.js";
14
- import { i as loadSessionStore } from "./sessions-Cz4LlZH7.js";
14
+ import { i as loadSessionStore } from "./sessions-Bx2VARI1.js";
15
15
  import { n as movePathToTrash } from "./server-context-Co6-risd.js";
16
16
  import { h as GATEWAY_CLIENT_NAMES, l as normalizeMessageChannel, m as GATEWAY_CLIENT_MODES } from "./message-channel-CaDAAMe0.js";
17
17
  import { a as resolveSessionTranscriptsDirForKoi, i as resolveSessionTranscriptsDir, o as resolveStorePath } from "./paths-DLKQOevr.js";
@@ -21,32 +21,32 @@ import { n as runCommandWithRuntime } from "./cli-utils-CwUbbnsD.js";
21
21
  import { n as withProgress } from "./progress-BPDEiFpj.js";
22
22
  import { a as ensureWorkspaceAndSessions, c as handleReset, d as openUrl, h as resolveControlUiLinks, i as detectBrowserOpenSupport, l as moveToTrash, m as randomToken, n as applyWizardMetadata, o as formatControlUiSshHint, t as DEFAULT_WORKSPACE, v as waitForGatewayReachable } from "./onboard-helpers-DKhundDe.js";
23
23
  import { n as stylePromptMessage, r as stylePromptTitle, t as stylePromptHint } from "./prompt-style-e5zz5JM8.js";
24
- import { t as createDefaultDeps } from "./deps-Bw3HFVDz.js";
24
+ import { t as createDefaultDeps } from "./deps-C40AV7FF.js";
25
25
  import { t as assertSupportedRuntime } from "./runtime-guard-C80qkv4W.js";
26
26
  import { t as resolveChannelDefaultAccountId } from "./helpers-y1KKH5pe.js";
27
27
  import { n as logConfigUpdated, t as formatConfigPath } from "./logging-1Q_KlUsW.js";
28
28
  import { t as WizardCancelledError } from "./prompts-yNyvMdpp.js";
29
29
  import { t as createClackPrompter } from "./clack-prompter-B9o3eQeW.js";
30
- import { a as buildKoiSummaries, c as loadKoiIdentity, f as parseIdentityMarkdown, i as applyKoiConfig, l as pruneKoiConfig, n as statusCommand, o as findKoiEntryIndex, s as listKoiEntries, t as runOnboardingWizard, u as identityHasValues } from "./onboarding-BD5BnV_9.js";
31
- import { d as applyAuthChoice, f as applyOpenAIConfig, h as promptAuthChoiceGrouped, m as applyGoogleGeminiModelDefault, p as upsertSharedEnvVar, u as warnIfModelConfigLooksOff } from "./onboard-skills-DHyNGIax.js";
32
- import { $ as setOpenrouterApiKey, C as applyMoonshotConfig, D as applyOpenrouterConfig, F as applyVercelAiGatewayConfig, J as setGeminiApiKey, K as setAnthropicApiKey, L as applyXaiConfig, N as applyVeniceConfig, Q as setOpencodeZenApiKey, V as applyZaiConfig, X as setMinimaxApiKey, Y as setKimiCodingApiKey, Z as setMoonshotApiKey, at as setXiaomiApiKey, et as setQianfanApiKey, f as applyOpencodeZenConfig, ft as buildTokenProfileId, g as applyMinimaxConfig, it as setXaiApiKey, j as applySyntheticConfig, k as applyQianfanConfig, m as applyMinimaxApiConfig, nt as setVeniceApiKey, ot as setZaiApiKey, pt as validateAnthropicSetupToken, q as setCloudflareAiGatewayConfig, rt as setVercelAiGatewayApiKey, tt as setSyntheticApiKey, v as applyAuthProfileConfig, w as applyMoonshotConfigCn, x as applyKimiCodeConfig, y as applyCloudflareAiGatewayConfig, z as applyXiaomiConfig } from "./github-copilot-auth-DtB8cjB9.js";
33
- import { n as setupChannels } from "./onboard-channels-HevjIHaS.js";
34
- import { i as healthCommand } from "./health-format-CaHzb0Cj.js";
30
+ import { a as buildKoiSummaries, c as loadKoiIdentity, f as parseIdentityMarkdown, i as applyKoiConfig, l as pruneKoiConfig, n as statusCommand, o as findKoiEntryIndex, s as listKoiEntries, t as runOnboardingWizard, u as identityHasValues } from "./onboarding-DtFQKsiq.js";
31
+ import { d as applyAuthChoice, f as applyOpenAIConfig, h as promptAuthChoiceGrouped, m as applyGoogleGeminiModelDefault, p as upsertSharedEnvVar, u as warnIfModelConfigLooksOff } from "./onboard-skills-pW0A8mDR.js";
32
+ import { $ as setOpenrouterApiKey, C as applyMoonshotConfig, D as applyOpenrouterConfig, F as applyVercelAiGatewayConfig, J as setGeminiApiKey, K as setAnthropicApiKey, L as applyXaiConfig, N as applyVeniceConfig, Q as setOpencodeZenApiKey, V as applyZaiConfig, X as setMinimaxApiKey, Y as setKimiCodingApiKey, Z as setMoonshotApiKey, at as setXiaomiApiKey, et as setQianfanApiKey, f as applyOpencodeZenConfig, ft as buildTokenProfileId, g as applyMinimaxConfig, it as setXaiApiKey, j as applySyntheticConfig, k as applyQianfanConfig, m as applyMinimaxApiConfig, nt as setVeniceApiKey, ot as setZaiApiKey, pt as validateAnthropicSetupToken, q as setCloudflareAiGatewayConfig, rt as setVercelAiGatewayApiKey, tt as setSyntheticApiKey, v as applyAuthProfileConfig, w as applyMoonshotConfigCn, x as applyKimiCodeConfig, y as applyCloudflareAiGatewayConfig, z as applyXiaomiConfig } from "./github-copilot-auth-CAM7sDl5.js";
33
+ import { n as setupChannels } from "./onboard-channels-BjveHxG_.js";
34
+ import { i as healthCommand } from "./health-format-1k8pCgq2.js";
35
35
  import { t as renderTable } from "./table-B3RHVa0g.js";
36
36
  import { t as resolveGatewayService } from "./service-BGkVTESM.js";
37
37
  import { r as isSystemdUserServiceAvailable } from "./systemd-BzTSelz8.js";
38
- import { l as getVerboseFlag, o as getFlagValue, r as registerSubCliCommands, s as getPositiveIntFlagValue, u as hasFlag } from "./register.subclis-CyIrQbCu.js";
38
+ import { l as getVerboseFlag, o as getFlagValue, r as registerSubCliCommands, s as getPositiveIntFlagValue, u as hasFlag } from "./register.subclis-C25mLHRU.js";
39
39
  import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-CIxOsvvC.js";
40
40
  import { t as formatHelpExamples } from "./help-format-BVBm9rU4.js";
41
41
  import { t as adminUnlockCommand } from "./admin-unlock-Dr4FqRVP.js";
42
- import { a as createOutboundSendDeps, n as resolveSessionKeyForRequest, t as koiCommand } from "./koi-CWTJU-v1.js";
43
- import { n as hasExplicitOptions, t as ensurePluginRegistryLoaded } from "./plugin-registry-2wBo492w.js";
42
+ import { a as createOutboundSendDeps, n as resolveSessionKeyForRequest, t as koiCommand } from "./koi-BZaNuNu7.js";
43
+ import { n as hasExplicitOptions, t as ensurePluginRegistryLoaded } from "./plugin-registry-Ck8UGGLF.js";
44
44
  import { n as parsePositiveIntOrUndefined, t as collectOption } from "./helpers-BwzKU4J1.js";
45
- import { i as CONFIGURE_WIZARD_SECTIONS, n as configureCommand, r as configureCommandWithSections } from "./configure-B-ftdG9Z.js";
45
+ import { i as CONFIGURE_WIZARD_SECTIONS, n as configureCommand, r as configureCommandWithSections } from "./configure-D9DlCvVy.js";
46
46
  import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-r19-i0S0.js";
47
47
  import { n as ensureSystemdUserLingerNonInteractive } from "./systemd-linger-Be49_NdF.js";
48
- import { t as loginCommand } from "./login-C71-L2cR.js";
49
- import { n as loadAndMaybeMigrateDoctorConfig, t as doctorCommand } from "./doctor-B1LZ6HYC.js";
48
+ import { t as loginCommand } from "./login-Cjb8NlG3.js";
49
+ import { n as loadAndMaybeMigrateDoctorConfig, t as doctorCommand } from "./doctor-1TF44mR_.js";
50
50
  import { fileURLToPath } from "node:url";
51
51
  import fs from "node:fs";
52
52
  import path from "node:path";
@@ -2797,7 +2797,7 @@ async function loadValidConfig() {
2797
2797
  }
2798
2798
  function registerConfigCli(program) {
2799
2799
  const cmd = program.command("config").description("Config helpers (get/set/unset). Run without subcommand for the wizard.").addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/config", "docs.skykoi.com/cli/config")}\n`).option("--section <section>", "Configure wizard sections (repeatable). Use with no subcommand.", (value, previous) => [...previous, value], []).action(async (opts) => {
2800
- const { CONFIGURE_WIZARD_SECTIONS, configureCommand, configureCommandWithSections } = await import("./configure-B-ftdG9Z.js").then((n) => n.t);
2800
+ const { CONFIGURE_WIZARD_SECTIONS, configureCommand, configureCommandWithSections } = await import("./configure-D9DlCvVy.js").then((n) => n.t);
2801
2801
  const sections = Array.isArray(opts.section) ? opts.section.map((value) => typeof value === "string" ? value.trim() : "").filter(Boolean) : [];
2802
2802
  if (sections.length === 0) {
2803
2803
  await configureCommand(defaultRuntime);
@@ -3105,7 +3105,7 @@ function registerLoginCommand(program) {
3105
3105
  console.log(theme.muted(` user=${result.userId} org=${result.orgId}`));
3106
3106
  }
3107
3107
  if (opts.chat !== false && result.gatewayUrl && process.stdin.isTTY && process.stdout.isTTY) {
3108
- const { runTui } = await import("./tui-C8LwqY_j.js").then((n) => n.n);
3108
+ const { runTui } = await import("./tui-BJ7QDpZm.js").then((n) => n.n);
3109
3109
  console.log(theme.muted("\n Opening your koi chat…\n"));
3110
3110
  await runTui({
3111
3111
  url: result.gatewayUrl,
@@ -3130,7 +3130,7 @@ function registerLoginCommand(program) {
3130
3130
  }
3131
3131
  });
3132
3132
  program.command("whoami").description("Show the currently-logged-in SkyKoi account").action(async () => {
3133
- const { readAuthFile } = await import("./login-C71-L2cR.js").then((n) => n.n);
3133
+ const { readAuthFile } = await import("./login-Cjb8NlG3.js").then((n) => n.n);
3134
3134
  const auth = await readAuthFile();
3135
3135
  if (!auth) {
3136
3136
  console.log(theme.muted("Not logged in. Run `skykoi login`."));
@@ -14,9 +14,9 @@ import { n as logConfigUpdated } from "./logging-1Q_KlUsW.js";
14
14
  import { t as note$1 } from "./note-DRoVRuAi.js";
15
15
  import { t as WizardCancelledError } from "./prompts-yNyvMdpp.js";
16
16
  import { t as createClackPrompter } from "./clack-prompter-B9o3eQeW.js";
17
- import { a as applyModelFallbacksFromSelection, c as promptModelAllowlist, d as applyAuthChoice, h as promptAuthChoiceGrouped, i as applyModelAllowlist, l as resolvePreferredProviderForAuthChoice, o as applyPrimaryModel, r as promptRemoteGatewayConfig, s as promptDefaultModel, t as setupSkills } from "./onboard-skills-DHyNGIax.js";
18
- import { n as setupChannels, t as noteChannelStatus } from "./onboard-channels-HevjIHaS.js";
19
- import { i as healthCommand, t as formatHealthCheckFailure } from "./health-format-CaHzb0Cj.js";
17
+ import { a as applyModelFallbacksFromSelection, c as promptModelAllowlist, d as applyAuthChoice, h as promptAuthChoiceGrouped, i as applyModelAllowlist, l as resolvePreferredProviderForAuthChoice, o as applyPrimaryModel, r as promptRemoteGatewayConfig, s as promptDefaultModel, t as setupSkills } from "./onboard-skills-pW0A8mDR.js";
18
+ import { n as setupChannels, t as noteChannelStatus } from "./onboard-channels-BjveHxG_.js";
19
+ import { i as healthCommand, t as formatHealthCheckFailure } from "./health-format-1k8pCgq2.js";
20
20
  import { t as resolveGatewayService } from "./service-BGkVTESM.js";
21
21
  import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-B0N-n2rD.js";
22
22
  import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-r19-i0S0.js";
@@ -15,14 +15,14 @@ import { n as withProgress } from "./progress-BPDEiFpj.js";
15
15
  import { h as resolveControlUiLinks } from "./onboard-helpers-DKhundDe.js";
16
16
  import { n as isWSLEnv, t as isWSL } from "./wsl-DiiAe4Ci.js";
17
17
  import { d as resolveGatewaySystemdServiceName, l as resolveGatewayLaunchAgentLabel } from "./constants-BezzOOYJ.js";
18
- import { t as createDefaultDeps } from "./deps-Bw3HFVDz.js";
18
+ import { t as createDefaultDeps } from "./deps-C40AV7FF.js";
19
19
  import { o as resolveGatewayLogPaths, t as resolveGatewayService } from "./service-BGkVTESM.js";
20
20
  import { r as isSystemdUserServiceAvailable } from "./systemd-BzTSelz8.js";
21
21
  import { t as readLastGatewayErrorLine } from "./diagnostics-CFV2YxpG.js";
22
22
  import { i as buildGatewayInstallPlan, r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-r19-i0S0.js";
23
23
  import { n as renderSystemdUnavailableHints, t as isSystemdUnavailableDetail } from "./systemd-hints-CzaKNNI1.js";
24
24
  import { a as renderGatewayServiceCleanupHints, i as findExtraGatewayServices, n as auditGatewayServiceConfig } from "./service-audit-C3mNLBya.js";
25
- import { a as parsePortFromArgs, c as renderRuntimeHints, d as createNullWriter, f as emitDaemonActionJson, i as parsePort, l as safeDaemonEnv, n as formatRuntimeStatus, o as pickProbeHostForBind, r as normalizeListenerAddress, s as renderGatewayServiceStartHints, t as filterDaemonEnv, u as buildDaemonServiceSnapshot } from "./shared-Dn4Lf8u-.js";
25
+ import { a as parsePortFromArgs, c as renderRuntimeHints, d as createNullWriter, f as emitDaemonActionJson, i as parsePort, l as safeDaemonEnv, n as formatRuntimeStatus, o as pickProbeHostForBind, r as normalizeListenerAddress, s as renderGatewayServiceStartHints, t as filterDaemonEnv, u as buildDaemonServiceSnapshot } from "./shared-BJlh4CKo.js";
26
26
 
27
27
  //#region src/cli/daemon-cli/install.ts
28
28
  async function runDaemonInstall(opts) {
@@ -1,11 +1,11 @@
1
1
  import { o as __toESM, r as __exportAll, t as __commonJSMin } from "./chunk-D_gEzPfs.js";
2
- import { i as isMessagingToolDuplicate } from "./pi-embedded-helpers-VJ9hOBTv.js";
2
+ import { i as isMessagingToolDuplicate } from "./pi-embedded-helpers-BMPkPwKV.js";
3
3
  import { L as getActivePluginRegistry, g as logVerbose, y as shouldLogVerbose } from "./subsystem-hATE68va.js";
4
4
  import { c as normalizeAccountId$1 } from "./session-key-B2OXLVi_.js";
5
5
  import { h as resolveUserPath } from "./utils-D019Z2NU.js";
6
6
  import { o as loadConfig } from "./config-BFoj5wyy.js";
7
7
  import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-BXfIVhTg.js";
8
- import { F as getChannelDock, V as resolveSignalAccount, n as appendAssistantMessageToSessionTranscript, r as resolveMirroredTranscriptText } from "./sessions-Cz4LlZH7.js";
8
+ import { F as getChannelDock, V as resolveSignalAccount, n as appendAssistantMessageToSessionTranscript, r as resolveMirroredTranscriptText } from "./sessions-Bx2VARI1.js";
9
9
  import { a as closeDispatcher, c as resolvePinnedHostnameWithPolicy, o as createPinnedDispatcher, r as saveMediaBuffer, s as resolvePinnedHostname } from "./routes-rN1UjOYR.js";
10
10
  import { a as resizeToJpeg, h as mediaKindFromMime, i as optimizeImageToPng, m as maxBytesForKind, o as detectMime, r as hasAlphaChannel, s as extensionForMime, t as convertHeicToJpeg } from "./image-ops-DQULvF-U.js";
11
11
  import { t as INTERNAL_MESSAGE_CHANNEL } from "./message-channel-CaDAAMe0.js";
@@ -1,5 +1,5 @@
1
- import { Ht as sendMessageTelegram, Ut as sendMessageDiscord, ht as sendMessageIMessage, nn as sendMessageWhatsApp, rn as sendMessageSlack } from "./reply-DfvgJktO.js";
2
- import { b as sendMessageSignal } from "./deliver-DJbxwsAM.js";
1
+ import { Ht as sendMessageTelegram, Ut as sendMessageDiscord, ht as sendMessageIMessage, nn as sendMessageWhatsApp, rn as sendMessageSlack } from "./reply-BZDAeRWS.js";
2
+ import { b as sendMessageSignal } from "./deliver-DOHMG5Rz.js";
3
3
 
4
4
  //#region src/cli/deps.ts
5
5
  function createDefaultDeps() {
@@ -19,7 +19,7 @@ import { exec as exec$1, execSync as execSync$1, spawn as spawn$1, spawnSync as
19
19
  import { appendFileSync as appendFileSync$1, chmodSync as chmodSync$1, closeSync as closeSync$1, constants as constants$1, createWriteStream as createWriteStream$1, existsSync as existsSync$1, lstatSync, mkdirSync as mkdirSync$1, openSync as openSync$1, readFileSync as readFileSync$1, readSync as readSync$1, readdir as readdir$1, readdirSync as readdirSync$1, readlinkSync, realpathSync as realpathSync$1, renameSync as renameSync$1, rmSync as rmSync$1, statSync as statSync$1, watch as watch$1, writeFileSync as writeFileSync$1 } from "fs";
20
20
  import { Readable } from "stream";
21
21
  import { arch, homedir as homedir$1, platform } from "os";
22
- import { EventEmitter } from "events";
22
+ import { EventEmitter as EventEmitter$1 } from "events";
23
23
  import * as path$2 from "path";
24
24
  import path$1, { basename as basename$1, dirname as dirname$1, isAbsolute as isAbsolute$1, join as join$1, relative as relative$1, resolve as resolve$1, sep as sep$1 } from "path";
25
25
  import { randomUUID } from "crypto";
@@ -115447,7 +115447,7 @@ function extractCompleteSequences(buffer) {
115447
115447
  * Buffers stdin input and emits complete sequences via the 'data' event.
115448
115448
  * Handles partial escape sequences that arrive across multiple chunks.
115449
115449
  */
115450
- var StdinBuffer = class extends EventEmitter {
115450
+ var StdinBuffer = class extends EventEmitter$1 {
115451
115451
  buffer = "";
115452
115452
  timeout = null;
115453
115453
  timeoutMs;