skykoi 2026.3.268 → 2026.3.269

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 (112) hide show
  1. package/dist/{acp-cli-BLh__EXM.js → acp-cli-C_tOVf9w.js} +2 -2
  2. package/dist/{archive-CV1HJHku.js → archive-DWubuYhj.js} +1 -1
  3. package/dist/{audit-DzFPuU79.js → audit-DbStYIKe.js} +5 -5
  4. package/dist/build-info.json +3 -3
  5. package/dist/{call-DKvPcDaX.js → call-Bos6YLrN.js} +1 -1
  6. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  7. package/dist/{channel-options-DVOQkLBb.js → channel-options-vC0scakt.js} +1 -1
  8. package/dist/{channel-summary-A-WTYdm5.js → channel-summary-LPAK_4sk.js} +3 -3
  9. package/dist/{channels-cli-Db0P7pjP.js → channels-cli-B9azrEo1.js} +22 -22
  10. package/dist/cli/daemon-cli.js +1 -1
  11. package/dist/{cli-9yVr177q.js → cli-Dsfr60zC.js} +17 -17
  12. package/dist/{completion-cli-FAHiRFuv.js → completion-cli-CLsNQlJq.js} +1 -1
  13. package/dist/{config-DqQZ5BME.js → config-B1La6DxS.js} +22 -0
  14. package/dist/{config-guard-BWuyERjJ.js → config-guard-DFPXxhoK.js} +49 -19
  15. package/dist/{configure-Ck53sK6G.js → configure-DfMyIRIK.js} +6 -6
  16. package/dist/{control-service-ByCBngHy.js → control-service-D30sRnYY.js} +1 -1
  17. package/dist/{cron-cli-C9DIRzQw.js → cron-cli-DX-jyUlc.js} +3 -3
  18. package/dist/{daemon-cli-DD3irHRn.js → daemon-cli-DiPNXaXq.js} +7 -7
  19. package/dist/{daemon-runtime-DADP65ws.js → daemon-runtime-Ct4U4ixT.js} +1 -1
  20. package/dist/{deliver-CTKc0PQ-.js → deliver-D6EteaM6.js} +4 -4
  21. package/dist/{deps-vpe27kaL.js → deps-paNJoEvZ.js} +2 -2
  22. package/dist/{devices-cli-B_d-WtK1.js → devices-cli-C9pNVqZ7.js} +2 -2
  23. package/dist/{directory-cli-O6BwfRjk.js → directory-cli-BPMP0Zk7.js} +1 -1
  24. package/dist/{dispatcher-DI98hXuu.js → dispatcher-QEMerbmH.js} +1 -1
  25. package/dist/{dist-y-gjOH_Z.js → dist-BKpDpekV.js} +2 -2
  26. package/dist/{dns-cli-6bjk_w69.js → dns-cli-BNKjP3mP.js} +1 -1
  27. package/dist/{docs-cli-B05uaFbm.js → docs-cli-Sn7Yigb_.js} +2 -2
  28. package/dist/{doctor-KXjZqMjT.js → doctor-DAvgdUEr.js} +11 -11
  29. package/dist/entry.js +1 -1
  30. package/dist/{exec-approvals-cli-DQLzPfEM.js → exec-approvals-cli-DsmzGEdE.js} +4 -4
  31. package/dist/extension-api.js +17 -17
  32. package/dist/{gateway-cli-DHHQmFz7.js → gateway-cli-CEs64KLs.js} +42 -42
  33. package/dist/{gateway-rpc-BEoDrBvG.js → gateway-rpc-CxxLj5l6.js} +1 -1
  34. package/dist/{github-copilot-auth-B2-nZUye.js → github-copilot-auth-AFd71js0.js} +3 -3
  35. package/dist/{gmail-setup-utils-D8AFdAnL.js → gmail-setup-utils-DGSM2Ta7.js} +1 -1
  36. package/dist/{health-format-CDRxOig0.js → health-format-vlLr0K9x.js} +5 -5
  37. package/dist/{hooks-cli-fdLOspVC.js → hooks-cli-BJa06Zy1.js} +20 -20
  38. package/dist/{hooks-status-Fr6-Nuxe.js → hooks-status-CIvitlaI.js} +1 -1
  39. package/dist/{image-BDUOMwqz.js → image-D44JR2SM.js} +3 -3
  40. package/dist/index.js +42 -42
  41. package/dist/{installs-DGFfj2a7.js → installs-DiD9Mnzj.js} +1 -1
  42. package/dist/{koi-CwBDWrvb.js → koi-ovyRvCBs.js} +7 -7
  43. package/dist/{login-qr-BMp_CzJ2.js → login-qr-BUNnQgv9.js} +4 -4
  44. package/dist/{logs-cli-BeGX3g7D.js → logs-cli-DjmYGwDw.js} +3 -3
  45. package/dist/{models-cli-BfcgRAlg.js → models-cli-xhWlwY4W.js} +18 -18
  46. package/dist/{node-cli-DeLhJkLb.js → node-cli-C_clt6lE.js} +6 -6
  47. package/dist/{nodes-cli-BRPyFrKO.js → nodes-cli-BzVkLBFe.js} +3 -3
  48. package/dist/{onboard-channels-CnlCJ_jL.js → onboard-channels-CxWdKszM.js} +2 -2
  49. package/dist/{onboard-skills-DaUSDiNw.js → onboard-skills-fQFkrNCl.js} +6 -6
  50. package/dist/{onboarding-B87nCwYW.js → onboarding-CgMOhQUQ.js} +16 -16
  51. package/dist/{pairing-cli-DwAQ28VU.js → pairing-cli-Zm24Bwa3.js} +1 -1
  52. package/dist/{pi-embedded-helpers-jJdN-mF3.js → pi-embedded-helpers-BaaFO_NG.js} +1 -1
  53. package/dist/{pi-model-discovery-B89otIoj.js → pi-model-discovery--bxLv4Vs.js} +1 -1
  54. package/dist/{pi-tools.policy-B9y5rxuT.js → pi-tools.policy-B-KVVJ1y.js} +1 -1
  55. package/dist/{plugin-registry-BTCpnOrO.js → plugin-registry-z55ZNwzE.js} +2 -2
  56. package/dist/plugin-sdk/index.js +25 -3
  57. package/dist/{plugins-cli-Dphrsz9f.js → plugins-cli-BtCuw8v8.js} +21 -21
  58. package/dist/{program-DNiXN5-P.js → program-CbjeKFtp.js} +6 -6
  59. package/dist/{register.subclis-DyeTeqpk.js → register.subclis-DbvVpZCt.js} +28 -28
  60. package/dist/{reply-C449ft4o.js → reply-aKX1fMlK.js} +21 -21
  61. package/dist/{routes-DPwh2ad0.js → routes-vNI4VWn-.js} +1 -1
  62. package/dist/{rpc-CEpwxX78.js → rpc-DykocUdv.js} +1 -1
  63. package/dist/{run-main-DPc77zh3.js → run-main-C-n5fQS0.js} +48 -45
  64. package/dist/{runner-BTqMM0JO.js → runner-DRI8-OuM.js} +3 -3
  65. package/dist/{sandbox-T57o9Omb.js → sandbox-Dx1ZdjvG.js} +4 -4
  66. package/dist/{sandbox-cli-DC0HK8Y2.js → sandbox-cli-PZSha-Yj.js} +6 -6
  67. package/dist/{security-cli-BGggepKi.js → security-cli-D_bbTA9N.js} +9 -9
  68. package/dist/{server-node-events-DtR8SrcO.js → server-node-events-C9voh22o.js} +19 -19
  69. package/dist/{service-audit-ClhPZTyy.js → service-audit-DMmKqL8q.js} +1 -1
  70. package/dist/{sessions-DpMEQ7TB.js → sessions-CG7iM-JS.js} +2 -2
  71. package/dist/{skills-CKHnKZ8X.js → skills-CkTNI958.js} +1 -1
  72. package/dist/{skills-cli-D-cMFNW9.js → skills-cli-BW9E2t-i.js} +4 -4
  73. package/dist/{skills-status-BZT5KSjB.js → skills-status-Co9ln7Nd.js} +2 -2
  74. package/dist/{status-CtXlcpj_.js → status-CF4hgoFL.js} +2 -2
  75. package/dist/{system-cli-C_zp3uYZ.js → system-cli-BwHARoov.js} +3 -3
  76. package/dist/{tui-Kdpwv1ga.js → tui-CPpBmb8M.js} +5 -5
  77. package/dist/{tui-cli-B-gOikTd.js → tui-cli-Be6d8tg7.js} +10 -10
  78. package/dist/{update-CIYgIiWe.js → update-cY5pcwgC.js} +1 -1
  79. package/dist/{update-cli-DfToGkYD.js → update-cli-DZ_92pP0.js} +30 -30
  80. package/dist/{update-runner-DFO1c_16.js → update-runner-BbwlulGR.js} +5 -5
  81. package/dist/{webhooks-cli-B8QDGdQ8.js → webhooks-cli-DYtd0pJe.js} +4 -4
  82. package/extensions/bluebubbles/node_modules/.bin/koi +21 -0
  83. package/extensions/copilot-proxy/node_modules/.bin/koi +21 -0
  84. package/extensions/diagnostics-otel/node_modules/.bin/koi +21 -0
  85. package/extensions/discord/node_modules/.bin/koi +21 -0
  86. package/extensions/feishu/node_modules/.bin/koi +21 -0
  87. package/extensions/google-antigravity-auth/node_modules/.bin/koi +21 -0
  88. package/extensions/google-gemini-cli-auth/node_modules/.bin/koi +21 -0
  89. package/extensions/googlechat/node_modules/.bin/koi +21 -0
  90. package/extensions/imessage/node_modules/.bin/koi +21 -0
  91. package/extensions/line/node_modules/.bin/koi +21 -0
  92. package/extensions/llm-task/node_modules/.bin/koi +21 -0
  93. package/extensions/lobster/node_modules/.bin/koi +21 -0
  94. package/extensions/matrix/node_modules/.bin/koi +21 -0
  95. package/extensions/mattermost/node_modules/.bin/koi +21 -0
  96. package/extensions/memory-core/node_modules/.bin/koi +21 -0
  97. package/extensions/memory-lancedb/node_modules/.bin/koi +21 -0
  98. package/extensions/minimax-portal-auth/node_modules/.bin/koi +21 -0
  99. package/extensions/msteams/node_modules/.bin/koi +21 -0
  100. package/extensions/nextcloud-talk/node_modules/.bin/koi +21 -0
  101. package/extensions/nostr/node_modules/.bin/koi +21 -0
  102. package/extensions/open-prose/node_modules/.bin/koi +21 -0
  103. package/extensions/signal/node_modules/.bin/koi +21 -0
  104. package/extensions/slack/node_modules/.bin/koi +21 -0
  105. package/extensions/telegram/node_modules/.bin/koi +21 -0
  106. package/extensions/tlon/node_modules/.bin/koi +21 -0
  107. package/extensions/twitch/node_modules/.bin/koi +21 -0
  108. package/extensions/voice-call/node_modules/.bin/koi +21 -0
  109. package/extensions/whatsapp/node_modules/.bin/koi +21 -0
  110. package/extensions/zalo/node_modules/.bin/koi +21 -0
  111. package/extensions/zalouser/node_modules/.bin/koi +21 -0
  112. package/package.json +3 -2
