skykoi 2026.3.305 → 2026.3.306

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.305",
3
- "commit": "c3b8f564afaae32095d8fa8a86ff7fc760f3efda",
4
- "builtAt": "2026-06-10T00:33:10.912Z"
2
+ "version": "2026.3.306",
3
+ "commit": "9999ee0f9079bb8e771d72a840f8fdd0a652352d",
4
+ "builtAt": "2026-06-10T00:38:07.124Z"
5
5
  }
@@ -1 +1 @@
1
- 998fc53de5a09a6b68250d6bcfa5871b483d0eb2be08b36e6aa334c45d0272e4
1
+ 01fcca10cdda006efaacb21d5928040e8b8f8e57531caeba11d5148f18058ec8
@@ -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-DwJLi81I.js";
3
+ import { n as registerSubCliByName, t as getSubCliEntries } from "./register.subclis-DwmIWMRO.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-BMbd4SfJ.js";
27
27
  import { n as logConfigUpdated, t as formatConfigPath } from "./logging-C1O4qtJt.js";
28
28
  import { t as WizardCancelledError } from "./prompts-BI__va99.js";
29
29
  import { t as createClackPrompter } from "./clack-prompter-CjPgjdmC.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-B9HDSfoT.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-CcXUQoly.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-40hDOPuU.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-B3hGj8AR.js";
33
33
  import { n as setupChannels } from "./onboard-channels-CnuOw75T.js";
@@ -35,7 +35,7 @@ import { l as healthCommand } from "./health-format-Db3zyLCs.js";
35
35
  import { t as renderTable } from "./table-3qkY6e1T.js";
36
36
  import { t as resolveGatewayService } from "./service-CYp-ZMZO.js";
37
37
  import { r as isSystemdUserServiceAvailable } from "./systemd-BwrS2WmZ.js";
38
- import { l as getVerboseFlag, o as getFlagValue, r as registerSubCliCommands, s as getPositiveIntFlagValue, u as hasFlag } from "./register.subclis-DwJLi81I.js";
38
+ import { l as getVerboseFlag, o as getFlagValue, r as registerSubCliCommands, s as getPositiveIntFlagValue, u as hasFlag } from "./register.subclis-DwmIWMRO.js";
39
39
  import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-CyFabm9F.js";
40
40
  import { t as formatHelpExamples } from "./help-format-lN5-Ns06.js";
41
41
  import { t as adminUnlockCommand } from "./admin-unlock-kahk3vPh.js";
@@ -45,7 +45,7 @@ import { n as hasExplicitOptions, t as ensurePluginRegistryLoaded } from "./plug
45
45
  import { n as parsePositiveIntOrUndefined, t as collectOption } from "./helpers-Bw8Inumq.js";
46
46
  import { i as CONFIGURE_WIZARD_SECTIONS, n as configureCommand, r as configureCommandWithSections } from "./configure-Bcc7Js2H.js";
47
47
  import { n as ensureSystemdUserLingerNonInteractive } from "./systemd-linger-Dppl0X6M.js";
48
- import { n as loadAndMaybeMigrateDoctorConfig, t as doctorCommand } from "./doctor-C8pLOEuj.js";
48
+ import { n as loadAndMaybeMigrateDoctorConfig, t as doctorCommand } from "./doctor-C5rXAsRc.js";
49
49
  import { fileURLToPath } from "node:url";
50
50
  import fs from "node:fs";
51
51
  import path from "node:path";
@@ -28,7 +28,7 @@ import { n as logConfigUpdated } from "./logging-C1O4qtJt.js";
28
28
  import { t as note$1 } from "./note-DGDjXGAF.js";
29
29
  import { t as applyPluginAutoEnable } from "./plugin-auto-enable-CAaRgRRA.js";
30
30
  import { i as resolveControlUiDistIndexPathForRoot, l as healthCommand, r as resolveControlUiDistIndexHealth, t as formatHealthCheckFailure } from "./health-format-Db3zyLCs.js";
