skykoi 2026.3.103 → 2026.3.105

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 (40) hide show
  1. package/dist/{agent-p9b8oR9g.js → agent-mAGmMMpi.js} +2 -2
  2. package/dist/{archive-B2TNvtJ1.js → archive-lKJkn4tB.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-BZFkxqhG.js → channel-options-BQKMTvEb.js} +1 -1
  6. package/dist/{channels-cli-Dgv8lS9w.js → channels-cli-DKidLVbk.js} +6 -6
  7. package/dist/cli/daemon-cli.js +1 -1
  8. package/dist/{cli-C7xoSVIu.js → cli-Duq_X80m.js} +1 -1
  9. package/dist/{completion-cli-DZIf5MsP.js → completion-cli-BONN8uTE.js} +1 -1
  10. package/dist/{config-guard-8XnGwS-a.js → config-guard-BYQHM8DH.js} +13 -13
  11. package/dist/{configure-C_b3Snqr.js → configure-D3XHyzEv.js} +4 -4
  12. package/dist/{daemon-cli-BoYYTs26.js → daemon-cli-B-IYbDk-.js} +2 -2
  13. package/dist/{deps-rn0gZrpC.js → deps-qVFsEN7y.js} +1 -1
  14. package/dist/{doctor-BEpUTgnw.js → doctor-DkkAz_Ng.js} +3 -3
  15. package/dist/entry.js +1 -1
  16. package/dist/extension-api.js +1 -1
  17. package/dist/{gateway-cli-CTM6rHhC.js → gateway-cli-BOYZ_ok8.js} +189 -16
  18. package/dist/{github-copilot-auth-CKHES8sa.js → github-copilot-auth-ZU1Aj7LV.js} +1 -1
  19. package/dist/{health-format-CAyqRYsb.js → health-format-DvKXCjHa.js} +1 -1
  20. package/dist/{hooks-cli-CW60ov-f.js → hooks-cli-D8Dr4I05.js} +3 -3
  21. package/dist/index.js +19 -19
  22. package/dist/{installs-h4Uc-evh.js → installs-DM0xQ8yX.js} +1 -1
  23. package/dist/{models-cli-DsYR2tR8.js → models-cli-B5Ye1nrU.js} +2 -2
  24. package/dist/{onboard-channels-BI-CPjHC.js → onboard-channels-edOVTcaz.js} +2 -2
  25. package/dist/{onboard-skills-DGackeCI.js → onboard-skills-DV2i2V1F.js} +3 -3
  26. package/dist/{onboarding-BKfryJ6L.js → onboarding-BdV4ib3N.js} +6 -6
  27. package/dist/{plugin-registry-DzMh5IiO.js → plugin-registry-fMiGyQBb.js} +1 -1
  28. package/dist/plugin-sdk/index.js +3 -3
  29. package/dist/plugin-sdk/infra/canvas-registry.d.ts +46 -0
  30. package/dist/{plugins-cli-DZK7twrV.js → plugins-cli-likupW63.js} +5 -5
  31. package/dist/{program-1Z6kvss1.js → program-BUOqtJvs.js} +4 -4
  32. package/dist/{register.subclis-BYn7PfDN.js → register.subclis-CwNCais0.js} +10 -10
  33. package/dist/{reply-tjsZJRCw.js → reply-LYsD96rY.js} +197 -22
  34. package/dist/{run-main-BFgv6dNS.js → run-main-CO0kDLLK.js} +20 -20
  35. package/dist/{server-node-events-DruIxhbS.js → server-node-events-CW3dUZdH.js} +3 -3
  36. package/dist/{status-CW25nak_.js → status-CiuH86Fv.js} +1 -1
  37. package/dist/{update-BjhenzIm.js → update-BGLxRh8b.js} +1 -1
  38. package/dist/{update-cli-B98LZuzh.js → update-cli-BAkZuxEO.js} +11 -11
  39. package/dist/{update-runner-w1c33B-I.js → update-runner-uWq7AVhY.js} +3 -3
  40. 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-tjsZJRCw.js";
