@symerian/symi 3.0.20 → 3.0.21

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 (52) hide show
  1. package/dist/{audio-preflight-BaCdNfrk.js → audio-preflight-D7BVT-ls.js} +4 -4
  2. package/dist/build-info.json +3 -3
  3. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  4. package/dist/{chrome-UfmVM0xR.js → chrome-B5CO2vB5.js} +7 -7
  5. package/dist/{deliver-BqXdac6W.js → deliver-CrwjsDwv.js} +1 -1
  6. package/dist/extensionAPI.js +7 -7
  7. package/dist/{image-DIWsXYcW.js → image-Csu7WcLW.js} +1 -1
  8. package/dist/{manager-DW3SxcPr.js → manager-BkkVjTO8.js} +1 -1
  9. package/dist/{pi-embedded-BNch0U5F.js → pi-embedded-Dhp64z5l.js} +16 -16
  10. package/dist/{pi-embedded-helpers-IkHl02JF.js → pi-embedded-helpers-840E4hop.js} +4 -4
  11. package/dist/{pw-ai-nMkA-oDJ.js → pw-ai-CBgJf_RR.js} +1 -1
  12. package/dist/{runner-DNEC58JI.js → runner-BbFKo1ne.js} +1 -1
  13. package/dist/{synthesis-BWAr0sZ9.js → synthesis-DoEM0E8_.js} +7 -7
  14. package/dist/{web-7a-m_UxL.js → web-BYXJn-Ps.js} +7 -7
  15. package/package.json +1 -1
  16. package/extensions/imessage/index.ts +0 -17
  17. package/extensions/imessage/node_modules/.bin/symi +0 -21
  18. package/extensions/imessage/package.json +0 -15
  19. package/extensions/imessage/src/channel.outbound.test.ts +0 -66
  20. package/extensions/imessage/src/channel.ts +0 -298
  21. package/extensions/imessage/src/runtime.ts +0 -14
  22. package/extensions/imessage/symi.plugin.json +0 -9
  23. package/extensions/line/index.ts +0 -19
  24. package/extensions/line/node_modules/.bin/symi +0 -21
  25. package/extensions/line/package.json +0 -30
  26. package/extensions/line/src/card-command.ts +0 -344
  27. package/extensions/line/src/channel.logout.test.ts +0 -133
  28. package/extensions/line/src/channel.sendPayload.test.ts +0 -312
  29. package/extensions/line/src/channel.startup.test.ts +0 -133
  30. package/extensions/line/src/channel.ts +0 -801
  31. package/extensions/line/src/runtime.ts +0 -14
  32. package/extensions/line/symi.plugin.json +0 -9
  33. package/extensions/signal/index.ts +0 -17
  34. package/extensions/signal/node_modules/.bin/symi +0 -21
  35. package/extensions/signal/package.json +0 -15
  36. package/extensions/signal/src/channel.ts +0 -302
  37. package/extensions/signal/src/runtime.ts +0 -14
  38. package/extensions/signal/symi.plugin.json +0 -9
  39. package/extensions/telegram/index.ts +0 -17
  40. package/extensions/telegram/node_modules/.bin/symi +0 -21
  41. package/extensions/telegram/package.json +0 -15
  42. package/extensions/telegram/src/channel.test.ts +0 -125
  43. package/extensions/telegram/src/channel.ts +0 -560
  44. package/extensions/telegram/src/runtime.ts +0 -14
  45. package/extensions/telegram/symi.plugin.json +0 -9
  46. package/extensions/whatsapp/index.ts +0 -17
  47. package/extensions/whatsapp/node_modules/.bin/symi +0 -21
  48. package/extensions/whatsapp/package.json +0 -15
  49. package/extensions/whatsapp/src/channel.ts +0 -465
  50. package/extensions/whatsapp/src/resolve-target.test.ts +0 -170
  51. package/extensions/whatsapp/src/runtime.ts +0 -14
  52. package/extensions/whatsapp/symi.plugin.json +0 -9
@@ -12,20 +12,20 @@ import "./thinking-BPC3suuL.js";
12
12
  import "./image-ops-BLN6SguT.js";
13
13
  import "./pi-model-discovery-DZrt2PIy.js";
14
14
  import "./message-channel-BGdf4mO-.js";
15
- import "./pi-embedded-helpers-IkHl02JF.js";
15
+ import "./pi-embedded-helpers-840E4hop.js";
16
16
  import "./config-CM7_yRfD.js";
17
17
  import "./manifest-registry-B4bkFgdZ.js";
18
- import "./chrome-UfmVM0xR.js";
18
+ import "./chrome-B5CO2vB5.js";
19
19
  import "./skills-BipI9f8B.js";
20
20
  import "./redact-Bcq1snj9.js";
21
21
  import "./errors-C2nBLmDT.js";
22
22
  import "./ssrf-CQMi5Tnq.js";
23
23
  import "./paths-CM0XImQQ.js";
24
24
  import "./tool-images-CEdNTYf6.js";
25
- import "./image-DIWsXYcW.js";
25
+ import "./image-Csu7WcLW.js";
26
26
  import "./gemini-auth-DlLAjm-e.js";
27
27
  import "./local-roots-DOhdoDO9.js";
28
- import { a as resolveMediaAttachmentLocalRoots, n as createMediaAttachmentCache, o as runCapability, r as normalizeMediaAttachments, t as buildProviderRegistry, u as isAudioAttachment } from "./runner-DNEC58JI.js";
28
+ import { a as resolveMediaAttachmentLocalRoots, n as createMediaAttachmentCache, o as runCapability, r as normalizeMediaAttachments, t as buildProviderRegistry, u as isAudioAttachment } from "./runner-BbFKo1ne.js";
29
29
 
30
30
  //#region src/media-understanding/audio-preflight.ts