31
- import { c as doctorShellCompletion, t as runGatewayUpdate } from "./update-runner-zpCx3Prk.js";
31
+ import { c as doctorShellCompletion, t as runGatewayUpdate } from "./update-runner-BddVUl4L.js";
32
32
  import { i as resolveGatewayAuth } from "./auth-oGq4xOCr.js";
33
33
  import { t as buildWorkspaceSkillStatus } from "./skills-status-MQ9kq-A7.js";
34
34
  import { a as repairLaunchAgentBootstrap, i as launchAgentPlistExists, n as isLaunchAgentListed, o as resolveGatewayLogPaths, r as isLaunchAgentLoaded, t as resolveGatewayService } from "./service-CYp-ZMZO.js";
package/dist/entry.js CHANGED
@@ -246,7 +246,7 @@ if (!ensureExperimentalWarningSuppressed()) {
246
246
  applyCliProfileEnv({ profile: parsed.profile });
247
247
  process$1.argv = parsed.argv;
248
248
  }
249
- import("./run-main-BB5pJhUY.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
249
+ import("./run-main-BXec4P5Z.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
250
250
  console.error("[SKYKOI] Failed to start CLI:", error instanceof Error ? error.stack ?? error.message : error);
251
251
  process$1.exitCode = 1;
252
252
  });
@@ -83,7 +83,7 @@ import { t as resolveChannelDefaultAccountId } from "./helpers-BMbd4SfJ.js";
83
83
  import "./logging-C1O4qtJt.js";
84
84
  import "./note-DGDjXGAF.js";
85
85
  import { t as WizardCancelledError } from "./prompts-BI__va99.js";
86
- 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-B9HDSfoT.js";
86
+ 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-CcXUQoly.js";
87
87
  import { n as installSkill } from "./onboard-skills-40hDOPuU.js";
88
88
  import "./github-copilot-auth-B3hGj8AR.js";
89
89
  import "./onboard-channels-CnuOw75T.js";
@@ -92,7 +92,7 @@ import "./archive-T83QgLKQ.js";
92
92
  import "./skill-scanner-oZNfZVUO.js";
93
93
  import "./installs-CKlg0au_.js";
94
94
  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-Db3zyLCs.js";
95
- import { S as normalizeUpdateChannel, _ as resolveNpmChannelTag, h as compareSemverStrings, m as checkUpdateStatus, t as runGatewayUpdate, y as DEFAULT_PACKAGE_CHANNEL } from "./update-runner-zpCx3Prk.js";
95
+ import { S as normalizeUpdateChannel, _ as resolveNpmChannelTag, h as compareSemverStrings, m as checkUpdateStatus, t as runGatewayUpdate, y as DEFAULT_PACKAGE_CHANNEL } from "./update-runner-BddVUl4L.js";
96
96
  import { i as resolveGatewayAuth, n as authorizeGatewayConnect, r as isLocalDirectRequest, t as assertGatewayAuthConfigured } from "./auth-oGq4xOCr.js";
97
97
  import { i as probeGateway } from "./audit-BSp4Sphl.js";
98
98
  import "./table-3qkY6e1T.js";
@@ -102,13 +102,13 @@ import { p as resolveGatewayStateDir } from "./systemd-BwrS2WmZ.js";
102
102
  import "./service-audit-CtA-SSNX.js";
103
103
  import "./node-service-CMlPSxKk.js";
104
104
  import "./channels-status-issues-DBv-Cc4W.js";
105
- import "./register.subclis-DwJLi81I.js";
105
+ import "./register.subclis-DwmIWMRO.js";
106
106
  import { a as createOutboundSendDeps$1, i as resolveKoiOutboundTarget, r as resolveKoiDeliveryPlan, t as koiCommand } from "./koi-BVKmhEyw.js";
107
107
  import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-BV1FENWO.js";
108
108
  import { n as discoverGatewayBeacons } from "./bonjour-discovery-BSmdJTHl.js";
109
- import "./completion-cli-BuNf1bwD.js";
109
+ import "./completion-cli-D7ouHmux.js";
110
110
  import { i as shouldIncludeHook, n as loadWorkspaceHookEntries, r as resolveHookConfig } from "./hooks-status-DAyfqKUD.js";
