skykoi 2026.3.329 → 2026.3.331

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 (44) hide show
  1. package/dist/{archive-DE4kADTX.js → archive-HObtzULx.js} +1 -1
  2. package/dist/build-info.json +3 -3
  3. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  4. package/dist/{channel-options-BBbtWCTa.js → channel-options-DHCxqaUS.js} +1 -1
  5. package/dist/{channel-summary-B5A5dwvv.js → channel-summary-CH6wx1K0.js} +31 -2
  6. package/dist/{channels-cli-DTs3Jzwg.js → channels-cli-DJH_Q6fm.js} +7 -7
  7. package/dist/cli/daemon-cli.js +1 -1
  8. package/dist/{cli-Beg2B0w9.js → cli-BmVzhz7x.js} +2 -2
  9. package/dist/{completion-cli-CiO8SxUw.js → completion-cli-Ct7r26aE.js} +1 -1
  10. package/dist/{config-guard-wK31kdIU.js → config-guard-CI8BUtkF.js} +14 -14
  11. package/dist/{configure-uv_lsCRi.js → configure-BR4-y9wN.js} +3 -3
  12. package/dist/{daemon-cli-CUhbam4l.js → daemon-cli-CkEEKXwT.js} +1 -1
  13. package/dist/{deps-DDID81el.js → deps-2m5USHxz.js} +1 -1
  14. package/dist/{doctor-CnvS0ZdH.js → doctor-DaWXIYsb.js} +3 -3
  15. package/dist/{doctor-completion-BGwOoan6.js → doctor-completion-Caj2jdm9.js} +1 -1
  16. package/dist/entry.js +1 -1
  17. package/dist/extension-api.js +2 -2
  18. package/dist/{gateway-cli-CpvigCTQ.js → gateway-cli-CUHqkDkz.js} +17 -17
  19. package/dist/{github-copilot-auth-010qCwDG.js → github-copilot-auth-BFkrzRdJ.js} +1 -1
  20. package/dist/{health-format-C2t6NgZL.js → health-format-Dk2bjrto.js} +1 -1
  21. package/dist/{hooks-cli-BRCzz5-m.js → hooks-cli-BWuttmsB.js} +4 -4
  22. package/dist/index.js +21 -21
  23. package/dist/{installs-HuaU-gei.js → installs-DBs6jN3U.js} +1 -1
  24. package/dist/{koi-BXwWP8SZ.js → koi-DfcU57_Z.js} +2 -2
  25. package/dist/{models-cli-lFhOpGzU.js → models-cli-BKVriUx6.js} +3 -3
  26. package/dist/{onboard-channels-BnIMjfBj.js → onboard-channels-DHCJInN8.js} +2 -2
  27. package/dist/{onboard-skills-BFOHiGrG.js → onboard-skills-ChxI_iEW.js} +3 -3
  28. package/dist/{onboarding-8k3dyEde.js → onboarding-CvpP9F5R.js} +8 -8
  29. package/dist/{plugin-registry-CfCEYzLU.js → plugin-registry-C3CWtE6C.js} +1 -1
  30. package/dist/plugin-sdk/index.js +12 -12
  31. package/dist/plugin-sdk/{pi-model-discovery-CBWcyyqn.js → pi-model-discovery-szlzYGsC.js} +3 -3
  32. package/dist/plugin-sdk/tui/tui-formatters.d.ts +10 -0
  33. package/dist/{plugins-cli-D-bPvtD3.js → plugins-cli-1D0yLDNl.js} +6 -6
  34. package/dist/{program-Boun5vic.js → program-BTz-C7hw.js} +5 -5
  35. package/dist/{register.subclis-dUCOoTTH.js → register.subclis-dKeKhf0E.js} +11 -11
  36. package/dist/{reply-HLX1_gZC.js → reply-BOrQK8w_.js} +2 -2
  37. package/dist/{run-main-BduipNtE.js → run-main-CjYE4GgM.js} +22 -22
  38. package/dist/{server-node-events-BbdGFwU-.js → server-node-events-DrvtPnhj.js} +4 -4
  39. package/dist/{status-B3rms2GT.js → status-CHa9_ku7.js} +1 -1
  40. package/dist/{tui-DBU8XXEy.js → tui-BLENcW7_.js} +2 -2
  41. package/dist/{tui-cli-cnY4z6t4.js → tui-cli-BNu0Iorr.js} +2 -2
  42. package/dist/{update-CcevrMJa.js → update-BfXbl2p0.js} +1 -1
  43. package/dist/{update-cli-Maga71um.js → update-cli-BInmc5gC.js} +12 -12
  44. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import { i as __require, o as __toESM, t as __commonJSMin } from "./chunk-D_gEzPfs.js";
2
- import { Ot as require_inherits } from "./reply-HLX1_gZC.js";
2
+ import { Ot as require_inherits } from "./reply-BOrQK8w_.js";
3
3
  import path from "node:path";
4
4
  import fs from "node:fs/promises";
5
5
  import * as tar from "tar";
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2026.3.329",
3
- "commit": "527b198d90b6a04523f493758d8148a794bea29c",
4
- "builtAt": "2026-06-11T03:27:58.155Z"
2
+ "version": "2026.3.331",
3
+ "commit": "d6bab4a75037f58a52375d2e18aa3721e86ad019",
4
+ "builtAt": "2026-06-11T06:33:07.504Z"
5
5
  }
@@ -1 +1 @@
1
- dd9d9ffad0fe3591927781cf32dbd3c77db13441de9b464c118d973a9a108ff5
1
+ 95d6f4a4f2e9455b7f3de8aa6df03157374834c25228d4e977f096145bf3c213
@@ -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-Ct7Mnq1x.js";
4
4
  import { i as listChannelPluginCatalogEntries } from "./plugin-auto-enable-WPZfV7Dp.js";
5
- import { t as ensurePluginRegistryLoaded } from "./plugin-registry-CfCEYzLU.js";
5
+ import { t as ensurePluginRegistryLoaded } from "./plugin-registry-C3CWtE6C.js";
6
6
 
7
7
  //#region src/cli/channel-options.ts
8
8
  function dedupe(values) {
@@ -1043,10 +1043,39 @@ function extractTextBlocks(content, opts) {
1043
1043
  showThinking: opts?.includeThinking ?? false
1044
1044
  });
1045
1045
  }
