skykoi 2026.3.146 → 2026.3.148

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.
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2026.3.146",
3
- "commit": "aad2d40cecd106bb6dcdc13cd28f197a50ca45dc",
4
- "builtAt": "2026-04-29T08:53:12.873Z"
2
+ "version": "2026.3.148",
3
+ "commit": "e074580a4d08d2a3c54e2cffe242035db181aab3",
4
+ "builtAt": "2026-04-29T09:02:17.842Z"
5
5
  }
@@ -1 +1 @@
1
- 330d4d0d185bb7ff3d920e0dfa515a99c46db095cdd554306eacbfa456ef0137
1
+ 271d87b96f62586638105e23a92f0cc288ae27a5f4ee8a69a8499a534e7f3ccc
@@ -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-Zm15lgcf.js";
3
+ import { n as registerSubCliByName, t as getSubCliEntries } from "./register.subclis-Dya3aOeE.js";
4
4
  import path from "node:path";
5
5
  import os from "node:os";
6
6
  import fs from "node:fs/promises";
@@ -25,7 +25,7 @@ import { t as resolveChannelDefaultAccountId } from "./helpers-BMifWcsO.js";
25
25
  import { n as logConfigUpdated, t as formatConfigPath } from "./logging-BusiCyt_.js";
26
26
  import { t as WizardCancelledError } from "./prompts-DxnxCHKt.js";
27
27
  import { t as createClackPrompter } from "./clack-prompter-BxHCh6Tn.js";
28
- import { a as buildKoiSummaries, c as loadKoiIdentity, f as parseIdentityMarkdown, i as applyKoiConfig, l as pruneKoiConfig, n as statusCommand, o as findKoiEntryIndex, s as listKoiEntries, t as runOnboardingWizard, u as identityHasValues } from "./onboarding-B_8JhcVO.js";
28
+ import { a as buildKoiSummaries, c as loadKoiIdentity, f as parseIdentityMarkdown, i as applyKoiConfig, l as pruneKoiConfig, n as statusCommand, o as findKoiEntryIndex, s as listKoiEntries, t as runOnboardingWizard, u as identityHasValues } from "./onboarding-fp1tZcOe.js";
29
29
  import { d as applyAuthChoice, f as applyOpenAIConfig, h as promptAuthChoiceGrouped, m as applyGoogleGeminiModelDefault, p as upsertSharedEnvVar, u as warnIfModelConfigLooksOff } from "./onboard-skills-C-Fi9wfj.js";
30
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-C1hw7ZJn.js";
31
31
  import { n as setupChannels } from "./onboard-channels-B8Q9t4c8.js";
@@ -33,7 +33,7 @@ import { l as healthCommand } from "./health-format-DYmAWnO8.js";
33
33
  import { t as renderTable } from "./table-CgHdpI6b.js";
34
34
  import { t as resolveGatewayService } from "./service-CTrRN1-T.js";
35
35
  import { r as isSystemdUserServiceAvailable } from "./systemd-BuS1yu_z.js";
36
- import { l as getVerboseFlag, o as getFlagValue, r as registerSubCliCommands, s as getPositiveIntFlagValue, u as hasFlag } from "./register.subclis-Zm15lgcf.js";
36
+ import { l as getVerboseFlag, o as getFlagValue, r as registerSubCliCommands, s as getPositiveIntFlagValue, u as hasFlag } from "./register.subclis-Dya3aOeE.js";
37
37
  import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-GLatQ1eS.js";
38
38
  import { t as formatHelpExamples } from "./help-format-Cbr54gLP.js";
39
39
  import { a as createOutboundSendDeps, n as resolveSessionKeyForRequest, t as koiCommand } from "./koi-N5zj_zdz.js";
@@ -41,7 +41,7 @@ import { n as hasExplicitOptions, t as ensurePluginRegistryLoaded } from "./plug
41
41
  import { n as parsePositiveIntOrUndefined, t as collectOption } from "./helpers-CgAOTnxe.js";
42
42
  import { i as CONFIGURE_WIZARD_SECTIONS, n as configureCommand, r as configureCommandWithSections } from "./configure-YIKpYHmO.js";
43
43
  import { n as ensureSystemdUserLingerNonInteractive } from "./systemd-linger-BLQwmm6k.js";
