skykoi 2026.3.136 → 2026.3.138

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.136",
3
- "commit": "6bdcd23279d58d099f2a1f110214d1d62d6ae0a7",
4
- "builtAt": "2026-04-29T05:08:14.353Z"
2
+ "version": "2026.3.138",
3
+ "commit": "0dce489d9526cf672fd66534b6da342e101a9eda",
4
+ "builtAt": "2026-04-29T05:38:11.328Z"
5
5
  }
@@ -1 +1 @@
1
- 73b36d83dc5f3fda294b2071422636e742b9868014a23d4b113175aca556fac2
1
+ 2b459e49bf585401b002099dee4dc44104a3f47ebabc1966024779e3fad86adc
@@ -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-sN9F-oGM.js";
3
+ import { n as registerSubCliByName, t as getSubCliEntries } from "./register.subclis-BxQRMhnR.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-CJt163Ic.js";
25
25
  import { n as logConfigUpdated, t as formatConfigPath } from "./logging-DyKAhfdr.js";
26
26
  import { t as WizardCancelledError } from "./prompts-CEx1FQsk.js";
27
27
  import { t as createClackPrompter } from "./clack-prompter-DYU2ViJ7.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-DWpuk-eh.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-7UXgpT9i.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-BO_y4B2l.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-CPvyu_wi.js";
31
31
  import { n as setupChannels } from "./onboard-channels-BaEVJyLu.js";
@@ -33,7 +33,7 @@ import { l as healthCommand } from "./health-format-BW3XaFPD.js";
33
33
  import { t as renderTable } from "./table-CyQUD_tb.js";
34
34
  import { t as resolveGatewayService } from "./service-nXGaK9Aj.js";
35
35
  import { r as isSystemdUserServiceAvailable } from "./systemd-DAkFTJ1n.js";
36
- import { l as getVerboseFlag, o as getFlagValue, r as registerSubCliCommands, s as getPositiveIntFlagValue, u as hasFlag } from "./register.subclis-sN9F-oGM.js";
36
+ import { l as getVerboseFlag, o as getFlagValue, r as registerSubCliCommands, s as getPositiveIntFlagValue, u as hasFlag } from "./register.subclis-BxQRMhnR.js";
37
37
  import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-BpuvjhWH.js";
38
38
  import { t as formatHelpExamples } from "./help-format-CPUf8bl7.js";
39
39
  import { a as createOutboundSendDeps, n as resolveSessionKeyForRequest, t as koiCommand } from "./koi-DSeIlTiW.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-BCSvxVBX.js";
42
42
  import { i as CONFIGURE_WIZARD_SECTIONS, n as configureCommand, r as configureCommandWithSections } from "./configure-RbyZ15CR.js";
43
43
  import { n as ensureSystemdUserLingerNonInteractive } from "./systemd-linger-Dd8gFSsk.js";
44
- import { n as loadAndMaybeMigrateDoctorConfig, t as doctorCommand } from "./doctor-iO2_EWbx.js";
44
+ import { n as loadAndMaybeMigrateDoctorConfig, t as doctorCommand } from "./doctor-B6iQgOGt.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-DyKAhfdr.js";
26
26
  import { t as note$1 } from "./note-Bc0VNokI.js";
27
27
  import { t as applyPluginAutoEnable } from "./plugin-auto-enable-BRz8x3ni.js";
28
28
  import { i as resolveControlUiDistIndexPathForRoot, l as healthCommand, r as resolveControlUiDistIndexHealth, t as formatHealthCheckFailure } from "./health-format-BW3XaFPD.js";
29
- import { c as doctorShellCompletion, t as runGatewayUpdate } from "./update-runner-DN2BTeSq.js";
29
+ import { c as doctorShellCompletion, t as runGatewayUpdate } from "./update-runner-B8SfUp1z.js";
30
30
  import { i as resolveGatewayAuth } from "./auth-Gm92Fy-m.js";
31
31
  import { t as buildWorkspaceSkillStatus } from "./skills-status-B_WP7jbi.js";
32
32
  import { a as repairLaunchAgentBootstrap, i as launchAgentPlistExists, n as isLaunchAgentListed, o as resolveGatewayLogPaths, r as isLaunchAgentLoaded, t as resolveGatewayService } from "./service-nXGaK9Aj.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-Cp6Gbbn-.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