@@ -9,12 +9,12 @@ import "./dist-cjs-h4236Nk8.js";
9
9
  import "./boolean-BXL1jIU4.js";
10
10
  import "./env-BA3nu3t6.js";
11
11
  import "./github-copilot-token-v4Mg1eJR.js";
12
- import { N as VERSION, o as loadConfig } from "./config-DqQZ5BME.js";
12
+ import { N as VERSION, o as loadConfig } from "./config-B1La6DxS.js";
13
13
  import "./manifest-registry-BfJkwq3e.js";
14
14
  import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-DFwjMtH0.js";
15
15
  import "./device-identity-D215B0gc.js";
16
16
  import { l as GatewayClient } from "./net-DG4ItObd.js";
17
- import { t as buildGatewayConnectionDetails } from "./call-DKvPcDaX.js";
17
+ import { t as buildGatewayConnectionDetails } from "./call-Bos6YLrN.js";
18
18
  import { t as formatDocsLink } from "./links-D-ozFGY4.js";
19
19
  import "./tailscale-CsF9n21t.js";
20
20
  import { t as isMainModule } from "./is-main-C-HPYgby.js";
@@ -1,5 +1,5 @@
1
1
  import { i as __require, o as __toESM, t as __commonJSMin } from "./chunk-D_gEzPfs.js";
2
- import { Ct as require_inherits } from "./reply-C449ft4o.js";
2
+ import { Ct as require_inherits } from "./reply-aKX1fMlK.js";
3
3
  import path from "node:path";
4
4
  import fs from "node:fs/promises";
5
5
  import * as tar from "tar";
@@ -3,18 +3,18 @@ import { l as normalizeKoiId } from "./session-key-DvA8Pdt6.js";
3
3
  import { n as runExec } from "./exec-BE7MIgZB.js";
4
4
  import { l as resolveKoiWorkspaceDir, r as resolveDefaultKoiId } from "./koi-scope-B7BaYiK4.js";
5
5
  import { t as formatCliCommand } from "./command-format-DQtyHEuH.js";
6
- import { O as INCLUDE_KEY, a as createConfigIO, k as MAX_INCLUDE_DEPTH } from "./config-DqQZ5BME.js";
6
+ import { O as INCLUDE_KEY, a as createConfigIO, k as MAX_INCLUDE_DEPTH } from "./config-B1La6DxS.js";
7
7
  import { a as MANIFEST_KEY } from "./manifest-registry-BfJkwq3e.js";
8
8
  import { n as listChannelPlugins } from "./plugins-D6P_BD0C.js";
9
- import { d as resolveSandboxToolPolicyForKoi, l as resolveSandboxConfigForKoi } from "./sandbox-T57o9Omb.js";
9
+ import { d as resolveSandboxToolPolicyForKoi, l as resolveSandboxConfigForKoi } from "./sandbox-Dx1ZdjvG.js";
10
10
  import { s as resolveToolProfilePolicy } from "./tool-policy-DFU7NfzA.js";
11
- import { i as loadWorkspaceSkillEntries } from "./skills-CKHnKZ8X.js";
11
+ import { i as loadWorkspaceSkillEntries } from "./skills-CkTNI958.js";
12
12
  import { a as resolveProfile, i as resolveBrowserConfig } from "./server-context-BG4YK6Ll.js";
13
13
  import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-DFwjMtH0.js";
14
14
  import { l as GatewayClient } from "./net-DG4ItObd.js";
15
- import { t as buildGatewayConnectionDetails } from "./call-DKvPcDaX.js";
15
+ import { t as buildGatewayConnectionDetails } from "./call-Bos6YLrN.js";
16
16
  import { i as readChannelAllowFromStore } from "./pairing-store-DttWRVFE.js";