44
- import { n as loadAndMaybeMigrateDoctorConfig, t as doctorCommand } from "./doctor-CwoiAgVa.js";
44
+ import { n as loadAndMaybeMigrateDoctorConfig, t as doctorCommand } from "./doctor-CkVJf7kL.js";
45
45
  import { fileURLToPath } from "node:url";
46
46
  import fs from "node:fs";
47
47
  import path from "node:path";
@@ -26,7 +26,7 @@ import { n as logConfigUpdated } from "./logging-BusiCyt_.js";
26
26
  import { t as note$1 } from "./note-CbRknFZ7.js";
27
27
  import { t as applyPluginAutoEnable } from "./plugin-auto-enable-BmXyiOxr.js";
28
28
  import { i as resolveControlUiDistIndexPathForRoot, l as healthCommand, r as resolveControlUiDistIndexHealth, t as formatHealthCheckFailure } from "./health-format-DYmAWnO8.js";
29
- import { c as doctorShellCompletion, t as runGatewayUpdate } from "./update-runner-CkyHbY--.js";
29
+ import { c as doctorShellCompletion, t as runGatewayUpdate } from "./update-runner-BimHdHqM.js";
30
30
  import { i as resolveGatewayAuth } from "./auth-DQvUzR68.js";
31
31
  import { t as buildWorkspaceSkillStatus } from "./skills-status-M1VnIEz1.js";
32
32
  import { a as repairLaunchAgentBootstrap, i as launchAgentPlistExists, n as isLaunchAgentListed, o as resolveGatewayLogPaths, r as isLaunchAgentLoaded, t as resolveGatewayService } from "./service-CTrRN1-T.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-bGGhyidD.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
247
+ import("./run-main-BoTtRqLf.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
  });
@@ -75,7 +75,7 @@ import { t as resolveChannelDefaultAccountId } from "./helpers-BMifWcsO.js";
75
75
  import "./logging-BusiCyt_.js";
76
76
  import "./note-CbRknFZ7.js";
77
77
  import { t as WizardCancelledError } from "./prompts-DxnxCHKt.js";
78
- 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-B_8JhcVO.js";
78
+ 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-fp1tZcOe.js";
79
79
  import { n as installSkill } from "./onboard-skills-C-Fi9wfj.js";
80
80
  import "./github-copilot-auth-C1hw7ZJn.js";
81
81
  import "./onboard-channels-B8Q9t4c8.js";
@@ -84,7 +84,7 @@ import "./archive-BS4Wlj8k.js";
84
84
  import "./skill-scanner-WnNLktfw.js";
85
85
  import "./installs-DTvx5P-y.js";
86
86
  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-DYmAWnO8.js";
87
- import { S as normalizeUpdateChannel, _ as resolveNpmChannelTag, h as compareSemverStrings, m as checkUpdateStatus, t as runGatewayUpdate, y as DEFAULT_PACKAGE_CHANNEL } from "./update-runner-CkyHbY--.js";
87
+ import { S as normalizeUpdateChannel, _ as resolveNpmChannelTag, h as compareSemverStrings, m as checkUpdateStatus, t as runGatewayUpdate, y as DEFAULT_PACKAGE_CHANNEL } from "./update-runner-BimHdHqM.js";
88
88
  import { i as resolveGatewayAuth, n as authorizeGatewayConnect, r as isLocalDirectRequest, t as assertGatewayAuthConfigured } from "./auth-DQvUzR68.js";
89
89
  import { i as probeGateway } from "./audit-lnQLYqhu.js";
90
90
  import "./table-CgHdpI6b.js";
@@ -94,11 +94,11 @@ import { p as resolveGatewayStateDir } from "./systemd-BuS1yu_z.js";
94
94
  import "./service-audit-CN0kFCuS.js";
95
95
  import "./node-service-DfmbTqpi.js";
96
96
  import "./channels-status-issues-GKs-LbrV.js";
97
- import "./register.subclis-Zm15lgcf.js";
97
+ import "./register.subclis-Dya3aOeE.js";
98
98
  import { a as createOutboundSendDeps$1, i as resolveKoiOutboundTarget, r as resolveKoiDeliveryPlan, t as koiCommand } from "./koi-N5zj_zdz.js";
99
99
  import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-DMja3M8B.js";
