skykoi 2026.3.355 → 2026.3.356

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.355",
2
+ "version": "2026.3.356",
3
3
  "commit": "8b715c81e3dc58989509e5f1c5b859eb685aebfc",
4
- "builtAt": "2026-06-25T04:18:59.577Z"
4
+ "builtAt": "2026-06-25T04:46:25.356Z"
5
5
  }
@@ -1 +1 @@
1
- f81aad70641eb7b35c097973bd9e0e649a535381f10a598d40c1ff881152ffd4
1
+ b13e0548ff1122fce894519a5e2b1d59be5b291be364f75f73dd08501b6e9edc
@@ -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-DIQrQ41E.js";
3
+ import { n as registerSubCliByName, t as getSubCliEntries } from "./register.subclis-D5mKiuVU.js";
4
4
  import path from "node:path";
5
5
  import os from "node:os";
6
6
  import fs from "node:fs/promises";
@@ -27,7 +27,7 @@ import { t as resolveChannelDefaultAccountId } from "./helpers-y1KKH5pe.js";
27
27
  import { n as logConfigUpdated, t as formatConfigPath } from "./logging-1Q_KlUsW.js";
28
28
  import { t as WizardCancelledError } from "./prompts-yNyvMdpp.js";
29
29
  import { t as createClackPrompter } from "./clack-prompter-B9o3eQeW.js";
30
- 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-mxxS_DeV.js";
30
+ 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-Cj-xZcoo.js";
31
31
  import { d as applyAuthChoice, f as applyOpenAIConfig, h as promptAuthChoiceGrouped, m as applyGoogleGeminiModelDefault, p as upsertSharedEnvVar, u as warnIfModelConfigLooksOff } from "./onboard-skills-DHhkh6g_.js";
32
32
  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-F0ySbZEi.js";
33
33
  import { n as setupChannels } from "./onboard-channels-asx1n7TU.js";
@@ -35,7 +35,7 @@ import { i as healthCommand } from "./health-format-GcC_zaJr.js";
35
35
  import { t as renderTable } from "./table-B3RHVa0g.js";
36
36
  import { t as resolveGatewayService } from "./service-BGkVTESM.js";
37
37
  import { r as isSystemdUserServiceAvailable } from "./systemd-BzTSelz8.js";
38
- import { l as getVerboseFlag, o as getFlagValue, r as registerSubCliCommands, s as getPositiveIntFlagValue, u as hasFlag } from "./register.subclis-DIQrQ41E.js";
38
+ import { l as getVerboseFlag, o as getFlagValue, r as registerSubCliCommands, s as getPositiveIntFlagValue, u as hasFlag } from "./register.subclis-D5mKiuVU.js";
39
39
  import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-CIxOsvvC.js";
40
40
  import { t as formatHelpExamples } from "./help-format-BVBm9rU4.js";
41
41
  import { t as adminUnlockCommand } from "./admin-unlock-Dr4FqRVP.js";