31
31
  /**
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "3.0.20",
3
- "commit": "2488e9810bd040c6d7c8fdd8dcc1463576b6cf71",
4
- "builtAt": "2026-05-02T19:22:02.931Z"
2
+ "version": "3.0.21",
3
+ "commit": "9ce1eac46f686f4fac2e0fe52d5b5392e31a0784",
4
+ "builtAt": "2026-05-02T19:32:36.306Z"
5
5
  }
@@ -1 +1 @@
1
- ac56f940e2a20f29efebb86ea615ab94911125a4bc06e53990877607f5e83195
1
+ 5135c092b47945bf66642428479b96c975f2d1257f84de9ecab217995ff2ed5a
@@ -10,7 +10,7 @@ import fs$1 from "node:fs/promises";
10
10
  import { execFileSync, spawn } from "node:child_process";
11
11
  import net from "node:net";
12
12
  import { createServer } from "node:http";
13
- import WebSocket, { WebSocketServer } from "ws";
13
+ import WebSocket$1, { WebSocketServer } from "ws";
14
14
  import { Buffer as Buffer$1 } from "node:buffer";
15
15
 
16
16
  //#region src/browser/constants.ts
@@ -178,7 +178,7 @@ async function ensureChromeExtensionRelayServer(opts) {
178
178
  let nextExtensionId = 1;
179
179
  const sendToExtension = async (payload) => {
180
180
  const ws = extensionWs;
181
- if (!ws || ws.readyState !== WebSocket.OPEN) throw new Error("Chrome extension not connected");
181
+ if (!ws || ws.readyState !== WebSocket$1.OPEN) throw new Error("Chrome extension not connected");
182
182
  ws.send(JSON.stringify(payload));
183
183
  return await new Promise((resolve, reject) => {
184
184
  const timer = setTimeout(() => {
@@ -195,12 +195,12 @@ async function ensureChromeExtensionRelayServer(opts) {
195
195
  const broadcastToCdpClients = (evt) => {
196
196
  const msg = JSON.stringify(evt);
197
197
  for (const ws of cdpClients) {
198
- if (ws.readyState !== WebSocket.OPEN) continue;
198
+ if (ws.readyState !== WebSocket$1.OPEN) continue;
199
199
  ws.send(msg);
200
200
  }
201
201
  };
202
202
  const sendResponseToCdp = (ws, res) => {
203
- if (ws.readyState !== WebSocket.OPEN) return;
203
+ if (ws.readyState !== WebSocket$1.OPEN) return;
204
204
  ws.send(JSON.stringify(res));
205
205
  };
206
206
  const ensureTargetEventsForClient = (ws, mode) => {
@@ -425,7 +425,7 @@ async function ensureChromeExtensionRelayServer(opts) {
425
425
  wssExtension.on("connection", (ws) => {
426
426
  extensionWs = ws;
427
427
  const ping = setInterval(() => {
428
- if (ws.readyState !== WebSocket.OPEN) return;
428
+ if (ws.readyState !== WebSocket$1.OPEN) return;
429
429
  ws.send(JSON.stringify({ method: "ping" }));
430
430
  }, 5e3);
431
431
  ws.on("message", (data) => {
@@ -743,7 +743,7 @@ async function fetchOk(url, timeoutMs = 1500, init) {
743
743
  }
744
744
  async function withCdpSocket(wsUrl, fn, opts) {
745
745
  const headers = getHeadersWithAuth(wsUrl, opts?.headers ?? {});
746
- const ws = new WebSocket(wsUrl, {
746
+ const ws = new WebSocket$1(wsUrl, {
747
747
  handshakeTimeout: typeof opts?.handshakeTimeoutMs === "number" && Number.isFinite(opts.handshakeTimeoutMs) ? Math.max(1, Math.floor(opts.handshakeTimeoutMs)) : 5e3,
748
748
  ...Object.keys(headers).length ? { headers } : {}
749
749
  });
@@ -1637,7 +1637,7 @@ async function getChromeWebSocketUrl(cdpUrl, timeoutMs = 500) {
1637
1637
  async function canOpenWebSocket(wsUrl, timeoutMs = 800) {
1638
1638
  return await new Promise((resolve) => {
1639
1639
  const headers = getHeadersWithAuth(wsUrl);
1640
- const ws = new WebSocket(wsUrl, {
1640
+ const ws = new WebSocket$1(wsUrl, {
1641
1641
  handshakeTimeout: timeoutMs,
1642
1642
  ...Object.keys(headers).length ? { headers } : {}
1643
1643
  });
@@ -7,7 +7,7 @@ import { i as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-DuaBc9
7
7
  import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-DKxtNfL9.js";
8
8
  import { C as resolveSignalAccount } from "./thinking-BPC3suuL.js";
9
9
  import { x as mediaKindFromMime } from "./image-ops-BLN6SguT.js";
10
- import { Dt as saveMediaBuffer, L as appendAssistantMessageToSessionTranscript, R as resolveMirroredTranscriptText } from "./pi-embedded-helpers-IkHl02JF.js";
10
+ import { Dt as saveMediaBuffer, L as appendAssistantMessageToSessionTranscript, R as resolveMirroredTranscriptText } from "./pi-embedded-helpers-840E4hop.js";
11
11
  import { n as loadConfig } from "./config-CM7_yRfD.js";
12
12
  import { c as resolveChunkMode, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, n as chunkByParagraph } from "./chunk-BF8FTuAr.js";
13
13
  import { n as resolveMarkdownTableMode } from "./markdown-tables-C4FB_lUY.js";
@@ -7,30 +7,30 @@ import { a as resolveAgentIdentity } from "./reply-prefix-GXv1Iroa.js";
7
7
  import "./github-copilot-token-BbsJ0Qbo.js";
8
8
  import "./env-Dubyv93k.js";
9
9
  import "./tokens-DuaBc9v7.js";
10
- import { M as resolveAgentTimeoutMs, m as runEmbeddedPiAgent } from "./pi-embedded-BNch0U5F.js";
10
+ import { M as resolveAgentTimeoutMs, m as runEmbeddedPiAgent } from "./pi-embedded-Dhp64z5l.js";
11
11
  import "./accounts-Cwv1OPM9.js";
12
12
  import "./plugins-DKxtNfL9.js";
13
13
  import "./bindings-Dzv5Zjq5.js";
14
14
  import "./replies-4QMRftPk.js";
15
- import "./deliver-BqXdac6W.js";
15
+ import "./deliver-CrwjsDwv.js";
16
16
  import "./diagnostic-N2nzKeLM.js";
17
17
  import "./diagnostic-session-state-DmrztgHU.js";
18
18
  import "./thinking-BPC3suuL.js";
19
19
  import "./image-ops-BLN6SguT.js";
20
20
  import "./pi-model-discovery-DZrt2PIy.js";
21
21
  import "./message-channel-BGdf4mO-.js";
22
- import { B as loadSessionStore, U as saveSessionStore } from "./pi-embedded-helpers-IkHl02JF.js";
22
+ import { B as loadSessionStore, U as saveSessionStore } from "./pi-embedded-helpers-840E4hop.js";
23
23
  import "./config-CM7_yRfD.js";
24
24
  import "./manifest-registry-B4bkFgdZ.js";
25
- import "./chrome-UfmVM0xR.js";
25
+ import "./chrome-B5CO2vB5.js";
26
26
  import "./skills-BipI9f8B.js";
27
27
  import "./redact-Bcq1snj9.js";
28
28
  import "./errors-C2nBLmDT.js";
29
29
  import "./ssrf-CQMi5Tnq.js";
30
30
  import { n as resolveSessionFilePath, s as resolveStorePath } from "./paths-CM0XImQQ.js";
31
31
  import "./tool-images-CEdNTYf6.js";
32
- import "./image-DIWsXYcW.js";
33
- import "./manager-DW3SxcPr.js";
32
+ import "./image-Csu7WcLW.js";
33
+ import "./manager-BkkVjTO8.js";
34
34
  import "./gemini-auth-DlLAjm-e.js";
35
35
  import "./sqlite-CYC5VeY8.js";
36
36
  import "./target-errors-DiPTkfjX.js";
@@ -41,7 +41,7 @@ import "./ir-C-HBRBUO.js";
41
41
  import "./render-2Ztmr_V0.js";
42
42
  import "./commands-registry-B3FzaXuK.js";
43
43
  import "./skill-commands-_oLVTcAO.js";
44
- import "./runner-DNEC58JI.js";
44
+ import "./runner-BbFKo1ne.js";
45
45
  import "./active-listener-BvGU_5O3.js";
46
46
  import "./resolve-route-Bfw6KMf-.js";
47
47
  import "./pi-auth-json-BGgztpkV.js";
@@ -2,7 +2,7 @@ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { E as isRecord, F as shortenHomeInString } from "./registry-CD0UNMSJ.js";
3
3
  import { C as requireApiKey, W as resolveSymiAgentDir, Y as normalizeSecretInput, _ as resolveImplicitCopilotProvider, g as resolveImplicitBedrockProvider, h as normalizeProviders, v as resolveImplicitProviders, x as getApiKeyForModel } from "./model-selection-DKlWqTkR.js";
4
4
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-DZrt2PIy.js";
5
- import { M as sanitizeUserFacingText } from "./pi-embedded-helpers-IkHl02JF.js";
5
+ import { M as sanitizeUserFacingText } from "./pi-embedded-helpers-840E4hop.js";
6
6
  import { n as loadConfig } from "./config-CM7_yRfD.js";
7
7
  import { n as redactToolDetail } from "./redact-Bcq1snj9.js";
8
8
  import path from "node:path";
@@ -4045,7 +4045,7 @@ var MemoryIndexManager = class MemoryIndexManager extends MemoryManagerEmbedding
4045
4045
  * to bypass the min-interval guard (CLI use).
4046
4046
  */
