skykoi 2026.3.316 → 2026.3.317

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.
@@ -130,7 +130,7 @@ async function adminUnlock(opts = {}) {
130
130
  error: err?.message ?? "Failed to write config"
131
131
  };
132
132
  }
133
- const { ensureLocalGatewayRunning } = await import("./ensure-local-gateway-DisWzlSd.js").then((n) => n.n);
133
+ const { ensureLocalGatewayRunning } = await import("./ensure-local-gateway-D8d3GA8E.js").then((n) => n.n);
134
134
  const gw = await ensureLocalGatewayRunning();
135
135
  if (!gw.ok) return {
136
136
  ok: false,
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2026.3.316",
3
- "commit": "97f73c8abb9e694f4f7b393c1f45fe7f93cce861",
4
- "builtAt": "2026-06-10T20:17:13.304Z"
2
+ "version": "2026.3.317",
3
+ "commit": "006f04024e71270d443630e67d7bcea5f4426f25",
4
+ "builtAt": "2026-06-10T20:35:57.234Z"
5
5
  }
@@ -1 +1 @@
1
- 46cbff1646fbd34ab23390cba718740bf628e5c8c53c3be38c65441e2e8c3433
1
+ 38dc95e307fddcdeb61c2515df48e6755d3b6fabcb8a020635bf21cfab7d9337
@@ -80,7 +80,7 @@ import "./service-C6lyBW0F.js";
80
80
  import "./systemd-C7TaOB0r.js";
81
81
  import "./diagnostics-B6_fjn4Z.js";
82
82
  import { t as collectChannelStatusIssues } from "./channels-status-issues-CNNkv5DB.js";
83
- import { t as ensureLocalGatewayRunning } from "./ensure-local-gateway-DisWzlSd.js";
83
+ import { t as ensureLocalGatewayRunning } from "./ensure-local-gateway-D8d3GA8E.js";
84
84
  import { n as hasExplicitOptions } from "./plugin-registry-Cx4aWgoj.js";
85
85
  import { t as formatCliChannelOptions } from "./channel-options-CzzHSHEz.js";
86
86
  import { t as buildChannelAccountSnapshot } from "./status-DDy8N8Gk.js";
@@ -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-DVu8y5t2.js";
3
+ import { n as registerSubCliByName, t as getSubCliEntries } from "./register.subclis-BdHPQ1KB.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-BS0OoBpd.js";
27
27
  import { n as logConfigUpdated, t as formatConfigPath } from "./logging-D-QZpI1i.js";
28
28
  import { t as WizardCancelledError } from "./prompts-CSOhuiqe.js";
29
29
  import { t as createClackPrompter } from "./clack-prompter-DF6HE5p6.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-D863yc55.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-BgYGxaDZ.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-B-3oudwv.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-Ctjj7SlQ.js";
33
33
  import { n as setupChannels } from "./onboard-channels-DZLPi5tV.js";
@@ -35,17 +35,17 @@ import { l as healthCommand } from "./health-format-CTY-Crvj.js";
35
35
  import { t as renderTable } from "./table-Bu1gPkD7.js";
36
36
  import { t as resolveGatewayService } from "./service-C6lyBW0F.js";
37
37
  import { r as isSystemdUserServiceAvailable } from "./systemd-C7TaOB0r.js";
38
- import { l as getVerboseFlag, o as getFlagValue, r as registerSubCliCommands, s as getPositiveIntFlagValue, u as hasFlag } from "./register.subclis-DVu8y5t2.js";
38
+ import { l as getVerboseFlag, o as getFlagValue, r as registerSubCliCommands, s as getPositiveIntFlagValue, u as hasFlag } from "./register.subclis-BdHPQ1KB.js";
39
39
  import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-FMQ_vIWH.js";
40
40
  import { t as formatHelpExamples } from "./help-format-CN9mmVLD.js";
41
- import { t as adminUnlockCommand } from "./admin-unlock-6wWgoRR8.js";
42
- import { r as readAuthFile, t as loginCommand } from "./login-CLMSGRQD.js";
41
+ import { t as adminUnlockCommand } from "./admin-unlock-GB1CQc19.js";
42
+ import { r as readAuthFile, t as loginCommand } from "./login-n9IlY9cc.js";
43
43
  import { a as createOutboundSendDeps, n as resolveSessionKeyForRequest, t as koiCommand } from "./koi-DiwiNwmX.js";