111
- import "./tui-Cp9kceCv.js";
111
+ import "./tui-C-AzBfKZ.js";
112
112
  import { t as buildChannelAccountSnapshot } from "./status-CpFdq_6F.js";
113
113
  import "./shared-BIgTSNKP.js";
114
114
  import { a as runDaemonStop, i as runDaemonStart, n as runDaemonStatus, o as runDaemonUninstall, r as runDaemonRestart, s as runDaemonInstall } from "./daemon-cli-DQwCWMEN.js";
package/dist/index.js CHANGED
@@ -71,11 +71,11 @@ import { t as isMainModule } from "./is-main-IPFNRi1N.js";
71
71
  import { t as ensureSKYKOICliOnPath } from "./path-env-DGypuWGK.js";
72
72
  import { g as assertSupportedRuntime } from "./daemon-runtime-DUaeQ1rH.js";
73
73
  import "./ports-C1z23xs4.js";
74
- import "./config-guard-C9P_JW9x.js";
74
+ import "./config-guard-D6UR-chP.js";
75
75
  import "./logging-C1O4qtJt.js";
76
76
  import "./note-DGDjXGAF.js";
77
77
  import "./clack-prompter-CjPgjdmC.js";
78
- import "./onboarding-B9HDSfoT.js";
78
+ import "./onboarding-CcXUQoly.js";
79
79
  import "./onboard-skills-40hDOPuU.js";
80
80
  import "./github-copilot-auth-B3hGj8AR.js";
81
81
  import "./onboard-channels-CnuOw75T.js";
@@ -84,7 +84,7 @@ import "./archive-T83QgLKQ.js";
84
84
  import "./skill-scanner-oZNfZVUO.js";
85
85
  import "./installs-CKlg0au_.js";
86
86
  import "./health-format-Db3zyLCs.js";
87
- import "./update-runner-zpCx3Prk.js";
87
+ import "./update-runner-BddVUl4L.js";
88
88
  import "./auth-oGq4xOCr.js";
89
89
  import "./audit-BSp4Sphl.js";
90
90
  import "./table-3qkY6e1T.js";
@@ -94,7 +94,7 @@ import "./systemd-BwrS2WmZ.js";
94
94
  import "./service-audit-CtA-SSNX.js";
95
95
  import "./node-service-CMlPSxKk.js";
96
96
  import "./channels-status-issues-DBv-Cc4W.js";
97
- import "./register.subclis-DwJLi81I.js";
97
+ import "./register.subclis-DwmIWMRO.js";
98
98
  import "./gateway-rpc-CyFabm9F.js";
99
99
  import "./help-format-lN5-Ns06.js";
100
100
  import "./admin-unlock-kahk3vPh.js";
@@ -105,12 +105,12 @@ import "./systemd-linger-Dppl0X6M.js";
105
105
  import "./widearea-dns-BV1FENWO.js";
106
106
  import "./bonjour-discovery-BSmdJTHl.js";
107
107
  import "./auth-health-B3BNAX3f.js";
108
- import "./doctor-C8pLOEuj.js";
109
- import "./completion-cli-BuNf1bwD.js";
108
+ import "./doctor-C5rXAsRc.js";
109
+ import "./completion-cli-D7ouHmux.js";
110
110
  import "./hooks-status-DAyfqKUD.js";
111
- import "./tui-Cp9kceCv.js";
111
+ import "./tui-C-AzBfKZ.js";
112
112
  import "./channel-options-DBdUVDw8.js";
113
- import { n as buildProgram } from "./program-D1rFGI4q.js";
113
+ import { n as buildProgram } from "./program-BxZH9HcU.js";
114
114
  import process from "node:process";
115
115
  import { fileURLToPath } from "node:url";
116
116
 
@@ -26,7 +26,7 @@ import { t as WizardCancelledError } from "./prompts-BI__va99.js";
26
26
  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-40hDOPuU.js";
27
27
  import { n as setupChannels } from "./onboard-channels-CnuOw75T.js";