2
+ import { B as runWithModelFallback, Br as resolveAgentTimeoutMs, Dn as clearAgentRunContext, En as AGENT_LANE_NESTED, F as resolveOutboundTarget, I as resolveSessionDeliveryTarget, On as emitAgentEvent, Tr as loadModelCatalog, Ut as getRemoteSkillEligibility, Yt as getSkillsSnapshotVersion, _r as lookupContextTokens, br as applyVerboseOverride, c as runEmbeddedPiAgent, i as runCliAgent, jn as registerAgentRunContext, n as getCliSessionId, o as resolveSendPolicy, r as setCliSessionId, vr as clearSessionAuthProfileOverride, yr as applyModelOverrideToSessionEntry } from "./reply-LYsD96rY.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-rn0gZrpC.js";
16
+ import { t as createDefaultDeps } from "./deps-qVFsEN7y.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-tjsZJRCw.js";
2
+ import { yt as require_inherits } from "./reply-LYsD96rY.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.103",
3
- "commit": "4a2f909eecf3810efbc41da92f1c8ccb2a499903",
4
- "builtAt": "2026-04-12T22:33:14.556Z"
2
+ "version": "2026.3.105",
3
+ "commit": "721500de270773a97c7b45ed70fac551450260c8",
4
+ "builtAt": "2026-04-12T23:38:25.302Z"
5
5
  }
@@ -1 +1 @@
1
- 198fdd5c7daf6ddf05d3c7fd7a4adf54865d7b970b58afa37bba1a52c69d8ef2
1
+ 61ff04e989d88e370fd3dadedfaa01b95d1d5cc366950670c0d6003251e75e0f
@@ -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-DzMh5IiO.js";
5
+ import { t as ensurePluginRegistryLoaded } from "./plugin-registry-fMiGyQBb.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-tjsZJRCw.js";
2
+ import { Fn as createSlackWebClient, ht as formatUsageReportLines, mt as loadProviderUsageSummary, vn as parseDiscordTarget, yn as fetchChannelPermissionsDiscord } from "./reply-LYsD96rY.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-BI-CPjHC.js";
63
+ import { i as reloadOnboardingPluginRegistry, n as setupChannels, r as ensureOnboardingPluginInstalled } from "./onboard-channels-edOVTcaz.js";
64
64
  import { i as listChannelPluginCatalogEntries } from "./plugin-auto-enable-ClD8Hu9T.js";
65
- import "./archive-B2TNvtJ1.js";
65
+ import "./archive-lKJkn4tB.js";
66
66
  import "./skill-scanner-BapBkMb3.js";
67
- import "./installs-h4Uc-evh.js";
67
+ import "./installs-DM0xQ8yX.js";
68
68
  import { t as collectChannelStatusIssues } from "./channels-status-issues-BaXwaWXv.js";
69
- import { n as hasExplicitOptions } from "./plugin-registry-DzMh5IiO.js";
70
- import { t as formatCliChannelOptions } from "./channel-options-BZFkxqhG.js";
69
+ import { n as hasExplicitOptions } from "./plugin-registry-fMiGyQBb.js";
70
+ import { t as formatCliChannelOptions } from "./channel-options-BQKMTvEb.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-BoYYTs26.js";
2
+ export { registerDaemonCli, runDaemonInstall, runDaemonRestart, runDaemonStart, runDaemonStatus, runDaemonStop, runDaemonUninstall } from "../daemon-cli-B-IYbDk-.js";
@@ -1,5 +1,5 @@
1
1
  import "./pi-embedded-helpers-D5gz7ahu.js";
