skykoi 2026.3.30 → 2026.3.31

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.30",
2
+ "version": "2026.3.31",
3
3
  "commit": "e5dd87a50ce9315067889b9a506365fe951bba83",
4
- "builtAt": "2026-03-18T09:57:48.652Z"
4
+ "builtAt": "2026-03-18T10:14:11.468Z"
5
5
  }
@@ -1 +1 @@
1
- 73b6b63e3d94149559dc52021fa2d31748c3cff280e17ee771d626b9a7c2c872
1
+ 6afbfe61ccd2cbf38505e69f8fef1b451f62407fb78325f174fe2fb431b745ba
@@ -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-DuecBYuy.js")).registerGatewayCli(program);
127
+ (await import("./gateway-cli-VBGOf-7z.js")).registerGatewayCli(program);
128
128
  }
129
129
  },
130
130
  {
@@ -282,7 +282,7 @@ const entries = [
282
282
  name: "update",
283
283
  description: "CLI update helpers",
284
284
  register: async (program) => {
285
- (await import("./update-cli-IVrgXnF7.js")).registerUpdateCli(program);
285
+ (await import("./update-cli-D4bfteVO.js")).registerUpdateCli(program);
286
286
  }
287
287
  },
288
288
  {
@@ -1,6 +1,6 @@
1
1
  import { n as __exportAll } from "./chunk-BXK9XSlF.js";
2
2
  import { X as resolveStateDir } from "./entry.js";
3
- import { n as registerSubCliByName, t as getSubCliEntries } from "./register.subclis-C8QER0jA.js";
3
+ import { n as registerSubCliByName, t as getSubCliEntries } from "./register.subclis-C00vuiWz.js";
4
4
  import path from "node:path";
5
5
  import os from "node:os";
6
6
  import fs from "node:fs/promises";
@@ -22,7 +22,7 @@ import { a as resolveSessionTranscriptsDirForAgent, i as resolveSessionTranscrip
22
22
  import { d as loadSessionStore } from "./sandbox-DyDrMxBF.js";
23
23
  import { r as runCommandWithRuntime } from "./cli-utils-CQTTNUIq.js";
24
24
  import { n as ensurePluginRegistryLoaded, t as hasExplicitOptions } from "./command-options-YP_dvMez.js";
25
- import { l as getVerboseFlag, o as getFlagValue, r as registerSubCliCommands, s as getPositiveIntFlagValue, u as hasFlag } from "./register.subclis-C8QER0jA.js";
25
+ import { l as getVerboseFlag, o as getFlagValue, r as registerSubCliCommands, s as getPositiveIntFlagValue, u as hasFlag } from "./register.subclis-C00vuiWz.js";
26
26
  import { n as parsePositiveIntOrUndefined, t as collectOption } from "./helpers-CEFiyjZQ.js";
27
27
  import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-DQcPueX1.js";
28
28
  import { t as createDefaultDeps } from "./deps-DZVkCyfF.js";
@@ -34,12 +34,12 @@ import { d as applyAuthChoice, f as applyOpenAIConfig, h as promptAuthChoiceGrou
34
34
  import { l as healthCommand } from "./health-format-BL3M1y4s.js";
35
35
  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-DJ_95veW.js";
36
36
  import { n as logConfigUpdated, t as formatConfigPath } from "./logging-D15QDE2U.js";
37
- import { a as findAgentEntryIndex, c as pruneAgentConfig, d as parseIdentityMarkdown, f as runOnboardingWizard, i as buildAgentSummaries, l as identityHasValues, o as listAgentEntries, r as applyAgentConfig, s as loadAgentIdentity, t as statusCommand } from "./status-ahdNz9Db.js";
37
+ import { a as findAgentEntryIndex, c as pruneAgentConfig, d as parseIdentityMarkdown, f as runOnboardingWizard, i as buildAgentSummaries, l as identityHasValues, o as listAgentEntries, r as applyAgentConfig, s as loadAgentIdentity, t as statusCommand } from "./status-B9gw1tPc.js";
38
38
  import { a as createOutboundSendDeps, n as resolveSessionKeyForRequest, t as agentCommand } from "./agent-BKhAPOvN.js";
39
39
  import { t as formatHelpExamples } from "./help-format-tZizD4BR.js";
40
40
  import { i as CONFIGURE_WIZARD_SECTIONS, n as configureCommand, r as configureCommandWithSections } from "./configure-D50d4QdJ.js";
41
41
  import { n as ensureSystemdUserLingerNonInteractive } from "./systemd-linger-CEreLGmo.js";
42
- import { n as loadAndMaybeMigrateDoctorConfig, t as doctorCommand } from "./doctor-87Qcbj2g.js";
42
+ import { n as loadAndMaybeMigrateDoctorConfig, t as doctorCommand } from "./doctor-D3FZptHG.js";
43
43
  import path from "node:path";
44
44
  import fs from "node:fs";
45
45
  import JSON5 from "json5";
@@ -29,7 +29,7 @@ import { r as isSystemdUserServiceAvailable } from "./systemd-DQvm8tRB.js";
29
29
  import { n as renderSystemdUnavailableHints, t as isSystemdUnavailableDetail } from "./systemd-hints-DiosV8jd.js";
30
30
  import { a as renderGatewayServiceCleanupHints, i as findExtraGatewayServices, n as auditGatewayServiceConfig, o as readLastGatewayErrorLine, r as needsNodeRuntimeMigration, t as SERVICE_AUDIT_CODES } from "./service-audit-CQ1bUSCH.js";
31
31
  import { i as resolveControlUiDistIndexPathForRoot, l as healthCommand, r as resolveControlUiDistIndexHealth, t as formatHealthCheckFailure } from "./health-format-BL3M1y4s.js";
32
- import { f as doctorShellCompletion, t as runGatewayUpdate } from "./update-runner-DEqeXBos.js";
32
+ import { f as doctorShellCompletion, t as runGatewayUpdate } from "./update-runner-D2rkfIG-.js";
33
33
  import { n as logConfigUpdated } from "./logging-D15QDE2U.js";
34
34
  import { t as buildWorkspaceSkillStatus } from "./skills-status-C4wmQlJW.js";
35
35
  import { n as buildAuthHealthSummary, r as formatRemainingShort, t as DEFAULT_OAUTH_WARN_MS } from "./auth-health-BtHeU2M-.js";
@@ -26,7 +26,7 @@ import { n as logConfigUpdated } from "./logging-CLxV9Na7.js";
26
26
  import { t as note$1 } from "./note-CrCSjpk3.js";
27
27
  import { t as applyPluginAutoEnable } from "./plugin-auto-enable-KzIwJe0A.js";
28
28
  import { i as resolveControlUiDistIndexPathForRoot, l as healthCommand, r as resolveControlUiDistIndexHealth, t as formatHealthCheckFailure } from "./health-format-DUFBNWnB.js";
29
- import { c as doctorShellCompletion, t as runGatewayUpdate } from "./update-runner-COS9fEWI.js";
29
+ import { c as doctorShellCompletion, t as runGatewayUpdate } from "./update-runner--JLGNdGD.js";
30
30
  import { i as resolveGatewayAuth } from "./auth-DSrYkGU-.js";
31
31
  import { t as buildWorkspaceSkillStatus } from "./skills-status-BVaiHzFh.js";
32
32
  import { a as repairLaunchAgentBootstrap, i as launchAgentPlistExists, n as isLaunchAgentListed, o as resolveGatewayLogPaths, r as isLaunchAgentLoaded, t as resolveGatewayService } from "./service-BKQOHHW6.js";
package/dist/entry.js CHANGED
@@ -1334,7 +1334,7 @@ if (!ensureExperimentalWarningSuppressed()) {
1334
1334
  applyCliProfileEnv({ profile: parsed.profile });
1335
1335
  process$1.argv = parsed.argv;
1336
1336
  }
1337
- import("./run-main-CxLqCCUJ.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
1337
+ import("./run-main-B4K_5H7e.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
1338
1338
  console.error("[SKYKOI] Failed to start CLI:", error instanceof Error ? error.stack ?? error.message : error);
1339
1339
  process$1.exitCode = 1;
1340
1340
  });
@@ -61,8 +61,8 @@ import { r as runCommandWithRuntime } from "./cli-utils-CQTTNUIq.js";
61
61
  import "./pairing-labels-DxpfDscO.js";
62
62
  import { t as buildChannelAccountSnapshot } from "./status-t7_XFd6z.js";
63
63
  import "./channels-status-issues-Cx4DwKM8.js";
64
- import "./register.subclis-C8QER0jA.js";
65
- import "./completion-cli-BAaldOJS.js";
64
+ import "./register.subclis-C00vuiWz.js";
65
+ import "./completion-cli-BT_5u1b7.js";
66
66
  import { n as createOutboundSendDeps, t as createDefaultDeps } from "./deps-DZVkCyfF.js";
67
67
  import "./daemon-runtime-HqcnmSTj.js";
68
68
  import "./service-DV05Mtg_.js";
@@ -76,11 +76,11 @@ import { a as toOptionString, i as parsePort$1, n as extractGatewayMiskeys, r as
76
76
  import { i as probeGateway } from "./audit-D0OQ_h8g.js";
77
77
  import { g as discoverGatewayBeacons, n as installSkill } from "./onboard-skills-Bmw1Vd5a.js";
78
78
  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-BL3M1y4s.js";
79
- import { S as normalizeUpdateChannel, _ as resolveNpmChannelTag, h as compareSemverStrings, m as checkUpdateStatus, t as runGatewayUpdate, y as DEFAULT_PACKAGE_CHANNEL } from "./update-runner-DEqeXBos.js";
79
+ import { S as normalizeUpdateChannel, _ as resolveNpmChannelTag, h as compareSemverStrings, m as checkUpdateStatus, t as runGatewayUpdate, y as DEFAULT_PACKAGE_CHANNEL } from "./update-runner-D2rkfIG-.js";
80
80
  import "./github-copilot-auth-DJ_95veW.js";
81
81
  import "./logging-D15QDE2U.js";
82
82
  import { i as shouldIncludeHook, n as loadWorkspaceHookEntries, r as resolveHookConfig } from "./hooks-status-CRG1w6AU.js";
83
- import { a as findAgentEntryIndex, c as pruneAgentConfig, f as runOnboardingWizard, n as getStatusSummary, o as listAgentEntries, r as applyAgentConfig, s as loadAgentIdentity, u as loadAgentIdentityFromWorkspace } from "./status-ahdNz9Db.js";
83
+ import { a as findAgentEntryIndex, c as pruneAgentConfig, f as runOnboardingWizard, n as getStatusSummary, o as listAgentEntries, r as applyAgentConfig, s as loadAgentIdentity, u as loadAgentIdentityFromWorkspace } from "./status-B9gw1tPc.js";
84
84
  import { t as buildWorkspaceSkillStatus } from "./skills-status-C4wmQlJW.js";
85
85
  import "./tui-_aG7l29T.js";
86
86
  import { i as setGatewayWsLogStyle, n as logWs, r as summarizeAgentEventForWsLog, t as formatForLog } from "./ws-log-C4lXq6b4.js";
@@ -15895,11 +15895,17 @@ async function startPluginServices(params) {
15895
15895
 
15896
15896
  //#endregion
15897
15897
  //#region src/gateway/bedrock-credentials.ts
15898
+ let refreshTimer = null;
15899
+ function resolveGatewayToken(cfg) {
15900
+ const gw = cfg.gateway;
15901
+ if (!gw?.auth) return void 0;
15902
+ return (gw.auth?.token ?? "").trim() || void 0;
15903
+ }
15898
15904
  async function bootstrapBedrockCredentials(cfg) {
15899
15905
  if (resolveAwsSdkEnvVarName() !== void 0) return false;
15900
15906
  const appUrl = process.env.SKYKOI_APP_URL?.trim();
15901
15907
  const agentId = process.env.SKYKOI_AGENT_ID?.trim();
15902
- const gatewayToken = cfg.gateway?.auth ? cfg.gateway.auth?.token?.trim() : void 0;
15908
+ const gatewayToken = process.env.SKYKOI_GATEWAY_TOKEN?.trim() || resolveGatewayToken(cfg);
15903
15909
  if (!appUrl || !agentId || !gatewayToken) return false;
15904
15910
  try {
15905
15911
  const url = `${appUrl}/api/agents/${agentId}/credentials/proxy?provider=amazon-bedrock`;
@@ -15912,12 +15918,31 @@ async function bootstrapBedrockCredentials(cfg) {
15912
15918
  if (!cred) return false;
15913
15919
  process.env.AWS_ACCESS_KEY_ID = cred.data.accessKeyId;
15914
15920
  process.env.AWS_SECRET_ACCESS_KEY = cred.data.secretAccessKey;
15921
+ if (cred.data.sessionToken) process.env.AWS_SESSION_TOKEN = cred.data.sessionToken;
15915
15922
  if (cred.data.region) process.env.AWS_REGION = cred.data.region;
15923
+ if (cred.data.expiresAt) scheduleCredentialRefresh(cfg, cred.data.expiresAt);
15916
15924
  return true;
15917
15925
  } catch {
15918
15926
  return false;
15919
15927
  }
15920
15928
  }
15929
+ function scheduleCredentialRefresh(cfg, expiresAt) {
15930
+ if (refreshTimer) clearTimeout(refreshTimer);
15931
+ const expiresMs = new Date(expiresAt).getTime();
15932
+ const now = Date.now();
15933
+ const refreshIn = Math.max(expiresMs - now - 10 * 6e4, 6e4);
15934
+ refreshTimer = setTimeout(async () => {
15935
+ try {
15936
+ delete process.env.AWS_ACCESS_KEY_ID;
15937
+ delete process.env.AWS_SECRET_ACCESS_KEY;
15938
+ delete process.env.AWS_SESSION_TOKEN;
15939
+ await bootstrapBedrockCredentials(cfg);
15940
+ } catch {
15941
+ scheduleCredentialRefresh(cfg, new Date(Date.now() + 15 * 6e4).toISOString());
15942
+ }
15943
+ }, refreshIn);
15944
+ if (refreshTimer.unref) refreshTimer.unref();
15945
+ }
15921
15946
 
15922
15947
  //#endregion
15923
15948
  //#region src/gateway/server-restart-sentinel.ts
@@ -55,7 +55,7 @@ import { n as createOutboundSendDeps, t as createDefaultDeps } from "./deps-DRCH
55
55
  import { i as enableTailscaleServe, n as disableTailscaleServe, o as getTailnetHostname, r as enableTailscaleFunnel, t as disableTailscaleFunnel } from "./tailscale-C9oNI3cv.js";
56
56
  import { t as ensureSKYKOICliOnPath } from "./path-env-BnUKFCos.js";
57
57
  import "./daemon-runtime-B7p4kL16.js";
58
- import { c as loadAgentIdentity, d as loadAgentIdentityFromWorkspace, i as applyAgentConfig, l as pruneAgentConfig, o as findAgentEntryIndex, p as forceFreePortAndWait, r as getStatusSummary, s as listAgentEntries, t as runOnboardingWizard } from "./onboarding-DiYpvycX.js";
58
+ import { c as loadAgentIdentity, d as loadAgentIdentityFromWorkspace, i as applyAgentConfig, l as pruneAgentConfig, o as findAgentEntryIndex, p as forceFreePortAndWait, r as getStatusSummary, s as listAgentEntries, t as runOnboardingWizard } from "./onboarding-D__7Nlsl.js";
59
59
  import { t as resolveChannelDefaultAccountId } from "./helpers-yjIEMzi8.js";
60
60
  import "./logging-CLxV9Na7.js";
61
61
  import "./note-CrCSjpk3.js";
@@ -68,7 +68,7 @@ import "./archive-Dy3Ezb-5.js";
68
68
  import "./skill-scanner-BoGjHXUZ.js";
69
69
  import "./installs-ChtZhX65.js";
70
70
  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-DUFBNWnB.js";
71
- import { S as normalizeUpdateChannel, _ as resolveNpmChannelTag, h as compareSemverStrings, m as checkUpdateStatus, t as runGatewayUpdate, y as DEFAULT_PACKAGE_CHANNEL } from "./update-runner-COS9fEWI.js";
71
+ import { S as normalizeUpdateChannel, _ as resolveNpmChannelTag, h as compareSemverStrings, m as checkUpdateStatus, t as runGatewayUpdate, y as DEFAULT_PACKAGE_CHANNEL } from "./update-runner--JLGNdGD.js";
72
72
  import { i as resolveGatewayAuth, n as authorizeGatewayConnect, r as isLocalDirectRequest, t as assertGatewayAuthConfigured } from "./auth-DSrYkGU-.js";
73
73
  import { i as probeGateway } from "./audit-zzBGcjIg.js";
74
74
  import "./table-BOthYYmp.js";
@@ -78,7 +78,7 @@ import "./systemd-DyrxDxSB.js";
78
78
  import "./service-audit-Cyagv33t.js";
79
79
  import "./node-service-DPiAKtp-.js";
80
80
  import "./channels-status-issues-CbB072Pz.js";
81
- import "./completion-cli-n6ns6CLt.js";
81
+ import "./completion-cli-52VvoM_K.js";
82
82
  import { a as createOutboundSendDeps$1, i as resolveAgentOutboundTarget, r as resolveAgentDeliveryPlan, t as agentCommand } from "./agent-D3YXnrX0.js";
83
83
  import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-Cr9yVcsB.js";
84
84
  import { i as shouldIncludeHook, n as loadWorkspaceHookEntries, r as resolveHookConfig } from "./hooks-status-CdjD9QYu.js";
@@ -15896,11 +15896,17 @@ async function startPluginServices(params) {
15896
15896
 
15897
15897
  //#endregion
15898
15898
  //#region src/gateway/bedrock-credentials.ts
15899
+ let refreshTimer = null;
15900
+ function resolveGatewayToken(cfg) {
15901
+ const gw = cfg.gateway;
15902
+ if (!gw?.auth) return void 0;
15903
+ return (gw.auth?.token ?? "").trim() || void 0;
15904
+ }
15899
15905
  async function bootstrapBedrockCredentials(cfg) {
15900
15906
  if (resolveAwsSdkEnvVarName() !== void 0) return false;
15901
15907
  const appUrl = process.env.SKYKOI_APP_URL?.trim();
15902
15908
  const agentId = process.env.SKYKOI_AGENT_ID?.trim();
15903
- const gatewayToken = cfg.gateway?.auth ? cfg.gateway.auth?.token?.trim() : void 0;
15909
+ const gatewayToken = process.env.SKYKOI_GATEWAY_TOKEN?.trim() || resolveGatewayToken(cfg);
15904
15910
  if (!appUrl || !agentId || !gatewayToken) return false;
15905
15911
  try {
15906
15912
  const url = `${appUrl}/api/agents/${agentId}/credentials/proxy?provider=amazon-bedrock`;
@@ -15913,12 +15919,31 @@ async function bootstrapBedrockCredentials(cfg) {
15913
15919
  if (!cred) return false;
15914
15920
  process.env.AWS_ACCESS_KEY_ID = cred.data.accessKeyId;
15915
15921
  process.env.AWS_SECRET_ACCESS_KEY = cred.data.secretAccessKey;
15922
+ if (cred.data.sessionToken) process.env.AWS_SESSION_TOKEN = cred.data.sessionToken;
15916
15923
  if (cred.data.region) process.env.AWS_REGION = cred.data.region;
15924
+ if (cred.data.expiresAt) scheduleCredentialRefresh(cfg, cred.data.expiresAt);
15917
15925
  return true;
15918
15926
  } catch {
15919
15927
  return false;
15920
15928
  }
15921
15929
  }
15930
+ function scheduleCredentialRefresh(cfg, expiresAt) {
15931
+ if (refreshTimer) clearTimeout(refreshTimer);
15932
+ const expiresMs = new Date(expiresAt).getTime();
15933
+ const now = Date.now();
15934
+ const refreshIn = Math.max(expiresMs - now - 10 * 6e4, 6e4);
15935
+ refreshTimer = setTimeout(async () => {
15936
+ try {
15937
+ delete process.env.AWS_ACCESS_KEY_ID;
15938
+ delete process.env.AWS_SECRET_ACCESS_KEY;
15939
+ delete process.env.AWS_SESSION_TOKEN;
15940
+ await bootstrapBedrockCredentials(cfg);
15941
+ } catch {
15942
+ scheduleCredentialRefresh(cfg, new Date(Date.now() + 15 * 6e4).toISOString());
15943
+ }
15944
+ }, refreshIn);
15945
+ if (refreshTimer.unref) refreshTimer.unref();
15946
+ }
15922
15947
 
15923
15948
  //#endregion
15924
15949
  //#region src/gateway/server-restart-sentinel.ts
package/dist/index.js CHANGED
@@ -51,7 +51,7 @@ import { l as ensureBinary, u as promptYesNo } from "./tailscale-C9oNI3cv.js";
51
51
  import { t as isMainModule } from "./is-main-B6kCyqsv.js";
52
52
  import { t as ensureSKYKOICliOnPath } from "./path-env-BnUKFCos.js";
53
53
  import { a as gatewayInstallErrorHint, g as assertSupportedRuntime, i as buildGatewayInstallPlan, r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-B7p4kL16.js";
54
- import { a as buildAgentSummaries, c as loadAgentIdentity, f as parseIdentityMarkdown, i as applyAgentConfig, l as pruneAgentConfig, n as statusCommand, o as findAgentEntryIndex, s as listAgentEntries, t as runOnboardingWizard, u as identityHasValues } from "./onboarding-DiYpvycX.js";
54
+ import { a as buildAgentSummaries, c as loadAgentIdentity, f as parseIdentityMarkdown, i as applyAgentConfig, l as pruneAgentConfig, n as statusCommand, o as findAgentEntryIndex, s as listAgentEntries, t as runOnboardingWizard, u as identityHasValues } from "./onboarding-D__7Nlsl.js";
55
55
  import { t as resolveChannelDefaultAccountId } from "./helpers-yjIEMzi8.js";
56
56
  import { n as logConfigUpdated, t as formatConfigPath } from "./logging-CLxV9Na7.js";
57
57
  import "./note-CrCSjpk3.js";
@@ -65,7 +65,7 @@ import "./archive-Dy3Ezb-5.js";
65
65
  import "./skill-scanner-BoGjHXUZ.js";
66
66
  import "./installs-ChtZhX65.js";
67
67
  import { l as healthCommand } from "./health-format-DUFBNWnB.js";
68
- import "./update-runner-COS9fEWI.js";
68
+ import "./update-runner--JLGNdGD.js";
69
69
  import "./auth-DSrYkGU-.js";
70
70
  import "./audit-zzBGcjIg.js";
71
71
  import { t as renderTable } from "./table-BOthYYmp.js";
@@ -75,7 +75,7 @@ import { r as isSystemdUserServiceAvailable } from "./systemd-DyrxDxSB.js";
75
75
  import "./service-audit-Cyagv33t.js";
76
76
  import "./node-service-DPiAKtp-.js";
77
77
  import "./channels-status-issues-CbB072Pz.js";
78
- import { c as registerSubCliCommands, d as getPositiveIntFlagValue, f as getVerboseFlag, l as getCommandPath, m as hasHelpOrVersion, p as hasFlag, u as getFlagValue } from "./completion-cli-n6ns6CLt.js";
78
+ import { c as registerSubCliCommands, d as getPositiveIntFlagValue, f as getVerboseFlag, l as getCommandPath, m as hasHelpOrVersion, p as hasFlag, u as getFlagValue } from "./completion-cli-52VvoM_K.js";
79
79
  import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-CbL6geDo.js";
80
80
  import { t as formatHelpExamples } from "./help-format-q-N7n7vs.js";
81
81
  import { a as createOutboundSendDeps, n as resolveSessionKeyForRequest, t as agentCommand } from "./agent-D3YXnrX0.js";
@@ -85,7 +85,7 @@ import { i as CONFIGURE_WIZARD_SECTIONS, n as configureCommand, r as configureCo
85
85
  import { n as ensureSystemdUserLingerNonInteractive } from "./systemd-linger-C5NE1TWa.js";
86
86
  import "./widearea-dns-Cr9yVcsB.js";
87
87
  import "./auth-health-DLdo_EBm.js";
88
- import { n as loadAndMaybeMigrateDoctorConfig, t as doctorCommand } from "./doctor-B0PeqVtB.js";
88
+ import { n as loadAndMaybeMigrateDoctorConfig, t as doctorCommand } from "./doctor-D7gplt7y.js";
89
89
  import "./hooks-status-CdjD9QYu.js";
90
90
  import { i as hasEmittedCliBanner, n as emitCliBanner, r as formatCliBannerLine } from "./tui-CQVWQGBQ.js";
91
91
  import process$1 from "node:process";
@@ -24,7 +24,7 @@ import { t as WizardCancelledError } from "./prompts-FbZThK8w.js";
24
24
  import { c as promptDefaultModel, d as warnIfModelConfigLooksOff, f as applyAuthChoice, g as promptAuthChoiceGrouped, r as promptRemoteGatewayConfig, s as applyPrimaryModel, t as setupSkills, u as resolvePreferredProviderForAuthChoice } from "./onboard-skills-C0FcXPym.js";
25
25
  import { n as setupChannels } from "./onboard-channels-yENZymbS.js";
26
26
  import { l as healthCommand, n as ensureControlUiAssetsBuilt, s as formatHealthChannelLines, t as formatHealthCheckFailure, u as resolveHeartbeatSummaryForAgent } from "./health-format-DUFBNWnB.js";
27
- import { C as resolveEffectiveUpdateChannel, S as normalizeUpdateChannel, d as formatUpdateOneLiner, f as getUpdateCheckResult, h as compareSemverStrings, l as ensureCompletionCacheExists, m as checkUpdateStatus, p as resolveUpdateAvailability, s as checkShellCompletionStatus, u as formatUpdateAvailableHint, x as formatUpdateChannelLabel } from "./update-runner-COS9fEWI.js";
27
+ import { C as resolveEffectiveUpdateChannel, S as normalizeUpdateChannel, d as formatUpdateOneLiner, f as getUpdateCheckResult, h as compareSemverStrings, l as ensureCompletionCacheExists, m as checkUpdateStatus, p as resolveUpdateAvailability, s as checkShellCompletionStatus, u as formatUpdateAvailableHint, x as formatUpdateChannelLabel } from "./update-runner--JLGNdGD.js";
28
28
  import { i as probeGateway, t as runSecurityAudit } from "./audit-zzBGcjIg.js";
29
29
  import { t as renderTable } from "./table-BOthYYmp.js";
30
30
  import { t as buildWorkspaceSkillStatus } from "./skills-status-BVaiHzFh.js";
@@ -34,7 +34,7 @@ import { o as readLastGatewayErrorLine } from "./service-audit-Cyagv33t.js";
34
34
  import { t as resolveNodeService } from "./node-service-DPiAKtp-.js";
35
35
  import { t as collectChannelStatusIssues } from "./channels-status-issues-CbB072Pz.js";
36
36
  import { i as redactSecrets, n as formatDuration$1, r as formatGatewayAuthUsed, t as formatAge$1 } from "./format-8citvr_1.js";
37
- import { r as installCompletion } from "./completion-cli-n6ns6CLt.js";
37
+ import { r as installCompletion } from "./completion-cli-52VvoM_K.js";
38
38
  import { t as buildWorkspaceHookStatus } from "./hooks-status-CdjD9QYu.js";
39
39
  import { t as runTui } from "./tui-CQVWQGBQ.js";
40
40
  import os from "node:os";
@@ -52,8 +52,8 @@ import "./pairing-labels-DxpfDscO.js";
52
52
  import "./channels-status-issues-Cx4DwKM8.js";
53
53
  import { n as ensurePluginRegistryLoaded } from "./command-options-YP_dvMez.js";
54
54
  import { n as resolveCliChannelOptions } from "./channel-options-DoRr2LmL.js";
55
- import { a as getCommandPath, d as hasHelpOrVersion, l as getVerboseFlag } from "./register.subclis-C8QER0jA.js";
56
- import "./completion-cli-BAaldOJS.js";
55
+ import { a as getCommandPath, d as hasHelpOrVersion, l as getVerboseFlag } from "./register.subclis-C00vuiWz.js";
56
+ import "./completion-cli-BT_5u1b7.js";
57
57
  import "./gateway-rpc-DQcPueX1.js";
58
58
  import "./deps-DZVkCyfF.js";
59
59
  import "./daemon-runtime-HqcnmSTj.js";
@@ -65,22 +65,22 @@ import "./widearea-dns-DHSIgmLp.js";
65
65
  import "./audit-D0OQ_h8g.js";
66
66
  import "./onboard-skills-Bmw1Vd5a.js";
67
67
  import "./health-format-BL3M1y4s.js";
68
- import "./update-runner-DEqeXBos.js";
68
+ import "./update-runner-D2rkfIG-.js";
69
69
  import "./github-copilot-auth-DJ_95veW.js";
70
70
  import "./logging-D15QDE2U.js";
71
71
  import "./hooks-status-CRG1w6AU.js";
72
- import "./status-ahdNz9Db.js";
72
+ import "./status-B9gw1tPc.js";
73
73
  import "./skills-status-C4wmQlJW.js";
74
74
  import { i as hasEmittedCliBanner, n as emitCliBanner, r as formatCliBannerLine } from "./tui-_aG7l29T.js";
75
75
  import "./agent-BKhAPOvN.js";
76
76
  import "./node-service-C2JDeXPT.js";
77
77
  import { t as forceFreePort } from "./ports-Bc_X7vVa.js";
78
78
  import "./auth-health-BtHeU2M-.js";
79
- import { r as registerProgramCommands, t as ensureConfigReady } from "./config-guard-DMpvkYlJ.js";
79
+ import { r as registerProgramCommands, t as ensureConfigReady } from "./config-guard-D-C6wp6Q.js";
80
80
  import "./help-format-tZizD4BR.js";
81
81
  import "./configure-D50d4QdJ.js";
82
82
  import "./systemd-linger-CEreLGmo.js";
83
- import "./doctor-87Qcbj2g.js";
83
+ import "./doctor-D3FZptHG.js";
84
84
  import { Command } from "commander";
85
85
 
86
86
  //#region src/cli/program/context.ts
@@ -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-DDZosvVV.js")).registerGatewayCli(program);
127
+ (await import("./gateway-cli-DIr4w7H1.js")).registerGatewayCli(program);
128
128
  }
129
129
  },
130
130
  {
@@ -282,14 +282,14 @@ const entries = [
282
282
  name: "update",
283
283
  description: "CLI update helpers",
284
284
  register: async (program) => {
285
- (await import("./update-cli-D4t5Bc7R.js")).registerUpdateCli(program);
285
+ (await import("./update-cli-TpiKYwkG.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-BAaldOJS.js").then((n) => n.n)).registerCompletionCli(program);
292
+ (await import("./completion-cli-BT_5u1b7.js").then((n) => n.n)).registerCompletionCli(program);
293
293
  }
294
294
  }
295
295
  ];
@@ -51,8 +51,8 @@ import "./login-qr-BHTIpk7i.js";
51
51
  import "./pairing-labels-DxpfDscO.js";
52
52
  import "./channels-status-issues-Cx4DwKM8.js";
53
53
  import { n as ensurePluginRegistryLoaded } from "./command-options-YP_dvMez.js";
54
- import { a as getCommandPath, c as getPrimaryCommand, d as hasHelpOrVersion } from "./register.subclis-C8QER0jA.js";
55
- import "./completion-cli-BAaldOJS.js";
54
+ import { a as getCommandPath, c as getPrimaryCommand, d as hasHelpOrVersion } from "./register.subclis-C00vuiWz.js";
55
+ import "./completion-cli-BT_5u1b7.js";
56
56
  import "./gateway-rpc-DQcPueX1.js";
57
57
  import "./deps-DZVkCyfF.js";
58
58
  import { h as assertSupportedRuntime } from "./daemon-runtime-HqcnmSTj.js";
@@ -64,21 +64,21 @@ import "./widearea-dns-DHSIgmLp.js";
64
64
  import "./audit-D0OQ_h8g.js";
65
65
  import "./onboard-skills-Bmw1Vd5a.js";
66
66
  import "./health-format-BL3M1y4s.js";
67
- import "./update-runner-DEqeXBos.js";
67
+ import "./update-runner-D2rkfIG-.js";
68
68
  import "./github-copilot-auth-DJ_95veW.js";
69
69
  import "./logging-D15QDE2U.js";
70
70
  import "./hooks-status-CRG1w6AU.js";
71
- import "./status-ahdNz9Db.js";
71
+ import "./status-B9gw1tPc.js";
72
72
  import "./skills-status-C4wmQlJW.js";
73
73
  import { n as emitCliBanner } from "./tui-_aG7l29T.js";
74
74
  import "./agent-BKhAPOvN.js";
75
75
  import "./node-service-C2JDeXPT.js";
76
76
  import "./auth-health-BtHeU2M-.js";
77
- import { n as findRoutedCommand, t as ensureConfigReady } from "./config-guard-DMpvkYlJ.js";
77
+ import { n as findRoutedCommand, t as ensureConfigReady } from "./config-guard-D-C6wp6Q.js";
78
78
  import "./help-format-tZizD4BR.js";
79
79
  import "./configure-D50d4QdJ.js";
80
80
  import "./systemd-linger-CEreLGmo.js";
81
- import "./doctor-87Qcbj2g.js";
81
+ import "./doctor-D3FZptHG.js";
82
82
  import path from "node:path";
83
83
  import process$1 from "node:process";
84
84
  import fs from "node:fs";
@@ -140,7 +140,7 @@ async function runCli(argv = process$1.argv) {
140
140
  assertSupportedRuntime();
141
141
  if (await tryRouteCli(normalizedArgv)) return;
142
142
  enableConsoleCapture();
143
- const { buildProgram } = await import("./program-Dy1FCLt3.js");
143
+ const { buildProgram } = await import("./program-DgFnkvu_.js");
144
144
  const program = buildProgram();
145
145
  installUnhandledRejectionHandler();
146
146
  process$1.on("uncaughtException", (error) => {
@@ -150,7 +150,7 @@ async function runCli(argv = process$1.argv) {
150
150
  const parseArgv = rewriteUpdateFlagArgv(normalizedArgv);
151
151
  const primary = getPrimaryCommand(parseArgv);
152
152
  if (primary) {
153
- const { registerSubCliByName } = await import("./register.subclis-C8QER0jA.js").then((n) => n.i);
153
+ const { registerSubCliByName } = await import("./register.subclis-C00vuiWz.js").then((n) => n.i);
154
154
  await registerSubCliByName(program, primary);
155
155
  }
156
156
  if (!(!primary && hasHelpOrVersion(parseArgv))) {
@@ -20,7 +20,7 @@ import { o as resolveStorePath } from "./paths-DPLOvGLU.js";
20
20
  import { I as resolveMainSessionKey, d as loadSessionStore } from "./sandbox-DyDrMxBF.js";
21
21
  import { t as buildChannelSummary } from "./channel-summary-BfmMtKO5.js";
22
22
  import { t as collectChannelStatusIssues } from "./channels-status-issues-Cx4DwKM8.js";
23
- import { r as installCompletion } from "./completion-cli-BAaldOJS.js";
23
+ import { r as installCompletion } from "./completion-cli-BT_5u1b7.js";
24
24
  import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-HqcnmSTj.js";
25
25
  import { o as resolveGatewayLogPaths, t as resolveGatewayService } from "./service-DV05Mtg_.js";
26
26
  import { r as isSystemdUserServiceAvailable } from "./systemd-DQvm8tRB.js";
@@ -29,7 +29,7 @@ import { t as renderTable } from "./table-Kzsd53ks.js";
29
29
  import { i as probeGateway, t as runSecurityAudit } from "./audit-D0OQ_h8g.js";
30
30
  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-Bmw1Vd5a.js";
31
31
  import { l as healthCommand, n as ensureControlUiAssetsBuilt, s as formatHealthChannelLines, t as formatHealthCheckFailure, u as resolveHeartbeatSummaryForAgent } from "./health-format-BL3M1y4s.js";
32
- import { C as resolveEffectiveUpdateChannel, S as normalizeUpdateChannel, c as formatUpdateOneLiner, d as checkShellCompletionStatus, h as compareSemverStrings, l as getUpdateCheckResult, m as checkUpdateStatus, p as ensureCompletionCacheExists, s as formatUpdateAvailableHint, u as resolveUpdateAvailability, x as formatUpdateChannelLabel } from "./update-runner-DEqeXBos.js";
32
+ import { C as resolveEffectiveUpdateChannel, S as normalizeUpdateChannel, c as formatUpdateOneLiner, d as checkShellCompletionStatus, h as compareSemverStrings, l as getUpdateCheckResult, m as checkUpdateStatus, p as ensureCompletionCacheExists, s as formatUpdateAvailableHint, u as resolveUpdateAvailability, x as formatUpdateChannelLabel } from "./update-runner-D2rkfIG-.js";
33
33
  import { n as logConfigUpdated } from "./logging-D15QDE2U.js";
34
34
  import { t as buildWorkspaceHookStatus } from "./hooks-status-CRG1w6AU.js";
35
35
  import { t as buildWorkspaceSkillStatus } from "./skills-status-C4wmQlJW.js";
@@ -54,7 +54,7 @@ import "./archive-Dy3Ezb-5.js";
54
54
  import "./skill-scanner-BoGjHXUZ.js";
55
55
  import "./installs-ChtZhX65.js";
56
56
  import "./health-format-DUFBNWnB.js";
57
- 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-COS9fEWI.js";
57
+ 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--JLGNdGD.js";
58
58
  import "./auth-DSrYkGU-.js";
59
59
  import { t as renderTable } from "./table-BOthYYmp.js";
60
60
  import "./skills-status-BVaiHzFh.js";
@@ -62,11 +62,11 @@ import "./service-BKQOHHW6.js";
62
62
  import "./systemd-DyrxDxSB.js";
63
63
  import "./service-audit-Cyagv33t.js";
64
64
  import "./channels-status-issues-CbB072Pz.js";
65
- import { r as installCompletion } from "./completion-cli-n6ns6CLt.js";
65
+ import { r as installCompletion } from "./completion-cli-52VvoM_K.js";
66
66
  import { t as formatHelpExamples } from "./help-format-q-N7n7vs.js";
67
67
  import "./systemd-linger-C5NE1TWa.js";
68
68
  import "./auth-health-DLdo_EBm.js";
69
- import { t as doctorCommand } from "./doctor-B0PeqVtB.js";
69
+ import { t as doctorCommand } from "./doctor-D7gplt7y.js";
70
70
  import "./shared-CX7eJEGL.js";
71
71
  import { r as runDaemonRestart } from "./daemon-cli-DC0OyoyG.js";
72
72
  import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from "./update-BM7DEuEF.js";
@@ -49,8 +49,8 @@ import "./pairing-store-D5pH_THY.js";
49
49
  import "./login-qr-BHTIpk7i.js";
50
50
  import "./pairing-labels-DxpfDscO.js";
51
51
  import "./channels-status-issues-Cx4DwKM8.js";
52
- import "./register.subclis-C8QER0jA.js";
53
- import { r as installCompletion } from "./completion-cli-BAaldOJS.js";
52
+ import "./register.subclis-C00vuiWz.js";
53
+ import { r as installCompletion } from "./completion-cli-BT_5u1b7.js";
54
54
  import "./deps-DZVkCyfF.js";
55
55
  import { g as parseSemver } from "./daemon-runtime-HqcnmSTj.js";
56
56
  import "./service-DV05Mtg_.js";
@@ -60,14 +60,14 @@ import { r as runDaemonRestart } from "./daemon-cli-CMZsQu2M.js";
60
60
  import "./service-audit-CQ1bUSCH.js";
61
61
  import { t as renderTable } from "./table-Kzsd53ks.js";
62
62
  import "./health-format-BL3M1y4s.js";
63
- import { C as resolveEffectiveUpdateChannel, S as normalizeUpdateChannel, _ as resolveNpmChannelTag, a as globalInstallArgs, b as channelToNpmTag, c as formatUpdateOneLiner, d as checkShellCompletionStatus, g as fetchNpmTagVersion, h as compareSemverStrings, i as detectGlobalInstallManagerForRoot, m as checkUpdateStatus, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, p as ensureCompletionCacheExists, r as detectGlobalInstallManagerByPresence, s as formatUpdateAvailableHint, t as runGatewayUpdate, u as resolveUpdateAvailability, v as DEFAULT_GIT_CHANNEL, x as formatUpdateChannelLabel, y as DEFAULT_PACKAGE_CHANNEL } from "./update-runner-DEqeXBos.js";
63
+ import { C as resolveEffectiveUpdateChannel, S as normalizeUpdateChannel, _ as resolveNpmChannelTag, a as globalInstallArgs, b as channelToNpmTag, c as formatUpdateOneLiner, d as checkShellCompletionStatus, g as fetchNpmTagVersion, h as compareSemverStrings, i as detectGlobalInstallManagerForRoot, m as checkUpdateStatus, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, p as ensureCompletionCacheExists, r as detectGlobalInstallManagerByPresence, s as formatUpdateAvailableHint, t as runGatewayUpdate, u as resolveUpdateAvailability, v as DEFAULT_GIT_CHANNEL, x as formatUpdateChannelLabel, y as DEFAULT_PACKAGE_CHANNEL } from "./update-runner-D2rkfIG-.js";
64
64
  import "./logging-D15QDE2U.js";
65
65
  import "./skills-status-C4wmQlJW.js";
66
66
  import "./auth-health-BtHeU2M-.js";
67
67
  import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from "./update-NeXgYicE.js";
68
68
  import { t as formatHelpExamples } from "./help-format-tZizD4BR.js";
69
69
  import "./systemd-linger-CEreLGmo.js";
70
- import { t as doctorCommand } from "./doctor-87Qcbj2g.js";
70
+ import { t as doctorCommand } from "./doctor-D3FZptHG.js";
71
71
  import { spawnSync } from "node:child_process";
72
72
  import path from "node:path";
73
73
  import os from "node:os";
@@ -6,7 +6,7 @@ import { j as VERSION } from "./config-CJhjWqlt.js";
6
6
  import { _ as parseSemver } from "./daemon-runtime-B7p4kL16.js";
7
7
  import { t as note } from "./note-CrCSjpk3.js";
8
8
  import { i as resolveControlUiDistIndexPathForRoot, r as resolveControlUiDistIndexHealth } from "./health-format-DUFBNWnB.js";
9
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-n6ns6CLt.js";
9
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-52VvoM_K.js";
10
10
  import os from "node:os";
11
11
  import path from "node:path";
12
12
  import fs from "node:fs/promises";
@@ -4,7 +4,7 @@ import { t as resolveSKYKOIPackageRoot } from "./SKYKOI-root-B5HYTPZX.js";
4
4
  import { j as VERSION } from "./config-CtkB7u5D.js";
5
5
  import { Ln as trimLogTail } from "./loader-BY97YNZi.js";
6
6
  import { t as note } from "./note-YmyPRD-3.js";
7
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-BAaldOJS.js";
7
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-BT_5u1b7.js";
8
8
  import { g as parseSemver } from "./daemon-runtime-HqcnmSTj.js";
9
9
  import { i as resolveControlUiDistIndexPathForRoot, r as resolveControlUiDistIndexHealth } from "./health-format-BL3M1y4s.js";
10
10
  import { spawnSync } from "node:child_process";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skykoi",
3
- "version": "2026.3.30",
3
+ "version": "2026.3.31",
4
4
  "description": "SkyKoi — AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.",
5
5
  "keywords": [
6
6
  "skykoi",