skykoi 2026.3.405 → 2026.3.406

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.
Files changed (56) hide show
  1. package/dist/build-info.json +3 -3
  2. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  3. package/dist/{completion-cli-BsGr8aGm.js → completion-cli-B119yy8a.js} +1 -1
  4. package/dist/{config-guard-C53xJqkX.js → config-guard-ChhqrBzA.js} +4 -4
  5. package/dist/{doctor-BgN9XEBn.js → doctor-A8OhCGjw.js} +1 -1
  6. package/dist/{doctor-completion-KPbcZuPj.js → doctor-completion-BHBYf7hB.js} +1 -1
  7. package/dist/entry.js +1 -1
  8. package/dist/{gateway-cli-CyhM5xDI.js → gateway-cli-Dwhl867j.js} +31 -11
  9. package/dist/index.js +7 -7
  10. package/dist/{onboarding-Bpx4dZL2.js → onboarding-BL3XmLoB.js} +2 -2
  11. package/dist/plugin-sdk/index.js +12 -12
  12. package/dist/plugin-sdk/{pi-model-discovery-ClImJtLC.js → pi-model-discovery-lynj0LAO.js} +3 -3
  13. package/dist/{program-C9_uUyMc.js → program-Cn7HAxyO.js} +2 -2
  14. package/dist/{register.subclis-C3LmMTFy.js → register.subclis-Cu6MOY9-.js} +4 -4
  15. package/dist/{run-main-CElhLhnt.js → run-main-NIbcOD9w.js} +8 -8
  16. package/dist/{tui-cli-Cwyd8Mvj.js → tui-cli-C5L3cvxW.js} +1 -1
  17. package/dist/{tui-shell-Cnkwf3Qi.js → tui-shell-C-mLSZME.js} +1 -1
  18. package/dist/{update-cli-XSwJqNGS.js → update-cli-D4BE68Di.js} +4 -4
  19. package/extensions/bluebubbles/package.json +1 -1
  20. package/extensions/copilot-proxy/package.json +1 -1
  21. package/extensions/diagnostics-otel/package.json +1 -1
  22. package/extensions/discord/package.json +1 -1
  23. package/extensions/feishu/package.json +1 -1
  24. package/extensions/google-antigravity-auth/package.json +1 -1
  25. package/extensions/google-gemini-cli-auth/package.json +1 -1
  26. package/extensions/googlechat/package.json +1 -1
  27. package/extensions/imessage/package.json +1 -1
  28. package/extensions/line/package.json +1 -1
  29. package/extensions/llm-task/package.json +1 -1
  30. package/extensions/lobster/package.json +1 -1
  31. package/extensions/matrix/CHANGELOG.md +5 -0
  32. package/extensions/matrix/package.json +1 -1
  33. package/extensions/mattermost/package.json +1 -1
  34. package/extensions/memory-core/package.json +1 -1
  35. package/extensions/memory-lancedb/package.json +1 -1
  36. package/extensions/minimax-portal-auth/package.json +1 -1
  37. package/extensions/msteams/CHANGELOG.md +5 -0
  38. package/extensions/msteams/package.json +1 -1
  39. package/extensions/nextcloud-talk/package.json +1 -1
  40. package/extensions/nostr/CHANGELOG.md +5 -0
  41. package/extensions/nostr/package.json +1 -1
  42. package/extensions/open-prose/package.json +1 -1
  43. package/extensions/signal/package.json +1 -1
  44. package/extensions/slack/package.json +1 -1
  45. package/extensions/telegram/package.json +1 -1
  46. package/extensions/tlon/package.json +1 -1
  47. package/extensions/twitch/CHANGELOG.md +5 -0
  48. package/extensions/twitch/package.json +1 -1
  49. package/extensions/voice-call/CHANGELOG.md +5 -0
  50. package/extensions/voice-call/package.json +1 -1
  51. package/extensions/whatsapp/package.json +1 -1
  52. package/extensions/zalo/CHANGELOG.md +5 -0
  53. package/extensions/zalo/package.json +1 -1
  54. package/extensions/zalouser/CHANGELOG.md +5 -0
  55. package/extensions/zalouser/package.json +1 -1
  56. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2026.3.405",
3
- "commit": "79c6c10e05bb99b0e5076e89be061bd28da9caf4",
4
- "builtAt": "2026-07-07T16:21:24.867Z"
2
+ "version": "2026.3.406",
3
+ "commit": "1e82738efa953d5361925e764c08a630c5eb4d95",
4
+ "builtAt": "2026-07-07T17:04:10.866Z"
5
5
  }
@@ -1 +1 @@
1
- ebefacca6da91d92ea5887e6f506eb6e7a68b3c581c845c2490d5607320bb264
1
+ 3b88d9fc155572710876f709f674de21682c760abc3a8bf4cbc79e46da2d273f
@@ -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-C3LmMTFy.js";
3
+ import { n as registerSubCliByName, t as getSubCliEntries } from "./register.subclis-Cu6MOY9-.js";
4
4
  import path from "node:path";
5
5
  import os from "node:os";
6
6
  import fs from "node:fs/promises";
@@ -29,7 +29,7 @@ import { t as resolveChannelDefaultAccountId } from "./helpers-4BXRutqw.js";
29
29
  import { n as logConfigUpdated, t as formatConfigPath } from "./logging-C3sRv-iX.js";
30
30
  import { t as WizardCancelledError } from "./prompts-BC5TXS0_.js";
31
31
  import { t as createClackPrompter } from "./clack-prompter-clPzQ9p-.js";
32
- 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-Bpx4dZL2.js";
32
+ 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-BL3XmLoB.js";
33
33
  import { d as applyAuthChoice, f as applyOpenAIConfig, h as promptAuthChoiceGrouped, m as applyGoogleGeminiModelDefault, p as upsertSharedEnvVar, u as warnIfModelConfigLooksOff } from "./onboard-skills-D1-xQ5oZ.js";
34
34
  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-Qm1psuh_.js";
35
35
  import { n as setupChannels } from "./onboard-channels-Cp3mqLlq.js";
@@ -37,7 +37,7 @@ import { i as healthCommand } from "./health-format-BhgAKyrJ.js";
37
37
  import { t as renderTable } from "./table-DIfWcies.js";