17
- import { c as resolveNativeSkillsEnabled, n as isToolAllowedByPolicies, s as resolveNativeCommandsEnabled } from "./pi-tools.policy-B9y5rxuT.js";
17
+ import { c as resolveNativeSkillsEnabled, n as isToolAllowedByPolicies, s as resolveNativeCommandsEnabled } from "./pi-tools.policy-B-KVVJ1y.js";
18
18
  import { t as resolveChannelDefaultAccountId } from "./helpers-Bd67GvKn.js";
19
19
  import { t as scanDirectoryWithSummary } from "./skill-scanner-XSqJHIlH.js";
20
20
  import { i as resolveGatewayAuth } from "./auth-BzM5UpTJ.js";
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2026.3.268",
3
- "commit": "b1f4ea9545116006bce16809431a01b28794ef4d",
4
- "builtAt": "2026-05-13T19:34:30.973Z"
2
+ "version": "2026.3.269",
3
+ "commit": "05146f087e7851ab9be34ab8368dd70d23e70f9a",
4
+ "builtAt": "2026-05-13T21:26:50.673Z"
5
5
  }
@@ -2,7 +2,7 @@ import { r as __exportAll } from "./chunk-D_gEzPfs.js";
2
2
  import { t as createSubsystemLogger } from "./subsystem-RXphV8Xh.js";
3
3
  import { g as resolveStateDir, o as resolveConfigPath, u as resolveGatewayPort } from "./paths-VdmjGGyc.js";
4
4
  import { h as resolveUserPath, s as ensureDir, t as CONFIG_DIR, v as shortenHomeInString } from "./utils-rBzA-VDv.js";
5
- import { o as loadConfig } from "./config-DqQZ5BME.js";
5
+ import { o as loadConfig } from "./config-B1La6DxS.js";
6
6
  import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-DFwjMtH0.js";
7
7
  import { r as loadOrCreateDeviceIdentity } from "./device-identity-D215B0gc.js";
8
8
  import { t as pickPrimaryTailnetIPv4 } from "./tailnet-CUHhVH39.js";
@@ -1 +1 @@
1
- 5b119dd8d9f8a3eefda291c447421f3b7ff38d5eb2f798ada6b566c04eb6a262
1
+ fd46c589dad66d8a46645ba520b3367c005c7ac4d4f184856f14eafcdd722737
@@ -2,7 +2,7 @@ import { M as CHAT_CHANNEL_ORDER } from "./subsystem-RXphV8Xh.js";
2
2
  import { t as isTruthyEnvValue } from "./env-BA3nu3t6.js";
3
3
  import { n as listChannelPlugins } from "./plugins-D6P_BD0C.js";
4
4
  import { i as listChannelPluginCatalogEntries } from "./plugin-auto-enable-Bx_BHwcy.js";
5
- import { t as ensurePluginRegistryLoaded } from "./plugin-registry-BTCpnOrO.js";
5
+ import { t as ensurePluginRegistryLoaded } from "./plugin-registry-z55ZNwzE.js";
6
6
 
7
7
  //#region src/cli/channel-options.ts
