skykoi 2026.3.394 → 2026.3.395

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 (58) hide show
  1. package/dist/build-info.json +3 -3
  2. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  3. package/dist/{completion-cli-BR65MWyg.js → completion-cli-EZT_a2ap.js} +1 -1
  4. package/dist/{config-guard-n-QrH3kl.js → config-guard-fJKpR_SZ.js} +4 -4
  5. package/dist/{doctor-C64ZiCRM.js → doctor-CQGJdbYI.js} +1 -1
  6. package/dist/{doctor-completion-DUNhJ3N0.js → doctor-completion-CjjQQkQg.js} +1 -1
  7. package/dist/entry.js +1 -1
  8. package/dist/{gateway-cli-BtiEDdNq.js → gateway-cli-BYCYD6w4.js} +6 -6
  9. package/dist/{graphics-protocol-BK3QxOOc.js → graphics-protocol-K_Nx2CZD.js} +3 -2
  10. package/dist/{graphics-terminal-setup-DIkhgwxn.js → graphics-terminal-setup-cA9wTDpp.js} +1 -1
  11. package/dist/index.js +9 -9
  12. package/dist/{onboarding-CPjCBd7F.js → onboarding-HfPhiss5.js} +3 -3
  13. package/dist/plugin-sdk/index.js +12 -12
  14. package/dist/plugin-sdk/{pi-model-discovery-lynj0LAO.js → pi-model-discovery-ClImJtLC.js} +3 -3
  15. package/dist/{program-CfYKfdNq.js → program-BBeg0h5_.js} +3 -3
  16. package/dist/{register.subclis-C5iMbY81.js → register.subclis-BOfFB3d9.js} +4 -4
  17. package/dist/{run-main-DB-CAEbY.js → run-main-DgUWiP3B.js} +11 -11
  18. package/dist/{tui-YYjceSsK.js → tui-PxB-9vcf.js} +88 -3
  19. package/dist/{tui-cli-Ceeqn9FK.js → tui-cli-BXUAwzXh.js} +2 -2
  20. package/dist/{update-cli-CiHZKuyG.js → update-cli-8CGaId7j.js} +4 -4
  21. package/extensions/bluebubbles/package.json +1 -1
  22. package/extensions/copilot-proxy/package.json +1 -1
  23. package/extensions/diagnostics-otel/package.json +1 -1
  24. package/extensions/discord/package.json +1 -1
  25. package/extensions/feishu/package.json +1 -1
  26. package/extensions/google-antigravity-auth/package.json +1 -1
  27. package/extensions/google-gemini-cli-auth/package.json +1 -1
  28. package/extensions/googlechat/package.json +1 -1
  29. package/extensions/imessage/package.json +1 -1
  30. package/extensions/line/package.json +1 -1
  31. package/extensions/llm-task/package.json +1 -1
  32. package/extensions/lobster/package.json +1 -1
  33. package/extensions/matrix/CHANGELOG.md +5 -0
  34. package/extensions/matrix/package.json +1 -1
  35. package/extensions/mattermost/package.json +1 -1
  36. package/extensions/memory-core/package.json +1 -1
  37. package/extensions/memory-lancedb/package.json +1 -1
  38. package/extensions/minimax-portal-auth/package.json +1 -1
  39. package/extensions/msteams/CHANGELOG.md +5 -0
  40. package/extensions/msteams/package.json +1 -1
  41. package/extensions/nextcloud-talk/package.json +1 -1
  42. package/extensions/nostr/CHANGELOG.md +5 -0
  43. package/extensions/nostr/package.json +1 -1
  44. package/extensions/open-prose/package.json +1 -1
  45. package/extensions/signal/package.json +1 -1
  46. package/extensions/slack/package.json +1 -1
  47. package/extensions/telegram/package.json +1 -1
  48. package/extensions/tlon/package.json +1 -1
  49. package/extensions/twitch/CHANGELOG.md +5 -0
  50. package/extensions/twitch/package.json +1 -1
  51. package/extensions/voice-call/CHANGELOG.md +5 -0
  52. package/extensions/voice-call/package.json +1 -1
  53. package/extensions/whatsapp/package.json +1 -1
  54. package/extensions/zalo/CHANGELOG.md +5 -0
  55. package/extensions/zalo/package.json +1 -1
  56. package/extensions/zalouser/CHANGELOG.md +5 -0
  57. package/extensions/zalouser/package.json +1 -1
  58. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2026.3.394",
3
- "commit": "6992351add61e5815e8b06a2c865571fc452ed37",
4
- "builtAt": "2026-07-05T04:20:22.613Z"
2
+ "version": "2026.3.395",
3
+ "commit": "70854a4e4cf776967e77c950419581288e9cd1e5",
4
+ "builtAt": "2026-07-05T05:32:12.834Z"
5
5
  }
@@ -1 +1 @@
1
- e7a6b204b9f8c0e90eeb0fa3b8aa03de7262c190e025ee3946cc9ca87f2f2884
1
+ 240a280af1cd6fc4305a024e0cacff894f3d071ba62f5201a3252d6c7cfdf339
@@ -1,6 +1,6 @@
1
1
  import { r as __exportAll } from "./chunk-D_gEzPfs.js";
2
2
  import { g as resolveStateDir } from "./paths-VdmjGGyc.js";
3
- import { n as registerSubCliByName, t as getSubCliEntries } from "./register.subclis-C5iMbY81.js";
3
+ import { n as registerSubCliByName, t as getSubCliEntries } from "./register.subclis-BOfFB3d9.js";
4
4
  import path from "node:path";
5
5
  import os from "node:os";
6
6
  import fs from "node:fs/promises";
@@ -28,7 +28,7 @@ import { t as resolveChannelDefaultAccountId } from "./helpers-C0u-oaDR.js";
28
28
  import { n as logConfigUpdated, t as formatConfigPath } from "./logging-CE47aZcO.js";
29
29
  import { t as WizardCancelledError } from "./prompts-D59uQQdA.js";
30
30
  import { t as createClackPrompter } from "./clack-prompter-BbdTlNx8.js";
31
- import { a as buildKoiSummaries, c as loadKoiIdentity, f as parseIdentityMarkdown, i as applyKoiConfig, l as pruneKoiConfig, n as statusCommand, o as findKoiEntryIndex, s as listKoiEntries, t as runOnboardingWizard, u as identityHasValues } from "./onboarding-CPjCBd7F.js";
31
+ import { a as buildKoiSummaries, c as loadKoiIdentity, f as parseIdentityMarkdown, i as applyKoiConfig, l as pruneKoiConfig, n as statusCommand, o as findKoiEntryIndex, s as listKoiEntries, t as runOnboardingWizard, u as identityHasValues } from "./onboarding-HfPhiss5.js";
32
32
  import { d as applyAuthChoice, f as applyOpenAIConfig, h as promptAuthChoiceGrouped, m as applyGoogleGeminiModelDefault, p as upsertSharedEnvVar, u as warnIfModelConfigLooksOff } from "./onboard-skills-B59kRT5k.js";