100
100
  import { n as discoverGatewayBeacons } from "./bonjour-discovery-D_eYlsQc.js";
101
- import "./completion-cli-DpZpdh6D.js";
101
+ import "./completion-cli-Bi0tGfkI.js";
102
102
  import { i as shouldIncludeHook, n as loadWorkspaceHookEntries, r as resolveHookConfig } from "./hooks-status-DWt1gNJd.js";
103
103
  import "./tui-pDEVRDQz.js";
104
104
  import { t as buildChannelAccountSnapshot } from "./status-BA0KgRIG.js";
@@ -6344,9 +6344,11 @@ const koiHandlers = {
6344
6344
  return;
6345
6345
  }
6346
6346
  message = injectTimestamp(message, timestampOptsFromConfig(cfg));
6347
- let mentionMatch = resolveMentionDispatch(message);
6348
- if (!mentionMatch) {
6349
- if (/(?:^|\s)@\S/.test(message) || /@\[/.test(message)) try {
6347
+ let companionsRefreshed = false;
6348
+ const refreshCompanionsOnce = async () => {
6349
+ if (companionsRefreshed) return;
6350
+ companionsRefreshed = true;
6351
+ try {
6350
6352
  const platformUrl = cfg.gateway?.mesh?.platformUrl || process.env.SKYKOI_APP_URL;
6351
6353
  const hostKoiId = cfg.gateway?.mesh?.koiId || process.env.SKYKOI_KOI_ID;
6352
6354
  const gatewayToken = cfg.gateway?.auth?.token || process.env.SKYKOI_GATEWAY_TOKEN;
@@ -6364,11 +6366,17 @@ const koiHandlers = {
6364
6366
  hostWorkspaceDir: resolveKoiConfig(cfg, hostKoiId)?.workspace || process.env.SKYKOI_WORKSPACE_DIR || `${process.env.HOME ?? ""}/skykoi-koi`,
6365
6367
  log: context.logGateway
6366
6368
  });
6367
- mentionMatch = resolveMentionDispatch(message);
6368
6369
  }
6369
6370
  } catch (err) {
6370
6371
  context.logGateway.warn(`koi: on-demand companion refresh failed: ${err?.message ?? err}`);
6371
6372
  }
6373
+ };
6374
+ let mentionMatch = resolveMentionDispatch(message);
6375
+ if (!mentionMatch) {
6376
+ if (/(?:^|\s)@\S/.test(message) || /@\[/.test(message)) {
6377
+ await refreshCompanionsOnce();
6378
+ mentionMatch = resolveMentionDispatch(message);
6379
+ }
6372
6380
  }
6373
6381
  let speakerKoiOverride;
6374
6382
  if (mentionMatch) {
@@ -6388,11 +6396,23 @@ const koiHandlers = {
6388
6396
  const explicitKoiId = koiIdRaw ? normalizeKoiId(koiIdRaw) : void 0;
6389
6397
  const koiId = explicitKoiId ?? speakerKoiOverride;
6390
6398
  if (koiId) {
6391
- if (!listKoiIds(cfg).includes(koiId)) {
6399
+ let knownKois = listKoiIds(cfg);
6400
+ if (!knownKois.includes(koiId)) {
6401
+ await refreshCompanionsOnce();
6402
+ knownKois = listKoiIds(cfg);
6403
+ }
6404
+ if (!knownKois.includes(koiId)) {
6392
6405
  respond(false, void 0, errorShape(ErrorCodes.INVALID_REQUEST, `invalid koi params: unknown koi id "${request.koiId ?? koiId}"`));
6393
6406
  return;
6394
6407
  }
6395
6408
  }
6409
+ {
6410
+ const skRaw = typeof request.sessionKey === "string" ? request.sessionKey.trim() : "";
6411
+ if (skRaw) {
6412
+ const skKoi = resolveKoiIdFromSessionKey(skRaw);
6413
+ if (skKoi && !listKoiIds(cfg).includes(skKoi)) await refreshCompanionsOnce();
6414
+ }
6415
+ }
6396
6416
  const requestedSessionKeyRaw = typeof request.sessionKey === "string" && request.sessionKey.trim() ? request.sessionKey.trim() : void 0;
6397
6417
  const requestedSessionKey = requestedSessionKeyRaw ?? resolveExplicitKoiSessionKey({
6398
6418
  cfg,
package/dist/index.js CHANGED
@@ -64,11 +64,11 @@ import { t as isMainModule } from "./is-main-BmAsi6j8.js";
64
64
  import { t as ensureSKYKOICliOnPath } from "./path-env-B1xMZ4TX.js";
65
65
  import { g as assertSupportedRuntime } from "./daemon-runtime-DkLy62aK.js";
66
66
  import "./ports-RMh76QZ2.js";
67
- import "./config-guard-CY4sk4ou.js";
67
+ import "./config-guard-jafjVq7s.js";
68
68
  import "./logging-BusiCyt_.js";
69
69
  import "./note-CbRknFZ7.js";
70
70
  import "./clack-prompter-BxHCh6Tn.js";
71
- import "./onboarding-B_8JhcVO.js";
71
+ import "./onboarding-fp1tZcOe.js";
72
72
  import "./onboard-skills-C-Fi9wfj.js";
73
73
  import "./github-copilot-auth-C1hw7ZJn.js";
74
74
  import "./onboard-channels-B8Q9t4c8.js";
@@ -77,7 +77,7 @@ import "./archive-BS4Wlj8k.js";
77
77
  import "./skill-scanner-WnNLktfw.js";
78
78
  import "./installs-DTvx5P-y.js";
79
79
  import "./health-format-DYmAWnO8.js";
80
- import "./update-runner-CkyHbY--.js";
80
+ import "./update-runner-BimHdHqM.js";
81
81
  import "./auth-DQvUzR68.js";
82
82
  import "./audit-lnQLYqhu.js";
83
83
  import "./table-CgHdpI6b.js";
@@ -87,7 +87,7 @@ import "./systemd-BuS1yu_z.js";
87
87
  import "./service-audit-CN0kFCuS.js";
88
88
  import "./node-service-DfmbTqpi.js";
89
89
  import "./channels-status-issues-GKs-LbrV.js";
90
- import "./register.subclis-Zm15lgcf.js";
90
+ import "./register.subclis-Dya3aOeE.js";
91
91
  import "./gateway-rpc-GLatQ1eS.js";
92
92
  import "./help-format-Cbr54gLP.js";
93
93
  import "./koi-N5zj_zdz.js";
@@ -97,12 +97,12 @@ import "./systemd-linger-BLQwmm6k.js";
97
97
  import "./widearea-dns-DMja3M8B.js";
98
98
  import "./bonjour-discovery-D_eYlsQc.js";
99
99
  import "./auth-health-Btj4L0TH.js";
100
- import "./doctor-CwoiAgVa.js";
101
- import "./completion-cli-DpZpdh6D.js";
100
+ import "./doctor-CkVJf7kL.js";
101
+ import "./completion-cli-Bi0tGfkI.js";
102
102
  import "./hooks-status-DWt1gNJd.js";
103
103
  import "./tui-pDEVRDQz.js";
104
104
  import "./channel-options-CGg-LPTZ.js";
105
- import { n as buildProgram } from "./program-3xP8Pa7y.js";
105
+ import { n as buildProgram } from "./program-CwrZSD5y.js";
106
106
  import process from "node:process";
107
107
  import { fileURLToPath } from "node:url";
108
108
 
@@ -24,7 +24,7 @@ import { t as WizardCancelledError } from "./prompts-DxnxCHKt.js";
24
24
  import { d as applyAuthChoice, h as promptAuthChoiceGrouped, l as resolvePreferredProviderForAuthChoice, o as applyPrimaryModel, r as promptRemoteGatewayConfig, s as promptDefaultModel, t as setupSkills, u as warnIfModelConfigLooksOff } from "./onboard-skills-C-Fi9wfj.js";
25
25
  import { n as setupChannels } from "./onboard-channels-B8Q9t4c8.js";
26
26
  import { l as healthCommand, n as ensureControlUiAssetsBuilt, s as formatHealthChannelLines, t as formatHealthCheckFailure, u as resolveHeartbeatSummaryForKoi } from "./health-format-DYmAWnO8.js";
27
- import { C as resolveEffectiveUpdateChannel, S as normalizeUpdateChannel, d as formatUpdateOneLiner, f as getUpdateCheckResult, h as compareSemverStrings, l as ensureCompletionCacheExists, m as checkUpdateStatus, p as resolveUpdateAvailability, s as checkShellCompletionStatus, u as formatUpdateAvailableHint, x as formatUpdateChannelLabel } from "./update-runner-CkyHbY--.js";
27
+ import { C as resolveEffectiveUpdateChannel, S as normalizeUpdateChannel, d as formatUpdateOneLiner, f as getUpdateCheckResult, h as compareSemverStrings, l as ensureCompletionCacheExists, m as checkUpdateStatus, p as resolveUpdateAvailability, s as checkShellCompletionStatus, u as formatUpdateAvailableHint, x as formatUpdateChannelLabel } from "./update-runner-BimHdHqM.js";
28
28
  import { i as probeGateway, t as runSecurityAudit } from "./audit-lnQLYqhu.js";
29
29
  import { t as renderTable } from "./table-CgHdpI6b.js";
30
30
  import { t as buildWorkspaceSkillStatus } from "./skills-status-M1VnIEz1.js";
@@ -34,7 +34,7 @@ import { o as readLastGatewayErrorLine } from "./service-audit-CN0kFCuS.js";
34
34
  import { t as resolveNodeService } from "./node-service-DfmbTqpi.js";
35
35
  import { t as collectChannelStatusIssues } from "./channels-status-issues-GKs-LbrV.js";
36
36
  import { i as redactSecrets, n as formatDuration$1, r as formatGatewayAuthUsed, t as formatAge$1 } from "./format-BimjsTfO.js";
37
- import { r as installCompletion } from "./completion-cli-DpZpdh6D.js";
37
+ import { r as installCompletion } from "./completion-cli-Bi0tGfkI.js";
38
38
  import { t as buildWorkspaceHookStatus } from "./hooks-status-DWt1gNJd.js";
39
39
  import { t as runTui } from "./tui-pDEVRDQz.js";
40
40
  import fs from "node:fs";
@@ -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-B1kAe0kx.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-CeYPOTBg.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";
@@ -2262,7 +2262,7 @@ function readLoggingConfig() {
2262
2262
  try {
2263
2263
  if (!fs.existsSync(configPath)) return;
2264
2264
  const raw = fs.readFileSync(configPath, "utf-8");
2265
- const logging = json5.parse(raw)?.logging;
2265
+ const logging = JSON5.parse(raw)?.logging;
2266
2266
  if (!logging || typeof logging !== "object" || Array.isArray(logging)) return;
2267
2267
  return logging;
2268
2268
  } catch {
@@ -18990,7 +18990,7 @@ var IncludeProcessor = class IncludeProcessor {
18990
18990
  };
18991
18991
  const defaultResolver = {
18992
18992
  readFile: (p) => fs.readFileSync(p, "utf-8"),
18993
- parseJson: (raw) => json5.parse(raw)
18993
+ parseJson: (raw) => JSON5.parse(raw)
18994
18994
  };
18995
18995
  /**
18996
18996
  * Resolves all $include directives in a parsed config object.
@@ -20478,7 +20478,7 @@ function loadPluginManifestRegistry(params) {
20478
20478
 
20479
20479
  //#endregion
20480
20480
  //#region src/plugins/schema-validator.ts
20481
- const ajv$1 = new AjvModule({
20481
+ const ajv$1 = new AjvPkg({
20482
20482
  allErrors: true,
20483
20483
  strict: false,
20484
20484
  removeAdditional: false
@@ -21665,18 +21665,18 @@ function resolveConfigPathForDeps(deps) {
21665
21665
  function normalizeDeps(overrides = {}) {
21666
21666
  return {
21667
21667
  fs: overrides.fs ?? fs,
21668
- json5: overrides.json5 ?? json5,
21668
+ json5: overrides.json5 ?? JSON5,
21669
21669
  env: overrides.env ?? process.env,
21670
21670
  homedir: overrides.homedir ?? os.homedir,
21671
21671
  configPath: overrides.configPath ?? "",
21672
21672
  logger: overrides.logger ?? console
21673
21673
  };
21674
21674
  }
21675
- function parseConfigJson5(raw, json5$1 = json5) {
21675
+ function parseConfigJson5(raw, json5 = JSON5) {
21676
21676
  try {
21677
21677
  return {
21678
21678
  ok: true,
21679
- parsed: json5$1.parse(raw)
21679
+ parsed: json5.parse(raw)
21680
21680
  };
21681
21681
  } catch (err) {
21682
21682
  return {
@@ -22190,7 +22190,7 @@ function loadSessionStore(storePath, opts = {}) {
22190
22190
  let mtimeMs = getFileMtimeMs(storePath);
22191
22191
  try {
22192
22192
  const raw = fs.readFileSync(storePath, "utf-8");
22193
- const parsed = json5.parse(raw);
22193
+ const parsed = JSON5.parse(raw);
22194
22194
  if (isSessionStoreRecord(parsed)) store = parsed;
22195
22195
  mtimeMs = getFileMtimeMs(storePath) ?? mtimeMs;
22196
22196
  } catch {}
@@ -47051,7 +47051,7 @@ const PROTOCOL_VERSION = 3;
47051
47051
 
47052
47052
  //#endregion
47053
47053
  //#region src/gateway/protocol/index.ts
47054
- const ajv = new AjvModule({
47054
+ const ajv = new AjvPkg({
47055
47055
  allErrors: true,
47056
47056
  strict: false,
47057
47057
  removeAdditional: false
@@ -66929,7 +66929,7 @@ function enqueueSystemEvent(text, options) {
66929
66929
  const MODEL_CACHE = /* @__PURE__ */ new Map();
66930
66930
  (async () => {
66931
66931
  try {
66932
- const { discoverAuthStorage, discoverModels } = await import("./pi-model-discovery-B1kAe0kx.js").then((n) => n.t);
66932
+ const { discoverAuthStorage, discoverModels } = await import("./pi-model-discovery-CeYPOTBg.js").then((n) => n.t);
66933
66933
  await ensureSKYKOIModelsJson(loadConfig());
66934
66934
  const koiDir = resolveSKYKOIKoiDir();
66935
66935
  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_ws@8.19.0_zod@4.3.6/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()))
@@ -4,8 +4,8 @@ import { n as replaceCliName, r as resolveCliName } from "./command-format-CvpDY
4
4
  import { t as isTruthyEnvValue } from "./env-Bj0uZSiW.js";
5
5
  import { N as VERSION } from "./config-C_blrocr.js";
6
6
  import { t as formatDocsLink } from "./links-D5FJjx5x.js";
7
- import { r as registerProgramCommands, t as ensureConfigReady } from "./config-guard-CY4sk4ou.js";
8
- import { a as getCommandPath, d as hasHelpOrVersion, l as getVerboseFlag } from "./register.subclis-Zm15lgcf.js";
7
+ import { r as registerProgramCommands, t as ensureConfigReady } from "./config-guard-jafjVq7s.js";
8
+ import { a as getCommandPath, d as hasHelpOrVersion, l as getVerboseFlag } from "./register.subclis-Dya3aOeE.js";
9
9
  import { t as ensurePluginRegistryLoaded } from "./plugin-registry-kzzN7Hl7.js";
10
10
  import { i as hasEmittedCliBanner, n as emitCliBanner, r as formatCliBannerLine } from "./tui-pDEVRDQz.js";
11
11
  import { n as resolveCliChannelOptions } from "./channel-options-CGg-LPTZ.js";
@@ -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-BXX19-SK.js")).registerGatewayCli(program);
127
+ (await import("./gateway-cli-k4gTjc7A.js")).registerGatewayCli(program);
128
128
  }
129
129
  },
130
130
  {
@@ -282,14 +282,14 @@ const entries = [
282
282
  name: "update",
283
283
  description: "CLI update helpers",
284
284
  register: async (program) => {
285
- (await import("./update-cli-BgGeo2OE.js")).registerUpdateCli(program);
285
+ (await import("./update-cli-DmS3pgaJ.js")).registerUpdateCli(program);
286
286
  }
287
287
  },
288
288
  {
289
289
  name: "completion",
290
290
  description: "Generate shell completion script",
291
291
  register: async (program) => {
292
- (await import("./completion-cli-DpZpdh6D.js").then((n) => n.n)).registerCompletionCli(program);
292
+ (await import("./completion-cli-Bi0tGfkI.js").then((n) => n.n)).registerCompletionCli(program);
293
293
  }
294
294
  }
295
295
  ];
@@ -61,11 +61,11 @@ import "./tailscale-4hm01eUI.js";
61
61
  import { t as loadDotEnv } from "./dotenv-DKI6139G.js";
62
62
  import { t as ensureSKYKOICliOnPath } from "./path-env-B1xMZ4TX.js";
63
63
  import { g as assertSupportedRuntime } from "./daemon-runtime-DkLy62aK.js";
64
- import { n as findRoutedCommand, t as ensureConfigReady } from "./config-guard-CY4sk4ou.js";
64
+ import { n as findRoutedCommand, t as ensureConfigReady } from "./config-guard-jafjVq7s.js";
65
65
  import "./logging-BusiCyt_.js";
66
66
  import "./note-CbRknFZ7.js";
67
67
  import "./clack-prompter-BxHCh6Tn.js";
68
- import "./onboarding-B_8JhcVO.js";
68
+ import "./onboarding-fp1tZcOe.js";
69
69
  import "./onboard-skills-C-Fi9wfj.js";
70
70
  import "./github-copilot-auth-C1hw7ZJn.js";
71
71
  import "./onboard-channels-B8Q9t4c8.js";
@@ -74,7 +74,7 @@ import "./archive-BS4Wlj8k.js";
74
74
  import "./skill-scanner-WnNLktfw.js";
75
75
  import "./installs-DTvx5P-y.js";
76
76
  import "./health-format-DYmAWnO8.js";
77
- import "./update-runner-CkyHbY--.js";
77
+ import "./update-runner-BimHdHqM.js";
78
78
  import "./auth-DQvUzR68.js";
79
79
  import "./audit-lnQLYqhu.js";
80
80
  import "./table-CgHdpI6b.js";
@@ -84,7 +84,7 @@ import "./systemd-BuS1yu_z.js";
84
84
  import "./service-audit-CN0kFCuS.js";
85
85
  import "./node-service-DfmbTqpi.js";
86
86
  import "./channels-status-issues-GKs-LbrV.js";
87
- import { a as getCommandPath, c as getPrimaryCommand, d as hasHelpOrVersion } from "./register.subclis-Zm15lgcf.js";
87
+ import { a as getCommandPath, c as getPrimaryCommand, d as hasHelpOrVersion } from "./register.subclis-Dya3aOeE.js";
88
88
  import "./gateway-rpc-GLatQ1eS.js";
89
89
  import "./help-format-Cbr54gLP.js";
90
90
  import "./koi-N5zj_zdz.js";
@@ -94,8 +94,8 @@ import "./systemd-linger-BLQwmm6k.js";
94
94
  import "./widearea-dns-DMja3M8B.js";
95
95
  import "./bonjour-discovery-D_eYlsQc.js";
96
96
  import "./auth-health-Btj4L0TH.js";
97
- import "./doctor-CwoiAgVa.js";
98
- import "./completion-cli-DpZpdh6D.js";
97
+ import "./doctor-CkVJf7kL.js";
98
+ import "./completion-cli-Bi0tGfkI.js";
99
99
  import "./hooks-status-DWt1gNJd.js";
100
100
  import { n as emitCliBanner } from "./tui-pDEVRDQz.js";
101
101
  import process$1 from "node:process";
@@ -151,7 +151,7 @@ async function runCli(argv = process$1.argv) {
151
151
  assertSupportedRuntime();
152
152
  if (await tryRouteCli(normalizedArgv)) return;
153
153
  enableConsoleCapture();
154
- const { buildProgram } = await import("./program-3xP8Pa7y.js").then((n) => n.t);
154
+ const { buildProgram } = await import("./program-CwrZSD5y.js").then((n) => n.t);
155
155
  const program = buildProgram();
156
156
  installUnhandledRejectionHandler();
157
157
  process$1.on("uncaughtException", (error) => {
@@ -161,7 +161,7 @@ async function runCli(argv = process$1.argv) {
161
161
  const parseArgv = rewriteUpdateFlagArgv(normalizedArgv);
162
162
  const primary = getPrimaryCommand(parseArgv);
163
163
  if (primary) {
164
- const { registerSubCliByName } = await import("./register.subclis-Zm15lgcf.js").then((n) => n.i);
164
+ const { registerSubCliByName } = await import("./register.subclis-Dya3aOeE.js").then((n) => n.i);
165
165
  await registerSubCliByName(program, primary);
166
166
  }
167
167
  if (!(!primary && hasHelpOrVersion(parseArgv))) {
@@ -68,7 +68,7 @@ import "./archive-BS4Wlj8k.js";
68
68
  import "./skill-scanner-WnNLktfw.js";
69
69
  import "./installs-DTvx5P-y.js";
70
70
  import "./health-format-DYmAWnO8.js";
71
- import { C as resolveEffectiveUpdateChannel, S as normalizeUpdateChannel, _ as resolveNpmChannelTag, a as globalInstallArgs, b as channelToNpmTag, d as formatUpdateOneLiner, g as fetchNpmTagVersion, h as compareSemverStrings, i as detectGlobalInstallManagerForRoot, l as ensureCompletionCacheExists, m as checkUpdateStatus, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, p as resolveUpdateAvailability, r as detectGlobalInstallManagerByPresence, s as checkShellCompletionStatus, t as runGatewayUpdate, u as formatUpdateAvailableHint, v as DEFAULT_GIT_CHANNEL, x as formatUpdateChannelLabel, y as DEFAULT_PACKAGE_CHANNEL } from "./update-runner-CkyHbY--.js";
71
+ import { C as resolveEffectiveUpdateChannel, S as normalizeUpdateChannel, _ as resolveNpmChannelTag, a as globalInstallArgs, b as channelToNpmTag, d as formatUpdateOneLiner, g as fetchNpmTagVersion, h as compareSemverStrings, i as detectGlobalInstallManagerForRoot, l as ensureCompletionCacheExists, m as checkUpdateStatus, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, p as resolveUpdateAvailability, r as detectGlobalInstallManagerByPresence, s as checkShellCompletionStatus, t as runGatewayUpdate, u as formatUpdateAvailableHint, v as DEFAULT_GIT_CHANNEL, x as formatUpdateChannelLabel, y as DEFAULT_PACKAGE_CHANNEL } from "./update-runner-BimHdHqM.js";
72
72
  import "./auth-DQvUzR68.js";
73
73
  import { t as renderTable } from "./table-CgHdpI6b.js";
74
74
  import "./skills-status-M1VnIEz1.js";
@@ -76,12 +76,12 @@ import "./service-CTrRN1-T.js";
76
76
  import "./systemd-BuS1yu_z.js";
77
77
  import "./service-audit-CN0kFCuS.js";
78
78
  import "./channels-status-issues-GKs-LbrV.js";
79
- import "./register.subclis-Zm15lgcf.js";
79
+ import "./register.subclis-Dya3aOeE.js";
80
80
  import { t as formatHelpExamples } from "./help-format-Cbr54gLP.js";
81
81
  import "./systemd-linger-BLQwmm6k.js";
82
82
  import "./auth-health-Btj4L0TH.js";
83
- import { t as doctorCommand } from "./doctor-CwoiAgVa.js";
84
- import { r as installCompletion } from "./completion-cli-DpZpdh6D.js";
83
+ import { t as doctorCommand } from "./doctor-CkVJf7kL.js";
84
+ import { r as installCompletion } from "./completion-cli-Bi0tGfkI.js";
85
85
  import "./shared-DCuTTPOy.js";
86
86
  import { r as runDaemonRestart } from "./daemon-cli-BrF-ryvH.js";
87
87
  import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from "./update-Sq9jKwsm.js";
@@ -6,7 +6,7 @@ import { N as VERSION } from "./config-C_blrocr.js";
6
6
  import { _ as parseSemver } from "./daemon-runtime-DkLy62aK.js";
7
7
  import { t as note } from "./note-CbRknFZ7.js";
8
8
  import { i as resolveControlUiDistIndexPathForRoot, r as resolveControlUiDistIndexHealth } from "./health-format-DYmAWnO8.js";
9
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-DpZpdh6D.js";
9
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-Bi0tGfkI.js";
10
10
  import path from "node:path";
11
11
  import os from "node:os";
12
12
  import fs from "node:fs/promises";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skykoi",
3
- "version": "2026.3.146",
3
+ "version": "2026.3.148",
4
4
  "description": "SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.",
5
5
  "keywords": [
6
6
  "skykoi",