4047
4047
  async runL3CycleIfDue(params) {
4048
- const [{ runL3Cycle, runL3CycleIfDue }, { createSynthesizer }] = await Promise.all([import("./consolidate-DGRcfY_m.js"), import("./synthesis-BWAr0sZ9.js")]);
4048
+ const [{ runL3Cycle, runL3CycleIfDue }, { createSynthesizer }] = await Promise.all([import("./consolidate-DGRcfY_m.js"), import("./synthesis-DoEM0E8_.js")]);
4049
4049
  const synthesize = createSynthesizer({
4050
4050
  cfg: this.cfg,
4051
4051
  agentId: this.agentId,
@@ -13,17 +13,17 @@ import { t as normalizeChatType } from "./chat-type-BKe459rw.js";
13
13
  import { a as logoutWeb, i as logWebSelfId, l as readWebSelfId, p as webAuthExists, r as getWebAuthAgeMs, t as resolveWhatsAppAccount } from "./accounts-Cwv1OPM9.js";
14
14
  import { a as normalizeWhatsAppTarget, c as listTelegramAccountIds, d as resolveSlackAccount, i as isWhatsAppGroupJid, l as resolveTelegramAccount, m as resolveSlackBotToken, n as listChannelPlugins, o as createTelegramActionGate, p as resolveSlackAppToken, r as normalizeChannelId$1, s as listEnabledTelegramAccounts, t as getChannelPlugin, u as resolveTelegramToken } from "./plugins-DKxtNfL9.js";
15
15
  import { a as sendMessageSlack, c as parseSlackBlocksInput, d as parseSlackTarget, f as resolveSlackChannelId, i as resolveSlackThreadTs, l as validateSlackBlocksArray, n as deliverReplies$3, o as createSlackWebClient, s as resolveSlackWebClientOptions, t as createSlackReplyDeliveryPlan, u as buildSlackBlocksFallbackText } from "./replies-4QMRftPk.js";
16
- import { S as initializeGlobalHookRunner, _ as MEDIA_TOKEN_RE, a as sendReadReceiptSignal, b as resolveFetch, c as signalCheck, d as resolveOutboundAttachmentFromUrl, f as buildTargetResolverSignature, g as parseReplyDirectives, h as throwIfAborted, i as sendMessageSignal, l as signalRpcRequest, m as normalizeTargetForProvider, o as sendTypingSignal, p as normalizeChannelTargetInput, r as normalizeReplyPayloadsForDelivery, s as resolveSignalRpcContext, t as deliverOutboundPayloads, u as streamSignalEvents, v as splitMediaFromOutput, x as getGlobalHookRunner, y as parseInlineDirectives$1 } from "./deliver-BqXdac6W.js";
16
+ import { S as initializeGlobalHookRunner, _ as MEDIA_TOKEN_RE, a as sendReadReceiptSignal, b as resolveFetch, c as signalCheck, d as resolveOutboundAttachmentFromUrl, f as buildTargetResolverSignature, g as parseReplyDirectives, h as throwIfAborted, i as sendMessageSignal, l as signalRpcRequest, m as normalizeTargetForProvider, o as sendTypingSignal, p as normalizeChannelTargetInput, r as normalizeReplyPayloadsForDelivery, s as resolveSignalRpcContext, t as deliverOutboundPayloads, u as streamSignalEvents, v as splitMediaFromOutput, x as getGlobalHookRunner, y as parseInlineDirectives$1 } from "./deliver-CrwjsDwv.js";
17
17
  import { a as logMessageProcessed, c as logWebhookError, d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, i as logLaneEnqueue, l as logWebhookProcessed, o as logMessageQueued, p as isDiagnosticsEnabled, r as logLaneDequeue, s as logSessionStateChange, t as diag, u as logWebhookReceived } from "./diagnostic-N2nzKeLM.js";
18
18
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-DmrztgHU.js";
19
19
  import { C as resolveSignalAccount, S as listEnabledSignalAccounts, _ as resolveIMessageAccount, a as normalizeReasoningLevel, b as normalizeStringEntries, c as normalizeVerboseLevel, d as getChannelDock, f as listChannelDocks, g as resolveChannelGroupToolsPolicy, h as resolveChannelGroupRequireMention, i as normalizeElevatedLevel, l as resolveResponseUsageMode, m as resolveChannelGroupPolicy, n as formatXHighModelHint, o as normalizeThinkLevel, p as normalizeSignalMessagingTarget, s as normalizeUsageDisplay, t as formatThinkingLevels, u as supportsXHighThinking, v as normalizeAtHashSlug, x as normalizeStringEntriesLower, y as normalizeHyphenSlug } from "./thinking-BPC3suuL.js";
20
20
  import { d as detectMime, f as extensionForMime, g as isGifMedia, i as getImageMetadata, m as imageMimeFromFormat, p as getFileExtension, s as resizeToJpeg, v as normalizeMimeType$1, x as mediaKindFromMime, y as MAX_IMAGE_BYTES } from "./image-ops-BLN6SguT.js";
21
21
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-DZrt2PIy.js";
22
22
  import { a as listDeliverableMessageChannels, c as GATEWAY_CLIENT_IDS, i as isMarkdownCapableMessageChannel, l as GATEWAY_CLIENT_MODES, n as isDeliverableMessageChannel, o as normalizeMessageChannel, r as isInternalMessageChannel, s as resolveGatewayMessageChannel, t as INTERNAL_MESSAGE_CHANNEL, u as GATEWAY_CLIENT_NAMES } from "./message-channel-BGdf4mO-.js";
23
- import { $ as normalizeSessionDeliveryFields, A as parseImageDimensionError, At as getBridgeAuthForPort, B as loadSessionStore, Bt as resolveToolProfilePolicy, C as isFailoverAssistantError, Ct as registerBrowserRoutes, D as isRawApiErrorPayload, Dt as saveMediaBuffer, E as isRateLimitAssistantError, Et as getMediaDir, F as resolveSandboxRuntimeStatus, Ft as collectExplicitAllowlist, G as updateSessionStore, Gt as ensureSessionHeader, H as recordSessionMetaFromInbound, Ht as compileGlobPatterns, I as extractDeliveryInfo, It as expandPolicyWithPluginGroups, J as resolveCacheTtlMs$1, Jt as sanitizeGoogleTurnOrdering, K as updateSessionStoreEntry, Kt as resolveBootstrapMaxChars, L as appendAssistantMessageToSessionTranscript, Lt as expandToolGroups, M as sanitizeUserFacingText, Mt as resolveBrowserControlAuth, N as ensureSandboxWorkspaceForSession, Nt as applyOwnerOnlyToolPolicy, O as isTimeoutErrorMessage, Ot as DEFAULT_UPLOAD_DIR, P as resolveSandboxContext, Pt as buildPluginToolGroups, Q as normalizeDeliveryContext, Rt as mergeAlsoAllowPolicy, S as isContextOverflowError, St as createBrowserRouteContext, T as isLikelyContextOverflowError, Tt as resolveProfile, Ut as matchesAnyGlobPattern, V as readSessionUpdatedAt, Vt as stripPluginOnlyAllowlist, W as updateLastRoute, Wt as buildBootstrapContextFiles, X as deliveryContextKey, Y as deliveryContextFromSession, Z as mergeDeliveryContext, _ as getApiErrorPayloadFingerprint, _t as resolveMainSessionKey, a as normalizeTextForComparison, at as applyInputProvenanceToUserMessage, b as isCloudCodeAssistFormatError, bt as acquireSessionWriteLock, c as extractToolResultId, ct as resolveSessionKey, d as isGoogleModelApi, dt as resolveSessionResetPolicy, et as archiveSessionTranscripts, f as BILLING_ERROR_USER_MESSAGE, ft as resolveSessionResetType, g as formatRawAssistantErrorForUi, gt as canonicalizeMainSessionAlias, h as formatBillingErrorMessage, ht as resolveFreshSessionTotalTokens, i as isMessagingToolDuplicateNormalized, it as INPUT_PROVENANCE_KIND_VALUES, j as parseImageSizeError, jt as ensureBrowserControlAuth, k as isTransientHttpError, kt as resolveExistingPathsWithinRoot, l as downgradeOpenAIReasoningBlocks, lt as evaluateSessionFreshness, m as formatAssistantErrorText, mt as DEFAULT_RESET_TRIGGERS, n as validateGeminiTurns, nt as countToolResults, o as sanitizeSessionMessagesImages, ot as hasInterSessionUserProvenance, p as classifyFailoverReason, pt as resolveThreadFlag, q as isCacheEnabled, qt as resolveBootstrapTotalMaxChars, r as pickFallbackThinkingLevel, rt as extractToolCallNames, s as extractToolCallsFromAssistant, st as normalizeInputProvenance, t as validateAnthropicTurns, tt as capArrayByJsonBytes, u as isAntigravityClaude, ut as resolveChannelResetConfig, v as isAuthAssistantError, vt as deriveSessionMetaPatch, w as isFailoverErrorMessage, wt as resolveBrowserConfig, x as isCompactionFailureError, xt as resolveSessionLockMaxHoldFromTimeout, y as isBillingAssistantError, yt as resolveGroupSessionKey, z as resolveAndPersistSessionFile, zt as normalizeToolName } from "./pi-embedded-helpers-IkHl02JF.js";
23
+ import { $ as normalizeSessionDeliveryFields, A as parseImageDimensionError, At as getBridgeAuthForPort, B as loadSessionStore, Bt as resolveToolProfilePolicy, C as isFailoverAssistantError, Ct as registerBrowserRoutes, D as isRawApiErrorPayload, Dt as saveMediaBuffer, E as isRateLimitAssistantError, Et as getMediaDir, F as resolveSandboxRuntimeStatus, Ft as collectExplicitAllowlist, G as updateSessionStore, Gt as ensureSessionHeader, H as recordSessionMetaFromInbound, Ht as compileGlobPatterns, I as extractDeliveryInfo, It as expandPolicyWithPluginGroups, J as resolveCacheTtlMs$1, Jt as sanitizeGoogleTurnOrdering, K as updateSessionStoreEntry, Kt as resolveBootstrapMaxChars, L as appendAssistantMessageToSessionTranscript, Lt as expandToolGroups, M as sanitizeUserFacingText, Mt as resolveBrowserControlAuth, N as ensureSandboxWorkspaceForSession, Nt as applyOwnerOnlyToolPolicy, O as isTimeoutErrorMessage, Ot as DEFAULT_UPLOAD_DIR, P as resolveSandboxContext, Pt as buildPluginToolGroups, Q as normalizeDeliveryContext, Rt as mergeAlsoAllowPolicy, S as isContextOverflowError, St as createBrowserRouteContext, T as isLikelyContextOverflowError, Tt as resolveProfile, Ut as matchesAnyGlobPattern, V as readSessionUpdatedAt, Vt as stripPluginOnlyAllowlist, W as updateLastRoute, Wt as buildBootstrapContextFiles, X as deliveryContextKey, Y as deliveryContextFromSession, Z as mergeDeliveryContext, _ as getApiErrorPayloadFingerprint, _t as resolveMainSessionKey, a as normalizeTextForComparison, at as applyInputProvenanceToUserMessage, b as isCloudCodeAssistFormatError, bt as acquireSessionWriteLock, c as extractToolResultId, ct as resolveSessionKey, d as isGoogleModelApi, dt as resolveSessionResetPolicy, et as archiveSessionTranscripts, f as BILLING_ERROR_USER_MESSAGE, ft as resolveSessionResetType, g as formatRawAssistantErrorForUi, gt as canonicalizeMainSessionAlias, h as formatBillingErrorMessage, ht as resolveFreshSessionTotalTokens, i as isMessagingToolDuplicateNormalized, it as INPUT_PROVENANCE_KIND_VALUES, j as parseImageSizeError, jt as ensureBrowserControlAuth, k as isTransientHttpError, kt as resolveExistingPathsWithinRoot, l as downgradeOpenAIReasoningBlocks, lt as evaluateSessionFreshness, m as formatAssistantErrorText, mt as DEFAULT_RESET_TRIGGERS, n as validateGeminiTurns, nt as countToolResults, o as sanitizeSessionMessagesImages, ot as hasInterSessionUserProvenance, p as classifyFailoverReason, pt as resolveThreadFlag, q as isCacheEnabled, qt as resolveBootstrapTotalMaxChars, r as pickFallbackThinkingLevel, rt as extractToolCallNames, s as extractToolCallsFromAssistant, st as normalizeInputProvenance, t as validateAnthropicTurns, tt as capArrayByJsonBytes, u as isAntigravityClaude, ut as resolveChannelResetConfig, v as isAuthAssistantError, vt as deriveSessionMetaPatch, w as isFailoverErrorMessage, wt as resolveBrowserConfig, x as isCompactionFailureError, xt as resolveSessionLockMaxHoldFromTimeout, y as isBillingAssistantError, yt as resolveGroupSessionKey, z as resolveAndPersistSessionFile, zt as normalizeToolName } from "./pi-embedded-helpers-840E4hop.js";
24
24
  import { A as VERSION, C as getConfigValueAtPath, D as isSafeExecutableValue, E as unsetConfigValueAtPath, O as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, S as unsetConfigOverride, T as setConfigValueAtPath, _ as parseDurationMs, a as writeConfigFile, b as resetConfigOverrides, c as TELEGRAM_COMMAND_NAME_PATTERN, f as isInboundPathAllowed, g as normalizeScpRemoteHost, h as resolveIMessageRemoteAttachmentRoots, i as resolveConfigSnapshotHash, k as resolveAgentMaxConcurrent, l as normalizeTelegramCommandName, m as resolveIMessageAttachmentRoots, n as loadConfig, o as validateConfigObjectWithPlugins, r as readConfigFileSnapshot, u as resolveTelegramCustomCommands, v as validateJsonSchemaValue, w as parseConfigPath, x as setConfigOverride, y as getConfigOverrides } from "./config-CM7_yRfD.js";
25
25
  import { c as normalizePluginsConfig, f as isPathInsideWithRealpath, i as safeStatSync, l as resolveEnableState, n as discoverSymiPlugins, p as isDangerousHostEnvVarName, r as isPathInside, s as applyTestPluginDefaults, t as loadPluginManifestRegistry, u as resolveMemorySlotDecision } from "./manifest-registry-B4bkFgdZ.js";
26
- import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-UfmVM0xR.js";
26
+ import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-B5CO2vB5.js";
27
27
  import { c as assertSandboxPath, d as resolveSandboxedMediaSource, f as applySkillEnvOverrides, h as parseFrontmatterBlock, i as resolveSkillsPromptForRun, l as resolveSandboxInputPath, n as buildWorkspaceSkillSnapshot, p as applySkillEnvOverridesFromSnapshot, r as loadWorkspaceSkillEntries, s as assertMediaNotDataUrl } from "./skills-BipI9f8B.js";
28
28
  import { t as redactSensitiveText } from "./redact-Bcq1snj9.js";
29
29
  import { n as formatErrorMessage, r as formatUncaughtError, t as extractErrorCode } from "./errors-C2nBLmDT.js";
@@ -32,8 +32,8 @@ import { n as resolveConversationLabel } from "./conversation-label-WOU117K9.js"
32
32
  import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-CM0XImQQ.js";
33
33
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-BBh3Gsrx.js";
34
34
  import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-CEdNTYf6.js";
35
- import { S as ensureSymiModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-DIWsXYcW.js";
36
- import { a as resolveOllamaBaseUrl, i as probeOllamaEmbeddingModels, n as resolveRetryConfig, o as resolveMemorySearchConfig, r as retryAsync } from "./manager-DW3SxcPr.js";
35
+ import { S as ensureSymiModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-Csu7WcLW.js";
36
+ import { a as resolveOllamaBaseUrl, i as probeOllamaEmbeddingModels, n as resolveRetryConfig, o as resolveMemorySearchConfig, r as retryAsync } from "./manager-BkkVjTO8.js";
37
37
  import { c as normalizeExtraMemoryPaths, f as runTasksWithConcurrency, s as listMemoryFiles } from "./internal-n_TWOMto.js";
38
38
  import { a as createActionGate, c as jsonResult, d as readStringArrayParam, f as readStringOrNumberParam, l as readNumberParam, n as missingTargetError, o as imageResult, p as readStringParam, r as unknownTargetError, s as imageResultFromFile, t as ambiguousTargetError, u as readReactionParams } from "./target-errors-DiPTkfjX.js";
39
39
  import { a as chunkText, c as resolveChunkMode, d as isSafeFenceBreak, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, o as chunkTextWithMode, r as chunkMarkdownText, t as chunkByNewline, u as findFenceSpanAt } from "./chunk-BF8FTuAr.js";
@@ -45,7 +45,7 @@ import { t as renderMarkdownWithMarkers } from "./render-2Ztmr_V0.js";
45
45
  import { a as listChatCommandsForConfig, c as normalizeCommandBody, d as shouldHandleTextCommands, f as isCommandFlagEnabled, g as resolveNativeSkillsEnabled, h as resolveNativeCommandsEnabled, i as listChatCommands, l as parseCommandArgs, m as isRestartEnabled, o as listNativeCommandSpecs, p as isNativeCommandsExplicitlyDisabled, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgMenu } from "./commands-registry-B3FzaXuK.js";
46
46
  import { c as getSkillsSnapshotVersion, d as createAsyncLock, f as readJsonFile$1, i as resolveSkillCommandInvocation, l as pruneExpiredPending, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, p as writeJsonAtomic, r as listSkillCommandsForWorkspace, s as ensureSkillsWatcher, t as listReservedChatSlashCommandNames, u as resolvePairingPaths } from "./skill-commands-_oLVTcAO.js";
47
47
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-D8AKttSx.js";
48
- import { _ as resolveMediaUnderstandingScope, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as normalizeMediaUnderstandingChatType, h as resolveTimeoutMs$1, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveConcurrency, n as createMediaAttachmentCache, o as runCapability, p as registerUnhandledRejectionHandler, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as CLI_OUTPUT_MAX_BUFFER, y as applyTemplate } from "./runner-DNEC58JI.js";
48
+ import { _ as resolveMediaUnderstandingScope, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as normalizeMediaUnderstandingChatType, h as resolveTimeoutMs$1, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveConcurrency, n as createMediaAttachmentCache, o as runCapability, p as registerUnhandledRejectionHandler, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as CLI_OUTPUT_MAX_BUFFER, y as applyTemplate } from "./runner-BbFKo1ne.js";
49
49
  import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-BEwD1hbR.js";
50
50
  import { a as normalizePollInput, i as convertMarkdownTables, t as getActiveWebListener } from "./active-listener-BvGU_5O3.js";
51
51
  import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-Bfw6KMf-.js";
@@ -70,7 +70,7 @@ import AjvPkg from "ajv";
70
70
  import process$1 from "node:process";
71
71
  import * as net$1 from "node:net";
72
72
  import { createServer } from "node:http";
73
- import { WebSocket as WebSocket$1 } from "ws";
73
+ import { WebSocket } from "ws";
74
74
  import { Buffer as Buffer$1 } from "node:buffer";
75
75
  import { createJiti } from "jiti";
76
76
  import { Type } from "@sinclair/typebox";
@@ -3657,7 +3657,7 @@ async function getMemorySearchManager(params) {
3657
3657
  const wrapper = new FallbackMemoryManager({
3658
3658
  primary,
3659
3659
  fallbackFactory: async () => {
3660
- const { MemoryIndexManager } = await import("./manager-DW3SxcPr.js").then((n) => n.t);
3660
+ const { MemoryIndexManager } = await import("./manager-BkkVjTO8.js").then((n) => n.t);
3661
3661
  return await MemoryIndexManager.get(params);
3662
3662
  }
3663
3663
  }, () => QMD_MANAGER_CACHE.delete(cacheKey));
@@ -3670,7 +3670,7 @@ async function getMemorySearchManager(params) {
3670
3670
  }
3671
3671
  }
3672
3672
  try {
3673
- const { MemoryIndexManager } = await import("./manager-DW3SxcPr.js").then((n) => n.t);
3673
+ const { MemoryIndexManager } = await import("./manager-BkkVjTO8.js").then((n) => n.t);
3674
3674
  return { manager: await MemoryIndexManager.get(params) };
3675
3675
  } catch (err) {
3676
3676
  return {
@@ -6063,7 +6063,7 @@ var GatewayClient = class {
6063
6063
  if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
6064
6064
  });
6065
6065
  }
6066
- this.ws = new WebSocket$1(url, wsOptions);
6066
+ this.ws = new WebSocket(url, wsOptions);
6067
6067
  this.ws.on("open", () => {
6068
6068
  if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
6069
6069
  const tlsError = this.validateTlsFingerprint();
@@ -6282,7 +6282,7 @@ var GatewayClient = class {
6282
6282
  return null;
6283
6283
  }
6284
6284
  async request(method, params, opts) {
6285
- if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("gateway not connected");
6285
+ if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
6286
6286
  const id = randomUUID();
6287
6287
  const frame = {
6288
6288
  type: "req",
@@ -7509,7 +7509,7 @@ async function routeReply(params) {
7509
7509
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
7510
7510
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
7511
7511
  try {
7512
- const { deliverOutboundPayloads } = await import("./deliver-BqXdac6W.js").then((n) => n.n);
7512
+ const { deliverOutboundPayloads } = await import("./deliver-CrwjsDwv.js").then((n) => n.n);
7513
7513
  return {
7514
7514
  ok: true,
7515
7515
  messageId: (await deliverOutboundPayloads({
@@ -39158,7 +39158,7 @@ async function deliverSessionMaintenanceWarning(params) {
39158
39158
  return;
39159
39159
  }
39160
39160
  try {
39161
- const { deliverOutboundPayloads } = await import("./deliver-BqXdac6W.js").then((n) => n.n);
39161
+ const { deliverOutboundPayloads } = await import("./deliver-CrwjsDwv.js").then((n) => n.n);
39162
39162
  await deliverOutboundPayloads({
39163
39163
  cfg: params.cfg,
39164
39164
  channel,
@@ -53019,7 +53019,7 @@ async function describeStickerImage(params) {
53019
53019
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
53020
53020
  try {
53021
53021
  const buffer = await fs$1.readFile(imagePath);
53022
- const { describeImageWithModel } = await import("./image-DIWsXYcW.js").then((n) => n.n);
53022
+ const { describeImageWithModel } = await import("./image-Csu7WcLW.js").then((n) => n.n);
53023
53023
  return (await describeImageWithModel({
53024
53024
  buffer,
53025
53025
  fileName: "sticker.webp",
@@ -64494,7 +64494,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
64494
64494
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
64495
64495
  let preflightTranscript;
64496
64496
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
64497
- const { transcribeFirstAudio } = await import("./audio-preflight-BaCdNfrk.js");
64497
+ const { transcribeFirstAudio } = await import("./audio-preflight-D7BVT-ls.js");
64498
64498
  preflightTranscript = await transcribeFirstAudio({
64499
64499
  ctx: {
64500
64500
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -66651,7 +66651,7 @@ function loadWebLoginQr() {
66651
66651
  return webLoginQrPromise;
66652
66652
  }
66653
66653
  function loadWebChannel() {
66654
- webChannelPromise ??= import("./web-7a-m_UxL.js");
66654
+ webChannelPromise ??= import("./web-BYXJn-Ps.js");
66655
66655
  return webChannelPromise;
66656
66656
  }
66657
66657
  function loadWhatsAppActions() {
@@ -11,7 +11,7 @@ import { d as getChannelDock, o as normalizeThinkLevel, y as normalizeHyphenSlug
11
11
  import { c as SafeOpenError, d as detectMime, f as extensionForMime, i as getImageMetadata, l as openFileWithinRoot, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-BLN6SguT.js";
12
12
  import { a as listDeliverableMessageChannels, o as normalizeMessageChannel } from "./message-channel-BGdf4mO-.js";
13
13
  import { _ as parseDurationMs, a as writeConfigFile, n as loadConfig, s as parseByteSize, t as createConfigIO } from "./config-CM7_yRfD.js";
14
- import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-UfmVM0xR.js";
14
+ import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-B5CO2vB5.js";
15
15
  import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-BipI9f8B.js";
16
16
  import { n as formatErrorMessage, t as extractErrorCode } from "./errors-C2nBLmDT.js";
17
17
  import { t as SsrFBlockedError } from "./ssrf-CQMi5Tnq.js";
@@ -937,7 +937,7 @@ function isModuleNotFoundError(err) {
937
937
  }
938
938
  async function loadPwAiModule(mode) {
939
939
  try {
940
- return await import("./pw-ai-nMkA-oDJ.js");
940
+ return await import("./pw-ai-CBgJf_RR.js");
941
941
  } catch (err) {
942
942
  if (mode === "soft") return null;
943
943
  if (isModuleNotFoundError(err)) return null;
@@ -3534,11 +3534,11 @@ function createProfileContext(opts, profile) {
3534
3534
  const userDataDir = resolveSymiUserDataDir(profile.name);
3535
3535
  const profileState = getProfileState();
3536
3536
  if (await isHttpReachable(300) && !profileState.running) try {
3537
- await (await import("./pw-ai-nMkA-oDJ.js")).closePlaywrightBrowserConnection();
3537
+ await (await import("./pw-ai-CBgJf_RR.js")).closePlaywrightBrowserConnection();
3538
3538
  } catch {}
3539
3539
  if (profileState.running) await stopRunningBrowser();
3540
3540
  try {
3541
- await (await import("./pw-ai-nMkA-oDJ.js")).closePlaywrightBrowserConnection();
3541
+ await (await import("./pw-ai-CBgJf_RR.js")).closePlaywrightBrowserConnection();
3542
3542
  } catch {}
3543
3543
  if (!fs.existsSync(userDataDir)) return {
3544
3544
  moved: false,
@@ -7,7 +7,7 @@ import "./github-copilot-token-BbsJ0Qbo.js";
7
7
  import { r as formatCliCommand } from "./env-Dubyv93k.js";
8
8
  import "./config-CM7_yRfD.js";
9
9
  import "./manifest-registry-B4bkFgdZ.js";
10
- import { _ as fetchJson, b as withCdpSocket, d as normalizeCdpWsUrl, g as appendCdpPath, h as withBrowserNavigationPolicy, m as assertBrowserNavigationAllowed, t as getChromeWebSocketUrl, u as formatAriaSnapshot, y as getHeadersWithAuth } from "./chrome-UfmVM0xR.js";
10
+ import { _ as fetchJson, b as withCdpSocket, d as normalizeCdpWsUrl, g as appendCdpPath, h as withBrowserNavigationPolicy, m as assertBrowserNavigationAllowed, t as getChromeWebSocketUrl, u as formatAriaSnapshot, y as getHeadersWithAuth } from "./chrome-B5CO2vB5.js";
11
11
  import "./redact-Bcq1snj9.js";
12
12
  import { n as formatErrorMessage } from "./errors-C2nBLmDT.js";
13
13
  import "./ssrf-CQMi5Tnq.js";
@@ -4,7 +4,7 @@ import { C as requireApiKey, W as resolveSymiAgentDir, m as normalizeGoogleModel
4
4
  import { t as normalizeChatType } from "./chat-type-BKe459rw.js";
5
5
  import { _ as kindFromMime, d as detectMime, h as isAudioFileName, p as getFileExtension } from "./image-ops-BLN6SguT.js";
6
6
  import { d as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, f as isInboundPathAllowed, m as resolveIMessageAttachmentRoots, n as loadConfig, p as mergeInboundPathRoots } from "./config-CM7_yRfD.js";
7
- import { S as ensureSymiModelsJson, t as describeImageWithModel } from "./image-DIWsXYcW.js";
7
+ import { S as ensureSymiModelsJson, t as describeImageWithModel } from "./image-Csu7WcLW.js";
8
8
  import { n as collectProviderApiKeysForExecution, r as executeWithApiKeyRotation, t as parseGeminiAuth } from "./gemini-auth-DlLAjm-e.js";
9
9
  import { n as fetchWithTimeout } from "./fetch-timeout-BVa_Fx_T.js";
10
10
  import { i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, r as MediaFetchError } from "./local-roots-DOhdoDO9.js";
@@ -7,30 +7,30 @@ import "./reply-prefix-GXv1Iroa.js";
7
7
  import "./github-copilot-token-BbsJ0Qbo.js";
8
8
  import "./env-Dubyv93k.js";
9
9
  import "./tokens-DuaBc9v7.js";
10
- import { p as runAgentTurn } from "./pi-embedded-BNch0U5F.js";
10
+ import { p as runAgentTurn } from "./pi-embedded-Dhp64z5l.js";
11
11
  import "./accounts-Cwv1OPM9.js";
12
12
  import "./plugins-DKxtNfL9.js";
13
13
  import "./bindings-Dzv5Zjq5.js";
14
14
  import "./replies-4QMRftPk.js";
15
- import "./deliver-BqXdac6W.js";
15
+ import "./deliver-CrwjsDwv.js";
16
16
  import "./diagnostic-N2nzKeLM.js";
17
17
  import "./diagnostic-session-state-DmrztgHU.js";
18
18
  import "./thinking-BPC3suuL.js";
19
19
  import "./image-ops-BLN6SguT.js";
20
20
  import "./pi-model-discovery-DZrt2PIy.js";
21
21
  import "./message-channel-BGdf4mO-.js";
22
- import "./pi-embedded-helpers-IkHl02JF.js";
22
+ import "./pi-embedded-helpers-840E4hop.js";
23
23
  import "./config-CM7_yRfD.js";
24
24
  import "./manifest-registry-B4bkFgdZ.js";
25
- import "./chrome-UfmVM0xR.js";
25
+ import "./chrome-B5CO2vB5.js";
26
26
  import "./skills-BipI9f8B.js";
27
27
  import "./redact-Bcq1snj9.js";
28
28
  import "./errors-C2nBLmDT.js";
29
29
  import "./ssrf-CQMi5Tnq.js";
30
30
  import "./paths-CM0XImQQ.js";
31
31
  import "./tool-images-CEdNTYf6.js";
32
- import "./image-DIWsXYcW.js";
33
- import "./manager-DW3SxcPr.js";
32
+ import "./image-Csu7WcLW.js";
33
+ import "./manager-BkkVjTO8.js";
34
34
  import "./gemini-auth-DlLAjm-e.js";
35
35
  import "./sqlite-CYC5VeY8.js";
36
36
  import "./target-errors-DiPTkfjX.js";
@@ -41,7 +41,7 @@ import "./ir-C-HBRBUO.js";
41
41
  import "./render-2Ztmr_V0.js";
42
42
  import "./commands-registry-B3FzaXuK.js";
43
43
  import "./skill-commands-_oLVTcAO.js";
44
- import "./runner-DNEC58JI.js";
44
+ import "./runner-BbFKo1ne.js";
45
45
  import "./active-listener-BvGU_5O3.js";
46
46
  import "./resolve-route-Bfw6KMf-.js";
47
47
  import "./pi-auth-json-BGgztpkV.js";
@@ -8,30 +8,30 @@ import { c as resolveIdentityNamePrefix, l as resolveMessagePrefix, t as createR
8
8
  import "./github-copilot-token-BbsJ0Qbo.js";
9
9
  import { r as formatCliCommand } from "./env-Dubyv93k.js";
10
10
  import "./tokens-DuaBc9v7.js";
11
- import { A as normalizeMentionText, C as createInboundDebouncer, D as hasControlCommand, E as resolveEnvelopeFormatOptions, O as shouldComputeCommandAuthorized, S as parseActivationCommand, T as formatInboundEnvelope, _ as formatDurationPrecise, a as DEFAULT_GROUP_HISTORY_LIMIT, b as enqueueSystemEvent, c as recordChannelActivity, f as createDedupeCache, g as toLocationContext, h as formatLocationText, i as sleepWithAbort, k as buildMentionRegexes, l as shouldAckReactionForWhatsApp, n as buildPairingReply, o as buildHistoryContextFromEntries, r as computeBackoff, s as recordPendingHistoryEntryIfEnabled, t as resolveMentionGating, u as dispatchReplyWithBufferedBlockDispatcher, v as readChannelAllowFromStore, w as resolveInboundDebounceMs, x as normalizeGroupActivation, y as upsertChannelPairingRequest } from "./pi-embedded-BNch0U5F.js";
11
+ import { A as normalizeMentionText, C as createInboundDebouncer, D as hasControlCommand, E as resolveEnvelopeFormatOptions, O as shouldComputeCommandAuthorized, S as parseActivationCommand, T as formatInboundEnvelope, _ as formatDurationPrecise, a as DEFAULT_GROUP_HISTORY_LIMIT, b as enqueueSystemEvent, c as recordChannelActivity, f as createDedupeCache, g as toLocationContext, h as formatLocationText, i as sleepWithAbort, k as buildMentionRegexes, l as shouldAckReactionForWhatsApp, n as buildPairingReply, o as buildHistoryContextFromEntries, r as computeBackoff, s as recordPendingHistoryEntryIfEnabled, t as resolveMentionGating, u as dispatchReplyWithBufferedBlockDispatcher, v as readChannelAllowFromStore, w as resolveInboundDebounceMs, x as normalizeGroupActivation, y as upsertChannelPairingRequest } from "./pi-embedded-Dhp64z5l.js";
12
12
  import { i as logWebSelfId, l as readWebSelfId, n as WA_WEB_AUTH_DIR, p as webAuthExists, r as getWebAuthAgeMs, s as pickWebChannel, t as resolveWhatsAppAccount } from "./accounts-Cwv1OPM9.js";
13
13
  import "./plugins-DKxtNfL9.js";
14
14
  import "./bindings-Dzv5Zjq5.js";
15
15
  import "./replies-4QMRftPk.js";
16
- import "./deliver-BqXdac6W.js";
16
+ import "./deliver-CrwjsDwv.js";
17
17
  import "./diagnostic-N2nzKeLM.js";
18
18
  import "./diagnostic-session-state-DmrztgHU.js";
19
19
  import { h as resolveChannelGroupRequireMention, m as resolveChannelGroupPolicy } from "./thinking-BPC3suuL.js";
20
20
  import "./image-ops-BLN6SguT.js";
21
21
  import "./pi-model-discovery-DZrt2PIy.js";
22
22
  import "./message-channel-BGdf4mO-.js";
23
- import { B as loadSessionStore, Dt as saveMediaBuffer, H as recordSessionMetaFromInbound, V as readSessionUpdatedAt, W as updateLastRoute, yt as resolveGroupSessionKey } from "./pi-embedded-helpers-IkHl02JF.js";
23
+ import { B as loadSessionStore, Dt as saveMediaBuffer, H as recordSessionMetaFromInbound, V as readSessionUpdatedAt, W as updateLastRoute, yt as resolveGroupSessionKey } from "./pi-embedded-helpers-840E4hop.js";
24
24
  import { n as loadConfig } from "./config-CM7_yRfD.js";
25
25
  import "./manifest-registry-B4bkFgdZ.js";
26
- import "./chrome-UfmVM0xR.js";
26
+ import "./chrome-B5CO2vB5.js";
27
27
  import "./skills-BipI9f8B.js";
28
28
  import "./redact-Bcq1snj9.js";
29
29
  import "./errors-C2nBLmDT.js";
30
30
  import "./ssrf-CQMi5Tnq.js";
31
31
  import { s as resolveStorePath } from "./paths-CM0XImQQ.js";
32
32
  import "./tool-images-CEdNTYf6.js";
33
- import "./image-DIWsXYcW.js";
34
- import "./manager-DW3SxcPr.js";
33
+ import "./image-Csu7WcLW.js";
34
+ import "./manager-BkkVjTO8.js";
35
35
  import "./gemini-auth-DlLAjm-e.js";
36
36
  import "./sqlite-CYC5VeY8.js";
37
37
  import "./target-errors-DiPTkfjX.js";
@@ -43,7 +43,7 @@ import "./render-2Ztmr_V0.js";
43
43
  import "./commands-registry-B3FzaXuK.js";
44
44
  import "./skill-commands-_oLVTcAO.js";
45
45
  import { t as finalizeInboundContext } from "./inbound-context-D8AKttSx.js";
46
- import { p as registerUnhandledRejectionHandler } from "./runner-DNEC58JI.js";
46
+ import { p as registerUnhandledRejectionHandler } from "./runner-BbFKo1ne.js";
47
47
  import { i as convertMarkdownTables, r as setActiveWebListener } from "./active-listener-BvGU_5O3.js";
48
48
  import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-Bfw6KMf-.js";
49
49
  import "./pi-auth-json-BGgztpkV.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@symerian/symi",
3
- "version": "3.0.20",
3
+ "version": "3.0.21",
4
4
  "description": "Multi-channel AI gateway with extensible messaging integrations",
5
5
  "keywords": [],
6
6
  "homepage": "https://github.com/jaysteelmind/symi#readme",
@@ -1,17 +0,0 @@
1
- import type { SymiPluginApi } from "symi/plugin-sdk";
2
- import { emptyPluginConfigSchema } from "symi/plugin-sdk";
3
- import { imessagePlugin } from "./src/channel.js";
4
- import { setIMessageRuntime } from "./src/runtime.js";
5
-
6
- const plugin = {
7
- id: "imessage",
8
- name: "iMessage",
9
- description: "iMessage channel plugin",
10
- configSchema: emptyPluginConfigSchema(),
11
- register(api: SymiPluginApi) {
12
- setIMessageRuntime(api.runtime);
13
- api.registerChannel({ plugin: imessagePlugin });
14
- },
15
- };
16
-
17
- export default plugin;
@@ -1,21 +0,0 @@
1
- #!/bin/sh
2
- basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
-
4
- case `uname` in
5
- *CYGWIN*|*MINGW*|*MSYS*)
6
- if command -v cygpath > /dev/null 2>&1; then
7
- basedir=`cygpath -w "$basedir"`
8
- fi
9
- ;;
10
- esac
11
-
12
- if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/home/symi/projects/symi/node_modules:/home/symi/projects/node_modules:/home/symi/node_modules:/home/node_modules:/node_modules:/home/symi/projects/symi/node_modules/.pnpm/node_modules"
14
- else
15
- export NODE_PATH="/home/symi/projects/symi/node_modules:/home/symi/projects/node_modules:/home/symi/node_modules:/home/node_modules:/node_modules:/home/symi/projects/symi/node_modules/.pnpm/node_modules:$NODE_PATH"
16
- fi
17
- if [ -x "$basedir/node" ]; then
18
- exec "$basedir/node" "$basedir/../@symerian/symi/symi.mjs" "$@"
19
- else
20
- exec node "$basedir/../@symerian/symi/symi.mjs" "$@"
21
- fi
@@ -1,15 +0,0 @@
1
- {
2
- "name": "@symi/imessage",
3
- "version": "3.0.9",
4
- "private": true,
5
- "description": "Symi iMessage channel plugin",
6
- "type": "module",
7
- "devDependencies": {
8
- "@symerian/symi": "workspace:*"
9
- },
10
- "symi": {
11
- "extensions": [
12
- "./index.ts"
13
- ]
14
- }
15
- }
@@ -1,66 +0,0 @@
1
- import { describe, expect, it, vi } from "vitest";
2
- import { imessagePlugin } from "./channel.js";
3
-
4
- describe("imessagePlugin outbound", () => {
5
- const cfg = {
6
- channels: {
7
- imessage: {
8
- mediaMaxMb: 3,
9
- },
10
- },
11
- };
12
-
13
- it("forwards replyToId on direct sendText adapter path", async () => {
14
- const sendIMessage = vi.fn().mockResolvedValue({ messageId: "m-text" });
15
- const sendText = imessagePlugin.outbound?.sendText;
16
- expect(sendText).toBeDefined();
17
-
18
- const result = await sendText!({
19
- cfg,
20
- to: "chat_id:12",
21
- text: "hello",
22
- accountId: "default",
23
- replyToId: "reply-1",
24
- deps: { sendIMessage },
25
- });
26
-
27
- expect(sendIMessage).toHaveBeenCalledWith(
28
- "chat_id:12",
29
- "hello",
30
- expect.objectContaining({
31
- accountId: "default",
32
- replyToId: "reply-1",
33
- maxBytes: 3 * 1024 * 1024,
34
- }),
35
- );
36
- expect(result).toEqual({ channel: "imessage", messageId: "m-text" });
37
- });
38
-
39
- it("forwards replyToId on direct sendMedia adapter path", async () => {
40
- const sendIMessage = vi.fn().mockResolvedValue({ messageId: "m-media" });
41
- const sendMedia = imessagePlugin.outbound?.sendMedia;
42
- expect(sendMedia).toBeDefined();
43
-
44
- const result = await sendMedia!({
45
- cfg,
46
- to: "chat_id:77",
47
- text: "caption",
48
- mediaUrl: "https://example.com/pic.png",
49
- accountId: "acct-1",
50
- replyToId: "reply-2",
51
- deps: { sendIMessage },
52
- });
53
-
54
- expect(sendIMessage).toHaveBeenCalledWith(
55
- "chat_id:77",
56
- "caption",
57
- expect.objectContaining({
58
- mediaUrl: "https://example.com/pic.png",
59
- accountId: "acct-1",
60
- replyToId: "reply-2",
61
- maxBytes: 3 * 1024 * 1024,
62
- }),
63
- );
64
- expect(result).toEqual({ channel: "imessage", messageId: "m-media" });
65
- });
66
- });