skykoi 2026.3.102 → 2026.3.103

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 (39) hide show
  1. package/dist/{agent-Bf_tMAMV.js → agent-p9b8oR9g.js} +2 -2
  2. package/dist/{archive-B9eFsEBD.js → archive-B2TNvtJ1.js} +1 -1
  3. package/dist/build-info.json +3 -3
  4. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  5. package/dist/{channel-options-Cwq1AqwO.js → channel-options-BZFkxqhG.js} +1 -1
  6. package/dist/{channels-cli-BhyrR-CU.js → channels-cli-Dgv8lS9w.js} +6 -6
  7. package/dist/cli/daemon-cli.js +1 -1
  8. package/dist/{cli-xcBqW-oN.js → cli-C7xoSVIu.js} +1 -1
  9. package/dist/{completion-cli-CppZbiOR.js → completion-cli-DZIf5MsP.js} +1 -1
  10. package/dist/{config-guard-QhBMwO58.js → config-guard-8XnGwS-a.js} +13 -13
  11. package/dist/{configure-B3WJCiYG.js → configure-C_b3Snqr.js} +4 -4
  12. package/dist/{daemon-cli-Disrwhkp.js → daemon-cli-BoYYTs26.js} +2 -2
  13. package/dist/{deps-CSxuftaz.js → deps-rn0gZrpC.js} +1 -1
  14. package/dist/{doctor-Bxfuf1yk.js → doctor-BEpUTgnw.js} +3 -3
  15. package/dist/entry.js +1 -1
  16. package/dist/extension-api.js +1 -1
  17. package/dist/{gateway-cli-D_2AWNfJ.js → gateway-cli-CTM6rHhC.js} +15 -15
  18. package/dist/{github-copilot-auth-CsQ2uNhC.js → github-copilot-auth-CKHES8sa.js} +1 -1
  19. package/dist/{health-format-YyoxdlUl.js → health-format-CAyqRYsb.js} +1 -1
  20. package/dist/{hooks-cli-mM-KmnGl.js → hooks-cli-CW60ov-f.js} +3 -3
  21. package/dist/index.js +19 -19
  22. package/dist/{installs-DH4yiUE5.js → installs-h4Uc-evh.js} +1 -1
  23. package/dist/{models-cli-CeMLK-C9.js → models-cli-DsYR2tR8.js} +2 -2
  24. package/dist/{onboard-channels-BOIwWe7y.js → onboard-channels-BI-CPjHC.js} +2 -2
  25. package/dist/{onboard-skills-ABmjQxZO.js → onboard-skills-DGackeCI.js} +3 -3
  26. package/dist/{onboarding-BwDfkuRd.js → onboarding-BKfryJ6L.js} +6 -6
  27. package/dist/{plugin-registry-BBCa_6U3.js → plugin-registry-DzMh5IiO.js} +1 -1
  28. package/dist/plugin-sdk/index.js +3 -3
  29. package/dist/{plugins-cli-DyxymLeg.js → plugins-cli-DZK7twrV.js} +5 -5
  30. package/dist/{program-BK9kK6kS.js → program-1Z6kvss1.js} +4 -4
  31. package/dist/{register.subclis-CaMMmAh5.js → register.subclis-BYn7PfDN.js} +10 -10
  32. package/dist/{reply-DZQ3_aVE.js → reply-tjsZJRCw.js} +1 -1
  33. package/dist/{run-main-Bfh7ZGBa.js → run-main-BFgv6dNS.js} +20 -20
  34. package/dist/{server-node-events-BZublOnK.js → server-node-events-DruIxhbS.js} +3 -3
  35. package/dist/{status-B-KwCl0n.js → status-CW25nak_.js} +1 -1
  36. package/dist/{update-BMplSa8q.js → update-BjhenzIm.js} +1 -1
  37. package/dist/{update-cli-6cMykzxB.js → update-cli-B98LZuzh.js} +11 -11
  38. package/dist/{update-runner-33xx7oYJ.js → update-runner-w1c33B-I.js} +3 -3
  39. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import { H as normalizeThinkLevel, I as formatThinkingLevels, K as supportsXHighThinking, L as formatXHighModelHint, W as normalizeVerboseLevel } from "./pi-embedded-helpers-D5gz7ahu.js";
2
- import { Bt as getRemoteSkillEligibility, Cn as AGENT_LANE_NESTED, Kt as getSkillsSnapshotVersion, L as runWithModelFallback, Lr as resolveAgentTimeoutMs, M as resolveOutboundTarget, N as resolveSessionDeliveryTarget, On as registerAgentRunContext, Sr as loadModelCatalog, Tn as emitAgentEvent, _r as applyVerboseOverride, c as runEmbeddedPiAgent, gr as applyModelOverrideToSessionEntry, hr as clearSessionAuthProfileOverride, i as runCliAgent, mr as lookupContextTokens, n as getCliSessionId, o as resolveSendPolicy, r as setCliSessionId, wn as clearAgentRunContext } from "./reply-DZQ3_aVE.js";
2
+ import { Bt as getRemoteSkillEligibility, Cn as AGENT_LANE_NESTED, Kt as getSkillsSnapshotVersion, L as runWithModelFallback, Lr as resolveAgentTimeoutMs, M as resolveOutboundTarget, N as resolveSessionDeliveryTarget, On as registerAgentRunContext, Sr as loadModelCatalog, Tn as emitAgentEvent, _r as applyVerboseOverride, c as runEmbeddedPiAgent, gr as applyModelOverrideToSessionEntry, hr as clearSessionAuthProfileOverride, i as runCliAgent, mr as lookupContextTokens, n as getCliSessionId, o as resolveSendPolicy, r as setCliSessionId, wn as clearAgentRunContext } from "./reply-tjsZJRCw.js";
3
3
  import { N as DEFAULT_CHAT_CHANNEL, c as defaultRuntime } from "./subsystem-Dl1sS5S-.js";
4
4
  import { d as resolveAgentIdFromSessionKey, l as normalizeAgentId, u as normalizeMainKey } from "./session-key-hGS8_hRJ.js";
5
5
  import { a as resolveAgentModelPrimary, i as resolveAgentModelFallbacksOverride, o as resolveAgentSkillsFilter, r as resolveAgentDir, s as resolveAgentWorkspaceDir, t as listAgentIds, x as ensureAgentWorkspace } from "./agent-scope-DrL2uTp9.js";
@@ -13,7 +13,7 @@ import { a as isInternalMessageChannel, d as resolveMessageChannel, i as isGatew
13
13
  import { n as resolveSessionFilePath, o as resolveStorePath } from "./paths-CAvRsPIf.js";
14
14
  import { a as normalizeOutboundPayloadsForJson, i as normalizeOutboundPayloads, r as formatOutboundPayloadLog, t as deliverOutboundPayloads } from "./deliver-DDU96v2Z.js";
15
15
  import { l as hasNonzeroUsage } from "./session-cost-usage-CJ5Inqel.js";
16
- import { t as createDefaultDeps } from "./deps-CSxuftaz.js";
16
+ import { t as createDefaultDeps } from "./deps-rn0gZrpC.js";
17
17
  import crypto from "node:crypto";
18
18
 
19
19
  //#region src/cli/outbound-send-deps.ts
@@ -1,5 +1,5 @@
1
1
  import { i as __require, o as __toESM, t as __commonJSMin } from "./chunk-D_gEzPfs.js";
2
- import { gt as require_inherits } from "./reply-DZQ3_aVE.js";
2
+ import { gt as require_inherits } from "./reply-tjsZJRCw.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.102",
3
- "commit": "472951b34d08d6d191f9ea55105148d0716dfcb8",
4
- "builtAt": "2026-04-12T22:02:28.243Z"
2
+ "version": "2026.3.103",
3
+ "commit": "4a2f909eecf3810efbc41da92f1c8ccb2a499903",
4
+ "builtAt": "2026-04-12T22:33:14.556Z"
5
5
  }
@@ -1 +1 @@
1
- 13e6f708aa118c0646995a7abb9339a690e4eb01c37ca2fdcbec60388db03a14
1
+ 198fdd5c7daf6ddf05d3c7fd7a4adf54865d7b970b58afa37bba1a52c69d8ef2
@@ -2,7 +2,7 @@ import { M as CHAT_CHANNEL_ORDER } from "./subsystem-Dl1sS5S-.js";
2
2
  import { t as isTruthyEnvValue } from "./env-EjmWoVFM.js";
3
3
  import { n as listChannelPlugins } from "./plugins-CvpPbUcD.js";
4
4
  import { i as listChannelPluginCatalogEntries } from "./plugin-auto-enable-ClD8Hu9T.js";
5
- import { t as ensurePluginRegistryLoaded } from "./plugin-registry-BBCa_6U3.js";
5
+ import { t as ensurePluginRegistryLoaded } from "./plugin-registry-DzMh5IiO.js";
6
6
 
7
7
  //#region src/cli/channel-options.ts