28
28
  import { l as healthCommand, n as ensureControlUiAssetsBuilt, s as formatHealthChannelLines, t as formatHealthCheckFailure, u as resolveHeartbeatSummaryForKoi } from "./health-format-Db3zyLCs.js";
29
- 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-zpCx3Prk.js";
29
+ 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-BddVUl4L.js";
30
30
  import { i as probeGateway, t as runSecurityAudit } from "./audit-BSp4Sphl.js";
31
31
  import { t as renderTable } from "./table-3qkY6e1T.js";
32
32
  import { t as buildWorkspaceSkillStatus } from "./skills-status-MQ9kq-A7.js";
@@ -36,9 +36,9 @@ import { o as readLastGatewayErrorLine } from "./service-audit-CtA-SSNX.js";
36
36
  import { t as resolveNodeService } from "./node-service-CMlPSxKk.js";
37
37
  import { t as collectChannelStatusIssues } from "./channels-status-issues-DBv-Cc4W.js";
38
38
  import { i as redactSecrets, n as formatDuration$1, r as formatGatewayAuthUsed, t as formatAge$1 } from "./format-BReK3zxQ.js";
39
- import { r as installCompletion } from "./completion-cli-BuNf1bwD.js";
39
+ import { r as installCompletion } from "./completion-cli-D7ouHmux.js";
40
40
  import { t as buildWorkspaceHookStatus } from "./hooks-status-DAyfqKUD.js";
41
- import { t as runTui } from "./tui-Cp9kceCv.js";
41
+ import { t as runTui } from "./tui-C-AzBfKZ.js";
42
42
  import fs from "node:fs";
43
43
  import path from "node:path";
44
44
  import os from "node:os";
@@ -5,10 +5,10 @@ import { n as replaceCliName, r as resolveCliName } from "./command-format-CAp_z
5
5
  import { t as isTruthyEnvValue } from "./env-Dliiu-O6.js";
6
6
  import { N as VERSION } from "./config-CJCyYQfd.js";
7
7
  import { t as formatDocsLink } from "./links-RRRDj3kH.js";
8
- import { r as registerProgramCommands, t as ensureConfigReady } from "./config-guard-C9P_JW9x.js";
9
- import { a as getCommandPath, d as hasHelpOrVersion, l as getVerboseFlag } from "./register.subclis-DwJLi81I.js";
8
+ import { r as registerProgramCommands, t as ensureConfigReady } from "./config-guard-D6UR-chP.js";
9
+ import { a as getCommandPath, d as hasHelpOrVersion, l as getVerboseFlag } from "./register.subclis-DwmIWMRO.js";
10
10
  import { t as ensurePluginRegistryLoaded } from "./plugin-registry-BZmH9Pkn.js";
11
- import { i as hasEmittedCliBanner, n as emitCliBanner, r as formatCliBannerLine } from "./tui-Cp9kceCv.js";
11
+ import { i as hasEmittedCliBanner, n as emitCliBanner, r as formatCliBannerLine } from "./tui-C-AzBfKZ.js";
12
12
  import { n as resolveCliChannelOptions } from "./channel-options-DBdUVDw8.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-Cncq7-2J.js")).registerGatewayCli(program);
127
+ (await import("./gateway-cli-B0IG3I1l.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-PCdHvSfU.js")).registerTuiCli(program);
197
+ (await import("./tui-cli-WmZ-8YxM.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-CBUk3_OE.js")).registerUpdateCli(program);
285
+ (await import("./update-cli-BsFbWd-I.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-BuNf1bwD.js").then((n) => n.n)).registerCompletionCli(program);
292
+ (await import("./completion-cli-D7ouHmux.js").then((n) => n.n)).registerCompletionCli(program);
293
293
  }
294
294
  }
295
295
  ];
@@ -68,11 +68,11 @@ import "./tailscale-B9nalljD.js";
68
68
  import { t as loadDotEnv } from "./dotenv-2TPorV-O.js";
69
69
  import { t as ensureSKYKOICliOnPath } from "./path-env-DGypuWGK.js";