247
+ import("./run-main-3iaeu94f.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-CJt163Ic.js";
75
75
  import "./logging-DyKAhfdr.js";
76
76
  import "./note-Bc0VNokI.js";
77
77
  import { t as WizardCancelledError } from "./prompts-CEx1FQsk.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-DWpuk-eh.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-7UXgpT9i.js";
79
79
  import { n as installSkill } from "./onboard-skills-BO_y4B2l.js";
80
80
  import "./github-copilot-auth-CPvyu_wi.js";
81
81
  import "./onboard-channels-BaEVJyLu.js";
@@ -84,7 +84,7 @@ import "./archive-BU-E-CVj.js";
84
84
  import "./skill-scanner-DBQ7e8oD.js";
85
85
  import "./installs-qluGXMD2.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-BW3XaFPD.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-DN2BTeSq.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-B8SfUp1z.js";
88
88
  import { i as resolveGatewayAuth, n as authorizeGatewayConnect, r as isLocalDirectRequest, t as assertGatewayAuthConfigured } from "./auth-Gm92Fy-m.js";
89
89
  import { i as probeGateway } from "./audit-BNrBfvin.js";
90
90
  import "./table-CyQUD_tb.js";
@@ -94,11 +94,11 @@ import { p as resolveGatewayStateDir } from "./systemd-DAkFTJ1n.js";
94
94
  import "./service-audit-JNMzFciE.js";
95
95
  import "./node-service-BmpzVCW3.js";
96
96
  import "./channels-status-issues-ootz685N.js";
97
- import "./register.subclis-sN9F-oGM.js";
97
+ import "./register.subclis-BxQRMhnR.js";
98
98
  import { a as createOutboundSendDeps$1, i as resolveKoiOutboundTarget, r as resolveKoiDeliveryPlan, t as koiCommand } from "./koi-DSeIlTiW.js";
99
99
  import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-BvLyz-B-.js";
100
100
  import { n as discoverGatewayBeacons } from "./bonjour-discovery-CbsmJTpg.js";
101
- import "./completion-cli-CW_MuBth.js";
101
+ import "./completion-cli-DaalWcpY.js";
102
102
  import { i as shouldIncludeHook, n as loadWorkspaceHookEntries, r as resolveHookConfig } from "./hooks-status-CCng6xgi.js";
103
103
  import "./tui-CnebYKwk.js";
104
104
  import { t as buildChannelAccountSnapshot } from "./status-CKkLZX9t.js";
@@ -7801,22 +7801,37 @@ async function applyCompanions(args) {
7801
7801
  * streaming koi responses, and managing chat session lifecycle.
7802
7802
  */
7803
7803
  /**
7804
- * Parse the first `@[Name](koi:<id>)` mention out of a message
7805
- * body. Returns `null` if none found. We intentionally only honor
7806
- * the FIRST mention per turn directing one message to multiple
7807
- * kois at once is more confusing than useful.
7804
+ * Parse the first companion mention out of a message body.
7805
+ * Supports two forms:
7806
+ * 1. Chip syntax inserted by the composer's mention picker:
7807
+ * `@[Name](koi:<id>)` both name and id available.
7808
+ * 2. Plain text the user typed manually: `@Name` or
7809
+ * `@"Multi Word Name"` — only name available; the caller
7810
+ * resolves it via findCompanionByName.
7811
+ *
7812
+ * We honor only the FIRST mention per turn — directing one
7813
+ * message to multiple kois at once is more confusing than useful.
7808
7814
  */
7809
7815
  function parseFirstMention(text) {
7810
7816
  if (!text) return null;
7811
- const m = text.match(/@\[([^\]]+)\]\(koi:([^)]+)\)/);
7812
- if (!m) return null;
7813
- const name = m[1]?.trim();
7814
- const koiId = m[2]?.trim();
7815
- if (!name || !koiId) return null;
7816
- return {
7817
- name,
7818
- koiId
7819
- };
7817
+ const chip = text.match(/@\[([^\]]+)\]\(koi:([^)]+)\)/);
7818
+ if (chip) {
7819
+ const name = chip[1]?.trim();
7820
+ const koiId = chip[2]?.trim();
7821
+ if (name && koiId) return {
7822
+ name,
7823
+ koiId
7824
+ };
7825
+ }
7826
+ const plain = text.match(/(?:^|\s)@([A-Za-z][A-Za-z0-9_-]*(?:\s+[A-Za-z][A-Za-z0-9_-]*){0,4})/);
7827
+ if (plain) {
7828
+ const name = plain[1]?.trim();
7829
+ if (name) return {
7830
+ name,
7831
+ koiId: null
7832
+ };
7833
+ }
7834
+ return null;
7820
7835
  }
