skykoi 2026.3.26 → 2026.3.27

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.26",
2
+ "version": "2026.3.27",
3
3
  "commit": "e5dd87a50ce9315067889b9a506365fe951bba83",
4
- "builtAt": "2026-03-18T08:48:17.388Z"
4
+ "builtAt": "2026-03-18T09:00:51.291Z"
5
5
  }
@@ -1 +1 @@
1
- 4f1cc233bcd1083e0f0949491c5ffd975db0bd235d9fd1497309b72933c93244
1
+ 9541b80bed6fa6aba77e2a652e995df275a95f2e40f46cdbee2f6c3786150bfb
@@ -7,7 +7,7 @@ import fs$1 from "node:fs/promises";
7
7
  import { execFileSync, spawn } from "node:child_process";
8
8
  import { randomBytes } from "node:crypto";
9
9
  import { createServer } from "node:http";
10
- import WebSocket, { WebSocketServer } from "ws";
10
+ import WebSocket$1, { WebSocketServer } from "ws";
11
11
  import { Buffer as Buffer$1 } from "node:buffer";
12
12
  import net from "node:net";
13
13
 
@@ -135,7 +135,7 @@ async function ensureChromeExtensionRelayServer(opts) {
135
135
  let nextExtensionId = 1;
136
136
  const sendToExtension = async (payload) => {
137
137
  const ws = extensionWs;
138
- if (!ws || ws.readyState !== WebSocket.OPEN) throw new Error("Chrome extension not connected");
138
+ if (!ws || ws.readyState !== WebSocket$1.OPEN) throw new Error("Chrome extension not connected");
139
139
  ws.send(JSON.stringify(payload));
140
140
  return await new Promise((resolve, reject) => {
141
141
  const timer = setTimeout(() => {
@@ -152,12 +152,12 @@ async function ensureChromeExtensionRelayServer(opts) {
152
152
  const broadcastToCdpClients = (evt) => {
153
153
  const msg = JSON.stringify(evt);
154
154
  for (const ws of cdpClients) {
155
- if (ws.readyState !== WebSocket.OPEN) continue;
155
+ if (ws.readyState !== WebSocket$1.OPEN) continue;
156
156
  ws.send(msg);
157
157
  }
158
158
  };
159
159
  const sendResponseToCdp = (ws, res) => {
160
- if (ws.readyState !== WebSocket.OPEN) return;
160
+ if (ws.readyState !== WebSocket$1.OPEN) return;
161
161
  ws.send(JSON.stringify(res));
162
162
  };
163
163
  const ensureTargetEventsForClient = (ws, mode) => {
@@ -377,7 +377,7 @@ async function ensureChromeExtensionRelayServer(opts) {
377
377
  wssExtension.on("connection", (ws) => {
378
378
  extensionWs = ws;
379
379
  const ping = setInterval(() => {
380
- if (ws.readyState !== WebSocket.OPEN) return;
380
+ if (ws.readyState !== WebSocket$1.OPEN) return;
381
381
  ws.send(JSON.stringify({ method: "ping" }));
382
382
  }, 5e3);
383
383
  ws.on("message", (data) => {
@@ -674,7 +674,7 @@ async function fetchJson(url, timeoutMs = 1500, init) {
674
674
  }
675
675
  async function withCdpSocket(wsUrl, fn, opts) {
676
676
  const headers = getHeadersWithAuth(wsUrl, opts?.headers ?? {});
677
- const ws = new WebSocket(wsUrl, {
677
+ const ws = new WebSocket$1(wsUrl, {
678
678
  handshakeTimeout: 5e3,
679
679
  ...Object.keys(headers).length ? { headers } : {}
680
680
  });
@@ -1808,7 +1808,7 @@ async function getChromeWebSocketUrl(cdpUrl, timeoutMs = 500) {
1808
1808
  async function canOpenWebSocket(wsUrl, timeoutMs = 800) {
1809
1809
  return await new Promise((resolve) => {
1810
1810
  const headers = getHeadersWithAuth(wsUrl);
1811
- const ws = new WebSocket(wsUrl, {
1811
+ const ws = new WebSocket$1(wsUrl, {
1812
1812
  handshakeTimeout: timeoutMs,
1813
1813
  ...Object.keys(headers).length ? { headers } : {}
1814
1814
  });
@@ -1,7 +1,7 @@
1
1
  import { n as __exportAll } from "./chunk-BXK9XSlF.js";
2
2
  import { j as normalizeAccountId$1 } from "./agent-scope-DADS8Ogj.js";
3
3
  import { H as logVerbose, N as resolveUserPath, W as shouldLogVerbose, b as getActivePluginRegistry } from "./exec-BfklUyuf.js";
4
- import { At as hasAlphaChannel, En as mediaKindFromMime, G as appendAssistantMessageToSessionTranscript, It as closeDispatcher, K as resolveMirroredTranscriptText, Lt as createPinnedDispatcher, Mt as resizeToJpeg, On as resolveSignalAccount, Ot as convertHeicToJpeg, Pt as saveMediaBuffer, Rt as resolvePinnedHostname, Tn as maxBytesForKind, _n as detectMime, gt as getChannelDock, jn as normalizeChannelId, jt as optimizeImageToPng, kn as getChannelPlugin, m as isMessagingToolDuplicate, on as INTERNAL_MESSAGE_CHANNEL, vn as extensionForMime, zt as resolvePinnedHostnameWithPolicy } from "./pi-embedded-helpers-5es-OPJI.js";
4
+ import { At as hasAlphaChannel, En as mediaKindFromMime, G as appendAssistantMessageToSessionTranscript, It as closeDispatcher, K as resolveMirroredTranscriptText, Lt as createPinnedDispatcher, Mt as resizeToJpeg, On as resolveSignalAccount, Ot as convertHeicToJpeg, Pt as saveMediaBuffer, Rt as resolvePinnedHostname, Tn as maxBytesForKind, _n as detectMime, gt as getChannelDock, jn as normalizeChannelId, jt as optimizeImageToPng, kn as getChannelPlugin, m as isMessagingToolDuplicate, on as INTERNAL_MESSAGE_CHANNEL, vn as extensionForMime, zt as resolvePinnedHostnameWithPolicy } from "./pi-embedded-helpers-C6jZ176d.js";
5
5
  import { t as loadConfig } from "./config-DWcVofEy.js";
6
6
  import path from "node:path";
7
7
  import fs from "node:fs/promises";
@@ -4,18 +4,18 @@ import { A as normalizeE164, B as danger, C as CONFIG_DIR, D as formatTerminalLi
4
4
  import { B as resolveSKYKOIAgentDir, C as getShellPathFromLoginShell, F as resolveApiKeyForProfile, H as DEFAULT_CONTEXT_TOKENS, I as listProfilesForProvider, L as markAuthProfileGood, M as isProfileInCooldown, N as markAuthProfileFailure, O as isTruthyEnvValue, P as markAuthProfileUsed, R as ensureAuthProfileStore, S as resolveModelAuthMode, T as resolveShellEnvFallbackTimeoutMs, U as DEFAULT_MODEL, V as resolveAuthProfileDisplayLabel, W as DEFAULT_PROVIDER, _ as getApiKeyForModel, a as modelKey, b as resolveApiKeyForProvider, c as resolveConfiguredModelRef, d as resolveThinkingDefault, f as normalizeGoogleModelId, i as isCliProvider, j as resolveAuthProfileOrder, k as parseBooleanValue$1, l as resolveDefaultModelForAgent, n as buildConfiguredAllowlistKeys, o as normalizeProviderId, r as buildModelAliasIndex, t as buildAllowedModelSet, u as resolveModelRefFromString, v as getCustomProviderApiKey, x as resolveEnvApiKey, y as requireApiKey, z as resolveAuthStorePathForDisplay } from "./model-selection-B1X17plF.js";
5
5
  import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-Bh7RwnX2.js";
6
6
  import { n as resolveCliName, t as formatCliCommand } from "./command-format-JFYLbDtd.js";
7
- import { A as MediaFetchError, B as resolveTextChunkLimit, C as resolveFetch, D as markdownToIRWithMeta, E as markdownToIR, F as chunkMarkdownText, G as SILENT_REPLY_TOKEN, H as isSafeFenceBreak, I as chunkMarkdownTextWithMode, K as isSilentReplyText, L as chunkText, M as fetchWithSsrFGuard, N as resolveMarkdownTableMode, O as loadWebMedia, P as chunkByNewline, R as chunkTextWithMode, S as parseInlineDirectives$1, T as chunkMarkdownIR, U as parseFenceSpans, V as findFenceSpanAt, W as HEARTBEAT_TOKEN, _ as buildTargetResolverSignature, a as applyReplyThreading, b as parseReplyDirectives, c as shouldSuppressMessagingToolReplies, d as sendMessageSignal, f as sendReadReceiptSignal, g as streamSignalEvents, h as signalRpcRequest, i as applyReplyTagsToPayload, j as fetchRemoteMedia, k as loadWebMediaRaw, l as createReplyToModeFilterForChannel, m as signalCheck, o as filterMessagingToolDuplicates, p as sendTypingSignal, r as normalizeReplyPayloadsForDelivery, s as isRenderablePayload, t as deliverOutboundPayloads, u as resolveReplyToMode, v as normalizeChannelTargetInput, w as wrapFetchWithAbortSignal, x as splitMediaFromOutput, y as normalizeTargetForProvider, z as resolveChunkMode } from "./deliver-CbNMDwF0.js";
8
- import { $ as updateSessionStoreEntry, $t as normalizeToolName, A as isCloudCodeAssistFormatError, An as listChannelPlugins, B as parseImageSizeError, Bn as resolveSlackAppToken, Bt as buildWorkspaceSkillCommandSpecs, C as BILLING_ERROR_USER_MESSAGE, Cn as kindFromMime, Ct as resolveGroupSessionKey, D as getApiErrorPayloadFingerprint, Dn as listEnabledSignalAccounts, Dt as resolveProfile, E as formatRawAssistantErrorForUi, En as mediaKindFromMime, Et as resolveBrowserConfig, F as isLikelyContextOverflowError, Fn as listTelegramAccountIds, Ft as SsrFBlockedError, G as appendAssistantMessageToSessionTranscript, Gn as normalizeDiscordToken, Gt as applySkillEnvOverrides, H as ensureSandboxWorkspaceForSession, Hn as normalizeChatType, Ht as loadWorkspaceSkillEntries, I as isRateLimitAssistantError, In as resolveTelegramAccount, J as readSessionUpdatedAt, Jt as applyOwnerOnlyToolPolicy, Kt as applySkillEnvOverridesFromSnapshot, L as isRawApiErrorPayload, Ln as resolveTelegramToken, M as isContextOverflowError, Mn as isWhatsAppGroupJid, Mt as resizeToJpeg, N as isFailoverAssistantError, Nn as normalizeWhatsAppTarget, Nt as getMediaDir, O as isAuthAssistantError, On as resolveSignalAccount, P as isFailoverErrorMessage, Pn as listEnabledTelegramAccounts, Pt as saveMediaBuffer, Q as updateSessionStore, Qt as expandToolGroups, R as isTimeoutErrorMessage, Rn as listBindings, S as isGoogleModelApi, Sn as isGifMedia, St as resolveConversationLabel, T as formatAssistantErrorText, Tt as registerBrowserRoutes, U as resolveSandboxContext, Un as listEnabledDiscordAccounts, Ut as resolveSkillsPromptForRun, V as sanitizeUserFacingText, Vn as resolveSlackBotToken, Vt as buildWorkspaceSkillSnapshot, W as resolveSandboxRuntimeStatus, Wn as resolveDiscordAccount, Wt as resolvePluginSkillDirs, X as saveSessionStore, Xt as collectExplicitAllowlist, Y as recordSessionMetaFromInbound, Yt as buildPluginToolGroups, Z as updateLastRoute, Zt as expandPolicyWithPluginGroups, _ as sanitizeSessionMessagesImages, _n as detectMime, _t as listChannelDocks, a as formatXHighModelHint, an as sanitizeGoogleTurnOrdering, at as normalizeDeliveryContext, b as downgradeOpenAIReasoningBlocks, bn as imageMimeFromFormat, bt as resolveChannelGroupToolsPolicy, c as normalizeReasoningLevel, cn as isInternalMessageChannel, ct as evaluateSessionFreshness, d as normalizeVerboseLevel, dn as normalizeMessageChannel, dt as resolveSessionResetType, en as resolveToolProfilePolicy, et as isCacheEnabled, f as resolveResponseUsageMode, fn as resolveGatewayMessageChannel, ft as resolveThreadFlag, g as normalizeTextForComparison, gn as GATEWAY_CLIENT_NAMES, gt as getChannelDock, h as isMessagingToolDuplicateNormalized, hn as GATEWAY_CLIENT_MODES, ht as deriveSessionMetaPatch, i as formatThinkingLevels, in as resolveBootstrapMaxChars, it as mergeDeliveryContext, j as isCompactionFailureError, jn as normalizeChannelId$1, k as isBillingAssistantError, kn as getChannelPlugin, kt as getImageMetadata, l as normalizeThinkLevel, ln as isMarkdownCapableMessageChannel, lt as resolveChannelResetConfig, mn as GATEWAY_CLIENT_IDS, mt as resolveMainSessionKey, n as validateGeminiTurns, nn as buildBootstrapContextFiles, nt as deliveryContextFromSession, o as listThinkingLevels, on as INTERNAL_MESSAGE_CHANNEL, ot as normalizeSessionDeliveryFields, p as supportsXHighThinking, pn as resolveMessageChannel, pt as DEFAULT_RESET_TRIGGERS, q as loadSessionStore, qt as resolveSandboxConfigForAgent, r as pickFallbackThinkingLevel, rn as ensureSessionHeader, rt as deliveryContextKey, s as normalizeElevatedLevel, sn as isDeliverableMessageChannel, st as resolveSessionKey$1, t as validateAnthropicTurns, tn as stripPluginOnlyAllowlist, tt as resolveCacheTtlMs$1, u as normalizeUsageDisplay, un as listDeliverableMessageChannels, ut as resolveSessionResetPolicy, v as sanitizeImageBlocks, vn as extensionForMime, vt as resolveChannelGroupPolicy, w as classifyFailoverReason, wn as MAX_IMAGE_BYTES, wt as createBrowserRouteContext, x as isAntigravityClaude, xn as isAudioFileName, xt as resolveIMessageAccount, y as sanitizeToolResultImages, yn as getFileExtension, yt as resolveChannelGroupRequireMention, z as parseImageDimensionError, zn as resolveSlackAccount } from "./pi-embedded-helpers-5es-OPJI.js";
7
+ import { A as MediaFetchError, B as resolveTextChunkLimit, C as resolveFetch, D as markdownToIRWithMeta, E as markdownToIR, F as chunkMarkdownText, G as SILENT_REPLY_TOKEN, H as isSafeFenceBreak, I as chunkMarkdownTextWithMode, K as isSilentReplyText, L as chunkText, M as fetchWithSsrFGuard, N as resolveMarkdownTableMode, O as loadWebMedia, P as chunkByNewline, R as chunkTextWithMode, S as parseInlineDirectives$1, T as chunkMarkdownIR, U as parseFenceSpans, V as findFenceSpanAt, W as HEARTBEAT_TOKEN, _ as buildTargetResolverSignature, a as applyReplyThreading, b as parseReplyDirectives, c as shouldSuppressMessagingToolReplies, d as sendMessageSignal, f as sendReadReceiptSignal, g as streamSignalEvents, h as signalRpcRequest, i as applyReplyTagsToPayload, j as fetchRemoteMedia, k as loadWebMediaRaw, l as createReplyToModeFilterForChannel, m as signalCheck, o as filterMessagingToolDuplicates, p as sendTypingSignal, r as normalizeReplyPayloadsForDelivery, s as isRenderablePayload, t as deliverOutboundPayloads, u as resolveReplyToMode, v as normalizeChannelTargetInput, w as wrapFetchWithAbortSignal, x as splitMediaFromOutput, y as normalizeTargetForProvider, z as resolveChunkMode } from "./deliver-CwY4XViM.js";
8
+ import { $ as updateSessionStoreEntry, $t as normalizeToolName, A as isCloudCodeAssistFormatError, An as listChannelPlugins, B as parseImageSizeError, Bn as resolveSlackAppToken, Bt as buildWorkspaceSkillCommandSpecs, C as BILLING_ERROR_USER_MESSAGE, Cn as kindFromMime, Ct as resolveGroupSessionKey, D as getApiErrorPayloadFingerprint, Dn as listEnabledSignalAccounts, Dt as resolveProfile, E as formatRawAssistantErrorForUi, En as mediaKindFromMime, Et as resolveBrowserConfig, F as isLikelyContextOverflowError, Fn as listTelegramAccountIds, Ft as SsrFBlockedError, G as appendAssistantMessageToSessionTranscript, Gn as normalizeDiscordToken, Gt as applySkillEnvOverrides, H as ensureSandboxWorkspaceForSession, Hn as normalizeChatType, Ht as loadWorkspaceSkillEntries, I as isRateLimitAssistantError, In as resolveTelegramAccount, J as readSessionUpdatedAt, Jt as applyOwnerOnlyToolPolicy, Kt as applySkillEnvOverridesFromSnapshot, L as isRawApiErrorPayload, Ln as resolveTelegramToken, M as isContextOverflowError, Mn as isWhatsAppGroupJid, Mt as resizeToJpeg, N as isFailoverAssistantError, Nn as normalizeWhatsAppTarget, Nt as getMediaDir, O as isAuthAssistantError, On as resolveSignalAccount, P as isFailoverErrorMessage, Pn as listEnabledTelegramAccounts, Pt as saveMediaBuffer, Q as updateSessionStore, Qt as expandToolGroups, R as isTimeoutErrorMessage, Rn as listBindings, S as isGoogleModelApi, Sn as isGifMedia, St as resolveConversationLabel, T as formatAssistantErrorText, Tt as registerBrowserRoutes, U as resolveSandboxContext, Un as listEnabledDiscordAccounts, Ut as resolveSkillsPromptForRun, V as sanitizeUserFacingText, Vn as resolveSlackBotToken, Vt as buildWorkspaceSkillSnapshot, W as resolveSandboxRuntimeStatus, Wn as resolveDiscordAccount, Wt as resolvePluginSkillDirs, X as saveSessionStore, Xt as collectExplicitAllowlist, Y as recordSessionMetaFromInbound, Yt as buildPluginToolGroups, Z as updateLastRoute, Zt as expandPolicyWithPluginGroups, _ as sanitizeSessionMessagesImages, _n as detectMime, _t as listChannelDocks, a as formatXHighModelHint, an as sanitizeGoogleTurnOrdering, at as normalizeDeliveryContext, b as downgradeOpenAIReasoningBlocks, bn as imageMimeFromFormat, bt as resolveChannelGroupToolsPolicy, c as normalizeReasoningLevel, cn as isInternalMessageChannel, ct as evaluateSessionFreshness, d as normalizeVerboseLevel, dn as normalizeMessageChannel, dt as resolveSessionResetType, en as resolveToolProfilePolicy, et as isCacheEnabled, f as resolveResponseUsageMode, fn as resolveGatewayMessageChannel, ft as resolveThreadFlag, g as normalizeTextForComparison, gn as GATEWAY_CLIENT_NAMES, gt as getChannelDock, h as isMessagingToolDuplicateNormalized, hn as GATEWAY_CLIENT_MODES, ht as deriveSessionMetaPatch, i as formatThinkingLevels, in as resolveBootstrapMaxChars, it as mergeDeliveryContext, j as isCompactionFailureError, jn as normalizeChannelId$1, k as isBillingAssistantError, kn as getChannelPlugin, kt as getImageMetadata, l as normalizeThinkLevel, ln as isMarkdownCapableMessageChannel, lt as resolveChannelResetConfig, mn as GATEWAY_CLIENT_IDS, mt as resolveMainSessionKey, n as validateGeminiTurns, nn as buildBootstrapContextFiles, nt as deliveryContextFromSession, o as listThinkingLevels, on as INTERNAL_MESSAGE_CHANNEL, ot as normalizeSessionDeliveryFields, p as supportsXHighThinking, pn as resolveMessageChannel, pt as DEFAULT_RESET_TRIGGERS, q as loadSessionStore, qt as resolveSandboxConfigForAgent, r as pickFallbackThinkingLevel, rn as ensureSessionHeader, rt as deliveryContextKey, s as normalizeElevatedLevel, sn as isDeliverableMessageChannel, st as resolveSessionKey$1, t as validateAnthropicTurns, tn as stripPluginOnlyAllowlist, tt as resolveCacheTtlMs$1, u as normalizeUsageDisplay, un as listDeliverableMessageChannels, ut as resolveSessionResetPolicy, v as sanitizeImageBlocks, vn as extensionForMime, vt as resolveChannelGroupPolicy, w as classifyFailoverReason, wn as MAX_IMAGE_BYTES, wt as createBrowserRouteContext, x as isAntigravityClaude, xn as isAudioFileName, xt as resolveIMessageAccount, y as sanitizeToolResultImages, yn as getFileExtension, yt as resolveChannelGroupRequireMention, z as parseImageDimensionError, zn as resolveSlackAccount } from "./pi-embedded-helpers-C6jZ176d.js";
9
9
  import { A as getWebAuthAgeMs, C as getConfigValueAtPath, D as resolveAgentMaxConcurrent, E as unsetConfigValueAtPath, M as logoutWeb, O as VERSION, P as readWebSelfId, R as webAuthExists, S as unsetConfigOverride, T as setConfigValueAtPath, _ as resolveEnableState, a as validateConfigObjectWithPlugins, b as resetConfigOverrides, c as resolveTelegramCustomCommands, d as validateJsonSchemaValue, f as loadPluginManifestRegistry, g as normalizePluginsConfig, i as writeConfigFile, j as logWebSelfId, k as resolveWhatsAppAccount, l as isSafeExecutableValue, n as readConfigFileSnapshot, o as TELEGRAM_COMMAND_NAME_PATTERN, p as discoverSKYKOIPlugins, r as resolveConfigSnapshotHash, s as normalizeTelegramCommandName, t as loadConfig, u as parseDurationMs, v as resolveMemorySlotDecision, w as parseConfigPath, x as setConfigOverride, y as getConfigOverrides } from "./config-DWcVofEy.js";
10
10
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-BowiL596.js";
11
- import { C as DEFAULT_AI_SNAPSHOT_MAX_CHARS, _ as rawDataToString, b as formatUncaughtError, h as ensureChromeExtensionRelayServer, v as extractErrorCode, y as formatErrorMessage$1 } from "./chrome-Dfln0wVx.js";
11
+ import { C as DEFAULT_AI_SNAPSHOT_MAX_CHARS, _ as rawDataToString, b as formatUncaughtError, h as ensureChromeExtensionRelayServer, v as extractErrorCode, y as formatErrorMessage$1 } from "./chrome-BjAcrZj9.js";
12
12
  import { a as resolveStorePath, i as resolveSessionTranscriptsDirForAgent, n as resolveSessionFilePath, r as resolveSessionTranscriptPath } from "./paths-Dx_DFiIu.js";
13
13
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-JLH5W4He.js";
14
- import { _ as stripThinkingTagsFromText, a as decodeDataUrl, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripMinimaxToolCallXml, h as stripDowngradedToolCallText, i as coerceImageModelConfig, l as extractAssistantThinking, m as promoteThinkingTagsToBlocks, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, t as describeImageWithModel, u as extractThinkingFromTaggedStream, v as resolveToolDisplay, y as ensureSKYKOIModelsJson } from "./image-RYnjCvlK.js";
14
+ import { _ as stripThinkingTagsFromText, a as decodeDataUrl, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripMinimaxToolCallXml, h as stripDowngradedToolCallText, i as coerceImageModelConfig, l as extractAssistantThinking, m as promoteThinkingTagsToBlocks, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, t as describeImageWithModel, u as extractThinkingFromTaggedStream, v as resolveToolDisplay, y as ensureSKYKOIModelsJson } from "./image-4jAzjLip.js";
15
15
  import { i as resolveMemorySearchConfig, n as resolveRetryConfig, r as retryAsync } from "./manager-D_k9W9gI.js";
16
16
  import { c as listMemoryFiles, l as normalizeExtraMemoryPaths } from "./sqlite-DRGmFCyY.js";
17
17
  import { t as redactSensitiveText } from "./redact-BIMJ3ntQ.js";
18
- import { a as formatError$1, c as downloadMediaMessage, d as normalizeMessageContent, f as isJidGroup, i as createWaSocket, l as extractMessageContent, n as startWebLoginWithQr, o as getStatusCode$1, p as DisconnectReason, r as waitForWebLogin, s as waitForWaConnection, u as getContentType } from "./login-qr-B5VR2gkw.js";
18
+ import { a as formatError$1, c as downloadMediaMessage, d as normalizeMessageContent, f as isJidGroup, i as createWaSocket, l as extractMessageContent, n as startWebLoginWithQr, o as getStatusCode$1, p as DisconnectReason, r as waitForWebLogin, s as waitForWaConnection, u as getContentType } from "./login-qr-ChLfAU7f.js";
19
19
  import { createRequire } from "node:module";
20
20
  import * as os$1 from "node:os";
21
21
  import os, { homedir, tmpdir } from "node:os";
@@ -35,7 +35,7 @@ import { EdgeTTS } from "node-edge-tts";
35
35
  import AjvPkg from "ajv";
36
36
  import { createServer } from "node:http";
37
37
  import { ProxyAgent, fetch as fetch$1 } from "undici";
38
- import { WebSocket as WebSocket$1 } from "ws";
38
+ import { WebSocket } from "ws";
39
39
  import { Buffer as Buffer$1 } from "node:buffer";
40
40
  import * as net$1 from "node:net";
41
41
  import net from "node:net";
@@ -7182,7 +7182,7 @@ var GatewayClient = class {
7182
7182
  if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
7183
7183
  });
7184
7184
  }
7185
- this.ws = new WebSocket$1(url, wsOptions);
7185
+ this.ws = new WebSocket(url, wsOptions);
7186
7186
  this.ws.on("open", () => {
7187
7187
  if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
7188
7188
  const tlsError = this.validateTlsFingerprint();
@@ -7392,7 +7392,7 @@ var GatewayClient = class {
7392
7392
  return null;
7393
7393
  }
7394
7394
  async request(method, params, opts) {
7395
- if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("gateway not connected");
7395
+ if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
7396
7396
  const id = randomUUID();
7397
7397
  const frame = {
7398
7398
  type: "req",
@@ -9126,7 +9126,7 @@ async function routeReply(params) {
9126
9126
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
9127
9127
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
9128
9128
  try {
9129
- const { deliverOutboundPayloads } = await import("./deliver-CbNMDwF0.js").then((n) => n.n);
9129
+ const { deliverOutboundPayloads } = await import("./deliver-CwY4XViM.js").then((n) => n.n);
9130
9130
  return {
9131
9131
  ok: true,
9132
9132
  messageId: (await deliverOutboundPayloads({
@@ -44349,7 +44349,7 @@ async function describeStickerImage(params) {
44349
44349
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
44350
44350
  try {
44351
44351
  const buffer = await fs$1.readFile(imagePath);
44352
- const { describeImageWithModel } = await import("./image-RYnjCvlK.js").then((n) => n.n);
44352
+ const { describeImageWithModel } = await import("./image-4jAzjLip.js").then((n) => n.n);
44353
44353
  return (await describeImageWithModel({
44354
44354
  buffer,
44355
44355
  fileName: "sticker.webp",
@@ -44706,7 +44706,7 @@ function createWhatsAppLoginTool() {
44706
44706
  force: Type.Optional(Type.Boolean())
44707
44707
  }),
44708
44708
  execute: async (_toolCallId, args) => {
44709
- const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-B5VR2gkw.js").then((n) => n.t);
44709
+ const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-ChLfAU7f.js").then((n) => n.t);
44710
44710
  if ((args?.action ?? "start") === "wait") {
44711
44711
  const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
44712
44712
  return {
@@ -1,7 +1,7 @@
1
1
  import { n as __exportAll } from "./chunk-BXK9XSlF.js";
2
2
  import { P as shortenHomeInString } from "./exec-BfklUyuf.js";
3
3
  import { B as resolveSKYKOIAgentDir, _ as getApiKeyForModel, g as resolveImplicitProviders, h as resolveImplicitCopilotProvider, m as resolveImplicitBedrockProvider, p as normalizeProviders, y as requireApiKey } from "./model-selection-B1X17plF.js";
4
- import { V as sanitizeUserFacingText } from "./pi-embedded-helpers-5es-OPJI.js";
4
+ import { V as sanitizeUserFacingText } from "./pi-embedded-helpers-C6jZ176d.js";
5
5
  import { t as loadConfig } from "./config-DWcVofEy.js";
6
6
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-BowiL596.js";
7
7
  import { n as redactToolDetail } from "./redact-BIMJ3ntQ.js";
@@ -4,7 +4,7 @@ import { t as formatCliCommand } from "./command-format-JFYLbDtd.js";
4
4
  import { F as resolveDefaultWebAuthDir, I as resolveWebCredsBackupPath, L as resolveWebCredsPath, M as logoutWeb, N as maybeRestoreCredsFromBackup, O as VERSION, P as readWebSelfId, R as webAuthExists, k as resolveWhatsAppAccount, t as loadConfig } from "./config-DWcVofEy.js";
5
5
  import fs from "node:fs";
6
6
  import { randomUUID } from "node:crypto";
7
- import WebSocket from "ws";
7
+ import WebSocket$1 from "ws";
8
8
  import * as Crypto from "crypto";
9
9
  import { createCipheriv, createDecipheriv, createHash as createHash$1, createHmac, randomBytes as randomBytes$1 } from "crypto";
10
10
  import { promisify } from "util";
@@ -94729,20 +94729,20 @@ var WebSocketClient = class extends AbstractSocketClient {
94729
94729
  this.socket = null;
94730
94730
  }
94731
94731
  get isOpen() {
94732
- return this.socket?.readyState === WebSocket.OPEN;
94732
+ return this.socket?.readyState === WebSocket$1.OPEN;
94733
94733
  }
94734
94734
  get isClosed() {
94735
- return this.socket === null || this.socket?.readyState === WebSocket.CLOSED;
94735
+ return this.socket === null || this.socket?.readyState === WebSocket$1.CLOSED;
94736
94736
  }
94737
94737
  get isClosing() {
94738
- return this.socket === null || this.socket?.readyState === WebSocket.CLOSING;
94738
+ return this.socket === null || this.socket?.readyState === WebSocket$1.CLOSING;
94739
94739
  }
94740
94740
  get isConnecting() {
94741
- return this.socket?.readyState === WebSocket.CONNECTING;
94741
+ return this.socket?.readyState === WebSocket$1.CONNECTING;
94742
94742
  }
94743
94743
  connect() {
94744
94744
  if (this.socket) return;
94745
- this.socket = new WebSocket(this.url, {
94745
+ this.socket = new WebSocket$1(this.url, {
94746
94746
  origin: DEFAULT_ORIGIN,
94747
94747
  headers: this.config.options?.headers,
94748
94748
  handshakeTimeout: this.config.connectTimeoutMs,
@@ -4,7 +4,7 @@ import { A as normalizeE164, C as CONFIG_DIR, N as resolveUserPath, _ as normali
4
4
  import { O as isTruthyEnvValue, k as parseBooleanValue } from "./model-selection-B1X17plF.js";
5
5
  import { t as formatCliCommand } from "./command-format-JFYLbDtd.js";
6
6
  import { _ as resolveEnableState, f as loadPluginManifestRegistry, g as normalizePluginsConfig, h as MANIFEST_KEY, i as writeConfigFile, k as resolveWhatsAppAccount, m as LEGACY_MANIFEST_KEYS, t as loadConfig, v as resolveMemorySlotDecision } from "./config-DWcVofEy.js";
7
- import { C as DEFAULT_AI_SNAPSHOT_MAX_CHARS, D as DEFAULT_SKYKOI_BROWSER_ENABLED, E as DEFAULT_SKYKOI_BROWSER_COLOR, O as DEFAULT_SKYKOI_BROWSER_PROFILE_NAME, S as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, T as DEFAULT_BROWSER_EVALUATE_ENABLED, a as resolveSKYKOIUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as stopChromeExtensionRelayServer, h as ensureChromeExtensionRelayServer, i as launchSKYKOIChrome, l as createTargetViaCdp, m as getHeadersWithAuth, n as isChromeCdpReady, o as stopSKYKOIChrome, p as appendCdpPath, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as extractErrorCode, w as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, x as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, y as formatErrorMessage } from "./chrome-Dfln0wVx.js";
7
+ import { C as DEFAULT_AI_SNAPSHOT_MAX_CHARS, D as DEFAULT_SKYKOI_BROWSER_ENABLED, E as DEFAULT_SKYKOI_BROWSER_COLOR, O as DEFAULT_SKYKOI_BROWSER_PROFILE_NAME, S as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, T as DEFAULT_BROWSER_EVALUATE_ENABLED, a as resolveSKYKOIUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as stopChromeExtensionRelayServer, h as ensureChromeExtensionRelayServer, i as launchSKYKOIChrome, l as createTargetViaCdp, m as getHeadersWithAuth, n as isChromeCdpReady, o as stopSKYKOIChrome, p as appendCdpPath, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as extractErrorCode, w as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, x as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, y as formatErrorMessage } from "./chrome-BjAcrZj9.js";
8
8
  import { r as resolveSessionTranscriptPath, t as resolveDefaultSessionStorePath } from "./paths-Dx_DFiIu.js";
9
9
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-JLH5W4He.js";
10
10
  import os from "node:os";
@@ -2043,7 +2043,7 @@ function isModuleNotFoundError(err) {
2043
2043
  }
2044
2044
  async function loadPwAiModule(mode) {
2045
2045
  try {
2046
- return await import("./pw-ai-BQoi7M-e.js");
2046
+ return await import("./pw-ai-DbAx6e1v.js");
2047
2047
  } catch (err) {
2048
2048
  if (mode === "soft") return null;
2049
2049
  if (isModuleNotFoundError(err)) return null;
@@ -4865,11 +4865,11 @@ function createProfileContext(opts, profile) {
4865
4865
  const userDataDir = resolveSKYKOIUserDataDir(profile.name);
4866
4866
  const profileState = getProfileState();
4867
4867
  if (await isHttpReachable(300) && !profileState.running) try {
4868
- await (await import("./pw-ai-BQoi7M-e.js")).closePlaywrightBrowserConnection();
4868
+ await (await import("./pw-ai-DbAx6e1v.js")).closePlaywrightBrowserConnection();
4869
4869
  } catch {}
4870
4870
  if (profileState.running) await stopRunningBrowser();
4871
4871
  try {
4872
- await (await import("./pw-ai-BQoi7M-e.js")).closePlaywrightBrowserConnection();
4872
+ await (await import("./pw-ai-DbAx6e1v.js")).closePlaywrightBrowserConnection();
4873
4873
  } catch {}
4874
4874
  if (!fs.existsSync(userDataDir)) return {
4875
4875
  moved: false,
@@ -1,7 +1,7 @@
1
1
  import "./paths-BKn8dZXk.js";
2
2
  import "./exec-BfklUyuf.js";
3
3
  import { t as formatCliCommand } from "./command-format-JFYLbDtd.js";
4
- import { m as getHeadersWithAuth, t as getChromeWebSocketUrl, u as formatAriaSnapshot, y as formatErrorMessage } from "./chrome-Dfln0wVx.js";
4
+ import { m as getHeadersWithAuth, t as getChromeWebSocketUrl, u as formatAriaSnapshot, y as formatErrorMessage } from "./chrome-BjAcrZj9.js";
5
5
  import path from "node:path";
6
6
  import fs from "node:fs/promises";
7
7
  import crypto from "node:crypto";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skykoi",
3
- "version": "2026.3.26",
3
+ "version": "2026.3.27",
4
4
  "description": "SkyKoi — AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.",
5
5
  "keywords": [
6
6
  "skykoi",