70
70
  import { g as assertSupportedRuntime } from "./daemon-runtime-DUaeQ1rH.js";
71
- import { n as findRoutedCommand, t as ensureConfigReady } from "./config-guard-C9P_JW9x.js";
71
+ import { n as findRoutedCommand, t as ensureConfigReady } from "./config-guard-D6UR-chP.js";
72
72
  import "./logging-C1O4qtJt.js";
73
73
  import "./note-DGDjXGAF.js";
74
74
  import "./clack-prompter-CjPgjdmC.js";
75
- import "./onboarding-B9HDSfoT.js";
75
+ import "./onboarding-CcXUQoly.js";
76
76
  import "./onboard-skills-40hDOPuU.js";
77
77
  import "./github-copilot-auth-B3hGj8AR.js";
78
78
  import "./onboard-channels-CnuOw75T.js";
@@ -81,7 +81,7 @@ import "./archive-T83QgLKQ.js";
81
81
  import "./skill-scanner-oZNfZVUO.js";
82
82
  import "./installs-CKlg0au_.js";
83
83
  import "./health-format-Db3zyLCs.js";
84
- import "./update-runner-zpCx3Prk.js";
84
+ import "./update-runner-BddVUl4L.js";
85
85
  import "./auth-oGq4xOCr.js";
86
86
  import "./audit-BSp4Sphl.js";
87
87
  import "./table-3qkY6e1T.js";
@@ -91,7 +91,7 @@ import "./systemd-BwrS2WmZ.js";
91
91
  import "./service-audit-CtA-SSNX.js";
92
92
  import "./node-service-CMlPSxKk.js";
93
93
  import "./channels-status-issues-DBv-Cc4W.js";
94
- import { a as getCommandPath, c as getPrimaryCommand, d as hasHelpOrVersion } from "./register.subclis-DwJLi81I.js";
94
+ import { a as getCommandPath, c as getPrimaryCommand, d as hasHelpOrVersion } from "./register.subclis-DwmIWMRO.js";
95
95
  import "./gateway-rpc-CyFabm9F.js";
96
96
  import "./help-format-lN5-Ns06.js";
97
97
  import "./admin-unlock-kahk3vPh.js";
@@ -102,10 +102,10 @@ import "./systemd-linger-Dppl0X6M.js";
102
102
  import "./widearea-dns-BV1FENWO.js";
103
103
  import "./bonjour-discovery-BSmdJTHl.js";
104
104
  import "./auth-health-B3BNAX3f.js";
105
- import "./doctor-C8pLOEuj.js";
106
- import "./completion-cli-BuNf1bwD.js";
105
+ import "./doctor-C5rXAsRc.js";
106
+ import "./completion-cli-D7ouHmux.js";
107
107
  import "./hooks-status-DAyfqKUD.js";
108
- import { n as emitCliBanner } from "./tui-Cp9kceCv.js";
108
+ import { n as emitCliBanner } from "./tui-C-AzBfKZ.js";
109
109
  import process$1 from "node:process";
110
110
  import { fileURLToPath } from "node:url";
111
111
  import fs from "node:fs";