33
33
  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-C5L0Qpft.js";
34
34
  import { n as setupChannels } from "./onboard-channels-B1X24Kc5.js";
@@ -36,7 +36,7 @@ import { i as healthCommand } from "./health-format-CCsVCA7q.js";
36
36
  import { t as renderTable } from "./table-BFIT6RB5.js";
37
37
  import { t as resolveGatewayService } from "./service-CW9nUfWU.js";
38
38
  import { r as isSystemdUserServiceAvailable } from "./systemd-fjt-WYE7.js";
39
- import { l as getVerboseFlag, o as getFlagValue, r as registerSubCliCommands, s as getPositiveIntFlagValue, u as hasFlag } from "./register.subclis-C5iMbY81.js";
39
+ import { l as getVerboseFlag, o as getFlagValue, r as registerSubCliCommands, s as getPositiveIntFlagValue, u as hasFlag } from "./register.subclis-BOfFB3d9.js";
40
40
  import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-Dl6NCQql.js";
41
41
  import { t as formatHelpExamples } from "./help-format-VHofKIT0.js";
42
42
  import { t as adminUnlockCommand } from "./admin-unlock-BbRriux7.js";
@@ -47,7 +47,7 @@ import { i as CONFIGURE_WIZARD_SECTIONS, n as configureCommand, r as configureCo
47
47
  import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-CtqjzJUQ.js";
48
48
  import { n as ensureSystemdUserLingerNonInteractive } from "./systemd-linger-T7_vGBN4.js";
49
49
  import { t as loginCommand } from "./login-ByLDHO1i.js";
50
- import { n as loadAndMaybeMigrateDoctorConfig, t as doctorCommand } from "./doctor-C64ZiCRM.js";
50
+ import { n as loadAndMaybeMigrateDoctorConfig, t as doctorCommand } from "./doctor-CQGJdbYI.js";
51
51
  import { fileURLToPath } from "node:url";
52
52
  import fs from "node:fs";
53
53
  import path from "node:path";
@@ -3106,7 +3106,7 @@ function registerLoginCommand(program) {
3106
3106
  console.log(theme.muted(` user=${result.userId} org=${result.orgId}`));
3107
3107
  }
3108
3108
  if (opts.chat !== false && result.gatewayUrl && process.stdin.isTTY && process.stdout.isTTY) {
3109
- const { runTui } = await import("./tui-YYjceSsK.js").then((n) => n.n);
3109
+ const { runTui } = await import("./tui-PxB-9vcf.js").then((n) => n.n);
3110
3110
  console.log(theme.muted("\n Opening your koi chat…\n"));
3111
3111
  await runTui({
3112
3112
  url: result.gatewayUrl,
@@ -34,7 +34,7 @@ import { a as repairLaunchAgentBootstrap, i as launchAgentPlistExists, n as isLa
34
34
  import { r as isSystemdUserServiceAvailable } from "./systemd-fjt-WYE7.js";
35
35
  import { t as readLastGatewayErrorLine } from "./diagnostics-DPRvn_ky.js";
36
36
  import { t as collectChannelStatusIssues } from "./channels-status-issues-D92ZMiSY.js";
37
- import { n as doctorShellCompletion } from "./doctor-completion-DUNhJ3N0.js";
37
+ import { n as doctorShellCompletion } from "./doctor-completion-CjjQQkQg.js";
38
38
  import { n as resolveControlUiDistIndexHealth, r as resolveControlUiDistIndexPathForRoot } from "./control-ui-assets-Dcc_8tht.js";
39
39
  import { a as gatewayInstallErrorHint, d as renderSystemNodeWarning, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, p as resolveSystemNodeInfo, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-CtqjzJUQ.js";
40
40
  import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-T7_vGBN4.js";
@@ -3,7 +3,7 @@ import { r as resolveCliName, t as formatCliCommand } from "./command-format-DOY
3
3
  import { t as VERSION } from "./version-BKRSzdyx.js";
4
4
  import { t as note } from "./note-BDX6ZDm1.js";
5
5
  import { c as compareSemverStrings, s as checkUpdateStatus } from "./update-runner-BTHuBI1s.js";
6
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-BR65MWyg.js";
6
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-EZT_a2ap.js";
7
7
  import path from "node:path";
8
8
  import { spawnSync } from "node:child_process";
9
9
 
package/dist/entry.js CHANGED
@@ -247,7 +247,7 @@ if (!ensureExperimentalWarningSuppressed()) {
247
247
  applyCliProfileEnv({ profile: parsed.profile });
248
248
  process$1.argv = parsed.argv;
249
249
  }
250
- import("./run-main-DB-CAEbY.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
250
+ import("./run-main-DgUWiP3B.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
251
251
  console.error("[SKYKOI] Failed to start CLI:", error instanceof Error ? error.stack ?? error.message : error);
252
252
  process$1.exitCode = 1;
253
253
  });
@@ -94,7 +94,7 @@ import { t as resolveChannelDefaultAccountId } from "./helpers-C0u-oaDR.js";
94
94
  import "./logging-CE47aZcO.js";
95
95
  import "./note-BDX6ZDm1.js";
96
96
  import { t as WizardCancelledError } from "./prompts-D59uQQdA.js";
97
- import { c as loadKoiIdentity, d as loadKoiIdentityFromWorkspace, i as applyKoiConfig, l as pruneKoiConfig, o as findKoiEntryIndex, r as getStatusSummary, s as listKoiEntries, t as runOnboardingWizard } from "./onboarding-CPjCBd7F.js";
97
+ import { c as loadKoiIdentity, d as loadKoiIdentityFromWorkspace, i as applyKoiConfig, l as pruneKoiConfig, o as findKoiEntryIndex, r as getStatusSummary, s as listKoiEntries, t as runOnboardingWizard } from "./onboarding-HfPhiss5.js";
98
98
  import { n as installSkill } from "./onboard-skills-B59kRT5k.js";
99
99
  import "./github-copilot-auth-C5L0Qpft.js";
100
100
  import "./onboard-channels-B1X24Kc5.js";
@@ -113,19 +113,19 @@ import { p as resolveGatewayStateDir } from "./systemd-fjt-WYE7.js";
113
113
  import "./diagnostics-DPRvn_ky.js";
114
114
  import "./node-service--cl-zK26.js";
115
115
  import "./channels-status-issues-D92ZMiSY.js";
116
- import "./doctor-completion-DUNhJ3N0.js";
117
- import "./register.subclis-C5iMbY81.js";
116
+ import "./doctor-completion-CjjQQkQg.js";
117
+ import "./register.subclis-BOfFB3d9.js";
118
118
  import { a as createOutboundSendDeps$1, i as resolveKoiOutboundTarget, r as resolveKoiDeliveryPlan, t as koiCommand } from "./koi-BrZ-QvlO.js";
119
119
  import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-Dcc_8tht.js";
120
120
  import "./daemon-runtime-CtqjzJUQ.js";
121
121
  import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-DmDtfScg.js";
122
122
  import { n as discoverGatewayBeacons } from "./bonjour-discovery-BcGs4w0m.js";
123
123
  import "./ensure-local-gateway-nFYv6_lI.js";
124
- import "./completion-cli-BR65MWyg.js";
124
+ import "./completion-cli-EZT_a2ap.js";
125
125
  import "./service-audit-ESoCtKKk.js";
126
126
  import { i as shouldIncludeHook, n as loadWorkspaceHookEntries, r as resolveHookConfig } from "./hooks-status-Bh2u_o5A.js";
127
- import "./tui-YYjceSsK.js";
128
- import "./graphics-protocol-BK3QxOOc.js";
127
+ import "./tui-PxB-9vcf.js";
128
+ import "./graphics-protocol-K_Nx2CZD.js";
129
129
  import { t as buildChannelAccountSnapshot } from "./status-PJY2Jbku.js";
130
130
  import "./shared-C1BN86q0.js";
131
131
  import { a as runDaemonStop, i as runDaemonStart, n as runDaemonStatus, o as runDaemonUninstall, r as runDaemonRestart, s as runDaemonInstall } from "./daemon-cli-B1J4fZj3.js";
@@ -116,7 +116,7 @@ var RawFrameStreamer = class {
116
116
  * Emit one RGBA frame into a cell region (kitty scales to c×r cells).
117
117
  * Returns true if it wrote. `frameIndex` dedupes repeats of the same frame.
118
118
  */
119
- emit(sink, frame, region) {
119
+ emit(sink, frame, region, opts) {
120
120
  if (!TEMPFILE_OK) return false;
121
121
  if (frame.frameIndex === this.lastFrameIndex) return false;
122
122
  try {
@@ -125,7 +125,8 @@ var RawFrameStreamer = class {
125
125
  fs.writeFileSync(p, frame.data);
126
126
  const b64 = Buffer.from(p).toString("base64");
127
127
  const { col, row, cols, rows } = region;
128
- sink(`\x1b7${csiMove(col, row)}\x1b_Ga=T,f=32,s=${frame.width},v=${frame.height},t=t,i=${this.id},q=2,C=1,c=${cols},r=${rows};${b64}\x1b\\\x1b8`);
128
+ const z = opts?.z !== void 0 ? `,z=${opts.z | 0}` : "";
129
+ sink(`\x1b7${csiMove(col, row)}\x1b_Ga=T,f=32,s=${frame.width},v=${frame.height},t=t,i=${this.id},q=2,C=1,c=${cols},r=${rows}${z};${b64}\x1b\\\x1b8`);
129
130
  this.lastFrameIndex = frame.frameIndex;
130
131
  return true;
131
132
  } catch {
@@ -4,7 +4,7 @@ import "./theme-C5EwWDWE.js";
4
4
  import "./ansi-By7x1TI7.js";
5
5
  import "./boolean-D-3joTkO.js";
6
6
  import { t as isTruthyEnvValue } from "./env-ChCKTuXK.js";
7
- import { a as detectGraphicsProtocolFromEnv } from "./graphics-protocol-BK3QxOOc.js";
7
+ import { a as detectGraphicsProtocolFromEnv } from "./graphics-protocol-K_Nx2CZD.js";
8
8
  import fs from "node:fs";
9
9
  import path from "node:path";
10
10
  import os from "node:os";
package/dist/index.js CHANGED
@@ -80,11 +80,11 @@ import { t as isMainModule } from "./is-main-D5NmXew9.js";
80
80
  import { t as ensureSKYKOICliOnPath } from "./path-env-C0IwmyXV.js";
81
81
  import { t as assertSupportedRuntime } from "./runtime-guard-DQEzrjPX.js";
82
82
  import "./ports-CVcXIoyn.js";
83
- import "./config-guard-n-QrH3kl.js";
83
+ import "./config-guard-fJKpR_SZ.js";
84
84
  import "./logging-CE47aZcO.js";
85
85
  import "./note-BDX6ZDm1.js";
86
86
  import "./clack-prompter-BbdTlNx8.js";
87
- import "./onboarding-CPjCBd7F.js";
87
+ import "./onboarding-HfPhiss5.js";
88
88
  import "./onboard-skills-B59kRT5k.js";
89
89
  import "./github-copilot-auth-C5L0Qpft.js";
90
90
  import "./onboard-channels-B1X24Kc5.js";
@@ -103,8 +103,8 @@ import "./systemd-fjt-WYE7.js";
103
103
  import "./diagnostics-DPRvn_ky.js";
104
104
  import "./node-service--cl-zK26.js";
105
105
  import "./channels-status-issues-D92ZMiSY.js";
106
- import "./doctor-completion-DUNhJ3N0.js";
107
- import "./register.subclis-C5iMbY81.js";
106
+ import "./doctor-completion-CjjQQkQg.js";
107
+ import "./register.subclis-BOfFB3d9.js";
108
108
  import "./gateway-rpc-Dl6NCQql.js";
109
109
  import "./help-format-VHofKIT0.js";
110
110
  import "./admin-unlock-BbRriux7.js";
@@ -120,14 +120,14 @@ import "./ensure-local-gateway-nFYv6_lI.js";
120
120
  import "./channel-auth-f9Rst6Fv.js";
121
121
  import "./login-ByLDHO1i.js";
122
122
  import "./auth-health-DydWZ4Iy.js";
123
- import "./doctor-C64ZiCRM.js";
124
- import "./completion-cli-BR65MWyg.js";
123
+ import "./doctor-CQGJdbYI.js";
124
+ import "./completion-cli-EZT_a2ap.js";
125
125
  import "./service-audit-ESoCtKKk.js";
126
126
  import "./hooks-status-Bh2u_o5A.js";
127
- import "./tui-YYjceSsK.js";
128
- import "./graphics-protocol-BK3QxOOc.js";
127
+ import "./tui-PxB-9vcf.js";
128
+ import "./graphics-protocol-K_Nx2CZD.js";
129
129
  import "./channel-options-Cx5O8Vrm.js";
130
- import { n as buildProgram } from "./program-CfYKfdNq.js";
130
+ import { n as buildProgram } from "./program-BBeg0h5_.js";
131
131
  import process from "node:process";
132
132
  import { fileURLToPath } from "node:url";
133
133
 
@@ -38,12 +38,12 @@ import { t as readLastGatewayErrorLine } from "./diagnostics-DPRvn_ky.js";
38
38
  import { t as resolveNodeService } from "./node-service--cl-zK26.js";
39
39
  import { t as collectChannelStatusIssues } from "./channels-status-issues-D92ZMiSY.js";
40
40
  import { i as redactSecrets, n as formatDuration$1, r as formatGatewayAuthUsed, t as formatAge$1 } from "./format-lvtLJpBH.js";
41
- import { a as formatUpdateOneLiner, i as formatUpdateAvailableHint, o as getUpdateCheckResult, r as ensureCompletionCacheExists, s as resolveUpdateAvailability, t as checkShellCompletionStatus } from "./doctor-completion-DUNhJ3N0.js";
41
+ import { a as formatUpdateOneLiner, i as formatUpdateAvailableHint, o as getUpdateCheckResult, r as ensureCompletionCacheExists, s as resolveUpdateAvailability, t as checkShellCompletionStatus } from "./doctor-completion-CjjQQkQg.js";
42
42
  import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-Dcc_8tht.js";
43
43
  import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-CtqjzJUQ.js";
44
- import { r as installCompletion } from "./completion-cli-BR65MWyg.js";
44
+ import { r as installCompletion } from "./completion-cli-EZT_a2ap.js";
45
45
  import { t as buildWorkspaceHookStatus } from "./hooks-status-Bh2u_o5A.js";
46
- import { t as runTui } from "./tui-YYjceSsK.js";
46
+ import { t as runTui } from "./tui-PxB-9vcf.js";
47
47
  import fs from "node:fs";
48
48
  import path from "node:path";
49
49
  import os from "node:os";
@@ -1,5 +1,5 @@
1
1
  import { a as __toCommonJS, i as __require, o as __toESM, r as __exportAll, t as __commonJSMin } from "./chunk-D_gEzPfs.js";
2
- import { a as require_jws, i as require_dist_cjs$1, n as LRUCache$1, o as require_safe_buffer, r as getOAuthProviders, s as getEnvApiKey } from "./pi-model-discovery-lynj0LAO.js";
2
+ import { a as require_jws, i as require_dist_cjs$1, n as LRUCache$1, o as require_safe_buffer, r as getOAuthProviders, s as getEnvApiKey } from "./pi-model-discovery-ClImJtLC.js";
3
3
  import { t as require_dist_cjs$2 } from "./dist-cjs-B9iGzXDA.js";
4
4
  import { C as require_dist_cjs$3, E as init_dist_es$1, M as require_dist_cjs$13, N as require_dist_cjs$12, T as dist_es_exports$1, a as require_dist_cjs$5, c as require_dist_cjs$17, d as require_dist_cjs$15, f as dist_es_exports, h as protocols_exports, i as require_dist_cjs$7, j as require_dist_cjs$14, l as require_dist_cjs$16, m as init_protocols, n as require_dist_cjs$10, o as require_dist_cjs$8, p as init_dist_es, r as require_dist_cjs$9, s as require_dist_cjs$11, t as require_dist_cjs$18, u as require_dist_cjs$6, w as require_dist_cjs$4 } from "./dist-cjs-Cpdu8jQP.js";
5
5
  import { C as schema_exports, N as require_dist_cjs$21, P as require_dist_cjs$19, S as init_schema, t as require_dist_cjs$20 } from "./dist-cjs-BVSr8ctW.js";
@@ -21,7 +21,7 @@ import chalk, { Chalk } from "chalk";
21
21
  import fs, { constants, createWriteStream, existsSync, promises, statSync } from "node:fs";
22
22
  import path, { join } from "node:path";
23
23
  import { Logger } from "tslog";
24
- import JSON5 from "json5";
24
+ import json5 from "json5";
25
25
  import os, { homedir, tmpdir } from "node:os";
26
26
  import { promisify } from "node:util";
27
27
  import fs$1 from "node:fs/promises";
@@ -42,7 +42,7 @@ import { mkdir, readFile, stat as stat$1, unlink, writeFile } from "fs/promises"
42
42
  import { Readable as Readable$1 } from "node:stream";
43
43
  import { pipeline as pipeline$1 } from "node:stream/promises";
44
44
  import WebSocket, { WebSocket as WebSocket$1 } from "ws";
45
- import AjvModule from "ajv";
45
+ import AjvPkg from "ajv";
46
46
  import lockfile from "proper-lockfile";
47
47
  import { URL as URL$1 } from "url";
48
48
  import "yaml";
@@ -2263,7 +2263,7 @@ function readLoggingConfig() {
2263
2263
  try {
2264
2264
  if (!fs.existsSync(configPath)) return;
2265
2265
  const raw = fs.readFileSync(configPath, "utf-8");
2266
- const logging = JSON5.parse(raw)?.logging;
2266
+ const logging = json5.parse(raw)?.logging;
2267
2267
  if (!logging || typeof logging !== "object" || Array.isArray(logging)) return;
2268
2268
  return logging;
2269
2269
  } catch {
@@ -19093,7 +19093,7 @@ var IncludeProcessor = class IncludeProcessor {
19093
19093
  };
19094
19094
  const defaultResolver = {
19095
19095
  readFile: (p) => fs.readFileSync(p, "utf-8"),
19096
- parseJson: (raw) => JSON5.parse(raw)
19096
+ parseJson: (raw) => json5.parse(raw)
19097
19097
  };
19098
19098
  /**
19099
19099
  * Resolves all $include directives in a parsed config object.
@@ -20603,7 +20603,7 @@ function loadPluginManifestRegistry(params) {
20603
20603
 
20604
20604
  //#endregion
20605
20605
  //#region src/plugins/schema-validator.ts
20606
- const ajv$1 = new AjvModule({
20606
+ const ajv$1 = new AjvPkg({
20607
20607
  allErrors: true,
20608
20608
  strict: false,
20609
20609
  removeAdditional: false
@@ -21791,18 +21791,18 @@ function resolveConfigPathForDeps(deps) {
21791
21791
  function normalizeDeps(overrides = {}) {
21792
21792
  return {
21793
21793
  fs: overrides.fs ?? fs,
21794
- json5: overrides.json5 ?? JSON5,
21794
+ json5: overrides.json5 ?? json5,
21795
21795
  env: overrides.env ?? process.env,
21796
21796
  homedir: overrides.homedir ?? os.homedir,
21797
21797
  configPath: overrides.configPath ?? "",
21798
21798
  logger: overrides.logger ?? console
21799
21799
  };
21800
21800
  }
21801
- function parseConfigJson5(raw, json5 = JSON5) {
21801
+ function parseConfigJson5(raw, json5$1 = json5) {
21802
21802
  try {
21803
21803
  return {
21804
21804
  ok: true,
21805
- parsed: json5.parse(raw)
21805
+ parsed: json5$1.parse(raw)
21806
21806
  };
21807
21807
  } catch (err) {
21808
21808
  return {
@@ -22316,7 +22316,7 @@ function loadSessionStore(storePath, opts = {}) {
22316
22316
  let mtimeMs = getFileMtimeMs(storePath);
22317
22317
  try {
22318
22318
  const raw = fs.readFileSync(storePath, "utf-8");
22319
- const parsed = JSON5.parse(raw);
22319
+ const parsed = json5.parse(raw);
22320
22320
  if (isSessionStoreRecord(parsed)) store = parsed;
22321
22321
  mtimeMs = getFileMtimeMs(storePath) ?? mtimeMs;
22322
22322
  } catch {}
@@ -48250,7 +48250,7 @@ const PROTOCOL_VERSION = 3;
48250
48250
 
48251
48251
  //#endregion
48252
48252
  //#region src/gateway/protocol/index.ts
48253
- const ajv = new AjvModule({
48253
+ const ajv = new AjvPkg({
48254
48254
  allErrors: true,
48255
48255
  strict: false,
48256
48256
  removeAdditional: false
@@ -68123,7 +68123,7 @@ function enqueueSystemEvent(text, options) {
68123
68123
  const MODEL_CACHE = /* @__PURE__ */ new Map();
68124
68124
  (async () => {
68125
68125
  try {
68126
- const { discoverAuthStorage, discoverModels } = await import("./pi-model-discovery-lynj0LAO.js").then((n) => n.t);
68126
+ const { discoverAuthStorage, discoverModels } = await import("./pi-model-discovery-ClImJtLC.js").then((n) => n.t);
68127
68127
  await ensureSKYKOIModelsJson(loadConfig());
68128
68128
  const koiDir = resolveSKYKOIKoiDir();
68129
68129
  const models = discoverModels(discoverAuthStorage(koiDir), koiDir).getAll();
@@ -34,7 +34,7 @@ import { access, mkdir, readFile, stat as stat$1, writeFile } from "fs/promises"
34
34
  import Stream, { Readable as Readable$1 } from "node:stream";
35
35
  import { finished } from "node:stream/promises";
36
36
  import * as NodeWs from "ws";
37
- import AjvModule from "ajv";
37
+ import AjvPkg from "ajv";
38
38
  import lockfile from "proper-lockfile";
39
39
  import { fileURLToPath as fileURLToPath$1 } from "url";
40
40
  import { TypeCompiler } from "@sinclair/typebox/compiler";
@@ -59699,7 +59699,7 @@ var require_dist$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
59699
59699
  //#endregion
59700
59700
  //#region node_modules/.pnpm/@mariozechner+pi-ai@0.52.8_patch_hash=f41b8429247a07c256a366fc8eddb44710b4e74212f25ffaf_aba27699dbfe3dddaa7a3984ad46615e/node_modules/@mariozechner/pi-ai/dist/utils/validation.js
59701
59701
  var import_dist$1 = /* @__PURE__ */ __toESM(require_dist$1(), 1);
59702
- const Ajv$1 = AjvModule.default || AjvModule;
59702
+ const Ajv$1 = AjvPkg.default || AjvPkg;
59703
59703
  const addFormats = import_dist$1.default.default || import_dist$1.default;
59704
59704
  const isBrowserExtension = typeof globalThis !== "undefined" && globalThis.chrome?.runtime?.id !== void 0;
59705
59705
  let ajv = null;
@@ -174026,7 +174026,7 @@ var AuthStorage = class {
174026
174026
  /**
174027
174027
  * Model registry - manages built-in and custom models, provides API key resolution.
174028
174028
  */
174029
- const Ajv = AjvModule.default || AjvModule;
174029
+ const Ajv = AjvPkg.default || AjvPkg;
174030
174030
  const OpenRouterRoutingSchema = Type.Object({
174031
174031
  only: Type.Optional(Type.Array(Type.String())),
174032
174032
  order: Type.Optional(Type.Array(Type.String()))
@@ -5,10 +5,10 @@ import { n as replaceCliName, r as resolveCliName } from "./command-format-DOYW_
5
5
  import { t as isTruthyEnvValue } from "./env-ChCKTuXK.js";
6
6
  import { t as VERSION } from "./version-BKRSzdyx.js";
7
7
  import { t as formatDocsLink } from "./links-CFNtV6AI.js";
8
- import { i as registerProgramCommands, n as PLUGIN_CLI_COMMANDS, t as ensureConfigReady } from "./config-guard-n-QrH3kl.js";
9
- import { a as getCommandPath, d as hasHelpOrVersion, l as getVerboseFlag } from "./register.subclis-C5iMbY81.js";
8
+ import { i as registerProgramCommands, n as PLUGIN_CLI_COMMANDS, t as ensureConfigReady } from "./config-guard-fJKpR_SZ.js";
9
+ import { a as getCommandPath, d as hasHelpOrVersion, l as getVerboseFlag } from "./register.subclis-BOfFB3d9.js";
10
10
  import { t as ensurePluginRegistryLoaded } from "./plugin-registry-Czs3kTVB.js";
11
- import { a as hasEmittedCliBanner, i as formatCliBannerLine, r as emitCliBanner } from "./tui-YYjceSsK.js";
11
+ import { a as hasEmittedCliBanner, i as formatCliBannerLine, r as emitCliBanner } from "./tui-PxB-9vcf.js";
12
12
  import { n as resolveCliChannelOptions } from "./channel-options-Cx5O8Vrm.js";
13
13
  import { Command } from "commander";
14
14
 
@@ -124,7 +124,7 @@ const entries = [
124
124
  name: "gateway",
125
125
  description: "Gateway control",
126
126
  register: async (program) => {
127
- (await import("./gateway-cli-BtiEDdNq.js")).registerGatewayCli(program);
127
+ (await import("./gateway-cli-BYCYD6w4.js")).registerGatewayCli(program);
128
128
  }
129
129
  },
130
130
  {
@@ -194,7 +194,7 @@ const entries = [
194
194
  name: "tui",
195
195
  description: "Terminal UI",
196
196
  register: async (program) => {
197
- (await import("./tui-cli-Ceeqn9FK.js")).registerTuiCli(program);
197
+ (await import("./tui-cli-BXUAwzXh.js")).registerTuiCli(program);
198
198
  }
199
199
  },
200
200
  {
@@ -310,14 +310,14 @@ const entries = [
310
310
  name: "update",
311
311
  description: "CLI update helpers",
312
312
  register: async (program) => {
313
- (await import("./update-cli-CiHZKuyG.js")).registerUpdateCli(program);
313
+ (await import("./update-cli-8CGaId7j.js")).registerUpdateCli(program);
314
314
  }
315
315
  },
316
316
  {
317
317
  name: "completion",
318
318
  description: "Generate shell completion script",
319
319
  register: async (program) => {
320
- (await import("./completion-cli-BR65MWyg.js").then((n) => n.n)).registerCompletionCli(program);
320
+ (await import("./completion-cli-EZT_a2ap.js").then((n) => n.n)).registerCompletionCli(program);
321
321
  }
322
322
  }
323
323
  ];
@@ -77,11 +77,11 @@ import "./deps-D0kF1Dtj.js";
77
77
  import "./tailscale-B0Nz70aN.js";
78
78
  import { t as ensureSKYKOICliOnPath } from "./path-env-C0IwmyXV.js";
79
79
  import { t as assertSupportedRuntime } from "./runtime-guard-DQEzrjPX.js";
80
- import { n as PLUGIN_CLI_COMMANDS, r as findRoutedCommand, t as ensureConfigReady } from "./config-guard-n-QrH3kl.js";
80
+ import { n as PLUGIN_CLI_COMMANDS, r as findRoutedCommand, t as ensureConfigReady } from "./config-guard-fJKpR_SZ.js";
81
81
  import "./logging-CE47aZcO.js";
82
82
  import "./note-BDX6ZDm1.js";
83
83
  import "./clack-prompter-BbdTlNx8.js";
84
- import "./onboarding-CPjCBd7F.js";
84
+ import "./onboarding-HfPhiss5.js";
85
85
  import "./onboard-skills-B59kRT5k.js";
86
86
  import "./github-copilot-auth-C5L0Qpft.js";
87
87
  import "./onboard-channels-B1X24Kc5.js";
@@ -100,8 +100,8 @@ import "./systemd-fjt-WYE7.js";
100
100
  import "./diagnostics-DPRvn_ky.js";
101
101
  import "./node-service--cl-zK26.js";
102
102
  import "./channels-status-issues-D92ZMiSY.js";
103
- import "./doctor-completion-DUNhJ3N0.js";
104
- import { a as getCommandPath, c as getPrimaryCommand, d as hasHelpOrVersion } from "./register.subclis-C5iMbY81.js";
103
+ import "./doctor-completion-CjjQQkQg.js";
104
+ import { a as getCommandPath, c as getPrimaryCommand, d as hasHelpOrVersion } from "./register.subclis-BOfFB3d9.js";
105
105
  import "./gateway-rpc-Dl6NCQql.js";
106
106
  import "./help-format-VHofKIT0.js";
107
107
  import "./admin-unlock-BbRriux7.js";
@@ -117,12 +117,12 @@ import "./ensure-local-gateway-nFYv6_lI.js";
117
117
  import "./channel-auth-f9Rst6Fv.js";
118
118
  import "./login-ByLDHO1i.js";
119
119
  import "./auth-health-DydWZ4Iy.js";
120
- import "./doctor-C64ZiCRM.js";
121
- import "./completion-cli-BR65MWyg.js";
120
+ import "./doctor-CQGJdbYI.js";
121
+ import "./completion-cli-EZT_a2ap.js";
122
122
  import "./service-audit-ESoCtKKk.js";
123
123
  import "./hooks-status-Bh2u_o5A.js";
124
- import { r as emitCliBanner } from "./tui-YYjceSsK.js";
125
- import "./graphics-protocol-BK3QxOOc.js";
124
+ import { r as emitCliBanner } from "./tui-PxB-9vcf.js";
125
+ import "./graphics-protocol-K_Nx2CZD.js";
126
126
  import process$1 from "node:process";
127
127
  import { fileURLToPath } from "node:url";
128
128
  import fs from "node:fs";
@@ -176,7 +176,7 @@ async function runCli(argv = process$1.argv) {
176
176
  assertSupportedRuntime();
177
177
  if (await tryRouteCli(normalizedArgv)) return;
178
178
  enableConsoleCapture();
179
- const { buildProgram } = await import("./program-CfYKfdNq.js").then((n) => n.t);
179
+ const { buildProgram } = await import("./program-BBeg0h5_.js").then((n) => n.t);
180
180
  const program = buildProgram();
181
181
  installUnhandledRejectionHandler();
182
182
  process$1.on("uncaughtException", (error) => {
@@ -206,14 +206,14 @@ async function runCli(argv = process$1.argv) {
206
206
  }
207
207
  } catch {}
208
208
  if (defaultCommand === "tui") try {
209
- const { maybeRelaunchInGraphicsTerminal } = await import("./graphics-terminal-setup-DIkhgwxn.js");
209
+ const { maybeRelaunchInGraphicsTerminal } = await import("./graphics-terminal-setup-cA9wTDpp.js");
210
210
  if (await maybeRelaunchInGraphicsTerminal()) return;
211
211
  } catch {}
212
212
  parseArgv = [...parseArgv, defaultCommand];
213
213
  }
214
214
  const primary = getPrimaryCommand(parseArgv);
215
215
  if (primary) {
216
- const { registerSubCliByName } = await import("./register.subclis-C5iMbY81.js").then((n) => n.i);
216
+ const { registerSubCliByName } = await import("./register.subclis-BOfFB3d9.js").then((n) => n.i);
217
217
  await registerSubCliByName(program, primary);
218
218
  }
219
219
  if (!!primary && PLUGIN_CLI_COMMANDS.has(primary)) {
@@ -20,7 +20,7 @@ import { n as formatAge, r as resolveCommitHash } from "./channel-summary-576jRi
20
20
  import { i as resolveModelCostConfig, n as formatTokenCount, r as formatUsd, t as estimateUsageCost } from "./usage-format-EdDmn0JB.js";
21
21
  import { n as readSkykoiEnvVar } from "./dotenv-Y3WsO11w.js";
22
22
  import { t as ensureLocalGatewayRunning } from "./ensure-local-gateway-nFYv6_lI.js";
23
- import { a as detectGraphicsProtocolFromEnv, c as hasTempFileSupport, d as setProbedProtocol, f as setTempFileSupport, i as detectGraphicsProtocol, l as kittyDeleteAll, n as RawFrameStreamer, o as extractProbeResponses, r as buildGraphicsProbeQuery, s as getCellPixels, t as GraphicsMedia, u as setCellPixels } from "./graphics-protocol-BK3QxOOc.js";
23
+ import { a as detectGraphicsProtocolFromEnv, c as hasTempFileSupport, d as setProbedProtocol, f as setTempFileSupport, i as detectGraphicsProtocol, l as kittyDeleteAll, n as RawFrameStreamer, o as extractProbeResponses, r as buildGraphicsProbeQuery, s as getCellPixels, t as GraphicsMedia, u as setCellPixels } from "./graphics-protocol-K_Nx2CZD.js";
24
24
  import chalk from "chalk";
25
25
  import fs, { existsSync, mkdtempSync, readFileSync, realpathSync, rmSync, watch, writeFileSync } from "node:fs";
26
26
  import path, { dirname, join } from "node:path";
@@ -7653,7 +7653,8 @@ function createSpecScene(spec) {
7653
7653
  lastT = t;
7654
7654
  ensureCa();
7655
7655
  feedCa();
7656
- for (let y = 0; y < grid.h; y++) for (let x = 0; x < grid.w; x++) grid.set(x, y, " ", -1, bg);
7656
+ const fillBg = caActive() && caSourceLayer < 0 ? -1 : bg;
7657
+ for (let y = 0; y < grid.h; y++) for (let x = 0; x < grid.w; x++) grid.set(x, y, " ", -1, fillBg);
7657
7658
  for (const [i, layer] of layers.entries()) {
7658
7659
  const type = String(layer.type ?? "");
7659
7660
  try {
@@ -7736,12 +7737,13 @@ function createSpecScene(spec) {
7736
7737
  const frame = caFrame;
7737
7738
  if (frame) {
7738
7739
  const rows = Math.max(1, lastH - CANVAS_CHAT_RESERVE);
7740
+ const z = caSourceLayer >= 0 ? void 0 : -1;
7739
7741
  if (caStreamer.emit(sink, frame, {
7740
7742
  col: 0,
7741
7743
  row: 0,
7742
7744
  cols: lastW,
7743
7745
  rows
7744
- })) any = true;
7746
+ }, { z })) any = true;
7745
7747
  }
7746
7748
  ca.step(lastT, SIM_DT).then((f) => {
7747
7749
  if (f) caFrame = f;
@@ -8186,6 +8188,51 @@ function buildScene(input) {
8186
8188
  return null;
8187
8189
  }
8188
8190
 
8191
+ //#endregion
8192
+ //#region src/tui/canvas/presets.ts
8193
+ /**
8194
+ * @module tui/canvas/presets
8195
+ *
8196
+ * Named canvas presets: the user (or the koi) shapes a screen they like —
8197
+ * scene spec + Living-Canvas intent — saves it by name, and it's theirs
8198
+ * forever: `/canvas save dev`, `/canvas dev`, `/canvas presets`. Stored in
8199
+ * the state dir like every other durable TUI preference, so the agent always
8200
+ * knows the user's saved surfaces and can restore or evolve them on ask.
8201
+ */
8202
+ function presetsPath() {
8203
+ return path.join(resolveStateDir(), "canvas-presets.json");
8204
+ }
8205
+ function loadPresets() {
8206
+ try {
8207
+ return JSON.parse(fs.readFileSync(presetsPath(), "utf8"));
8208
+ } catch {
8209
+ return {};
8210
+ }
8211
+ }
8212
+ function savePreset(name, preset) {
8213
+ const all = loadPresets();
8214
+ all[normalizeName(name)] = preset;
8215
+ fs.mkdirSync(path.dirname(presetsPath()), { recursive: true });
8216
+ fs.writeFileSync(presetsPath(), JSON.stringify(all, null, 2));
8217
+ }
8218
+ function getPreset(name) {
8219
+ return loadPresets()[normalizeName(name)] ?? null;
8220
+ }
8221
+ function deletePreset(name) {
8222
+ const all = loadPresets();
8223
+ const key = normalizeName(name);
8224
+ if (!(key in all)) return false;
8225
+ delete all[key];
8226
+ fs.writeFileSync(presetsPath(), JSON.stringify(all, null, 2));
8227
+ return true;
8228
+ }
8229
+ function listPresets() {
8230
+ return Object.keys(loadPresets()).sort();
8231
+ }
8232
+ function normalizeName(name) {
8233
+ return name.trim().toLowerCase().replace(/\s+/g, "-").slice(0, 40);
8234
+ }
8235
+
8189
8236
  //#endregion
8190
8237
  //#region src/tui/canvas/screen-sync.ts
8191
8238
  /**
@@ -9736,6 +9783,44 @@ async function runTui(opts) {
9736
9783
  chatLog.addSystem(value === "on" ? "canvas default on — new sessions boot into the visual terminal" : "canvas default off — new sessions boot into the classic chat");
9737
9784
  return true;
9738
9785
  }
9786
+ if (arg.startsWith("save ")) {
9787
+ const pname = normalizeName(arg.slice(5));
9788
+ if (!pname) {
9789
+ chatLog.addSystem("usage: /canvas save <name>");
9790
+ return true;
9791
+ }
9792
+ if (!lastVisualSpec) {
9793
+ chatLog.addSystem("nothing on screen to save yet — talk to koi first");
9794
+ return true;
9795
+ }
9796
+ savePreset(pname, {
9797
+ spec: lastVisualSpec,
9798
+ intent: caDirector.getLastIntent(),
9799
+ savedAt: (/* @__PURE__ */ new Date()).toISOString()
9800
+ });
9801
+ chatLog.addSystem(`saved canvas preset "${pname}" — load with /canvas ${pname}`);
9802
+ return true;
9803
+ }
9804
+ if (arg === "presets" || arg === "list") {
9805
+ const names = listPresets();
9806
+ chatLog.addSystem(names.length > 0 ? `canvas presets: ${names.join(", ")} — load with /canvas <name>` : "no canvas presets yet — save one with /canvas save <name>");
9807
+ return true;
9808
+ }
9809
+ if (arg.startsWith("delete ")) {
9810
+ const pname = normalizeName(arg.slice(7));
9811
+ chatLog.addSystem(deletePreset(pname) ? `deleted preset "${pname}"` : `no preset named "${pname}"`);
9812
+ return true;
9813
+ }
9814
+ const preset = arg ? getPreset(arg) : null;
9815
+ if (preset) {
9816
+ const builtPreset = buildScene({ spec: preset.spec });
9817
+ if (builtPreset) {
9818
+ lastVisualSpec = preset.spec;
9819
+ canvasMode.enter(builtPreset.scene, `preset:${normalizeName(arg)}`);
9820
+ if (preset.intent) caDirector.apply(preset.intent);
9821
+ return true;
9822
+ }
9823
+ }
9739
9824
  const built = buildScene({ name: arg || "pond" });
9740
9825
  if (!built) return false;
9741
9826
  canvasMode.enter(built.scene, built.label);
@@ -52,8 +52,8 @@ import "./systemd-fjt-WYE7.js";
52
52
  import "./diagnostics-DPRvn_ky.js";
53
53
  import "./daemon-runtime-CtqjzJUQ.js";
54
54
  import "./ensure-local-gateway-nFYv6_lI.js";
55
- import { t as runTui } from "./tui-YYjceSsK.js";
56
- import "./graphics-protocol-BK3QxOOc.js";
55
+ import { t as runTui } from "./tui-PxB-9vcf.js";
56
+ import "./graphics-protocol-K_Nx2CZD.js";
57
57
 
58
58
  //#region src/cli/tui-cli.ts
59
59
  function registerTuiCli(program) {
@@ -93,15 +93,15 @@ import "./service-CW9nUfWU.js";
93
93
  import "./systemd-fjt-WYE7.js";
94
94
  import "./diagnostics-DPRvn_ky.js";
95
95
  import "./channels-status-issues-D92ZMiSY.js";
96
- import { a as formatUpdateOneLiner, i as formatUpdateAvailableHint, r as ensureCompletionCacheExists, s as resolveUpdateAvailability, t as checkShellCompletionStatus } from "./doctor-completion-DUNhJ3N0.js";
97
- import "./register.subclis-C5iMbY81.js";
96
+ import { a as formatUpdateOneLiner, i as formatUpdateAvailableHint, r as ensureCompletionCacheExists, s as resolveUpdateAvailability, t as checkShellCompletionStatus } from "./doctor-completion-CjjQQkQg.js";
97
+ import "./register.subclis-BOfFB3d9.js";
98
98
  import { t as formatHelpExamples } from "./help-format-VHofKIT0.js";
99
99
  import "./control-ui-assets-Dcc_8tht.js";
100
100
  import "./daemon-runtime-CtqjzJUQ.js";
101
101
  import "./systemd-linger-T7_vGBN4.js";
102
102
  import "./auth-health-DydWZ4Iy.js";
103
- import { t as doctorCommand } from "./doctor-C64ZiCRM.js";
104
- import { r as installCompletion } from "./completion-cli-BR65MWyg.js";
103
+ import { t as doctorCommand } from "./doctor-CQGJdbYI.js";
104
+ import { r as installCompletion } from "./completion-cli-EZT_a2ap.js";
105
105
  import "./service-audit-ESoCtKKk.js";
106
106
  import "./shared-C1BN86q0.js";
107
107
  import { r as runDaemonRestart } from "./daemon-cli-B1J4fZj3.js";
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/bluebubbles",
3
- "version": "2026.3.394",
3
+ "version": "2026.3.395",
4
4
  "description": "SKYKOI BlueBubbles channel plugin",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/copilot-proxy",
3
- "version": "2026.3.394",
3
+ "version": "2026.3.395",
4
4
  "description": "SKYKOI Copilot Proxy provider plugin",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/diagnostics-otel",
3
- "version": "2026.3.394",
3
+ "version": "2026.3.395",
4
4
  "description": "SKYKOI diagnostics OpenTelemetry exporter",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/discord",
3
- "version": "2026.3.394",
3
+ "version": "2026.3.395",
4
4
  "description": "SKYKOI Discord channel plugin",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/feishu",
3
- "version": "2026.3.394",
3
+ "version": "2026.3.395",
4
4
  "description": "SKYKOI Feishu/Lark channel plugin (community maintained by @m1heng)",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/google-antigravity-auth",
3
- "version": "2026.3.394",
3
+ "version": "2026.3.395",
4
4
  "description": "SKYKOI Google Antigravity OAuth provider plugin",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/google-gemini-cli-auth",
3
- "version": "2026.3.394",
3
+ "version": "2026.3.395",
4
4
  "description": "SKYKOI Gemini CLI OAuth provider plugin",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/googlechat",
3
- "version": "2026.3.394",
3
+ "version": "2026.3.395",
4
4
  "description": "SKYKOI Google Chat channel plugin",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/imessage",
3
- "version": "2026.3.394",
3
+ "version": "2026.3.395",
4
4
  "description": "SKYKOI iMessage channel plugin",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/line",
3
- "version": "2026.3.394",
3
+ "version": "2026.3.395",
4
4
  "description": "SKYKOI LINE channel plugin",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/llm-task",
3
- "version": "2026.3.394",
3
+ "version": "2026.3.395",
4
4
  "description": "SKYKOI JSON-only LLM task plugin",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/lobster",
3
- "version": "2026.3.394",
3
+ "version": "2026.3.395",
4
4
  "description": "Lobster workflow tool plugin (typed pipelines + resumable approvals)",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026.3.395
4
+
5
+ ### Changes
6
+ - Version alignment with core SKYKOI release numbers.
7
+
3
8
  ## 2026.3.394
4
9
 
5
10
  ### Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/matrix",
3
- "version": "2026.3.394",
3
+ "version": "2026.3.395",
4
4
  "description": "SKYKOI Matrix channel plugin",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/mattermost",
3
- "version": "2026.3.394",
3
+ "version": "2026.3.395",
4
4
  "description": "SKYKOI Mattermost channel plugin",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/memory-core",
3
- "version": "2026.3.394",
3
+ "version": "2026.3.395",
4
4
  "description": "SKYKOI core memory search plugin",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/memory-lancedb",
3
- "version": "2026.3.394",
3
+ "version": "2026.3.395",
4
4
  "description": "SKYKOI LanceDB-backed long-term memory plugin with auto-recall/capture",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/minimax-portal-auth",
3
- "version": "2026.3.394",
3
+ "version": "2026.3.395",
4
4
  "description": "SKYKOI MiniMax Portal OAuth provider plugin",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026.3.395
4
+
5
+ ### Changes
6
+ - Version alignment with core SKYKOI release numbers.
7
+
3
8
  ## 2026.3.394
4
9
 
5
10
  ### Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/msteams",
3
- "version": "2026.3.394",
3
+ "version": "2026.3.395",
4
4
  "description": "SKYKOI Microsoft Teams channel plugin",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/nextcloud-talk",
3
- "version": "2026.3.394",
3
+ "version": "2026.3.395",
4
4
  "description": "SKYKOI Nextcloud Talk channel plugin",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026.3.395
4
+
5
+ ### Changes
6
+ - Version alignment with core SKYKOI release numbers.
7
+
3
8
  ## 2026.3.394
4
9
 
5
10
  ### Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/nostr",
3
- "version": "2026.3.394",
3
+ "version": "2026.3.395",
4
4
  "description": "SKYKOI Nostr channel plugin for NIP-04 encrypted DMs",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/open-prose",
3
- "version": "2026.3.394",
3
+ "version": "2026.3.395",
4
4
  "description": "OpenProse VM skill pack plugin (slash command + telemetry).",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/signal",
3
- "version": "2026.3.394",
3
+ "version": "2026.3.395",
4
4
  "description": "SKYKOI Signal channel plugin",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/slack",
3
- "version": "2026.3.394",
3
+ "version": "2026.3.395",
4
4
  "description": "SKYKOI Slack channel plugin",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/telegram",
3
- "version": "2026.3.394",
3
+ "version": "2026.3.395",
4
4
  "description": "SKYKOI Telegram channel plugin",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/tlon",
3
- "version": "2026.3.394",
3
+ "version": "2026.3.395",
4
4
  "description": "SKYKOI Tlon/Urbit channel plugin",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026.3.395
4
+
5
+ ### Changes
6
+ - Version alignment with core SKYKOI release numbers.
7
+
3
8
  ## 2026.3.394
4
9
 
5
10
  ### Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/twitch",
3
- "version": "2026.3.394",
3
+ "version": "2026.3.395",
4
4
  "description": "SKYKOI Twitch channel plugin",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026.3.395
4
+
5
+ ### Changes
6
+ - Version alignment with core SKYKOI release numbers.
7
+
3
8
  ## 2026.3.394
4
9
 
5
10
  ### Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/voice-call",
3
- "version": "2026.3.394",
3
+ "version": "2026.3.395",
4
4
  "description": "SKYKOI voice-call plugin",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/whatsapp",
3
- "version": "2026.3.394",
3
+ "version": "2026.3.395",
4
4
  "description": "SKYKOI WhatsApp channel plugin",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026.3.395
4
+
5
+ ### Changes
6
+ - Version alignment with core SKYKOI release numbers.
7
+
3
8
  ## 2026.3.394
4
9
 
5
10
  ### Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/zalo",
3
- "version": "2026.3.394",
3
+ "version": "2026.3.395",
4
4
  "description": "SKYKOI Zalo channel plugin",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026.3.395
4
+
5
+ ### Changes
6
+ - Version alignment with core SKYKOI release numbers.
7
+
3
8
  ## 2026.3.394
4
9
 
5
10
  ### Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/zalouser",
3
- "version": "2026.3.394",
3
+ "version": "2026.3.395",
4
4
  "description": "SKYKOI Zalo Personal Account plugin via zca-cli",
5
5
  "type": "module",
6
6
  "dependencies": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skykoi",
3
- "version": "2026.3.394",
3
+ "version": "2026.3.395",
4
4
  "description": "SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.",
5
5
  "keywords": [
6
6
  "cli",