38
38
  import { t as resolveGatewayService } from "./service-D1-PnhZe.js";
39
39
  import { r as isSystemdUserServiceAvailable } from "./systemd-DZP4s4qd.js";
40
- import { l as getVerboseFlag, o as getFlagValue, r as registerSubCliCommands, s as getPositiveIntFlagValue, u as hasFlag } from "./register.subclis-C3LmMTFy.js";
40
+ import { l as getVerboseFlag, o as getFlagValue, r as registerSubCliCommands, s as getPositiveIntFlagValue, u as hasFlag } from "./register.subclis-Cu6MOY9-.js";
41
41
  import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-DwTpsQgX.js";
42
42
  import { t as formatHelpExamples } from "./help-format-Bz-E4Xsi.js";
43
43
  import { t as adminUnlockCommand } from "./admin-unlock-CjZRxHxf.js";
@@ -48,7 +48,7 @@ import { i as CONFIGURE_WIZARD_SECTIONS, n as configureCommand, r as configureCo
48
48
  import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-DIgqhoVa.js";
49
49
  import { n as ensureSystemdUserLingerNonInteractive } from "./systemd-linger-DHSd9ikR.js";
50
50
  import { t as loginCommand } from "./login-JCFx5Pzl.js";
51
- import { n as loadAndMaybeMigrateDoctorConfig, t as doctorCommand } from "./doctor-BgN9XEBn.js";
51
+ import { n as loadAndMaybeMigrateDoctorConfig, t as doctorCommand } from "./doctor-A8OhCGjw.js";
52
52
  import { fileURLToPath } from "node:url";
53
53
  import fs from "node:fs";
54
54
  import path from "node:path";
@@ -3107,7 +3107,7 @@ function registerLoginCommand(program) {
3107
3107
  console.log(theme.muted(` user=${result.userId} org=${result.orgId}`));
3108
3108
  }
3109
3109
  if (opts.chat !== false && result.gatewayUrl && process.stdin.isTTY && process.stdout.isTTY) {
3110
- const { runShell } = await import("./tui-shell-Cnkwf3Qi.js").then((n) => n.n);
3110
+ const { runShell } = await import("./tui-shell-C-mLSZME.js").then((n) => n.n);
3111
3111
  console.log(theme.muted("\n Opening your koi chat…\n"));
3112
3112
  await runShell({
3113
3113
  url: result.gatewayUrl,
@@ -35,7 +35,7 @@ import { a as repairLaunchAgentBootstrap, i as launchAgentPlistExists, n as isLa
35
35
  import { r as isSystemdUserServiceAvailable } from "./systemd-DZP4s4qd.js";
36
36
  import { t as readLastGatewayErrorLine } from "./diagnostics-6vXdnH8k.js";
37
37
  import { t as collectChannelStatusIssues } from "./channels-status-issues-CGTJwSbx.js";
38
- import { n as doctorShellCompletion } from "./doctor-completion-KPbcZuPj.js";
38
+ import { n as doctorShellCompletion } from "./doctor-completion-BHBYf7hB.js";
39
39
  import { n as resolveControlUiDistIndexHealth, r as resolveControlUiDistIndexPathForRoot } from "./control-ui-assets-D4o4damy.js";
40
40
  import { a as gatewayInstallErrorHint, d as renderSystemNodeWarning, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, p as resolveSystemNodeInfo, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-DIgqhoVa.js";
41
41
  import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-DHSd9ikR.js";
@@ -3,7 +3,7 @@ import { r as resolveCliName, t as formatCliCommand } from "./command-format-DOY
3
3
  import { t as VERSION } from "./version-B_FpLmDY.js";
4
4
  import { t as note } from "./note-PNq_JEQe.js";
5
5
  import { c as compareSemverStrings, s as checkUpdateStatus } from "./update-runner-DHNkj8-z.js";
6
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-BsGr8aGm.js";
6
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-B119yy8a.js";
7
7
  import path from "node:path";
8
8
  import { spawnSync } from "node:child_process";
9
9
 
package/dist/entry.js CHANGED
@@ -247,7 +247,7 @@ if (!ensureExperimentalWarningSuppressed()) {
247
247
  applyCliProfileEnv({ profile: parsed.profile });
248
248
  process$1.argv = parsed.argv;
249
249
  }
250
- import("./run-main-CElhLhnt.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
250
+ import("./run-main-NIbcOD9w.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
251
251
  console.error("[SKYKOI] Failed to start CLI:", error instanceof Error ? error.stack ?? error.message : error);
252
252
  process$1.exitCode = 1;
253
253
  });
@@ -105,7 +105,7 @@ import { t as resolveChannelDefaultAccountId } from "./helpers-4BXRutqw.js";
105
105
  import "./logging-C3sRv-iX.js";
106
106
  import "./note-PNq_JEQe.js";
107
107
  import { t as WizardCancelledError } from "./prompts-BC5TXS0_.js";
108
- 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-Bpx4dZL2.js";
108
+ 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-BL3XmLoB.js";
109
109
  import { n as installSkill } from "./onboard-skills-D1-xQ5oZ.js";
110
110
  import "./github-copilot-auth-Qm1psuh_.js";
111
111
  import "./onboard-channels-Cp3mqLlq.js";
@@ -124,15 +124,15 @@ import { p as resolveGatewayStateDir } from "./systemd-DZP4s4qd.js";
124
124
  import "./diagnostics-6vXdnH8k.js";
125
125
  import "./node-service-Bb6tgGQx.js";
126
126
  import "./channels-status-issues-CGTJwSbx.js";
127
- import "./doctor-completion-KPbcZuPj.js";
128
- import "./register.subclis-C3LmMTFy.js";
127
+ import "./doctor-completion-BHBYf7hB.js";
128
+ import "./register.subclis-Cu6MOY9-.js";
129
129
  import { a as createOutboundSendDeps$1, i as resolveKoiOutboundTarget, r as resolveKoiDeliveryPlan, t as koiCommand } from "./koi-DQ_ksiaq.js";
130
130
  import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-D4o4damy.js";
131
131
  import "./daemon-runtime-DIgqhoVa.js";
132
132
  import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-BjWuJvtM.js";
133
133
  import { n as discoverGatewayBeacons } from "./bonjour-discovery-3LKAHtHL.js";
134
134
  import "./ensure-local-gateway-Xk7ir7zS.js";
135
- import "./completion-cli-BsGr8aGm.js";
135
+ import "./completion-cli-B119yy8a.js";
136
136
  import "./service-audit-BVZGmzLW.js";
137
137
  import { i as shouldIncludeHook, n as loadWorkspaceHookEntries, r as resolveHookConfig } from "./hooks-status-Cr0qf9U9.js";
138
138
  import "./tui-B_qSaNu2.js";
@@ -2170,7 +2170,7 @@ function compactToolResultPreview(result) {
2170
2170
  }
2171
2171
  return preview;
2172
2172
  }
2173
- function createKoiEventHandler({ broadcast, broadcastToConnIds, nodeSendToSession, koiRunSeq, chatRunState, resolveSessionKeyForRun, clearKoiRunContext, toolEventRecipients }) {
2173
+ function createKoiEventHandler({ broadcast, broadcastToConnIds, connIdsWithCap, nodeSendToSession, koiRunSeq, chatRunState, resolveSessionKeyForRun, clearKoiRunContext, toolEventRecipients }) {
2174
2174
  const emitChatDelta = (sessionKey, clientRunId, seq, text) => {
2175
2175
  chatRunState.buffers.set(clientRunId, text);
2176
2176
  const now = Date.now();
@@ -2298,8 +2298,18 @@ function createKoiEventHandler({ broadcast, broadcastToConnIds, nodeSendToSessio
2298
2298
  "file_path",
2299
2299
  "command",
2300
2300
  "url",
2301
- "query"
2301
+ "query",
2302
+ "text"
2302
2303
  ]) if (typeof rawArgs[key] === "string" && rawArgs[key]) kept[key] = String(rawArgs[key]).slice(0, 500);
2304
+ for (const key of [
2305
+ "patch",
2306
+ "js",
2307
+ "content",
2308
+ "oldText",
2309
+ "newText",
2310
+ "old_string",
2311
+ "new_string"
2312
+ ]) if (typeof rawArgs[key] === "string" && rawArgs[key]) kept[key] = String(rawArgs[key]).slice(0, 2e3);
2303
2313
  if (Object.keys(kept).length > 0) data.args = kept;
2304
2314
  }
2305
2315
  const preview = compactToolResultPreview(data.result ?? data.partialResult);
@@ -2342,8 +2352,9 @@ function createKoiEventHandler({ broadcast, broadcastToConnIds, nodeSendToSessio
2342
2352
  });
2343
2353
  koiRunSeq.set(evt.runId, evt.seq);
2344
2354
  if (isToolEvent) {
2345
- const recipients = toolEventRecipients.get(evt.runId);
2346
- if (recipients && recipients.size > 0) broadcastToConnIds("koi", toolPayload, recipients);
2355
+ const recipients = connIdsWithCap(GATEWAY_CLIENT_CAPS.TOOL_EVENTS);
2356
+ for (const id of toolEventRecipients.get(evt.runId) ?? []) recipients.add(id);
2357
+ if (recipients.size > 0) broadcastToConnIds("koi", toolPayload, recipients);
2347
2358
  } else broadcast("koi", koiPayload);
2348
2359
  const lifecyclePhase = evt.stream === "lifecycle" && typeof evt.data?.phase === "string" ? evt.data.phase : null;
2349
2360
  if (lifecyclePhase === "passed") chatRunState.passedRuns.add(clientRunId);
@@ -16361,9 +16372,16 @@ function createGatewayBroadcaster(params) {
16361
16372
  if (connIds.size === 0) return;
16362
16373
  broadcastInternal(event, payload, opts, connIds);
16363
16374
  };
16375
+ /** Connections that declared a capability at connect (e.g. tool-events). */
16376
+ const connIdsWithCap = (cap) => {
16377
+ const ids = /* @__PURE__ */ new Set();
16378
+ for (const c of params.clients) if ((Array.isArray(c.connect?.caps) ? c.connect.caps : []).includes(cap)) ids.add(c.connId);
16379
+ return ids;
16380
+ };
16364
16381
  return {
16365
16382
  broadcast,
16366
- broadcastToConnIds
16383
+ broadcastToConnIds,
16384
+ connIdsWithCap
16367
16385
  };
16368
16386
  }
16369
16387
 
@@ -19314,7 +19332,7 @@ async function createGatewayRuntimeState(params) {
19314
19332
  params.logCanvas.warn(`canvas host failed to start: ${String(err)}`);
19315
19333
  }
19316
19334
  const clients = /* @__PURE__ */ new Set();
19317
- const { broadcast, broadcastToConnIds } = createGatewayBroadcaster({ clients });
19335
+ const { broadcast, broadcastToConnIds, connIdsWithCap } = createGatewayBroadcaster({ clients });
19318
19336
  const handleHooksRequest = createGatewayHooksRequestHandler({
19319
19337
  deps: params.deps,
19320
19338
  getHooksConfig: params.hooksConfig,
@@ -19391,6 +19409,7 @@ async function createGatewayRuntimeState(params) {
19391
19409
  clients,
19392
19410
  broadcast,
19393
19411
  broadcastToConnIds,
19412
+ connIdsWithCap,
19394
19413
  koiRunSeq,
19395
19414
  dedupe,
19396
19415
  chatRunState,
@@ -21274,7 +21293,7 @@ async function startGatewayServer(port = 18789, opts = {}) {
21274
21293
  let canvasHostServer = null;
21275
21294
  const gatewayTls = await loadGatewayTlsRuntime(cfgAtStart.gateway?.tls, log.child("tls"));
21276
21295
  if (cfgAtStart.gateway?.tls?.enabled && !gatewayTls.enabled) throw new Error(gatewayTls.error ?? "gateway tls: failed to enable");
21277
- const { canvasHost, httpServer, httpServers, httpBindHosts, wss, clients, broadcast, broadcastToConnIds, koiRunSeq, dedupe, chatRunState, chatRunBuffers, chatDeltaSentAt, addChatRun, removeChatRun, chatAbortControllers, toolEventRecipients } = await createGatewayRuntimeState({
21296
+ const { canvasHost, httpServer, httpServers, httpBindHosts, wss, clients, broadcast, broadcastToConnIds, connIdsWithCap, koiRunSeq, dedupe, chatRunState, chatRunBuffers, chatDeltaSentAt, addChatRun, removeChatRun, chatAbortControllers, toolEventRecipients } = await createGatewayRuntimeState({
21278
21297
  cfg: cfgAtStart,
21279
21298
  bindHost,
21280
21299
  port,
@@ -21371,6 +21390,7 @@ async function startGatewayServer(port = 18789, opts = {}) {
21371
21390
  const koiUnsub = onKoiEvent(createKoiEventHandler({
21372
21391
  broadcast,
21373
21392
  broadcastToConnIds,
21393
+ connIdsWithCap,
21374
21394
  nodeSendToSession,
21375
21395
  koiRunSeq,
21376
21396
  chatRunState,
package/dist/index.js CHANGED
@@ -91,11 +91,11 @@ import { t as isMainModule } from "./is-main-CQX7mFIJ.js";
91
91
  import { t as ensureSKYKOICliOnPath } from "./path-env-CnhsG0TT.js";
92
92
  import { t as assertSupportedRuntime } from "./runtime-guard-qFkyrhAB.js";
93
93
  import "./ports-B03Y1yyv.js";
94
- import "./config-guard-C53xJqkX.js";
94
+ import "./config-guard-ChhqrBzA.js";
95
95
  import "./logging-C3sRv-iX.js";
96
96
  import "./note-PNq_JEQe.js";
97
97
  import "./clack-prompter-clPzQ9p-.js";
98
- import "./onboarding-Bpx4dZL2.js";
98
+ import "./onboarding-BL3XmLoB.js";
99
99
  import "./onboard-skills-D1-xQ5oZ.js";
100
100
  import "./github-copilot-auth-Qm1psuh_.js";
101
101
  import "./onboard-channels-Cp3mqLlq.js";
@@ -114,8 +114,8 @@ import "./systemd-DZP4s4qd.js";
114
114
  import "./diagnostics-6vXdnH8k.js";
115
115
  import "./node-service-Bb6tgGQx.js";
116
116
  import "./channels-status-issues-CGTJwSbx.js";
117
- import "./doctor-completion-KPbcZuPj.js";
118
- import "./register.subclis-C3LmMTFy.js";
117
+ import "./doctor-completion-BHBYf7hB.js";
118
+ import "./register.subclis-Cu6MOY9-.js";
119
119
  import "./gateway-rpc-DwTpsQgX.js";
120
120
  import "./help-format-Bz-E4Xsi.js";
121
121
  import "./admin-unlock-CjZRxHxf.js";
@@ -131,14 +131,14 @@ import "./ensure-local-gateway-Xk7ir7zS.js";
131
131
  import "./channel-auth-DCGvsTTl.js";
132
132
  import "./login-JCFx5Pzl.js";
133
133
  import "./auth-health-FPMBFAsj.js";
134
- import "./doctor-BgN9XEBn.js";
135
- import "./completion-cli-BsGr8aGm.js";
134
+ import "./doctor-A8OhCGjw.js";
135
+ import "./completion-cli-B119yy8a.js";
136
136
  import "./service-audit-BVZGmzLW.js";
137
137
  import "./hooks-status-Cr0qf9U9.js";
138
138
  import "./tui-B_qSaNu2.js";
139
139
  import "./canvas-state-C3YRnkNr.js";
140
140
  import "./channel-options-czSeefCv.js";
141
- import { n as buildProgram } from "./program-C9_uUyMc.js";
141
+ import { n as buildProgram } from "./program-Cn7HAxyO.js";
142
142
  import process from "node:process";
143
143
  import { fileURLToPath } from "node:url";
144
144
 
@@ -38,10 +38,10 @@ import { t as readLastGatewayErrorLine } from "./diagnostics-6vXdnH8k.js";
38
38
  import { t as resolveNodeService } from "./node-service-Bb6tgGQx.js";
39
39
  import { t as collectChannelStatusIssues } from "./channels-status-issues-CGTJwSbx.js";
40
40
  import { i as redactSecrets, n as formatDuration$1, r as formatGatewayAuthUsed, t as formatAge$1 } from "./format-DtciOWIX.js";
41
- import { a as formatUpdateOneLiner, i as formatUpdateAvailableHint, o as getUpdateCheckResult, r as ensureCompletionCacheExists, s as resolveUpdateAvailability, t as checkShellCompletionStatus } from "./doctor-completion-KPbcZuPj.js";
41
+ import { a as formatUpdateOneLiner, i as formatUpdateAvailableHint, o as getUpdateCheckResult, r as ensureCompletionCacheExists, s as resolveUpdateAvailability, t as checkShellCompletionStatus } from "./doctor-completion-BHBYf7hB.js";
42
42
  import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-D4o4damy.js";
43
43
  import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-DIgqhoVa.js";
44
- import { r as installCompletion } from "./completion-cli-BsGr8aGm.js";
44
+ import { r as installCompletion } from "./completion-cli-B119yy8a.js";
45
45
  import { t as buildWorkspaceHookStatus } from "./hooks-status-Cr0qf9U9.js";
46
46
  import { t as runTui } from "./tui-B_qSaNu2.js";
47
47
  import fs from "node:fs";
@@ -1,5 +1,5 @@
1
1
  import { a as __toCommonJS, i as __require, o as __toESM, r as __exportAll, t as __commonJSMin } from "./chunk-D_gEzPfs.js";
2
- import { a as require_jws, i as require_dist_cjs$1, n as LRUCache$1, o as require_safe_buffer, r as getOAuthProviders, s as getEnvApiKey } from "./pi-model-discovery-ClImJtLC.js";
2
+ import { a as require_jws, i as require_dist_cjs$1, n as LRUCache$1, o as require_safe_buffer, r as getOAuthProviders, s as getEnvApiKey } from "./pi-model-discovery-lynj0LAO.js";
3
3
  import { t as require_dist_cjs$2 } from "./dist-cjs-B9iGzXDA.js";
4
4
  import { C as require_dist_cjs$3, E as init_dist_es$1, M as require_dist_cjs$13, N as require_dist_cjs$12, T as dist_es_exports$1, a as require_dist_cjs$5, c as require_dist_cjs$17, d as require_dist_cjs$15, f as dist_es_exports, h as protocols_exports, i as require_dist_cjs$7, j as require_dist_cjs$14, l as require_dist_cjs$16, m as init_protocols, n as require_dist_cjs$10, o as require_dist_cjs$8, p as init_dist_es, r as require_dist_cjs$9, s as require_dist_cjs$11, t as require_dist_cjs$18, u as require_dist_cjs$6, w as require_dist_cjs$4 } from "./dist-cjs-Cpdu8jQP.js";
5
5
  import { C as schema_exports, N as require_dist_cjs$21, P as require_dist_cjs$19, S as init_schema, t as require_dist_cjs$20 } from "./dist-cjs-BVSr8ctW.js";
@@ -21,7 +21,7 @@ import chalk, { Chalk } from "chalk";
21
21
  import fs, { constants, createWriteStream, existsSync, promises, statSync } from "node:fs";
22
22
  import path, { join } from "node:path";
23
23
  import { Logger } from "tslog";
24
- import JSON5 from "json5";
24
+ import json5 from "json5";
25
25
  import os, { homedir, tmpdir } from "node:os";
26
26
  import { promisify } from "node:util";
27
27
  import fs$1 from "node:fs/promises";
@@ -42,7 +42,7 @@ import { mkdir, readFile, stat as stat$1, unlink, writeFile } from "fs/promises"
42
42
  import { Readable as Readable$1 } from "node:stream";
43
43
  import { pipeline as pipeline$1 } from "node:stream/promises";
44
44
  import WebSocket, { WebSocket as WebSocket$1 } from "ws";
45
- import AjvPkg from "ajv";
45
+ import AjvModule from "ajv";
46
46
  import lockfile from "proper-lockfile";
47
47
  import { URL as URL$1 } from "url";
48
48
  import "yaml";
@@ -2264,7 +2264,7 @@ function readLoggingConfig() {
2264
2264
  try {
2265
2265
  if (!fs.existsSync(configPath)) return;
2266
2266
  const raw = fs.readFileSync(configPath, "utf-8");
2267
- const logging = JSON5.parse(raw)?.logging;
2267
+ const logging = json5.parse(raw)?.logging;
2268
2268
  if (!logging || typeof logging !== "object" || Array.isArray(logging)) return;
2269
2269
  return logging;
2270
2270
  } catch {
@@ -19099,7 +19099,7 @@ var IncludeProcessor = class IncludeProcessor {
19099
19099
  };
19100
19100
  const defaultResolver = {
19101
19101
  readFile: (p) => fs.readFileSync(p, "utf-8"),
19102
- parseJson: (raw) => JSON5.parse(raw)
19102
+ parseJson: (raw) => json5.parse(raw)
19103
19103
  };
19104
19104
  /**
19105
19105
  * Resolves all $include directives in a parsed config object.
@@ -20609,7 +20609,7 @@ function loadPluginManifestRegistry(params) {
20609
20609
 
20610
20610
  //#endregion
20611
20611
  //#region src/plugins/schema-validator.ts
20612
- const ajv$1 = new AjvPkg({
20612
+ const ajv$1 = new AjvModule({
20613
20613
  allErrors: true,
20614
20614
  strict: false,
20615
20615
  removeAdditional: false
@@ -21797,18 +21797,18 @@ function resolveConfigPathForDeps(deps) {
21797
21797
  function normalizeDeps(overrides = {}) {
21798
21798
  return {
21799
21799
  fs: overrides.fs ?? fs,
21800
- json5: overrides.json5 ?? JSON5,
21800
+ json5: overrides.json5 ?? json5,
21801
21801
  env: overrides.env ?? process.env,
21802
21802
  homedir: overrides.homedir ?? os.homedir,
21803
21803
  configPath: overrides.configPath ?? "",
21804
21804
  logger: overrides.logger ?? console
21805
21805
  };
21806
21806
  }
21807
- function parseConfigJson5(raw, json5 = JSON5) {
21807
+ function parseConfigJson5(raw, json5$1 = json5) {
21808
21808
  try {
21809
21809
  return {
21810
21810
  ok: true,
21811
- parsed: json5.parse(raw)
21811
+ parsed: json5$1.parse(raw)
21812
21812
  };
21813
21813
  } catch (err) {
21814
21814
  return {
@@ -22322,7 +22322,7 @@ function loadSessionStore(storePath, opts = {}) {
22322
22322
  let mtimeMs = getFileMtimeMs(storePath);
22323
22323
  try {
22324
22324
  const raw = fs.readFileSync(storePath, "utf-8");
22325
- const parsed = JSON5.parse(raw);
22325
+ const parsed = json5.parse(raw);
22326
22326
  if (isSessionStoreRecord(parsed)) store = parsed;
22327
22327
  mtimeMs = getFileMtimeMs(storePath) ?? mtimeMs;
22328
22328
  } catch {}
@@ -48256,7 +48256,7 @@ const PROTOCOL_VERSION = 3;
48256
48256
 
48257
48257
  //#endregion
48258
48258
  //#region src/gateway/protocol/index.ts
48259
- const ajv = new AjvPkg({
48259
+ const ajv = new AjvModule({
48260
48260
  allErrors: true,
48261
48261
  strict: false,
48262
48262
  removeAdditional: false
@@ -68159,7 +68159,7 @@ function enqueueSystemEvent(text, options) {
68159
68159
  const MODEL_CACHE = /* @__PURE__ */ new Map();
68160
68160
  (async () => {
68161
68161
  try {
68162
- const { discoverAuthStorage, discoverModels } = await import("./pi-model-discovery-ClImJtLC.js").then((n) => n.t);
68162
+ const { discoverAuthStorage, discoverModels } = await import("./pi-model-discovery-lynj0LAO.js").then((n) => n.t);
68163
68163
  await ensureSKYKOIModelsJson(loadConfig());
68164
68164
  const koiDir = resolveSKYKOIKoiDir();
68165
68165
  const models = discoverModels(discoverAuthStorage(koiDir), koiDir).getAll();
@@ -34,7 +34,7 @@ import { access, mkdir, readFile, stat as stat$1, writeFile } from "fs/promises"
34
34
  import Stream, { Readable as Readable$1 } from "node:stream";
35
35
  import { finished } from "node:stream/promises";
36
36
  import * as NodeWs from "ws";
37
- import AjvPkg from "ajv";
37
+ import AjvModule from "ajv";
38
38
  import lockfile from "proper-lockfile";
39
39
  import { fileURLToPath as fileURLToPath$1 } from "url";
40
40
  import { TypeCompiler } from "@sinclair/typebox/compiler";
@@ -59699,7 +59699,7 @@ var require_dist$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
59699
59699
  //#endregion
59700
59700
  //#region node_modules/.pnpm/@mariozechner+pi-ai@0.52.8_patch_hash=f41b8429247a07c256a366fc8eddb44710b4e74212f25ffaf_aba27699dbfe3dddaa7a3984ad46615e/node_modules/@mariozechner/pi-ai/dist/utils/validation.js
59701
59701
  var import_dist$1 = /* @__PURE__ */ __toESM(require_dist$1(), 1);
59702
- const Ajv$1 = AjvPkg.default || AjvPkg;
59702
+ const Ajv$1 = AjvModule.default || AjvModule;
59703
59703
  const addFormats = import_dist$1.default.default || import_dist$1.default;
59704
59704
  const isBrowserExtension = typeof globalThis !== "undefined" && globalThis.chrome?.runtime?.id !== void 0;
59705
59705
  let ajv = null;
@@ -174026,7 +174026,7 @@ var AuthStorage = class {
174026
174026
  /**
174027
174027
  * Model registry - manages built-in and custom models, provides API key resolution.
174028
174028
  */
174029
- const Ajv = AjvPkg.default || AjvPkg;
174029
+ const Ajv = AjvModule.default || AjvModule;
174030
174030
  const OpenRouterRoutingSchema = Type.Object({
174031
174031
  only: Type.Optional(Type.Array(Type.String())),
174032
174032
  order: Type.Optional(Type.Array(Type.String()))
@@ -5,8 +5,8 @@ import { n as replaceCliName, r as resolveCliName } from "./command-format-DOYW_
5
5
  import { t as isTruthyEnvValue } from "./env-C2ovlUPG.js";
6
6
  import { t as VERSION } from "./version-B_FpLmDY.js";
7
7
  import { t as formatDocsLink } from "./links-BY_N2dMU.js";
8
- import { i as registerProgramCommands, n as PLUGIN_CLI_COMMANDS, t as ensureConfigReady } from "./config-guard-C53xJqkX.js";
9
- import { a as getCommandPath, d as hasHelpOrVersion, l as getVerboseFlag } from "./register.subclis-C3LmMTFy.js";
8
+ import { i as registerProgramCommands, n as PLUGIN_CLI_COMMANDS, t as ensureConfigReady } from "./config-guard-ChhqrBzA.js";
9
+ import { a as getCommandPath, d as hasHelpOrVersion, l as getVerboseFlag } from "./register.subclis-Cu6MOY9-.js";
10
10
  import { t as ensurePluginRegistryLoaded } from "./plugin-registry-Crf69mp9.js";
11
11
  import { i as hasEmittedCliBanner, n as emitCliBanner, r as formatCliBannerLine } from "./tui-B_qSaNu2.js";
12
12
  import { n as resolveCliChannelOptions } from "./channel-options-czSeefCv.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-CyhM5xDI.js")).registerGatewayCli(program);
127
+ (await import("./gateway-cli-Dwhl867j.js")).registerGatewayCli(program);
128
128
  }
129
129
  },
130
130
  {
@@ -201,7 +201,7 @@ const entries = [
201
201
  name: "tui",
202
202
  description: "Terminal UI",
203
203
  register: async (program) => {
204
- (await import("./tui-cli-Cwyd8Mvj.js")).registerTuiCli(program);
204
+ (await import("./tui-cli-C5L3cvxW.js")).registerTuiCli(program);
205
205
  }
206
206
  },
207
207
  {
@@ -317,14 +317,14 @@ const entries = [
317
317
  name: "update",
318
318
  description: "CLI update helpers",
319
319
  register: async (program) => {
320
- (await import("./update-cli-XSwJqNGS.js")).registerUpdateCli(program);
320
+ (await import("./update-cli-D4BE68Di.js")).registerUpdateCli(program);
321
321
  }
322
322
  },
323
323
  {
324
324
  name: "completion",
325
325
  description: "Generate shell completion script",
326
326
  register: async (program) => {
327
- (await import("./completion-cli-BsGr8aGm.js").then((n) => n.n)).registerCompletionCli(program);
327
+ (await import("./completion-cli-B119yy8a.js").then((n) => n.n)).registerCompletionCli(program);
328
328
  }
329
329
  }
330
330
  ];
@@ -88,11 +88,11 @@ import "./deps-I2to_7yo.js";
88
88
  import "./tailscale-BOh3Z_vn.js";
89
89
  import { t as ensureSKYKOICliOnPath } from "./path-env-CnhsG0TT.js";
90
90
  import { t as assertSupportedRuntime } from "./runtime-guard-qFkyrhAB.js";
91
- import { n as PLUGIN_CLI_COMMANDS, r as findRoutedCommand, t as ensureConfigReady } from "./config-guard-C53xJqkX.js";
91
+ import { n as PLUGIN_CLI_COMMANDS, r as findRoutedCommand, t as ensureConfigReady } from "./config-guard-ChhqrBzA.js";
92
92
  import "./logging-C3sRv-iX.js";
93
93
  import "./note-PNq_JEQe.js";
94
94
  import "./clack-prompter-clPzQ9p-.js";
95
- import "./onboarding-Bpx4dZL2.js";
95
+ import "./onboarding-BL3XmLoB.js";
96
96
  import "./onboard-skills-D1-xQ5oZ.js";
97
97
  import "./github-copilot-auth-Qm1psuh_.js";
98
98
  import "./onboard-channels-Cp3mqLlq.js";
@@ -111,8 +111,8 @@ import "./systemd-DZP4s4qd.js";
111
111
  import "./diagnostics-6vXdnH8k.js";
112
112
  import "./node-service-Bb6tgGQx.js";
113
113
  import "./channels-status-issues-CGTJwSbx.js";
114
- import "./doctor-completion-KPbcZuPj.js";
115
- import { a as getCommandPath, c as getPrimaryCommand, d as hasHelpOrVersion } from "./register.subclis-C3LmMTFy.js";
114
+ import "./doctor-completion-BHBYf7hB.js";
115
+ import { a as getCommandPath, c as getPrimaryCommand, d as hasHelpOrVersion } from "./register.subclis-Cu6MOY9-.js";
116
116
  import "./gateway-rpc-DwTpsQgX.js";
117
117
  import "./help-format-Bz-E4Xsi.js";
118
118
  import "./admin-unlock-CjZRxHxf.js";
@@ -128,8 +128,8 @@ import "./ensure-local-gateway-Xk7ir7zS.js";
128
128
  import "./channel-auth-DCGvsTTl.js";
129
129
  import "./login-JCFx5Pzl.js";
130
130
  import "./auth-health-FPMBFAsj.js";
131
- import "./doctor-BgN9XEBn.js";
132
- import "./completion-cli-BsGr8aGm.js";
131
+ import "./doctor-A8OhCGjw.js";
132
+ import "./completion-cli-B119yy8a.js";
133
133
  import "./service-audit-BVZGmzLW.js";
134
134
  import "./hooks-status-Cr0qf9U9.js";
135
135
  import { n as emitCliBanner } from "./tui-B_qSaNu2.js";
@@ -187,7 +187,7 @@ async function runCli(argv = process$1.argv) {
187
187
  assertSupportedRuntime();
188
188
  if (await tryRouteCli(normalizedArgv)) return;
189
189
  enableConsoleCapture();
190
- const { buildProgram } = await import("./program-C9_uUyMc.js").then((n) => n.t);
190
+ const { buildProgram } = await import("./program-Cn7HAxyO.js").then((n) => n.t);
191
191
  const program = buildProgram();
192
192
  installUnhandledRejectionHandler();
193
193
  process$1.on("uncaughtException", (error) => {
@@ -224,7 +224,7 @@ async function runCli(argv = process$1.argv) {
224
224
  }
225
225
  const primary = getPrimaryCommand(parseArgv);
226
226
  if (primary) {
227
- const { registerSubCliByName } = await import("./register.subclis-C3LmMTFy.js").then((n) => n.i);
227
+ const { registerSubCliByName } = await import("./register.subclis-Cu6MOY9-.js").then((n) => n.i);
228
228
  await registerSubCliByName(program, primary);
229
229
  }
230
230
  if (!!primary && PLUGIN_CLI_COMMANDS.has(primary)) {
@@ -62,7 +62,7 @@ import "./daemon-runtime-DIgqhoVa.js";
62
62
  import "./ensure-local-gateway-Xk7ir7zS.js";
63
63
  import "./tui-B_qSaNu2.js";
64
64
  import "./canvas-state-C3YRnkNr.js";
65
- import { t as runShell } from "./tui-shell-Cnkwf3Qi.js";
65
+ import { t as runShell } from "./tui-shell-C-mLSZME.js";
66
66
 
67
67
  //#region src/cli/tui-cli.ts
68
68
  function registerTuiCli(program) {
@@ -243,7 +243,7 @@ function createWorkTracker(opts) {
243
243
  bump();
244
244
  };
245
245
  const onToolUpdate = (data) => {
246
- const text = resultText(data.partialResult).trim();
246
+ const text = resultText(data.partialResult ?? data.result).trim();
247
247
  if (!text) return;
248
248
  const step = state.steps.findLast((s) => s.toolCallId === String(data.toolCallId ?? ""));
249
249
  state.out = {
@@ -104,15 +104,15 @@ import "./service-D1-PnhZe.js";
104
104
  import "./systemd-DZP4s4qd.js";
105
105
  import "./diagnostics-6vXdnH8k.js";
106
106
  import "./channels-status-issues-CGTJwSbx.js";
107
- import { a as formatUpdateOneLiner, i as formatUpdateAvailableHint, r as ensureCompletionCacheExists, s as resolveUpdateAvailability, t as checkShellCompletionStatus } from "./doctor-completion-KPbcZuPj.js";
108
- import "./register.subclis-C3LmMTFy.js";
107
+ import { a as formatUpdateOneLiner, i as formatUpdateAvailableHint, r as ensureCompletionCacheExists, s as resolveUpdateAvailability, t as checkShellCompletionStatus } from "./doctor-completion-BHBYf7hB.js";
108
+ import "./register.subclis-Cu6MOY9-.js";
109
109
  import { t as formatHelpExamples } from "./help-format-Bz-E4Xsi.js";
110
110
  import "./control-ui-assets-D4o4damy.js";
111
111
  import "./daemon-runtime-DIgqhoVa.js";
112
112
  import "./systemd-linger-DHSd9ikR.js";
113
113
  import "./auth-health-FPMBFAsj.js";
114
- import { t as doctorCommand } from "./doctor-BgN9XEBn.js";
115
- import { r as installCompletion } from "./completion-cli-BsGr8aGm.js";
114
+ import { t as doctorCommand } from "./doctor-A8OhCGjw.js";
115
+ import { r as installCompletion } from "./completion-cli-B119yy8a.js";
116
116
  import "./service-audit-BVZGmzLW.js";
117
117
  import "./shared-tNGHWtW-.js";
118
118
  import { r as runDaemonRestart } from "./daemon-cli-B6TentOe.js";
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/bluebubbles",
3
- "version": "2026.3.405",
3
+ "version": "2026.3.406",
4
4
  "description": "SKYKOI BlueBubbles channel plugin",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/copilot-proxy",
3
- "version": "2026.3.405",
3
+ "version": "2026.3.406",
4
4
  "description": "SKYKOI Copilot Proxy provider plugin",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/diagnostics-otel",
3
- "version": "2026.3.405",
3
+ "version": "2026.3.406",
4
4
  "description": "SKYKOI diagnostics OpenTelemetry exporter",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/discord",
3
- "version": "2026.3.405",
3
+ "version": "2026.3.406",
4
4
  "description": "SKYKOI Discord channel plugin",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/feishu",
3
- "version": "2026.3.405",
3
+ "version": "2026.3.406",
4
4
  "description": "SKYKOI Feishu/Lark channel plugin (community maintained by @m1heng)",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/google-antigravity-auth",
3
- "version": "2026.3.405",
3
+ "version": "2026.3.406",
4
4
  "description": "SKYKOI Google Antigravity OAuth provider plugin",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/google-gemini-cli-auth",
3
- "version": "2026.3.405",
3
+ "version": "2026.3.406",
4
4
  "description": "SKYKOI Gemini CLI OAuth provider plugin",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/googlechat",
3
- "version": "2026.3.405",
3
+ "version": "2026.3.406",
4
4
  "description": "SKYKOI Google Chat channel plugin",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/imessage",
3
- "version": "2026.3.405",
3
+ "version": "2026.3.406",
4
4
  "description": "SKYKOI iMessage channel plugin",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/line",
3
- "version": "2026.3.405",
3
+ "version": "2026.3.406",
4
4
  "description": "SKYKOI LINE channel plugin",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/llm-task",
3
- "version": "2026.3.405",
3
+ "version": "2026.3.406",
4
4
  "description": "SKYKOI JSON-only LLM task plugin",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/lobster",
3
- "version": "2026.3.405",
3
+ "version": "2026.3.406",
4
4
  "description": "Lobster workflow tool plugin (typed pipelines + resumable approvals)",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026.3.406
4
+
5
+ ### Changes
6
+ - Version alignment with core SKYKOI release numbers.
7
+
3
8
  ## 2026.3.405
4
9
 
5
10
  ### Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/matrix",
3
- "version": "2026.3.405",
3
+ "version": "2026.3.406",
4
4
  "description": "SKYKOI Matrix channel plugin",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/mattermost",
3
- "version": "2026.3.405",
3
+ "version": "2026.3.406",
4
4
  "description": "SKYKOI Mattermost channel plugin",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/memory-core",
3
- "version": "2026.3.405",
3
+ "version": "2026.3.406",
4
4
  "description": "SKYKOI core memory search plugin",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/memory-lancedb",
3
- "version": "2026.3.405",
3
+ "version": "2026.3.406",
4
4
  "description": "SKYKOI LanceDB-backed long-term memory plugin with auto-recall/capture",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/minimax-portal-auth",
3
- "version": "2026.3.405",
3
+ "version": "2026.3.406",
4
4
  "description": "SKYKOI MiniMax Portal OAuth provider plugin",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026.3.406
4
+
5
+ ### Changes
6
+ - Version alignment with core SKYKOI release numbers.
7
+
3
8
  ## 2026.3.405
4
9
 
5
10
  ### Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/msteams",
3
- "version": "2026.3.405",
3
+ "version": "2026.3.406",
4
4
  "description": "SKYKOI Microsoft Teams channel plugin",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/nextcloud-talk",
3
- "version": "2026.3.405",
3
+ "version": "2026.3.406",
4
4
  "description": "SKYKOI Nextcloud Talk channel plugin",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026.3.406
4
+
5
+ ### Changes
6
+ - Version alignment with core SKYKOI release numbers.
7
+
3
8
  ## 2026.3.405
4
9
 
5
10
  ### Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/nostr",
3
- "version": "2026.3.405",
3
+ "version": "2026.3.406",
4
4
  "description": "SKYKOI Nostr channel plugin for NIP-04 encrypted DMs",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/open-prose",
3
- "version": "2026.3.405",
3
+ "version": "2026.3.406",
4
4
  "description": "OpenProse VM skill pack plugin (slash command + telemetry).",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/signal",
3
- "version": "2026.3.405",
3
+ "version": "2026.3.406",
4
4
  "description": "SKYKOI Signal channel plugin",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/slack",
3
- "version": "2026.3.405",
3
+ "version": "2026.3.406",
4
4
  "description": "SKYKOI Slack channel plugin",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/telegram",
3
- "version": "2026.3.405",
3
+ "version": "2026.3.406",
4
4
  "description": "SKYKOI Telegram channel plugin",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/tlon",
3
- "version": "2026.3.405",
3
+ "version": "2026.3.406",
4
4
  "description": "SKYKOI Tlon/Urbit channel plugin",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026.3.406
4
+
5
+ ### Changes
6
+ - Version alignment with core SKYKOI release numbers.
7
+
3
8
  ## 2026.3.405
4
9
 
5
10
  ### Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/twitch",
3
- "version": "2026.3.405",
3
+ "version": "2026.3.406",
4
4
  "description": "SKYKOI Twitch channel plugin",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026.3.406
4
+
5
+ ### Changes
6
+ - Version alignment with core SKYKOI release numbers.
7
+
3
8
  ## 2026.3.405
4
9
 
5
10
  ### Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/voice-call",
3
- "version": "2026.3.405",
3
+ "version": "2026.3.406",
4
4
  "description": "SKYKOI voice-call plugin",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/whatsapp",
3
- "version": "2026.3.405",
3
+ "version": "2026.3.406",
4
4
  "description": "SKYKOI WhatsApp channel plugin",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026.3.406
4
+
5
+ ### Changes
6
+ - Version alignment with core SKYKOI release numbers.
7
+
3
8
  ## 2026.3.405
4
9
 
5
10
  ### Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/zalo",
3
- "version": "2026.3.405",
3
+ "version": "2026.3.406",
4
4
  "description": "SKYKOI Zalo channel plugin",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026.3.406
4
+
5
+ ### Changes
6
+ - Version alignment with core SKYKOI release numbers.
7
+
3
8
  ## 2026.3.405
4
9
 
5
10
  ### Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@SKYKOI/zalouser",
3
- "version": "2026.3.405",
3
+ "version": "2026.3.406",
4
4
  "description": "SKYKOI Zalo Personal Account plugin via zca-cli",
5
5
  "type": "module",
6
6
  "dependencies": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skykoi",
3
- "version": "2026.3.405",
3
+ "version": "2026.3.406",
4
4
  "description": "SkyKoi \u2014 Koi runtime. Multi-channel gateway CLI with RPC Koi.",
5
5
  "keywords": [
6
6
  "cli",