@@ -46,7 +46,7 @@ import { i as CONFIGURE_WIZARD_SECTIONS, n as configureCommand, r as configureCo
46
46
  import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-r19-i0S0.js";
47
47
  import { n as ensureSystemdUserLingerNonInteractive } from "./systemd-linger-Be49_NdF.js";
48
48
  import { t as loginCommand } from "./login-DKn2AlFl.js";
49
- import { n as loadAndMaybeMigrateDoctorConfig, t as doctorCommand } from "./doctor-ChmEXoWB.js";
49
+ import { n as loadAndMaybeMigrateDoctorConfig, t as doctorCommand } from "./doctor-BrXgss86.js";
50
50
  import { fileURLToPath } from "node:url";
51
51
  import fs from "node:fs";
52
52
  import path from "node:path";
@@ -3105,7 +3105,7 @@ function registerLoginCommand(program) {
3105
3105
  console.log(theme.muted(` user=${result.userId} org=${result.orgId}`));
3106
3106
  }
3107
3107
  if (opts.chat !== false && result.gatewayUrl && process.stdin.isTTY && process.stdout.isTTY) {
3108
- const { runTui } = await import("./tui-DJ8UTzE-.js").then((n) => n.n);
3108
+ const { runTui } = await import("./tui-Deb7TsXC.js").then((n) => n.n);
3109
3109
  console.log(theme.muted("\n Opening your koi chat…\n"));
3110
3110
  await runTui({
3111
3111
  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-BzTSelz8.js";
35
35
  import { t as readLastGatewayErrorLine } from "./diagnostics-CFV2YxpG.js";
36
36
  import { t as collectChannelStatusIssues } from "./channels-status-issues-BLygTpUh.js";
37
- import { n as doctorShellCompletion } from "./doctor-completion-C1Hyrx0n.js";
37
+ import { n as doctorShellCompletion } from "./doctor-completion-D-C6FT3B.js";
38
38
  import { n as resolveControlUiDistIndexHealth, r as resolveControlUiDistIndexPathForRoot } from "./control-ui-assets-B0N-n2rD.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-r19-i0S0.js";
40
40
  import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-Be49_NdF.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-DRoVRuAi.js";
5
5
  import { c as compareSemverStrings, s as checkUpdateStatus } from "./update-runner-odTAl-uh.js";
6
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-BjlaEyC8.js";
6
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-C0akM6Eu.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-DfdQZcqG.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
250
+ import("./run-main-41TaoYcd.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
  });
@@ -87,7 +87,7 @@ import { t as resolveChannelDefaultAccountId } from "./helpers-y1KKH5pe.js";
87
87
  import "./logging-1Q_KlUsW.js";
88
88
  import "./note-DRoVRuAi.js";
89
89
  import { t as WizardCancelledError } from "./prompts-yNyvMdpp.js";
90
- 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-mxxS_DeV.js";
90
+ 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-Cj-xZcoo.js";
91
91
  import { n as installSkill } from "./onboard-skills-DHhkh6g_.js";
92
92
  import "./github-copilot-auth-F0ySbZEi.js";
93
93
  import "./onboard-channels-asx1n7TU.js";
@@ -106,18 +106,18 @@ import { p as resolveGatewayStateDir } from "./systemd-BzTSelz8.js";
106
106
  import "./diagnostics-CFV2YxpG.js";
107
107
  import "./node-service-BzD7Bqwc.js";
108
108
  import "./channels-status-issues-BLygTpUh.js";
109
- import "./doctor-completion-C1Hyrx0n.js";
110
- import "./register.subclis-DIQrQ41E.js";
109
+ import "./doctor-completion-D-C6FT3B.js";
110
+ import "./register.subclis-D5mKiuVU.js";
111
111
  import { a as createOutboundSendDeps$1, i as resolveKoiOutboundTarget, r as resolveKoiDeliveryPlan, t as koiCommand } from "./koi-DDiSOXMj.js";
112
112
  import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-B0N-n2rD.js";
113
113
  import "./daemon-runtime-r19-i0S0.js";
114
114
  import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-Bb9eE_C1.js";
115
115
  import { n as discoverGatewayBeacons } from "./bonjour-discovery-Du_kGDHQ.js";
116
116
  import "./ensure-local-gateway-VbJtdpui.js";
117
- import "./completion-cli-BjlaEyC8.js";
117
+ import "./completion-cli-C0akM6Eu.js";
118
118
  import "./service-audit-C3mNLBya.js";
119
119
  import { i as shouldIncludeHook, n as loadWorkspaceHookEntries, r as resolveHookConfig } from "./hooks-status-B6CvIDFx.js";
120
- import "./tui-DJ8UTzE-.js";
120
+ import "./tui-Deb7TsXC.js";
121
121
  import { t as buildChannelAccountSnapshot } from "./status-JjSTFqPa.js";
122
122
  import "./shared-BcQeo3Um.js";
123
123
  import { a as runDaemonStop, i as runDaemonStart, n as runDaemonStatus, o as runDaemonUninstall, r as runDaemonRestart, s as runDaemonInstall } from "./daemon-cli-D7IdOYYc.js";
package/dist/index.js CHANGED
@@ -74,11 +74,11 @@ import { t as isMainModule } from "./is-main-Cs8_TnVO.js";
74
74
  import { t as ensureSKYKOICliOnPath } from "./path-env-gxBbRHVZ.js";
75
75
  import { t as assertSupportedRuntime } from "./runtime-guard-C80qkv4W.js";
76
76
  import "./ports-YIGvuUFy.js";
77
- import "./config-guard-BlMGID7Q.js";
77
+ import "./config-guard-DXJE1Bnw.js";
78
78
  import "./logging-1Q_KlUsW.js";
79
79
  import "./note-DRoVRuAi.js";
80
80
  import "./clack-prompter-B9o3eQeW.js";
81
- import "./onboarding-mxxS_DeV.js";
81
+ import "./onboarding-Cj-xZcoo.js";
82
82
  import "./onboard-skills-DHhkh6g_.js";
83
83
  import "./github-copilot-auth-F0ySbZEi.js";
84
84
  import "./onboard-channels-asx1n7TU.js";
@@ -97,8 +97,8 @@ import "./systemd-BzTSelz8.js";
97
97
  import "./diagnostics-CFV2YxpG.js";
98
98
  import "./node-service-BzD7Bqwc.js";
99
99
  import "./channels-status-issues-BLygTpUh.js";
100
- import "./doctor-completion-C1Hyrx0n.js";
101
- import "./register.subclis-DIQrQ41E.js";
100
+ import "./doctor-completion-D-C6FT3B.js";
101
+ import "./register.subclis-D5mKiuVU.js";
102
102
  import "./gateway-rpc-CIxOsvvC.js";
103
103
  import "./help-format-BVBm9rU4.js";
104
104
  import "./admin-unlock-Dr4FqRVP.js";
@@ -114,13 +114,13 @@ import "./ensure-local-gateway-VbJtdpui.js";
114
114
  import "./login-DKn2AlFl.js";
115
115
  import "./channel-auth-Cq_cTCod.js";
116
116
  import "./auth-health-DX1wRWrd.js";
117
- import "./doctor-ChmEXoWB.js";
118
- import "./completion-cli-BjlaEyC8.js";
117
+ import "./doctor-BrXgss86.js";
118
+ import "./completion-cli-C0akM6Eu.js";
119
119
  import "./service-audit-C3mNLBya.js";
120
120
  import "./hooks-status-B6CvIDFx.js";
121
- import "./tui-DJ8UTzE-.js";
121
+ import "./tui-Deb7TsXC.js";
122
122
  import "./channel-options-pOq6nJP-.js";
123
- import { n as buildProgram } from "./program-bX6LVmYM.js";
123
+ import { n as buildProgram } from "./program-C2cCCjFo.js";
124
124
  import process from "node:process";
125
125
  import { fileURLToPath } from "node:url";
126
126
 
@@ -37,12 +37,12 @@ import { t as readLastGatewayErrorLine } from "./diagnostics-CFV2YxpG.js";
37
37
  import { t as resolveNodeService } from "./node-service-BzD7Bqwc.js";
38
38
  import { t as collectChannelStatusIssues } from "./channels-status-issues-BLygTpUh.js";
39
39
  import { i as redactSecrets, n as formatDuration$1, r as formatGatewayAuthUsed, t as formatAge$1 } from "./format-IoT-eUxs.js";
40
- import { a as formatUpdateOneLiner, i as formatUpdateAvailableHint, o as getUpdateCheckResult, r as ensureCompletionCacheExists, s as resolveUpdateAvailability, t as checkShellCompletionStatus } from "./doctor-completion-C1Hyrx0n.js";
40
+ import { a as formatUpdateOneLiner, i as formatUpdateAvailableHint, o as getUpdateCheckResult, r as ensureCompletionCacheExists, s as resolveUpdateAvailability, t as checkShellCompletionStatus } from "./doctor-completion-D-C6FT3B.js";
41
41
  import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-B0N-n2rD.js";
42
42
  import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-r19-i0S0.js";
43
- import { r as installCompletion } from "./completion-cli-BjlaEyC8.js";
43
+ import { r as installCompletion } from "./completion-cli-C0akM6Eu.js";
44
44
  import { t as buildWorkspaceHookStatus } from "./hooks-status-B6CvIDFx.js";
45
- import { t as runTui } from "./tui-DJ8UTzE-.js";
45
+ import { t as runTui } from "./tui-Deb7TsXC.js";
46
46
  import fs from "node:fs";
47
47
  import path from "node:path";
48
48
  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-CBWcyyqn.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-szlzYGsC.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";
@@ -33,7 +33,7 @@ import { exec as exec$1 } 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, { EventEmitter as EventEmitter$1, once } from "events";
36
+ import EventEmitter$1, { EventEmitter, 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 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";
@@ -20541,7 +20541,7 @@ function loadPluginManifestRegistry(params) {
20541
20541
 
20542
20542
  //#endregion
20543
20543
  //#region src/plugins/schema-validator.ts
20544
- const ajv$1 = new AjvModule({
20544
+ const ajv$1 = new AjvPkg({
20545
20545
  allErrors: true,
20546
20546
  strict: false,
20547
20547
  removeAdditional: false
@@ -48187,7 +48187,7 @@ const PROTOCOL_VERSION = 3;
48187
48187
 
48188
48188
  //#endregion
48189
48189
  //#region src/gateway/protocol/index.ts
48190
- const ajv = new AjvModule({
48190
+ const ajv = new AjvPkg({
48191
48191
  allErrors: true,
48192
48192
  strict: false,
48193
48193
  removeAdditional: false
@@ -68060,7 +68060,7 @@ function enqueueSystemEvent(text, options) {
68060
68060
  const MODEL_CACHE = /* @__PURE__ */ new Map();
68061
68061
  (async () => {
68062
68062
  try {
68063
- const { discoverAuthStorage, discoverModels } = await import("./pi-model-discovery-CBWcyyqn.js").then((n) => n.t);
68063
+ const { discoverAuthStorage, discoverModels } = await import("./pi-model-discovery-szlzYGsC.js").then((n) => n.t);
68064
68064
  await ensureSKYKOIModelsJson(loadConfig());
68065
68065
  const koiDir = resolveSKYKOIKoiDir();
68066
68066
  const models = discoverModels(discoverAuthStorage(koiDir), koiDir).getAll();
@@ -228308,7 +228308,7 @@ const BUFFERABLE_EVENT_SET = new Set([
228308
228308
  * making the data processing more efficient.
228309
228309
  */
228310
228310
  const makeEventBuffer = (logger) => {
228311
- const ev = new EventEmitter();
228311
+ const ev = new EventEmitter$1();
228312
228312
  const historyCache = /* @__PURE__ */ new Set();
228313
228313
  let data = makeBufferData();
228314
228314
  let isBuffering = false;
@@ -233878,7 +233878,7 @@ var BinaryInfo = class {
233878
233878
 
233879
233879
  //#endregion
233880
233880
  //#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
233881
- var AbstractSocketClient = class extends EventEmitter$1 {
233881
+ var AbstractSocketClient = class extends EventEmitter {
233882
233882
  constructor(url, config) {
233883
233883
  super();
233884
233884
  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 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()))
@@ -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-B0HTM-CT.js";
8
- import { i as registerProgramCommands, n as PLUGIN_CLI_COMMANDS, t as ensureConfigReady } from "./config-guard-BlMGID7Q.js";
9
- import { a as getCommandPath, d as hasHelpOrVersion, l as getVerboseFlag } from "./register.subclis-DIQrQ41E.js";
8
+ import { i as registerProgramCommands, n as PLUGIN_CLI_COMMANDS, t as ensureConfigReady } from "./config-guard-DXJE1Bnw.js";
9
+ import { a as getCommandPath, d as hasHelpOrVersion, l as getVerboseFlag } from "./register.subclis-D5mKiuVU.js";
10
10
  import { t as ensurePluginRegistryLoaded } from "./plugin-registry-CSFriXMz.js";
11
- import { a as hasEmittedCliBanner, i as formatCliBannerLine, r as emitCliBanner } from "./tui-DJ8UTzE-.js";
11
+ import { a as hasEmittedCliBanner, i as formatCliBannerLine, r as emitCliBanner } from "./tui-Deb7TsXC.js";
12
12
  import { n as resolveCliChannelOptions } from "./channel-options-pOq6nJP-.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-FqkwvdIu.js")).registerGatewayCli(program);
127
+ (await import("./gateway-cli-HZCODKgo.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-CPXEfp-z.js")).registerTuiCli(program);
197
+ (await import("./tui-cli-DXgM8Bdh.js")).registerTuiCli(program);
198
198
  }
199
199
  },
200
200
  {
@@ -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-DPMf97L6.js")).registerUpdateCli(program);
285
+ (await import("./update-cli-D4e0ele4.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-BjlaEyC8.js").then((n) => n.n)).registerCompletionCli(program);
292
+ (await import("./completion-cli-C0akM6Eu.js").then((n) => n.n)).registerCompletionCli(program);
293
293
  }
294
294
  }
295
295
  ];
@@ -71,11 +71,11 @@ import "./deps-Bmd2DQcn.js";
71
71
  import "./tailscale-BO36kRfh.js";
72
72
  import { t as ensureSKYKOICliOnPath } from "./path-env-gxBbRHVZ.js";
73
73
  import { t as assertSupportedRuntime } from "./runtime-guard-C80qkv4W.js";
74
- import { n as PLUGIN_CLI_COMMANDS, r as findRoutedCommand, t as ensureConfigReady } from "./config-guard-BlMGID7Q.js";
74
+ import { n as PLUGIN_CLI_COMMANDS, r as findRoutedCommand, t as ensureConfigReady } from "./config-guard-DXJE1Bnw.js";
75
75
  import "./logging-1Q_KlUsW.js";
76
76
  import "./note-DRoVRuAi.js";
77
77
  import "./clack-prompter-B9o3eQeW.js";
78
- import "./onboarding-mxxS_DeV.js";
78
+ import "./onboarding-Cj-xZcoo.js";
79
79
  import "./onboard-skills-DHhkh6g_.js";
80
80
  import "./github-copilot-auth-F0ySbZEi.js";
81
81
  import "./onboard-channels-asx1n7TU.js";
@@ -94,8 +94,8 @@ import "./systemd-BzTSelz8.js";
94
94
  import "./diagnostics-CFV2YxpG.js";
95
95
  import "./node-service-BzD7Bqwc.js";
96
96
  import "./channels-status-issues-BLygTpUh.js";
97
- import "./doctor-completion-C1Hyrx0n.js";
98
- import { a as getCommandPath, c as getPrimaryCommand, d as hasHelpOrVersion } from "./register.subclis-DIQrQ41E.js";
97
+ import "./doctor-completion-D-C6FT3B.js";
98
+ import { a as getCommandPath, c as getPrimaryCommand, d as hasHelpOrVersion } from "./register.subclis-D5mKiuVU.js";
99
99
  import "./gateway-rpc-CIxOsvvC.js";
100
100
  import "./help-format-BVBm9rU4.js";
101
101
  import "./admin-unlock-Dr4FqRVP.js";
@@ -111,11 +111,11 @@ import "./ensure-local-gateway-VbJtdpui.js";
111
111
  import "./login-DKn2AlFl.js";
112
112
  import "./channel-auth-Cq_cTCod.js";
113
113
  import "./auth-health-DX1wRWrd.js";
114
- import "./doctor-ChmEXoWB.js";
115
- import "./completion-cli-BjlaEyC8.js";
114
+ import "./doctor-BrXgss86.js";
115
+ import "./completion-cli-C0akM6Eu.js";
116
116
  import "./service-audit-C3mNLBya.js";
117
117
  import "./hooks-status-B6CvIDFx.js";
118
- import { r as emitCliBanner } from "./tui-DJ8UTzE-.js";
118
+ import { r as emitCliBanner } from "./tui-Deb7TsXC.js";
119
119
  import process$1 from "node:process";
120
120
  import { fileURLToPath } from "node:url";
121
121
  import fs from "node:fs";
@@ -169,7 +169,7 @@ async function runCli(argv = process$1.argv) {
169
169
  assertSupportedRuntime();
170
170
  if (await tryRouteCli(normalizedArgv)) return;
171
171
  enableConsoleCapture();
172
- const { buildProgram } = await import("./program-bX6LVmYM.js").then((n) => n.t);
172
+ const { buildProgram } = await import("./program-C2cCCjFo.js").then((n) => n.t);
173
173
  const program = buildProgram();
174
174
  installUnhandledRejectionHandler();
175
175
  process$1.on("uncaughtException", (error) => {
@@ -202,7 +202,7 @@ async function runCli(argv = process$1.argv) {
202
202
  }
203
203
  const primary = getPrimaryCommand(parseArgv);
204
204
  if (primary) {
205
- const { registerSubCliByName } = await import("./register.subclis-DIQrQ41E.js").then((n) => n.i);
205
+ const { registerSubCliByName } = await import("./register.subclis-D5mKiuVU.js").then((n) => n.i);
206
206
  await registerSubCliByName(program, primary);
207
207
  }
208
208
  if (!!primary && PLUGIN_CLI_COMMANDS.has(primary)) {
@@ -2037,6 +2037,10 @@ function createEventHandlers(context) {
2037
2037
  const sessionRuns = /* @__PURE__ */ new Map();
2038
2038
  let streamAssembler = new TuiStreamAssembler();
2039
2039
  let lastSessionKey = state.currentSessionKey;
2040
+ let devLastSystemPrompt = null;
2041
+ let devLastWorldModel = null;
2042
+ const devLastContextFiles = /* @__PURE__ */ new Map();
2043
+ let devLastHistoryLen = 0;
2040
2044
  const pruneRunMap = (runs) => {
2041
2045
  if (runs.size <= 200) return;
2042
2046
  const keepUntil = Date.now() - 600 * 1e3;
@@ -2056,6 +2060,10 @@ function createEventHandlers(context) {
2056
2060
  sessionRuns.clear();
2057
2061
  streamAssembler = new TuiStreamAssembler();
2058
2062
  clearLocalRunIds?.();
2063
+ devLastSystemPrompt = null;
2064
+ devLastWorldModel = null;
2065
+ devLastContextFiles.clear();
2066
+ devLastHistoryLen = 0;
2059
2067
  };
2060
2068
  const noteSessionRun = (runId) => {
2061
2069
  sessionRuns.set(runId, Date.now());
@@ -2168,19 +2176,50 @@ function createEventHandlers(context) {
2168
2176
  const prompt = asString(data.systemPrompt, "");
2169
2177
  const wm = asString(data.worldModel, "");
2170
2178
  const files = data.contextFiles ?? [];
2179
+ const isFirst = devLastSystemPrompt === null;
2171
2180
  const sections = [];
2172
- sections.push(`[dev] ── injection: system prompt (${data.length} chars) ──`);
2173
- if (prompt) sections.push(prompt);
2174
- if (wm) sections.push(`\n[dev] ── world model ──\n${wm}`);
2175
- if (files.length > 0) for (const f of files) sections.push(`\n[dev] ── context file: ${f.path} (${f.length} chars) ──\n${f.content}`);
2176
- chatLog.addSystem(sections.join("\n"));
2181
+ if (isFirst) {
2182
+ sections.push(`[dev] ── injection: system prompt (${data.length} chars) ──`);
2183
+ if (prompt) sections.push(prompt);
2184
+ if (wm) sections.push(`\n[dev] ── world model ──\n${wm}`);
2185
+ for (const f of files) sections.push(`\n[dev] ── context file: ${f.path} (${f.length} chars) ──\n${f.content}`);
2186
+ } else {
2187
+ const changes = [];
2188
+ if (prompt && prompt !== devLastSystemPrompt) changes.push(` system prompt changed (${devLastSystemPrompt?.length ?? 0} → ${prompt.length} chars)`);
2189
+ if (wm && wm !== devLastWorldModel) changes.push(`[dev] ── world model (changed) ──\n${wm}`);
2190
+ for (const f of files) {
2191
+ const prev = devLastContextFiles.get(f.path);
2192
+ if (prev === void 0) changes.push(`[dev] ── context file (new): ${f.path} ──\n${f.content}`);
2193
+ else if (prev !== f.content) changes.push(`[dev] ── context file (changed): ${f.path} ──\n${f.content}`);
2194
+ }
2195
+ for (const oldPath of devLastContextFiles.keys()) if (!files.some((f) => f.path === oldPath)) changes.push(`[dev] ── context file (removed): ${oldPath} ──`);
2196
+ if (changes.length > 0) {
2197
+ sections.push(`[dev] ── injection delta (${data.length} chars) ──`);
2198
+ sections.push(...changes);
2199
+ } else sections.push(`[dev] ── injection: unchanged (${data.length} chars) ──`);
2200
+ }
2201
+ devLastSystemPrompt = prompt;
2202
+ devLastWorldModel = wm;
2203
+ devLastContextFiles.clear();
2204
+ for (const f of files) devLastContextFiles.set(f.path, f.content);
2205
+ if (sections.length > 0) chatLog.addSystem(sections.join("\n"));
2177
2206
  } else if (phase === "model_call") {
2178
2207
  const history = data.history ?? [];
2179
2208
  const prompt = asString(data.prompt, "");
2209
+ const imgCount = data.imageCount ?? 0;
2210
+ const isFirst = devLastHistoryLen === 0;
2180
2211
  const sections = [];
2181
- sections.push(`[dev] ── injection: model call (${data.historyLength} messages, ${data.imageCount ?? 0} images) ──`);
2182
- sections.push(` prompt: ${prompt}`);
2183
- for (const m of history) sections.push(`\n ── [${m.role}] (${m.length} chars) ──\n${m.content}`);
2212
+ if (isFirst) {
2213
+ sections.push(`[dev] ── model call (${history.length} messages, ${imgCount} images) ──`);
2214
+ sections.push(` prompt: ${prompt}`);
2215
+ for (const m of history) sections.push(`\n ── [${m.role}] (${m.length} chars) ──\n${m.content}`);
2216
+ } else {
2217
+ const newMessages = history.slice(devLastHistoryLen);
2218
+ sections.push(`[dev] ── model call (+${newMessages.length} messages, ${history.length} total, ${imgCount} images) ──`);
2219
+ sections.push(` prompt: ${prompt}`);
2220
+ for (const m of newMessages) sections.push(`\n ── [${m.role}] (${m.length} chars) ──\n${m.content}`);
2221
+ }
2222
+ devLastHistoryLen = history.length;
2184
2223
  chatLog.addSystem(sections.join("\n"));
2185
2224
  }
2186
2225
  tui.requestRender();
@@ -48,7 +48,7 @@ import "./systemd-BzTSelz8.js";
48
48
  import "./diagnostics-CFV2YxpG.js";
49
49
  import "./daemon-runtime-r19-i0S0.js";
50
50
  import "./ensure-local-gateway-VbJtdpui.js";
51
- import { t as runTui } from "./tui-DJ8UTzE-.js";
51
+ import { t as runTui } from "./tui-Deb7TsXC.js";
52
52
 
53
53
  //#region src/cli/tui-cli.ts
54
54
  function registerTuiCli(program) {
@@ -87,15 +87,15 @@ import "./service-BGkVTESM.js";
87
87
  import "./systemd-BzTSelz8.js";
88
88
  import "./diagnostics-CFV2YxpG.js";
89
89
  import "./channels-status-issues-BLygTpUh.js";
90
- import { a as formatUpdateOneLiner, i as formatUpdateAvailableHint, r as ensureCompletionCacheExists, s as resolveUpdateAvailability, t as checkShellCompletionStatus } from "./doctor-completion-C1Hyrx0n.js";
91
- import "./register.subclis-DIQrQ41E.js";
90
+ import { a as formatUpdateOneLiner, i as formatUpdateAvailableHint, r as ensureCompletionCacheExists, s as resolveUpdateAvailability, t as checkShellCompletionStatus } from "./doctor-completion-D-C6FT3B.js";
91
+ import "./register.subclis-D5mKiuVU.js";
92
92
  import { t as formatHelpExamples } from "./help-format-BVBm9rU4.js";
93
93
  import "./control-ui-assets-B0N-n2rD.js";
94
94
  import "./daemon-runtime-r19-i0S0.js";
95
95
  import "./systemd-linger-Be49_NdF.js";
96
96
  import "./auth-health-DX1wRWrd.js";
97
- import { t as doctorCommand } from "./doctor-ChmEXoWB.js";
98
- import { r as installCompletion } from "./completion-cli-BjlaEyC8.js";
97
+ import { t as doctorCommand } from "./doctor-BrXgss86.js";
98
+ import { r as installCompletion } from "./completion-cli-C0akM6Eu.js";
99
99
  import "./service-audit-C3mNLBya.js";
100
100
  import "./shared-BcQeo3Um.js";
101
101
  import { r as runDaemonRestart } from "./daemon-cli-D7IdOYYc.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skykoi",
3
- "version": "2026.3.355",
3
+ "version": "2026.3.356",
4
4
  "description": "SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.",
5
5
  "keywords": [
6
6
  "cli",