2
- import { ut as loadSKYKOIPlugins } from "./reply-tjsZJRCw.js";
2
+ import { pt as loadSKYKOIPlugins } from "./reply-LYsD96rY.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-BYn7PfDN.js";
3
+ import { n as registerSubCliByName, t as getSubCliEntries } from "./register.subclis-CwNCais0.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-tjsZJRCw.js";
1
+ import { A as runMessageAction, Et as formatControlUiSshHint, Ft as resolveControlUiLinks, L as formatTargetDisplay, Ot as handleReset, Pt as randomToken, Rt as waitForGatewayReachable, St as applyWizardMetadata, Tt as ensureWorkspaceAndSessions, _r as lookupContextTokens, ct as CHANNEL_TARGETS_DESCRIPTION, jt as openUrl, kt as moveToTrash, lt as CHANNEL_TARGET_DESCRIPTION, nn as runMemoryStatus, tn as registerMemoryCli, wt as detectBrowserOpenSupport, xt as DEFAULT_WORKSPACE, z as CHANNEL_MESSAGE_ACTION_NAMES } from "./reply-LYsD96rY.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-rn0gZrpC.js";
22
+ import { t as createDefaultDeps } from "./deps-qVFsEN7y.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-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";
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-BdV4ib3N.js";
29
+ import { d as applyAuthChoice, f as applyOpenAIConfig, h as promptAuthChoiceGrouped, m as applyGoogleGeminiModelDefault, p as upsertSharedEnvVar, u as warnIfModelConfigLooksOff } from "./onboard-skills-DV2i2V1F.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-ZU1Aj7LV.js";
31
+ import { n as setupChannels } from "./onboard-channels-edOVTcaz.js";
32
+ import { l as healthCommand } from "./health-format-DvKXCjHa.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-BYn7PfDN.js";
36
+ import { l as getVerboseFlag, o as getFlagValue, r as registerSubCliCommands, s as getPositiveIntFlagValue, u as hasFlag } from "./register.subclis-CwNCais0.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-p9b8oR9g.js";
40
- import { n as hasExplicitOptions, t as ensurePluginRegistryLoaded } from "./plugin-registry-DzMh5IiO.js";
39
+ import { a as createOutboundSendDeps, n as resolveSessionKeyForRequest, t as agentCommand } from "./agent-mAGmMMpi.js";
40
+ import { n as hasExplicitOptions, t as ensurePluginRegistryLoaded } from "./plugin-registry-fMiGyQBb.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-C_b3Snqr.js";
42
+ import { i as CONFIGURE_WIZARD_SECTIONS, n as configureCommand, r as configureCommandWithSections } from "./configure-D3XHyzEv.js";
43
43
  import { n as ensureSystemdUserLingerNonInteractive } from "./systemd-linger-BSA8MnYc.js";