7821
7836
  function resolveTranscriptPath(params) {
7822
7837
  const { sessionId, storePath, sessionFile } = params;
@@ -8057,8 +8072,9 @@ const chatHandlers = {
8057
8072
  }
8058
8073
  const mentionMatch = parseFirstMention(parsedMessage);
8059
8074
  if (mentionMatch) {
8060
- const companion = findCompanionById(mentionMatch.koiId) ?? findCompanionByName(mentionMatch.name);
8061
- const isHost = getCachedCompanions()?.hostKoiId.toLowerCase() === mentionMatch.koiId.toLowerCase();
8075
+ const companion = (mentionMatch.koiId ? findCompanionById(mentionMatch.koiId) : null) ?? findCompanionByName(mentionMatch.name);
8076
+ const cached = getCachedCompanions();
8077
+ const isHost = !!mentionMatch.koiId && cached?.hostKoiId.toLowerCase() === mentionMatch.koiId.toLowerCase();
8062
8078
  if (companion && !isHost) {
8063
8079
  const parts = p.sessionKey.split(":");
8064
8080
  if (parts[0] === "koi" && parts.length >= 3) {
package/dist/index.js CHANGED
@@ -64,11 +64,11 @@ import { t as isMainModule } from "./is-main-DM5CUSEb.js";
64
64
  import { t as ensureSKYKOICliOnPath } from "./path-env--AP-bd4Y.js";
65
65
  import { g as assertSupportedRuntime } from "./daemon-runtime-ChW6UY06.js";
66
66
  import "./ports-BCL5XV_u.js";
67
- import "./config-guard-DHG3qz9x.js";
67
+ import "./config-guard-D5SCAA0m.js";
68
68
  import "./logging-DyKAhfdr.js";
69
69
  import "./note-Bc0VNokI.js";
70
70
  import "./clack-prompter-DYU2ViJ7.js";
71
- import "./onboarding-DWpuk-eh.js";
71
+ import "./onboarding-7UXgpT9i.js";
72
72
  import "./onboard-skills-BO_y4B2l.js";
73
73
  import "./github-copilot-auth-CPvyu_wi.js";
74
74
  import "./onboard-channels-BaEVJyLu.js";
@@ -77,7 +77,7 @@ import "./archive-BU-E-CVj.js";
77
77
  import "./skill-scanner-DBQ7e8oD.js";
78
78
  import "./installs-qluGXMD2.js";
79
79
  import "./health-format-BW3XaFPD.js";
80
- import "./update-runner-DN2BTeSq.js";
80
+ import "./update-runner-B8SfUp1z.js";
81
81
  import "./auth-Gm92Fy-m.js";
82
82
  import "./audit-BNrBfvin.js";
83
83
  import "./table-CyQUD_tb.js";
@@ -87,7 +87,7 @@ import "./systemd-DAkFTJ1n.js";
87
87
  import "./service-audit-JNMzFciE.js";
88
88
  import "./node-service-BmpzVCW3.js";
89
89
  import "./channels-status-issues-ootz685N.js";
90
- import "./register.subclis-sN9F-oGM.js";
90
+ import "./register.subclis-BxQRMhnR.js";
91
91
  import "./gateway-rpc-BpuvjhWH.js";
92
92
  import "./help-format-CPUf8bl7.js";
93
93
  import "./koi-DSeIlTiW.js";
@@ -97,12 +97,12 @@ import "./systemd-linger-Dd8gFSsk.js";
97
97
  import "./widearea-dns-BvLyz-B-.js";
98
98
  import "./bonjour-discovery-CbsmJTpg.js";
99
99
  import "./auth-health-CJlVqYBk.js";
100
- import "./doctor-iO2_EWbx.js";
101
- import "./completion-cli-CW_MuBth.js";
100
+ import "./doctor-B6iQgOGt.js";
101
+ import "./completion-cli-DaalWcpY.js";
102
102
  import "./hooks-status-CCng6xgi.js";
103
103
  import "./tui-CnebYKwk.js";
104
104
  import "./channel-options-CVVMJpdy.js";
105
- import { n as buildProgram } from "./program-DewbI9ML.js";
105
+ import { n as buildProgram } from "./program-Bfg-_z0S.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-CEx1FQsk.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-BO_y4B2l.js";
25
25
  import { n as setupChannels } from "./onboard-channels-BaEVJyLu.js";
26
26
  import { l as healthCommand, n as ensureControlUiAssetsBuilt, s as formatHealthChannelLines, t as formatHealthCheckFailure, u as resolveHeartbeatSummaryForKoi } from "./health-format-BW3XaFPD.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-DN2BTeSq.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-B8SfUp1z.js";
28
28
  import { i as probeGateway, t as runSecurityAudit } from "./audit-BNrBfvin.js";
29
29
  import { t as renderTable } from "./table-CyQUD_tb.js";
30
30
  import { t as buildWorkspaceSkillStatus } from "./skills-status-B_WP7jbi.js";
@@ -34,7 +34,7 @@ import { o as readLastGatewayErrorLine } from "./service-audit-JNMzFciE.js";
34
34
  import { t as resolveNodeService } from "./node-service-BmpzVCW3.js";
35
35
  import { t as collectChannelStatusIssues } from "./channels-status-issues-ootz685N.js";
36
36
  import { i as redactSecrets, n as formatDuration$1, r as formatGatewayAuthUsed, t as formatAge$1 } from "./format-DRWFH_Sh.js";
37
- import { r as installCompletion } from "./completion-cli-CW_MuBth.js";
37
+ import { r as installCompletion } from "./completion-cli-DaalWcpY.js";
38
38
  import { t as buildWorkspaceHookStatus } from "./hooks-status-CCng6xgi.js";
39
39
  import { t as runTui } from "./tui-CnebYKwk.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-CeYPOTBg.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";
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";
@@ -33,7 +33,7 @@ import { exec } from "child_process";
33
33
  import { createReadStream as createReadStream$1, createWriteStream as createWriteStream$1, promises as promises$1 } from "fs";
34
34
  import { Readable, Transform } from "stream";
35
35
  import { platform, release, tmpdir as tmpdir$1 } from "os";
36
- import EventEmitter$1, { EventEmitter, once } from "events";
36
+ import EventEmitter, { EventEmitter as EventEmitter$1, once } from "events";
37
37
  import { promisify as promisify$1 } from "util";
38
38
  import { join as join$1 } from "path";
39
39
  import * as Crypto from "crypto";
@@ -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 AjvPkg from "ajv";
45
+ import AjvModule 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 AjvPkg({
20481
+ const ajv$1 = new AjvModule({
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 = JSON5) {
21675
+ function parseConfigJson5(raw, json5$1 = json5) {
21676
21676
  try {
21677
21677
  return {
21678
21678
  ok: true,
21679
- parsed: json5.parse(raw)
21679
+ parsed: json5$1.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 AjvPkg({
47054
+ const ajv = new AjvModule({
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-CeYPOTBg.js").then((n) => n.t);
66932
+ const { discoverAuthStorage, discoverModels } = await import("./pi-model-discovery-B1kAe0kx.js").then((n) => n.t);
66933
66933
  await ensureSKYKOIModelsJson(loadConfig());
66934
66934
  const koiDir = resolveSKYKOIKoiDir();
66935
66935
  const models = discoverModels(discoverAuthStorage(koiDir), koiDir).getAll();
@@ -226972,7 +226972,7 @@ const BUFFERABLE_EVENT_SET = new Set([
226972
226972
  * making the data processing more efficient.
226973
226973
  */
226974
226974
  const makeEventBuffer = (logger) => {
226975
- const ev = new EventEmitter$1();
226975
+ const ev = new EventEmitter();
226976
226976
  const historyCache = /* @__PURE__ */ new Set();
226977
226977
  let data = makeBufferData();
226978
226978
  let isBuffering = false;
@@ -232542,7 +232542,7 @@ var BinaryInfo = class {
232542
232542
 
232543
232543
  //#endregion
232544
232544
  //#region node_modules/.pnpm/@whiskeysockets+baileys@7.0.0-rc.9_audio-decode@2.2.3_sharp@0.34.5/node_modules/@whiskeysockets/baileys/lib/Socket/Client/types.js
232545
- var AbstractSocketClient = class extends EventEmitter {
232545
+ var AbstractSocketClient = class extends EventEmitter$1 {
232546
232546
  constructor(url, config) {
232547
232547
  super();
232548
232548
  this.url = url;
@@ -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 AjvPkg from "ajv";
37
+ import AjvModule 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 = AjvPkg.default || AjvPkg;
59702
+ const Ajv$1 = AjvModule.default || AjvModule;
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 = AjvPkg.default || AjvPkg;
174029
+ const Ajv = AjvModule.default || AjvModule;
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-BxjVk
4
4
  import { t as isTruthyEnvValue } from "./env-CUqrNILf.js";
5
5
  import { N as VERSION } from "./config-BsxzbK4V.js";
6
6
  import { t as formatDocsLink } from "./links-BBLYHZ5A.js";
7
- import { r as registerProgramCommands, t as ensureConfigReady } from "./config-guard-DHG3qz9x.js";
8
- import { a as getCommandPath, d as hasHelpOrVersion, l as getVerboseFlag } from "./register.subclis-sN9F-oGM.js";
7
+ import { r as registerProgramCommands, t as ensureConfigReady } from "./config-guard-D5SCAA0m.js";
8
+ import { a as getCommandPath, d as hasHelpOrVersion, l as getVerboseFlag } from "./register.subclis-BxQRMhnR.js";
9
9
  import { t as ensurePluginRegistryLoaded } from "./plugin-registry-Ciw-sUAZ.js";
10
10
  import { i as hasEmittedCliBanner, n as emitCliBanner, r as formatCliBannerLine } from "./tui-CnebYKwk.js";
11
11
  import { n as resolveCliChannelOptions } from "./channel-options-CVVMJpdy.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-Ca4Vfzwm.js")).registerGatewayCli(program);
127
+ (await import("./gateway-cli-Cum9vDmE.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-djYDSIbr.js")).registerUpdateCli(program);
285
+ (await import("./update-cli-QfCj_I7e.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-CW_MuBth.js").then((n) => n.n)).registerCompletionCli(program);
292
+ (await import("./completion-cli-DaalWcpY.js").then((n) => n.n)).registerCompletionCli(program);
293
293
  }
294
294
  }
295
295
  ];
@@ -61,11 +61,11 @@ import "./tailscale-x-gLtmZu.js";
61
61
  import { t as loadDotEnv } from "./dotenv-BbZs4Qu1.js";
62
62
  import { t as ensureSKYKOICliOnPath } from "./path-env--AP-bd4Y.js";
63
63
  import { g as assertSupportedRuntime } from "./daemon-runtime-ChW6UY06.js";
64
- import { n as findRoutedCommand, t as ensureConfigReady } from "./config-guard-DHG3qz9x.js";
64
+ import { n as findRoutedCommand, t as ensureConfigReady } from "./config-guard-D5SCAA0m.js";
65
65
  import "./logging-DyKAhfdr.js";
66
66
  import "./note-Bc0VNokI.js";
67
67
  import "./clack-prompter-DYU2ViJ7.js";
68
- import "./onboarding-DWpuk-eh.js";
68
+ import "./onboarding-7UXgpT9i.js";
69
69
  import "./onboard-skills-BO_y4B2l.js";
70
70
  import "./github-copilot-auth-CPvyu_wi.js";
71
71
  import "./onboard-channels-BaEVJyLu.js";
@@ -74,7 +74,7 @@ import "./archive-BU-E-CVj.js";
74
74
  import "./skill-scanner-DBQ7e8oD.js";
75
75
  import "./installs-qluGXMD2.js";
76
76
  import "./health-format-BW3XaFPD.js";
77
- import "./update-runner-DN2BTeSq.js";
77
+ import "./update-runner-B8SfUp1z.js";
78
78
  import "./auth-Gm92Fy-m.js";
79
79
  import "./audit-BNrBfvin.js";
80
80
  import "./table-CyQUD_tb.js";
@@ -84,7 +84,7 @@ import "./systemd-DAkFTJ1n.js";
84
84
  import "./service-audit-JNMzFciE.js";
85
85
  import "./node-service-BmpzVCW3.js";
86
86
  import "./channels-status-issues-ootz685N.js";
87
- import { a as getCommandPath, c as getPrimaryCommand, d as hasHelpOrVersion } from "./register.subclis-sN9F-oGM.js";
87
+ import { a as getCommandPath, c as getPrimaryCommand, d as hasHelpOrVersion } from "./register.subclis-BxQRMhnR.js";
88
88
  import "./gateway-rpc-BpuvjhWH.js";
89
89
  import "./help-format-CPUf8bl7.js";
90
90
  import "./koi-DSeIlTiW.js";
@@ -94,8 +94,8 @@ import "./systemd-linger-Dd8gFSsk.js";
94
94
  import "./widearea-dns-BvLyz-B-.js";
95
95
  import "./bonjour-discovery-CbsmJTpg.js";
96
96
  import "./auth-health-CJlVqYBk.js";
97
- import "./doctor-iO2_EWbx.js";
98
- import "./completion-cli-CW_MuBth.js";
97
+ import "./doctor-B6iQgOGt.js";
98
+ import "./completion-cli-DaalWcpY.js";
99
99
  import "./hooks-status-CCng6xgi.js";
100
100
  import { n as emitCliBanner } from "./tui-CnebYKwk.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-DewbI9ML.js").then((n) => n.t);
154
+ const { buildProgram } = await import("./program-Bfg-_z0S.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-sN9F-oGM.js").then((n) => n.i);
164
+ const { registerSubCliByName } = await import("./register.subclis-BxQRMhnR.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-BU-E-CVj.js";
68
68
  import "./skill-scanner-DBQ7e8oD.js";
69
69
  import "./installs-qluGXMD2.js";
70
70
  import "./health-format-BW3XaFPD.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-DN2BTeSq.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-B8SfUp1z.js";
72
72
  import "./auth-Gm92Fy-m.js";
73
73
  import { t as renderTable } from "./table-CyQUD_tb.js";
74
74
  import "./skills-status-B_WP7jbi.js";
@@ -76,12 +76,12 @@ import "./service-nXGaK9Aj.js";
76
76
  import "./systemd-DAkFTJ1n.js";
77
77
  import "./service-audit-JNMzFciE.js";
78
78
  import "./channels-status-issues-ootz685N.js";
79
- import "./register.subclis-sN9F-oGM.js";
79
+ import "./register.subclis-BxQRMhnR.js";
80
80
  import { t as formatHelpExamples } from "./help-format-CPUf8bl7.js";
81
81
  import "./systemd-linger-Dd8gFSsk.js";
82
82
  import "./auth-health-CJlVqYBk.js";
83
- import { t as doctorCommand } from "./doctor-iO2_EWbx.js";
84
- import { r as installCompletion } from "./completion-cli-CW_MuBth.js";
83
+ import { t as doctorCommand } from "./doctor-B6iQgOGt.js";
84
+ import { r as installCompletion } from "./completion-cli-DaalWcpY.js";
85
85
  import "./shared-DZZeJvs4.js";
86
86
  import { r as runDaemonRestart } from "./daemon-cli-XVYoDyU1.js";
87
87
  import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from "./update-sC2R3inE.js";
@@ -6,7 +6,7 @@ import { N as VERSION } from "./config-BsxzbK4V.js";
6
6
  import { _ as parseSemver } from "./daemon-runtime-ChW6UY06.js";
7
7
  import { t as note } from "./note-Bc0VNokI.js";
8
8
  import { i as resolveControlUiDistIndexPathForRoot, r as resolveControlUiDistIndexHealth } from "./health-format-BW3XaFPD.js";
9
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-CW_MuBth.js";
9
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-DaalWcpY.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.136",
3
+ "version": "2026.3.138",
4
4
  "description": "SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.",
5
5
  "keywords": [
6
6
  "skykoi",