@@ -159,7 +159,7 @@ async function runCli(argv = process$1.argv) {
159
159
  assertSupportedRuntime();
160
160
  if (await tryRouteCli(normalizedArgv)) return;
161
161
  enableConsoleCapture();
162
- const { buildProgram } = await import("./program-D1rFGI4q.js").then((n) => n.t);
162
+ const { buildProgram } = await import("./program-BxZH9HcU.js").then((n) => n.t);
163
163
  const program = buildProgram();
164
164
  installUnhandledRejectionHandler();
165
165
  process$1.on("uncaughtException", (error) => {
@@ -192,7 +192,7 @@ async function runCli(argv = process$1.argv) {
192
192
  }
193
193
  const primary = getPrimaryCommand(parseArgv);
194
194
  if (primary) {
195
- const { registerSubCliByName } = await import("./register.subclis-DwJLi81I.js").then((n) => n.i);
195
+ const { registerSubCliByName } = await import("./register.subclis-DwmIWMRO.js").then((n) => n.i);
196
196
  await registerSubCliByName(program, primary);
197
197
  }
198
198
  if (!(!primary && hasHelpOrVersion(parseArgv))) {
@@ -2581,21 +2581,33 @@ function buildWaitingStatusMessage(params) {
2581
2581
 
2582
2582
  //#endregion
2583
2583
  //#region src/tui/tui.ts
2584
- const ONBOARDING_KICKOFF = "Quietly (re)build my dossier in the background now, and go DEEP even if a basic profile already exists (deepen and refresh it, do not skip because it looks filled). Cover who I am, my work and projects, and my devices. Then the important part, people: rank my top contacts across iMessage (~/Library/Messages/chat.db) and WhatsApp (ChatStorage.sqlite ZWACHATSESSION) by real two-way volume + recency, and for EACH of the top ~12 actually READ their recent thread (~30-50 messages) to capture who they are, our relationship, what we deal with, and `current` = what is open from them right now (last unanswered ask, pending decision, deadline). Persist a people[] array (name, channels, relationship, summary, current) in profile.json plus a readable per-person list in USER.md. Also map my business structure: my ventures/companies, who is on each team and their roles (read my team group chats), the model and who actually pays, and persist a business object. Do not announce, summarize, or narrate any of this. No reply needed.";
2584
+ const ONBOARDING_KICKOFF = "Quietly (re)build my dossier in the background now, and go DEEP even if a basic profile already exists (deepen and refresh it, do not skip because it looks filled). Cover who I am, my work and projects, and my devices. Then the important part, people: rank my top contacts across iMessage (~/Library/Messages/chat.db) and WhatsApp (ChatStorage.sqlite ZWACHATSESSION) by real two-way volume + recency, and for EACH of the top ~12 actually READ their recent thread (~30-50 messages) to capture who they are, our relationship, what we deal with, and `current` = what is open from them right now (last unanswered ask, pending decision, deadline). Persist a people[] array (name, channels, relationship, summary, current) in profile.json plus a readable per-person list in USER.md. Also map my business structure: my ventures/companies, who is on each team and their roles (read my team group chats), the model and who actually pays, and persist a business object. Also study HOW I write across these threads and document my voice exhaustively (vocab, tone, formality, message length + variation, punctuation and capitalization habits, emoji, slang, openers/sign-offs, quirks) globally AND per-person/platform into a voice object, so you can write and reply AS me in my own style. Do not announce, summarize, or narrate any of this. No reply needed.";
2585
2585
  function onboardingMarkerPath() {
2586
2586
  return path.join(resolveStateDir(), "onboarded");
2587
2587
  }
2588
- function onboardingDone() {
2588
+ /** The koi version recorded the last time onboarding ran, or null if never. */
2589
+ function onboardedVersion() {
2589
2590
  try {
2590
- return fs.existsSync(onboardingMarkerPath());
2591
+ return fs.readFileSync(onboardingMarkerPath(), "utf8").trim().split(/\s+/)[0] || null;
2591
2592
  } catch {
2592
- return false;
2593
+ return null;
2593
2594
  }
2594
2595
  }
2596
+ /**
2597
+ * Onboarding is "current" only when it last ran on THIS exact version. After an
2598
+ * update the version differs, so this returns false and onboarding re-runs
2599
+ * automatically on the next connect — applying any changes to onboarding (or to
2600
+ * the koi itself) and re-confirming the user is ready to go, with no action from
2601
+ * them. (A legacy timestamp-only marker also reads as not-current, so the first
2602
+ * launch after this change re-onboards once.)
2603
+ */
2604
+ function onboardingCurrent() {
2605
+ return onboardedVersion() === VERSION;
2606
+ }
2595
2607
  function markOnboardingDone() {
2596
2608
  try {
2597
2609
  fs.mkdirSync(resolveStateDir(), { recursive: true });
2598
- fs.writeFileSync(onboardingMarkerPath(), `${(/* @__PURE__ */ new Date()).toISOString()}\n`);
2610
+ fs.writeFileSync(onboardingMarkerPath(), `${VERSION}\t${(/* @__PURE__ */ new Date()).toISOString()}\n`);
2599
2611
  } catch {}
2600
2612
  }
2601
2613
  function createEditorSubmitHandler(params) {
@@ -3101,9 +3113,10 @@ async function runTui(opts) {
3101
3113
  if (!autoMessageSent && autoMessage) {
3102
3114
  autoMessageSent = true;
3103
3115
  await sendMessage(autoMessage);
3104
- } else if (!reconnected && !autoMessage && !onboardingDone()) {
3116
+ } else if (!autoMessage && !onboardingCurrent()) {
3117
+ const updating = onboardedVersion() !== null;
3105
3118
  markOnboardingDone();
3106
- setConnectionStatus("Onboarding: learning about you…", 1e4);
3119
+ setConnectionStatus(updating ? "Applying the latest updates…" : "Onboarding: learning about you…", 1e4);
3107
3120
  tui.requestRender();
3108
3121
  client.sendChat({
3109
3122
  sessionKey: buildKoiMainSessionKey({
@@ -39,7 +39,7 @@ import "./net-CgTtDqcj.js";
39
39
  import "./call-CJHT-9_x.js";
40
40
  import { t as formatDocsLink } from "./links-RRRDj3kH.js";
41
41
  import { t as parseTimeoutMs } from "./parse-timeout-Cu-tR2v-.js";
42
- import { t as runTui } from "./tui-Cp9kceCv.js";
42
+ import { t as runTui } from "./tui-C-AzBfKZ.js";
43
43
 
44
44
  //#region src/cli/tui-cli.ts
45
45
  function registerTuiCli(program) {
@@ -75,7 +75,7 @@ import "./archive-T83QgLKQ.js";
75
75
  import "./skill-scanner-oZNfZVUO.js";
76
76
  import "./installs-CKlg0au_.js";
77
77
  import "./health-format-Db3zyLCs.js";
78
- 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-zpCx3Prk.js";
78
+ 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-BddVUl4L.js";
79
79
  import "./auth-oGq4xOCr.js";
80
80
  import { t as renderTable } from "./table-3qkY6e1T.js";
81
81
  import "./skills-status-MQ9kq-A7.js";
@@ -83,12 +83,12 @@ import "./service-CYp-ZMZO.js";
83
83
  import "./systemd-BwrS2WmZ.js";
84
84
  import "./service-audit-CtA-SSNX.js";
85
85
  import "./channels-status-issues-DBv-Cc4W.js";
86
- import "./register.subclis-DwJLi81I.js";
86
+ import "./register.subclis-DwmIWMRO.js";
87
87
  import { t as formatHelpExamples } from "./help-format-lN5-Ns06.js";
88
88
  import "./systemd-linger-Dppl0X6M.js";
89
89
  import "./auth-health-B3BNAX3f.js";
90
- import { t as doctorCommand } from "./doctor-C8pLOEuj.js";
91
- import { r as installCompletion } from "./completion-cli-BuNf1bwD.js";
90
+ import { t as doctorCommand } from "./doctor-C5rXAsRc.js";
91
+ import { r as installCompletion } from "./completion-cli-D7ouHmux.js";
92
92
  import "./shared-BIgTSNKP.js";
93
93
  import { r as runDaemonRestart } from "./daemon-cli-DQwCWMEN.js";
94
94
  import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from "./update-BxUKPW5j.js";
@@ -6,7 +6,7 @@ import { N as VERSION } from "./config-CJCyYQfd.js";
6
6
  import { _ as parseSemver } from "./daemon-runtime-DUaeQ1rH.js";
7
7
  import { t as note } from "./note-DGDjXGAF.js";
8
8
  import { i as resolveControlUiDistIndexPathForRoot, r as resolveControlUiDistIndexHealth } from "./health-format-Db3zyLCs.js";
9
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-BuNf1bwD.js";
9
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-D7ouHmux.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.305",
3
+ "version": "2026.3.306",
4
4
  "description": "SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.",
5
5
  "keywords": [
6
6
  "cli",