44
- import { n as loadAndMaybeMigrateDoctorConfig, t as doctorCommand } from "./doctor-BEpUTgnw.js";
44
+ import { n as loadAndMaybeMigrateDoctorConfig, t as doctorCommand } from "./doctor-DkkAz_Ng.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-C_b3Snqr.js").then((n) => n.t);
2795
+ const { CONFIGURE_WIZARD_SECTIONS, configureCommand, configureCommandWithSections } = await import("./configure-D3XHyzEv.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-tjsZJRCw.js";
2
+ import { At as normalizeGatewayTokenInput, Dt as guardCancel, Ft as resolveControlUiLinks, Lt as summarizeExistingConfig, Mt as printWizardHeader, Nt as probeGatewayReachable, Pt as randomToken, Rt as waitForGatewayReachable, St as applyWizardMetadata, Tt as ensureWorkspaceAndSessions, xt as DEFAULT_WORKSPACE } from "./reply-LYsD96rY.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-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";
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-DV2i2V1F.js";
19
+ import { n as setupChannels, t as noteChannelStatus } from "./onboard-channels-edOVTcaz.js";
20
+ import { l as healthCommand, n as ensureControlUiAssetsBuilt, t as formatHealthCheckFailure } from "./health-format-DvKXCjHa.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-tjsZJRCw.js";
2
+ import { Ft as resolveControlUiLinks } from "./reply-LYsD96rY.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-rn0gZrpC.js";
17
+ import { t as createDefaultDeps } from "./deps-qVFsEN7y.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-tjsZJRCw.js";
1
+ import { Mn as sendMessageWhatsApp, Pn as sendMessageSlack, bt as sendMessageIMessage, gn as sendMessageDiscord, hn as sendMessageTelegram } from "./reply-LYsD96rY.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-tjsZJRCw.js";
1
+ import { Dt as guardCancel, Mt as printWizardHeader, Pt as randomToken, St as applyWizardMetadata, Tr as loadModelCatalog, pt as loadSKYKOIPlugins } from "./reply-LYsD96rY.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-CAyqRYsb.js";
29
- import { c as doctorShellCompletion, t as runGatewayUpdate } from "./update-runner-w1c33B-I.js";
28
+ import { i as resolveControlUiDistIndexPathForRoot, l as healthCommand, r as resolveControlUiDistIndexHealth, t as formatHealthCheckFailure } from "./health-format-DvKXCjHa.js";
29
+ import { c as doctorShellCompletion, t as runGatewayUpdate } from "./update-runner-uWq7AVhY.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-BFgv6dNS.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
247
+ import("./run-main-CO0kDLLK.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-tjsZJRCw.js";
2
+ import { Br as resolveAgentTimeoutMs, Ln as resolveAgentIdentity, c as runEmbeddedPiAgent } from "./reply-LYsD96rY.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-tjsZJRCw.js";
3
+ import { $ as writeRestartSentinel, $n as resolveTtsConfig, $t as getHookType, An as onAgentEvent, Ar as DEFAULT_INPUT_IMAGE_MIMES, B as runWithModelFallback, Bn as resolveUserTimeFormat, Br as resolveAgentTimeoutMs, Bt as buildControlUiAvatarUrl, C as resolveSessionModelRef, Cn as isAbortTrigger, Cr as isSystemEventContextChanged, D as readSessionPreviewItemsFromTranscript, Dn as clearAgentRunContext, Dr as DEFAULT_INPUT_FILE_MAX_CHARS, E as readSessionMessages, Er as DEFAULT_INPUT_FILE_MAX_BYTES, F as resolveOutboundTarget, Fr as DEFAULT_INPUT_TIMEOUT_MS, G as scheduleGatewaySigusr1Restart, Gn as triggerInternalHook, Gt as recordRemoteNodeInfo, H as authorizeGatewaySigusr1Restart, Hn as clearInternalHooks, Ht as resolveAssistantAvatarUrl, I as resolveSessionDeliveryTarget, Ir as extractFileContentFromSource, J as formatDoctorNonInteractiveHint, Jn as getTtsProvider, Jt as setSkillsRemoteRegistry, K as setGatewaySigusr1RestartPolicy, Kn as OPENAI_TTS_MODELS, Kt as refreshRemoteBinsForConnectedNodes, Ln as resolveAgentIdentity, Lr as extractImageContentFromSource, M as resolveOutboundSessionRoute, Mr as DEFAULT_INPUT_PDF_MAX_PAGES, Nn as normalizePollInput, Nr as DEFAULT_INPUT_PDF_MAX_PIXELS, O as resolveSessionTranscriptCandidates, On as emitAgentEvent, Or as DEFAULT_INPUT_FILE_MIMES, Ot as handleReset, Pr as DEFAULT_INPUT_PDF_MIN_TEXT_CHARS, Qn as resolveTtsAutoMode, Qt as detectSuspiciousPatterns, R as resetDirectoryCache, Rr as normalizeMimeList, S as resolveGatewaySessionStoreTarget, Sn as formatZonedTimestamp, Sr as enqueueSystemEvent, T as capArrayByJsonBytes, Tn as initSubagentRegistry, Tr as loadModelCatalog, U as consumeGatewaySigusr1RestartAuthorization, Un as createInternalHookEvent, Ut as getRemoteSkillEligibility, Vn as resolveUserTimezone, Vt as normalizeControlUiBasePath, W as isGatewaySigusr1RestartExternallyAllowed, Wn as registerInternalHook, Wt as primeRemoteSkillsCache, Xn as isTtsProviderConfigured, Xt as registerSkillsChangeListener, Y as formatRestartSentinelMessage, Yn as isTtsEnabled, Yt as getSkillsSnapshotVersion, Z as summarizeRestartSentinel, Zn as resolveTtsApiKey, Zt as buildSafeExternalPrompt, _ as resolveAnnounceTargetFromKey, _n as getChannelActivity, _r as lookupContextTokens, a as normalizeSendPolicy, an as normalizeGroupActivation, at as normalizePayloadToSystemText, b as loadCombinedSessionStoreForGateway, bn as dispatchInboundMessage, br as applyVerboseOverride, c as runEmbeddedPiAgent, cr as CommandLane, d as waitForEmbeddedPiRunEnd, dr as isDiagnosticsEnabled, en as isExternalHookSession, er as resolveTtsPrefsPath, et as normalizeCronJobCreate, fn as getLastHeartbeatEvent, fr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, ft as getPluginToolMeta, g as onCanvasChange, gr as stripHeartbeatToken, h as listCanvasUris, i as runCliAgent, in as createReplyPrefixOptions, ir as textToSpeech, it as normalizeOptionalText, j as ensureOutboundSessionEntry, jn as registerAgentRunContext, jr as DEFAULT_INPUT_MAX_REDIRECTS, k as stripEnvelopeFromMessages, kn as getAgentRunContext, kr as DEFAULT_INPUT_IMAGE_MAX_BYTES, l as abortEmbeddedPiRun, ln as buildHistoryContextFromEntries, lr as startDiagnosticHeartbeat, m as getCanvasResource, mt as loadProviderUsageSummary, n as getCliSessionId, nr as setTtsEnabled, nt as inferLegacyName, o as resolveSendPolicy, ot as normalizeRequiredName, p as createSKYKOITools, pn as onHeartbeatEvent, pt as loadSKYKOIPlugins, q as consumeRestartSentinel, qn as OPENAI_TTS_VOICES, qt as refreshRemoteNodeBins, r as setCliSessionId, rr as setTtsProvider, rt as normalizeOptionalAgentId, s as clearSessionQueues, sn as registerUnhandledRejectionHandler, sr as setCommandLaneConcurrency, st as migrateLegacyCronPayload, tr as resolveTtsProviderOrder, tt as normalizeCronJobPatch, un as resolveHeartbeatVisibility, ur as stopDiagnosticHeartbeat, ut as requestHeartbeatNow, v as listAgentsForGateway, vt as handleSlackHttpRequest, w as archiveFileOnDisk, wn as stopSubagentsForRequester, x as loadSessionEntry, xn as createReplyDispatcher, xr as parseVerboseOverride, y as listSessionsFromStore, yr as applyModelOverrideToSessionEntry, zn as formatUserTime, zt as CONTROL_UI_AVATAR_PREFIX } from "./reply-LYsD96rY.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-rn0gZrpC.js";
67
+ import { n as createOutboundSendDeps, t as createDefaultDeps } from "./deps-qVFsEN7y.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-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";
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-BdV4ib3N.js";
77
+ import { n as installSkill } from "./onboard-skills-DV2i2V1F.js";
78
+ import "./github-copilot-auth-ZU1Aj7LV.js";
79
+ import "./onboard-channels-edOVTcaz.js";
80
80
  import { r as buildChannelUiCatalog, t as applyPluginAutoEnable } from "./plugin-auto-enable-ClD8Hu9T.js";
81
- import "./archive-B2TNvtJ1.js";
81
+ import "./archive-lKJkn4tB.js";
82
82
  import "./skill-scanner-BapBkMb3.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";
83
+ import "./installs-DM0xQ8yX.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-DvKXCjHa.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-uWq7AVhY.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-BYn7PfDN.js";
96
- import { a as createOutboundSendDeps$1, i as resolveAgentOutboundTarget, r as resolveAgentDeliveryPlan, t as agentCommand } from "./agent-p9b8oR9g.js";
95
+ import "./register.subclis-CwNCais0.js";
96
+ import { a as createOutboundSendDeps$1, i as resolveAgentOutboundTarget, r as resolveAgentDeliveryPlan, t as agentCommand } from "./agent-mAGmMMpi.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-DZIf5MsP.js";
99
+ import "./completion-cli-BONN8uTE.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-BoYYTs26.js";
104
+ import { a as runDaemonStop, i as runDaemonStart, n as runDaemonStatus, o as runDaemonUninstall, r as runDaemonRestart, s as runDaemonInstall } from "./daemon-cli-B-IYbDk-.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";
@@ -5878,6 +5878,10 @@ const BASE_METHODS = [
5878
5878
  "chat.history",
5879
5879
  "chat.abort",
5880
5880
  "chat.send",
5881
+ "canvas.read",
5882
+ "canvas.subscribe",
5883
+ "canvas.unsubscribe",
5884
+ "canvas.list",
5881
5885
  "mesh.announce",
5882
5886
  "mesh.nodes.changed",
5883
5887
  "mesh.peer.list",
@@ -7249,6 +7253,168 @@ const browserHandlers = { "browser.request": async ({ params, respond, context }
7249
7253
  respond(true, result.body);
7250
7254
  } };
7251
7255
 
7256
+ //#endregion
7257
+ //#region src/gateway/server-methods/canvas.ts
7258
+ /**
7259
+ * @module gateway/server-methods/canvas
7260
+ *
7261
+ * Gateway RPC handlers for canvas resources — the session-scoped
7262
+ * state documents that back every live widget (checklist, plan, fleet,
7263
+ * deliverables). See `infra/canvas-registry.ts` for the store itself
7264
+ * and the architecture plan for the full design rationale.
7265
+ *
7266
+ * Methods:
7267
+ * canvas.read — fetch current content + revision for a URI
7268
+ * canvas.subscribe — register this connection for `canvas:updated`
7269
+ * pings on a URI; returns current snapshot
7270
+ * canvas.unsubscribe — unregister (idempotent)
7271
+ * canvas.list — list every URI currently tracked for a session
7272
+ *
7273
+ * Notifications emitted (via the broadcaster):
7274
+ * `canvas:updated` — `{uri, revision, turnSeq}`; URI-only ping so the
7275
+ * wire stays tiny. Client re-reads via canvas.read.
7276
+ *
7277
+ * The per-URI subscription registry lives in this module — a Map of
7278
+ * `uri -> Set<connId>` — so the fan-out of notifications only hits
7279
+ * clients that actually care about the changed URI.
7280
+ */
7281
+ const urisByConn = /* @__PURE__ */ new Map();
7282
+ const connsByUri = /* @__PURE__ */ new Map();
7283
+ function bindSubscription(connId, uri) {
7284
+ let uriSet = urisByConn.get(connId);
7285
+ if (!uriSet) {
7286
+ uriSet = /* @__PURE__ */ new Set();
7287
+ urisByConn.set(connId, uriSet);
7288
+ }
7289
+ uriSet.add(uri);
7290
+ let connSet = connsByUri.get(uri);
7291
+ if (!connSet) {
7292
+ connSet = /* @__PURE__ */ new Set();
7293
+ connsByUri.set(uri, connSet);
7294
+ }
7295
+ connSet.add(connId);
7296
+ }
7297
+ function releaseSubscription(connId, uri) {
7298
+ const uriSet = urisByConn.get(connId);
7299
+ uriSet?.delete(uri);
7300
+ if (uriSet && uriSet.size === 0) urisByConn.delete(connId);
7301
+ const connSet = connsByUri.get(uri);
7302
+ connSet?.delete(connId);
7303
+ if (connSet && connSet.size === 0) connsByUri.delete(uri);
7304
+ }
7305
+ /** Drop every subscription for a disconnected connection. */
7306
+ function releaseAllSubscriptionsForConn(connId) {
7307
+ const uris = urisByConn.get(connId);
7308
+ if (!uris) return;
7309
+ for (const uri of uris) {
7310
+ const connSet = connsByUri.get(uri);
7311
+ connSet?.delete(connId);
7312
+ if (connSet && connSet.size === 0) connsByUri.delete(uri);
7313
+ }
7314
+ urisByConn.delete(connId);
7315
+ }
7316
+ /**
7317
+ * Register the canvas-change → broadcaster bridge. Call this once at
7318
+ * gateway startup. Whenever the registry mutates, we find the set of
7319
+ * connections subscribed to that URI and send each a `canvas:updated`
7320
+ * notification with just `{uri, revision, turnSeq}`.
7321
+ */
7322
+ function wireCanvasBroadcast(broadcastToConnIds) {
7323
+ return onCanvasChange((resource) => {
7324
+ const conns = connsByUri.get(resource.uri);
7325
+ if (!conns || conns.size === 0) return;
7326
+ broadcastToConnIds("canvas:updated", {
7327
+ uri: resource.uri,
7328
+ revision: resource.revision,
7329
+ turnSeq: resource.turnSeq
7330
+ }, conns, { dropIfSlow: true });
7331
+ });
7332
+ }
7333
+ const canvasHandlers = {
7334
+ "canvas.read": ({ params, respond }) => {
7335
+ const uri = typeof params?.uri === "string" ? params.uri : "";
7336
+ if (!uri) {
7337
+ respond(false, void 0, errorShape(ErrorCodes.INVALID_REQUEST, "missing uri"));
7338
+ return;
7339
+ }
7340
+ const resource = getCanvasResource(uri);
7341
+ if (!resource) {
7342
+ respond(true, {
7343
+ uri,
7344
+ exists: false,
7345
+ revision: 0,
7346
+ turnSeq: 0,
7347
+ content: null
7348
+ });
7349
+ return;
7350
+ }
7351
+ respond(true, {
7352
+ uri: resource.uri,
7353
+ exists: true,
7354
+ revision: resource.revision,
7355
+ turnSeq: resource.turnSeq,
7356
+ content: resource.content,
7357
+ updatedAt: resource.updatedAt
7358
+ });
7359
+ },
7360
+ "canvas.subscribe": ({ params, respond, client }) => {
7361
+ const uri = typeof params?.uri === "string" ? params.uri : "";
7362
+ const sinceRev = typeof params?.sinceRev === "number" ? params.sinceRev : void 0;
7363
+ const connId = client?.connId;
7364
+ if (!uri) {
7365
+ respond(false, void 0, errorShape(ErrorCodes.INVALID_REQUEST, "missing uri"));
7366
+ return;
7367
+ }
7368
+ if (!connId) {
7369
+ respond(false, void 0, errorShape(ErrorCodes.INVALID_REQUEST, "no connection id"));
7370
+ return;
7371
+ }
7372
+ bindSubscription(connId, uri);
7373
+ const resource = getCanvasResource(uri);
7374
+ const resync = !!(sinceRev !== void 0 && resource && resource.revision > sinceRev + 1);
7375
+ respond(true, {
7376
+ uri,
7377
+ exists: !!resource,
7378
+ revision: resource?.revision ?? 0,
7379
+ turnSeq: resource?.turnSeq ?? 0,
7380
+ content: resource?.content ?? null,
7381
+ updatedAt: resource?.updatedAt,
7382
+ resync
7383
+ });
7384
+ },
7385
+ "canvas.unsubscribe": ({ params, respond, client }) => {
7386
+ const uri = typeof params?.uri === "string" ? params.uri : "";
7387
+ const connId = client?.connId;
7388
+ if (!uri) {
7389
+ respond(false, void 0, errorShape(ErrorCodes.INVALID_REQUEST, "missing uri"));
7390
+ return;
7391
+ }
7392
+ if (!connId) {
7393
+ respond(true, {
7394
+ uri,
7395
+ unsubscribed: false
7396
+ });
7397
+ return;
7398
+ }
7399
+ releaseSubscription(connId, uri);
7400
+ respond(true, {
7401
+ uri,
7402
+ unsubscribed: true
7403
+ });
7404
+ },
7405
+ "canvas.list": ({ params, respond }) => {
7406
+ const sessionKey = typeof params?.sessionKey === "string" ? params.sessionKey : "";
7407
+ if (!sessionKey) {
7408
+ respond(false, void 0, errorShape(ErrorCodes.INVALID_REQUEST, "missing sessionKey"));
7409
+ return;
7410
+ }
7411
+ respond(true, {
7412
+ sessionKey,
7413
+ uris: listCanvasUris(sessionKey)
7414
+ });
7415
+ }
7416
+ };
7417
+
7252
7418
  //#endregion
7253
7419
  //#region src/gateway/server-methods/mesh.ts
7254
7420
  /**
@@ -10588,7 +10754,7 @@ const nodeHandlers = {
10588
10754
  const p = params;
10589
10755
  const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
10590
10756
  await respondUnavailableOnThrow(respond, async () => {
10591
- const { handleNodeEvent } = await import("./server-node-events-DruIxhbS.js");
10757
+ const { handleNodeEvent } = await import("./server-node-events-CW3dUZdH.js");
10592
10758
  const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
10593
10759
  await handleNodeEvent({
10594
10760
  deps: context.deps,
@@ -13021,7 +13187,11 @@ const READ_METHODS = new Set([
13021
13187
  "node.describe",
13022
13188
  "chat.history",
13023
13189
  "mesh.peer.list",
13024
- "mesh.ping"
13190
+ "mesh.ping",
13191
+ "canvas.read",
13192
+ "canvas.subscribe",
13193
+ "canvas.unsubscribe",
13194
+ "canvas.list"
13025
13195
  ]);
13026
13196
  const WRITE_METHODS = new Set([
13027
13197
  "send",
@@ -13091,6 +13261,7 @@ const coreGatewayHandlers = {
13091
13261
  ...agentHandlers,
13092
13262
  ...agentsHandlers,
13093
13263
  ...browserHandlers,
13264
+ ...canvasHandlers,
13094
13265
  ...meshHandlers,
13095
13266
  ...credentialsHandlers
13096
13267
  };
@@ -17012,6 +17183,7 @@ async function createGatewayRuntimeState(params) {
17012
17183
  const removeChatRun = chatRunRegistry.remove;
17013
17184
  const chatAbortControllers = /* @__PURE__ */ new Map();
17014
17185
  const toolEventRecipients = createToolEventRecipientRegistry();
17186
+ wireCanvasBroadcast(broadcastToConnIds);
17015
17187
  return {
17016
17188
  canvasHost,
17017
17189
  httpServer,
@@ -18613,6 +18785,7 @@ function attachGatewayWsConnectionHandler(params) {
18613
18785
  const nodeId = context.nodeRegistry.unregister(connId);
18614
18786
  if (nodeId) context.nodeUnsubscribeAll(nodeId);
18615
18787
  }
18788
+ releaseAllSubscriptionsForConn(connId);
18616
18789
  logWs("out", "close", {
18617
18790
  connId,
18618
18791
  code,
@@ -1,4 +1,4 @@
1
- import { ut as loadSKYKOIPlugins } from "./reply-tjsZJRCw.js";
1
+ import { pt as loadSKYKOIPlugins } from "./reply-LYsD96rY.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-tjsZJRCw.js";
1
+ import { N as resolveHeartbeatDeliveryTarget, P as resolveHeartbeatSenderContext, Rn as resolveEffectiveMessagesConfig, Vn as resolveUserTimezone, ar as enqueueCommandInLane, cr as CommandLane, dn as emitHeartbeatEvent, dt as setHeartbeatWakeHandler, fr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, gr as stripHeartbeatToken, hr as resolveHeartbeatPrompt$1, mn as resolveIndicatorType, mr as isHeartbeatContentEffectivelyEmpty, or as getQueueSize, pr as DEFAULT_HEARTBEAT_EVERY, t as getReplyFromConfig, u as isEmbeddedPiRunActive, un as resolveHeartbeatVisibility, ut as requestHeartbeatNow, wr as peekSystemEvents } from "./reply-LYsD96rY.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-tjsZJRCw.js";
2
+ import "./reply-LYsD96rY.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-B2TNvtJ1.js";
58
+ import { a as resolvePackedRootDir, i as resolveArchiveKind, n as fileExists, r as readJsonFile, t as extractArchive } from "./archive-lKJkn4tB.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-CW25nak_.js";
61
+ import { t as buildPluginStatusReport } from "./status-CiuH86Fv.js";
62
62
  import fs from "node:fs";
63
63
  import path from "node:path";
64
64
  import os from "node:os";