1046
+ /**
1047
+ * Strip the leading "System: …" context block the runtime prepends to a user
1048
+ * turn (recent exec results, message activity). The koi receives it, but the
1049
+ * owner must NEVER see it in their chat. Every line of the block is
1050
+ * "System: "-prefixed (see prependSystemEvents), so drop the contiguous leading
1051
+ * run of them plus the blank separator before the user's real text.
1052
+ */
1053
+ function stripLeadingSystemContext(text) {
1054
+ if (!text.startsWith("System: ")) return text;
1055
+ const lines = text.split("\n");
1056
+ let i = 0;
1057
+ while (i < lines.length && lines[i].startsWith("System: ")) i++;
1058
+ while (i < lines.length && lines[i].trim() === "") i++;
1059
+ return lines.slice(i).join("\n");
1060
+ }
1061
+ /**
1062
+ * Channel inbound DMs collapse into koi:main:main and are stored as user turns
1063
+ * carrying the channel envelope ("[WhatsApp +1832… +32s 2026-06-10 22:41 CDT]")
1064
+ * and/or the inbound prefix ("[SKYKOI] …"). The owner already gets a clean
1065
+ * "📨 WhatsApp · Name: text" heads-up for those, so the raw envelope turn should
1066
+ * NOT also clutter their chat. Their OWN typed messages never lead with such a
1067
+ * header, so detecting it cleanly tells them apart (display-only — the koi still
1068
+ * receives the full message).
1069
+ */
1070
+ function isChannelInboundEcho(text) {
1071
+ const head = text.trimStart();
1072
+ if (!head.startsWith("[")) return false;
1073
+ return /^\[(?:WhatsApp|Telegram|Signal|iMessage|SMS|Slack|Discord|Google ?Chat|Messenger|Instagram|LINE|WeChat|Email|RCS|SKYKOI)\b[^\]]*\]/i.test(head) || /^\[[^\]\n]*\+\d{6,}[^\]]*\]/.test(head) || /^\[[^\]\n]*\d{4}-\d\d-\d\d[^\]]*\]/.test(head);
1074
+ }
1046
1075
  function extractTextFromMessage(message, opts) {
1047
1076
  if (!message || typeof message !== "object") return "";
1048
1077
  const record = message;
1049
- const text = extractTextBlocks(record.content, opts);
1078
+ const text = stripLeadingSystemContext(extractTextBlocks(record.content, opts));
1050
1079
  if (text) return text;
1051
1080
  if ((typeof record.stopReason === "string" ? record.stopReason : "") !== "error") return "";
1052
1081
  return formatRawAssistantErrorForUi(typeof record.errorMessage === "string" ? record.errorMessage : "");
@@ -1214,4 +1243,4 @@ function formatAge(ms) {
1214
1243
  }
1215
1244
 
1216
1245
  //#endregion
1217
- export { serializeCommandArgs as C, resolveCommandArgMenu as S, listNativeCommandSpecs as _, extractContentFromMessage as a, parseCommandArgs as b, formatContextUsageLine as c, resolveFinalAssistantText as d, resolveCommitHash as f, listChatCommandsForConfig as g, listChatCommands as h, composeThinkingAndContent as i, formatTokens as l, findCommandByNativeName as m, formatAge as n, extractTextFromMessage as o, buildCommandTextFromArgs as p, asString as r, extractThinkingFromMessage as s, buildChannelSummary as t, isCommandMessage as u, listNativeCommandSpecsForConfig as v, shouldHandleTextCommands as w, resolveCommandArgChoices as x, normalizeCommandBody as y };
1246
+ export { resolveCommandArgMenu as C, resolveCommandArgChoices as S, shouldHandleTextCommands as T, listChatCommandsForConfig as _, extractContentFromMessage as a, normalizeCommandBody as b, formatContextUsageLine as c, isCommandMessage as d, resolveFinalAssistantText as f, listChatCommands as g, findCommandByNativeName as h, composeThinkingAndContent as i, formatTokens as l, buildCommandTextFromArgs as m, formatAge as n, extractTextFromMessage as o, resolveCommitHash as p, asString as r, extractThinkingFromMessage as s, buildChannelSummary as t, isChannelInboundEcho as u, listNativeCommandSpecs as v, serializeCommandArgs as w, parseCommandArgs as x, listNativeCommandSpecsForConfig as y };
@@ -1,5 +1,5 @@
1
1
  import "./pi-embedded-helpers-wHze4-BZ.js";
2
- import { $ as writeNylasGrant, Ct as loadProviderUsageSummary, J as nylasLinked, K as DEFAULT_NYLAS_API_URI, L as sendMessage, Q as sendMessage$1, X as readNylasGrant, Z as resolveNylasConfig, an as parseDiscordTarget, on as fetchChannelPermissionsDiscord, q as nylasConfigured, wt as formatUsageReportLines, yn as createSlackWebClient } from "./reply-HLX1_gZC.js";
2
+ import { $ as writeNylasGrant, Ct as loadProviderUsageSummary, J as nylasLinked, K as DEFAULT_NYLAS_API_URI, L as sendMessage, Q as sendMessage$1, X as readNylasGrant, Z as resolveNylasConfig, an as parseDiscordTarget, on as fetchChannelPermissionsDiscord, q as nylasConfigured, wt as formatUsageReportLines, yn as createSlackWebClient } from "./reply-BOrQK8w_.js";
3
3
  import { b as success, f as danger, k as DEFAULT_CHAT_CHANNEL, p as info, s as defaultRuntime, v as setVerbose, w as getResolvedLoggerSettings } from "./subsystem-hATE68va.js";
4
4
  import "./paths-VdmjGGyc.js";
5
5
  import { r as theme } from "./theme-C5EwWDWE.js";
@@ -49,7 +49,7 @@ import "./sqlite-CYnXobrn.js";
49
49
  import "./warnings-Ds_WSeah.js";
50
50
  import "./proxy-from-env-DxUIcU4P.js";
51
51
  import "./login-qr-ekueLD_2.js";
52
- import { n as formatAge } from "./channel-summary-B5A5dwvv.js";
52
+ import { n as formatAge } from "./channel-summary-CH6wx1K0.js";
53
53
  import "./device-identity-CpMBJtRJ.js";
54
54
  import "./client-BM6xyPUD.js";
55
55
  import { n as callGateway } from "./call-JFo1_L0m.js";
@@ -72,19 +72,19 @@ import "./event-log-CL2tmo5v.js";
72
72
  import { t as resolveChannelDefaultAccountId } from "./helpers-Cg7M1qEA.js";
73
73
  import "./note-DdyFyHLV.js";
74
74
  import { t as createClackPrompter } from "./clack-prompter-CCgKKgnN.js";
75
- import { i as reloadOnboardingPluginRegistry, n as setupChannels, r as ensureOnboardingPluginInstalled } from "./onboard-channels-BnIMjfBj.js";
75
+ import { i as reloadOnboardingPluginRegistry, n as setupChannels, r as ensureOnboardingPluginInstalled } from "./onboard-channels-DHCJInN8.js";
76
76
  import { i as listChannelPluginCatalogEntries } from "./plugin-auto-enable-WPZfV7Dp.js";
77
- import "./archive-DE4kADTX.js";
77
+ import "./archive-HObtzULx.js";
78
78
  import "./skill-scanner-BCGU84pB.js";
79
- import "./installs-HuaU-gei.js";
79
+ import "./installs-DBs6jN3U.js";
80
80
  import "./service-CgbWVYSz.js";
81
81
  import "./systemd-CKUsCXqF.js";
82
82
  import "./diagnostics-CBJs_eaH.js";
83
83
  import { t as collectChannelStatusIssues } from "./channels-status-issues-D_rjAibL.js";
84
- import { n as hasExplicitOptions } from "./plugin-registry-CfCEYzLU.js";
84
+ import { n as hasExplicitOptions } from "./plugin-registry-C3CWtE6C.js";
85
85
  import "./daemon-runtime-CyWCBhlo.js";
86
86
  import { t as ensureLocalGatewayRunning } from "./ensure-local-gateway-C0w2QZKQ.js";
87
- import { t as formatCliChannelOptions } from "./channel-options-BBbtWCTa.js";
87
+ import { t as formatCliChannelOptions } from "./channel-options-DHCxqaUS.js";
88
88
  import { t as buildChannelAccountSnapshot } from "./status-CoVkpNVT.js";
89
89
  import { t as parseLogLine } from "./parse-log-line-Bd_MyTAW.js";
90
90
  import process$1 from "node:process";
@@ -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-CUhbam4l.js";
2
+ export { registerDaemonCli, runDaemonInstall, runDaemonRestart, runDaemonStart, runDaemonStatus, runDaemonStop, runDaemonUninstall } from "../daemon-cli-CkEEKXwT.js";
@@ -1,5 +1,5 @@
1
1
  import "./pi-embedded-helpers-wHze4-BZ.js";
2
- import { St as loadSKYKOIPlugins } from "./reply-HLX1_gZC.js";
2
+ import { St as loadSKYKOIPlugins } from "./reply-BOrQK8w_.js";
3
3
  import { t as createSubsystemLogger } from "./subsystem-hATE68va.js";
4
4
  import "./paths-VdmjGGyc.js";
5
5
  import "./theme-C5EwWDWE.js";
@@ -47,7 +47,7 @@ import "./sqlite-CYnXobrn.js";
47
47
  import "./warnings-Ds_WSeah.js";
48
48
  import "./proxy-from-env-DxUIcU4P.js";
49
49
  import "./login-qr-ekueLD_2.js";
50
- import "./channel-summary-B5A5dwvv.js";
50
+ import "./channel-summary-CH6wx1K0.js";
51
51
  import "./device-identity-CpMBJtRJ.js";
52
52
  import "./client-BM6xyPUD.js";
53
53
  import "./call-JFo1_L0m.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-dUCOoTTH.js";
3
+ import { n as registerSubCliByName, t as getSubCliEntries } from "./register.subclis-dKeKhf0E.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 { H as formatTargetDisplay, Ht as registerMemoryCli, P as runMessageAction, Ut as runMemoryStatus, W as CHANNEL_MESSAGE_ACTION_NAMES, _t as CHANNEL_TARGETS_DESCRIPTION, tr as lookupContextTokens, vt as CHANNEL_TARGET_DESCRIPTION } from "./reply-HLX1_gZC.js";
1
+ import { H as formatTargetDisplay, Ht as registerMemoryCli, P as runMessageAction, Ut as runMemoryStatus, W as CHANNEL_MESSAGE_ACTION_NAMES, _t as CHANNEL_TARGETS_DESCRIPTION, tr as lookupContextTokens, vt as CHANNEL_TARGET_DESCRIPTION } from "./reply-BOrQK8w_.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";
@@ -21,32 +21,32 @@ import { n as runCommandWithRuntime } from "./cli-utils-DnPwZrf6.js";
21
21
  import { n as withProgress } from "./progress-EICDZThJ.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-FO60qqTG.js";
23
23
  import { n as stylePromptMessage, r as stylePromptTitle, t as stylePromptHint } from "./prompt-style-hXUwxLRe.js";
24
- import { t as createDefaultDeps } from "./deps-DDID81el.js";
24
+ import { t as createDefaultDeps } from "./deps-2m5USHxz.js";
25
25
  import { t as assertSupportedRuntime } from "./runtime-guard-Btp4Sks0.js";
26
26
  import { t as resolveChannelDefaultAccountId } from "./helpers-Cg7M1qEA.js";
27
27
  import { n as logConfigUpdated, t as formatConfigPath } from "./logging-CSvbGeqF.js";
28
28
  import { t as WizardCancelledError } from "./prompts-B1n8UQzX.js";
29
29
  import { t as createClackPrompter } from "./clack-prompter-CCgKKgnN.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-8k3dyEde.js";
31
- import { d as applyAuthChoice, f as applyOpenAIConfig, h as promptAuthChoiceGrouped, m as applyGoogleGeminiModelDefault, p as upsertSharedEnvVar, u as warnIfModelConfigLooksOff } from "./onboard-skills-BFOHiGrG.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-010qCwDG.js";
33
- import { n as setupChannels } from "./onboard-channels-BnIMjfBj.js";
34
- import { i as healthCommand } from "./health-format-C2t6NgZL.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-CvpP9F5R.js";
31
+ import { d as applyAuthChoice, f as applyOpenAIConfig, h as promptAuthChoiceGrouped, m as applyGoogleGeminiModelDefault, p as upsertSharedEnvVar, u as warnIfModelConfigLooksOff } from "./onboard-skills-ChxI_iEW.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-BFkrzRdJ.js";
33
+ import { n as setupChannels } from "./onboard-channels-DHCJInN8.js";
34
+ import { i as healthCommand } from "./health-format-Dk2bjrto.js";
35
35
  import { t as renderTable } from "./table-C-_kZeNX.js";
36
36
  import { t as resolveGatewayService } from "./service-CgbWVYSz.js";
37
37
  import { r as isSystemdUserServiceAvailable } from "./systemd-CKUsCXqF.js";
38
- import { l as getVerboseFlag, o as getFlagValue, r as registerSubCliCommands, s as getPositiveIntFlagValue, u as hasFlag } from "./register.subclis-dUCOoTTH.js";
38
+ import { l as getVerboseFlag, o as getFlagValue, r as registerSubCliCommands, s as getPositiveIntFlagValue, u as hasFlag } from "./register.subclis-dKeKhf0E.js";
39
39
  import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-BLmNrKaj.js";
40
40
  import { t as formatHelpExamples } from "./help-format-BgbvAVIq.js";
41
41
  import { t as adminUnlockCommand } from "./admin-unlock-CQOg2Vub.js";
42
- import { a as createOutboundSendDeps, n as resolveSessionKeyForRequest, t as koiCommand } from "./koi-BXwWP8SZ.js";
43
- import { n as hasExplicitOptions, t as ensurePluginRegistryLoaded } from "./plugin-registry-CfCEYzLU.js";
42
+ import { a as createOutboundSendDeps, n as resolveSessionKeyForRequest, t as koiCommand } from "./koi-DfcU57_Z.js";
43
+ import { n as hasExplicitOptions, t as ensurePluginRegistryLoaded } from "./plugin-registry-C3CWtE6C.js";
44
44
  import { n as parsePositiveIntOrUndefined, t as collectOption } from "./helpers-fRxKNzeV.js";
45
- import { i as CONFIGURE_WIZARD_SECTIONS, n as configureCommand, r as configureCommandWithSections } from "./configure-uv_lsCRi.js";
45
+ import { i as CONFIGURE_WIZARD_SECTIONS, n as configureCommand, r as configureCommandWithSections } from "./configure-BR4-y9wN.js";
46
46
  import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-CyWCBhlo.js";
47
47
  import { n as ensureSystemdUserLingerNonInteractive } from "./systemd-linger-Cu8buxAR.js";
48
48
  import { t as loginCommand } from "./login-CeuNNf3r.js";
49
- import { n as loadAndMaybeMigrateDoctorConfig, t as doctorCommand } from "./doctor-CnvS0ZdH.js";
49
+ import { n as loadAndMaybeMigrateDoctorConfig, t as doctorCommand } from "./doctor-DaWXIYsb.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-uv_lsCRi.js").then((n) => n.t);
2800
+ const { CONFIGURE_WIZARD_SECTIONS, configureCommand, configureCommandWithSections } = await import("./configure-BR4-y9wN.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-DBU8XXEy.js").then((n) => n.n);
3108
+ const { runTui } = await import("./tui-BLENcW7_.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,
@@ -14,9 +14,9 @@ import { n as logConfigUpdated } from "./logging-CSvbGeqF.js";
14
14
  import { t as note$1 } from "./note-DdyFyHLV.js";
15
15
  import { t as WizardCancelledError } from "./prompts-B1n8UQzX.js";
16
16
  import { t as createClackPrompter } from "./clack-prompter-CCgKKgnN.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-BFOHiGrG.js";
18
- import { n as setupChannels, t as noteChannelStatus } from "./onboard-channels-BnIMjfBj.js";
19
- import { i as healthCommand, t as formatHealthCheckFailure } from "./health-format-C2t6NgZL.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-ChxI_iEW.js";
18
+ import { n as setupChannels, t as noteChannelStatus } from "./onboard-channels-DHCJInN8.js";
19
+ import { i as healthCommand, t as formatHealthCheckFailure } from "./health-format-Dk2bjrto.js";
20
20
  import { t as resolveGatewayService } from "./service-CgbWVYSz.js";
21
21
  import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-C6cSlkkc.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-CyWCBhlo.js";
@@ -15,7 +15,7 @@ import { n as withProgress } from "./progress-EICDZThJ.js";
15
15
  import { h as resolveControlUiLinks } from "./onboard-helpers-FO60qqTG.js";
16
16
  import { n as isWSLEnv, t as isWSL } from "./wsl-HoIhaCSz.js";
17
17
  import { d as resolveGatewaySystemdServiceName, l as resolveGatewayLaunchAgentLabel } from "./constants-FTouVoUS.js";
18
- import { t as createDefaultDeps } from "./deps-DDID81el.js";
18
+ import { t as createDefaultDeps } from "./deps-2m5USHxz.js";
19
19
  import { o as resolveGatewayLogPaths, t as resolveGatewayService } from "./service-CgbWVYSz.js";
20
20
  import { r as isSystemdUserServiceAvailable } from "./systemd-CKUsCXqF.js";
21
21
  import { t as readLastGatewayErrorLine } from "./diagnostics-CBJs_eaH.js";
@@ -1,4 +1,4 @@
1
- import { gn as sendMessageWhatsApp, kt as sendMessageIMessage, nn as sendMessageTelegram, rn as sendMessageDiscord, vn as sendMessageSlack } from "./reply-HLX1_gZC.js";
1
+ import { gn as sendMessageWhatsApp, kt as sendMessageIMessage, nn as sendMessageTelegram, rn as sendMessageDiscord, vn as sendMessageSlack } from "./reply-BOrQK8w_.js";
2
2
  import { b as sendMessageSignal } from "./deliver-CyCC5657.js";
3
3
 
4
4
  //#region src/cli/deps.ts
@@ -1,4 +1,4 @@
1
- import { St as loadSKYKOIPlugins, lr as loadModelCatalog } from "./reply-HLX1_gZC.js";
1
+ import { St as loadSKYKOIPlugins, lr as loadModelCatalog } from "./reply-BOrQK8w_.js";
2
2
  import { s as defaultRuntime, w as getResolvedLoggerSettings } from "./subsystem-hATE68va.js";
3
3
  import { d as resolveIsNixMode, f as resolveLegacyStateDirs, g as resolveStateDir, m as resolveOAuthDir, p as resolveNewStateDir, t as CONFIG_PATH, u as resolveGatewayPort } from "./paths-VdmjGGyc.js";
4
4
  import { a as buildKoiMainSessionKey, l as normalizeKoiId, r as DEFAULT_MAIN_KEY, t as DEFAULT_ACCOUNT_ID } from "./session-key-B2OXLVi_.js";
@@ -26,7 +26,7 @@ import { t as resolveChannelDefaultAccountId } from "./helpers-Cg7M1qEA.js";
26
26
  import { n as logConfigUpdated } from "./logging-CSvbGeqF.js";
27
27
  import { t as note$1 } from "./note-DdyFyHLV.js";
28
28
  import { t as applyPluginAutoEnable } from "./plugin-auto-enable-WPZfV7Dp.js";
29
- import { i as healthCommand, t as formatHealthCheckFailure } from "./health-format-C2t6NgZL.js";
29
+ import { i as healthCommand, t as formatHealthCheckFailure } from "./health-format-Dk2bjrto.js";
30
30
  import { t as runGatewayUpdate } from "./update-runner-BF2ZUZuV.js";
31
31
  import { i as resolveGatewayAuth } from "./auth-CeZ-Kq3Y.js";
32
32
  import { t as buildWorkspaceSkillStatus } from "./skills-status-B0uJbSLd.js";
@@ -34,7 +34,7 @@ import { a as repairLaunchAgentBootstrap, i as launchAgentPlistExists, n as isLa
34
34
  import { r as isSystemdUserServiceAvailable } from "./systemd-CKUsCXqF.js";
35
35
  import { t as readLastGatewayErrorLine } from "./diagnostics-CBJs_eaH.js";
36
36
  import { t as collectChannelStatusIssues } from "./channels-status-issues-D_rjAibL.js";
37
- import { n as doctorShellCompletion } from "./doctor-completion-BGwOoan6.js";
37
+ import { n as doctorShellCompletion } from "./doctor-completion-Caj2jdm9.js";
38
38
  import { n as resolveControlUiDistIndexHealth, r as resolveControlUiDistIndexPathForRoot } from "./control-ui-assets-C6cSlkkc.js";
39
39
  import { a as gatewayInstallErrorHint, d as renderSystemNodeWarning, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, p as resolveSystemNodeInfo, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-CyWCBhlo.js";
40
40
  import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-Cu8buxAR.js";
@@ -3,7 +3,7 @@ import { r as resolveCliName, t as formatCliCommand } from "./command-format-DOY
3
3
  import { t as VERSION } from "./version-BKRSzdyx.js";
4
4
  import { t as note } from "./note-DdyFyHLV.js";
5
5
  import { c as compareSemverStrings, s as checkUpdateStatus } from "./update-runner-BF2ZUZuV.js";
6
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-CiO8SxUw.js";
6
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-Ct7r26aE.js";
7
7
  import path from "node:path";
8
8
  import { spawnSync } from "node:child_process";
9
9
 
package/dist/entry.js CHANGED
@@ -247,7 +247,7 @@ if (!ensureExperimentalWarningSuppressed()) {
247
247
  applyCliProfileEnv({ profile: parsed.profile });
248
248
  process$1.argv = parsed.argv;
249
249
  }
250
- import("./run-main-BduipNtE.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
250
+ import("./run-main-CjYE4GgM.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
251
251
  console.error("[SKYKOI] Failed to start CLI:", error instanceof Error ? error.stack ?? error.message : error);
252
252
  process$1.exitCode = 1;
253
253
  });
@@ -1,5 +1,5 @@
1
1
  import "./pi-embedded-helpers-wHze4-BZ.js";
2
- import { Sn as resolveKoiIdentity, c as runEmbeddedPiKoi, wr as resolveKoiTimeoutMs } from "./reply-HLX1_gZC.js";
2
+ import { Sn as resolveKoiIdentity, c as runEmbeddedPiKoi, wr as resolveKoiTimeoutMs } from "./reply-BOrQK8w_.js";
3
3
  import "./subsystem-hATE68va.js";
4
4
  import "./paths-VdmjGGyc.js";
5
5
  import "./theme-C5EwWDWE.js";
@@ -47,7 +47,7 @@ import "./sqlite-CYnXobrn.js";
47
47
  import "./warnings-Ds_WSeah.js";
48
48
  import "./proxy-from-env-DxUIcU4P.js";
49
49
  import "./login-qr-ekueLD_2.js";
50
- import "./channel-summary-B5A5dwvv.js";
50
+ import "./channel-summary-CH6wx1K0.js";
51
51
  import "./device-identity-CpMBJtRJ.js";
52
52
  import "./client-BM6xyPUD.js";
53
53
  import "./call-JFo1_L0m.js";
@@ -1,6 +1,6 @@
1
1
  import { o as __toESM } from "./chunk-D_gEzPfs.js";
2
2
  import { B as normalizeThinkLevel, F as formatXHighModelHint, H as normalizeVerboseLevel, P as formatThinkingLevels, R as normalizeElevatedLevel, V as normalizeUsageDisplay, W as supportsXHighThinking, z as normalizeReasoningLevel } from "./pi-embedded-helpers-wHze4-BZ.js";
3
- import { $t as getLastHeartbeatEvent, A as readSessionMessages, An as OPENAI_TTS_MODELS, At as getRemoteSkillEligibility, B as resolveOutboundTarget, Bn as setTtsEnabled, Bt as getHookType, C as listSessionsFromStore, Cn as formatUserTime, Ct as loadProviderUsageSummary, D as resolveSessionModelRef, Dn as createInternalHookEvent, Dt as handleSlackHttpRequest, E as resolveGatewaySessionStoreTarget, En as clearInternalHooks, F as ensureOutboundSessionEntry, Fn as resolveTtsApiKey, Ft as setSkillsRemoteRegistry, G as readRecentActivity, Gn as setCommandLaneConcurrency, Gt as createReplyPrefixOptions, Hn as textToSpeech, I as resolveOutboundSessionRoute, In as resolveTtsAutoMode, It as getSkillsSnapshotVersion, J as nylasLinked, Jn as stopDiagnosticHeartbeat, Jt as registerUnhandledRejectionHandler, Kn as CommandLane, Kt as normalizeGroupActivation, Ln as resolveTtsConfig, Lt as registerSkillsChangeListener, M as resolveSessionTranscriptCandidates, Mn as getTtsProvider, Mt as recordRemoteNodeInfo, N as stripEnvelopeFromMessages, Nn as isTtsEnabled, Nt as refreshRemoteBinsForConnectedNodes, O as archiveFileOnDisk, On as registerInternalHook, Pn as isTtsProviderConfigured, Pt as refreshRemoteNodeBins, Rn as resolveTtsPrefsPath, Rt as buildSafeExternalPrompt, S as listKoisForGateway, Sn as resolveKoiIdentity, Sr as normalizeMimeList, St as loadSKYKOIPlugins, T as loadSessionEntry, Tn as resolveUserTimezone, U as resetDirectoryCache, V as resolveSessionDeliveryTarget, Vn as setTtsProvider, Vt as isExternalHookSession, X as readNylasGrant, Xn as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, Xt as buildHistoryContextFromEntries, Y as readMessages, Yn as isDiagnosticsEnabled, Zt as resolveHeartbeatVisibility, _ as getCanvasResource, _n as normalizePollInput, _r as DEFAULT_INPUT_PDF_MAX_PIXELS, a as normalizeSendPolicy, ar as parseVerboseOverride, at as consumeGatewaySigusr1RestartAuthorization, b as replaceCanvasResource, br as extractFileContentFromSource, c as runEmbeddedPiKoi, cn as createReplyDispatcher, ct as setGatewaySigusr1RestartPolicy, d as waitForEmbeddedPiRunEnd, dn as stopSubkoisForRequester, dr as DEFAULT_INPUT_FILE_MAX_CHARS, dt as inferLegacyName, en as onHeartbeatEvent, er as stripHeartbeatToken, fn as findSubkoiRunByChildSessionKey, fr as DEFAULT_INPUT_FILE_MIMES, ft as normalizeOptionalKoiId, g as canvasUri, gr as DEFAULT_INPUT_PDF_MAX_PAGES, gt as migrateLegacyCronPayload, h as createSKYKOITools, hr as DEFAULT_INPUT_MAX_REDIRECTS, ht as normalizeRequiredName, i as runCliKoi, in as getChannelActivity, ir as applyVerboseOverride, it as authorizeGatewaySigusr1Restart, j as readSessionPreviewItemsFromTranscript, jn as OPENAI_TTS_VOICES, jt as primeRemoteSkillsCache, k as capArrayByJsonBytes, kn as triggerInternalHook, l as abortEmbeddedPiRun, ln as formatZonedTimestamp, lr as loadModelCatalog, lt as normalizeCronJobCreate, m as initRuntimeContext, mn as initSubkoiRegistry, mr as DEFAULT_INPUT_IMAGE_MIMES, mt as normalizePayloadToSystemText, n as getCliSessionId, nt as runWithModelFallback, o as resolveSendPolicy, or as enqueueSystemEvent, ot as isGatewaySigusr1RestartExternallyAllowed, pn as findSubkoiRunByRunId, pr as DEFAULT_INPUT_IMAGE_MAX_BYTES, pt as normalizeOptionalText, qn as startDiagnosticHeartbeat, r as setCliSessionId, rr as applyModelOverrideToSessionEntry, s as clearSessionQueues, sn as dispatchInboundMessage, sr as isSystemEventContextChanged, st as scheduleGatewaySigusr1Restart, tr as lookupContextTokens, tt as readSkykoiEnvVar, un as isAbortTrigger, ur as DEFAULT_INPUT_FILE_MAX_BYTES, ut as normalizeCronJobPatch, v as listCanvasUris, vr as DEFAULT_INPUT_PDF_MIN_TEXT_CHARS, w as loadCombinedSessionStoreForGateway, wn as resolveUserTimeFormat, wr as resolveKoiTimeoutMs, x as resolveAnnounceTargetFromKey, xr as extractImageContentFromSource, xt as getPluginToolMeta, y as onCanvasChange, yr as DEFAULT_INPUT_TIMEOUT_MS, yt as requestHeartbeatNow, zn as resolveTtsProviderOrder, zt as detectSuspiciousPatterns } from "./reply-HLX1_gZC.js";
3
+ import { $t as getLastHeartbeatEvent, A as readSessionMessages, An as OPENAI_TTS_MODELS, At as getRemoteSkillEligibility, B as resolveOutboundTarget, Bn as setTtsEnabled, Bt as getHookType, C as listSessionsFromStore, Cn as formatUserTime, Ct as loadProviderUsageSummary, D as resolveSessionModelRef, Dn as createInternalHookEvent, Dt as handleSlackHttpRequest, E as resolveGatewaySessionStoreTarget, En as clearInternalHooks, F as ensureOutboundSessionEntry, Fn as resolveTtsApiKey, Ft as setSkillsRemoteRegistry, G as readRecentActivity, Gn as setCommandLaneConcurrency, Gt as createReplyPrefixOptions, Hn as textToSpeech, I as resolveOutboundSessionRoute, In as resolveTtsAutoMode, It as getSkillsSnapshotVersion, J as nylasLinked, Jn as stopDiagnosticHeartbeat, Jt as registerUnhandledRejectionHandler, Kn as CommandLane, Kt as normalizeGroupActivation, Ln as resolveTtsConfig, Lt as registerSkillsChangeListener, M as resolveSessionTranscriptCandidates, Mn as getTtsProvider, Mt as recordRemoteNodeInfo, N as stripEnvelopeFromMessages, Nn as isTtsEnabled, Nt as refreshRemoteBinsForConnectedNodes, O as archiveFileOnDisk, On as registerInternalHook, Pn as isTtsProviderConfigured, Pt as refreshRemoteNodeBins, Rn as resolveTtsPrefsPath, Rt as buildSafeExternalPrompt, S as listKoisForGateway, Sn as resolveKoiIdentity, Sr as normalizeMimeList, St as loadSKYKOIPlugins, T as loadSessionEntry, Tn as resolveUserTimezone, U as resetDirectoryCache, V as resolveSessionDeliveryTarget, Vn as setTtsProvider, Vt as isExternalHookSession, X as readNylasGrant, Xn as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, Xt as buildHistoryContextFromEntries, Y as readMessages, Yn as isDiagnosticsEnabled, Zt as resolveHeartbeatVisibility, _ as getCanvasResource, _n as normalizePollInput, _r as DEFAULT_INPUT_PDF_MAX_PIXELS, a as normalizeSendPolicy, ar as parseVerboseOverride, at as consumeGatewaySigusr1RestartAuthorization, b as replaceCanvasResource, br as extractFileContentFromSource, c as runEmbeddedPiKoi, cn as createReplyDispatcher, ct as setGatewaySigusr1RestartPolicy, d as waitForEmbeddedPiRunEnd, dn as stopSubkoisForRequester, dr as DEFAULT_INPUT_FILE_MAX_CHARS, dt as inferLegacyName, en as onHeartbeatEvent, er as stripHeartbeatToken, fn as findSubkoiRunByChildSessionKey, fr as DEFAULT_INPUT_FILE_MIMES, ft as normalizeOptionalKoiId, g as canvasUri, gr as DEFAULT_INPUT_PDF_MAX_PAGES, gt as migrateLegacyCronPayload, h as createSKYKOITools, hr as DEFAULT_INPUT_MAX_REDIRECTS, ht as normalizeRequiredName, i as runCliKoi, in as getChannelActivity, ir as applyVerboseOverride, it as authorizeGatewaySigusr1Restart, j as readSessionPreviewItemsFromTranscript, jn as OPENAI_TTS_VOICES, jt as primeRemoteSkillsCache, k as capArrayByJsonBytes, kn as triggerInternalHook, l as abortEmbeddedPiRun, ln as formatZonedTimestamp, lr as loadModelCatalog, lt as normalizeCronJobCreate, m as initRuntimeContext, mn as initSubkoiRegistry, mr as DEFAULT_INPUT_IMAGE_MIMES, mt as normalizePayloadToSystemText, n as getCliSessionId, nt as runWithModelFallback, o as resolveSendPolicy, or as enqueueSystemEvent, ot as isGatewaySigusr1RestartExternallyAllowed, pn as findSubkoiRunByRunId, pr as DEFAULT_INPUT_IMAGE_MAX_BYTES, pt as normalizeOptionalText, qn as startDiagnosticHeartbeat, r as setCliSessionId, rr as applyModelOverrideToSessionEntry, s as clearSessionQueues, sn as dispatchInboundMessage, sr as isSystemEventContextChanged, st as scheduleGatewaySigusr1Restart, tr as lookupContextTokens, tt as readSkykoiEnvVar, un as isAbortTrigger, ur as DEFAULT_INPUT_FILE_MAX_BYTES, ut as normalizeCronJobPatch, v as listCanvasUris, vr as DEFAULT_INPUT_PDF_MIN_TEXT_CHARS, w as loadCombinedSessionStoreForGateway, wn as resolveUserTimeFormat, wr as resolveKoiTimeoutMs, x as resolveAnnounceTargetFromKey, xr as extractImageContentFromSource, xt as getPluginToolMeta, y as onCanvasChange, yr as DEFAULT_INPUT_TIMEOUT_MS, yt as requestHeartbeatNow, zn as resolveTtsProviderOrder, zt as detectSuspiciousPatterns } from "./reply-BOrQK8w_.js";
4
4
  import { C as getLogger, D as CHANNEL_IDS, L as getActivePluginRegistry, S as getChildLogger, a as setConsoleTimestampPrefix, i as setConsoleSubsystemFilter, k as DEFAULT_CHAT_CHANNEL, n as runtimeForLogger, s as defaultRuntime, t as createSubsystemLogger, v as setVerbose, w as getResolvedLoggerSettings } from "./subsystem-hATE68va.js";
5
5
  import { g as resolveStateDir, i as isNixMode, l as resolveGatewayLockDir, o as resolveConfigPath, r as STATE_DIR, t as CONFIG_PATH, u as resolveGatewayPort } from "./paths-VdmjGGyc.js";
6
6
  import { n as isRich, r as theme, t as colorize } from "./theme-C5EwWDWE.js";
@@ -53,7 +53,7 @@ import "./sqlite-CYnXobrn.js";
53
53
  import "./warnings-Ds_WSeah.js";
54
54
  import "./proxy-from-env-DxUIcU4P.js";
55
55
  import "./login-qr-ekueLD_2.js";
56
- import "./channel-summary-B5A5dwvv.js";
56
+ import "./channel-summary-CH6wx1K0.js";
57
57
  import { i as normalizeDevicePublicKeyBase64Url, s as verifyDeviceSignature, t as deriveDeviceIdFromPublicKey } from "./device-identity-CpMBJtRJ.js";
58
58
  import { n as pickPrimaryTailnetIPv6, t as pickPrimaryTailnetIPv4 } from "./tailnet-DSvf7Jwy.js";
59
59
  import { $ as validateNodePairListParams, A as validateExecApprovalResolveParams, At as errorShape, B as validateKoiIdentityParams, C as validateCronUpdateParams, Ct as validateWebLoginWaitParams, D as validateDeviceTokenRevokeParams, Dt as validateWizardStatusParams, E as validateDevicePairRejectParams, Et as validateWizardStartParams, F as validateKoiCreateParams, G as validateLogsTailParams, H as validateKoiParams, I as validateKoiDeleteParams, J as validateNodeEventParams, K as validateModelsListParams, L as validateKoiFilesGetParams, M as validateExecApprovalsNodeGetParams, Mt as parseSessionLabel, N as validateExecApprovalsNodeSetParams, Nt as buildDeviceAuthPayload, O as validateDeviceTokenRotateParams, Ot as PROTOCOL_VERSION, P as validateExecApprovalsSetParams, Q as validateNodePairApproveParams, R as validateKoiFilesListParams, S as validateCronStatusParams, St as validateWebLoginStartParams, T as validateDevicePairListParams, Tt as validateWizardNextParams, U as validateKoiUpdateParams, V as validateKoiListParams, W as validateKoiWaitParams, X as validateNodeInvokeResultParams, Y as validateNodeInvokeParams, Z as validateNodeListParams, _ as validateCronAddParams, _t as validateSkillsStatusParams, a as validateChannelsLogoutParams, at as validateRequestFrame, b as validateCronRunParams, bt as validateUpdateRunParams, c as validateChatHistoryParams, ct as validateSessionsDeleteParams, d as validateConfigApplyParams, dt as validateSessionsPreviewParams, et as validateNodePairRejectParams, f as validateConfigGetParams, ft as validateSessionsResetParams, g as validateConnectParams, gt as validateSkillsInstallParams, h as validateConfigSetParams, ht as validateSkillsBinsParams, i as formatValidationErrors, it as validatePollParams, j as validateExecApprovalsGetParams, k as validateExecApprovalRequestParams, kt as ErrorCodes, l as validateChatInjectParams, lt as validateSessionsListParams, m as validateConfigSchemaParams, mt as validateSessionsUsageParams, n as GatewayClient, nt as validateNodePairVerifyParams, o as validateChannelsStatusParams, ot as validateSendParams, p as validateConfigPatchParams, pt as validateSessionsResolveParams, q as validateNodeDescribeParams, rt as validateNodeRenameParams, s as validateChatAbortParams, st as validateSessionsCompactParams, tt as validateNodePairRequestParams, u as validateChatSendParams, ut as validateSessionsPatchParams, v as validateCronListParams, vt as validateSkillsUpdateParams, w as validateDevicePairApproveParams, wt as validateWizardCancelParams, x as validateCronRunsParams, xt as validateWakeParams, y as validateCronRemoveParams, yt as validateTalkModeParams, z as validateKoiFilesSetParams } from "./client-BM6xyPUD.js";
@@ -78,7 +78,7 @@ import { t as parseAbsoluteTimeMs } from "./parse-DaVCp9Sd.js";
78
78
  import { a as summarizeRestartSentinel, n as formatDoctorNonInteractiveHint, r as formatRestartSentinelMessage, s as writeRestartSentinel, t as consumeRestartSentinel } from "./restart-sentinel-BqQzvk3k.js";
79
79
  import { n as resolveMessageChannelSelection } from "./channel-selection-DhBJOelv.js";
80
80
  import { i as readEventsSince, n as clearEventLogForSession, o as subscribeAll, r as hydrateSession, t as appendEvent } from "./event-log-CL2tmo5v.js";
81
- import { n as createOutboundSendDeps, t as createDefaultDeps } from "./deps-DDID81el.js";
81
+ import { n as createOutboundSendDeps, t as createDefaultDeps } from "./deps-2m5USHxz.js";
82
82
  import { i as enableTailscaleServe, n as disableTailscaleServe, o as getTailnetHostname, r as enableTailscaleFunnel, t as disableTailscaleFunnel } from "./tailscale-CDBmRrBH.js";
83
83
  import { t as ensureSKYKOICliOnPath } from "./path-env-DLiKMTfX.js";
84
84
  import { t as forceFreePortAndWait } from "./ports-Bd1_aERh.js";
@@ -86,15 +86,15 @@ import { t as resolveChannelDefaultAccountId } from "./helpers-Cg7M1qEA.js";
86
86
  import "./logging-CSvbGeqF.js";
87
87
  import "./note-DdyFyHLV.js";
88
88
  import { t as WizardCancelledError } from "./prompts-B1n8UQzX.js";
89
- import { c as loadKoiIdentity, d as loadKoiIdentityFromWorkspace, i as applyKoiConfig, l as pruneKoiConfig, o as findKoiEntryIndex, r as getStatusSummary, s as listKoiEntries, t as runOnboardingWizard } from "./onboarding-8k3dyEde.js";
90
- import { n as installSkill } from "./onboard-skills-BFOHiGrG.js";
91
- import "./github-copilot-auth-010qCwDG.js";
92
- import "./onboard-channels-BnIMjfBj.js";
89
+ import { c as loadKoiIdentity, d as loadKoiIdentityFromWorkspace, i as applyKoiConfig, l as pruneKoiConfig, o as findKoiEntryIndex, r as getStatusSummary, s as listKoiEntries, t as runOnboardingWizard } from "./onboarding-CvpP9F5R.js";
90
+ import { n as installSkill } from "./onboard-skills-ChxI_iEW.js";
91
+ import "./github-copilot-auth-BFkrzRdJ.js";
92
+ import "./onboard-channels-DHCJInN8.js";
93
93
  import { r as buildChannelUiCatalog, t as applyPluginAutoEnable } from "./plugin-auto-enable-WPZfV7Dp.js";
94
- import "./archive-DE4kADTX.js";
94
+ import "./archive-HObtzULx.js";
95
95
  import "./skill-scanner-BCGU84pB.js";
96
- import "./installs-HuaU-gei.js";
97
- import { c as startHeartbeatRunner, n as formatHealthChannelLines, o as runHeartbeatOnce, r as getHealthSnapshot, s as setHeartbeatsEnabled } from "./health-format-C2t6NgZL.js";
96
+ import "./installs-DBs6jN3U.js";
97
+ import { c as startHeartbeatRunner, n as formatHealthChannelLines, o as runHeartbeatOnce, r as getHealthSnapshot, s as setHeartbeatsEnabled } from "./health-format-Dk2bjrto.js";
98
98
  import { c as compareSemverStrings, d as resolveNpmChannelTag, g as normalizeUpdateChannel, l as fetchNpmLatestVersion, p as DEFAULT_PACKAGE_CHANNEL, s as checkUpdateStatus, t as runGatewayUpdate } from "./update-runner-BF2ZUZuV.js";
99
99
  import { i as resolveGatewayAuth, n as authorizeGatewayConnect, r as isLocalDirectRequest, t as assertGatewayAuthConfigured } from "./auth-CeZ-Kq3Y.js";
100
100
  import { i as probeGateway } from "./audit-DV5HL3bN.js";
@@ -105,20 +105,20 @@ import { p as resolveGatewayStateDir } from "./systemd-CKUsCXqF.js";
105
105
  import "./diagnostics-CBJs_eaH.js";
106
106
  import "./node-service-CnU49y0d.js";
107
107
  import "./channels-status-issues-D_rjAibL.js";
108
- import "./doctor-completion-BGwOoan6.js";
109
- import "./register.subclis-dUCOoTTH.js";
110
- import { a as createOutboundSendDeps$1, i as resolveKoiOutboundTarget, r as resolveKoiDeliveryPlan, t as koiCommand } from "./koi-BXwWP8SZ.js";
108
+ import "./doctor-completion-Caj2jdm9.js";
109
+ import "./register.subclis-dKeKhf0E.js";
110
+ import { a as createOutboundSendDeps$1, i as resolveKoiOutboundTarget, r as resolveKoiDeliveryPlan, t as koiCommand } from "./koi-DfcU57_Z.js";
111
111
  import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-C6cSlkkc.js";
112
112
  import "./daemon-runtime-CyWCBhlo.js";
113
113
  import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-BVskGRhX.js";
114
114
  import { n as discoverGatewayBeacons } from "./bonjour-discovery-DjvriZpZ.js";
115
- import "./completion-cli-CiO8SxUw.js";
115
+ import "./completion-cli-Ct7r26aE.js";
116
116
  import "./service-audit-C7Wq0dp9.js";
117
117
  import { i as shouldIncludeHook, n as loadWorkspaceHookEntries, r as resolveHookConfig } from "./hooks-status-CxWUG7p9.js";
118
- import "./tui-DBU8XXEy.js";
118
+ import "./tui-BLENcW7_.js";
119
119
  import { t as buildChannelAccountSnapshot } from "./status-CoVkpNVT.js";
120
120
  import "./shared-CsHmFsvZ.js";
121
- import { a as runDaemonStop, i as runDaemonStart, n as runDaemonStatus, o as runDaemonUninstall, r as runDaemonRestart, s as runDaemonInstall } from "./daemon-cli-CUhbam4l.js";
121
+ import { a as runDaemonStop, i as runDaemonStart, n as runDaemonStatus, o as runDaemonUninstall, r as runDaemonRestart, s as runDaemonInstall } from "./daemon-cli-CkEEKXwT.js";
122
122
  import { a as toOptionString, i as parsePort$1, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-BSR1syBP.js";
123
123
  import { i as setGatewayWsLogStyle, n as logWs, r as summarizeKoiEventForWsLog, t as formatForLog } from "./ws-log-D428yCp4.js";
124
124
  import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-CT6TfYhd.js";
@@ -11748,7 +11748,7 @@ const nodeHandlers = {
11748
11748
  const p = params;
11749
11749
  const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
11750
11750
  await respondUnavailableOnThrow(respond, async () => {
11751
- const { handleNodeEvent } = await import("./server-node-events-BbdGFwU-.js");
11751
+ const { handleNodeEvent } = await import("./server-node-events-DrvtPnhj.js");
11752
11752
  const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
11753
11753
  await handleNodeEvent({
11754
11754
  deps: context.deps,
@@ -1,4 +1,4 @@
1
- import { St as loadSKYKOIPlugins } from "./reply-HLX1_gZC.js";
1
+ import { St as loadSKYKOIPlugins } from "./reply-BOrQK8w_.js";
2
2
  import { t as createSubsystemLogger } from "./subsystem-hATE68va.js";
3
3
  import { l as normalizeKoiId } from "./session-key-B2OXLVi_.js";
4
4
  import { b as sleep } from "./utils-D019Z2NU.js";
@@ -1,4 +1,4 @@
1
- import { $n as resolveHeartbeatPrompt$1, Kn as CommandLane, Qn as isHeartbeatContentEffectivelyEmpty, Qt as emitHeartbeatEvent, R as resolveHeartbeatDeliveryTarget, Tn as resolveUserTimezone, Un as enqueueCommandInLane, Wn as getQueueSize, Xn as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, Zn as DEFAULT_HEARTBEAT_EVERY, Zt as resolveHeartbeatVisibility, bt as setHeartbeatWakeHandler, cr as peekSystemEvents, er as stripHeartbeatToken, t as getReplyFromConfig, tn as resolveIndicatorType, u as isEmbeddedPiRunActive, xn as resolveEffectiveMessagesConfig, yt as requestHeartbeatNow, z as resolveHeartbeatSenderContext } from "./reply-HLX1_gZC.js";
1
+ import { $n as resolveHeartbeatPrompt$1, Kn as CommandLane, Qn as isHeartbeatContentEffectivelyEmpty, Qt as emitHeartbeatEvent, R as resolveHeartbeatDeliveryTarget, Tn as resolveUserTimezone, Un as enqueueCommandInLane, Wn as getQueueSize, Xn as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, Zn as DEFAULT_HEARTBEAT_EVERY, Zt as resolveHeartbeatVisibility, bt as setHeartbeatWakeHandler, cr as peekSystemEvents, er as stripHeartbeatToken, t as getReplyFromConfig, tn as resolveIndicatorType, u as isEmbeddedPiRunActive, xn as resolveEffectiveMessagesConfig, yt as requestHeartbeatNow, z as resolveHeartbeatSenderContext } from "./reply-BOrQK8w_.js";
2
2
  import { p as info, s as defaultRuntime, t as createSubsystemLogger } from "./subsystem-hATE68va.js";
3
3
  import { n as isRich, r as theme, t as colorize } from "./theme-C5EwWDWE.js";
4
4
  import { d as resolveKoiIdFromSessionKey, h as toKoiStoreSessionKey, l as normalizeKoiId } from "./session-key-B2OXLVi_.js";
@@ -1,5 +1,5 @@
1
1
  import "./pi-embedded-helpers-wHze4-BZ.js";
2
- import "./reply-HLX1_gZC.js";
2
+ import "./reply-BOrQK8w_.js";
3
3
  import { s as defaultRuntime } from "./subsystem-hATE68va.js";
4
4
  import "./paths-VdmjGGyc.js";
5
5
  import { r as theme } from "./theme-C5EwWDWE.js";
@@ -48,7 +48,7 @@ import "./sqlite-CYnXobrn.js";
48
48
  import "./warnings-Ds_WSeah.js";
49
49
  import "./proxy-from-env-DxUIcU4P.js";
50
50
  import "./login-qr-ekueLD_2.js";
51
- import "./channel-summary-B5A5dwvv.js";
51
+ import "./channel-summary-CH6wx1K0.js";
52
52
  import "./device-identity-CpMBJtRJ.js";
53
53
  import "./client-BM6xyPUD.js";
54
54
  import "./call-JFo1_L0m.js";
@@ -67,10 +67,10 @@ import "./control-service-CA_ju030.js";
67
67
  import "./restart-sentinel-BqQzvk3k.js";
68
68
  import "./channel-selection-DhBJOelv.js";
69
69
  import "./event-log-CL2tmo5v.js";
70
- import { a as resolvePackedRootDir, i as resolveArchiveKind, n as fileExists, r as readJsonFile, t as extractArchive } from "./archive-DE4kADTX.js";
70
+ import { a as resolvePackedRootDir, i as resolveArchiveKind, n as fileExists, r as readJsonFile, t as extractArchive } from "./archive-HObtzULx.js";
71
71
  import { t as renderTable } from "./table-C-_kZeNX.js";
72
72
  import { a as parseFrontmatter, n as loadWorkspaceHookEntries, t as buildWorkspaceHookStatus } from "./hooks-status-CxWUG7p9.js";
73
- import { t as buildPluginStatusReport } from "./status-B3rms2GT.js";
73
+ import { t as buildPluginStatusReport } from "./status-CHa9_ku7.js";
74
74
  import fs from "node:fs";
75
75
  import path from "node:path";
76
76
  import os from "node:os";
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import "./pi-embedded-helpers-wHze4-BZ.js";
3
- import { Cr as applyTemplate, Wt as monitorWebChannel, Yt as waitForever, et as loadDotEnv, qt as installUnhandledRejectionHandler, t as getReplyFromConfig } from "./reply-HLX1_gZC.js";
3
+ import { Cr as applyTemplate, Wt as monitorWebChannel, Yt as waitForever, et as loadDotEnv, qt as installUnhandledRejectionHandler, t as getReplyFromConfig } from "./reply-BOrQK8w_.js";
4
4
  import { r as enableConsoleCapture } from "./subsystem-hATE68va.js";
5
5
  import "./paths-VdmjGGyc.js";
6
6
  import "./theme-C5EwWDWE.js";
@@ -48,7 +48,7 @@ import "./sqlite-CYnXobrn.js";
48
48
  import "./warnings-Ds_WSeah.js";
49
49
  import "./proxy-from-env-DxUIcU4P.js";
50
50
  import "./login-qr-ekueLD_2.js";
51
- import "./channel-summary-B5A5dwvv.js";
51
+ import "./channel-summary-CH6wx1K0.js";
52
52
  import "./device-identity-CpMBJtRJ.js";
53
53
  import "./client-BM6xyPUD.js";
54
54
  import "./call-JFo1_L0m.js";
@@ -67,25 +67,25 @@ import "./control-service-CA_ju030.js";
67
67
  import "./restart-sentinel-BqQzvk3k.js";
68
68
  import "./channel-selection-DhBJOelv.js";
69
69
  import "./event-log-CL2tmo5v.js";
70
- import { t as createDefaultDeps } from "./deps-DDID81el.js";
70
+ import { t as createDefaultDeps } from "./deps-2m5USHxz.js";
71
71
  import { l as ensureBinary, u as promptYesNo } from "./tailscale-CDBmRrBH.js";
72
72
  import { t as isMainModule } from "./is-main-9SjMCZPE.js";
73
73
  import { t as ensureSKYKOICliOnPath } from "./path-env-DLiKMTfX.js";
74
74
  import { t as assertSupportedRuntime } from "./runtime-guard-Btp4Sks0.js";
75
75
  import "./ports-Bd1_aERh.js";
76
- import "./config-guard-wK31kdIU.js";
76
+ import "./config-guard-CI8BUtkF.js";
77
77
  import "./logging-CSvbGeqF.js";
78
78
  import "./note-DdyFyHLV.js";
79
79
  import "./clack-prompter-CCgKKgnN.js";
80
- import "./onboarding-8k3dyEde.js";
81
- import "./onboard-skills-BFOHiGrG.js";
82
- import "./github-copilot-auth-010qCwDG.js";
83
- import "./onboard-channels-BnIMjfBj.js";
80
+ import "./onboarding-CvpP9F5R.js";
81
+ import "./onboard-skills-ChxI_iEW.js";
82
+ import "./github-copilot-auth-BFkrzRdJ.js";
83
+ import "./onboard-channels-DHCJInN8.js";
84
84
  import "./plugin-auto-enable-WPZfV7Dp.js";
85
- import "./archive-DE4kADTX.js";
85
+ import "./archive-HObtzULx.js";
86
86
  import "./skill-scanner-BCGU84pB.js";
87
- import "./installs-HuaU-gei.js";
88
- import "./health-format-C2t6NgZL.js";
87
+ import "./installs-DBs6jN3U.js";
88
+ import "./health-format-Dk2bjrto.js";
89
89
  import "./update-runner-BF2ZUZuV.js";
90
90
  import "./auth-CeZ-Kq3Y.js";
91
91
  import "./audit-DV5HL3bN.js";
@@ -96,15 +96,15 @@ import "./systemd-CKUsCXqF.js";
96
96
  import "./diagnostics-CBJs_eaH.js";
97
97
  import "./node-service-CnU49y0d.js";
98
98
  import "./channels-status-issues-D_rjAibL.js";
99
- import "./doctor-completion-BGwOoan6.js";
100
- import "./register.subclis-dUCOoTTH.js";
99
+ import "./doctor-completion-Caj2jdm9.js";
100
+ import "./register.subclis-dKeKhf0E.js";
101
101
  import "./gateway-rpc-BLmNrKaj.js";
102
102
  import "./help-format-BgbvAVIq.js";
103
103
  import "./admin-unlock-CQOg2Vub.js";
104
- import "./koi-BXwWP8SZ.js";
105
- import "./plugin-registry-CfCEYzLU.js";
104
+ import "./koi-DfcU57_Z.js";
105
+ import "./plugin-registry-C3CWtE6C.js";
106
106
  import "./control-ui-assets-C6cSlkkc.js";
107
- import "./configure-uv_lsCRi.js";
107
+ import "./configure-BR4-y9wN.js";
108
108
  import "./daemon-runtime-CyWCBhlo.js";
109
109
  import "./systemd-linger-Cu8buxAR.js";
110
110
  import "./widearea-dns-BVskGRhX.js";
@@ -112,13 +112,13 @@ import "./bonjour-discovery-DjvriZpZ.js";
112
112
  import "./ensure-local-gateway-C0w2QZKQ.js";
113
113
  import "./login-CeuNNf3r.js";
114
114
  import "./auth-health-BQXG_lTS.js";
115
- import "./doctor-CnvS0ZdH.js";
116
- import "./completion-cli-CiO8SxUw.js";
115
+ import "./doctor-DaWXIYsb.js";
116
+ import "./completion-cli-Ct7r26aE.js";
117
117
  import "./service-audit-C7Wq0dp9.js";
118
118
  import "./hooks-status-CxWUG7p9.js";
119
- import "./tui-DBU8XXEy.js";
120
- import "./channel-options-BBbtWCTa.js";
121
- import { n as buildProgram } from "./program-Boun5vic.js";
119
+ import "./tui-BLENcW7_.js";
120
+ import "./channel-options-DHCxqaUS.js";
121
+ import { n as buildProgram } from "./program-BTz-C7hw.js";
122
122
  import process from "node:process";
123
123
  import { fileURLToPath } from "node:url";
124
124
 
@@ -1,7 +1,7 @@
1
1
  import { h as resolveUserPath, t as CONFIG_DIR } from "./utils-D019Z2NU.js";
2
2
  import { t as runCommandWithTimeout } from "./exec-XH65-wH1.js";
3
3
  import { a as MANIFEST_KEY } from "./manifest-registry-DEGu_o5t.js";
4
- import { a as resolvePackedRootDir, i as resolveArchiveKind, n as fileExists, r as readJsonFile, t as extractArchive } from "./archive-DE4kADTX.js";
4
+ import { a as resolvePackedRootDir, i as resolveArchiveKind, n as fileExists, r as readJsonFile, t as extractArchive } from "./archive-HObtzULx.js";
5
5
  import { t as scanDirectoryWithSummary } from "./skill-scanner-BCGU84pB.js";
6
6
  import path from "node:path";
7
7
  import os from "node:os";