@symerian/symi 2.4.0 → 2.4.2
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.
- package/dist/{agents-CI3xxYc_.js → agents-BrpbYYTb.js} +4 -4
- package/dist/{agents.config-DCE3RGr9.js → agents.config-Bf8u_0ts.js} +1 -1
- package/dist/{agents.config-DTUAM1AG.js → agents.config-j4SWyB6K.js} +1 -1
- package/dist/{audio-preflight-C40mKAp7.js → audio-preflight-CPBOQV4I.js} +4 -4
- package/dist/{auth-choice-IiIysHGO.js → auth-choice-BYB9fJiu.js} +1 -1
- package/dist/{auth-choice-DuQwRfJc.js → auth-choice-DlrjQI-v.js} +1 -1
- package/dist/{banner-xhDZu_ZJ.js → banner-DRJJmkv1.js} +1 -1
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +1 -1
- package/dist/bundled/session-memory/handler.js +1 -1
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-options-D3gGVwBd.js → channel-options-BQz0F4El.js} +1 -1
- package/dist/{channel-options-Dvxd7eJY.js → channel-options-CxSIp3x-.js} +1 -1
- package/dist/{channel-web-a5tX1YI3.js → channel-web-BY4lhNxW.js} +1 -1
- package/dist/{channels-cli-C9wBYmDe.js → channels-cli--rkhLJvR.js} +4 -4
- package/dist/{channels-cli-BLUkl5Li.js → channels-cli-B5Nj_nHr.js} +4 -4
- package/dist/{chrome-CDJYxX5a.js → chrome-D2SKJnR7.js} +7 -7
- package/dist/{cli-Cw45F0yJ.js → cli-CATf6JAq.js} +1 -1
- package/dist/{cli-CaEE46xi.js → cli-Ds6poYQ6.js} +1 -1
- package/dist/{command-registry-ea9SD1eA.js → command-registry-CsDAPQfS.js} +9 -9
- package/dist/{completion-cli-CMJmUQbI.js → completion-cli-B_f5PMBc.js} +1 -1
- package/dist/{completion-cli-DVkiEAEA.js → completion-cli-CSdjFWHy.js} +2 -2
- package/dist/{config-cli-B2d28_hb.js → config-cli-B_KCvdli.js} +1 -1
- package/dist/{config-cli-VIg0PSyq.js → config-cli-C_GarUko.js} +1 -1
- package/dist/{configure-C_TVBt76.js → configure-CM-z8YCS.js} +3 -3
- package/dist/{configure-D-3FiJbK.js → configure-vfmJApU8.js} +3 -3
- package/dist/{deliver-BH0l3UKW.js → deliver-C-37cZUe.js} +1 -1
- package/dist/{doctor-completion-CJHJYIwQ.js → doctor-completion-BWJvfjTC.js} +1 -1
- package/dist/{doctor-completion-DeRX6gkI.js → doctor-completion-llX6EnGy.js} +1 -1
- package/dist/entry.js +1 -1
- package/dist/extensionAPI.js +6 -6
- package/dist/{gateway-cli-BDDHBfYP.js → gateway-cli-70k2-I4K.js} +20 -16
- package/dist/{gateway-cli-DiDJ6Z2d.js → gateway-cli-BApdH1bD.js} +20 -16
- package/dist/{glass-ui-ws-Bj1IuJXt.js → glass-ui-ws-Be_AOhp7.js} +7 -7
- package/dist/{glass-ui-ws-rGIAkViC.js → glass-ui-ws-Z_wtGa_A.js} +7 -7
- package/dist/{health-CypF_2ZD.js → health-BBGgp_dC.js} +1 -1
- package/dist/{health-Bst5HnLF.js → health-BmaWws9G.js} +1 -1
- package/dist/{hooks-cli-CfsqqxPX.js → hooks-cli-C5eV9sxP.js} +2 -2
- package/dist/{hooks-cli-CDMcqTy4.js → hooks-cli-W_aoP9nb.js} +2 -2
- package/dist/{image-CHzdaNJ4.js → image-DcpMiprB.js} +1 -1
- package/dist/index.js +6 -6
- package/dist/llm-slug-generator.js +1 -1
- package/dist/{models-ZEOGlFx7.js → models-COaQWNz5.js} +2 -2
- package/dist/{models-cli-BM1QyeXr.js → models-cli-DH17yK8M.js} +3 -3
- package/dist/{models-cli-BwOQhZ_c.js → models-cli-DeG1qheS.js} +2 -2
- package/dist/{onboard-CU-pntZD.js → onboard-1wGdR0wt.js} +2 -2
- package/dist/{onboard-channels-g5cvwJpx.js → onboard-channels-BCUkNB26.js} +1 -1
- package/dist/{onboard-channels-BOBxxhHX.js → onboard-channels-D93AAHMd.js} +1 -1
- package/dist/{onboard-DQ34giB5.js → onboard-nQYq_dsr.js} +2 -2
- package/dist/{onboarding-DWs6tHZ9.js → onboarding-Peg7PNOz.js} +3 -3
- package/dist/{onboarding-CXWUjdM5.js → onboarding-gQRA57l_.js} +3 -3
- package/dist/{onboarding.finalize-CAYf88mf.js → onboarding.finalize-C4DSBMrV.js} +6 -6
- package/dist/{onboarding.finalize-vupGASMK.js → onboarding.finalize-D26o-hBA.js} +5 -5
- package/dist/{pi-embedded-DwbQz0MC.js → pi-embedded-CfxhTbYF.js} +108 -16
- package/dist/{pi-embedded-helpers-lgx_U5KS.js → pi-embedded-helpers-B8kqLWns.js} +4 -4
- package/dist/{pi-embedded-CJsSOG2j.js → pi-embedded-k69DSy1Y.js} +94 -2
- package/dist/{plugin-registry-CZeHSx_c.js → plugin-registry-C0iHnZ7j.js} +1 -1
- package/dist/{plugin-registry-BDpdOTei.js → plugin-registry-D_BAH1V5.js} +1 -1
- package/dist/plugin-sdk/agents/pi-embedded-runner/extra-params.d.ts +6 -0
- package/dist/plugin-sdk/agents/stream-monitor.d.ts +62 -0
- package/dist/plugin-sdk/{channel-web-uUypcT9Q.js → channel-web-ilY3YUmF.js} +1 -1
- package/dist/plugin-sdk/index.js +2 -2
- package/dist/plugin-sdk/{reply-DTKTuCrn.js → reply-CSgeVqcV.js} +94 -2
- package/dist/plugin-sdk/{web-Dh6Youzv.js → web-BVg5EjiY.js} +2 -2
- package/dist/{plugins-cli-CCQ3skeQ.js → plugins-cli-BhOXY_Ay.js} +2 -2
- package/dist/{plugins-cli-D_RzeRoE.js → plugins-cli-LqQNHF1I.js} +2 -2
- package/dist/{program-Cl9i8ubQ.js → program-Bx47hl_J.js} +7 -7
- package/dist/{program-context-BbmYGW-V.js → program-context-JFmxYLfK.js} +17 -17
- package/dist/{prompt-select-styled-BfuyvChh.js → prompt-select-styled--d3H0JCo.js} +4 -4
- package/dist/{prompt-select-styled-BN0T6GxF.js → prompt-select-styled-BeJhp9PS.js} +4 -4
- package/dist/{provider-auth-helpers-CkmLFHXL.js → provider-auth-helpers-BzczCfh8.js} +1 -1
- package/dist/{provider-auth-helpers-CuT5EHza.js → provider-auth-helpers-Ds_HwlgY.js} +1 -1
- package/dist/{push-apns-DeJt9kAO.js → push-apns-CT8-VcK5.js} +1 -1
- package/dist/{push-apns-CFkFVwEz.js → push-apns-DvcqkHld.js} +1 -1
- package/dist/{pw-ai-De-KR9_s.js → pw-ai-1htA-NnS.js} +1 -1
- package/dist/{register.agent-BQm4YmZp.js → register.agent-DMvHFw16.js} +6 -6
- package/dist/{register.agent-BygseJ7t.js → register.agent-yoXoJ_5O.js} +5 -5
- package/dist/{register.configure-Cj95vB2U.js → register.configure-B8UDTEcS.js} +6 -6
- package/dist/{register.configure-C2fhjZze.js → register.configure-BqrNBkwZ.js} +6 -6
- package/dist/{register.maintenance-CClfXq5e.js → register.maintenance-CYhp47Hs.js} +8 -8
- package/dist/{register.maintenance-K1x3E7OS.js → register.maintenance-CvaHYkoX.js} +7 -7
- package/dist/{register.message-BSr-kUvJ.js → register.message-BnLBwUw9.js} +2 -2
- package/dist/{register.message-CSRzBl-c.js → register.message-CgtrjEFw.js} +2 -2
- package/dist/{register.onboard-Bd6wPydW.js → register.onboard-CoySBEdQ.js} +4 -4
- package/dist/{register.onboard-TsU21RR7.js → register.onboard-mCscJN7t.js} +4 -4
- package/dist/{register.setup-DK-zsne2.js → register.setup-BmE-pwMT.js} +4 -4
- package/dist/{register.setup-C9gu0W5l.js → register.setup-CzrsIQMG.js} +4 -4
- package/dist/{register.status-health-sessions-DN5Ui3V0.js → register.status-health-sessions-CP7JWQHw.js} +3 -3
- package/dist/{register.status-health-sessions-rZsuoqtr.js → register.status-health-sessions-DhTfQ530.js} +3 -3
- package/dist/{register.subclis-DnzHFtLz.js → register.subclis-wsgQ6wk8.js} +9 -9
- package/dist/{reply-Ca3slrA3.js → reply-DkwaBRX-.js} +94 -2
- package/dist/{run-main-DlHh5iOO.js → run-main-mKcFqx7h.js} +14 -14
- package/dist/{runner-DUBExAb5.js → runner-BcQ0sF9T.js} +1 -1
- package/dist/{server-methods-BYOkyf-q.js → server-methods-CbeCo-6O.js} +7 -7
- package/dist/{server-methods-b_Qod4tt.js → server-methods-EQ0JkHOg.js} +7 -7
- package/dist/{server-node-events-60nWpTh1.js → server-node-events-C1FDqJb9.js} +2 -2
- package/dist/{server-node-events-oU4Amei7.js → server-node-events-CBHpc_25.js} +2 -2
- package/dist/{status-BXW5l4sd.js → status-B1r3Wp0-.js} +2 -2
- package/dist/{status-D3-lP2_9.js → status-Cksz7z4T.js} +1 -1
- package/dist/{status-BxbbINLV.js → status-CnogoaI_.js} +2 -2
- package/dist/{status-kdz9P3tw.js → status-jVJSC_Ga.js} +1 -1
- package/dist/{subagent-registry-CbTbJKLs.js → subagent-registry-Jwg44JMf.js} +94 -2
- package/dist/{update-cli-Cy0gdWRf.js → update-cli-BEBDpJF4.js} +8 -8
- package/dist/{update-cli-B5TI650v.js → update-cli-C22V-tFW.js} +7 -7
- package/dist/{update-runner-Bacq0oLK.js → update-runner-BQg__DB5.js} +1 -1
- package/dist/{update-runner-B0NdgPvD.js → update-runner-le1Hcqx4.js} +1 -1
- package/dist/{web-DmED3zDP.js → web-BSs2eYJa.js} +2 -2
- package/dist/{web-D-oCzJTU.js → web-DajtZMaX.js} +1 -1
- package/dist/{web-DWNtg4iV.js → web-DolrvXij.js} +6 -6
- package/dist/{web-QVwKg99Q.js → web-kIIXN8hK.js} +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "./paths-Cqn-zk3M.js";
|
|
2
2
|
import { h as pathExists, y as resolveUserPath } from "./utils-B-0b9bGM.js";
|
|
3
3
|
import "./thinking-EAliFiVK.js";
|
|
4
|
-
import "./reply-
|
|
4
|
+
import "./reply-DkwaBRX-.js";
|
|
5
5
|
import "./registry-Cja8eT7G.js";
|
|
6
6
|
import { p as restoreTerminalState } from "./subsystem-D9vIQve0.js";
|
|
7
7
|
import "./exec-CWkblSrI.js";
|
|
@@ -103,16 +103,16 @@ import "./control-service-Bz7rxLWq.js";
|
|
|
103
103
|
import "./stagger-BUClb97_.js";
|
|
104
104
|
import "./channel-selection-DuWs0Aak.js";
|
|
105
105
|
import "./runtime-guard-B37eizu-.js";
|
|
106
|
-
import "./program-context-
|
|
106
|
+
import "./program-context-JFmxYLfK.js";
|
|
107
107
|
import "./note-DeHoW7xO.js";
|
|
108
|
-
import { r as installCompletion } from "./completion-cli-
|
|
108
|
+
import { r as installCompletion } from "./completion-cli-B_f5PMBc.js";
|
|
109
109
|
import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-2mwX-jqj.js";
|
|
110
110
|
import { r as isSystemdUserServiceAvailable } from "./systemd-riq8uNJQ.js";
|
|
111
111
|
import { t as resolveGatewayService } from "./service-Cl74hx8J.js";
|
|
112
|
-
import { r as healthCommand } from "./health-
|
|
112
|
+
import { r as healthCommand } from "./health-BBGgp_dC.js";
|
|
113
113
|
import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-Z947tKLt.js";
|
|
114
114
|
import { t as formatHealthCheckFailure } from "./health-format-DSwnXZPU.js";
|
|
115
|
-
import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-
|
|
115
|
+
import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-BWJvfjTC.js";
|
|
116
116
|
import { t as runTui } from "./tui-CriznorL.js";
|
|
117
117
|
import os from "node:os";
|
|
118
118
|
import path from "node:path";
|
|
@@ -14,7 +14,7 @@ import { a as logoutWeb, i as logWebSelfId, l as readWebSelfId, p as webAuthExis
|
|
|
14
14
|
import { t as normalizeChatType } from "./chat-type-DFDuk3FY.js";
|
|
15
15
|
import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i as createSlackWebClient, l as parseSlackTarget, o as parseSlackBlocksInput, s as validateSlackBlocksArray, t as sendMessageSlack, u as resolveSlackChannelId } from "./send-D-hWrHoH.js";
|
|
16
16
|
import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as resolveDiscordSystemLocation, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordShouldRequireMention, a as removeReactionDiscord, at as resolveDiscordChannelId, b as sendWebhookMessageDiscord, bt as formatDiscordReactionEmoji, c as formatDiscordComponentEventText, ct as allowListMatches$1, d as parseDiscordModalCustomId, dt as normalizeDiscordSlug, et as hasAnyGuildPermissionDiscord, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordAllowListMatch, g as sendMessageDiscord, gt as resolveDiscordOwnerAllowFrom, h as resolveDiscordModalEntry, ht as resolveDiscordMemberAccessState, i as removeOwnReactionsDiscord, it as parseDiscordTarget, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordComponentEntry, mt as resolveDiscordGuildEntry, n as fetchReactionsDiscord, nt as createDiscordClient, o as sendDiscordComponentMessage, ot as listDiscordDirectoryGroupsLive, p as readDiscordComponentSpec, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as reactMessageDiscord, rt as createDiscordRestClient, s as createDiscordFormModal, st as listDiscordDirectoryPeersLive, tt as chunkDiscordTextWithMode, u as parseDiscordComponentCustomIdForCarbon, ut as normalizeDiscordAllowList, v as sendStickerDiscord, vt as resolveGroupDmAllow, w as fetchMessageDiscord, wt as fetchDiscord, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-C1IYd3g7.js";
|
|
17
|
-
import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-
|
|
17
|
+
import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-C-37cZUe.js";
|
|
18
18
|
import { a as logMessageProcessed, c as logWebhookError, d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, i as logLaneEnqueue, l as logWebhookProcessed, m as isDiagnosticsEnabled, o as logMessageQueued, p as emitDiagnosticEvent, r as logLaneDequeue, s as logSessionStateChange, t as diag, u as logWebhookReceived } from "./diagnostic-D0xmLpej.js";
|
|
19
19
|
import { r as getDiagnosticSessionState } from "./diagnostic-session-state-C1vRJs5w.js";
|
|
20
20
|
import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-8zZqL37v.js";
|
|
@@ -22,10 +22,10 @@ import { $ as isVoiceCompatibleAudio, A as extractTelegramLocation, B as normali
|
|
|
22
22
|
import { d as detectMime, f as extensionForMime, g as isGifMedia, h as isAudioFileName, i as getImageMetadata, m as imageMimeFromFormat, s as resizeToJpeg, x as mediaKindFromMime, y as MAX_IMAGE_BYTES } from "./image-ops-ByaQt43P.js";
|
|
23
23
|
import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-j5tVLINv.js";
|
|
24
24
|
import { a as isMarkdownCapableMessageChannel, c as resolveGatewayMessageChannel, d as GATEWAY_CLIENT_MODES, f as GATEWAY_CLIENT_NAMES, i as isInternalMessageChannel, l as resolveMessageChannel, n as isDeliverableMessageChannel, o as listDeliverableMessageChannels, r as isGatewayMessageChannel, s as normalizeMessageChannel, t as INTERNAL_MESSAGE_CHANNEL, u as GATEWAY_CLIENT_IDS } from "./message-channel-BQINJQIT.js";
|
|
25
|
-
import { $ as mergeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as updateSessionStoreEntry, Jt as ensureSessionHeader, K as updateLastRoute, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as deliveryContextKey, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as resolveCacheTtlMs$1, Xt as resolveBootstrapTotalMaxChars, Y as isCacheEnabled, Yt as resolveBootstrapMaxChars, Z as deliveryContextFromSession, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as DEFAULT_RESET_TRIGGERS, a as isMessagingToolDuplicateNormalized, at as countToolResults, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as applyInputProvenanceToUserMessage, d as isAntigravityClaude, dt as resolveSessionKey, et as normalizeDeliveryContext, f as isGoogleModelApi, ft as evaluateSessionFreshness, g as formatBillingErrorMessage, gt as resolveThreadFlag, h as formatAssistantErrorText, ht as resolveSessionResetType, it as capArrayByJsonBytes, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as hasInterSessionUserProvenance, m as classifyFailoverReason, mt as resolveSessionResetPolicy, n as validateGeminiTurns, nt as normalizeAccountId$3, o as normalizeTextForComparison, ot as extractToolCallNames, p as BILLING_ERROR_USER_MESSAGE, pt as resolveChannelResetConfig, q as updateSessionStore, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as archiveSessionTranscripts, s as sanitizeSessionMessagesImages, st as INPUT_PROVENANCE_KIND_VALUES, t as validateAnthropicTurns, tt as normalizeSessionDeliveryFields, u as downgradeOpenAIReasoningBlocks, ut as normalizeInputProvenance, v as getApiErrorPayloadFingerprint, vt as resolveFreshSessionTotalTokens, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, yt as canonicalizeMainSessionAlias, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-
|
|
25
|
+
import { $ as mergeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as updateSessionStoreEntry, Jt as ensureSessionHeader, K as updateLastRoute, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as deliveryContextKey, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as resolveCacheTtlMs$1, Xt as resolveBootstrapTotalMaxChars, Y as isCacheEnabled, Yt as resolveBootstrapMaxChars, Z as deliveryContextFromSession, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as DEFAULT_RESET_TRIGGERS, a as isMessagingToolDuplicateNormalized, at as countToolResults, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as applyInputProvenanceToUserMessage, d as isAntigravityClaude, dt as resolveSessionKey, et as normalizeDeliveryContext, f as isGoogleModelApi, ft as evaluateSessionFreshness, g as formatBillingErrorMessage, gt as resolveThreadFlag, h as formatAssistantErrorText, ht as resolveSessionResetType, it as capArrayByJsonBytes, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as hasInterSessionUserProvenance, m as classifyFailoverReason, mt as resolveSessionResetPolicy, n as validateGeminiTurns, nt as normalizeAccountId$3, o as normalizeTextForComparison, ot as extractToolCallNames, p as BILLING_ERROR_USER_MESSAGE, pt as resolveChannelResetConfig, q as updateSessionStore, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as archiveSessionTranscripts, s as sanitizeSessionMessagesImages, st as INPUT_PROVENANCE_KIND_VALUES, t as validateAnthropicTurns, tt as normalizeSessionDeliveryFields, u as downgradeOpenAIReasoningBlocks, ut as normalizeInputProvenance, v as getApiErrorPayloadFingerprint, vt as resolveFreshSessionTotalTokens, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, yt as canonicalizeMainSessionAlias, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-B8kqLWns.js";
|
|
26
26
|
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-BmV60pPT.js";
|
|
27
27
|
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-D-mTF1cj.js";
|
|
28
|
-
import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-
|
|
28
|
+
import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-D2SKJnR7.js";
|
|
29
29
|
import { c as assertSandboxPath, d as resolveSandboxedMediaSource, f as applySkillEnvOverrides, i as resolveSkillsPromptForRun, l as resolveSandboxInputPath, n as buildWorkspaceSkillSnapshot, p as applySkillEnvOverridesFromSnapshot, r as loadWorkspaceSkillEntries, s as assertMediaNotDataUrl } from "./skills-BNpGMnp-.js";
|
|
30
30
|
import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-CPfngF0S.js";
|
|
31
31
|
import { i as isBlockedHostnameOrIp, o as normalizeHostname, t as SsrFBlockedError } from "./ssrf-CxfFyMRZ.js";
|
|
@@ -36,7 +36,7 @@ import { t as resolveIMessageAccount } from "./accounts-DImOt9jX.js";
|
|
|
36
36
|
import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-DkMamAQ-.js";
|
|
37
37
|
import { t as emitSessionTranscriptUpdate } from "./transcript-events-C8Tqw4td.js";
|
|
38
38
|
import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-ChC2CXaN.js";
|
|
39
|
-
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-
|
|
39
|
+
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-DcpMiprB.js";
|
|
40
40
|
import { i as resolveMemorySearchConfig, n as probeOllamaEmbeddingModels, r as resolveOllamaBaseUrl } from "./manager-jpn5vRTY.js";
|
|
41
41
|
import { d as listMemoryFiles, f as normalizeExtraMemoryPaths, g as runTasksWithConcurrency } from "./sqlite-BNh23mUR.js";
|
|
42
42
|
import { n as retryAsync } from "./retry-QGp0jvVi.js";
|
|
@@ -49,7 +49,7 @@ import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-F0moAwIl.js";
|
|
|
49
49
|
import { _ as resolveNativeCommandsEnabled, a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, g as isRestartEnabled, h as isNativeCommandsExplicitlyDisabled, i as listChatCommands, l as parseCommandArgs, m as isCommandFlagEnabled, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices, v as resolveNativeSkillsEnabled } from "./commands-registry-C_aYUwpl.js";
|
|
50
50
|
import { c as getSkillsSnapshotVersion, d as createAsyncLock, f as readJsonFile, 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-DklY7Cj7.js";
|
|
51
51
|
import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-QOi5vzUt.js";
|
|
52
|
-
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-
|
|
52
|
+
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-BcQ0sF9T.js";
|
|
53
53
|
import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-DtLn7YU3.js";
|
|
54
54
|
import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-DtXYsHEc.js";
|
|
55
55
|
import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-D9q-fIPB.js";
|
|
@@ -79,7 +79,7 @@ import { EdgeTTS } from "node-edge-tts";
|
|
|
79
79
|
import AjvPkg from "ajv";
|
|
80
80
|
import { createServer } from "node:http";
|
|
81
81
|
import { ProxyAgent, fetch as fetch$1 } from "undici";
|
|
82
|
-
import WebSocket
|
|
82
|
+
import WebSocket, { WebSocket as WebSocket$1 } from "ws";
|
|
83
83
|
import { Buffer as Buffer$1 } from "node:buffer";
|
|
84
84
|
import { createJiti } from "jiti";
|
|
85
85
|
import { Type } from "@sinclair/typebox";
|
|
@@ -5714,7 +5714,7 @@ var GatewayClient = class {
|
|
|
5714
5714
|
if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
|
|
5715
5715
|
});
|
|
5716
5716
|
}
|
|
5717
|
-
this.ws = new WebSocket(url, wsOptions);
|
|
5717
|
+
this.ws = new WebSocket$1(url, wsOptions);
|
|
5718
5718
|
this.ws.on("open", () => {
|
|
5719
5719
|
if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
|
|
5720
5720
|
const tlsError = this.validateTlsFingerprint();
|
|
@@ -5933,7 +5933,7 @@ var GatewayClient = class {
|
|
|
5933
5933
|
return null;
|
|
5934
5934
|
}
|
|
5935
5935
|
async request(method, params, opts) {
|
|
5936
|
-
if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
|
|
5936
|
+
if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("gateway not connected");
|
|
5937
5937
|
const id = randomUUID();
|
|
5938
5938
|
const frame = {
|
|
5939
5939
|
type: "req",
|
|
@@ -7199,7 +7199,7 @@ async function routeReply(params) {
|
|
|
7199
7199
|
const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
|
|
7200
7200
|
const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
|
|
7201
7201
|
try {
|
|
7202
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
7202
|
+
const { deliverOutboundPayloads } = await import("./deliver-C-37cZUe.js").then((n) => n.n);
|
|
7203
7203
|
return {
|
|
7204
7204
|
ok: true,
|
|
7205
7205
|
messageId: (await deliverOutboundPayloads({
|
|
@@ -41673,7 +41673,7 @@ async function deliverSessionMaintenanceWarning(params) {
|
|
|
41673
41673
|
return;
|
|
41674
41674
|
}
|
|
41675
41675
|
try {
|
|
41676
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
41676
|
+
const { deliverOutboundPayloads } = await import("./deliver-C-37cZUe.js").then((n) => n.n);
|
|
41677
41677
|
await deliverOutboundPayloads({
|
|
41678
41678
|
cfg: params.cfg,
|
|
41679
41679
|
channel,
|
|
@@ -45119,7 +45119,7 @@ async function describeStickerImage(params) {
|
|
|
45119
45119
|
logVerbose(`telegram: describing sticker with ${provider}/${model}`);
|
|
45120
45120
|
try {
|
|
45121
45121
|
const buffer = await fs$1.readFile(imagePath);
|
|
45122
|
-
const { describeImageWithModel } = await import("./image-
|
|
45122
|
+
const { describeImageWithModel } = await import("./image-DcpMiprB.js").then((n) => n.n);
|
|
45123
45123
|
return (await describeImageWithModel({
|
|
45124
45124
|
buffer,
|
|
45125
45125
|
fileName: "sticker.webp",
|
|
@@ -47781,7 +47781,7 @@ async function preflightDiscordMessage(params) {
|
|
|
47781
47781
|
let preflightTranscript;
|
|
47782
47782
|
const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
|
|
47783
47783
|
if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
|
|
47784
|
-
const { transcribeFirstAudio } = await import("./audio-preflight-
|
|
47784
|
+
const { transcribeFirstAudio } = await import("./audio-preflight-CPBOQV4I.js");
|
|
47785
47785
|
const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
|
|
47786
47786
|
if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
|
|
47787
47787
|
ctx: {
|
|
@@ -51787,7 +51787,7 @@ function isVoiceChannelType(type) {
|
|
|
51787
51787
|
function createDefaultDeps() {
|
|
51788
51788
|
return {
|
|
51789
51789
|
sendMessageWhatsApp: async (...args) => {
|
|
51790
|
-
const { sendMessageWhatsApp } = await import("./web-
|
|
51790
|
+
const { sendMessageWhatsApp } = await import("./web-DolrvXij.js");
|
|
51791
51791
|
return await sendMessageWhatsApp(...args);
|
|
51792
51792
|
},
|
|
51793
51793
|
sendMessageTelegram: async (...args) => {
|
|
@@ -54694,7 +54694,7 @@ function createDiscordGatewayPlugin(params) {
|
|
|
54694
54694
|
super(options);
|
|
54695
54695
|
}
|
|
54696
54696
|
createWebSocket(url) {
|
|
54697
|
-
return new WebSocket
|
|
54697
|
+
return new WebSocket(url, { agent });
|
|
54698
54698
|
}
|
|
54699
54699
|
}
|
|
54700
54700
|
return new ProxyGatewayPlugin();
|
|
@@ -64912,7 +64912,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
|
|
|
64912
64912
|
const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
|
|
64913
64913
|
let preflightTranscript;
|
|
64914
64914
|
if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
|
|
64915
|
-
const { transcribeFirstAudio } = await import("./audio-preflight-
|
|
64915
|
+
const { transcribeFirstAudio } = await import("./audio-preflight-CPBOQV4I.js");
|
|
64916
64916
|
preflightTranscript = await transcribeFirstAudio({
|
|
64917
64917
|
ctx: {
|
|
64918
64918
|
MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
|
|
@@ -67069,7 +67069,7 @@ function loadWebLoginQr() {
|
|
|
67069
67069
|
return webLoginQrPromise;
|
|
67070
67070
|
}
|
|
67071
67071
|
function loadWebChannel() {
|
|
67072
|
-
webChannelPromise ??= import("./web-
|
|
67072
|
+
webChannelPromise ??= import("./web-DolrvXij.js");
|
|
67073
67073
|
return webChannelPromise;
|
|
67074
67074
|
}
|
|
67075
67075
|
function loadWhatsAppActions() {
|
|
@@ -75282,6 +75282,89 @@ Use the message tool with buttons:
|
|
|
75282
75282
|
[{"label": "✅ Proceed", "data": "/plan-proceed"}, {"label": "✏️ Modify", "data": "/plan-modify"}, {"label": "❌ Cancel", "data": "/plan-cancel"}]
|
|
75283
75283
|
</plan_mode>`;
|
|
75284
75284
|
|
|
75285
|
+
//#endregion
|
|
75286
|
+
//#region src/agents/stream-monitor.ts
|
|
75287
|
+
/**
|
|
75288
|
+
* Create a stream monitor configured for the given model profile.
|
|
75289
|
+
*
|
|
75290
|
+
* - Claude (hasStructuredThinking: true): repetition detection only
|
|
75291
|
+
* - Gemma/vLLM (hasStructuredThinking: false): tool JSON + repetition detection
|
|
75292
|
+
*/
|
|
75293
|
+
function createStreamMonitor(profile, overrides) {
|
|
75294
|
+
const detectToolJson = overrides?.detectToolJson ?? !profile.filters.hasStructuredThinking;
|
|
75295
|
+
const detectRepetition = overrides?.detectRepetition ?? true;
|
|
75296
|
+
const minBlockSize = overrides?.repetitionMinBlockSize ?? 150;
|
|
75297
|
+
let accumulated = "";
|
|
75298
|
+
let stopSignaled = false;
|
|
75299
|
+
let stopReason;
|
|
75300
|
+
return {
|
|
75301
|
+
onChunk(delta) {
|
|
75302
|
+
if (stopSignaled) return;
|
|
75303
|
+
accumulated += delta;
|
|
75304
|
+
if (detectToolJson && hasCompleteToolJson(accumulated)) {
|
|
75305
|
+
stopSignaled = true;
|
|
75306
|
+
stopReason = "complete-tool-json";
|
|
75307
|
+
return;
|
|
75308
|
+
}
|
|
75309
|
+
if (detectRepetition && hasRepetition(accumulated, minBlockSize)) {
|
|
75310
|
+
stopSignaled = true;
|
|
75311
|
+
stopReason = "repetition-detected";
|
|
75312
|
+
return;
|
|
75313
|
+
}
|
|
75314
|
+
},
|
|
75315
|
+
shouldStop: () => stopSignaled,
|
|
75316
|
+
getAccumulated: () => accumulated,
|
|
75317
|
+
getStopReason: () => stopReason,
|
|
75318
|
+
reset() {
|
|
75319
|
+
accumulated = "";
|
|
75320
|
+
stopSignaled = false;
|
|
75321
|
+
stopReason = void 0;
|
|
75322
|
+
}
|
|
75323
|
+
};
|
|
75324
|
+
}
|
|
75325
|
+
/**
|
|
75326
|
+
* Detect if the accumulated text contains a syntactically complete JSON
|
|
75327
|
+
* object with tool_name and tool_args. Used for models that output tool
|
|
75328
|
+
* calls as plain text JSON (not native structured tool calls).
|
|
75329
|
+
*/
|
|
75330
|
+
function hasCompleteToolJson(text) {
|
|
75331
|
+
const hasToolKey = text.includes("tool_name") || text.includes("\"tool\"");
|
|
75332
|
+
const hasArgsKey = text.includes("tool_args") || text.includes("\"args\"");
|
|
75333
|
+
if (!hasToolKey || !hasArgsKey) return false;
|
|
75334
|
+
const lastBrace = text.lastIndexOf("}");
|
|
75335
|
+
if (lastBrace < 0) return false;
|
|
75336
|
+
let depth = 0;
|
|
75337
|
+
let start = -1;
|
|
75338
|
+
for (let i = lastBrace; i >= 0; i--) {
|
|
75339
|
+
if (text[i] === "}") depth++;
|
|
75340
|
+
if (text[i] === "{") depth--;
|
|
75341
|
+
if (depth === 0) {
|
|
75342
|
+
start = i;
|
|
75343
|
+
break;
|
|
75344
|
+
}
|
|
75345
|
+
}
|
|
75346
|
+
if (start < 0) return false;
|
|
75347
|
+
const candidate = text.slice(start, lastBrace + 1);
|
|
75348
|
+
try {
|
|
75349
|
+
const parsed = JSON.parse(candidate);
|
|
75350
|
+
return typeof parsed === "object" && parsed !== null && (typeof parsed.tool_name === "string" || typeof parsed.tool === "string") && (typeof parsed.tool_args === "object" || typeof parsed.args === "object");
|
|
75351
|
+
} catch {
|
|
75352
|
+
return false;
|
|
75353
|
+
}
|
|
75354
|
+
}
|
|
75355
|
+
/**
|
|
75356
|
+
* Detect if the accumulated text contains a repeated block, indicating
|
|
75357
|
+
* a looping cascade. Returns true if a block of `minBlockSize` chars
|
|
75358
|
+
* from the first half appears again in the second half.
|
|
75359
|
+
*/
|
|
75360
|
+
function hasRepetition(text, minBlockSize) {
|
|
75361
|
+
if (text.length < minBlockSize * 2.5) return false;
|
|
75362
|
+
const sampleStart = Math.floor(text.length * .25);
|
|
75363
|
+
const sample = text.slice(sampleStart, sampleStart + minBlockSize);
|
|
75364
|
+
const searchStart = sampleStart + minBlockSize;
|
|
75365
|
+
return text.indexOf(sample, searchStart) >= 0;
|
|
75366
|
+
}
|
|
75367
|
+
|
|
75285
75368
|
//#endregion
|
|
75286
75369
|
//#region src/agents/symipulse-timeout.ts
|
|
75287
75370
|
/**
|
|
@@ -76496,6 +76579,7 @@ async function runEmbeddedAttempt(params) {
|
|
|
76496
76579
|
return fn(...args);
|
|
76497
76580
|
});
|
|
76498
76581
|
};
|
|
76582
|
+
const streamMonitor = createStreamMonitor(modelProfile);
|
|
76499
76583
|
const subscription = subscribeEmbeddedPiSession({
|
|
76500
76584
|
session: activeSession,
|
|
76501
76585
|
runId: params.runId,
|
|
@@ -76517,6 +76601,14 @@ async function runEmbeddedAttempt(params) {
|
|
|
76517
76601
|
onAgentEvent: (evt) => {
|
|
76518
76602
|
armSymipulseTimer();
|
|
76519
76603
|
params.onAgentEvent?.(evt);
|
|
76604
|
+
if (evt.stream === "assistant" && typeof evt.data?.text === "string" && !aborted) {
|
|
76605
|
+
streamMonitor.onChunk(evt.data.text);
|
|
76606
|
+
if (streamMonitor.shouldStop()) {
|
|
76607
|
+
const reason = streamMonitor.getStopReason();
|
|
76608
|
+
log$2.warn(`stream monitor triggered abort: runId=${params.runId} reason=${reason}`);
|
|
76609
|
+
abortRun(false, /* @__PURE__ */ new Error(`stream-monitor:${reason}`));
|
|
76610
|
+
}
|
|
76611
|
+
}
|
|
76520
76612
|
},
|
|
76521
76613
|
enforceFinalTag: params.enforceFinalTag,
|
|
76522
76614
|
config: params.config,
|
|
@@ -10,7 +10,7 @@ import { t as normalizeChatType } from "./chat-type-DFDuk3FY.js";
|
|
|
10
10
|
import { c as SafeOpenError, i as getImageMetadata, l as openFileWithinRoot, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-ByaQt43P.js";
|
|
11
11
|
import { o as listDeliverableMessageChannels, s as normalizeMessageChannel } from "./message-channel-BQINJQIT.js";
|
|
12
12
|
import { _ as parseDurationMs, a as writeConfigFile, n as loadConfig, s as parseByteSize, t as createConfigIO } from "./config-BmV60pPT.js";
|
|
13
|
-
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-
|
|
13
|
+
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-D2SKJnR7.js";
|
|
14
14
|
import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-BNpGMnp-.js";
|
|
15
15
|
import { n as formatErrorMessage, t as extractErrorCode } from "./errors-CPfngF0S.js";
|
|
16
16
|
import { t as SsrFBlockedError } from "./ssrf-CxfFyMRZ.js";
|
|
@@ -931,7 +931,7 @@ function isModuleNotFoundError(err) {
|
|
|
931
931
|
}
|
|
932
932
|
async function loadPwAiModule(mode) {
|
|
933
933
|
try {
|
|
934
|
-
return await import("./pw-ai-
|
|
934
|
+
return await import("./pw-ai-1htA-NnS.js");
|
|
935
935
|
} catch (err) {
|
|
936
936
|
if (mode === "soft") return null;
|
|
937
937
|
if (isModuleNotFoundError(err)) return null;
|
|
@@ -3471,11 +3471,11 @@ function createProfileContext(opts, profile) {
|
|
|
3471
3471
|
const userDataDir = resolveSymiUserDataDir(profile.name);
|
|
3472
3472
|
const profileState = getProfileState();
|
|
3473
3473
|
if (await isHttpReachable(300) && !profileState.running) try {
|
|
3474
|
-
await (await import("./pw-ai-
|
|
3474
|
+
await (await import("./pw-ai-1htA-NnS.js")).closePlaywrightBrowserConnection();
|
|
3475
3475
|
} catch {}
|
|
3476
3476
|
if (profileState.running) await stopRunningBrowser();
|
|
3477
3477
|
try {
|
|
3478
|
-
await (await import("./pw-ai-
|
|
3478
|
+
await (await import("./pw-ai-1htA-NnS.js")).closePlaywrightBrowserConnection();
|
|
3479
3479
|
} catch {}
|
|
3480
3480
|
if (!fs.existsSync(userDataDir)) return {
|
|
3481
3481
|
moved: false,
|
|
@@ -51789,7 +51789,7 @@ function isVoiceChannelType(type) {
|
|
|
51789
51789
|
function createDefaultDeps() {
|
|
51790
51790
|
return {
|
|
51791
51791
|
sendMessageWhatsApp: async (...args) => {
|
|
51792
|
-
const { sendMessageWhatsApp } = await import("./web-
|
|
51792
|
+
const { sendMessageWhatsApp } = await import("./web-kIIXN8hK.js");
|
|
51793
51793
|
return await sendMessageWhatsApp(...args);
|
|
51794
51794
|
},
|
|
51795
51795
|
sendMessageTelegram: async (...args) => {
|
|
@@ -67071,7 +67071,7 @@ function loadWebLoginQr() {
|
|
|
67071
67071
|
return webLoginQrPromise;
|
|
67072
67072
|
}
|
|
67073
67073
|
function loadWebChannel() {
|
|
67074
|
-
webChannelPromise ??= import("./web-
|
|
67074
|
+
webChannelPromise ??= import("./web-kIIXN8hK.js");
|
|
67075
67075
|
return webChannelPromise;
|
|
67076
67076
|
}
|
|
67077
67077
|
function loadWhatsAppActions() {
|
|
@@ -75284,6 +75284,89 @@ Use the message tool with buttons:
|
|
|
75284
75284
|
[{"label": "✅ Proceed", "data": "/plan-proceed"}, {"label": "✏️ Modify", "data": "/plan-modify"}, {"label": "❌ Cancel", "data": "/plan-cancel"}]
|
|
75285
75285
|
</plan_mode>`;
|
|
75286
75286
|
|
|
75287
|
+
//#endregion
|
|
75288
|
+
//#region src/agents/stream-monitor.ts
|
|
75289
|
+
/**
|
|
75290
|
+
* Create a stream monitor configured for the given model profile.
|
|
75291
|
+
*
|
|
75292
|
+
* - Claude (hasStructuredThinking: true): repetition detection only
|
|
75293
|
+
* - Gemma/vLLM (hasStructuredThinking: false): tool JSON + repetition detection
|
|
75294
|
+
*/
|
|
75295
|
+
function createStreamMonitor(profile, overrides) {
|
|
75296
|
+
const detectToolJson = overrides?.detectToolJson ?? !profile.filters.hasStructuredThinking;
|
|
75297
|
+
const detectRepetition = overrides?.detectRepetition ?? true;
|
|
75298
|
+
const minBlockSize = overrides?.repetitionMinBlockSize ?? 150;
|
|
75299
|
+
let accumulated = "";
|
|
75300
|
+
let stopSignaled = false;
|
|
75301
|
+
let stopReason;
|
|
75302
|
+
return {
|
|
75303
|
+
onChunk(delta) {
|
|
75304
|
+
if (stopSignaled) return;
|
|
75305
|
+
accumulated += delta;
|
|
75306
|
+
if (detectToolJson && hasCompleteToolJson(accumulated)) {
|
|
75307
|
+
stopSignaled = true;
|
|
75308
|
+
stopReason = "complete-tool-json";
|
|
75309
|
+
return;
|
|
75310
|
+
}
|
|
75311
|
+
if (detectRepetition && hasRepetition(accumulated, minBlockSize)) {
|
|
75312
|
+
stopSignaled = true;
|
|
75313
|
+
stopReason = "repetition-detected";
|
|
75314
|
+
return;
|
|
75315
|
+
}
|
|
75316
|
+
},
|
|
75317
|
+
shouldStop: () => stopSignaled,
|
|
75318
|
+
getAccumulated: () => accumulated,
|
|
75319
|
+
getStopReason: () => stopReason,
|
|
75320
|
+
reset() {
|
|
75321
|
+
accumulated = "";
|
|
75322
|
+
stopSignaled = false;
|
|
75323
|
+
stopReason = void 0;
|
|
75324
|
+
}
|
|
75325
|
+
};
|
|
75326
|
+
}
|
|
75327
|
+
/**
|
|
75328
|
+
* Detect if the accumulated text contains a syntactically complete JSON
|
|
75329
|
+
* object with tool_name and tool_args. Used for models that output tool
|
|
75330
|
+
* calls as plain text JSON (not native structured tool calls).
|
|
75331
|
+
*/
|
|
75332
|
+
function hasCompleteToolJson(text) {
|
|
75333
|
+
const hasToolKey = text.includes("tool_name") || text.includes("\"tool\"");
|
|
75334
|
+
const hasArgsKey = text.includes("tool_args") || text.includes("\"args\"");
|
|
75335
|
+
if (!hasToolKey || !hasArgsKey) return false;
|
|
75336
|
+
const lastBrace = text.lastIndexOf("}");
|
|
75337
|
+
if (lastBrace < 0) return false;
|
|
75338
|
+
let depth = 0;
|
|
75339
|
+
let start = -1;
|
|
75340
|
+
for (let i = lastBrace; i >= 0; i--) {
|
|
75341
|
+
if (text[i] === "}") depth++;
|
|
75342
|
+
if (text[i] === "{") depth--;
|
|
75343
|
+
if (depth === 0) {
|
|
75344
|
+
start = i;
|
|
75345
|
+
break;
|
|
75346
|
+
}
|
|
75347
|
+
}
|
|
75348
|
+
if (start < 0) return false;
|
|
75349
|
+
const candidate = text.slice(start, lastBrace + 1);
|
|
75350
|
+
try {
|
|
75351
|
+
const parsed = JSON.parse(candidate);
|
|
75352
|
+
return typeof parsed === "object" && parsed !== null && (typeof parsed.tool_name === "string" || typeof parsed.tool === "string") && (typeof parsed.tool_args === "object" || typeof parsed.args === "object");
|
|
75353
|
+
} catch {
|
|
75354
|
+
return false;
|
|
75355
|
+
}
|
|
75356
|
+
}
|
|
75357
|
+
/**
|
|
75358
|
+
* Detect if the accumulated text contains a repeated block, indicating
|
|
75359
|
+
* a looping cascade. Returns true if a block of `minBlockSize` chars
|
|
75360
|
+
* from the first half appears again in the second half.
|
|
75361
|
+
*/
|
|
75362
|
+
function hasRepetition(text, minBlockSize) {
|
|
75363
|
+
if (text.length < minBlockSize * 2.5) return false;
|
|
75364
|
+
const sampleStart = Math.floor(text.length * .25);
|
|
75365
|
+
const sample = text.slice(sampleStart, sampleStart + minBlockSize);
|
|
75366
|
+
const searchStart = sampleStart + minBlockSize;
|
|
75367
|
+
return text.indexOf(sample, searchStart) >= 0;
|
|
75368
|
+
}
|
|
75369
|
+
|
|
75287
75370
|
//#endregion
|
|
75288
75371
|
//#region src/agents/symipulse-timeout.ts
|
|
75289
75372
|
/**
|
|
@@ -76498,6 +76581,7 @@ async function runEmbeddedAttempt(params) {
|
|
|
76498
76581
|
return fn(...args);
|
|
76499
76582
|
});
|
|
76500
76583
|
};
|
|
76584
|
+
const streamMonitor = createStreamMonitor(modelProfile);
|
|
76501
76585
|
const subscription = subscribeEmbeddedPiSession({
|
|
76502
76586
|
session: activeSession,
|
|
76503
76587
|
runId: params.runId,
|
|
@@ -76519,6 +76603,14 @@ async function runEmbeddedAttempt(params) {
|
|
|
76519
76603
|
onAgentEvent: (evt) => {
|
|
76520
76604
|
armSymipulseTimer();
|
|
76521
76605
|
params.onAgentEvent?.(evt);
|
|
76606
|
+
if (evt.stream === "assistant" && typeof evt.data?.text === "string" && !aborted) {
|
|
76607
|
+
streamMonitor.onChunk(evt.data.text);
|
|
76608
|
+
if (streamMonitor.shouldStop()) {
|
|
76609
|
+
const reason = streamMonitor.getStopReason();
|
|
76610
|
+
log$2.warn(`stream monitor triggered abort: runId=${params.runId} reason=${reason}`);
|
|
76611
|
+
abortRun(false, /* @__PURE__ */ new Error(`stream-monitor:${reason}`));
|
|
76612
|
+
}
|
|
76613
|
+
}
|
|
76522
76614
|
},
|
|
76523
76615
|
enforceFinalTag: params.enforceFinalTag,
|
|
76524
76616
|
config: params.config,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
2
|
-
import { vt as loadSymiPlugins } from "./reply-
|
|
2
|
+
import { vt as loadSymiPlugins } from "./reply-DkwaBRX-.js";
|
|
3
3
|
import { d as getActivePluginRegistry } from "./registry-Cja8eT7G.js";
|
|
4
4
|
import { t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
|
|
5
5
|
import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-CgUHAtCo.js";
|
|
@@ -2,7 +2,7 @@ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
|
2
2
|
import { M as getActivePluginRegistry, o as createSubsystemLogger } from "./entry.js";
|
|
3
3
|
import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-D-jRCY0d.js";
|
|
4
4
|
import { i as loadConfig } from "./config-DHBLS1Hl.js";
|
|
5
|
-
import { b as loadSymiPlugins } from "./subagent-registry-
|
|
5
|
+
import { b as loadSymiPlugins } from "./subagent-registry-Jwg44JMf.js";
|
|
6
6
|
|
|
7
7
|
//#region src/cli/plugin-registry.ts
|
|
8
8
|
var plugin_registry_exports = /* @__PURE__ */ __exportAll({ ensurePluginRegistryLoaded: () => ensurePluginRegistryLoaded });
|
|
@@ -28,6 +28,12 @@ export declare function createZaiToolStreamWrapper(baseStreamFn: StreamFn | unde
|
|
|
28
28
|
* Apply extra params (like temperature) to an agent's streamFn.
|
|
29
29
|
* Also adds OpenRouter app attribution headers when using the OpenRouter provider.
|
|
30
30
|
*
|
|
31
|
+
* @deprecated The 6-wrapper chain in this function has been superseded by
|
|
32
|
+
* `createModelAwareStreamFn` in `model-aware-stream.ts`. `attempt.ts`
|
|
33
|
+
* now calls `createModelAwareStreamFn` directly and uses the individual
|
|
34
|
+
* exported wrappers (Anthropic betas, Z.AI, OpenAI store) separately.
|
|
35
|
+
* This function is preserved for backward compatibility with existing tests.
|
|
36
|
+
*
|
|
31
37
|
* @internal Exported for testing
|
|
32
38
|
*/
|
|
33
39
|
export declare function applyExtraParamsToAgent(agent: {
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stream Monitor — callback-based early exit and repetition detection.
|
|
3
|
+
*
|
|
4
|
+
* Adapted from agent-zero's streaming callback pattern. Instead of
|
|
5
|
+
* relying solely on model stop tokens (which may be ignored or lost),
|
|
6
|
+
* the monitor watches the streaming output in real-time and signals
|
|
7
|
+
* when to stop.
|
|
8
|
+
*
|
|
9
|
+
* Two detection modes:
|
|
10
|
+
* 1. Tool JSON detection — stops when a complete tool call JSON block
|
|
11
|
+
* is found in the accumulated stream (for models without native
|
|
12
|
+
* structured tool calls, like Gemma).
|
|
13
|
+
* 2. Repetition detection — stops when the same block of text appears
|
|
14
|
+
* twice, indicating a looping cascade.
|
|
15
|
+
*
|
|
16
|
+
* @module
|
|
17
|
+
*/
|
|
18
|
+
import type { ModelProfile } from "../config/model-profiles.js";
|
|
19
|
+
export interface StreamMonitor {
|
|
20
|
+
/** Process a new text delta. Call on each streaming chunk. */
|
|
21
|
+
onChunk(delta: string): void;
|
|
22
|
+
/** Returns true if the monitor thinks generation should stop. */
|
|
23
|
+
shouldStop(): boolean;
|
|
24
|
+
/** Get the accumulated text so far. */
|
|
25
|
+
getAccumulated(): string;
|
|
26
|
+
/** Get the reason for stop signal (for logging). */
|
|
27
|
+
getStopReason(): string | undefined;
|
|
28
|
+
/** Reset state for a new generation turn. */
|
|
29
|
+
reset(): void;
|
|
30
|
+
}
|
|
31
|
+
export interface StreamMonitorOptions {
|
|
32
|
+
/** Enable tool JSON detection (for models without structured tool calls). */
|
|
33
|
+
detectToolJson?: boolean;
|
|
34
|
+
/** Enable repetition cascade detection. */
|
|
35
|
+
detectRepetition?: boolean;
|
|
36
|
+
/** Minimum block size (chars) for repetition detection. Default: 150. */
|
|
37
|
+
repetitionMinBlockSize?: number;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Create a stream monitor configured for the given model profile.
|
|
41
|
+
*
|
|
42
|
+
* - Claude (hasStructuredThinking: true): repetition detection only
|
|
43
|
+
* - Gemma/vLLM (hasStructuredThinking: false): tool JSON + repetition detection
|
|
44
|
+
*/
|
|
45
|
+
export declare function createStreamMonitor(profile: ModelProfile, overrides?: StreamMonitorOptions): StreamMonitor;
|
|
46
|
+
/**
|
|
47
|
+
* Detect if the accumulated text contains a syntactically complete JSON
|
|
48
|
+
* object with tool_name and tool_args. Used for models that output tool
|
|
49
|
+
* calls as plain text JSON (not native structured tool calls).
|
|
50
|
+
*/
|
|
51
|
+
declare function hasCompleteToolJson(text: string): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Detect if the accumulated text contains a repeated block, indicating
|
|
54
|
+
* a looping cascade. Returns true if a block of `minBlockSize` chars
|
|
55
|
+
* from the first half appears again in the second half.
|
|
56
|
+
*/
|
|
57
|
+
declare function hasRepetition(text: string, minBlockSize: number): boolean;
|
|
58
|
+
export declare const __testing: {
|
|
59
|
+
hasCompleteToolJson: typeof hasCompleteToolJson;
|
|
60
|
+
hasRepetition: typeof hasRepetition;
|
|
61
|
+
};
|
|
62
|
+
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { a as buildGroupHistoryKey, n as DEFAULT_MAIN_KEY, r as buildAgentMainSessionKey, s as normalizeAgentId } from "./session-key-C_0eELjb.js";
|
|
2
2
|
import { f as readWebSelfId, o as getWebAuthAgeMs, r as resolveWhatsAppAccount } from "./accounts-D9zGZU5t.js";
|
|
3
|
-
import { E as enqueueSystemEvent, G as resolveMentionGating, W as shouldAckReactionForWhatsApp, X as buildHistoryContextFromEntries, Y as DEFAULT_GROUP_HISTORY_LIMIT, _ as resolveEnvelopeFormatOptions, c as computeBackoff, d as formatDurationPrecise, f as dispatchReplyWithBufferedBlockDispatcher, g as formatInboundEnvelope, h as resolveInboundDebounceMs, ht as createDedupeCache, l as sleepWithAbort, m as createInboundDebouncer, n as normalizeGroupActivation, nt as buildMentionRegexes, r as parseActivationCommand, rt as normalizeMentionText, t as getReplyFromConfig, tt as recordPendingHistoryEntryIfEnabled, u as buildPairingReply, v as hasControlCommand, y as shouldComputeCommandAuthorized } from "./reply-
|
|
3
|
+
import { E as enqueueSystemEvent, G as resolveMentionGating, W as shouldAckReactionForWhatsApp, X as buildHistoryContextFromEntries, Y as DEFAULT_GROUP_HISTORY_LIMIT, _ as resolveEnvelopeFormatOptions, c as computeBackoff, d as formatDurationPrecise, f as dispatchReplyWithBufferedBlockDispatcher, g as formatInboundEnvelope, h as resolveInboundDebounceMs, ht as createDedupeCache, l as sleepWithAbort, m as createInboundDebouncer, n as normalizeGroupActivation, nt as buildMentionRegexes, r as parseActivationCommand, rt as normalizeMentionText, t as getReplyFromConfig, tt as recordPendingHistoryEntryIfEnabled, u as buildPairingReply, v as hasControlCommand, y as shouldComputeCommandAuthorized } from "./reply-CSgeVqcV.js";
|
|
4
4
|
import { A as normalizeE164, B as toWhatsappJid, K as logVerbose, N as resolveJidToE164, O as isSelfChatMode, R as sleep, Y as shouldLogVerbose, k as jidToE164, s as normalizeChatChannelId, tt as getChildLogger, x as clamp } from "./registry--_pGht6S.js";
|
|
5
5
|
import { n as loadConfig } from "./config-DDkdiUOR.js";
|
|
6
6
|
import { i as defaultRuntime, t as createSubsystemLogger } from "./subsystem-Coz2AgU8.js";
|
package/dist/plugin-sdk/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { f as DEFAULT_ACCOUNT_ID, p as normalizeAccountId } from "./session-key-C_0eELjb.js";
|
|
2
2
|
import { _ as createAccountListHelpers, i as resolveWhatsAppAuthDir, n as resolveDefaultWhatsAppAccountId, r as resolveWhatsAppAccount, t as listWhatsAppAccountIds } from "./accounts-D9zGZU5t.js";
|
|
3
|
-
import { $ as clearHistoryEntriesIfEnabled, A as resolveDiscordUserAllowlist, B as logTypingFailure, C as stripMarkdown, Ct as unbindThreadBindingsBySessionKey, D as resolveSlackUserAllowlist, Dt as BLUEBUBBLES_ACTION_NAMES, Et as BLUEBUBBLES_ACTIONS, F as stringEnum, G as resolveMentionGating, H as removeAckReactionAfterReply, I as recordInboundSession, J as summarizeMapping, K as resolveMentionGatingWithBypass, L as resolveControlCommandGate, M as collectDiscordAuditChannelIds, N as formatDocsLink, O as resolveSlackChannelAllowlist, Ot as BLUEBUBBLES_GROUP_ACTIONS, P as optionalStringEnum, Q as clearHistoryEntries, R as logAckFailure, S as processLineMessage, St as listThreadBindingsBySessionKey, T as attachFooterText, Tt as resolveAllowlistMatchSimple, U as shouldAckReaction, V as createTypingCallbacks, W as shouldAckReactionForWhatsApp, Y as DEFAULT_GROUP_HISTORY_LIMIT, Z as buildPendingHistoryContextFromMap, _t as listDevicePairing, a as normalizeAccountId$1, at as isWSLEnv, bt as registerPluginHttpRoute, ct as DEFAULT_WEBHOOK_MAX_BODY_BYTES, dt as isRequestBodyLimitError, et as recordPendingHistoryEntry, ft as readJsonBodyWithLimit, gt as approveDevicePairing, ht as createDedupeCache, i as listLineAccountIds, it as isWSL2Sync, j as resolveDiscordChannelAllowlist, k as detectBinary, kt as CHANNEL_MESSAGE_ACTION_NAMES, lt as RequestBodyLimitError, mt as requestBodyErrorToText, o as resolveDefaultLineAccountId, ot as isWSLSync, pt as readRequestBodyWithLimit, q as mergeAllowlist, s as resolveLineAccount, st as DEFAULT_WEBHOOK_BODY_TIMEOUT_MS, tt as recordPendingHistoryEntryIfEnabled, ut as installRequestBodyLimitGuard, vt as rejectDevicePairing, w as createReceiptCard, wt as formatAllowlistMatchMeta, x as hasMarkdownToConvert, xt as autoBindSpawnedDiscordSubagent, yt as extractToolSend, z as logInboundDrop } from "./reply-
|
|
3
|
+
import { $ as clearHistoryEntriesIfEnabled, A as resolveDiscordUserAllowlist, B as logTypingFailure, C as stripMarkdown, Ct as unbindThreadBindingsBySessionKey, D as resolveSlackUserAllowlist, Dt as BLUEBUBBLES_ACTION_NAMES, Et as BLUEBUBBLES_ACTIONS, F as stringEnum, G as resolveMentionGating, H as removeAckReactionAfterReply, I as recordInboundSession, J as summarizeMapping, K as resolveMentionGatingWithBypass, L as resolveControlCommandGate, M as collectDiscordAuditChannelIds, N as formatDocsLink, O as resolveSlackChannelAllowlist, Ot as BLUEBUBBLES_GROUP_ACTIONS, P as optionalStringEnum, Q as clearHistoryEntries, R as logAckFailure, S as processLineMessage, St as listThreadBindingsBySessionKey, T as attachFooterText, Tt as resolveAllowlistMatchSimple, U as shouldAckReaction, V as createTypingCallbacks, W as shouldAckReactionForWhatsApp, Y as DEFAULT_GROUP_HISTORY_LIMIT, Z as buildPendingHistoryContextFromMap, _t as listDevicePairing, a as normalizeAccountId$1, at as isWSLEnv, bt as registerPluginHttpRoute, ct as DEFAULT_WEBHOOK_MAX_BODY_BYTES, dt as isRequestBodyLimitError, et as recordPendingHistoryEntry, ft as readJsonBodyWithLimit, gt as approveDevicePairing, ht as createDedupeCache, i as listLineAccountIds, it as isWSL2Sync, j as resolveDiscordChannelAllowlist, k as detectBinary, kt as CHANNEL_MESSAGE_ACTION_NAMES, lt as RequestBodyLimitError, mt as requestBodyErrorToText, o as resolveDefaultLineAccountId, ot as isWSLSync, pt as readRequestBodyWithLimit, q as mergeAllowlist, s as resolveLineAccount, st as DEFAULT_WEBHOOK_BODY_TIMEOUT_MS, tt as recordPendingHistoryEntryIfEnabled, ut as installRequestBodyLimitGuard, vt as rejectDevicePairing, w as createReceiptCard, wt as formatAllowlistMatchMeta, x as hasMarkdownToConvert, xt as autoBindSpawnedDiscordSubagent, yt as extractToolSend, z as logInboundDrop } from "./reply-CSgeVqcV.js";
|
|
4
4
|
import "./paths-DR2yt_mP.js";
|
|
5
5
|
import "./github-copilot-token-D9X2phUj.js";
|
|
6
6
|
import { D as resolveSlackAccount, E as resolveDefaultSlackAccountId, F as resolveDiscordAccount, M as listDiscordAccountIds, O as resolveSlackReplyToMode, P as resolveDefaultDiscordAccountId, S as resolveTelegramAccount, T as listSlackAccountIds, _ as normalizeWhatsAppTarget, a as listDiscordDirectoryPeersFromConfig, b as listTelegramAccountIds, c as listTelegramDirectoryGroupsFromConfig, d as listWhatsAppDirectoryPeersFromConfig, f as looksLikeSlackTargetId, g as isWhatsAppGroupJid, i as listDiscordDirectoryGroupsFromConfig, l as listTelegramDirectoryPeersFromConfig, o as listSlackDirectoryGroupsFromConfig, p as normalizeSlackMessagingTarget, s as listSlackDirectoryPeersFromConfig, u as listWhatsAppDirectoryGroupsFromConfig, w as listEnabledSlackAccounts, x as resolveDefaultTelegramAccountId } from "./plugins-BbAvhC25.js";
|
|
@@ -47,7 +47,7 @@ import "./paths-A0xdf3yk.js";
|
|
|
47
47
|
import { h as onDiagnosticEvent, m as isDiagnosticsEnabled, p as emitDiagnosticEvent } from "./diagnostic-mFf4i4G9.js";
|
|
48
48
|
import { n as extractOriginalFilename } from "./store-Do3t33-c.js";
|
|
49
49
|
import { t as resolveWhatsAppOutboundTarget } from "./resolve-outbound-target-BkCUbYGV.js";
|
|
50
|
-
import { r as resolveWhatsAppHeartbeatRecipients } from "./channel-web-
|
|
50
|
+
import { r as resolveWhatsAppHeartbeatRecipients } from "./channel-web-ilY3YUmF.js";
|
|
51
51
|
import "./image-BOYy0Ump.js";
|
|
52
52
|
import "./pi-model-discovery-LbcEa65a.js";
|
|
53
53
|
import "./api-key-rotation-CVBMpnPc.js";
|