8
8
  function dedupe(values) {
@@ -1,5 +1,5 @@
1
1
  import "./pi-embedded-helpers-D5gz7ahu.js";
2
- import { Mn as createSlackWebClient, dt as loadProviderUsageSummary, ft as formatUsageReportLines, gn as fetchChannelPermissionsDiscord, hn as parseDiscordTarget } from "./reply-DZQ3_aVE.js";
2
+ import { Mn as createSlackWebClient, dt as loadProviderUsageSummary, ft as formatUsageReportLines, gn as fetchChannelPermissionsDiscord, hn as parseDiscordTarget } from "./reply-tjsZJRCw.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-Dl1sS5S-.js";
4
4
  import "./paths-DcA9-j8b.js";
5
5
  import { c as normalizeAccountId, t as DEFAULT_ACCOUNT_ID } from "./session-key-hGS8_hRJ.js";
@@ -60,14 +60,14 @@ import { n as resolveMessageChannelSelection } from "./channel-selection-BZvCBj3
60
60
  import { t as resolveChannelDefaultAccountId } from "./helpers-Ccy5jhZP.js";
61
61
  import "./note-ty8fydmp.js";
62
62
  import { t as createClackPrompter } from "./clack-prompter-D03d7Olp.js";
63
- import { i as reloadOnboardingPluginRegistry, n as setupChannels, r as ensureOnboardingPluginInstalled } from "./onboard-channels-BOIwWe7y.js";
63
+ import { i as reloadOnboardingPluginRegistry, n as setupChannels, r as ensureOnboardingPluginInstalled } from "./onboard-channels-BI-CPjHC.js";
64
64
  import { i as listChannelPluginCatalogEntries } from "./plugin-auto-enable-ClD8Hu9T.js";
65
- import "./archive-B9eFsEBD.js";
65
+ import "./archive-B2TNvtJ1.js";
66
66
  import "./skill-scanner-BapBkMb3.js";
67
- import "./installs-DH4yiUE5.js";
67
+ import "./installs-h4Uc-evh.js";
68
68
  import { t as collectChannelStatusIssues } from "./channels-status-issues-BaXwaWXv.js";
69
- import { n as hasExplicitOptions } from "./plugin-registry-BBCa_6U3.js";
70
- import { t as formatCliChannelOptions } from "./channel-options-Cwq1AqwO.js";
69
+ import { n as hasExplicitOptions } from "./plugin-registry-DzMh5IiO.js";
70
+ import { t as formatCliChannelOptions } from "./channel-options-BZFkxqhG.js";
71
71
  import { t as buildChannelAccountSnapshot } from "./status-DqH1H1Pt.js";
72
72
  import { t as parseLogLine } from "./parse-log-line-BjmXZSHU.js";
73
73
  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-Disrwhkp.js";
2
+ export { registerDaemonCli, runDaemonInstall, runDaemonRestart, runDaemonStart, runDaemonStatus, runDaemonStop, runDaemonUninstall } from "../daemon-cli-BoYYTs26.js";
@@ -1,5 +1,5 @@
1
1
  import "./pi-embedded-helpers-D5gz7ahu.js";
2
- import { ut as loadSKYKOIPlugins } from "./reply-DZQ3_aVE.js";
2
+ import { ut as loadSKYKOIPlugins } from "./reply-tjsZJRCw.js";
3
3
  import { t as createSubsystemLogger } from "./subsystem-Dl1sS5S-.js";
4
4
  import "./paths-DcA9-j8b.js";
5
5
  import "./utils-DIctjiBL.js";
@@ -1,6 +1,6 @@
1
1
  import { r as __exportAll } from "./chunk-D_gEzPfs.js";
2
2
  import { g as resolveStateDir } from "./paths-DcA9-j8b.js";
3
- import { n as registerSubCliByName, t as getSubCliEntries } from "./register.subclis-CaMMmAh5.js";
3
+ import { n as registerSubCliByName, t as getSubCliEntries } from "./register.subclis-BYn7PfDN.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 { $t as runMemoryStatus, Ct as formatControlUiSshHint, D as runMessageAction, Et as moveToTrash, Ft as waitForGatewayReachable, I as CHANNEL_MESSAGE_ACTION_NAMES, Mt as resolveControlUiLinks, Ot as openUrl, P as formatTargetDisplay, Qt as registerMemoryCli, St as ensureWorkspaceAndSessions, Tt as handleReset, at as CHANNEL_TARGETS_DESCRIPTION, jt as randomToken, mr as lookupContextTokens, ot as CHANNEL_TARGET_DESCRIPTION, vt as DEFAULT_WORKSPACE, xt as detectBrowserOpenSupport, yt as applyWizardMetadata } from "./reply-DZQ3_aVE.js";
1
+ import { $t as runMemoryStatus, Ct as formatControlUiSshHint, D as runMessageAction, Et as moveToTrash, Ft as waitForGatewayReachable, I as CHANNEL_MESSAGE_ACTION_NAMES, Mt as resolveControlUiLinks, Ot as openUrl, P as formatTargetDisplay, Qt as registerMemoryCli, St as ensureWorkspaceAndSessions, Tt as handleReset, at as CHANNEL_TARGETS_DESCRIPTION, jt as randomToken, mr as lookupContextTokens, ot as CHANNEL_TARGET_DESCRIPTION, vt as DEFAULT_WORKSPACE, xt as detectBrowserOpenSupport, yt as applyWizardMetadata } from "./reply-tjsZJRCw.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-Dl1sS5S-.js";
3
3
  import { g as resolveStateDir, i as isNixMode, m as resolveOAuthDir, o as resolveConfigPath, r as STATE_DIR, u as resolveGatewayPort } from "./paths-DcA9-j8b.js";
4
4
  import { l as normalizeAgentId, n as DEFAULT_AGENT_ID, t as DEFAULT_ACCOUNT_ID } from "./session-key-hGS8_hRJ.js";
@@ -19,29 +19,29 @@ import { t as formatDocsLink } from "./links-yjT27ApF.js";
19
19
  import { n as runCommandWithRuntime } from "./cli-utils-CodyYLHe.js";
20
20
  import { n as withProgress } from "./progress-C_FQJYVr.js";
21
21
  import { n as stylePromptMessage, r as stylePromptTitle, t as stylePromptHint } from "./prompt-style-DjEIdF58.js";
22
- import { t as createDefaultDeps } from "./deps-CSxuftaz.js";
22
+ import { t as createDefaultDeps } from "./deps-rn0gZrpC.js";
23
23
  import { a as gatewayInstallErrorHint, g as assertSupportedRuntime, i as buildGatewayInstallPlan, r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-vtoMFexx.js";
24
24
  import { t as resolveChannelDefaultAccountId } from "./helpers-Ccy5jhZP.js";
25
25
  import { n as logConfigUpdated, t as formatConfigPath } from "./logging-B818ac7o.js";
26
26
  import { t as WizardCancelledError } from "./prompts-CDHXxTNu.js";
27
27
  import { t as createClackPrompter } from "./clack-prompter-D03d7Olp.js";
28
- import { a as buildAgentSummaries, c as loadAgentIdentity, f as parseIdentityMarkdown, i as applyAgentConfig, l as pruneAgentConfig, n as statusCommand, o as findAgentEntryIndex, s as listAgentEntries, t as runOnboardingWizard, u as identityHasValues } from "./onboarding-BwDfkuRd.js";
29
- import { d as applyAuthChoice, f as applyOpenAIConfig, h as promptAuthChoiceGrouped, m as applyGoogleGeminiModelDefault, p as upsertSharedEnvVar, u as warnIfModelConfigLooksOff } from "./onboard-skills-ABmjQxZO.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-CsQ2uNhC.js";
31
- import { n as setupChannels } from "./onboard-channels-BOIwWe7y.js";
32
- import { l as healthCommand } from "./health-format-YyoxdlUl.js";
28
+ import { a as buildAgentSummaries, c as loadAgentIdentity, f as parseIdentityMarkdown, i as applyAgentConfig, l as pruneAgentConfig, n as statusCommand, o as findAgentEntryIndex, s as listAgentEntries, t as runOnboardingWizard, u as identityHasValues } from "./onboarding-BKfryJ6L.js";
29
+ import { d as applyAuthChoice, f as applyOpenAIConfig, h as promptAuthChoiceGrouped, m as applyGoogleGeminiModelDefault, p as upsertSharedEnvVar, u as warnIfModelConfigLooksOff } from "./onboard-skills-DGackeCI.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-CKHES8sa.js";
31
+ import { n as setupChannels } from "./onboard-channels-BI-CPjHC.js";
32
+ import { l as healthCommand } from "./health-format-CAyqRYsb.js";
33
33
  import { t as renderTable } from "./table-BuHjFIeu.js";
34
34
  import { t as resolveGatewayService } from "./service-Fxlow9XO.js";
35
35
  import { r as isSystemdUserServiceAvailable } from "./systemd-BTcdURXT.js";
36
- import { l as getVerboseFlag, o as getFlagValue, r as registerSubCliCommands, s as getPositiveIntFlagValue, u as hasFlag } from "./register.subclis-CaMMmAh5.js";
36
+ import { l as getVerboseFlag, o as getFlagValue, r as registerSubCliCommands, s as getPositiveIntFlagValue, u as hasFlag } from "./register.subclis-BYn7PfDN.js";
37
37
  import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-D4VaaKAU.js";
38
38
  import { t as formatHelpExamples } from "./help-format-rUxU9jE_.js";
39
- import { a as createOutboundSendDeps, n as resolveSessionKeyForRequest, t as agentCommand } from "./agent-Bf_tMAMV.js";
40
- import { n as hasExplicitOptions, t as ensurePluginRegistryLoaded } from "./plugin-registry-BBCa_6U3.js";
39
+ import { a as createOutboundSendDeps, n as resolveSessionKeyForRequest, t as agentCommand } from "./agent-p9b8oR9g.js";
40
+ import { n as hasExplicitOptions, t as ensurePluginRegistryLoaded } from "./plugin-registry-DzMh5IiO.js";
41
41
  import { n as parsePositiveIntOrUndefined, t as collectOption } from "./helpers-xCg96Vkw.js";
42
- import { i as CONFIGURE_WIZARD_SECTIONS, n as configureCommand, r as configureCommandWithSections } from "./configure-B3WJCiYG.js";
42
+ import { i as CONFIGURE_WIZARD_SECTIONS, n as configureCommand, r as configureCommandWithSections } from "./configure-C_b3Snqr.js";
43
43
  import { n as ensureSystemdUserLingerNonInteractive } from "./systemd-linger-BSA8MnYc.js";
44
- import { n as loadAndMaybeMigrateDoctorConfig, t as doctorCommand } from "./doctor-Bxfuf1yk.js";
44
+ import { n as loadAndMaybeMigrateDoctorConfig, t as doctorCommand } from "./doctor-BEpUTgnw.js";
45
45
  import { fileURLToPath } from "node:url";
46
46
  import fs from "node:fs";
47
47
  import path from "node:path";
@@ -2792,7 +2792,7 @@ async function loadValidConfig() {
2792
2792
  }
2793
2793
  function registerConfigCli(program) {
2794
2794
  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) => {
2795
- const { CONFIGURE_WIZARD_SECTIONS, configureCommand, configureCommandWithSections } = await import("./configure-B3WJCiYG.js").then((n) => n.t);
2795
+ const { CONFIGURE_WIZARD_SECTIONS, configureCommand, configureCommandWithSections } = await import("./configure-C_b3Snqr.js").then((n) => n.t);
2796
2796
  const sections = Array.isArray(opts.section) ? opts.section.map((value) => typeof value === "string" ? value.trim() : "").filter(Boolean) : [];
2797
2797
  if (sections.length === 0) {
2798
2798
  await configureCommand(defaultRuntime);
@@ -1,5 +1,5 @@
1
1
  import { r as __exportAll } from "./chunk-D_gEzPfs.js";
2
- import { At as probeGatewayReachable, Dt as normalizeGatewayTokenInput, Ft as waitForGatewayReachable, Mt as resolveControlUiLinks, Pt as summarizeExistingConfig, St as ensureWorkspaceAndSessions, jt as randomToken, kt as printWizardHeader, vt as DEFAULT_WORKSPACE, wt as guardCancel, yt as applyWizardMetadata } from "./reply-DZQ3_aVE.js";
2
+ import { At as probeGatewayReachable, Dt as normalizeGatewayTokenInput, Ft as waitForGatewayReachable, Mt as resolveControlUiLinks, Pt as summarizeExistingConfig, St as ensureWorkspaceAndSessions, jt as randomToken, kt as printWizardHeader, vt as DEFAULT_WORKSPACE, wt as guardCancel, yt as applyWizardMetadata } from "./reply-tjsZJRCw.js";
3
3
  import { c as defaultRuntime } from "./subsystem-Dl1sS5S-.js";
4
4
  import { t as CONFIG_PATH, u as resolveGatewayPort } from "./paths-DcA9-j8b.js";
5
5
  import { h as resolveUserPath, y as shortenHomePath } from "./utils-DIctjiBL.js";
@@ -15,9 +15,9 @@ import { n as logConfigUpdated } from "./logging-B818ac7o.js";
15
15
  import { t as note$1 } from "./note-ty8fydmp.js";
16
16
  import { t as WizardCancelledError } from "./prompts-CDHXxTNu.js";
17
17
  import { t as createClackPrompter } from "./clack-prompter-D03d7Olp.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-ABmjQxZO.js";
19
- import { n as setupChannels, t as noteChannelStatus } from "./onboard-channels-BOIwWe7y.js";
20
- import { l as healthCommand, n as ensureControlUiAssetsBuilt, t as formatHealthCheckFailure } from "./health-format-YyoxdlUl.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-DGackeCI.js";
19
+ import { n as setupChannels, t as noteChannelStatus } from "./onboard-channels-BI-CPjHC.js";
20
+ import { l as healthCommand, n as ensureControlUiAssetsBuilt, t as formatHealthCheckFailure } from "./health-format-CAyqRYsb.js";
21
21
  import { t as resolveGatewayService } from "./service-Fxlow9XO.js";
22
22
  import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-BSA8MnYc.js";
23
23
  import { confirm, intro, outro, select, text } from "@clack/prompts";
@@ -1,5 +1,5 @@
1
1
  import { r as __exportAll } from "./chunk-D_gEzPfs.js";
2
- import { Mt as resolveControlUiLinks } from "./reply-DZQ3_aVE.js";
2
+ import { Mt as resolveControlUiLinks } from "./reply-tjsZJRCw.js";
3
3
  import { C as colorize, O as getResolvedLoggerSettings, T as theme, c as defaultRuntime, w as isRich } from "./subsystem-Dl1sS5S-.js";
4
4
  import { d as resolveIsNixMode, g as resolveStateDir, o as resolveConfigPath, u as resolveGatewayPort } from "./paths-DcA9-j8b.js";
5
5
  import { y as shortenHomePath } from "./utils-DIctjiBL.js";
@@ -14,7 +14,7 @@ import { n as callGateway } from "./call-DwOdrKsR.js";
14
14
  import { t as formatDocsLink } from "./links-yjT27ApF.js";
15
15
  import { n as withProgress } from "./progress-C_FQJYVr.js";
16
16
  import { d as resolveGatewaySystemdServiceName, l as resolveGatewayLaunchAgentLabel } from "./constants-CXZus5hc.js";
17
- import { t as createDefaultDeps } from "./deps-CSxuftaz.js";
17
+ import { t as createDefaultDeps } from "./deps-rn0gZrpC.js";
18
18
  import { i as buildGatewayInstallPlan, r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-vtoMFexx.js";
19
19
  import { o as resolveGatewayLogPaths, t as resolveGatewayService } from "./service-Fxlow9XO.js";
20
20
  import { r as isSystemdUserServiceAvailable } from "./systemd-BTcdURXT.js";
@@ -1,4 +1,4 @@
1
- import { _t as sendMessageIMessage, fn as sendMessageTelegram, jn as sendMessageSlack, kn as sendMessageWhatsApp, pn as sendMessageDiscord } from "./reply-DZQ3_aVE.js";
1
+ import { _t as sendMessageIMessage, fn as sendMessageTelegram, jn as sendMessageSlack, kn as sendMessageWhatsApp, pn as sendMessageDiscord } from "./reply-tjsZJRCw.js";
2
2
  import { b as sendMessageSignal } from "./deliver-DDU96v2Z.js";
3
3
 
4
4
  //#region src/cli/deps.ts
@@ -1,4 +1,4 @@
1
- import { Sr as loadModelCatalog, jt as randomToken, kt as printWizardHeader, ut as loadSKYKOIPlugins, wt as guardCancel, yt as applyWizardMetadata } from "./reply-DZQ3_aVE.js";
1
+ import { Sr as loadModelCatalog, jt as randomToken, kt as printWizardHeader, ut as loadSKYKOIPlugins, wt as guardCancel, yt as applyWizardMetadata } from "./reply-tjsZJRCw.js";
2
2
  import { O as getResolvedLoggerSettings, c as defaultRuntime } from "./subsystem-Dl1sS5S-.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-DcA9-j8b.js";
4
4
  import { i as buildAgentMainSessionKey, l as normalizeAgentId, r as DEFAULT_MAIN_KEY, t as DEFAULT_ACCOUNT_ID } from "./session-key-hGS8_hRJ.js";
@@ -25,8 +25,8 @@ import { t as resolveChannelDefaultAccountId } from "./helpers-Ccy5jhZP.js";
25
25
  import { n as logConfigUpdated } from "./logging-B818ac7o.js";
26
26
  import { t as note$1 } from "./note-ty8fydmp.js";
27
27
  import { t as applyPluginAutoEnable } from "./plugin-auto-enable-ClD8Hu9T.js";
28
- import { i as resolveControlUiDistIndexPathForRoot, l as healthCommand, r as resolveControlUiDistIndexHealth, t as formatHealthCheckFailure } from "./health-format-YyoxdlUl.js";
29
- import { c as doctorShellCompletion, t as runGatewayUpdate } from "./update-runner-33xx7oYJ.js";
28
+ import { i as resolveControlUiDistIndexPathForRoot, l as healthCommand, r as resolveControlUiDistIndexHealth, t as formatHealthCheckFailure } from "./health-format-CAyqRYsb.js";
29
+ import { c as doctorShellCompletion, t as runGatewayUpdate } from "./update-runner-w1c33B-I.js";
30
30
  import { i as resolveGatewayAuth } from "./auth-CMhFyIcG.js";
31
31
  import { t as buildWorkspaceSkillStatus } from "./skills-status-BSS2etLw.js";
32
32
  import { a as repairLaunchAgentBootstrap, i as launchAgentPlistExists, n as isLaunchAgentListed, o as resolveGatewayLogPaths, r as isLaunchAgentLoaded, t as resolveGatewayService } from "./service-Fxlow9XO.js";
package/dist/entry.js CHANGED
@@ -244,7 +244,7 @@ if (!ensureExperimentalWarningSuppressed()) {
244
244
  applyCliProfileEnv({ profile: parsed.profile });
245
245
  process$1.argv = parsed.argv;
246
246
  }
247
- import("./run-main-Bfh7ZGBa.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
247
+ import("./run-main-BFgv6dNS.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
248
248
  console.error("[SKYKOI] Failed to start CLI:", error instanceof Error ? error.stack ?? error.message : error);
249
249
  process$1.exitCode = 1;
250
250
  });
@@ -1,5 +1,5 @@
1
1
  import "./pi-embedded-helpers-D5gz7ahu.js";
2
- import { Lr as resolveAgentTimeoutMs, Pn as resolveAgentIdentity, c as runEmbeddedPiAgent } from "./reply-DZQ3_aVE.js";
2
+ import { Lr as resolveAgentTimeoutMs, Pn as resolveAgentIdentity, c as runEmbeddedPiAgent } from "./reply-tjsZJRCw.js";
3
3
  import "./subsystem-Dl1sS5S-.js";
4
4
  import "./paths-DcA9-j8b.js";
5
5
  import "./utils-DIctjiBL.js";
@@ -1,6 +1,6 @@
1
1
  import { o as __toESM } from "./chunk-D_gEzPfs.js";
2
2
  import { B as normalizeElevatedLevel, H as normalizeThinkLevel, I as formatThinkingLevels, K as supportsXHighThinking, L as formatXHighModelHint, U as normalizeUsageDisplay, V as normalizeReasoningLevel, W as normalizeVerboseLevel } from "./pi-embedded-helpers-D5gz7ahu.js";
3
- import { $ as inferLegacyName, $n as setTtsEnabled, An as normalizePollInput, Ar as DEFAULT_INPUT_PDF_MAX_PIXELS, B as consumeGatewaySigusr1RestartAuthorization, Bn as createInternalHookEvent, Bt as getRemoteSkillEligibility, C as readSessionMessages, Cr as DEFAULT_INPUT_FILE_MAX_BYTES, Dn as onAgentEvent, Dr as DEFAULT_INPUT_IMAGE_MIMES, E as stripEnvelopeFromMessages, En as getAgentRunContext, Er as DEFAULT_INPUT_IMAGE_MAX_BYTES, F as resetDirectoryCache, Fr as normalizeMimeList, G as formatDoctorNonInteractiveHint, Gn as getTtsProvider, Gt as setSkillsRemoteRegistry, H as scheduleGatewaySigusr1Restart, Hn as triggerInternalHook, Ht as recordRemoteNodeInfo, In as formatUserTime, It as CONTROL_UI_AVATAR_PREFIX, J as summarizeRestartSentinel, Jn as resolveTtsApiKey, Jt as buildSafeExternalPrompt, K as formatRestartSentinelMessage, Kn as isTtsEnabled, Kt as getSkillsSnapshotVersion, L as runWithModelFallback, Ln as resolveUserTimeFormat, Lr as resolveAgentTimeoutMs, Lt as buildControlUiAvatarUrl, M as resolveOutboundTarget, Mr as DEFAULT_INPUT_TIMEOUT_MS, N as resolveSessionDeliveryTarget, Nr as extractFileContentFromSource, O as ensureOutboundSessionEntry, On as registerAgentRunContext, Or as DEFAULT_INPUT_MAX_REDIRECTS, Pn as resolveAgentIdentity, Pr as extractImageContentFromSource, Q as normalizeCronJobPatch, Qn as resolveTtsProviderOrder, Rn as resolveUserTimezone, Rt as normalizeControlUiBasePath, S as capArrayByJsonBytes, Sn as initSubagentRegistry, Sr as loadModelCatalog, T as resolveSessionTranscriptCandidates, Tn as emitAgentEvent, Tr as DEFAULT_INPUT_FILE_MIMES, Tt as handleReset, U as setGatewaySigusr1RestartPolicy, Un as OPENAI_TTS_MODELS, Ut as refreshRemoteBinsForConnectedNodes, V as isGatewaySigusr1RestartExternallyAllowed, Vn as registerInternalHook, Vt as primeRemoteSkillsCache, W as consumeRestartSentinel, Wn as OPENAI_TTS_VOICES, Wt as refreshRemoteNodeBins, X as writeRestartSentinel, Xn as resolveTtsConfig, Xt as getHookType, Yn as resolveTtsAutoMode, Yt as detectSuspiciousPatterns, Z as normalizeCronJobCreate, Zn as resolveTtsPrefsPath, Zt as isExternalHookSession, _ as loadCombinedSessionStoreForGateway, _n as dispatchInboundMessage, _r as applyVerboseOverride, a as normalizeSendPolicy, ar as CommandLane, b as resolveSessionModelRef, bn as isAbortTrigger, br as isSystemEventContextChanged, c as runEmbeddedPiAgent, cr as isDiagnosticsEnabled, d as waitForEmbeddedPiRunEnd, dt as loadProviderUsageSummary, er as setTtsProvider, et as normalizeOptionalAgentId, g as listSessionsFromStore, gr as applyModelOverrideToSessionEntry, h as listAgentsForGateway, ht as handleSlackHttpRequest, i as runCliAgent, in as registerUnhandledRejectionHandler, ir as setCommandLaneConcurrency, it as migrateLegacyCronPayload, jr as DEFAULT_INPUT_PDF_MIN_TEXT_CHARS, k as resolveOutboundSessionRoute, kr as DEFAULT_INPUT_PDF_MAX_PAGES, l as abortEmbeddedPiRun, ln as getLastHeartbeatEvent, lr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, lt as getPluginToolMeta, m as resolveAnnounceTargetFromKey, mn as getChannelActivity, mr as lookupContextTokens, n as getCliSessionId, nn as normalizeGroupActivation, nt as normalizePayloadToSystemText, o as resolveSendPolicy, on as buildHistoryContextFromEntries, or as startDiagnosticHeartbeat, p as createSKYKOITools, pr as stripHeartbeatToken, qn as isTtsProviderConfigured, qt as registerSkillsChangeListener, r as setCliSessionId, rt as normalizeRequiredName, s as clearSessionQueues, sn as resolveHeartbeatVisibility, sr as stopDiagnosticHeartbeat, st as requestHeartbeatNow, tn as createReplyPrefixOptions, tr as textToSpeech, tt as normalizeOptionalText, un as onHeartbeatEvent, ut as loadSKYKOIPlugins, v as loadSessionEntry, vn as createReplyDispatcher, vr as parseVerboseOverride, w as readSessionPreviewItemsFromTranscript, wn as clearAgentRunContext, wr as DEFAULT_INPUT_FILE_MAX_CHARS, x as archiveFileOnDisk, xn as stopSubagentsForRequester, y as resolveGatewaySessionStoreTarget, yn as formatZonedTimestamp, yr as enqueueSystemEvent, z as authorizeGatewaySigusr1Restart, zn as clearInternalHooks, zt as resolveAssistantAvatarUrl } from "./reply-DZQ3_aVE.js";
3
+ import { $ as inferLegacyName, $n as setTtsEnabled, An as normalizePollInput, Ar as DEFAULT_INPUT_PDF_MAX_PIXELS, B as consumeGatewaySigusr1RestartAuthorization, Bn as createInternalHookEvent, Bt as getRemoteSkillEligibility, C as readSessionMessages, Cr as DEFAULT_INPUT_FILE_MAX_BYTES, Dn as onAgentEvent, Dr as DEFAULT_INPUT_IMAGE_MIMES, E as stripEnvelopeFromMessages, En as getAgentRunContext, Er as DEFAULT_INPUT_IMAGE_MAX_BYTES, F as resetDirectoryCache, Fr as normalizeMimeList, G as formatDoctorNonInteractiveHint, Gn as getTtsProvider, Gt as setSkillsRemoteRegistry, H as scheduleGatewaySigusr1Restart, Hn as triggerInternalHook, Ht as recordRemoteNodeInfo, In as formatUserTime, It as CONTROL_UI_AVATAR_PREFIX, J as summarizeRestartSentinel, Jn as resolveTtsApiKey, Jt as buildSafeExternalPrompt, K as formatRestartSentinelMessage, Kn as isTtsEnabled, Kt as getSkillsSnapshotVersion, L as runWithModelFallback, Ln as resolveUserTimeFormat, Lr as resolveAgentTimeoutMs, Lt as buildControlUiAvatarUrl, M as resolveOutboundTarget, Mr as DEFAULT_INPUT_TIMEOUT_MS, N as resolveSessionDeliveryTarget, Nr as extractFileContentFromSource, O as ensureOutboundSessionEntry, On as registerAgentRunContext, Or as DEFAULT_INPUT_MAX_REDIRECTS, Pn as resolveAgentIdentity, Pr as extractImageContentFromSource, Q as normalizeCronJobPatch, Qn as resolveTtsProviderOrder, Rn as resolveUserTimezone, Rt as normalizeControlUiBasePath, S as capArrayByJsonBytes, Sn as initSubagentRegistry, Sr as loadModelCatalog, T as resolveSessionTranscriptCandidates, Tn as emitAgentEvent, Tr as DEFAULT_INPUT_FILE_MIMES, Tt as handleReset, U as setGatewaySigusr1RestartPolicy, Un as OPENAI_TTS_MODELS, Ut as refreshRemoteBinsForConnectedNodes, V as isGatewaySigusr1RestartExternallyAllowed, Vn as registerInternalHook, Vt as primeRemoteSkillsCache, W as consumeRestartSentinel, Wn as OPENAI_TTS_VOICES, Wt as refreshRemoteNodeBins, X as writeRestartSentinel, Xn as resolveTtsConfig, Xt as getHookType, Yn as resolveTtsAutoMode, Yt as detectSuspiciousPatterns, Z as normalizeCronJobCreate, Zn as resolveTtsPrefsPath, Zt as isExternalHookSession, _ as loadCombinedSessionStoreForGateway, _n as dispatchInboundMessage, _r as applyVerboseOverride, a as normalizeSendPolicy, ar as CommandLane, b as resolveSessionModelRef, bn as isAbortTrigger, br as isSystemEventContextChanged, c as runEmbeddedPiAgent, cr as isDiagnosticsEnabled, d as waitForEmbeddedPiRunEnd, dt as loadProviderUsageSummary, er as setTtsProvider, et as normalizeOptionalAgentId, g as listSessionsFromStore, gr as applyModelOverrideToSessionEntry, h as listAgentsForGateway, ht as handleSlackHttpRequest, i as runCliAgent, in as registerUnhandledRejectionHandler, ir as setCommandLaneConcurrency, it as migrateLegacyCronPayload, jr as DEFAULT_INPUT_PDF_MIN_TEXT_CHARS, k as resolveOutboundSessionRoute, kr as DEFAULT_INPUT_PDF_MAX_PAGES, l as abortEmbeddedPiRun, ln as getLastHeartbeatEvent, lr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, lt as getPluginToolMeta, m as resolveAnnounceTargetFromKey, mn as getChannelActivity, mr as lookupContextTokens, n as getCliSessionId, nn as normalizeGroupActivation, nt as normalizePayloadToSystemText, o as resolveSendPolicy, on as buildHistoryContextFromEntries, or as startDiagnosticHeartbeat, p as createSKYKOITools, pr as stripHeartbeatToken, qn as isTtsProviderConfigured, qt as registerSkillsChangeListener, r as setCliSessionId, rt as normalizeRequiredName, s as clearSessionQueues, sn as resolveHeartbeatVisibility, sr as stopDiagnosticHeartbeat, st as requestHeartbeatNow, tn as createReplyPrefixOptions, tr as textToSpeech, tt as normalizeOptionalText, un as onHeartbeatEvent, ut as loadSKYKOIPlugins, v as loadSessionEntry, vn as createReplyDispatcher, vr as parseVerboseOverride, w as readSessionPreviewItemsFromTranscript, wn as clearAgentRunContext, wr as DEFAULT_INPUT_FILE_MAX_CHARS, x as archiveFileOnDisk, xn as stopSubagentsForRequester, y as resolveGatewaySessionStoreTarget, yn as formatZonedTimestamp, yr as enqueueSystemEvent, z as authorizeGatewaySigusr1Restart, zn as clearInternalHooks, zt as resolveAssistantAvatarUrl } from "./reply-tjsZJRCw.js";
4
4
  import { C as colorize, D as getLogger, E as getChildLogger, N as DEFAULT_CHAT_CHANNEL, O as getResolvedLoggerSettings, T as theme, V as getActivePluginRegistry, a as setConsoleTimestampPrefix, c as defaultRuntime, i as setConsoleSubsystemFilter, j as CHANNEL_IDS, n as runtimeForLogger, t as createSubsystemLogger, w as isRich, y as setVerbose } from "./subsystem-Dl1sS5S-.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-DcA9-j8b.js";
6
6
  import { _ as isSubagentSessionKey, d as resolveAgentIdFromSessionKey, i as buildAgentMainSessionKey, l as normalizeAgentId, m as toAgentRequestSessionKey, n as DEFAULT_AGENT_ID, t as DEFAULT_ACCOUNT_ID, u as normalizeMainKey, v as parseAgentSessionKey } from "./session-key-hGS8_hRJ.js";
@@ -64,7 +64,7 @@ import { i as readExecApprovalsSnapshot, o as resolveExecApprovalsSocketPath, r
64
64
  import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-BonAEJ5j.js";
65
65
  import { t as parseAbsoluteTimeMs } from "./parse-CQc2Wki1.js";
66
66
  import { n as resolveMessageChannelSelection } from "./channel-selection-BZvCBj33.js";
67
- import { n as createOutboundSendDeps, t as createDefaultDeps } from "./deps-CSxuftaz.js";
67
+ import { n as createOutboundSendDeps, t as createDefaultDeps } from "./deps-rn0gZrpC.js";
68
68
  import { i as enableTailscaleServe, n as disableTailscaleServe, o as getTailnetHostname, r as enableTailscaleFunnel, t as disableTailscaleFunnel } from "./tailscale-CW2aNYJ9.js";
69
69
  import { t as ensureSKYKOICliOnPath } from "./path-env-DsAko5OY.js";
70
70
  import "./daemon-runtime-vtoMFexx.js";
@@ -73,16 +73,16 @@ import { t as resolveChannelDefaultAccountId } from "./helpers-Ccy5jhZP.js";
73
73
  import "./logging-B818ac7o.js";
74
74
  import "./note-ty8fydmp.js";
75
75
  import { t as WizardCancelledError } from "./prompts-CDHXxTNu.js";
76
- import { c as loadAgentIdentity, d as loadAgentIdentityFromWorkspace, i as applyAgentConfig, l as pruneAgentConfig, o as findAgentEntryIndex, r as getStatusSummary, s as listAgentEntries, t as runOnboardingWizard } from "./onboarding-BwDfkuRd.js";
77
- import { n as installSkill } from "./onboard-skills-ABmjQxZO.js";
78
- import "./github-copilot-auth-CsQ2uNhC.js";
79
- import "./onboard-channels-BOIwWe7y.js";
76
+ import { c as loadAgentIdentity, d as loadAgentIdentityFromWorkspace, i as applyAgentConfig, l as pruneAgentConfig, o as findAgentEntryIndex, r as getStatusSummary, s as listAgentEntries, t as runOnboardingWizard } from "./onboarding-BKfryJ6L.js";
77
+ import { n as installSkill } from "./onboard-skills-DGackeCI.js";
78
+ import "./github-copilot-auth-CKHES8sa.js";
79
+ import "./onboard-channels-BI-CPjHC.js";
80
80
  import { r as buildChannelUiCatalog, t as applyPluginAutoEnable } from "./plugin-auto-enable-ClD8Hu9T.js";
81
- import "./archive-B9eFsEBD.js";
81
+ import "./archive-B2TNvtJ1.js";
82
82
  import "./skill-scanner-BapBkMb3.js";
83
- import "./installs-DH4yiUE5.js";
84
- import { a as resolveControlUiRootOverrideSync, c as getHealthSnapshot, d as runHeartbeatOnce, f as setHeartbeatsEnabled, n as ensureControlUiAssetsBuilt, o as resolveControlUiRootSync, p as startHeartbeatRunner, s as formatHealthChannelLines } from "./health-format-YyoxdlUl.js";
85
- import { S as normalizeUpdateChannel, _ as resolveNpmChannelTag, h as compareSemverStrings, m as checkUpdateStatus, t as runGatewayUpdate, y as DEFAULT_PACKAGE_CHANNEL } from "./update-runner-33xx7oYJ.js";
83
+ import "./installs-h4Uc-evh.js";
84
+ import { a as resolveControlUiRootOverrideSync, c as getHealthSnapshot, d as runHeartbeatOnce, f as setHeartbeatsEnabled, n as ensureControlUiAssetsBuilt, o as resolveControlUiRootSync, p as startHeartbeatRunner, s as formatHealthChannelLines } from "./health-format-CAyqRYsb.js";
85
+ import { S as normalizeUpdateChannel, _ as resolveNpmChannelTag, h as compareSemverStrings, m as checkUpdateStatus, t as runGatewayUpdate, y as DEFAULT_PACKAGE_CHANNEL } from "./update-runner-w1c33B-I.js";
86
86
  import { i as resolveGatewayAuth, n as authorizeGatewayConnect, r as isLocalDirectRequest, t as assertGatewayAuthConfigured } from "./auth-CMhFyIcG.js";
87
87
  import { i as probeGateway } from "./audit-CgQYEpCL.js";
88
88
  import "./table-BuHjFIeu.js";
@@ -92,16 +92,16 @@ import { p as resolveGatewayStateDir } from "./systemd-BTcdURXT.js";
92
92
  import "./service-audit-CO_WVcvf.js";
93
93
  import "./node-service-CdjRxBgz.js";
94
94
  import "./channels-status-issues-BaXwaWXv.js";
95
- import "./register.subclis-CaMMmAh5.js";
96
- import { a as createOutboundSendDeps$1, i as resolveAgentOutboundTarget, r as resolveAgentDeliveryPlan, t as agentCommand } from "./agent-Bf_tMAMV.js";
95
+ import "./register.subclis-BYn7PfDN.js";
96
+ import { a as createOutboundSendDeps$1, i as resolveAgentOutboundTarget, r as resolveAgentDeliveryPlan, t as agentCommand } from "./agent-p9b8oR9g.js";
97
97
  import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-C09wbKzV.js";
98
98
  import { n as discoverGatewayBeacons } from "./bonjour-discovery-DF5ll51G.js";
99
- import "./completion-cli-CppZbiOR.js";
99
+ import "./completion-cli-DZIf5MsP.js";
100
100
  import { i as shouldIncludeHook, n as loadWorkspaceHookEntries, r as resolveHookConfig } from "./hooks-status-Bk7yFv90.js";
101
101
  import "./tui-0wcL5_de.js";
102
102
  import { t as buildChannelAccountSnapshot } from "./status-DqH1H1Pt.js";
103
103
  import "./shared-BzZOYgS0.js";
104
- import { a as runDaemonStop, i as runDaemonStart, n as runDaemonStatus, o as runDaemonUninstall, r as runDaemonRestart, s as runDaemonInstall } from "./daemon-cli-Disrwhkp.js";
104
+ import { a as runDaemonStop, i as runDaemonStart, n as runDaemonStatus, o as runDaemonUninstall, r as runDaemonRestart, s as runDaemonInstall } from "./daemon-cli-BoYYTs26.js";
105
105
  import { a as toOptionString, i as parsePort$1, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-vW-rMMy7.js";
106
106
  import { i as setGatewayWsLogStyle, n as logWs, r as summarizeAgentEventForWsLog, t as formatForLog } from "./ws-log-NQGsvlnZ.js";
107
107
  import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-Ja2q39R7.js";
@@ -10588,7 +10588,7 @@ const nodeHandlers = {
10588
10588
  const p = params;
10589
10589
  const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
10590
10590
  await respondUnavailableOnThrow(respond, async () => {
10591
- const { handleNodeEvent } = await import("./server-node-events-BZublOnK.js");
10591
+ const { handleNodeEvent } = await import("./server-node-events-DruIxhbS.js");
10592
10592
  const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
10593
10593
  await handleNodeEvent({
10594
10594
  deps: context.deps,
@@ -1,4 +1,4 @@
1
- import { ut as loadSKYKOIPlugins } from "./reply-DZQ3_aVE.js";
1
+ import { ut as loadSKYKOIPlugins } from "./reply-tjsZJRCw.js";
2
2
  import { t as createSubsystemLogger } from "./subsystem-Dl1sS5S-.js";
3
3
  import { l as normalizeAgentId } from "./session-key-hGS8_hRJ.js";
4
4
  import { b as sleep } from "./utils-DIctjiBL.js";
@@ -1,4 +1,4 @@
1
- import { A as resolveHeartbeatDeliveryTarget, Fn as resolveEffectiveMessagesConfig, Rn as resolveUserTimezone, ar as CommandLane, cn as emitHeartbeatEvent, ct as setHeartbeatWakeHandler, dn as resolveIndicatorType, dr as isHeartbeatContentEffectivelyEmpty, fr as resolveHeartbeatPrompt$1, j as resolveHeartbeatSenderContext, lr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, nr as enqueueCommandInLane, pr as stripHeartbeatToken, rr as getQueueSize, sn as resolveHeartbeatVisibility, st as requestHeartbeatNow, t as getReplyFromConfig, u as isEmbeddedPiRunActive, ur as DEFAULT_HEARTBEAT_EVERY, xr as peekSystemEvents } from "./reply-DZQ3_aVE.js";
1
+ import { A as resolveHeartbeatDeliveryTarget, Fn as resolveEffectiveMessagesConfig, Rn as resolveUserTimezone, ar as CommandLane, cn as emitHeartbeatEvent, ct as setHeartbeatWakeHandler, dn as resolveIndicatorType, dr as isHeartbeatContentEffectivelyEmpty, fr as resolveHeartbeatPrompt$1, j as resolveHeartbeatSenderContext, lr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, nr as enqueueCommandInLane, pr as stripHeartbeatToken, rr as getQueueSize, sn as resolveHeartbeatVisibility, st as requestHeartbeatNow, t as getReplyFromConfig, u as isEmbeddedPiRunActive, ur as DEFAULT_HEARTBEAT_EVERY, xr as peekSystemEvents } from "./reply-tjsZJRCw.js";
2
2
  import { C as colorize, T as theme, c as defaultRuntime, m as info, t as createSubsystemLogger, w as isRich } from "./subsystem-Dl1sS5S-.js";
3
3
  import { d as resolveAgentIdFromSessionKey, h as toAgentStoreSessionKey, l as normalizeAgentId } from "./session-key-hGS8_hRJ.js";
4
4
  import { t as runCommandWithTimeout } from "./exec-CToLomNk.js";
@@ -1,5 +1,5 @@
1
1
  import "./pi-embedded-helpers-D5gz7ahu.js";
2
- import "./reply-DZQ3_aVE.js";
2
+ import "./reply-tjsZJRCw.js";
3
3
  import { T as theme, c as defaultRuntime } from "./subsystem-Dl1sS5S-.js";
4
4
  import "./paths-DcA9-j8b.js";
5
5
  import { h as resolveUserPath, t as CONFIG_DIR, y as shortenHomePath } from "./utils-DIctjiBL.js";
@@ -55,10 +55,10 @@ import "./satisfies-Ch9z1ETk.js";
55
55
  import "./session-cost-usage-CJ5Inqel.js";
56
56
  import "./control-service-BonAEJ5j.js";
57
57
  import "./channel-selection-BZvCBj33.js";
58
- import { a as resolvePackedRootDir, i as resolveArchiveKind, n as fileExists, r as readJsonFile, t as extractArchive } from "./archive-B9eFsEBD.js";
58
+ import { a as resolvePackedRootDir, i as resolveArchiveKind, n as fileExists, r as readJsonFile, t as extractArchive } from "./archive-B2TNvtJ1.js";
59
59
  import { t as renderTable } from "./table-BuHjFIeu.js";
60
60
  import { a as parseFrontmatter, n as loadWorkspaceHookEntries, t as buildWorkspaceHookStatus } from "./hooks-status-Bk7yFv90.js";
61
- import { t as buildPluginStatusReport } from "./status-B-KwCl0n.js";
61
+ import { t as buildPluginStatusReport } from "./status-CW25nak_.js";
62
62
  import fs from "node:fs";
63
63
  import path from "node:path";
64
64
  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-D5gz7ahu.js";
3
- import { Ir as applyTemplate, an as waitForever, en as monitorWebChannel, rn as installUnhandledRejectionHandler, t as getReplyFromConfig } from "./reply-DZQ3_aVE.js";
3
+ import { Ir as applyTemplate, an as waitForever, en as monitorWebChannel, rn as installUnhandledRejectionHandler, t as getReplyFromConfig } from "./reply-tjsZJRCw.js";
4
4
  import { r as enableConsoleCapture } from "./subsystem-Dl1sS5S-.js";
5
5
  import "./paths-DcA9-j8b.js";
6
6
  import { S as toWhatsappJid, d as normalizeE164, n as assertWebChannel } from "./utils-DIctjiBL.js";
@@ -55,27 +55,27 @@ import "./satisfies-Ch9z1ETk.js";
55
55
  import "./session-cost-usage-CJ5Inqel.js";
56
56
  import "./control-service-BonAEJ5j.js";
57
57
  import "./channel-selection-BZvCBj33.js";
58
- import { t as createDefaultDeps } from "./deps-CSxuftaz.js";
58
+ import { t as createDefaultDeps } from "./deps-rn0gZrpC.js";
59
59
  import { l as ensureBinary, u as promptYesNo } from "./tailscale-CW2aNYJ9.js";
60
60
  import { t as loadDotEnv } from "./dotenv-DlZCd7a6.js";
61
61
  import { t as isMainModule } from "./is-main-DY9Hjhai.js";
62
62
  import { t as ensureSKYKOICliOnPath } from "./path-env-DsAko5OY.js";
63
63
  import { g as assertSupportedRuntime } from "./daemon-runtime-vtoMFexx.js";
64
64
  import "./ports-CCPpWmHD.js";
65
- import "./config-guard-QhBMwO58.js";
65
+ import "./config-guard-8XnGwS-a.js";
66
66
  import "./logging-B818ac7o.js";
67
67
  import "./note-ty8fydmp.js";
68
68
  import "./clack-prompter-D03d7Olp.js";
69
- import "./onboarding-BwDfkuRd.js";
70
- import "./onboard-skills-ABmjQxZO.js";
71
- import "./github-copilot-auth-CsQ2uNhC.js";
72
- import "./onboard-channels-BOIwWe7y.js";
69
+ import "./onboarding-BKfryJ6L.js";
70
+ import "./onboard-skills-DGackeCI.js";
71
+ import "./github-copilot-auth-CKHES8sa.js";
72
+ import "./onboard-channels-BI-CPjHC.js";
73
73
  import "./plugin-auto-enable-ClD8Hu9T.js";
74
- import "./archive-B9eFsEBD.js";
74
+ import "./archive-B2TNvtJ1.js";
75
75
  import "./skill-scanner-BapBkMb3.js";
76
- import "./installs-DH4yiUE5.js";
77
- import "./health-format-YyoxdlUl.js";
78
- import "./update-runner-33xx7oYJ.js";
76
+ import "./installs-h4Uc-evh.js";
77
+ import "./health-format-CAyqRYsb.js";
78
+ import "./update-runner-w1c33B-I.js";
79
79
  import "./auth-CMhFyIcG.js";
80
80
  import "./audit-CgQYEpCL.js";
81
81
  import "./table-BuHjFIeu.js";
@@ -85,22 +85,22 @@ import "./systemd-BTcdURXT.js";
85
85
  import "./service-audit-CO_WVcvf.js";
86
86
  import "./node-service-CdjRxBgz.js";
87
87
  import "./channels-status-issues-BaXwaWXv.js";
88
- import "./register.subclis-CaMMmAh5.js";
88
+ import "./register.subclis-BYn7PfDN.js";
89
89
  import "./gateway-rpc-D4VaaKAU.js";
90
90
  import "./help-format-rUxU9jE_.js";
91
- import "./agent-Bf_tMAMV.js";
92
- import "./plugin-registry-BBCa_6U3.js";
93
- import "./configure-B3WJCiYG.js";
91
+ import "./agent-p9b8oR9g.js";
92
+ import "./plugin-registry-DzMh5IiO.js";
93
+ import "./configure-C_b3Snqr.js";
94
94
  import "./systemd-linger-BSA8MnYc.js";
95
95
  import "./widearea-dns-C09wbKzV.js";
96
96
  import "./bonjour-discovery-DF5ll51G.js";
97
97
  import "./auth-health-Cg7cWRH-.js";
98
- import "./doctor-Bxfuf1yk.js";
99
- import "./completion-cli-CppZbiOR.js";
98
+ import "./doctor-BEpUTgnw.js";
99
+ import "./completion-cli-DZIf5MsP.js";
100
100
  import "./hooks-status-Bk7yFv90.js";
101
101
  import "./tui-0wcL5_de.js";
102
- import "./channel-options-Cwq1AqwO.js";
103
- import { n as buildProgram } from "./program-BK9kK6kS.js";
102
+ import "./channel-options-BZFkxqhG.js";
103
+ import { n as buildProgram } from "./program-1Z6kvss1.js";
104
104
  import process from "node:process";
105
105
  import { fileURLToPath } from "node:url";
106
106
 
@@ -1,7 +1,7 @@
1
1
  import { h as resolveUserPath, t as CONFIG_DIR } from "./utils-DIctjiBL.js";
2
2
  import { t as runCommandWithTimeout } from "./exec-CToLomNk.js";
3
3
  import { a as MANIFEST_KEY } from "./manifest-registry-5tS0nRed.js";
4
- import { a as resolvePackedRootDir, i as resolveArchiveKind, n as fileExists, r as readJsonFile, t as extractArchive } from "./archive-B9eFsEBD.js";
4
+ import { a as resolvePackedRootDir, i as resolveArchiveKind, n as fileExists, r as readJsonFile, t as extractArchive } from "./archive-B2TNvtJ1.js";
5
5
  import { t as scanDirectoryWithSummary } from "./skill-scanner-BapBkMb3.js";
6
6
  import path from "node:path";
7
7
  import os from "node:os";
@@ -1,5 +1,5 @@
1
1
  import "./pi-embedded-helpers-D5gz7ahu.js";
2
- import { Ot as openUrl, R as describeFailoverError, Sr as loadModelCatalog, c as runEmbeddedPiAgent, dt as loadProviderUsageSummary, mt as resolveUsageProviderId, pt as formatUsageWindowSummary } from "./reply-DZQ3_aVE.js";
2
+ import { Ot as openUrl, R as describeFailoverError, Sr as loadModelCatalog, c as runEmbeddedPiAgent, dt as loadProviderUsageSummary, mt as resolveUsageProviderId, pt as formatUsageWindowSummary } from "./reply-tjsZJRCw.js";
3
3
  import { C as colorize, T as theme, c as defaultRuntime, w as isRich$1 } from "./subsystem-Dl1sS5S-.js";
4
4
  import { t as CONFIG_PATH } from "./paths-DcA9-j8b.js";
5
5
  import { y as shortenHomePath } from "./utils-DIctjiBL.js";
@@ -59,7 +59,7 @@ import "./channel-selection-BZvCBj33.js";
59
59
  import { n as logConfigUpdated } from "./logging-B818ac7o.js";
60
60
  import "./note-ty8fydmp.js";
61
61
  import { t as createClackPrompter } from "./clack-prompter-D03d7Olp.js";
62
- import { a as normalizeAlias, c as updateConfig, d as resolvePluginProviders, i as formatTokenK, l as createVpsAwareOAuthHandlers, n as ensureFlagCompatibility, o as resolveKnownAgentId, pt as validateAnthropicSetupToken, r as formatMs, s as resolveModelTarget, t as githubCopilotLoginCommand, u as isRemoteEnvironment, v as applyAuthProfileConfig } from "./github-copilot-auth-CsQ2uNhC.js";
62
+ import { a as normalizeAlias, c as updateConfig, d as resolvePluginProviders, i as formatTokenK, l as createVpsAwareOAuthHandlers, n as ensureFlagCompatibility, o as resolveKnownAgentId, pt as validateAnthropicSetupToken, r as formatMs, s as resolveModelTarget, t as githubCopilotLoginCommand, u as isRemoteEnvironment, v as applyAuthProfileConfig } from "./github-copilot-auth-CKHES8sa.js";
63
63
  import { t as renderTable } from "./table-BuHjFIeu.js";
64
64
  import { i as redactSecrets } from "./format-APMZSEkl.js";
65
65
  import { n as buildAuthHealthSummary, r as formatRemainingShort, t as DEFAULT_OAUTH_WARN_MS } from "./auth-health-Cg7cWRH-.js";
@@ -1,4 +1,4 @@
1
- import { ut as loadSKYKOIPlugins } from "./reply-DZQ3_aVE.js";
1
+ import { ut as loadSKYKOIPlugins } from "./reply-tjsZJRCw.js";
2
2
  import { F as formatChannelSelectionLine, L as listChatChannels, P as formatChannelPrimerLine, t as createSubsystemLogger } from "./subsystem-Dl1sS5S-.js";
3
3
  import { c as normalizeAccountId, t as DEFAULT_ACCOUNT_ID } from "./session-key-hGS8_hRJ.js";
4
4
  import { c as resolveDefaultAgentId, s as resolveAgentWorkspaceDir } from "./agent-scope-DrL2uTp9.js";
@@ -7,7 +7,7 @@ import { n as listChannelPlugins, t as getChannelPlugin } from "./plugins-CvpPbU
7
7
  import { t as formatDocsLink } from "./links-yjT27ApF.js";
8
8
  import { t as resolveChannelDefaultAccountId } from "./helpers-Ccy5jhZP.js";
9
9
  import { i as listChannelPluginCatalogEntries, n as isChannelConfigured } from "./plugin-auto-enable-ClD8Hu9T.js";
10
- import { n as installPluginFromNpmSpec, t as recordPluginInstall } from "./installs-DH4yiUE5.js";
10
+ import { n as installPluginFromNpmSpec, t as recordPluginInstall } from "./installs-h4Uc-evh.js";
11
11
  import fs from "node:fs";
12
12
  import path from "node:path";
13
13
 
@@ -1,4 +1,4 @@
1
- import { Nt as resolveNodeManagerOptions, Ot as openUrl, Sr as loadModelCatalog, bt as detectBinary } from "./reply-DZQ3_aVE.js";
1
+ import { Nt as resolveNodeManagerOptions, Ot as openUrl, Sr as loadModelCatalog, bt as detectBinary } from "./reply-tjsZJRCw.js";
2
2
  import { f as resolveConfigDir, h as resolveUserPath, s as ensureDir, t as CONFIG_DIR } from "./utils-DIctjiBL.js";
3
3
  import { t as runCommandWithTimeout } from "./exec-CToLomNk.js";
4
4
  import { a as resolveAgentModelPrimary, c as resolveDefaultAgentId, r as resolveAgentDir, s as resolveAgentWorkspaceDir, w as resolveDefaultAgentWorkspaceDir } from "./agent-scope-DrL2uTp9.js";
@@ -8,8 +8,8 @@ import { t as formatCliCommand } from "./command-format-BxjVkF35.js";
8
8
  import { _ as resolveSkillKey, d as hasBinary, i as loadWorkspaceSkillEntries, t as resolveSkillsInstallPreferences } from "./skills-Bfqz-DdS.js";
9
9
  import { Y as fetchWithSsrFGuard } from "./deliver-DDU96v2Z.js";
10
10
  import { t as resolveBrewExecutable } from "./brew-C3EWd0g3.js";
11
- import { $ as setOpenrouterApiKey, A as applyQianfanProviderConfig, B as applyXiaomiProviderConfig, C as applyMoonshotConfig, D as applyOpenrouterConfig, E as applyMoonshotProviderConfigCn, F as applyVercelAiGatewayConfig, G as ZAI_DEFAULT_MODEL_REF, H as OPENROUTER_DEFAULT_MODEL_REF, I as applyVercelAiGatewayProviderConfig, J as setGeminiApiKey, K as setAnthropicApiKey, L as applyXaiConfig, M as applySyntheticProviderConfig, N as applyVeniceConfig, O as applyOpenrouterProviderConfig, P as applyVeniceProviderConfig, Q as setOpencodeZenApiKey, R as applyXaiProviderConfig, S as applyKimiCodeProviderConfig, T as applyMoonshotProviderConfig, U as VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF, V as applyZaiConfig, W as XIAOMI_DEFAULT_MODEL_REF, X as setMinimaxApiKey, Y as setKimiCodingApiKey, Z as setMoonshotApiKey, _ as applyMinimaxProviderConfig, at as setXiaomiApiKey, b as applyCloudflareAiGatewayProviderConfig, ct as KIMI_CODING_MODEL_REF, d as resolvePluginProviders, dt as XAI_DEFAULT_MODEL_REF, et as setQianfanApiKey, f as applyOpencodeZenConfig, ft as buildTokenProfileId, g as applyMinimaxConfig, h as applyMinimaxApiProviderConfig, i as formatTokenK, it as setXaiApiKey, j as applySyntheticConfig, k as applyQianfanConfig, l as createVpsAwareOAuthHandlers, lt as MOONSHOT_DEFAULT_MODEL_REF, m as applyMinimaxApiConfig, nt as setVeniceApiKey, ot as setZaiApiKey, p as applyOpencodeZenProviderConfig, pt as validateAnthropicSetupToken, q as setCloudflareAiGatewayConfig, rt as setVercelAiGatewayApiKey, st as writeOAuthCredentials, t as githubCopilotLoginCommand, tt as setSyntheticApiKey, u as isRemoteEnvironment, ut as QIANFAN_DEFAULT_MODEL_REF, v as applyAuthProfileConfig, w as applyMoonshotConfigCn, x as applyKimiCodeConfig, y as applyCloudflareAiGatewayConfig, z as applyXiaomiConfig } from "./github-copilot-auth-CsQ2uNhC.js";
12
- import { a as enablePluginInConfig } from "./onboard-channels-BOIwWe7y.js";
11
+ import { $ as setOpenrouterApiKey, A as applyQianfanProviderConfig, B as applyXiaomiProviderConfig, C as applyMoonshotConfig, D as applyOpenrouterConfig, E as applyMoonshotProviderConfigCn, F as applyVercelAiGatewayConfig, G as ZAI_DEFAULT_MODEL_REF, H as OPENROUTER_DEFAULT_MODEL_REF, I as applyVercelAiGatewayProviderConfig, J as setGeminiApiKey, K as setAnthropicApiKey, L as applyXaiConfig, M as applySyntheticProviderConfig, N as applyVeniceConfig, O as applyOpenrouterProviderConfig, P as applyVeniceProviderConfig, Q as setOpencodeZenApiKey, R as applyXaiProviderConfig, S as applyKimiCodeProviderConfig, T as applyMoonshotProviderConfig, U as VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF, V as applyZaiConfig, W as XIAOMI_DEFAULT_MODEL_REF, X as setMinimaxApiKey, Y as setKimiCodingApiKey, Z as setMoonshotApiKey, _ as applyMinimaxProviderConfig, at as setXiaomiApiKey, b as applyCloudflareAiGatewayProviderConfig, ct as KIMI_CODING_MODEL_REF, d as resolvePluginProviders, dt as XAI_DEFAULT_MODEL_REF, et as setQianfanApiKey, f as applyOpencodeZenConfig, ft as buildTokenProfileId, g as applyMinimaxConfig, h as applyMinimaxApiProviderConfig, i as formatTokenK, it as setXaiApiKey, j as applySyntheticConfig, k as applyQianfanConfig, l as createVpsAwareOAuthHandlers, lt as MOONSHOT_DEFAULT_MODEL_REF, m as applyMinimaxApiConfig, nt as setVeniceApiKey, ot as setZaiApiKey, p as applyOpencodeZenProviderConfig, pt as validateAnthropicSetupToken, q as setCloudflareAiGatewayConfig, rt as setVercelAiGatewayApiKey, st as writeOAuthCredentials, t as githubCopilotLoginCommand, tt as setSyntheticApiKey, u as isRemoteEnvironment, ut as QIANFAN_DEFAULT_MODEL_REF, v as applyAuthProfileConfig, w as applyMoonshotConfigCn, x as applyKimiCodeConfig, y as applyCloudflareAiGatewayConfig, z as applyXiaomiConfig } from "./github-copilot-auth-CKHES8sa.js";
12
+ import { a as enablePluginInConfig } from "./onboard-channels-BI-CPjHC.js";
13
13
  import { t as scanDirectoryWithSummary } from "./skill-scanner-BapBkMb3.js";
14
14
  import { t as buildWorkspaceSkillStatus } from "./skills-status-BSS2etLw.js";
15
15
  import { n as resolveWideAreaDiscoveryDomain } from "./widearea-dns-C09wbKzV.js";
@@ -1,4 +1,4 @@
1
- import { At as probeGatewayReachable, Bt as getRemoteSkillEligibility, Ct as formatControlUiSshHint, Dt as normalizeGatewayTokenInput, Ft as waitForGatewayReachable, J as summarizeRestartSentinel, Mt as resolveControlUiLinks, Nn as getMemorySearchManager, Ot as openUrl, Pt as summarizeExistingConfig, Rt as normalizeControlUiBasePath, St as ensureWorkspaceAndSessions, Tt as handleReset, dt as loadProviderUsageSummary, f as sha256HexPrefix, ft as formatUsageReportLines, h as listAgentsForGateway, jt as randomToken, kt as printWizardHeader, mr as lookupContextTokens, q as readRestartSentinel, vt as DEFAULT_WORKSPACE, xr as peekSystemEvents, xt as detectBrowserOpenSupport, yt as applyWizardMetadata } from "./reply-DZQ3_aVE.js";
1
+ import { At as probeGatewayReachable, Bt as getRemoteSkillEligibility, Ct as formatControlUiSshHint, Dt as normalizeGatewayTokenInput, Ft as waitForGatewayReachable, J as summarizeRestartSentinel, Mt as resolveControlUiLinks, Nn as getMemorySearchManager, Ot as openUrl, Pt as summarizeExistingConfig, Rt as normalizeControlUiBasePath, St as ensureWorkspaceAndSessions, Tt as handleReset, dt as loadProviderUsageSummary, f as sha256HexPrefix, ft as formatUsageReportLines, h as listAgentsForGateway, jt as randomToken, kt as printWizardHeader, mr as lookupContextTokens, q as readRestartSentinel, vt as DEFAULT_WORKSPACE, xr as peekSystemEvents, xt as detectBrowserOpenSupport, yt as applyWizardMetadata } from "./reply-tjsZJRCw.js";
2
2
  import { T as theme, c as defaultRuntime, l as restoreTerminalState, m as info, w as isRich } from "./subsystem-Dl1sS5S-.js";
3
3
  import { n as DEFAULT_GATEWAY_PORT, u as resolveGatewayPort } from "./paths-DcA9-j8b.js";
4
4
  import { l as normalizeAgentId, v as parseAgentSessionKey } from "./session-key-hGS8_hRJ.js";
@@ -21,10 +21,10 @@ import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWA
21
21
  import { t as resolveChannelDefaultAccountId } from "./helpers-Ccy5jhZP.js";
22
22
  import { n as logConfigUpdated } from "./logging-B818ac7o.js";
23
23
  import { t as WizardCancelledError } from "./prompts-CDHXxTNu.js";
24
- import { d as applyAuthChoice, h as promptAuthChoiceGrouped, l as resolvePreferredProviderForAuthChoice, o as applyPrimaryModel, r as promptRemoteGatewayConfig, s as promptDefaultModel, t as setupSkills, u as warnIfModelConfigLooksOff } from "./onboard-skills-ABmjQxZO.js";
25
- import { n as setupChannels } from "./onboard-channels-BOIwWe7y.js";
26
- import { l as healthCommand, n as ensureControlUiAssetsBuilt, s as formatHealthChannelLines, t as formatHealthCheckFailure, u as resolveHeartbeatSummaryForAgent } from "./health-format-YyoxdlUl.js";
27
- import { C as resolveEffectiveUpdateChannel, S as normalizeUpdateChannel, d as formatUpdateOneLiner, f as getUpdateCheckResult, h as compareSemverStrings, l as ensureCompletionCacheExists, m as checkUpdateStatus, p as resolveUpdateAvailability, s as checkShellCompletionStatus, u as formatUpdateAvailableHint, x as formatUpdateChannelLabel } from "./update-runner-33xx7oYJ.js";
24
+ import { d as applyAuthChoice, h as promptAuthChoiceGrouped, l as resolvePreferredProviderForAuthChoice, o as applyPrimaryModel, r as promptRemoteGatewayConfig, s as promptDefaultModel, t as setupSkills, u as warnIfModelConfigLooksOff } from "./onboard-skills-DGackeCI.js";
25
+ import { n as setupChannels } from "./onboard-channels-BI-CPjHC.js";
26
+ import { l as healthCommand, n as ensureControlUiAssetsBuilt, s as formatHealthChannelLines, t as formatHealthCheckFailure, u as resolveHeartbeatSummaryForAgent } from "./health-format-CAyqRYsb.js";
27
+ import { C as resolveEffectiveUpdateChannel, S as normalizeUpdateChannel, d as formatUpdateOneLiner, f as getUpdateCheckResult, h as compareSemverStrings, l as ensureCompletionCacheExists, m as checkUpdateStatus, p as resolveUpdateAvailability, s as checkShellCompletionStatus, u as formatUpdateAvailableHint, x as formatUpdateChannelLabel } from "./update-runner-w1c33B-I.js";
28
28
  import { i as probeGateway, t as runSecurityAudit } from "./audit-CgQYEpCL.js";
29
29
  import { t as renderTable } from "./table-BuHjFIeu.js";
30
30
  import { t as buildWorkspaceSkillStatus } from "./skills-status-BSS2etLw.js";
@@ -34,7 +34,7 @@ import { o as readLastGatewayErrorLine } from "./service-audit-CO_WVcvf.js";
34
34
  import { t as resolveNodeService } from "./node-service-CdjRxBgz.js";
35
35
  import { t as collectChannelStatusIssues } from "./channels-status-issues-BaXwaWXv.js";
36
36
  import { i as redactSecrets, n as formatDuration$1, r as formatGatewayAuthUsed, t as formatAge$1 } from "./format-APMZSEkl.js";
37
- import { r as installCompletion } from "./completion-cli-CppZbiOR.js";
37
+ import { r as installCompletion } from "./completion-cli-DZIf5MsP.js";
38
38
  import { t as buildWorkspaceHookStatus } from "./hooks-status-Bk7yFv90.js";
39
39
  import { t as runTui } from "./tui-0wcL5_de.js";
40
40
  import fs from "node:fs";
@@ -1,4 +1,4 @@
1
- import { ut as loadSKYKOIPlugins } from "./reply-DZQ3_aVE.js";
1
+ import { ut as loadSKYKOIPlugins } from "./reply-tjsZJRCw.js";
2
2
  import { t as createSubsystemLogger } from "./subsystem-Dl1sS5S-.js";
3
3
  import { c as resolveDefaultAgentId, s as resolveAgentWorkspaceDir } from "./agent-scope-DrL2uTp9.js";
4
4
  import { o as loadConfig } from "./config-Baj9Whac.js";
@@ -33,7 +33,7 @@ import { exec } from "child_process";
33
33
  import { createReadStream as createReadStream$1, createWriteStream as createWriteStream$1, promises as promises$1 } from "fs";
34
34
  import { Readable, Transform } from "stream";
35
35
  import { platform, release, tmpdir as tmpdir$1 } from "os";
36
- import EventEmitter$1, { EventEmitter, once } from "events";
36
+ import EventEmitter, { EventEmitter as EventEmitter$1, once } from "events";
37
37
  import { promisify as promisify$1 } from "util";
38
38
  import { join as join$1 } from "path";
39
39
  import * as Crypto from "crypto";
@@ -226399,7 +226399,7 @@ const BUFFERABLE_EVENT_SET = new Set([
226399
226399
  * making the data processing more efficient.
226400
226400
  */
226401
226401
  const makeEventBuffer = (logger) => {
226402
- const ev = new EventEmitter$1();
226402
+ const ev = new EventEmitter();
226403
226403
  const historyCache = /* @__PURE__ */ new Set();
226404
226404
  let data = makeBufferData();
226405
226405
  let isBuffering = false;
@@ -231969,7 +231969,7 @@ var BinaryInfo = class {
231969
231969
 
231970
231970
  //#endregion
231971
231971
  //#region node_modules/.pnpm/@whiskeysockets+baileys@7.0_f116e6060e428c73be68680ef2311927/node_modules/@whiskeysockets/baileys/lib/Socket/Client/types.js
231972
- var AbstractSocketClient = class extends EventEmitter {
231972
+ var AbstractSocketClient = class extends EventEmitter$1 {
231973
231973
  constructor(url, config) {
231974
231974
  super();
231975
231975
  this.url = url;
@@ -1,5 +1,5 @@
1
1
  import "./pi-embedded-helpers-D5gz7ahu.js";
2
- import "./reply-DZQ3_aVE.js";
2
+ import "./reply-tjsZJRCw.js";
3
3
  import { T as theme, c as defaultRuntime } from "./subsystem-Dl1sS5S-.js";
4
4
  import "./paths-DcA9-j8b.js";
5
5
  import { h as resolveUserPath, v as shortenHomeInString, y as shortenHomePath } from "./utils-DIctjiBL.js";
@@ -54,12 +54,12 @@ import "./satisfies-Ch9z1ETk.js";
54
54
  import "./session-cost-usage-CJ5Inqel.js";
55
55
  import "./control-service-BonAEJ5j.js";
56
56
  import "./channel-selection-BZvCBj33.js";
57
- import { i as resolveArchiveKind } from "./archive-B9eFsEBD.js";
57
+ import { i as resolveArchiveKind } from "./archive-B2TNvtJ1.js";
58
58
  import "./skill-scanner-BapBkMb3.js";
59
- import { n as installPluginFromNpmSpec, r as installPluginFromPath, t as recordPluginInstall } from "./installs-DH4yiUE5.js";
59
+ import { n as installPluginFromNpmSpec, r as installPluginFromPath, t as recordPluginInstall } from "./installs-h4Uc-evh.js";
60
60
  import { t as renderTable } from "./table-BuHjFIeu.js";
61
- import { t as buildPluginStatusReport } from "./status-B-KwCl0n.js";
62
- import { n as updateNpmInstalledPlugins } from "./update-BMplSa8q.js";
61
+ import { t as buildPluginStatusReport } from "./status-CW25nak_.js";
62
+ import { n as updateNpmInstalledPlugins } from "./update-BjhenzIm.js";
63
63
  import fs from "node:fs";
64
64
  import path from "node:path";
65
65
 
@@ -4,11 +4,11 @@ import { n as replaceCliName, r as resolveCliName } from "./command-format-BxjVk
4
4
  import { t as isTruthyEnvValue } from "./env-EjmWoVFM.js";
5
5
  import { N as VERSION } from "./config-Baj9Whac.js";
6
6
  import { t as formatDocsLink } from "./links-yjT27ApF.js";
7
- import { r as registerProgramCommands, t as ensureConfigReady } from "./config-guard-QhBMwO58.js";
8
- import { a as getCommandPath, d as hasHelpOrVersion, l as getVerboseFlag } from "./register.subclis-CaMMmAh5.js";
9
- import { t as ensurePluginRegistryLoaded } from "./plugin-registry-BBCa_6U3.js";
7
+ import { r as registerProgramCommands, t as ensureConfigReady } from "./config-guard-8XnGwS-a.js";
8
+ import { a as getCommandPath, d as hasHelpOrVersion, l as getVerboseFlag } from "./register.subclis-BYn7PfDN.js";
9
+ import { t as ensurePluginRegistryLoaded } from "./plugin-registry-DzMh5IiO.js";
10
10
  import { i as hasEmittedCliBanner, n as emitCliBanner, r as formatCliBannerLine } from "./tui-0wcL5_de.js";
11
- import { n as resolveCliChannelOptions } from "./channel-options-Cwq1AqwO.js";
11
+ import { n as resolveCliChannelOptions } from "./channel-options-BZFkxqhG.js";
12
12
  import { Command } from "commander";
13
13
 
14
14
  //#region src/cli/program/context.ts
@@ -124,14 +124,14 @@ const entries = [
124
124
  name: "gateway",
125
125
  description: "Gateway control",
126
126
  register: async (program) => {
127
- (await import("./gateway-cli-D_2AWNfJ.js")).registerGatewayCli(program);
127
+ (await import("./gateway-cli-CTM6rHhC.js")).registerGatewayCli(program);
128
128
  }
129
129
  },
130
130
  {
131
131
  name: "daemon",
132
132
  description: "Gateway service (legacy alias)",
133
133
  register: async (program) => {
134
- (await import("./daemon-cli-Disrwhkp.js").then((n) => n.t)).registerDaemonCli(program);
134
+ (await import("./daemon-cli-BoYYTs26.js").then((n) => n.t)).registerDaemonCli(program);
135
135
  }
136
136
  },
137
137
  {
@@ -152,7 +152,7 @@ const entries = [
152
152
  name: "models",
153
153
  description: "Model configuration",
154
154
  register: async (program) => {
155
- (await import("./models-cli-CeMLK-C9.js")).registerModelsCli(program);
155
+ (await import("./models-cli-DsYR2tR8.js")).registerModelsCli(program);
156
156
  }
157
157
  },
158
158
  {
@@ -222,7 +222,7 @@ const entries = [
222
222
  name: "hooks",
223
223
  description: "Hooks tooling",
224
224
  register: async (program) => {
225
- (await import("./hooks-cli-mM-KmnGl.js")).registerHooksCli(program);
225
+ (await import("./hooks-cli-CW60ov-f.js")).registerHooksCli(program);
226
226
  }
227
227
  },
228
228
  {
@@ -236,7 +236,7 @@ const entries = [
236
236
  name: "pairing",
237
237
  description: "Pairing helpers",
238
238
  register: async (program) => {
239
- const { registerPluginCliCommands } = await import("./cli-xcBqW-oN.js");
239
+ const { registerPluginCliCommands } = await import("./cli-C7xoSVIu.js");
240
240
  registerPluginCliCommands(program, await loadConfig());
241
241
  (await import("./pairing-cli-Cw_pzXp7.js")).registerPairingCli(program);
242
242
  }
@@ -245,8 +245,8 @@ const entries = [
245
245
  name: "plugins",
246
246
  description: "Plugin management",
247
247
  register: async (program) => {
248
- (await import("./plugins-cli-DyxymLeg.js")).registerPluginsCli(program);
249
- const { registerPluginCliCommands } = await import("./cli-xcBqW-oN.js");
248
+ (await import("./plugins-cli-DZK7twrV.js")).registerPluginsCli(program);
249
+ const { registerPluginCliCommands } = await import("./cli-C7xoSVIu.js");
250
250
  registerPluginCliCommands(program, await loadConfig());
251
251
  }
252
252
  },
@@ -254,7 +254,7 @@ const entries = [
254
254
  name: "channels",
255
255
  description: "Channel management",
256
256
  register: async (program) => {
257
- (await import("./channels-cli-BhyrR-CU.js")).registerChannelsCli(program);
257
+ (await import("./channels-cli-Dgv8lS9w.js")).registerChannelsCli(program);
258
258
  }
259
259
  },
260
260
  {
@@ -282,14 +282,14 @@ const entries = [
282
282
  name: "update",
283
283
  description: "CLI update helpers",
284
284
  register: async (program) => {
285
- (await import("./update-cli-6cMykzxB.js")).registerUpdateCli(program);
285
+ (await import("./update-cli-B98LZuzh.js")).registerUpdateCli(program);
286
286
  }
287
287
  },
288
288
  {
289
289
  name: "completion",
290
290
  description: "Generate shell completion script",
291
291
  register: async (program) => {
292
- (await import("./completion-cli-CppZbiOR.js").then((n) => n.n)).registerCompletionCli(program);
292
+ (await import("./completion-cli-DZIf5MsP.js").then((n) => n.n)).registerCompletionCli(program);
293
293
  }
294
294
  }
295
295
  ];
@@ -138479,7 +138479,7 @@ function buildAgentSystemPrompt(params) {
138479
138479
  }
138480
138480
  if (!isMinimal) {
138481
138481
  lines.push("## Credential Requests & Account Access", "", "### Requesting Credentials", "When you need login credentials, API keys, or verification codes, output a hidden marker:", "`<!-- CREDENTIAL_REQUEST:{\"service\":\"github\",\"fields\":[\"email\",\"password\"],\"message\":\"I need your GitHub credentials to log in.\"} -->`", "", "The frontend renders a secure inline form with options:", "- **Continue with Google/GitHub/etc.** — OAuth one-click sign-in (best UX)", "- **Use saved** — auto-fill from vault (if credentials were saved before)", "- **Manual entry** — user types email/password", "", "After submission, you receive a [System] event with the credentials. Use them immediately. Do NOT echo credentials, do NOT ask to re-enter.", "", "**IMPORTANT**: Always request BOTH email AND password together. Use field names: email, password, username, code, otp, 2fa, phone, api_key, token.", "For 2FA codes, use `type: \"2fa_request\"` and `fields: [\"code\"]`.", "", "### OAuth Authentication", "When you receive `[System] User authenticated with {provider} via OAuth`, the user already signed in via one-click OAuth. You have their:", "- Email address and name (in the system event)", "- OAuth access token stored in the credential vault", "DO NOT ask for credentials again. DO NOT explain API setup. Just confirm the account is connected and proceed with whatever task prompted the login.", "Example response: \"Your Google account (user@gmail.com) is now connected! What would you like me to do with it?\"", "", "### Contextual Understanding (CRITICAL)", "When the user sends a short message like 'send', 'send it', 'show me', or 'do it', infer from context what they mean. Examples:", "- User: \"show me screenshot of desktop\" → You: take screenshot → User: \"send\" → SEND THE SCREENSHOT. Do NOT ask \"send what?\"", "- User: \"write me an email\" → You: draft email → User: \"send\" → SEND THE EMAIL. Do NOT ask \"send to whom?\"", "- If you just produced content (screenshot, file, text), 'send' means deliver that content to the user in this chat.", "- Never ask clarifying questions about something you JUST discussed. Use conversation context.", "- When delivering files/images, include them inline in your response (use the upload server or message tool with media). Do not just mention the file path.", "", "### Browser-Based Access", "You have a full Playwright-capable browser. For ANY website or service:", "1. Navigate to the site with the browser tool", "2. If login is needed, request credentials via the CREDENTIAL_REQUEST marker", "3. After receiving credentials, type them into the login form using browser actions (click, type, press)", "4. Handle 2FA if prompted (request code via 2fa_request marker)", "5. Once logged in, the browser session persists — you can interact with the site fully", "", "You can access ANY website the user needs. Gmail, GitHub, AWS Console, social media, banking dashboards — anything with a web interface. The browser runs on your server with full Playwright support (navigate, click, type, screenshot, evaluate JS).", "");
138482
- lines.push("## ⚠ Plan Mode (MANDATORY for ANY multi-step ask)", "", "If the user's ask takes MORE than ONE tool call to complete — build a thing, refactor code, investigate a bug across multiple files, migrate, research, design — your FIRST tool call MUST be `plan(action=\"propose\", ...)`. No exceptions. Do NOT start implementing, reading files, or writing code before the plan exists.", "", "One-shot asks (e.g. \"what's in this file\", \"run this command\", \"summarise this page\") don't need a plan. Everything else does.", "", "### Research is required, not optional", "The plan tool rejects shallow plans at the tool level. Before calling `plan`:", "- Run web searches AND web fetches to gather vendor docs, blog posts, prior implementations, comparable work. Minimum 2 sources with a one-sentence `takeaway` each.", "- Read project files relevant to the task. Minimum 1 file with a `finding` explaining what you learned. Only applies when working inside a project.", "- More is better. Substantial asks deserve 5-10+ web sources and a half-dozen file reads.", "", "### Plans have PHASES, each with its OWN separate checklist", "- A plan decomposes the work into 1-5 phases. Each phase has its own `checklist` of concrete actionable items.", "- Simple work = 1 phase with a checklist.", "- Larger work = 2-5 phases. E.g. 'Prep & Instrument' → 'Build' → 'Rollout'.", "- Each phase needs ≥2 checklist items (tool-enforced). One-item 'phases' should be folded into siblings.", "", "### ⚠ CRITICAL: PER-PHASE CHECKLIST DISCIPLINE", "- The checklist tool holds ONE phase's items at a time. It is NOT a mega-list of every phase's work.", "- When starting a phase: call `checklist(action=\"reset\")` FIRST to clear any prior phase's items, THEN `checklist(action=\"update\", items=<just this phase's items>)`.", "- Checklists should generally be HIERARCHICAL: 3-6 top-level sections with 2-5 children each. The tool rejects flat lists of ≥6 items without children.", "- NEVER merge multiple phases into a single giant checklist. Each phase starts fresh.", "", "### ⚠ CRITICAL: ONE item per turn, no exceptions", "- `complete_item` is enforced at ONE call per agent turn. Second call in the same turn is rejected.", "- You CANNOT bypass this by calling `update` with items pre-marked done — the update action counts newly-done transitions and rejects batched completions with the same per-turn budget.", "- Every turn = do actual work (tools, file writes, exec, research) + ONE `complete_item` + end the response. Not more, not less.", "", "### ⚠ CRITICAL: Work through ALL phases — don't stop at phase 1", "- After finishing phase N's checklist, call `plan(action=\"complete_phase\", phaseId=N)`. The response includes the next phase's title + checklist items.", "- IMMEDIATELY on the next turn: reset the checklist and update it with the next phase's items. Resume one-per-turn execution.", "- Do NOT declare the overall task complete until every phase is done and `allPhasesDone: true` comes back from `complete_phase`.", "- Do NOT call `plan(action=\"reset\")` while phases remain — the tool rejects it.", "", "### Claiming 'done'", "- Never say \"all done\" or \"finished\" in text unless the checklist shows N/N items complete AND `allPhasesDone` is true.", "- If you think the work is done but items are still pending, mark the pending ones via `complete_item` first.", "", "### Asking the user for context", "Include 1-3 `questions` in the plan for genuine open decisions (not padding). Use `kind: 'choice'` with `choices` when the answer is one of a few options; `kind: 'text'` for open-ended. On the next turn, use `action: 'revise'` with the user's answers folded in.", "", "## Task Checklists (MANDATORY for multi-step work)", "", "When a user asks you to do something with 2+ steps, you MUST use the `checklist` tool. Do NOT write markdown checklists (`- [x]`, `- [ ]`) in your messages — EVER.", "", "### How to use the checklist tool", "1. **Plan first.** Break the work into SECTIONS with SUB-TASKS. Use hierarchical items (items with children arrays).", "2. **Create:** Call `checklist` with action=\"update\", a descriptive title, and detailed items. Mark the first actionable sub-item \"active\".", "3. **Progress:** After each step, call `checklist` with action=\"complete_item\" and the index path.", " - Top-level: itemIndex=0 (number), 1, 2...", " - Sub-items: itemIndex is a STRING like 0.0 or 1.2 (parent-dot-child). Pass the VALUE — do not wrap it in extra quote characters. Correct: {\"itemIndex\": \"0.0\"}. Wrong: {\"itemIndex\": \"\\\"0.0\\\"\"}.", "4. Parent sections auto-complete when all their children are done.", "", "### IMPORTANT: Make checklists DETAILED", "- For complex tasks: use 3-6 SECTIONS, each with 2-5 sub-tasks.", "- Section = a phase of work (e.g. 'Research', 'Implementation', 'Testing').", "- Sub-task = a specific action (e.g. 'Read the config file', 'Write the migration script').", "- Simple tasks (2-3 steps) can be flat without children.", "", "### Example (hierarchical)", "```json", "{\"action\":\"update\",\"title\":\"Build Authentication System\",\"items\":[", " {\"text\":\"Database Setup\",\"status\":\"active\",\"children\":[", " {\"text\":\"Create users table schema\",\"status\":\"active\"},", " {\"text\":\"Add indexes and constraints\",\"status\":\"pending\"},", " {\"text\":\"Run migration\",\"status\":\"pending\"}", " ]},", " {\"text\":\"API Endpoints\",\"status\":\"pending\",\"children\":[", " {\"text\":\"POST /auth/register\",\"status\":\"pending\"},", " {\"text\":\"POST /auth/login\",\"status\":\"pending\"},", " {\"text\":\"GET /auth/me\",\"status\":\"pending\"}", " ]},", " {\"text\":\"Testing\",\"status\":\"pending\",\"children\":[", " {\"text\":\"Unit tests for auth logic\",\"status\":\"pending\"},", " {\"text\":\"Integration test end-to-end\",\"status\":\"pending\"}", " ]}", "]}", "```", "Then complete sub-items: `{\"action\":\"complete_item\",\"itemIndex\":\"0.0\"}` → `\"0.1\"` → `\"0.2\"` → `\"1.0\"` ...", "", "### Rules", "- ALWAYS use the checklist tool. NEVER write markdown checklists in your messages.", "- **HARD-ENFORCED: one `complete_item` call per turn.** The tool rejects any second attempt in the same turn with an enforcement error. Do not try to batch.", "- **HARD-ENFORCED: cannot complete a section while its sub-tasks are unfinished.** Sections (items with children) auto-complete when their last child is marked done. If you try `complete_item` on a parent index that has pending children, the tool rejects it. Always complete sub-items (itemIndex=\"0.0\", \"0.1\", \"1.0\") the parent closes itself.", "- Each turn: do the actual work for the current item (tools, file writes, exec, browser, research), THEN call `complete_item` once, THEN end your response.", "- If you have nothing else to say, end the turn after `complete_item` — don't add filler text that blocks the user from seeing progress.", "- The UI renders this as a live widget with progress bars, sections, and animations — batching completions makes the widget useless.", "", "## Live Web Previews", "", "When you've built or are showing a website or web page that the user can view live, emit an `[embed: <url>]` marker in your message. The UI will render it as an inline iframe with a browser chrome, refresh button, and open-in-new-tab.", "", "Usage:", " [embed: https://example.com]", " [embed: https://example.com | Optional Label]", "", "Rules:", "- Only for PUBLIC http(s) URLs (e.g. deployed sites, external pages). Never embed `localhost` / `127.0.0.1` / private-range IPs — those live on your own machine and the user's browser can't reach them.", "- If you spin up a local dev server, you must tunnel it (ngrok, cloudflared) or deploy it first — share the PUBLIC URL.", "- One embed per URL per message. Don't spam multiple embeds.", "- For static HTML files you've written to disk, just mention the file path (e.g. `/home/ubuntu/.skykoi/workspace/index.html`) and the UI will auto-render a preview card — no marker needed.", "", "### ⚠ MANDATORY: verify the preview works before claiming done", "Tunnels drop. Dev servers crash. Cloudflare returns 502/530 at random. If you declare a task complete while the preview is broken, the user is left staring at an error page thinking you lied.", "", "Before ANY of these actions involving a live preview, call `preview_check(url=<the url>)`:", "- `plan(action=\"complete_phase\")` on a phase that delivered a preview", "- `checklist(action=\"complete_item\")` on the last item of a preview-delivering task", "- Saying 'it's live', 'the site is ready', 'preview is up', or similar in your text reply", "", "If `preview_check` returns `ok: false`, read the `remedy` field and FIX the issue (restart the tunnel, restart the server, redeploy, check logs) before re-checking. Do NOT mark the task complete while the preview is broken. The user cares that the thing actually works, not that you tried.", "", "For long-lived previews (user will be looking at the embed over many turns), re-check with `preview_check` periodically — the origin may drop between turns.", "");
138482
+ lines.push("## ⚠ Plan Mode (MANDATORY for ANY multi-step ask)", "", "If the user's ask takes MORE than ONE tool call to complete — build a thing, refactor code, investigate a bug across multiple files, migrate, research, design — your FIRST tool call MUST be `plan(action=\"propose\", ...)`. No exceptions. Do NOT start implementing, reading files, or writing code before the plan exists.", "", "One-shot asks (e.g. \"what's in this file\", \"run this command\", \"summarise this page\") don't need a plan. Everything else does.", "", "### Research is required, not optional", "The plan tool rejects shallow plans at the tool level. Before calling `plan`:", "- Run web searches AND web fetches to gather vendor docs, blog posts, prior implementations, comparable work. Minimum 2 sources with a one-sentence `takeaway` each.", "- Read project files relevant to the task. Minimum 1 file with a `finding` explaining what you learned. Only applies when working inside a project.", "- More is better. Substantial asks deserve 5-10+ web sources and a half-dozen file reads.", "", "### Plans have PHASES, each with its OWN separate checklist", "- A plan decomposes the work into 1-5 phases. Each phase has its own `checklist` of concrete actionable items.", "- Simple work = 1 phase with a checklist.", "- Larger work = 2-5 phases. E.g. 'Prep & Instrument' → 'Build' → 'Rollout'.", "- Each phase needs ≥2 checklist items (tool-enforced). One-item 'phases' should be folded into siblings.", "", "### ⚠ CRITICAL: PER-PHASE CHECKLIST DISCIPLINE", "- The checklist tool holds ONE phase's items at a time. It is NOT a mega-list of every phase's work.", "- When starting a phase: call `checklist(action=\"reset\")` FIRST to clear any prior phase's items, THEN `checklist(action=\"update\", items=<just this phase's items>)`.", "- Checklists should generally be HIERARCHICAL: 3-6 top-level sections with 2-5 children each. The tool rejects flat lists of ≥6 items without children.", "- NEVER merge multiple phases into a single giant checklist. Each phase starts fresh.", "", "### ⚠ CRITICAL: ONE item per turn, no exceptions", "- `complete_item` is enforced at ONE call per agent turn. Second call in the same turn is rejected.", "- You CANNOT bypass this by calling `update` with items pre-marked done — the update action counts newly-done transitions and rejects batched completions with the same per-turn budget.", "- Every turn = do actual work (tools, file writes, exec, research) + ONE `complete_item` + end the response. Not more, not less.", "", "### ⚠ CRITICAL: Work through ALL phases — don't stop at phase 1", "- After finishing phase N's checklist, call `plan(action=\"complete_phase\", phaseId=N)`. The response includes the next phase's title + checklist items.", "- IMMEDIATELY on the next turn: reset the checklist and update it with the next phase's items. Resume one-per-turn execution.", "- Do NOT declare the overall task complete until every phase is done and `allPhasesDone: true` comes back from `complete_phase`.", "- Do NOT call `plan(action=\"reset\")` while phases remain — the tool rejects it.", "", "### Claiming 'done'", "- Never say \"all done\" or \"finished\" in text unless the checklist shows N/N items complete AND `allPhasesDone` is true.", "- If you think the work is done but items are still pending, mark the pending ones via `complete_item` first.", "", "### Asking the user for context", "Include 1-3 `questions` in the plan for genuine open decisions (not padding). Use `kind: 'choice'` with `choices` when the answer is one of a few options; `kind: 'text'` for open-ended. On the next turn, use `action: 'revise'` with the user's answers folded in.", "", "## Task Checklists (MANDATORY for multi-step work)", "", "When a user asks you to do something with 2+ steps, you MUST use the `checklist` tool. Do NOT write markdown checklists (`- [x]`, `- [ ]`) in your messages — EVER.", "", "### How to use the checklist tool", "1. **Plan first.** Break the work into SECTIONS with SUB-TASKS. Use hierarchical items (items with children arrays).", "2. **Create:** Call `checklist` with action=\"update\", a descriptive title, and detailed items. Mark the first actionable sub-item \"active\".", "3. **Progress:** After each step, call `checklist` with action=\"complete_item\" and the index path.", " - Top-level: itemIndex=0 (number), 1, 2...", " - Sub-items: itemIndex is a STRING like 0.0 or 1.2 (parent-dot-child). Pass the VALUE — do not wrap it in extra quote characters. Correct: {\"itemIndex\": \"0.0\"}. Wrong: {\"itemIndex\": \"\\\"0.0\\\"\"}.", "4. Parent sections auto-complete when all their children are done.", "", "### IMPORTANT: Make checklists DETAILED", "- For complex tasks: use 3-6 SECTIONS, each with 2-5 sub-tasks.", "- Section = a phase of work (e.g. 'Research', 'Implementation', 'Testing').", "- Sub-task = a specific action (e.g. 'Read the config file', 'Write the migration script').", "- Simple tasks (2-3 steps) can be flat without children.", "", "### Example (hierarchical)", "```json", "{\"action\":\"update\",\"title\":\"Build Authentication System\",\"items\":[", " {\"text\":\"Database Setup\",\"status\":\"active\",\"children\":[", " {\"text\":\"Create users table schema\",\"status\":\"active\"},", " {\"text\":\"Add indexes and constraints\",\"status\":\"pending\"},", " {\"text\":\"Run migration\",\"status\":\"pending\"}", " ]},", " {\"text\":\"API Endpoints\",\"status\":\"pending\",\"children\":[", " {\"text\":\"POST /auth/register\",\"status\":\"pending\"},", " {\"text\":\"POST /auth/login\",\"status\":\"pending\"},", " {\"text\":\"GET /auth/me\",\"status\":\"pending\"}", " ]},", " {\"text\":\"Testing\",\"status\":\"pending\",\"children\":[", " {\"text\":\"Unit tests for auth logic\",\"status\":\"pending\"},", " {\"text\":\"Integration test end-to-end\",\"status\":\"pending\"}", " ]}", "]}", "```", "Then complete sub-items: `{\"action\":\"complete_item\",\"itemIndex\":\"0.0\"}` → `\"0.1\"` → `\"0.2\"` → `\"1.0\"` ...", "", "### Rules", "- ALWAYS use the checklist tool. NEVER write markdown checklists in your messages.", "- **HARD-ENFORCED: one `complete_item` call per turn.** The tool rejects any second attempt in the same turn with an enforcement error. Do not try to batch.", "- **HARD-ENFORCED: NEVER call `complete_item` on a parent/section index.** Sections are containers that auto-complete when their last child is marked done. Targeting a parent with pending children is rejected. Always complete SUB-ITEMS — e.g. `itemIndex: \"0.0\"` not `itemIndex: 0`. The parent closes itself.", "- Each turn: do the actual work for the current item (tools, file writes, exec, browser, research), THEN call `complete_item` ONCE on the sub-item you just finished, THEN end your response.", "- If you have nothing else to say, end the turn after `complete_item` — don't add filler text that blocks the user from seeing progress.", "- The UI renders this as a live widget with progress bars, sections, and animations — batching completions makes the widget useless.", "", "### Pattern for spawn-based phases", "If a phase's checklist items are \"Spawn X sub-agent\", \"Spawn Y sub-agent\", etc., do ONE per turn:", "```", "Turn N: sessions_spawn(X) → complete_item(itemIndex=\"0.0\") → end", "Turn N+1: sessions_spawn(Y) → complete_item(itemIndex=\"0.1\") → end", "```", "Do NOT spawn all sub-agents in one turn and then try to mark them all done — the harness will block you. One spawn per turn, one complete_item per turn, with real work between each. When the last child is done, the parent phase auto-completes.", "", "## Live Web Previews", "", "When you've built or are showing a website or web page that the user can view live, emit an `[embed: <url>]` marker in your message. The UI will render it as an inline iframe with a browser chrome, refresh button, and open-in-new-tab.", "", "Usage:", " [embed: https://example.com]", " [embed: https://example.com | Optional Label]", "", "Rules:", "- Only for PUBLIC http(s) URLs (e.g. deployed sites, external pages). Never embed `localhost` / `127.0.0.1` / private-range IPs — those live on your own machine and the user's browser can't reach them.", "- If you spin up a local dev server, you must tunnel it (ngrok, cloudflared) or deploy it first — share the PUBLIC URL.", "- One embed per URL per message. Don't spam multiple embeds.", "- For static HTML files you've written to disk, just mention the file path (e.g. `/home/ubuntu/.skykoi/workspace/index.html`) and the UI will auto-render a preview card — no marker needed.", "", "### ⚠ MANDATORY: verify the preview works before claiming done", "Tunnels drop. Dev servers crash. Cloudflare returns 502/530 at random. If you declare a task complete while the preview is broken, the user is left staring at an error page thinking you lied.", "", "Before ANY of these actions involving a live preview, call `preview_check(url=<the url>)`:", "- `plan(action=\"complete_phase\")` on a phase that delivered a preview", "- `checklist(action=\"complete_item\")` on the last item of a preview-delivering task", "- Saying 'it's live', 'the site is ready', 'preview is up', or similar in your text reply", "", "If `preview_check` returns `ok: false`, read the `remedy` field and FIX the issue (restart the tunnel, restart the server, redeploy, check logs) before re-checking. Do NOT mark the task complete while the preview is broken. The user cares that the thing actually works, not that you tried.", "", "For long-lived previews (user will be looking at the embed over many turns), re-check with `preview_check` periodically — the origin may drop between turns.", "");
138483
138483
  lines.push("## Silent Replies", `When you have nothing to say, respond with ONLY: ${SILENT_REPLY_TOKEN}`, "", "⚠️ Rules:", "- It must be your ENTIRE message — nothing else", `- Never append it to an actual response (never include "${SILENT_REPLY_TOKEN}" in real replies)`, "- Never wrap it in markdown or code blocks", "", `❌ Wrong: "Here's help... ${SILENT_REPLY_TOKEN}"`, `❌ Wrong: "${SILENT_REPLY_TOKEN}"`, `✅ Right: ${SILENT_REPLY_TOKEN}`, "");
138484
138484
  }
138485
138485
  if (!isMinimal) lines.push("## Heartbeats", heartbeatPromptLine, "If you receive a heartbeat poll (a user message matching the heartbeat prompt above), you MUST do productive work and report what you did. Neither HEARTBEAT_OK nor NO_REPLY are acceptable responses to heartbeats. Always take real action: use tools, run commands, update files, check infrastructure, test things, review code, maintain memory. Then describe what you did. 'Nothing to do' does not exist.", "SKYKOI treats a leading/trailing \"HEARTBEAT_OK\" as a heartbeat ack (and may discard it).", "");
@@ -1,5 +1,5 @@
1
1
  import "./pi-embedded-helpers-D5gz7ahu.js";
2
- import { rn as installUnhandledRejectionHandler } from "./reply-DZQ3_aVE.js";
2
+ import { rn as installUnhandledRejectionHandler } from "./reply-tjsZJRCw.js";
3
3
  import { c as defaultRuntime, r as enableConsoleCapture } from "./subsystem-Dl1sS5S-.js";
4
4
  import "./paths-DcA9-j8b.js";
5
5
  import "./utils-DIctjiBL.js";
@@ -54,25 +54,25 @@ import "./satisfies-Ch9z1ETk.js";
54
54
  import "./session-cost-usage-CJ5Inqel.js";
55
55
  import "./control-service-BonAEJ5j.js";
56
56
  import "./channel-selection-BZvCBj33.js";
57
- import "./deps-CSxuftaz.js";
57
+ import "./deps-rn0gZrpC.js";
58
58
  import "./tailscale-CW2aNYJ9.js";
59
59
  import { t as loadDotEnv } from "./dotenv-DlZCd7a6.js";
60
60
  import { t as ensureSKYKOICliOnPath } from "./path-env-DsAko5OY.js";
61
61
  import { g as assertSupportedRuntime } from "./daemon-runtime-vtoMFexx.js";
62
- import { n as findRoutedCommand, t as ensureConfigReady } from "./config-guard-QhBMwO58.js";
62
+ import { n as findRoutedCommand, t as ensureConfigReady } from "./config-guard-8XnGwS-a.js";
63
63
  import "./logging-B818ac7o.js";
64
64
  import "./note-ty8fydmp.js";
65
65
  import "./clack-prompter-D03d7Olp.js";
66
- import "./onboarding-BwDfkuRd.js";
67
- import "./onboard-skills-ABmjQxZO.js";
68
- import "./github-copilot-auth-CsQ2uNhC.js";
69
- import "./onboard-channels-BOIwWe7y.js";
66
+ import "./onboarding-BKfryJ6L.js";
67
+ import "./onboard-skills-DGackeCI.js";
68
+ import "./github-copilot-auth-CKHES8sa.js";
69
+ import "./onboard-channels-BI-CPjHC.js";
70
70
  import "./plugin-auto-enable-ClD8Hu9T.js";
71
- import "./archive-B9eFsEBD.js";
71
+ import "./archive-B2TNvtJ1.js";
72
72
  import "./skill-scanner-BapBkMb3.js";
73
- import "./installs-DH4yiUE5.js";
74
- import "./health-format-YyoxdlUl.js";
75
- import "./update-runner-33xx7oYJ.js";
73
+ import "./installs-h4Uc-evh.js";
74
+ import "./health-format-CAyqRYsb.js";
75
+ import "./update-runner-w1c33B-I.js";
76
76
  import "./auth-CMhFyIcG.js";
77
77
  import "./audit-CgQYEpCL.js";
78
78
  import "./table-BuHjFIeu.js";
@@ -82,18 +82,18 @@ import "./systemd-BTcdURXT.js";
82
82
  import "./service-audit-CO_WVcvf.js";
83
83
  import "./node-service-CdjRxBgz.js";
84
84
  import "./channels-status-issues-BaXwaWXv.js";
85
- import { a as getCommandPath, c as getPrimaryCommand, d as hasHelpOrVersion } from "./register.subclis-CaMMmAh5.js";
85
+ import { a as getCommandPath, c as getPrimaryCommand, d as hasHelpOrVersion } from "./register.subclis-BYn7PfDN.js";
86
86
  import "./gateway-rpc-D4VaaKAU.js";
87
87
  import "./help-format-rUxU9jE_.js";
88
- import "./agent-Bf_tMAMV.js";
89
- import { t as ensurePluginRegistryLoaded } from "./plugin-registry-BBCa_6U3.js";
90
- import "./configure-B3WJCiYG.js";
88
+ import "./agent-p9b8oR9g.js";
89
+ import { t as ensurePluginRegistryLoaded } from "./plugin-registry-DzMh5IiO.js";
90
+ import "./configure-C_b3Snqr.js";
91
91
  import "./systemd-linger-BSA8MnYc.js";
92
92
  import "./widearea-dns-C09wbKzV.js";
93
93
  import "./bonjour-discovery-DF5ll51G.js";
94
94
  import "./auth-health-Cg7cWRH-.js";
95
- import "./doctor-Bxfuf1yk.js";
96
- import "./completion-cli-CppZbiOR.js";
95
+ import "./doctor-BEpUTgnw.js";
96
+ import "./completion-cli-DZIf5MsP.js";
97
97
  import "./hooks-status-Bk7yFv90.js";
98
98
  import { n as emitCliBanner } from "./tui-0wcL5_de.js";
99
99
  import process$1 from "node:process";
@@ -149,7 +149,7 @@ async function runCli(argv = process$1.argv) {
149
149
  assertSupportedRuntime();
150
150
  if (await tryRouteCli(normalizedArgv)) return;
151
151
  enableConsoleCapture();
152
- const { buildProgram } = await import("./program-BK9kK6kS.js").then((n) => n.t);
152
+ const { buildProgram } = await import("./program-1Z6kvss1.js").then((n) => n.t);
153
153
  const program = buildProgram();
154
154
  installUnhandledRejectionHandler();
155
155
  process$1.on("uncaughtException", (error) => {
@@ -159,11 +159,11 @@ async function runCli(argv = process$1.argv) {
159
159
  const parseArgv = rewriteUpdateFlagArgv(normalizedArgv);
160
160
  const primary = getPrimaryCommand(parseArgv);
161
161
  if (primary) {
162
- const { registerSubCliByName } = await import("./register.subclis-CaMMmAh5.js").then((n) => n.i);
162
+ const { registerSubCliByName } = await import("./register.subclis-BYn7PfDN.js").then((n) => n.i);
163
163
  await registerSubCliByName(program, primary);
164
164
  }
165
165
  if (!(!primary && hasHelpOrVersion(parseArgv))) {
166
- const { registerPluginCliCommands } = await import("./cli-xcBqW-oN.js");
166
+ const { registerPluginCliCommands } = await import("./cli-C7xoSVIu.js");
167
167
  const { loadConfig } = await import("./config-Baj9Whac.js").then((n) => n.t);
168
168
  registerPluginCliCommands(program, loadConfig());
169
169
  }
@@ -1,5 +1,5 @@
1
1
  import "./pi-embedded-helpers-D5gz7ahu.js";
2
- import { st as requestHeartbeatNow, v as loadSessionEntry, yr as enqueueSystemEvent } from "./reply-DZQ3_aVE.js";
2
+ import { st as requestHeartbeatNow, v as loadSessionEntry, yr as enqueueSystemEvent } from "./reply-tjsZJRCw.js";
3
3
  import { c as defaultRuntime } from "./subsystem-Dl1sS5S-.js";
4
4
  import "./paths-DcA9-j8b.js";
5
5
  import { u as normalizeMainKey } from "./session-key-hGS8_hRJ.js";
@@ -55,8 +55,8 @@ import "./satisfies-Ch9z1ETk.js";
55
55
  import "./session-cost-usage-CJ5Inqel.js";
56
56
  import "./control-service-BonAEJ5j.js";
57
57
  import "./channel-selection-BZvCBj33.js";
58
- import "./deps-CSxuftaz.js";
59
- import { t as agentCommand } from "./agent-Bf_tMAMV.js";
58
+ import "./deps-rn0gZrpC.js";
59
+ import { t as agentCommand } from "./agent-p9b8oR9g.js";
60
60
  import { t as formatForLog } from "./ws-log-NQGsvlnZ.js";
61
61
  import { randomUUID } from "node:crypto";
62
62
 
@@ -1,4 +1,4 @@
1
- import { ut as loadSKYKOIPlugins } from "./reply-DZQ3_aVE.js";
1
+ import { ut as loadSKYKOIPlugins } from "./reply-tjsZJRCw.js";
2
2
  import { t as createSubsystemLogger } from "./subsystem-Dl1sS5S-.js";
3
3
  import { c as resolveDefaultAgentId, s as resolveAgentWorkspaceDir, w as resolveDefaultAgentWorkspaceDir } from "./agent-scope-DrL2uTp9.js";
4
4
  import { o as loadConfig } from "./config-Baj9Whac.js";
@@ -1,6 +1,6 @@
1
1
  import { h as resolveUserPath } from "./utils-DIctjiBL.js";
2
2
  import { n as discoverSKYKOIPlugins, r as loadPluginManifest } from "./manifest-registry-5tS0nRed.js";
3
- import { i as resolvePluginInstallDir, n as installPluginFromNpmSpec, t as recordPluginInstall } from "./installs-DH4yiUE5.js";
3
+ import { i as resolvePluginInstallDir, n as installPluginFromNpmSpec, t as recordPluginInstall } from "./installs-h4Uc-evh.js";
4
4
  import fs from "node:fs/promises";
5
5
 
6
6
  //#region src/plugins/update.ts
@@ -1,5 +1,5 @@
1
1
  import "./pi-embedded-helpers-D5gz7ahu.js";
2
- import { Y as trimLogTail } from "./reply-DZQ3_aVE.js";
2
+ import { Y as trimLogTail } from "./reply-tjsZJRCw.js";
3
3
  import { T as theme, c as defaultRuntime } from "./subsystem-Dl1sS5S-.js";
4
4
  import "./paths-DcA9-j8b.js";
5
5
  import "./utils-DIctjiBL.js";
@@ -56,17 +56,17 @@ import "./satisfies-Ch9z1ETk.js";
56
56
  import "./session-cost-usage-CJ5Inqel.js";
57
57
  import "./control-service-BonAEJ5j.js";
58
58
  import "./channel-selection-BZvCBj33.js";
59
- import "./deps-CSxuftaz.js";
59
+ import "./deps-rn0gZrpC.js";
60
60
  import "./tailscale-CW2aNYJ9.js";
61
61
  import { _ as parseSemver } from "./daemon-runtime-vtoMFexx.js";
62
62
  import "./logging-B818ac7o.js";
63
63
  import "./note-ty8fydmp.js";
64
64
  import "./plugin-auto-enable-ClD8Hu9T.js";
65
- import "./archive-B9eFsEBD.js";
65
+ import "./archive-B2TNvtJ1.js";
66
66
  import "./skill-scanner-BapBkMb3.js";
67
- import "./installs-DH4yiUE5.js";
68
- import "./health-format-YyoxdlUl.js";
69
- import { C as resolveEffectiveUpdateChannel, S as normalizeUpdateChannel, _ as resolveNpmChannelTag, a as globalInstallArgs, b as channelToNpmTag, d as formatUpdateOneLiner, g as fetchNpmTagVersion, h as compareSemverStrings, i as detectGlobalInstallManagerForRoot, l as ensureCompletionCacheExists, m as checkUpdateStatus, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, p as resolveUpdateAvailability, r as detectGlobalInstallManagerByPresence, s as checkShellCompletionStatus, t as runGatewayUpdate, u as formatUpdateAvailableHint, v as DEFAULT_GIT_CHANNEL, x as formatUpdateChannelLabel, y as DEFAULT_PACKAGE_CHANNEL } from "./update-runner-33xx7oYJ.js";
67
+ import "./installs-h4Uc-evh.js";
68
+ import "./health-format-CAyqRYsb.js";
69
+ import { C as resolveEffectiveUpdateChannel, S as normalizeUpdateChannel, _ as resolveNpmChannelTag, a as globalInstallArgs, b as channelToNpmTag, d as formatUpdateOneLiner, g as fetchNpmTagVersion, h as compareSemverStrings, i as detectGlobalInstallManagerForRoot, l as ensureCompletionCacheExists, m as checkUpdateStatus, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, p as resolveUpdateAvailability, r as detectGlobalInstallManagerByPresence, s as checkShellCompletionStatus, t as runGatewayUpdate, u as formatUpdateAvailableHint, v as DEFAULT_GIT_CHANNEL, x as formatUpdateChannelLabel, y as DEFAULT_PACKAGE_CHANNEL } from "./update-runner-w1c33B-I.js";
70
70
  import "./auth-CMhFyIcG.js";
71
71
  import { t as renderTable } from "./table-BuHjFIeu.js";
72
72
  import "./skills-status-BSS2etLw.js";
@@ -74,15 +74,15 @@ import "./service-Fxlow9XO.js";
74
74
  import "./systemd-BTcdURXT.js";
75
75
  import "./service-audit-CO_WVcvf.js";
76
76
  import "./channels-status-issues-BaXwaWXv.js";
77
- import "./register.subclis-CaMMmAh5.js";
77
+ import "./register.subclis-BYn7PfDN.js";
78
78
  import { t as formatHelpExamples } from "./help-format-rUxU9jE_.js";
79
79
  import "./systemd-linger-BSA8MnYc.js";
80
80
  import "./auth-health-Cg7cWRH-.js";
81
- import { t as doctorCommand } from "./doctor-Bxfuf1yk.js";
82
- import { r as installCompletion } from "./completion-cli-CppZbiOR.js";
81
+ import { t as doctorCommand } from "./doctor-BEpUTgnw.js";
82
+ import { r as installCompletion } from "./completion-cli-DZIf5MsP.js";
83
83
  import "./shared-BzZOYgS0.js";
84
- import { r as runDaemonRestart } from "./daemon-cli-Disrwhkp.js";
85
- import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from "./update-BMplSa8q.js";
84
+ import { r as runDaemonRestart } from "./daemon-cli-BoYYTs26.js";
85
+ import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from "./update-BjhenzIm.js";
86
86
  import path from "node:path";
87
87
  import os from "node:os";
88
88
  import fs from "node:fs/promises";
@@ -1,12 +1,12 @@
1
- import { Y as trimLogTail } from "./reply-DZQ3_aVE.js";
1
+ import { Y as trimLogTail } from "./reply-tjsZJRCw.js";
2
2
  import { t as runCommandWithTimeout } from "./exec-CToLomNk.js";
3
3
  import { t as resolveSKYKOIPackageRoot } from "./skykoi-root-BcOj1-eE.js";
4
4
  import { r as resolveCliName, t as formatCliCommand } from "./command-format-BxjVkF35.js";
5
5
  import { N as VERSION } from "./config-Baj9Whac.js";
6
6
  import { _ as parseSemver } from "./daemon-runtime-vtoMFexx.js";
7
7
  import { t as note } from "./note-ty8fydmp.js";
8
- import { i as resolveControlUiDistIndexPathForRoot, r as resolveControlUiDistIndexHealth } from "./health-format-YyoxdlUl.js";
9
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-CppZbiOR.js";
8
+ import { i as resolveControlUiDistIndexPathForRoot, r as resolveControlUiDistIndexHealth } from "./health-format-CAyqRYsb.js";
9
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-DZIf5MsP.js";
10
10
  import path from "node:path";
11
11
  import os from "node:os";
12
12
  import fs from "node:fs/promises";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skykoi",
3
- "version": "2026.3.102",
3
+ "version": "2026.3.103",
4
4
  "description": "SkyKoi — AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.",
5
5
  "keywords": [
6
6
  "skykoi",