44
44
  import { n as hasExplicitOptions, t as ensurePluginRegistryLoaded } from "./plugin-registry-Cx4aWgoj.js";
45
45
  import { n as parsePositiveIntOrUndefined, t as collectOption } from "./helpers-BNTDHUZB.js";
46
46
  import { i as CONFIGURE_WIZARD_SECTIONS, n as configureCommand, r as configureCommandWithSections } from "./configure-BFAHsKLm.js";
47
47
  import { n as ensureSystemdUserLingerNonInteractive } from "./systemd-linger-8Xh54IOl.js";
48
- import { n as loadAndMaybeMigrateDoctorConfig, t as doctorCommand } from "./doctor-CZR3aWWe.js";
48
+ import { n as loadAndMaybeMigrateDoctorConfig, t as doctorCommand } from "./doctor-08pLcCNr.js";
49
49
  import { fileURLToPath } from "node:url";
50
50
  import fs from "node:fs";
51
51
  import path from "node:path";
@@ -3405,7 +3405,7 @@ function registerLoginCommand(program) {
3405
3405
  }
3406
3406
  });
3407
3407
  program.command("whoami").description("Show the currently-logged-in SkyKoi account").action(async () => {
3408
- const { readAuthFile } = await import("./login-CLMSGRQD.js").then((n) => n.n);
3408
+ const { readAuthFile } = await import("./login-n9IlY9cc.js").then((n) => n.n);
3409
3409
  const auth = await readAuthFile();
3410
3410
  if (!auth) {
3411
3411
  console.log(theme.muted("Not logged in. Run `skykoi login`."));
@@ -28,7 +28,7 @@ import { n as logConfigUpdated } from "./logging-D-QZpI1i.js";
28
28
  import { t as note$1 } from "./note-D68Wd3Zr.js";
29
29
  import { t as applyPluginAutoEnable } from "./plugin-auto-enable-BIRsItbt.js";
30
30
  import { i as resolveControlUiDistIndexPathForRoot, l as healthCommand, r as resolveControlUiDistIndexHealth, t as formatHealthCheckFailure } from "./health-format-CTY-Crvj.js";
31
- import { c as doctorShellCompletion, t as runGatewayUpdate } from "./update-runner-C1ynI8cF.js";
31
+ import { c as doctorShellCompletion, t as runGatewayUpdate } from "./update-runner-DOcP4vcg.js";
32
32
  import { i as resolveGatewayAuth } from "./auth-tu2F7_70.js";
33
33
  import { t as buildWorkspaceSkillStatus } from "./skills-status-CrL8zDk3.js";
34
34
  import { a as repairLaunchAgentBootstrap, i as launchAgentPlistExists, n as isLaunchAgentListed, o as resolveGatewayLogPaths, r as isLaunchAgentLoaded, t as resolveGatewayService } from "./service-C6lyBW0F.js";
@@ -120,7 +120,9 @@ async function ensureLocalGatewayRunning() {
120
120
  };
121
121
  return {
122
122
  ok: false,
123
- error: await reachabilityError("Refreshed the gateway service but it didn't come back reachable in time", reachable.detail)
123
+ error: await reachabilityError("Refreshed the gateway service but it didn't come back reachable in time", reachable.detail),
124
+ wsUrl,
125
+ token
124
126
  };
125
127
  }
126
128
  const [cmd, ...args] = plan.programArguments;
@@ -165,7 +167,9 @@ async function ensureLocalGatewayRunning() {
165
167
  });
166
168
  if (!reachable.ok) return {
167
169
  ok: false,
168
- error: await reachabilityError("Gateway started but isn't reachable yet", reachable.detail)
170
+ error: await reachabilityError("Gateway started but isn't reachable yet", reachable.detail),
171
+ wsUrl,
172
+ token
169
173
  };
170
174
  return {
171
175
  ok: true,
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-CB9mSDKc.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
249
+ import("./run-main-GG5Ewgs5.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
  });
@@ -80,12 +80,12 @@ import { n as createOutboundSendDeps, t as createDefaultDeps } from "./deps-DU0a
80
80
  import { i as enableTailscaleServe, n as disableTailscaleServe, o as getTailnetHostname, r as enableTailscaleFunnel, t as disableTailscaleFunnel } from "./tailscale-C88PrOS1.js";
81
81
  import { t as ensureSKYKOICliOnPath } from "./path-env-B9AK_97y.js";
82
82
  import "./daemon-runtime-EHtDn8NC.js";
83
- import { t as forceFreePortAndWait } from "./ports-DwUDLvx8.js";
83
+ import { t as forceFreePortAndWait } from "./ports-0IosJaYp.js";
84
84
  import { t as resolveChannelDefaultAccountId } from "./helpers-BS0OoBpd.js";
85
85
  import "./logging-D-QZpI1i.js";
86
86
  import "./note-D68Wd3Zr.js";
87
87
  import { t as WizardCancelledError } from "./prompts-CSOhuiqe.js";
88
- 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-D863yc55.js";
88
+ 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-BgYGxaDZ.js";
89
89
  import { n as installSkill } from "./onboard-skills-B-3oudwv.js";
90
90
  import "./github-copilot-auth-Ctjj7SlQ.js";
91
91
  import "./onboard-channels-DZLPi5tV.js";
@@ -94,7 +94,7 @@ import "./archive-D7pTLsCD.js";
94
94
  import "./skill-scanner-BSxHCT2R.js";
95
95
  import "./installs-CZ-Bi4x1.js";
96
96
  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-CTY-Crvj.js";
97
- import { C as normalizeUpdateChannel, b as DEFAULT_PACKAGE_CHANNEL, g as fetchNpmLatestVersion, h as compareSemverStrings, m as checkUpdateStatus, t as runGatewayUpdate, v as resolveNpmChannelTag } from "./update-runner-C1ynI8cF.js";
97
+ import { C as normalizeUpdateChannel, b as DEFAULT_PACKAGE_CHANNEL, g as fetchNpmLatestVersion, h as compareSemverStrings, m as checkUpdateStatus, t as runGatewayUpdate, v as resolveNpmChannelTag } from "./update-runner-DOcP4vcg.js";
98
98
  import { i as resolveGatewayAuth, n as authorizeGatewayConnect, r as isLocalDirectRequest, t as assertGatewayAuthConfigured } from "./auth-tu2F7_70.js";
99
99
  import { i as probeGateway } from "./audit-D_KuVAWW.js";
100
100
  import "./table-Bu1gPkD7.js";
@@ -104,11 +104,11 @@ import { p as resolveGatewayStateDir } from "./systemd-C7TaOB0r.js";
104
104
  import "./diagnostics-B6_fjn4Z.js";
105
105
  import "./node-service-CtGQ_WCB.js";
106
106
  import "./channels-status-issues-CNNkv5DB.js";
107
- import "./register.subclis-DVu8y5t2.js";
107
+ import "./register.subclis-BdHPQ1KB.js";
108
108
  import { a as createOutboundSendDeps$1, i as resolveKoiOutboundTarget, r as resolveKoiDeliveryPlan, t as koiCommand } from "./koi-DiwiNwmX.js";
109
109
  import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-BbZrO9Lc.js";
110
110
  import { n as discoverGatewayBeacons } from "./bonjour-discovery-CDm_rOJY.js";
111
- import "./completion-cli-DGFC4eB-.js";
111
+ import "./completion-cli-BwG1kbs-.js";
112
112
  import "./service-audit-Bqgp6PlY.js";
113
113
  import { i as shouldIncludeHook, n as loadWorkspaceHookEntries, r as resolveHookConfig } from "./hooks-status-CV-O6Xro.js";
114
114
  import "./tui-QrrdMeaH.js";
package/dist/index.js CHANGED
@@ -70,12 +70,12 @@ import { l as ensureBinary, u as promptYesNo } from "./tailscale-C88PrOS1.js";
70
70
  import { t as isMainModule } from "./is-main-Do9cUL72.js";
71
71
  import { t as ensureSKYKOICliOnPath } from "./path-env-B9AK_97y.js";
72
72
  import { g as assertSupportedRuntime } from "./daemon-runtime-EHtDn8NC.js";
73
- import "./ports-DwUDLvx8.js";
74
- import "./config-guard-DKMnD_8u.js";
73
+ import "./ports-0IosJaYp.js";
74
+ import "./config-guard-Bo1jJ_Ya.js";
75
75
  import "./logging-D-QZpI1i.js";
76
76
  import "./note-D68Wd3Zr.js";
77
77
  import "./clack-prompter-DF6HE5p6.js";
78
- import "./onboarding-D863yc55.js";
78
+ import "./onboarding-BgYGxaDZ.js";
79
79
  import "./onboard-skills-B-3oudwv.js";
80
80
  import "./github-copilot-auth-Ctjj7SlQ.js";
81
81
  import "./onboard-channels-DZLPi5tV.js";
@@ -84,7 +84,7 @@ import "./archive-D7pTLsCD.js";
84
84
  import "./skill-scanner-BSxHCT2R.js";
85
85
  import "./installs-CZ-Bi4x1.js";
86
86
  import "./health-format-CTY-Crvj.js";
87
- import "./update-runner-C1ynI8cF.js";
87
+ import "./update-runner-DOcP4vcg.js";
88
88
  import "./auth-tu2F7_70.js";
89
89
  import "./audit-D_KuVAWW.js";
90
90
  import "./table-Bu1gPkD7.js";
@@ -94,12 +94,12 @@ import "./systemd-C7TaOB0r.js";
94
94
  import "./diagnostics-B6_fjn4Z.js";
95
95
  import "./node-service-CtGQ_WCB.js";
96
96
  import "./channels-status-issues-CNNkv5DB.js";
97
- import "./register.subclis-DVu8y5t2.js";
97
+ import "./register.subclis-BdHPQ1KB.js";
98
98
  import "./gateway-rpc-FMQ_vIWH.js";
99
99
  import "./help-format-CN9mmVLD.js";
100
- import "./admin-unlock-6wWgoRR8.js";
101
- import "./ensure-local-gateway-DisWzlSd.js";
102
- import "./login-CLMSGRQD.js";
100
+ import "./admin-unlock-GB1CQc19.js";
101
+ import "./ensure-local-gateway-D8d3GA8E.js";
102
+ import "./login-n9IlY9cc.js";
103
103
  import "./koi-DiwiNwmX.js";
104
104
  import "./plugin-registry-Cx4aWgoj.js";
105
105
  import "./configure-BFAHsKLm.js";
@@ -107,13 +107,13 @@ import "./systemd-linger-8Xh54IOl.js";
107
107
  import "./widearea-dns-BbZrO9Lc.js";
108
108
  import "./bonjour-discovery-CDm_rOJY.js";
109
109
  import "./auth-health-Dbdl2a43.js";
110
- import "./doctor-CZR3aWWe.js";
111
- import "./completion-cli-DGFC4eB-.js";
110
+ import "./doctor-08pLcCNr.js";
111
+ import "./completion-cli-BwG1kbs-.js";
112
112
  import "./service-audit-Bqgp6PlY.js";
113
113
  import "./hooks-status-CV-O6Xro.js";
114
114
  import "./tui-QrrdMeaH.js";
115
115
  import "./channel-options-CzzHSHEz.js";
116
- import { n as buildProgram } from "./program-CxUt4bQ_.js";
116
+ import { n as buildProgram } from "./program-BpBoQJX3.js";
117
117
  import process from "node:process";
118
118
  import { fileURLToPath } from "node:url";
119
119
 
@@ -2,7 +2,7 @@ import { r as __exportAll } from "./chunk-D_gEzPfs.js";
2
2
  import { n as isRich, r as theme } from "./theme-C5EwWDWE.js";
3
3
  import { b as sleep } from "./utils-D019Z2NU.js";
4
4
  import { o as loadConfig, u as writeConfigFile } from "./config-BOTdzMIB.js";
5
- import { t as ensureLocalGatewayRunning } from "./ensure-local-gateway-DisWzlSd.js";
5
+ import { t as ensureLocalGatewayRunning } from "./ensure-local-gateway-D8d3GA8E.js";
6
6
  import { existsSync } from "node:fs";
7
7
  import path, { join } from "node:path";
8
8
  import os, { homedir, hostname } from "node:os";
@@ -425,20 +425,24 @@ async function claimAndFinish(platformUrl, token, base, doClaim) {
425
425
  if (ensure.ok) {
426
426
  online.succeed(`Online — reachable from your phone and ${theme.command("koi.skykoi.com")}`);
427
427
  await requestDevicePermissions();
428
+ } else if (ensure.wsUrl) {
429
+ online.warn("Started — opening your chat; it'll connect as your koi finishes coming online");
430
+ hint(ensure.error);
428
431
  } else {
429
- online.warn("Started — it's finishing coming online in the background");
432
+ online.warn("Couldn't auto-start your koi");
430
433
  hint(ensure.error);
431
- hint(`If it doesn't connect shortly, run ${theme.command("koi onboard")}.`);
434
+ hint(`Run ${theme.command("koi onboard")} to finish bringing it online.`);
432
435
  }
436
+ const gatewayCoords = ensure.ok || ensure.wsUrl ? {
437
+ gatewayUrl: ensure.wsUrl,
438
+ gatewayToken: ensure.token
439
+ } : {};
433
440
  return {
434
441
  ok: true,
435
442
  ...base,
436
443
  koiId: claim.koiId,
437
444
  koiName: claim.koiName,
438
- ...ensure.ok ? {
439
- gatewayUrl: ensure.wsUrl,
440
- gatewayToken: ensure.token
441
- } : {}
445
+ ...gatewayCoords
442
446
  };
443
447
  }
444
448
  async function loginCommand(opts = {}) {
@@ -26,7 +26,7 @@ import { t as WizardCancelledError } from "./prompts-CSOhuiqe.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-B-3oudwv.js";
27
27
  import { n as setupChannels } from "./onboard-channels-DZLPi5tV.js";
28
28
  import { l as healthCommand, n as ensureControlUiAssetsBuilt, s as formatHealthChannelLines, t as formatHealthCheckFailure, u as resolveHeartbeatSummaryForKoi } from "./health-format-CTY-Crvj.js";
29
- import { C as normalizeUpdateChannel, S as formatUpdateChannelLabel, d as formatUpdateOneLiner, f as getUpdateCheckResult, h as compareSemverStrings, l as ensureCompletionCacheExists, m as checkUpdateStatus, p as resolveUpdateAvailability, s as checkShellCompletionStatus, u as formatUpdateAvailableHint, w as resolveEffectiveUpdateChannel } from "./update-runner-C1ynI8cF.js";
29
+ import { C as normalizeUpdateChannel, S as formatUpdateChannelLabel, d as formatUpdateOneLiner, f as getUpdateCheckResult, h as compareSemverStrings, l as ensureCompletionCacheExists, m as checkUpdateStatus, p as resolveUpdateAvailability, s as checkShellCompletionStatus, u as formatUpdateAvailableHint, w as resolveEffectiveUpdateChannel } from "./update-runner-DOcP4vcg.js";
30
30
  import { i as probeGateway, t as runSecurityAudit } from "./audit-D_KuVAWW.js";
31
31
  import { t as renderTable } from "./table-Bu1gPkD7.js";
32
32
  import { t as buildWorkspaceSkillStatus } from "./skills-status-CrL8zDk3.js";
@@ -36,7 +36,7 @@ import { t as readLastGatewayErrorLine } from "./diagnostics-B6_fjn4Z.js";
36
36
  import { t as resolveNodeService } from "./node-service-CtGQ_WCB.js";
37
37
  import { t as collectChannelStatusIssues } from "./channels-status-issues-CNNkv5DB.js";
38
38
  import { i as redactSecrets, n as formatDuration$1, r as formatGatewayAuthUsed, t as formatAge$1 } from "./format-CM1xpumg.js";
39
- import { r as installCompletion } from "./completion-cli-DGFC4eB-.js";
39
+ import { r as installCompletion } from "./completion-cli-BwG1kbs-.js";
40
40
  import { t as buildWorkspaceHookStatus } from "./hooks-status-CV-O6Xro.js";
41
41
  import { t as runTui } from "./tui-QrrdMeaH.js";
42
42
  import fs from "node:fs";
@@ -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";
@@ -228309,7 +228309,7 @@ const BUFFERABLE_EVENT_SET = new Set([
228309
228309
  * making the data processing more efficient.
228310
228310
  */
228311
228311
  const makeEventBuffer = (logger) => {
228312
- const ev = new EventEmitter();
228312
+ const ev = new EventEmitter$1();
228313
228313
  const historyCache = /* @__PURE__ */ new Set();
228314
228314
  let data = makeBufferData();
228315
228315
  let isBuffering = false;
@@ -233879,7 +233879,7 @@ var BinaryInfo = class {
233879
233879
 
233880
233880
  //#endregion
233881
233881
  //#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
233882
- var AbstractSocketClient = class extends EventEmitter$1 {
233882
+ var AbstractSocketClient = class extends EventEmitter {
233883
233883
  constructor(url, config) {
233884
233884
  super();
233885
233885
  this.url = url;
@@ -14,7 +14,33 @@ function parseLsofOutput(output) {
14
14
  if (current.pid) results.push(current);
15
15
  return results;
16
16
  }
17
+ /** Windows has no `lsof`; `netstat -ano` is always present and lists the owning
18
+ * PID for each TCP listener. We parse it for processes LISTENING on `port`. */
19
+ function parseNetstatOutput(output, port) {
20
+ const pids = /* @__PURE__ */ new Set();
21
+ for (const raw of output.split(/\r?\n/)) {
22
+ const line = raw.trim();
23
+ if (!/^TCP\b/i.test(line) || !/LISTENING/i.test(line)) continue;
24
+ const cols = line.split(/\s+/);
25
+ const local = cols[1] ?? "";
26
+ const pid = Number.parseInt(cols[cols.length - 1] ?? "", 10);
27
+ if (new RegExp(`[:.]${port}$`).test(local) && Number.isFinite(pid) && pid > 0) pids.add(pid);
28
+ }
29
+ return [...pids].map((pid) => ({ pid }));
30
+ }
31
+ function listPortListenersWindows(port) {
32
+ try {
33
+ return parseNetstatOutput(execFileSync("netstat", [
34
+ "-ano",
35
+ "-p",
36
+ "TCP"
37
+ ], { encoding: "utf-8" }), port);
38
+ } catch (err) {
39
+ return [];
40
+ }
41
+ }
17
42
  function listPortListeners(port) {
43
+ if (process.platform === "win32") return listPortListenersWindows(port);
18
44
  try {
19
45
  return parseLsofOutput(execFileSync(resolveLsofCommandSync(), [
20
46
  "-nP",
@@ -5,8 +5,8 @@ import { n as replaceCliName, r as resolveCliName } from "./command-format-DOYW_
5
5
  import { t as isTruthyEnvValue } from "./env-ChCKTuXK.js";
6
6
  import { N as VERSION } from "./config-BOTdzMIB.js";
7
7
  import { t as formatDocsLink } from "./links-DlFnXfJ_.js";
8
- import { r as registerProgramCommands, t as ensureConfigReady } from "./config-guard-DKMnD_8u.js";
9
- import { a as getCommandPath, d as hasHelpOrVersion, l as getVerboseFlag } from "./register.subclis-DVu8y5t2.js";
8
+ import { r as registerProgramCommands, t as ensureConfigReady } from "./config-guard-Bo1jJ_Ya.js";
9
+ import { a as getCommandPath, d as hasHelpOrVersion, l as getVerboseFlag } from "./register.subclis-BdHPQ1KB.js";
10
10
  import { t as ensurePluginRegistryLoaded } from "./plugin-registry-Cx4aWgoj.js";
11
11
  import { a as hasEmittedCliBanner, i as formatCliBannerLine, r as emitCliBanner } from "./tui-QrrdMeaH.js";
12
12
  import { n as resolveCliChannelOptions } from "./channel-options-CzzHSHEz.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-zYmtdGM1.js")).registerGatewayCli(program);
127
+ (await import("./gateway-cli-qGk5kbhu.js")).registerGatewayCli(program);
128
128
  }
129
129
  },
130
130
  {
@@ -254,7 +254,7 @@ const entries = [
254
254
  name: "channels",
255
255
  description: "Channel management",
256
256
  register: async (program) => {
257
- (await import("./channels-cli-B9NTdw1q.js")).registerChannelsCli(program);
257
+ (await import("./channels-cli-DMFOQbrF.js")).registerChannelsCli(program);
258
258
  }
259
259
  },
260
260
  {
@@ -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-DhhxNQ63.js")).registerUpdateCli(program);
285
+ (await import("./update-cli-K__lA260.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-DGFC4eB-.js").then((n) => n.n)).registerCompletionCli(program);
292
+ (await import("./completion-cli-BwG1kbs-.js").then((n) => n.n)).registerCompletionCli(program);
293
293
  }
294
294
  }
295
295
  ];
@@ -68,11 +68,11 @@ import "./deps-DU0ai3a3.js";
68
68
  import "./tailscale-C88PrOS1.js";
69
69
  import { t as ensureSKYKOICliOnPath } from "./path-env-B9AK_97y.js";
70
70
  import { g as assertSupportedRuntime } from "./daemon-runtime-EHtDn8NC.js";
71
- import { n as findRoutedCommand, t as ensureConfigReady } from "./config-guard-DKMnD_8u.js";
71
+ import { n as findRoutedCommand, t as ensureConfigReady } from "./config-guard-Bo1jJ_Ya.js";
72
72
  import "./logging-D-QZpI1i.js";
73
73
  import "./note-D68Wd3Zr.js";
74
74
  import "./clack-prompter-DF6HE5p6.js";
75
- import "./onboarding-D863yc55.js";
75
+ import "./onboarding-BgYGxaDZ.js";
76
76
  import "./onboard-skills-B-3oudwv.js";
77
77
  import "./github-copilot-auth-Ctjj7SlQ.js";
78
78
  import "./onboard-channels-DZLPi5tV.js";
@@ -81,7 +81,7 @@ import "./archive-D7pTLsCD.js";
81
81
  import "./skill-scanner-BSxHCT2R.js";
82
82
  import "./installs-CZ-Bi4x1.js";
83
83
  import "./health-format-CTY-Crvj.js";
84
- import "./update-runner-C1ynI8cF.js";
84
+ import "./update-runner-DOcP4vcg.js";
85
85
  import "./auth-tu2F7_70.js";
86
86
  import "./audit-D_KuVAWW.js";
87
87
  import "./table-Bu1gPkD7.js";
@@ -91,12 +91,12 @@ import "./systemd-C7TaOB0r.js";
91
91
  import "./diagnostics-B6_fjn4Z.js";
92
92
  import "./node-service-CtGQ_WCB.js";
93
93
  import "./channels-status-issues-CNNkv5DB.js";
94
- import { a as getCommandPath, c as getPrimaryCommand, d as hasHelpOrVersion } from "./register.subclis-DVu8y5t2.js";
94
+ import { a as getCommandPath, c as getPrimaryCommand, d as hasHelpOrVersion } from "./register.subclis-BdHPQ1KB.js";
95
95
  import "./gateway-rpc-FMQ_vIWH.js";
96
96
  import "./help-format-CN9mmVLD.js";
97
- import "./admin-unlock-6wWgoRR8.js";
98
- import "./ensure-local-gateway-DisWzlSd.js";
99
- import "./login-CLMSGRQD.js";
97
+ import "./admin-unlock-GB1CQc19.js";
98
+ import "./ensure-local-gateway-D8d3GA8E.js";
99
+ import "./login-n9IlY9cc.js";
100
100
  import "./koi-DiwiNwmX.js";
101
101
  import { t as ensurePluginRegistryLoaded } from "./plugin-registry-Cx4aWgoj.js";
102
102
  import "./configure-BFAHsKLm.js";
@@ -104,8 +104,8 @@ import "./systemd-linger-8Xh54IOl.js";
104
104
  import "./widearea-dns-BbZrO9Lc.js";
105
105
  import "./bonjour-discovery-CDm_rOJY.js";
106
106
  import "./auth-health-Dbdl2a43.js";
107
- import "./doctor-CZR3aWWe.js";
108
- import "./completion-cli-DGFC4eB-.js";
107
+ import "./doctor-08pLcCNr.js";
108
+ import "./completion-cli-BwG1kbs-.js";
109
109
  import "./service-audit-Bqgp6PlY.js";
110
110
  import "./hooks-status-CV-O6Xro.js";
111
111
  import { r as emitCliBanner } from "./tui-QrrdMeaH.js";
@@ -162,7 +162,7 @@ async function runCli(argv = process$1.argv) {
162
162
  assertSupportedRuntime();
163
163
  if (await tryRouteCli(normalizedArgv)) return;
164
164
  enableConsoleCapture();
165
- const { buildProgram } = await import("./program-CxUt4bQ_.js").then((n) => n.t);
165
+ const { buildProgram } = await import("./program-BpBoQJX3.js").then((n) => n.t);
166
166
  const program = buildProgram();
167
167
  installUnhandledRejectionHandler();
168
168
  process$1.on("uncaughtException", (error) => {
@@ -175,7 +175,7 @@ async function runCli(argv = process$1.argv) {
175
175
  if (!hasAnyArg && !wantsHelpOrVersion) {
176
176
  let isLoggedIn = false;
177
177
  try {
178
- const { readAuthFile } = await import("./login-CLMSGRQD.js").then((n) => n.n);
178
+ const { readAuthFile } = await import("./login-n9IlY9cc.js").then((n) => n.n);
179
179
  isLoggedIn = !!(await readAuthFile())?.token;
180
180
  } catch {}
181
181
  let defaultCommand = isLoggedIn ? "chat" : "tui";
@@ -185,7 +185,7 @@ async function runCli(argv = process$1.argv) {
185
185
  const choice = await runFirstRunWelcome();
186
186
  if (choice === null) return;
187
187
  if (choice === "admin") {
188
- const { adminUnlockCommand } = await import("./admin-unlock-6wWgoRR8.js").then((n) => n.n);
188
+ const { adminUnlockCommand } = await import("./admin-unlock-GB1CQc19.js").then((n) => n.n);
189
189
  if (!await adminUnlockCommand({})) return;
190
190
  defaultCommand = "tui";
191
191
  } else defaultCommand = choice;
@@ -195,7 +195,7 @@ async function runCli(argv = process$1.argv) {
195
195
  }
196
196
  const primary = getPrimaryCommand(parseArgv);
197
197
  if (primary) {
198
- const { registerSubCliByName } = await import("./register.subclis-DVu8y5t2.js").then((n) => n.i);
198
+ const { registerSubCliByName } = await import("./register.subclis-BdHPQ1KB.js").then((n) => n.i);
199
199
  await registerSubCliByName(program, primary);
200
200
  }
201
201
  if (!(!primary && hasHelpOrVersion(parseArgv))) {
@@ -76,7 +76,7 @@ import "./archive-D7pTLsCD.js";
76
76
  import "./skill-scanner-BSxHCT2R.js";
77
77
  import "./installs-CZ-Bi4x1.js";
78
78
  import "./health-format-CTY-Crvj.js";
79
- import { C as normalizeUpdateChannel, S as formatUpdateChannelLabel, _ as fetchNpmTagVersion, a as globalInstallArgs, b as DEFAULT_PACKAGE_CHANNEL, d as formatUpdateOneLiner, 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 resolveNpmChannelTag, w as resolveEffectiveUpdateChannel, x as channelToNpmTag, y as DEFAULT_GIT_CHANNEL } from "./update-runner-C1ynI8cF.js";
79
+ import { C as normalizeUpdateChannel, S as formatUpdateChannelLabel, _ as fetchNpmTagVersion, a as globalInstallArgs, b as DEFAULT_PACKAGE_CHANNEL, d as formatUpdateOneLiner, 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 resolveNpmChannelTag, w as resolveEffectiveUpdateChannel, x as channelToNpmTag, y as DEFAULT_GIT_CHANNEL } from "./update-runner-DOcP4vcg.js";
80
80
  import "./auth-tu2F7_70.js";
81
81
  import { t as renderTable } from "./table-Bu1gPkD7.js";
82
82
  import "./skills-status-CrL8zDk3.js";
@@ -84,12 +84,12 @@ import "./service-C6lyBW0F.js";
84
84
  import "./systemd-C7TaOB0r.js";
85
85
  import "./diagnostics-B6_fjn4Z.js";
86
86
  import "./channels-status-issues-CNNkv5DB.js";
87
- import "./register.subclis-DVu8y5t2.js";
87
+ import "./register.subclis-BdHPQ1KB.js";
88
88
  import { t as formatHelpExamples } from "./help-format-CN9mmVLD.js";
89
89
  import "./systemd-linger-8Xh54IOl.js";
90
90
  import "./auth-health-Dbdl2a43.js";
91
- import { t as doctorCommand } from "./doctor-CZR3aWWe.js";
92
- import { r as installCompletion } from "./completion-cli-DGFC4eB-.js";
91
+ import { t as doctorCommand } from "./doctor-08pLcCNr.js";
92
+ import { r as installCompletion } from "./completion-cli-BwG1kbs-.js";
93
93
  import "./service-audit-Bqgp6PlY.js";
94
94
  import "./shared-C_VbBG7x.js";
95
95
  import { r as runDaemonRestart } from "./daemon-cli-_KxLodW6.js";
@@ -6,7 +6,7 @@ import { N as VERSION } from "./config-BOTdzMIB.js";
6
6
  import { _ as parseSemver } from "./daemon-runtime-EHtDn8NC.js";
7
7
  import { t as note } from "./note-D68Wd3Zr.js";
8
8
  import { i as resolveControlUiDistIndexPathForRoot, r as resolveControlUiDistIndexHealth } from "./health-format-CTY-Crvj.js";
9
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-DGFC4eB-.js";
9
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-BwG1kbs-.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.316",
3
+ "version": "2026.3.317",
4
4
  "description": "SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.",
5
5
  "keywords": [
6
6
  "cli",