8
8
  function dedupe(values) {
@@ -1,10 +1,10 @@
1
- import { L as listThinkingLevels, m as formatRawAssistantErrorForUi } from "./pi-embedded-helpers-jJdN-mF3.js";
1
+ import { L as listThinkingLevels, m as formatRawAssistantErrorForUi } from "./pi-embedded-helpers-BaaFO_NG.js";
2
2
  import { T as theme, V as getActivePluginRegistry } from "./subsystem-RXphV8Xh.js";
3
3
  import { t as DEFAULT_ACCOUNT_ID } from "./session-key-DvA8Pdt6.js";
4
4
  import { Ct as DEFAULT_PROVIDER, St as DEFAULT_MODEL, d as resolveConfiguredModelRef } from "./model-selection-BdujDB_E.js";
5
- import { o as loadConfig } from "./config-DqQZ5BME.js";
5
+ import { o as loadConfig } from "./config-B1La6DxS.js";
6
6
  import { n as listChannelPlugins } from "./plugins-D6P_BD0C.js";
7
- import { I as listChannelDocks } from "./sessions-DpMEQ7TB.js";
7
+ import { I as listChannelDocks } from "./sessions-CG7iM-JS.js";
8
8
  import { n as formatTokenCount } from "./usage-format-BGCAJt5K.js";
9
9
  import { createRequire } from "node:module";
10
10
  import fs from "node:fs";
@@ -1,5 +1,5 @@
1
- import "./pi-embedded-helpers-jJdN-mF3.js";
2
- import { Cn as fetchChannelPermissionsDiscord, In as createSlackWebClient, Sn as parseDiscordTarget, vt as loadProviderUsageSummary, yt as formatUsageReportLines } from "./reply-C449ft4o.js";
1
+ import "./pi-embedded-helpers-BaaFO_NG.js";
2
+ import { Cn as fetchChannelPermissionsDiscord, In as createSlackWebClient, Sn as parseDiscordTarget, vt as loadProviderUsageSummary, yt as formatUsageReportLines } from "./reply-aKX1fMlK.js";
3
3
  import { N as DEFAULT_CHAT_CHANNEL, O as getResolvedLoggerSettings, T as theme, c as defaultRuntime, p as danger, y as setVerbose } from "./subsystem-RXphV8Xh.js";
4
4
  import "./paths-VdmjGGyc.js";
5
5
  import { c as normalizeAccountId, t as DEFAULT_ACCOUNT_ID } from "./session-key-DvA8Pdt6.js";
@@ -13,20 +13,20 @@ import { t as formatCliCommand } from "./command-format-DQtyHEuH.js";
13
13
  import "./boolean-BXL1jIU4.js";
14
14
  import "./env-BA3nu3t6.js";
15
15
  import "./github-copilot-token-v4Mg1eJR.js";
16
- import { c as readConfigFileSnapshot, o as loadConfig, u as writeConfigFile } from "./config-DqQZ5BME.js";
16
+ import { c as readConfigFileSnapshot, o as loadConfig, u as writeConfigFile } from "./config-B1La6DxS.js";
17
17
  import "./manifest-registry-BfJkwq3e.js";
18
18
  import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-D6P_BD0C.js";
19
- import "./sessions-DpMEQ7TB.js";
20
- import "./image-BDUOMwqz.js";
21
- import "./dist-y-gjOH_Z.js";
19
+ import "./sessions-CG7iM-JS.js";
20
+ import "./image-D44JR2SM.js";
21
+ import "./dist-BKpDpekV.js";
22
22
  import "./lib-B-iAYD_i.js";
23
23
  import "./src-D8AlCNvU.js";
24
24
  import "./core-zaSuwqYw.js";
25
- import "./pi-model-discovery-B89otIoj.js";
26
- import "./sandbox-T57o9Omb.js";
25
+ import "./pi-model-discovery--bxLv4Vs.js";
26
+ import "./sandbox-Dx1ZdjvG.js";
27
27
  import "./chrome-CJOnmcB3.js";
28
- import "./skills-CKHnKZ8X.js";
29
- import "./routes-DPwh2ad0.js";
28
+ import "./skills-CkTNI958.js";
29
+ import "./routes-vNI4VWn-.js";
30
30
  import "./server-context-BG4YK6Ll.js";
31
31
  import "./image-ops-D9xaNVCD.js";
32
32
  import "./message-channel-DFwjMtH0.js";
@@ -36,44 +36,44 @@ import "./paths-D_A4SLYG.js";
36
36
  import "./tool-images-BPzjKQuD.js";
37
37
  import "./redact-CjQe_7H_.js";
38
38
  import "./tool-display-BETeOP8O.js";
39
- import "./deliver-CTKc0PQ-.js";
40
- import "./dispatcher-DI98hXuu.js";
39
+ import "./deliver-D6EteaM6.js";
40
+ import "./dispatcher-QEMerbmH.js";
41
41
  import "./dist-B53KOd9e.js";
42
42
  import "./pi-tool-definition-adapter-CdyPRa1I.js";
43
43
  import "./manager-CofU7sxR.js";
44
44
  import "./sqlite-DHgvEkS1.js";
45
45
  import "./warnings-MnyHYVbe.js";
46
46
  import "./proxy-from-env-DUE82Vrw.js";
47
- import "./login-qr-BMp_CzJ2.js";
48
- import { n as formatAge } from "./channel-summary-A-WTYdm5.js";
47
+ import "./login-qr-BUNnQgv9.js";
48
+ import { n as formatAge } from "./channel-summary-LPAK_4sk.js";
49
49
  import "./device-identity-D215B0gc.js";
50
50
  import "./net-DG4ItObd.js";
51
- import { n as callGateway } from "./call-DKvPcDaX.js";
51
+ import { n as callGateway } from "./call-Bos6YLrN.js";
52
52
  import "./koi-events-resOGhIY.js";
53
53
  import "./pairing-store-DttWRVFE.js";
54
54
  import { t as formatDocsLink } from "./links-D-ozFGY4.js";
55
55
  import { n as runCommandWithRuntime } from "./cli-utils-BjM5oE0K.js";
56
56
  import { n as withProgress } from "./progress-aeJDq1bY.js";
57
57
  import "./node-pairing-LtbSR4JV.js";
58
- import "./pi-tools.policy-B9y5rxuT.js";
58
+ import "./pi-tools.policy-B-KVVJ1y.js";
59
59
  import "./prompt-style-CVuim3sP.js";
60
60
  import "./pairing-labels-BQHjUb7F.js";
61
61
  import "./satisfies-Bw0kftyq.js";
62
62
  import "./session-cost-usage-CmW298Fs.js";
63
- import "./control-service-ByCBngHy.js";
63
+ import "./control-service-D30sRnYY.js";
64
64
  import { n as resolveMessageChannelSelection } from "./channel-selection-eBPq7mbP.js";
65
65
  import "./event-log-DjIKl_l7.js";
66
66
  import { t as resolveChannelDefaultAccountId } from "./helpers-Bd67GvKn.js";
67
67
  import "./note-CSp5eHqT.js";
68
68
  import { t as createClackPrompter } from "./clack-prompter-9RonoVi0.js";
69
- import { i as reloadOnboardingPluginRegistry, n as setupChannels, r as ensureOnboardingPluginInstalled } from "./onboard-channels-CnlCJ_jL.js";
69
+ import { i as reloadOnboardingPluginRegistry, n as setupChannels, r as ensureOnboardingPluginInstalled } from "./onboard-channels-CxWdKszM.js";
70
70
  import { i as listChannelPluginCatalogEntries } from "./plugin-auto-enable-Bx_BHwcy.js";
71
- import "./archive-CV1HJHku.js";
71
+ import "./archive-DWubuYhj.js";
72
72
  import "./skill-scanner-XSqJHIlH.js";
73
- import "./installs-DGFfj2a7.js";
73
+ import "./installs-DiD9Mnzj.js";
74
74
  import { t as collectChannelStatusIssues } from "./channels-status-issues-DpPqStch.js";
75
- import { n as hasExplicitOptions } from "./plugin-registry-BTCpnOrO.js";
76
- import { t as formatCliChannelOptions } from "./channel-options-DVOQkLBb.js";
75
+ import { n as hasExplicitOptions } from "./plugin-registry-z55ZNwzE.js";
76
+ import { t as formatCliChannelOptions } from "./channel-options-vC0scakt.js";
77
77
  import { t as buildChannelAccountSnapshot } from "./status-B1DCoVQ3.js";
78
78
  import { t as parseLogLine } from "./parse-log-line-CVYzLRZv.js";
79
79
  import fs from "node:fs/promises";
@@ -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-DD3irHRn.js";
2
+ export { registerDaemonCli, runDaemonInstall, runDaemonRestart, runDaemonStart, runDaemonStatus, runDaemonStop, runDaemonUninstall } from "../daemon-cli-DiPNXaXq.js";
@@ -1,5 +1,5 @@
1
- import "./pi-embedded-helpers-jJdN-mF3.js";
2
- import { _t as loadSKYKOIPlugins } from "./reply-C449ft4o.js";
1
+ import "./pi-embedded-helpers-BaaFO_NG.js";
2
+ import { _t as loadSKYKOIPlugins } from "./reply-aKX1fMlK.js";
3
3
  import { t as createSubsystemLogger } from "./subsystem-RXphV8Xh.js";
4
4
  import "./paths-VdmjGGyc.js";
5
5
  import "./utils-rBzA-VDv.js";
@@ -11,20 +11,20 @@ import "./dist-cjs-h4236Nk8.js";
11
11
  import "./boolean-BXL1jIU4.js";
12
12
  import "./env-BA3nu3t6.js";
13
13
  import "./github-copilot-token-v4Mg1eJR.js";
14
- import { o as loadConfig } from "./config-DqQZ5BME.js";
14
+ import { o as loadConfig } from "./config-B1La6DxS.js";
15
15
  import "./manifest-registry-BfJkwq3e.js";
16
16
  import "./plugins-D6P_BD0C.js";
17
- import "./sessions-DpMEQ7TB.js";
18
- import "./image-BDUOMwqz.js";
19
- import "./dist-y-gjOH_Z.js";
17
+ import "./sessions-CG7iM-JS.js";
18
+ import "./image-D44JR2SM.js";
19
+ import "./dist-BKpDpekV.js";
20
20
  import "./lib-B-iAYD_i.js";
21
21
  import "./src-D8AlCNvU.js";
22
22
  import "./core-zaSuwqYw.js";
23
- import "./pi-model-discovery-B89otIoj.js";
24
- import "./sandbox-T57o9Omb.js";
23
+ import "./pi-model-discovery--bxLv4Vs.js";
24
+ import "./sandbox-Dx1ZdjvG.js";
25
25
  import "./chrome-CJOnmcB3.js";
26
- import "./skills-CKHnKZ8X.js";
27
- import "./routes-DPwh2ad0.js";
26
+ import "./skills-CkTNI958.js";
27
+ import "./routes-vNI4VWn-.js";
28
28
  import "./server-context-BG4YK6Ll.js";
29
29
  import "./image-ops-D9xaNVCD.js";
30
30
  import "./message-channel-DFwjMtH0.js";
@@ -34,30 +34,30 @@ import "./paths-D_A4SLYG.js";
34
34
  import "./tool-images-BPzjKQuD.js";
35
35
  import "./redact-CjQe_7H_.js";
36
36
  import "./tool-display-BETeOP8O.js";
37
- import "./deliver-CTKc0PQ-.js";
38
- import "./dispatcher-DI98hXuu.js";
37
+ import "./deliver-D6EteaM6.js";
38
+ import "./dispatcher-QEMerbmH.js";
39
39
  import "./dist-B53KOd9e.js";
40
40
  import "./pi-tool-definition-adapter-CdyPRa1I.js";
41
41
  import "./manager-CofU7sxR.js";
42
42
  import "./sqlite-DHgvEkS1.js";
43
43
  import "./warnings-MnyHYVbe.js";
44
44
  import "./proxy-from-env-DUE82Vrw.js";
45
- import "./login-qr-BMp_CzJ2.js";
46
- import "./channel-summary-A-WTYdm5.js";
45
+ import "./login-qr-BUNnQgv9.js";
46
+ import "./channel-summary-LPAK_4sk.js";
47
47
  import "./device-identity-D215B0gc.js";
48
48
  import "./net-DG4ItObd.js";
49
- import "./call-DKvPcDaX.js";
49
+ import "./call-Bos6YLrN.js";
50
50
  import "./koi-events-resOGhIY.js";
51
51
  import "./pairing-store-DttWRVFE.js";
52
52
  import "./links-D-ozFGY4.js";
53
53
  import "./progress-aeJDq1bY.js";
54
54
  import "./node-pairing-LtbSR4JV.js";
55
- import "./pi-tools.policy-B9y5rxuT.js";
55
+ import "./pi-tools.policy-B-KVVJ1y.js";
56
56
  import "./prompt-style-CVuim3sP.js";
57
57
  import "./pairing-labels-BQHjUb7F.js";
58
58
  import "./satisfies-Bw0kftyq.js";
59
59
  import "./session-cost-usage-CmW298Fs.js";
60
- import "./control-service-ByCBngHy.js";
60
+ import "./control-service-D30sRnYY.js";
61
61
  import "./channel-selection-eBPq7mbP.js";
62
62
  import "./event-log-DjIKl_l7.js";
63
63
 
@@ -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-DyeTeqpk.js";
3
+ import { n as registerSubCliByName, t as getSubCliEntries } from "./register.subclis-DbvVpZCt.js";
4
4
  import path from "node:path";
5
5
  import os from "node:os";
6
6
  import fs from "node:fs/promises";
@@ -787,6 +787,24 @@ const ensureKoiEntry = (list, id) => {
787
787
  //#endregion
788
788
  //#region src/config/legacy.migrations.part-1.ts
789
789
  const LEGACY_CONFIG_MIGRATIONS_PART_1 = [
790
+ {
791
+ id: "agents->kois",
792
+ describe: "Rename top-level `agents` to `kois`",
793
+ apply: (raw, changes) => {
794
+ const agents = getRecord(raw.agents);
795
+ if (!agents) return;
796
+ const kois = getRecord(raw.kois);
797
+ if (kois) {
798
+ mergeMissing(kois, agents);
799
+ delete raw.agents;
800
+ changes.push("Merged legacy `agents` block into `kois`.");
801
+ } else {
802
+ raw.kois = agents;
803
+ delete raw.agents;
804
+ changes.push("Renamed legacy `agents` block to `kois`.");
805
+ }
806
+ }
807
+ },
790
808
  {
791
809
  id: "bindings.match.provider->bindings.match.channel",
792
810
  describe: "Move bindings[].match.provider to bindings[].match.channel",
@@ -1384,6 +1402,10 @@ const LEGACY_CONFIG_MIGRATIONS = [
1384
1402
  //#endregion
1385
1403
  //#region src/config/legacy.rules.ts
1386
1404
  const LEGACY_CONFIG_RULES = [
1405
+ {
1406
+ path: ["agents"],
1407
+ message: "agents block renamed to kois (auto-migrated on load)."
1408
+ },
1387
1409
  {
1388
1410
  path: ["whatsapp"],
1389
1411
  message: "whatsapp config moved to channels.whatsapp (auto-migrated on load)."
@@ -1,6 +1,6 @@
1
- import { At as formatControlUiSshHint, Et as applyWizardMetadata, Ft as openUrl, Ht as waitForGatewayReachable, Mt as handleReset, Nt as moveToTrash, Ot as detectBrowserOpenSupport, P as runMessageAction, Rt as randomToken, Tt as DEFAULT_WORKSPACE, U as CHANNEL_MESSAGE_ACTION_NAMES, V as formatTargetDisplay, an as registerMemoryCli, ft as CHANNEL_TARGETS_DESCRIPTION, kt as ensureWorkspaceAndSessions, on as runMemoryStatus, pt as CHANNEL_TARGET_DESCRIPTION, vr as lookupContextTokens, zt as resolveControlUiLinks } from "./reply-C449ft4o.js";
1
+ import { At as formatControlUiSshHint, Et as applyWizardMetadata, Ft as openUrl, Ht as waitForGatewayReachable, Mt as handleReset, Nt as moveToTrash, Ot as detectBrowserOpenSupport, P as runMessageAction, Rt as randomToken, Tt as DEFAULT_WORKSPACE, U as CHANNEL_MESSAGE_ACTION_NAMES, V as formatTargetDisplay, an as registerMemoryCli, ft as CHANNEL_TARGETS_DESCRIPTION, kt as ensureWorkspaceAndSessions, on as runMemoryStatus, pt as CHANNEL_TARGET_DESCRIPTION, vr as lookupContextTokens, zt as resolveControlUiLinks } from "./reply-aKX1fMlK.js";
2
2
  import { B as normalizeChatChannelId, C as colorize, I as getChatChannelMeta, N as DEFAULT_CHAT_CHANNEL, T as theme, c as defaultRuntime, l as restoreTerminalState, m as info, p as danger, w as isRich, y as setVerbose } from "./subsystem-RXphV8Xh.js";
3
- import { g as resolveStateDir, i as isNixMode, m as resolveOAuthDir, o as resolveConfigPath, r as STATE_DIR, u as resolveGatewayPort } from "./paths-VdmjGGyc.js";
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 { l as normalizeKoiId, n as DEFAULT_KOI_ID, t as DEFAULT_ACCOUNT_ID } from "./session-key-DvA8Pdt6.js";
5
5
  import { h as resolveUserPath, p as resolveHomeDir, v as shortenHomeInString, y as shortenHomePath } from "./utils-rBzA-VDv.js";
6
6
  import { t as runCommandWithTimeout } from "./exec-BE7MIgZB.js";
@@ -8,41 +8,41 @@ import { S as ensureKoiWorkspace, T as resolveDefaultKoiWorkspaceDir, a as resol
8
8
  import { Ct as DEFAULT_PROVIDER, G as resolveAuthProfileOrder, H as resolveEnvApiKey, St as DEFAULT_MODEL, X as resolveApiKeyForProfile, at as upsertAuthProfile, d as resolveConfiguredModelRef, lt as resolveAuthStorePath, ot as ensureAuthProfileStore, s as normalizeProviderId, xt as DEFAULT_CONTEXT_TOKENS } from "./model-selection-BdujDB_E.js";
9
9
  import { t as formatCliCommand } from "./command-format-DQtyHEuH.js";
10
10
  import { t as parseBooleanValue } from "./boolean-BXL1jIU4.js";
11
- import { _ as parseDurationMs, a as createConfigIO, c as readConfigFileSnapshot, o as loadConfig, u as writeConfigFile } from "./config-DqQZ5BME.js";
11
+ import { D as applyLegacyMigrations, _ as parseDurationMs, a as createConfigIO, c as readConfigFileSnapshot, o as loadConfig, u as writeConfigFile } from "./config-B1La6DxS.js";
12
12
  import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-D6P_BD0C.js";
13
- import { i as loadSessionStore } from "./sessions-DpMEQ7TB.js";
13
+ import { i as loadSessionStore } from "./sessions-CG7iM-JS.js";
14
14
  import { n as movePathToTrash } from "./server-context-BG4YK6Ll.js";
15
15
  import { h as GATEWAY_CLIENT_NAMES, l as normalizeMessageChannel, m as GATEWAY_CLIENT_MODES } from "./message-channel-DFwjMtH0.js";
16
16
  import { a as resolveSessionTranscriptsDirForKoi, i as resolveSessionTranscriptsDir, o as resolveStorePath } from "./paths-D_A4SLYG.js";
17
- import { a as randomIdempotencyKey, n as callGateway } from "./call-DKvPcDaX.js";
17
+ import { a as randomIdempotencyKey, n as callGateway } from "./call-Bos6YLrN.js";
18
18
  import { t as formatDocsLink } from "./links-D-ozFGY4.js";
19
19
  import { n as runCommandWithRuntime } from "./cli-utils-BjM5oE0K.js";
20
20
  import { n as withProgress } from "./progress-aeJDq1bY.js";
21
21
  import { n as stylePromptMessage, r as stylePromptTitle, t as stylePromptHint } from "./prompt-style-CVuim3sP.js";
22
- import { t as createDefaultDeps } from "./deps-vpe27kaL.js";
23
- import { a as gatewayInstallErrorHint, g as assertSupportedRuntime, i as buildGatewayInstallPlan, r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-DADP65ws.js";
22
+ import { t as createDefaultDeps } from "./deps-paNJoEvZ.js";
23
+ import { a as gatewayInstallErrorHint, g as assertSupportedRuntime, i as buildGatewayInstallPlan, r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-Ct4U4ixT.js";
24
24
  import { t as resolveChannelDefaultAccountId } from "./helpers-Bd67GvKn.js";
25
25
  import { n as logConfigUpdated, t as formatConfigPath } from "./logging-BWWKm3m3.js";
26
26
  import { t as WizardCancelledError } from "./prompts-0EnaVIOe.js";
27
27
  import { t as createClackPrompter } from "./clack-prompter-9RonoVi0.js";
28
- 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-B87nCwYW.js";
29
- import { d as applyAuthChoice, f as applyOpenAIConfig, h as promptAuthChoiceGrouped, m as applyGoogleGeminiModelDefault, p as upsertSharedEnvVar, u as warnIfModelConfigLooksOff } from "./onboard-skills-DaUSDiNw.js";
30
- 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-B2-nZUye.js";
31
- import { n as setupChannels } from "./onboard-channels-CnlCJ_jL.js";
32
- import { l as healthCommand } from "./health-format-CDRxOig0.js";
28
+ 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-CgMOhQUQ.js";
29
+ import { d as applyAuthChoice, f as applyOpenAIConfig, h as promptAuthChoiceGrouped, m as applyGoogleGeminiModelDefault, p as upsertSharedEnvVar, u as warnIfModelConfigLooksOff } from "./onboard-skills-fQFkrNCl.js";
30
+ 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-AFd71js0.js";
31
+ import { n as setupChannels } from "./onboard-channels-CxWdKszM.js";
32
+ import { l as healthCommand } from "./health-format-vlLr0K9x.js";
33
33
  import { t as renderTable } from "./table-BcCXbKbR.js";
34
34
  import { t as resolveGatewayService } from "./service-CsKcTbqE.js";
35
35
  import { r as isSystemdUserServiceAvailable } from "./systemd-DvZErSyI.js";
36
- import { l as getVerboseFlag, o as getFlagValue, r as registerSubCliCommands, s as getPositiveIntFlagValue, u as hasFlag } from "./register.subclis-DyeTeqpk.js";
37
- import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-BEoDrBvG.js";
36
+ import { l as getVerboseFlag, o as getFlagValue, r as registerSubCliCommands, s as getPositiveIntFlagValue, u as hasFlag } from "./register.subclis-DbvVpZCt.js";
37
+ import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-CxxLj5l6.js";
38
38
  import { t as formatHelpExamples } from "./help-format-D_sjxIrE.js";
39
- import { a as createOutboundSendDeps, n as resolveSessionKeyForRequest, t as koiCommand } from "./koi-CwBDWrvb.js";
40
- import { n as hasExplicitOptions, t as ensurePluginRegistryLoaded } from "./plugin-registry-BTCpnOrO.js";
39
+ import { a as createOutboundSendDeps, n as resolveSessionKeyForRequest, t as koiCommand } from "./koi-ovyRvCBs.js";
40
+ import { n as hasExplicitOptions, t as ensurePluginRegistryLoaded } from "./plugin-registry-z55ZNwzE.js";
41
41
  import { n as parsePositiveIntOrUndefined, t as collectOption } from "./helpers-BbqByYKs.js";
42
- import { i as CONFIGURE_WIZARD_SECTIONS, n as configureCommand, r as configureCommandWithSections } from "./configure-Ck53sK6G.js";
42
+ import { i as CONFIGURE_WIZARD_SECTIONS, n as configureCommand, r as configureCommandWithSections } from "./configure-DfMyIRIK.js";
43
43
  import { n as ensureSystemdUserLingerNonInteractive } from "./systemd-linger-BGJktKDW.js";
44
44
  import { t as loginCommand } from "./login-Cm1KQyo6.js";
45
- import { n as loadAndMaybeMigrateDoctorConfig, t as doctorCommand } from "./doctor-KXjZqMjT.js";
45
+ import { n as loadAndMaybeMigrateDoctorConfig, t as doctorCommand } from "./doctor-DAvgdUEr.js";
46
46
  import { fileURLToPath } from "node:url";
47
47
  import fs from "node:fs";
48
48
  import path from "node:path";
@@ -2793,7 +2793,7 @@ async function loadValidConfig() {
2793
2793
  }
2794
2794
  function registerConfigCli(program) {
2795
2795
  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) => {
2796
- const { CONFIGURE_WIZARD_SECTIONS, configureCommand, configureCommandWithSections } = await import("./configure-Ck53sK6G.js").then((n) => n.t);
2796
+ const { CONFIGURE_WIZARD_SECTIONS, configureCommand, configureCommandWithSections } = await import("./configure-DfMyIRIK.js").then((n) => n.t);
2797
2797
  const sections = Array.isArray(opts.section) ? opts.section.map((value) => typeof value === "string" ? value.trim() : "").filter(Boolean) : [];
2798
2798
  if (sections.length === 0) {
2799
2799
  await configureCommand(defaultRuntime);
@@ -5503,7 +5503,37 @@ let didRunDoctorConfigFlow = false;
5503
5503
  function formatConfigIssues(issues) {
5504
5504
  return issues.map((issue) => `- ${issue.path || "<root>"}: ${issue.message}`);
5505
5505
  }
5506
+ /**
5507
+ * Run the pure-rename legacy migrations and rewrite the config file
5508
+ * in-place when any apply. Difference from the full doctor flow: this
5509
+ * runs SILENTLY on every CLI invocation and only touches keys that
5510
+ * have an explicit legacy migration entry — no unknown-key stripping,
5511
+ * no plugin auto-enable, no user prompting. Safe to run repeatedly
5512
+ * (idempotent: a second run finds nothing to migrate and writes
5513
+ * nothing).
5514
+ *
5515
+ * Catches the agents→kois upgrade hazard: users with a pre-rename
5516
+ * config would otherwise fatal-exit at preAction time before they
5517
+ * could reach `skykoi doctor --fix` to repair the file.
5518
+ */
5519
+ async function silentlyApplyLegacyMigrations() {
5520
+ let raw;
5521
+ try {
5522
+ const { readFile } = await import("node:fs/promises");
5523
+ const text = await readFile(CONFIG_PATH, "utf-8");
5524
+ raw = JSON.parse(text);
5525
+ } catch {
5526
+ return;
5527
+ }
5528
+ if (!raw || typeof raw !== "object") return;
5529
+ const { next, changes } = applyLegacyMigrations(raw);
5530
+ if (!next || changes.length === 0) return;
5531
+ try {
5532
+ await writeConfigFile(next);
5533
+ } catch {}
5534
+ }
5506
5535
  async function ensureConfigReady(params) {
5536
+ await silentlyApplyLegacyMigrations();
5507
5537
  if (!didRunDoctorConfigFlow) {
5508
5538
  didRunDoctorConfigFlow = true;
5509
5539
  await loadAndMaybeMigrateDoctorConfig({
@@ -1,23 +1,23 @@
1
1
  import { r as __exportAll } from "./chunk-D_gEzPfs.js";
2
- import { Et as applyWizardMetadata, Ht as waitForGatewayReachable, It as printWizardHeader, Lt as probeGatewayReachable, Pt as normalizeGatewayTokenInput, Rt as randomToken, Tt as DEFAULT_WORKSPACE, Vt as summarizeExistingConfig, jt as guardCancel, kt as ensureWorkspaceAndSessions, zt as resolveControlUiLinks } from "./reply-C449ft4o.js";
2
+ import { Et as applyWizardMetadata, Ht as waitForGatewayReachable, It as printWizardHeader, Lt as probeGatewayReachable, Pt as normalizeGatewayTokenInput, Rt as randomToken, Tt as DEFAULT_WORKSPACE, Vt as summarizeExistingConfig, jt as guardCancel, kt as ensureWorkspaceAndSessions, zt as resolveControlUiLinks } from "./reply-aKX1fMlK.js";
3
3
  import { c as defaultRuntime } from "./subsystem-RXphV8Xh.js";
4
4
  import { t as CONFIG_PATH, u as resolveGatewayPort } from "./paths-VdmjGGyc.js";
5
5
  import { h as resolveUserPath, y as shortenHomePath } from "./utils-rBzA-VDv.js";
6
6
  import { ot as ensureAuthProfileStore } from "./model-selection-BdujDB_E.js";
7
7
  import { t as formatCliCommand } from "./command-format-DQtyHEuH.js";
8
- import { c as readConfigFileSnapshot, o as loadConfig, u as writeConfigFile } from "./config-DqQZ5BME.js";
8
+ import { c as readConfigFileSnapshot, o as loadConfig, u as writeConfigFile } from "./config-B1La6DxS.js";
9
9
  import { n as listChannelPlugins, t as getChannelPlugin } from "./plugins-D6P_BD0C.js";
10
10
  import { n as withProgress } from "./progress-aeJDq1bY.js";
11
11
  import { n as stylePromptMessage, r as stylePromptTitle, t as stylePromptHint } from "./prompt-style-CVuim3sP.js";
12
12
  import { a as findTailscaleBinary } from "./tailscale-CsF9n21t.js";
13
- import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-DADP65ws.js";
13
+ import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-Ct4U4ixT.js";
14
14
  import { n as logConfigUpdated } from "./logging-BWWKm3m3.js";
15
15
  import { t as note$1 } from "./note-CSp5eHqT.js";
16
16
  import { t as WizardCancelledError } from "./prompts-0EnaVIOe.js";
17
17
  import { t as createClackPrompter } from "./clack-prompter-9RonoVi0.js";
18
- 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-DaUSDiNw.js";
19
- import { n as setupChannels, t as noteChannelStatus } from "./onboard-channels-CnlCJ_jL.js";
20
- import { l as healthCommand, n as ensureControlUiAssetsBuilt, t as formatHealthCheckFailure } from "./health-format-CDRxOig0.js";
18
+ 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-fQFkrNCl.js";
19
+ import { n as setupChannels, t as noteChannelStatus } from "./onboard-channels-CxWdKszM.js";
20
+ import { l as healthCommand, n as ensureControlUiAssetsBuilt, t as formatHealthCheckFailure } from "./health-format-vlLr0K9x.js";
21
21
  import { t as resolveGatewayService } from "./service-CsKcTbqE.js";
22
22
  import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-BGJktKDW.js";
23
23
  import { confirm, intro, outro, select, text } from "@clack/prompts";
@@ -1,6 +1,6 @@
1
1
  import { r as __exportAll } from "./chunk-D_gEzPfs.js";
2
2
  import { t as createSubsystemLogger } from "./subsystem-RXphV8Xh.js";
3
- import { o as loadConfig } from "./config-DqQZ5BME.js";
3
+ import { o as loadConfig } from "./config-B1La6DxS.js";
4
4
  import { S as ensureChromeExtensionRelayServer } from "./chrome-CJOnmcB3.js";
5
5
  import { a as resolveProfile, i as resolveBrowserConfig, t as createBrowserRouteContext } from "./server-context-BG4YK6Ll.js";
6
6
 
@@ -10,7 +10,7 @@ import "./dist-cjs-h4236Nk8.js";
10
10
  import "./boolean-BXL1jIU4.js";
11
11
  import "./env-BA3nu3t6.js";
12
12
  import "./github-copilot-token-v4Mg1eJR.js";
13
- import "./config-DqQZ5BME.js";
13
+ import "./config-B1La6DxS.js";
14
14
  import "./manifest-registry-BfJkwq3e.js";
15
15
  import { n as listChannelPlugins } from "./plugins-D6P_BD0C.js";
16
16
  import "./message-channel-DFwjMtH0.js";
@@ -18,11 +18,11 @@ import "./logging-w5jq5901.js";
18
18
  import "./accounts-BfmFQhXZ.js";
19
19
  import "./device-identity-D215B0gc.js";
20
20
  import "./net-DG4ItObd.js";
21
- import "./call-DKvPcDaX.js";
21
+ import "./call-Bos6YLrN.js";
22
22
  import { t as formatDocsLink } from "./links-D-ozFGY4.js";
23
23
  import "./progress-aeJDq1bY.js";
24
24
  import { t as parseAbsoluteTimeMs } from "./parse-B5EluDjJ.js";
25
- import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-BEoDrBvG.js";
25
+ import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-CxxLj5l6.js";
26
26
  import { n as parsePositiveIntOrUndefined } from "./helpers-BbqByYKs.js";
27
27
 
28
28
  //#region src/cli/cron-cli/shared.ts
@@ -1,24 +1,24 @@
1
1
  import { r as __exportAll } from "./chunk-D_gEzPfs.js";
2
- import { zt as resolveControlUiLinks } from "./reply-C449ft4o.js";
2
+ import { zt as resolveControlUiLinks } from "./reply-aKX1fMlK.js";
3
3
  import { C as colorize, O as getResolvedLoggerSettings, T as theme, c as defaultRuntime, w as isRich } from "./subsystem-RXphV8Xh.js";
4
4
  import { d as resolveIsNixMode, g as resolveStateDir, o as resolveConfigPath, u as resolveGatewayPort } from "./paths-VdmjGGyc.js";
5
5
  import { y as shortenHomePath } from "./utils-rBzA-VDv.js";
6
6
  import { t as formatCliCommand } from "./command-format-DQtyHEuH.js";
7
- import { a as createConfigIO, o as loadConfig } from "./config-DqQZ5BME.js";
7
+ import { a as createConfigIO, o as loadConfig } from "./config-B1La6DxS.js";
8
8
  import { d as inspectPortUsage, p as formatPortDiagnostics } from "./chrome-CJOnmcB3.js";
9
9
  import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-DFwjMtH0.js";
10
- import { n as isWSL, r as isWSLEnv } from "./dispatcher-DI98hXuu.js";
10
+ import { n as isWSL, r as isWSLEnv } from "./dispatcher-QEMerbmH.js";
11
11
  import { t as pickPrimaryTailnetIPv4 } from "./tailnet-CUHhVH39.js";
12
12
  import { o as resolveGatewayBindHost } from "./net-DG4ItObd.js";
13
- import { n as callGateway } from "./call-DKvPcDaX.js";
13
+ import { n as callGateway } from "./call-Bos6YLrN.js";
14
14
  import { t as formatDocsLink } from "./links-D-ozFGY4.js";
15
15
  import { n as withProgress } from "./progress-aeJDq1bY.js";
16
16
  import { d as resolveGatewaySystemdServiceName, l as resolveGatewayLaunchAgentLabel } from "./constants-BhdMO-tw.js";
17
- import { t as createDefaultDeps } from "./deps-vpe27kaL.js";
18
- import { i as buildGatewayInstallPlan, r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-DADP65ws.js";
17
+ import { t as createDefaultDeps } from "./deps-paNJoEvZ.js";
18
+ import { i as buildGatewayInstallPlan, r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-Ct4U4ixT.js";
19
19
  import { o as resolveGatewayLogPaths, t as resolveGatewayService } from "./service-CsKcTbqE.js";
20
20
  import { r as isSystemdUserServiceAvailable } from "./systemd-DvZErSyI.js";
21
- import { a as renderGatewayServiceCleanupHints, i as findExtraGatewayServices, n as auditGatewayServiceConfig, o as readLastGatewayErrorLine } from "./service-audit-ClhPZTyy.js";
21
+ import { a as renderGatewayServiceCleanupHints, i as findExtraGatewayServices, n as auditGatewayServiceConfig, o as readLastGatewayErrorLine } from "./service-audit-DMmKqL8q.js";
22
22
  import { n as renderSystemdUnavailableHints, t as isSystemdUnavailableDetail } from "./systemd-hints-DpSjggO1.js";
23
23
  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-ih2ZCRlQ.js";
24
24
 
@@ -1,6 +1,6 @@
1
1
  import { c as defaultRuntime } from "./subsystem-RXphV8Xh.js";
2
2
  import { t as formatCliCommand } from "./command-format-DQtyHEuH.js";
3
- import { A as collectConfigEnvVars, N as VERSION } from "./config-DqQZ5BME.js";
3
+ import { A as collectConfigEnvVars, N as VERSION } from "./config-B1La6DxS.js";
4
4
  import { a as NODE_SERVICE_MARKER, d as resolveGatewaySystemdServiceName, g as resolveNodeWindowsTaskName, h as resolveNodeSystemdServiceName, i as NODE_SERVICE_KIND, l as resolveGatewayLaunchAgentLabel, m as resolveNodeLaunchAgentLabel, n as GATEWAY_SERVICE_KIND, o as NODE_WINDOWS_TASK_SCRIPT_NAME, r as GATEWAY_SERVICE_MARKER } from "./constants-BhdMO-tw.js";
5
5
  import process$1 from "node:process";
6
6
  import path from "node:path";
@@ -1,12 +1,12 @@
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-jJdN-mF3.js";
2
+ import { i as isMessagingToolDuplicate } from "./pi-embedded-helpers-BaaFO_NG.js";
3
3
  import { V as getActivePluginRegistry, _ as logVerbose, b as shouldLogVerbose } from "./subsystem-RXphV8Xh.js";
4
4
  import { c as normalizeAccountId$1 } from "./session-key-DvA8Pdt6.js";
5
5
  import { h as resolveUserPath } from "./utils-rBzA-VDv.js";
6
- import { o as loadConfig } from "./config-DqQZ5BME.js";
6
+ import { o as loadConfig } from "./config-B1La6DxS.js";
7
7
  import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-D6P_BD0C.js";
8
- import { F as getChannelDock, V as resolveSignalAccount, n as appendAssistantMessageToSessionTranscript, r as resolveMirroredTranscriptText } from "./sessions-DpMEQ7TB.js";
9
- import { a as closeDispatcher, c as resolvePinnedHostnameWithPolicy, o as createPinnedDispatcher, r as saveMediaBuffer, s as resolvePinnedHostname } from "./routes-DPwh2ad0.js";
8
+ import { F as getChannelDock, V as resolveSignalAccount, n as appendAssistantMessageToSessionTranscript, r as resolveMirroredTranscriptText } from "./sessions-CG7iM-JS.js";
9
+ import { a as closeDispatcher, c as resolvePinnedHostnameWithPolicy, o as createPinnedDispatcher, r as saveMediaBuffer, s as resolvePinnedHostname } from "./routes-vNI4VWn-.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-D9xaNVCD.js";
11
11
  import { t as INTERNAL_MESSAGE_CHANNEL } from "./message-channel-DFwjMtH0.js";
12
12
  import { fileURLToPath } from "node:url";
@@ -1,5 +1,5 @@
1
- import { Fn as sendMessageSlack, Nn as sendMessageWhatsApp, bn as sendMessageDiscord, wt as sendMessageIMessage, yn as sendMessageTelegram } from "./reply-C449ft4o.js";
2
- import { b as sendMessageSignal } from "./deliver-CTKc0PQ-.js";
1
+ import { Fn as sendMessageSlack, Nn as sendMessageWhatsApp, bn as sendMessageDiscord, wt as sendMessageIMessage, yn as sendMessageTelegram } from "./reply-aKX1fMlK.js";
2
+ import { b as sendMessageSignal } from "./deliver-D6EteaM6.js";
3
3
 
4
4
  //#region src/cli/deps.ts
5
5
  function createDefaultDeps() {
@@ -9,12 +9,12 @@ import "./dist-cjs-h4236Nk8.js";
9
9
  import "./boolean-BXL1jIU4.js";
10
10
  import "./env-BA3nu3t6.js";
11
11
  import "./github-copilot-token-v4Mg1eJR.js";
12
- import "./config-DqQZ5BME.js";
12
+ import "./config-B1La6DxS.js";
13
13
  import "./manifest-registry-BfJkwq3e.js";
14
14
  import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-DFwjMtH0.js";
15
15
  import "./device-identity-D215B0gc.js";
16
16
  import "./net-DG4ItObd.js";
17
- import { n as callGateway } from "./call-DKvPcDaX.js";
17
+ import { n as callGateway } from "./call-Bos6YLrN.js";
18
18
  import { n as withProgress } from "./progress-aeJDq1bY.js";
19
19
  import { t as renderTable } from "./table-BcCXbKbR.js";
20
20
 
@@ -9,7 +9,7 @@ import "./dist-cjs-h4236Nk8.js";
9
9
  import "./boolean-BXL1jIU4.js";
10
10
  import "./env-BA3nu3t6.js";
11
11
  import "./github-copilot-token-v4Mg1eJR.js";
12
- import { o as loadConfig } from "./config-DqQZ5BME.js";
12
+ import { o as loadConfig } from "./config-B1La6DxS.js";
13
13
  import "./manifest-registry-BfJkwq3e.js";
14
14
  import { t as getChannelPlugin } from "./plugins-D6P_BD0C.js";
15
15
  import "./message-channel-DFwjMtH0.js";