@symerian/symi 3.0.1 → 3.0.3
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-D4F5bhNg.js → agents-CeafvAwk.js} +4 -4
- package/dist/{agents.config-Czr0DbSr.js → agents.config-DyAqyKIS.js} +1 -1
- package/dist/{agents.config-DS9Gbqqg.js → agents.config-wJSTSxHw.js} +1 -1
- package/dist/{audio-preflight-Cje-A0Fs.js → audio-preflight-BrKBM7JM.js} +4 -4
- package/dist/{auth-choice-DU5o68ia.js → auth-choice-BrH3g0l7.js} +1 -1
- package/dist/{auth-choice-BU6XwruP.js → auth-choice-CSXt138B.js} +1 -1
- package/dist/{banner-qaKrETF8.js → banner-kkSwCGXn.js} +1 -1
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +2 -2
- package/dist/bundled/session-memory/handler.js +2 -2
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-options-Bkfyg4nZ.js → channel-options-BC-QbEPJ.js} +1 -1
- package/dist/{channel-options-DW3nWxkv.js → channel-options-BdMw9pwh.js} +1 -1
- package/dist/{channel-web-DoDJqXyN.js → channel-web-B9o347ZR.js} +1 -1
- package/dist/{channels-cli-V7ii1g6k.js → channels-cli-CFZVgAxq.js} +6 -6
- package/dist/{channels-cli-B9tesYLD.js → channels-cli-n1iS1gNN.js} +6 -6
- package/dist/{chrome-DaduLVA1.js → chrome-WfENE6tB.js} +7 -7
- package/dist/{cli-CAhOnKQ3.js → cli-B3M7EAy1.js} +3 -3
- package/dist/{cli-0GHBNwqe.js → cli-C852-xID.js} +3 -3
- package/dist/{command-registry-Phoz_hat.js → command-registry-BRN6NMOS.js} +10 -10
- package/dist/{completion-cli-BAebbT-g.js → completion-cli-CQtI0ASD.js} +2 -2
- package/dist/{completion-cli-FR_B0tX1.js → completion-cli-EvxmKJ-O.js} +1 -1
- package/dist/{config-cli-BXus9Npr.js → config-cli-CiV_YQf4.js} +1 -1
- package/dist/{config-cli-DLSg0aaH.js → config-cli-DeCSlj0Y.js} +1 -1
- package/dist/{configure-BsrDBB87.js → configure-BE0YRZWd.js} +3 -3
- package/dist/{configure-CPweqV68.js → configure-By6_8Jvs.js} +3 -3
- package/dist/daemon-cli.js +6 -6
- package/dist/{deliver-B6vfVmif.js → deliver-DShQE_sq.js} +1 -1
- package/dist/{doctor-completion-D5BKaeyT.js → doctor-completion-BmjVxgkV.js} +1 -1
- package/dist/{doctor-completion-DBs809iZ.js → doctor-completion-Cts2UOop.js} +1 -1
- package/dist/entry.js +1 -1
- package/dist/extensionAPI.js +7 -7
- package/dist/{gateway-cli-DDxIyaeu.js → gateway-cli-DO4uSyVT.js} +12 -12
- package/dist/{gateway-cli-D7ppw9MR.js → gateway-cli-bu8Eq_hB.js} +12 -12
- package/dist/{glass-ui-ws-DSCEyW9z.js → glass-ui-ws-CUWkP3XZ.js} +10 -10
- package/dist/{glass-ui-ws-BK6Ca98g.js → glass-ui-ws-oxSeDi37.js} +10 -10
- package/dist/{health-ByAPhIlQ.js → health-DZB8SV6G.js} +69 -5
- package/dist/{health-VfVqsLcU.js → health-N-jvgpZZ.js} +69 -5
- package/dist/{heartbeat-visibility-ol7hy6FB.js → heartbeat-visibility-D6uZvFVV.js} +1 -1
- package/dist/{heartbeat-visibility-BdqXBLOd.js → heartbeat-visibility-_mPYbQT2.js} +1 -1
- package/dist/{hooks-cli-D8u-iqwZ.js → hooks-cli-BFZv9uGo.js} +4 -4
- package/dist/{hooks-cli-CA2ikPts.js → hooks-cli-DuKd3-QN.js} +4 -4
- package/dist/{image-C12-WOMI.js → image-DfzwGNoa.js} +1 -1
- package/dist/index.js +9 -9
- package/dist/llm-slug-generator.js +2 -2
- package/dist/{manager-DxihqoWd.js → manager-2D0Tevoj.js} +1 -1
- package/dist/{manager-DPxj_q1-.js → manager-DjHARmFk.js} +1 -1
- package/dist/{manager-DfZDS6-4.js → manager-DnkWmUWs.js} +1 -1
- package/dist/{manager-C9NXB77i.js → manager-Dp_9v8j5.js} +1 -1
- package/dist/{memory-cli-Bjj5cTuq.js → memory-cli-D69x8sVz.js} +3 -3
- package/dist/{memory-cli-D_O5bN6m.js → memory-cli-z9Rsga03.js} +3 -3
- package/dist/{models-CD7SOI3V.js → models-U6PPfAmY.js} +2 -2
- package/dist/{models-cli-Wjh_xd50.js → models-cli-DDev4qyK.js} +5 -5
- package/dist/{models-cli-Dj5BnQIi.js → models-cli-DiqDhhoK.js} +4 -4
- package/dist/{onboard-Bgl-nPXW.js → onboard-Bl0XFCEJ.js} +2 -2
- package/dist/{onboard-CCfkebWZ.js → onboard-DeH6Vxxg.js} +2 -2
- package/dist/{onboard-channels-CHJjmcTz.js → onboard-channels-CkFD8gYa.js} +1 -1
- package/dist/{onboard-channels-DKFmls3m.js → onboard-channels-Cky54l0-.js} +1 -1
- package/dist/{onboarding-CtCbkyNo.js → onboarding-BZVJ24wI.js} +3 -3
- package/dist/{onboarding-GXSRt2Z4.js → onboarding-DgpTBpWU.js} +3 -3
- package/dist/{onboarding.finalize-CTqy_Unj.js → onboarding.finalize-DVSMLcSy.js} +8 -8
- package/dist/{onboarding.finalize-Cyo7tKOt.js → onboarding.finalize-YB2UOZUK.js} +9 -9
- package/dist/{pi-embedded-gBOzgRYn.js → pi-embedded-C6GkUoi8.js} +77 -25
- package/dist/{pi-embedded-helpers-pMH6u36v.js → pi-embedded-helpers-B1k1RWqM.js} +4 -4
- package/dist/{plugin-registry-BMavDLfZ.js → plugin-registry-2T2NDPGh.js} +1 -1
- package/dist/{plugin-registry-CO6iA1TE.js → plugin-registry-739qhWq3.js} +1 -1
- package/dist/plugin-sdk/agents/system-prompt.d.ts +8 -0
- package/dist/plugin-sdk/{channel-web--Ru_sFHM.js → channel-web-DAJtsqF_.js} +1 -1
- package/dist/plugin-sdk/index.js +3 -3
- package/dist/plugin-sdk/infra/active-heartbeat-runs.d.ts +34 -0
- package/dist/plugin-sdk/{manager-CDV3YWoX.js → manager-DhiL-RSO.js} +1 -1
- package/dist/plugin-sdk/{synthesis-Bojs0PJL.js → synthesis-cOQ27lCy.js} +2 -2
- package/dist/plugin-sdk/{unified-runner-D7m-WeUt.js → unified-runner-KBVvJUFF.js} +63 -11
- package/dist/plugin-sdk/{web-BoYy2HSO.js → web-Bj-jTlHW.js} +3 -3
- package/dist/{plugins-cli-2A8lifj4.js → plugins-cli-BrLY9BMq.js} +4 -4
- package/dist/{plugins-cli-DhQzD98q.js → plugins-cli-rLBIo-nA.js} +4 -4
- package/dist/{program-DEaYsa-L.js → program-CKansE2A.js} +9 -9
- package/dist/{program-context-rJ500lzQ.js → program-context-DlM7Bnwp.js} +18 -18
- package/dist/{prompt-select-styled-BcJXLROq.js → prompt-select-styled-RR_-htsV.js} +6 -6
- package/dist/{prompt-select-styled-3tYztnc1.js → prompt-select-styled-YeADoH1b.js} +6 -6
- package/dist/{provider-auth-helpers-eQzmopYc.js → provider-auth-helpers-D7_-bTJg.js} +1 -1
- package/dist/{provider-auth-helpers-COKxBW7N.js → provider-auth-helpers-tiuH9v1U.js} +1 -1
- package/dist/{push-apns-CBPUnPja.js → push-apns-BP1rb3hW.js} +1 -1
- package/dist/{push-apns-kuIc4QSa.js → push-apns-CB9rSO0r.js} +1 -1
- package/dist/{pw-ai-D0CMQA23.js → pw-ai-Dd_QrTWR.js} +1 -1
- package/dist/{register.agent-Bj4dYxX1.js → register.agent-BXfiPWJL.js} +8 -8
- package/dist/{register.agent-CNpLOx-Y.js → register.agent-BadsiDY7.js} +7 -7
- package/dist/{register.configure-BsXY0hbE.js → register.configure-J5GbnUak.js} +9 -9
- package/dist/{register.configure-CM4isxt8.js → register.configure-ndWF-EwD.js} +9 -9
- package/dist/{register.maintenance-Bvt-fYOe.js → register.maintenance-BAlGfjMJ.js} +10 -10
- package/dist/{register.maintenance-Dphm3utW.js → register.maintenance-BvAh-5NH.js} +11 -11
- package/dist/{register.message-CuJ6kd3Y.js → register.message-CTQZsi6c.js} +4 -4
- package/dist/{register.message-C4WU4qwG.js → register.message-CyNUsm17.js} +4 -4
- package/dist/{register.onboard-D_HBo-CG.js → register.onboard-DPpsT1JH.js} +7 -7
- package/dist/{register.onboard-4GJ7224e.js → register.onboard-Dh4f0cDp.js} +7 -7
- package/dist/{register.setup-Blb61XAC.js → register.setup-BrjFdUZ8.js} +7 -7
- package/dist/{register.setup-BJ9kJazQ.js → register.setup-DU8piCcQ.js} +7 -7
- package/dist/{register.status-health-sessions-CRAYzQLg.js → register.status-health-sessions-Cyljneob.js} +6 -6
- package/dist/{register.status-health-sessions-B4hENuHX.js → register.status-health-sessions-jQvctMC3.js} +6 -6
- package/dist/{register.subclis-CmDRn7Z2.js → register.subclis-DOLKNKZj.js} +9 -9
- package/dist/{run-main-CPcu8T5o.js → run-main-DnvLmulK.js} +17 -17
- package/dist/{runner-7XhJhCc0.js → runner-CaXOtv_D.js} +1 -1
- package/dist/{server-methods-CX3ldLPd.js → server-methods-DFQlsPZN.js} +10 -9
- package/dist/{server-methods-DDbTMvnA.js → server-methods-DGQu3NEO.js} +10 -9
- package/dist/{server-node-events-Bzoq_nfx.js → server-node-events-BH1YaeId.js} +4 -4
- package/dist/{server-node-events-Ccoeyw6p.js → server-node-events-C3EVBwcx.js} +4 -4
- package/dist/{status-OAdlubd0.js → status-Cx2g82Iv.js} +3 -3
- package/dist/{status-BEAngZOJ.js → status-DBn69Azp.js} +3 -3
- package/dist/{status-CyHHusPc.js → status-DX8BiUs2.js} +1 -1
- package/dist/{status-BdKI8eQ7.js → status-DyQuiOVn.js} +1 -1
- package/dist/{subagent-registry-UkXCmOLK.js → subagent-registry-Y_8a_o-m.js} +63 -11
- package/dist/{synthesis-DGBPTml_.js → synthesis-BVbYJPM-.js} +3 -3
- package/dist/{synthesis-BkOyAKJV.js → synthesis-CTHSaeoU.js} +7 -7
- package/dist/{synthesis-DnRaxWS6.js → synthesis-DnFo8jPe.js} +2 -2
- package/dist/{synthesis-D_fSgB6z.js → synthesis-ntqeiu25.js} +3 -3
- package/dist/{unified-runner-BNTy0IvK.js → unified-runner-DWZT5BCl.js} +63 -11
- package/dist/{unified-runner-BlsArDPO.js → unified-runner-DwlXIEtb.js} +63 -11
- package/dist/{update-cli-Cwi3bnhh.js → update-cli-CYpz_sg2.js} +11 -11
- package/dist/{update-cli-DuALcXLb.js → update-cli-DKbaVaEp.js} +10 -10
- package/dist/{update-runner-DkNNsx67.js → update-runner-D1V7cGWA.js} +1 -1
- package/dist/{update-runner-C3OhMuSJ.js → update-runner-Des8yO8-.js} +1 -1
- package/dist/{web-Cp_dpAof.js → web-Cm1sUEcG.js} +5 -5
- package/dist/{web-DtgGgNSl.js → web-Dd2K5DCI.js} +4 -4
- package/dist/{web-arCxqOL_.js → web-DuUOtg8X.js} +7 -7
- package/dist/{web-PndcPkY5.js → web-VH47KruC.js} +2 -2
- package/extensions/bluebubbles/package.json +1 -1
- package/extensions/copilot-proxy/package.json +1 -1
- package/extensions/diagnostics-otel/package.json +1 -1
- package/extensions/discord/package.json +1 -1
- package/extensions/feishu/package.json +1 -1
- package/extensions/google-antigravity-auth/package.json +1 -1
- package/extensions/google-gemini-cli-auth/package.json +1 -1
- package/extensions/googlechat/package.json +1 -1
- package/extensions/imessage/package.json +1 -1
- package/extensions/irc/package.json +1 -1
- package/extensions/learning-loop/package.json +1 -1
- package/extensions/line/package.json +1 -1
- package/extensions/llm-task/package.json +1 -1
- package/extensions/matrix/CHANGELOG.md +12 -0
- package/extensions/matrix/package.json +1 -1
- package/extensions/mattermost/package.json +1 -1
- package/extensions/memory-core/package.json +1 -1
- package/extensions/memory-lancedb/package.json +1 -1
- package/extensions/minimax-portal-auth/package.json +1 -1
- package/extensions/msteams/CHANGELOG.md +12 -0
- package/extensions/msteams/package.json +1 -1
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nostr/CHANGELOG.md +12 -0
- package/extensions/nostr/package.json +1 -1
- package/extensions/open-prose/package.json +1 -1
- package/extensions/outlook/package.json +1 -1
- package/extensions/pipeline/package.json +1 -1
- package/extensions/signal/package.json +1 -1
- package/extensions/slack/package.json +1 -1
- package/extensions/telegram/package.json +1 -1
- package/extensions/tlon/package.json +1 -1
- package/extensions/twitch/CHANGELOG.md +12 -0
- package/extensions/twitch/package.json +1 -1
- package/extensions/voice-call/CHANGELOG.md +12 -0
- package/extensions/voice-call/package.json +1 -1
- package/extensions/whatsapp/package.json +1 -1
- package/extensions/zalo/CHANGELOG.md +12 -0
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalouser/CHANGELOG.md +12 -0
- package/extensions/zalouser/package.json +1 -1
- package/package.json +1 -1
|
@@ -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-DMhDlUGJ.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-ByAzOT7G.js";
|
|
17
|
-
import { a as normalizeOutboundPayloadsForJson, c as normalizeChannelTargetInput, d as parseReplyDirectives, f as MEDIA_TOKEN_RE, g as initializeGlobalHookRunner, h as getGlobalHookRunner, i as normalizeOutboundPayloads, l as normalizeTargetForProvider, m as parseInlineDirectives$1, o as normalizeReplyPayloadsForDelivery, p as splitMediaFromOutput, r as formatOutboundPayloadLog, s as buildTargetResolverSignature, t as deliverOutboundPayloads, u as throwIfAborted } from "./deliver-
|
|
17
|
+
import { a as normalizeOutboundPayloadsForJson, c as normalizeChannelTargetInput, d as parseReplyDirectives, f as MEDIA_TOKEN_RE, g as initializeGlobalHookRunner, h as getGlobalHookRunner, i as normalizeOutboundPayloads, l as normalizeTargetForProvider, m as parseInlineDirectives$1, o as normalizeReplyPayloadsForDelivery, p as splitMediaFromOutput, r as formatOutboundPayloadLog, s as buildTargetResolverSignature, t as deliverOutboundPayloads, u as throwIfAborted } from "./deliver-DShQE_sq.js";
|
|
18
18
|
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-BVsSwe-J.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, i as getImageMetadata, m as imageMimeFromFormat, s as resizeToJpeg, x as mediaKindFromMime, y as MAX_IMAGE_BYTES } from "./image-ops-BKUwjozo.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 normalizeDeliveryContext, A as parseImageDimensionError, At as resolveExistingPathsWithinRoot, B as resolveAndPersistSessionFile, Bt as normalizeToolName, C as isFailoverAssistantError, Ct as acquireSessionWriteLock, D as isRawApiErrorPayload, Dt as resolveBrowserConfig, E as isRateLimitAssistantError, Et as registerBrowserRoutes, F as resolveSandboxRuntimeStatus, Ft as buildPluginToolGroups, G as updateLastRoute, Gt as buildBootstrapContextFiles, H as readSessionUpdatedAt, Ht as stripPluginOnlyAllowlist, I as extractDeliveryInfo, It as collectExplicitAllowlist, J as isCacheEnabled, Jt as resolveBootstrapTotalMaxChars, K as updateSessionStore, Kt as ensureSessionHeader, L as parseSessionThreadInfo, Lt as expandPolicyWithPluginGroups, M as sanitizeUserFacingText, Mt as ensureBrowserControlAuth, N as ensureSandboxWorkspaceForSession, Nt as resolveBrowserControlAuth, O as isTimeoutErrorMessage, Ot as resolveProfile, P as resolveSandboxContext, Pt as applyOwnerOnlyToolPolicy, Q as mergeDeliveryContext, R as appendAssistantMessageToSessionTranscript, Rt as expandToolGroups, S as isContextOverflowError, St as resolveGroupSessionKey, T as isLikelyContextOverflowError, Tt as createBrowserRouteContext, U as recordSessionMetaFromInbound, Ut as compileGlobPatterns, V as loadSessionStore, Vt as resolveToolProfilePolicy, Wt as matchesAnyGlobPattern, X as deliveryContextFromSession, Y as resolveCacheTtlMs$1, Yt as sanitizeGoogleTurnOrdering, Z as deliveryContextKey, _ as getApiErrorPayloadFingerprint, _t as resolveFreshSessionTotalTokens, a as normalizeTextForComparison, at as extractToolCallNames, b as isCloudCodeAssistFormatError, bt as resolveMainSessionKey, c as extractToolResultId, ct as hasInterSessionUserProvenance, d as isGoogleModelApi, dt as evaluateSessionFreshness, et as normalizeSessionDeliveryFields, f as BILLING_ERROR_USER_MESSAGE, ft as resolveChannelResetConfig, g as formatRawAssistantErrorForUi, gt as DEFAULT_RESET_TRIGGERS, h as formatBillingErrorMessage, ht as resolveThreadFlag, i as isMessagingToolDuplicateNormalized, it as countToolResults, j as parseImageSizeError, jt as getBridgeAuthForPort, k as isTransientHttpError, kt as DEFAULT_UPLOAD_DIR, l as downgradeOpenAIReasoningBlocks, lt as normalizeInputProvenance, m as formatAssistantErrorText, mt as resolveSessionResetType, n as validateGeminiTurns, nt as archiveSessionTranscripts, o as sanitizeSessionMessagesImages, ot as INPUT_PROVENANCE_KIND_VALUES, p as classifyFailoverReason, pt as resolveSessionResetPolicy, q as updateSessionStoreEntry, qt as resolveBootstrapMaxChars, r as pickFallbackThinkingLevel, rt as capArrayByJsonBytes, s as extractToolCallsFromAssistant, st as applyInputProvenanceToUserMessage, t as validateAnthropicTurns, tt as normalizeAccountId$3, u as isAntigravityClaude, ut as resolveSessionKey, v as isAuthAssistantError, vt as canonicalizeMainSessionAlias, w as isFailoverErrorMessage, wt as resolveSessionLockMaxHoldFromTimeout, x as isCompactionFailureError, xt as deriveSessionMetaPatch, y as isBillingAssistantError, yt as resolveExplicitAgentSessionKey, zt as mergeAlsoAllowPolicy } from "./pi-embedded-helpers-
|
|
25
|
+
import { $ as normalizeDeliveryContext, A as parseImageDimensionError, At as resolveExistingPathsWithinRoot, B as resolveAndPersistSessionFile, Bt as normalizeToolName, C as isFailoverAssistantError, Ct as acquireSessionWriteLock, D as isRawApiErrorPayload, Dt as resolveBrowserConfig, E as isRateLimitAssistantError, Et as registerBrowserRoutes, F as resolveSandboxRuntimeStatus, Ft as buildPluginToolGroups, G as updateLastRoute, Gt as buildBootstrapContextFiles, H as readSessionUpdatedAt, Ht as stripPluginOnlyAllowlist, I as extractDeliveryInfo, It as collectExplicitAllowlist, J as isCacheEnabled, Jt as resolveBootstrapTotalMaxChars, K as updateSessionStore, Kt as ensureSessionHeader, L as parseSessionThreadInfo, Lt as expandPolicyWithPluginGroups, M as sanitizeUserFacingText, Mt as ensureBrowserControlAuth, N as ensureSandboxWorkspaceForSession, Nt as resolveBrowserControlAuth, O as isTimeoutErrorMessage, Ot as resolveProfile, P as resolveSandboxContext, Pt as applyOwnerOnlyToolPolicy, Q as mergeDeliveryContext, R as appendAssistantMessageToSessionTranscript, Rt as expandToolGroups, S as isContextOverflowError, St as resolveGroupSessionKey, T as isLikelyContextOverflowError, Tt as createBrowserRouteContext, U as recordSessionMetaFromInbound, Ut as compileGlobPatterns, V as loadSessionStore, Vt as resolveToolProfilePolicy, Wt as matchesAnyGlobPattern, X as deliveryContextFromSession, Y as resolveCacheTtlMs$1, Yt as sanitizeGoogleTurnOrdering, Z as deliveryContextKey, _ as getApiErrorPayloadFingerprint, _t as resolveFreshSessionTotalTokens, a as normalizeTextForComparison, at as extractToolCallNames, b as isCloudCodeAssistFormatError, bt as resolveMainSessionKey, c as extractToolResultId, ct as hasInterSessionUserProvenance, d as isGoogleModelApi, dt as evaluateSessionFreshness, et as normalizeSessionDeliveryFields, f as BILLING_ERROR_USER_MESSAGE, ft as resolveChannelResetConfig, g as formatRawAssistantErrorForUi, gt as DEFAULT_RESET_TRIGGERS, h as formatBillingErrorMessage, ht as resolveThreadFlag, i as isMessagingToolDuplicateNormalized, it as countToolResults, j as parseImageSizeError, jt as getBridgeAuthForPort, k as isTransientHttpError, kt as DEFAULT_UPLOAD_DIR, l as downgradeOpenAIReasoningBlocks, lt as normalizeInputProvenance, m as formatAssistantErrorText, mt as resolveSessionResetType, n as validateGeminiTurns, nt as archiveSessionTranscripts, o as sanitizeSessionMessagesImages, ot as INPUT_PROVENANCE_KIND_VALUES, p as classifyFailoverReason, pt as resolveSessionResetPolicy, q as updateSessionStoreEntry, qt as resolveBootstrapMaxChars, r as pickFallbackThinkingLevel, rt as capArrayByJsonBytes, s as extractToolCallsFromAssistant, st as applyInputProvenanceToUserMessage, t as validateAnthropicTurns, tt as normalizeAccountId$3, u as isAntigravityClaude, ut as resolveSessionKey, v as isAuthAssistantError, vt as canonicalizeMainSessionAlias, w as isFailoverErrorMessage, wt as resolveSessionLockMaxHoldFromTimeout, x as isCompactionFailureError, xt as deriveSessionMetaPatch, y as isBillingAssistantError, yt as resolveExplicitAgentSessionKey, zt as mergeAlsoAllowPolicy } from "./pi-embedded-helpers-B1k1RWqM.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-BOuq5KZE.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-DWdYdchb.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-WfENE6tB.js";
|
|
29
29
|
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-amp3F-om.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,8 +36,8 @@ 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-CdTyeTEN.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-
|
|
40
|
-
import { i as resolveMemorySearchConfig, n as probeOllamaEmbeddingModels, r as resolveOllamaBaseUrl } from "./manager-
|
|
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-DfzwGNoa.js";
|
|
40
|
+
import { i as resolveMemorySearchConfig, n as probeOllamaEmbeddingModels, r as resolveOllamaBaseUrl } from "./manager-Dp_9v8j5.js";
|
|
41
41
|
import { c as normalizeExtraMemoryPaths, f as runTasksWithConcurrency, s as listMemoryFiles } from "./internal-479FB0St.js";
|
|
42
42
|
import { n as retryAsync } from "./retry-QGp0jvVi.js";
|
|
43
43
|
import { a as createActionGate, c as jsonResult, d as readReactionParams, f as readStringArrayParam, l as parseAvailableTags, m as readStringParam, n as missingTargetError, o as imageResult, p as readStringOrNumberParam, r as unknownTargetError, s as imageResultFromFile, t as ambiguousTargetError, u as readNumberParam } from "./target-errors-43lkDH_r.js";
|
|
@@ -49,7 +49,7 @@ import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-CDdlA9_f.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-iF38r_Xp.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-c5Lly1_3.js";
|
|
51
51
|
import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-CgGv6nTy.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-CaXOtv_D.js";
|
|
53
53
|
import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-WLZaC77l.js";
|
|
54
54
|
import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-BaoETsQI.js";
|
|
55
55
|
import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-C-6tM-GK.js";
|
|
@@ -80,7 +80,7 @@ import { EdgeTTS } from "node-edge-tts";
|
|
|
80
80
|
import AjvPkg from "ajv";
|
|
81
81
|
import { createServer } from "node:http";
|
|
82
82
|
import { ProxyAgent, fetch as fetch$1 } from "undici";
|
|
83
|
-
import WebSocket
|
|
83
|
+
import WebSocket, { WebSocket as WebSocket$1 } from "ws";
|
|
84
84
|
import { Buffer as Buffer$1 } from "node:buffer";
|
|
85
85
|
import { createJiti } from "jiti";
|
|
86
86
|
import { Type } from "@sinclair/typebox";
|
|
@@ -3473,7 +3473,7 @@ async function getMemorySearchManager(params) {
|
|
|
3473
3473
|
const wrapper = new FallbackMemoryManager({
|
|
3474
3474
|
primary,
|
|
3475
3475
|
fallbackFactory: async () => {
|
|
3476
|
-
const { MemoryIndexManager } = await import("./manager-
|
|
3476
|
+
const { MemoryIndexManager } = await import("./manager-Dp_9v8j5.js").then((n) => n.t);
|
|
3477
3477
|
return await MemoryIndexManager.get(params);
|
|
3478
3478
|
}
|
|
3479
3479
|
}, () => QMD_MANAGER_CACHE.delete(cacheKey));
|
|
@@ -3486,7 +3486,7 @@ async function getMemorySearchManager(params) {
|
|
|
3486
3486
|
}
|
|
3487
3487
|
}
|
|
3488
3488
|
try {
|
|
3489
|
-
const { MemoryIndexManager } = await import("./manager-
|
|
3489
|
+
const { MemoryIndexManager } = await import("./manager-Dp_9v8j5.js").then((n) => n.t);
|
|
3490
3490
|
return { manager: await MemoryIndexManager.get(params) };
|
|
3491
3491
|
} catch (err) {
|
|
3492
3492
|
return {
|
|
@@ -5879,7 +5879,7 @@ var GatewayClient = class {
|
|
|
5879
5879
|
if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
|
|
5880
5880
|
});
|
|
5881
5881
|
}
|
|
5882
|
-
this.ws = new WebSocket(url, wsOptions);
|
|
5882
|
+
this.ws = new WebSocket$1(url, wsOptions);
|
|
5883
5883
|
this.ws.on("open", () => {
|
|
5884
5884
|
if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
|
|
5885
5885
|
const tlsError = this.validateTlsFingerprint();
|
|
@@ -6098,7 +6098,7 @@ var GatewayClient = class {
|
|
|
6098
6098
|
return null;
|
|
6099
6099
|
}
|
|
6100
6100
|
async request(method, params, opts) {
|
|
6101
|
-
if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
|
|
6101
|
+
if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("gateway not connected");
|
|
6102
6102
|
const id = randomUUID();
|
|
6103
6103
|
const frame = {
|
|
6104
6104
|
type: "req",
|
|
@@ -7339,7 +7339,7 @@ async function routeReply(params) {
|
|
|
7339
7339
|
const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
|
|
7340
7340
|
const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
|
|
7341
7341
|
try {
|
|
7342
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
7342
|
+
const { deliverOutboundPayloads } = await import("./deliver-DShQE_sq.js").then((n) => n.n);
|
|
7343
7343
|
return {
|
|
7344
7344
|
ok: true,
|
|
7345
7345
|
messageId: (await deliverOutboundPayloads({
|
|
@@ -22085,6 +22085,40 @@ function sanitizeForPromptLiteral(value) {
|
|
|
22085
22085
|
|
|
22086
22086
|
//#endregion
|
|
22087
22087
|
//#region src/agents/system-prompt.ts
|
|
22088
|
+
/**
|
|
22089
|
+
* Read up to `limit` markdown filenames from `<workspaceDir>/memory/`,
|
|
22090
|
+
* sorted by mtime descending. Returns relative names (e.g. "2026-04-30.md")
|
|
22091
|
+
* for inlining into the system prompt — gives the agent the actual file
|
|
22092
|
+
* surface so it doesn't speculate names like "memory/2026-04-30.md" from
|
|
22093
|
+
* training-data priors. Resilient: missing dir → [], unreadable → [].
|
|
22094
|
+
*/
|
|
22095
|
+
function listWorkspaceMemoryFiles(workspaceDir, limit = 10) {
|
|
22096
|
+
if (!workspaceDir) return [];
|
|
22097
|
+
const memoryDir = path.join(workspaceDir, "memory");
|
|
22098
|
+
let entries;
|
|
22099
|
+
try {
|
|
22100
|
+
entries = fs.readdirSync(memoryDir, { withFileTypes: true });
|
|
22101
|
+
} catch {
|
|
22102
|
+
return [];
|
|
22103
|
+
}
|
|
22104
|
+
const files = [];
|
|
22105
|
+
for (const entry of entries) {
|
|
22106
|
+
if (!entry.isFile()) continue;
|
|
22107
|
+
if (!entry.name.toLowerCase().endsWith(".md")) continue;
|
|
22108
|
+
let mtimeMs = 0;
|
|
22109
|
+
try {
|
|
22110
|
+
mtimeMs = fs.statSync(path.join(memoryDir, entry.name)).mtimeMs;
|
|
22111
|
+
} catch {
|
|
22112
|
+
mtimeMs = 0;
|
|
22113
|
+
}
|
|
22114
|
+
files.push({
|
|
22115
|
+
name: entry.name,
|
|
22116
|
+
mtimeMs
|
|
22117
|
+
});
|
|
22118
|
+
}
|
|
22119
|
+
files.sort((a, b) => b.mtimeMs - a.mtimeMs);
|
|
22120
|
+
return files.slice(0, limit).map((f) => f.name);
|
|
22121
|
+
}
|
|
22088
22122
|
function buildSkillsSection(params) {
|
|
22089
22123
|
if (params.isMinimal) return [];
|
|
22090
22124
|
if (params.dropCatalog) return [];
|
|
@@ -22108,13 +22142,21 @@ function buildMemorySection(params) {
|
|
|
22108
22142
|
"## Memory Recall",
|
|
22109
22143
|
"Before answering anything about prior work, decisions, dates, people, preferences, or todos: run memory_search on MEMORY.md + memory/*.md; then use memory_get to pull only the needed lines. If low confidence after search, say you checked.",
|
|
22110
22144
|
"",
|
|
22145
|
+
"**Never speculate memory file paths.** Use memory_search to find content; do not construct paths like `memory/<date>.md` from training-data priors and call read on them — that produces ENOENT spam and trips the consecutive-tool-error breaker.",
|
|
22146
|
+
"",
|
|
22111
22147
|
"Memory is split into two layers you will see as files:",
|
|
22112
22148
|
"- `MEMORY.md` — user-authored short-term memory. Hand-edited by the user; treat as ground truth they wrote themselves. Never rewrite it yourself.",
|
|
22113
|
-
"- `memory/symi-core.md` + `memory/symi-beliefs.md` — long-term memory automatically consolidated from repeated observations (your evolving self). Do NOT hand-edit these files: they are regenerated each consolidation cycle. When the files disagree with a fresh user statement, trust the fresh statement and write a new observation
|
|
22114
|
-
"- `memory
|
|
22115
|
-
"",
|
|
22116
|
-
"When the user explicitly asks to *remember* or *always remember* something, after writing the observation also call `memory_pin` with a distinctive query so the fact survives pruning. Call `memory_unpin` when the user says to forget it."
|
|
22149
|
+
"- `memory/symi-core.md` + `memory/symi-beliefs.md` — long-term memory automatically consolidated from repeated observations (your evolving self). Do NOT hand-edit these files: they are regenerated each consolidation cycle. When the files disagree with a fresh user statement, trust the fresh statement and write a new observation. The cycle will reconcile them.",
|
|
22150
|
+
"- New observations go in dated daily files (e.g. `memory/<today>.md`); use `memory_search` to discover what already exists rather than guessing filenames."
|
|
22117
22151
|
];
|
|
22152
|
+
const memoryFiles = (params.workspaceMemoryFiles ?? []).filter(Boolean);
|
|
22153
|
+
if (memoryFiles.length > 0) {
|
|
22154
|
+
lines.push("");
|
|
22155
|
+
lines.push("Existing memory files in this workspace (most-recently-modified first):");
|
|
22156
|
+
for (const name of memoryFiles) lines.push(`- \`memory/${name}\``);
|
|
22157
|
+
}
|
|
22158
|
+
lines.push("");
|
|
22159
|
+
lines.push("When the user explicitly asks to *remember* or *always remember* something, after writing the observation also call `memory_pin` with a distinctive query so the fact survives pruning. Call `memory_unpin` when the user says to forget it.");
|
|
22118
22160
|
if (params.citationsMode === "off") lines.push("Citations are disabled: do not mention file paths or line numbers in replies unless the user explicitly asks.");
|
|
22119
22161
|
else lines.push("Citations: include Source: <path#line> when it helps the user verify memory snippets.");
|
|
22120
22162
|
lines.push("");
|
|
@@ -22403,7 +22445,8 @@ function buildAgentSystemPrompt(params) {
|
|
|
22403
22445
|
const memorySection = buildMemorySection({
|
|
22404
22446
|
isMinimal,
|
|
22405
22447
|
availableTools,
|
|
22406
|
-
citationsMode: params.memoryCitationsMode
|
|
22448
|
+
citationsMode: params.memoryCitationsMode,
|
|
22449
|
+
workspaceMemoryFiles: listWorkspaceMemoryFiles(params.workspaceDir)
|
|
22407
22450
|
});
|
|
22408
22451
|
const docsSection = buildDocsSection({
|
|
22409
22452
|
docsPath: params.docsPath,
|
|
@@ -22441,6 +22484,11 @@ function buildAgentSystemPrompt(params) {
|
|
|
22441
22484
|
"If a task is more complex or takes longer, spawn a sub-agent. Completion is push-based: it will auto-announce when done.",
|
|
22442
22485
|
"Do not poll `subagents list` / `sessions_list` in a loop; only check status on-demand (for intervention, debugging, or when explicitly asked).",
|
|
22443
22486
|
"",
|
|
22487
|
+
"## Tool Use Discipline (mandatory)",
|
|
22488
|
+
"- If the user explicitly tells you to use a tool (e.g., \"use exec to run X\", \"read the file with read\", \"check the hostname\"), you MUST invoke that tool. Do not answer from training data or memory in place of the tool call.",
|
|
22489
|
+
"- Never narrate or quote tool output you did not actually receive from a real tool result. Writing \"I ran X and got Y\" without a corresponding tool invocation is fabrication and breaks user trust.",
|
|
22490
|
+
"- For factual local-system lookups (hostname, file contents, process state, env vars, current dir, system info), the answer comes from invoking the appropriate tool — not from priors. Always invoke.",
|
|
22491
|
+
"",
|
|
22444
22492
|
...compactMode ? [] : [
|
|
22445
22493
|
"## Tool Call Style",
|
|
22446
22494
|
"Default: do not narrate routine, low-risk tool calls (just call the tool).",
|
|
@@ -39428,7 +39476,7 @@ async function deliverSessionMaintenanceWarning(params) {
|
|
|
39428
39476
|
return;
|
|
39429
39477
|
}
|
|
39430
39478
|
try {
|
|
39431
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
39479
|
+
const { deliverOutboundPayloads } = await import("./deliver-DShQE_sq.js").then((n) => n.n);
|
|
39432
39480
|
await deliverOutboundPayloads({
|
|
39433
39481
|
cfg: params.cfg,
|
|
39434
39482
|
channel,
|
|
@@ -40611,7 +40659,11 @@ const SAFETY_AND_STYLE_ADDITIONS = [
|
|
|
40611
40659
|
"- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
|
|
40612
40660
|
"- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
|
|
40613
40661
|
"- If you need to verify your work, do so before writing your response, not after.",
|
|
40614
|
-
"- Send brief progress updates on long tasks so the user knows you are active."
|
|
40662
|
+
"- Send brief progress updates on long tasks so the user knows you are active.",
|
|
40663
|
+
"TOOL USE DISCIPLINE (no fabrication):",
|
|
40664
|
+
"- If the user asks you to use a tool (e.g., 'use exec to run X', 'read the file', 'check the hostname'), you MUST invoke that tool. Do not answer from training data or priors in place of an actual tool call.",
|
|
40665
|
+
"- Never narrate or quote tool output you did not receive from a real tool result. Writing 'I ran X and got Y' without a corresponding tool call is fabrication.",
|
|
40666
|
+
"- For local-system facts (hostname, file contents, process state, env vars, current dir), the answer comes from running the tool, not from priors — always invoke."
|
|
40615
40667
|
];
|
|
40616
40668
|
/** Hint for native-reasoning models (Nemotron, Qwen 3.5/3.6) to keep
|
|
40617
40669
|
* planning internal. Not applied to Gemma/Ollama because those models
|
|
@@ -53612,7 +53664,7 @@ async function describeStickerImage(params) {
|
|
|
53612
53664
|
logVerbose(`telegram: describing sticker with ${provider}/${model}`);
|
|
53613
53665
|
try {
|
|
53614
53666
|
const buffer = await fs$1.readFile(imagePath);
|
|
53615
|
-
const { describeImageWithModel } = await import("./image-
|
|
53667
|
+
const { describeImageWithModel } = await import("./image-DfzwGNoa.js").then((n) => n.n);
|
|
53616
53668
|
return (await describeImageWithModel({
|
|
53617
53669
|
buffer,
|
|
53618
53670
|
fileName: "sticker.webp",
|
|
@@ -56361,7 +56413,7 @@ async function preflightDiscordMessage(params) {
|
|
|
56361
56413
|
let preflightTranscript;
|
|
56362
56414
|
const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
|
|
56363
56415
|
if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
|
|
56364
|
-
const { transcribeFirstAudio } = await import("./audio-preflight-
|
|
56416
|
+
const { transcribeFirstAudio } = await import("./audio-preflight-BrKBM7JM.js");
|
|
56365
56417
|
const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
|
|
56366
56418
|
if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
|
|
56367
56419
|
ctx: {
|
|
@@ -60884,7 +60936,7 @@ function setCliSessionId(entry, provider, sessionId) {
|
|
|
60884
60936
|
function createDefaultDeps() {
|
|
60885
60937
|
return {
|
|
60886
60938
|
sendMessageWhatsApp: async (...args) => {
|
|
60887
|
-
const { sendMessageWhatsApp } = await import("./web-
|
|
60939
|
+
const { sendMessageWhatsApp } = await import("./web-DuUOtg8X.js");
|
|
60888
60940
|
return await sendMessageWhatsApp(...args);
|
|
60889
60941
|
},
|
|
60890
60942
|
sendMessageTelegram: async (...args) => {
|
|
@@ -63789,7 +63841,7 @@ function createDiscordGatewayPlugin(params) {
|
|
|
63789
63841
|
super(options);
|
|
63790
63842
|
}
|
|
63791
63843
|
createWebSocket(url) {
|
|
63792
|
-
return new WebSocket
|
|
63844
|
+
return new WebSocket(url, { agent });
|
|
63793
63845
|
}
|
|
63794
63846
|
}
|
|
63795
63847
|
return new ProxyGatewayPlugin();
|
|
@@ -74007,7 +74059,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
|
|
|
74007
74059
|
const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
|
|
74008
74060
|
let preflightTranscript;
|
|
74009
74061
|
if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
|
|
74010
|
-
const { transcribeFirstAudio } = await import("./audio-preflight-
|
|
74062
|
+
const { transcribeFirstAudio } = await import("./audio-preflight-BrKBM7JM.js");
|
|
74011
74063
|
preflightTranscript = await transcribeFirstAudio({
|
|
74012
74064
|
ctx: {
|
|
74013
74065
|
MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
|
|
@@ -76164,7 +76216,7 @@ function loadWebLoginQr() {
|
|
|
76164
76216
|
return webLoginQrPromise;
|
|
76165
76217
|
}
|
|
76166
76218
|
function loadWebChannel() {
|
|
76167
|
-
webChannelPromise ??= import("./web-
|
|
76219
|
+
webChannelPromise ??= import("./web-DuUOtg8X.js");
|
|
76168
76220
|
return webChannelPromise;
|
|
76169
76221
|
}
|
|
76170
76222
|
function loadWhatsAppActions() {
|
|
@@ -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-BKUwjozo.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-BOuq5KZE.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-WfENE6tB.js";
|
|
14
14
|
import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-amp3F-om.js";
|
|
15
15
|
import { n as formatErrorMessage, t as extractErrorCode } from "./errors-CPfngF0S.js";
|
|
16
16
|
import { t as SsrFBlockedError } from "./ssrf-CxfFyMRZ.js";
|
|
@@ -938,7 +938,7 @@ function isModuleNotFoundError(err) {
|
|
|
938
938
|
}
|
|
939
939
|
async function loadPwAiModule(mode) {
|
|
940
940
|
try {
|
|
941
|
-
return await import("./pw-ai-
|
|
941
|
+
return await import("./pw-ai-Dd_QrTWR.js");
|
|
942
942
|
} catch (err) {
|
|
943
943
|
if (mode === "soft") return null;
|
|
944
944
|
if (isModuleNotFoundError(err)) return null;
|
|
@@ -3478,11 +3478,11 @@ function createProfileContext(opts, profile) {
|
|
|
3478
3478
|
const userDataDir = resolveSymiUserDataDir(profile.name);
|
|
3479
3479
|
const profileState = getProfileState();
|
|
3480
3480
|
if (await isHttpReachable(300) && !profileState.running) try {
|
|
3481
|
-
await (await import("./pw-ai-
|
|
3481
|
+
await (await import("./pw-ai-Dd_QrTWR.js")).closePlaywrightBrowserConnection();
|
|
3482
3482
|
} catch {}
|
|
3483
3483
|
if (profileState.running) await stopRunningBrowser();
|
|
3484
3484
|
try {
|
|
3485
|
-
await (await import("./pw-ai-
|
|
3485
|
+
await (await import("./pw-ai-Dd_QrTWR.js")).closePlaywrightBrowserConnection();
|
|
3486
3486
|
} catch {}
|
|
3487
3487
|
if (!fs.existsSync(userDataDir)) return {
|
|
3488
3488
|
moved: false,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
2
|
-
import { s as loadSymiPlugins } from "./unified-runner-
|
|
2
|
+
import { s as loadSymiPlugins } from "./unified-runner-DWZT5BCl.js";
|
|
3
3
|
import { d as getActivePluginRegistry } from "./registry-ClO_zVv-.js";
|
|
4
4
|
import { t as createSubsystemLogger } from "./subsystem-zqierDLj.js";
|
|
5
5
|
import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-BajBuriF.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-xM36I1Em.js";
|
|
4
4
|
import { i as loadConfig } from "./config-BaxT9cN4.js";
|
|
5
|
-
import { m as loadSymiPlugins } from "./subagent-registry-
|
|
5
|
+
import { m as loadSymiPlugins } from "./subagent-registry-Y_8a_o-m.js";
|
|
6
6
|
|
|
7
7
|
//#region src/cli/plugin-registry.ts
|
|
8
8
|
var plugin_registry_exports = /* @__PURE__ */ __exportAll({ ensurePluginRegistryLoaded: () => ensurePluginRegistryLoaded });
|
|
@@ -2,6 +2,14 @@ import type { ReasoningLevel, ThinkLevel } from "../auto-reply/thinking.js";
|
|
|
2
2
|
import type { MemoryCitationsMode } from "../config/types.memory.js";
|
|
3
3
|
import type { ResolvedTimeFormat } from "./date-time.js";
|
|
4
4
|
import type { EmbeddedContextFile } from "./pi-embedded-helpers.js";
|
|
5
|
+
/**
|
|
6
|
+
* Read up to `limit` markdown filenames from `<workspaceDir>/memory/`,
|
|
7
|
+
* sorted by mtime descending. Returns relative names (e.g. "2026-04-30.md")
|
|
8
|
+
* for inlining into the system prompt — gives the agent the actual file
|
|
9
|
+
* surface so it doesn't speculate names like "memory/2026-04-30.md" from
|
|
10
|
+
* training-data priors. Resilient: missing dir → [], unreadable → [].
|
|
11
|
+
*/
|
|
12
|
+
export declare function listWorkspaceMemoryFiles(workspaceDir: string, limit?: number): string[];
|
|
5
13
|
/**
|
|
6
14
|
* Controls which hardcoded sections are included in the system prompt.
|
|
7
15
|
* - "full": All sections (default, for main agent)
|
|
@@ -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 { G as resolveMentionGating, W as shouldAckReactionForWhatsApp, X as buildHistoryContextFromEntries, Y as DEFAULT_GROUP_HISTORY_LIMIT, _ as formatInboundEnvelope, b as shouldComputeCommandAuthorized, c as buildPairingReply, d as formatDurationPrecise, f as enqueueSystemEvent, g as resolveInboundDebounceMs, h as createInboundDebouncer, ht as createDedupeCache, l as dispatchReplyWithBufferedBlockDispatcher, m as parseActivationCommand, nt as buildMentionRegexes, o as computeBackoff, p as normalizeGroupActivation, rt as normalizeMentionText, s as sleepWithAbort, tt as recordPendingHistoryEntryIfEnabled, v as resolveEnvelopeFormatOptions, y as hasControlCommand } from "./unified-runner-
|
|
3
|
+
import { G as resolveMentionGating, W as shouldAckReactionForWhatsApp, X as buildHistoryContextFromEntries, Y as DEFAULT_GROUP_HISTORY_LIMIT, _ as formatInboundEnvelope, b as shouldComputeCommandAuthorized, c as buildPairingReply, d as formatDurationPrecise, f as enqueueSystemEvent, g as resolveInboundDebounceMs, h as createInboundDebouncer, ht as createDedupeCache, l as dispatchReplyWithBufferedBlockDispatcher, m as parseActivationCommand, nt as buildMentionRegexes, o as computeBackoff, p as normalizeGroupActivation, rt as normalizeMentionText, s as sleepWithAbort, tt as recordPendingHistoryEntryIfEnabled, v as resolveEnvelopeFormatOptions, y as hasControlCommand } from "./unified-runner-KBVvJUFF.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-BBBu18xQ.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 processLineMessage, Ct as unbindThreadBindingsBySessionKey, D as resolveSlackUserAllowlist, Dt as BLUEBUBBLES_ACTION_NAMES, E as attachFooterText, 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 hasMarkdownToConvert, St as listThreadBindingsBySessionKey, T as createReceiptCard, 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 resolveLineAccount, 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 resolveDefaultLineAccountId, it as isWSL2Sync, j as resolveDiscordChannelAllowlist, k as detectBinary, kt as CHANNEL_MESSAGE_ACTION_NAMES, lt as RequestBodyLimitError, mt as requestBodyErrorToText, n as listLineAccountIds, ot as isWSLSync, pt as readRequestBodyWithLimit, q as mergeAllowlist, r as normalizeAccountId$1, st as DEFAULT_WEBHOOK_BODY_TIMEOUT_MS, tt as recordPendingHistoryEntryIfEnabled, ut as installRequestBodyLimitGuard, vt as rejectDevicePairing, w as stripMarkdown, wt as formatAllowlistMatchMeta, xt as autoBindSpawnedDiscordSubagent, yt as extractToolSend, z as logInboundDrop } from "./unified-runner-
|
|
3
|
+
import { $ as clearHistoryEntriesIfEnabled, A as resolveDiscordUserAllowlist, B as logTypingFailure, C as processLineMessage, Ct as unbindThreadBindingsBySessionKey, D as resolveSlackUserAllowlist, Dt as BLUEBUBBLES_ACTION_NAMES, E as attachFooterText, 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 hasMarkdownToConvert, St as listThreadBindingsBySessionKey, T as createReceiptCard, 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 resolveLineAccount, 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 resolveDefaultLineAccountId, it as isWSL2Sync, j as resolveDiscordChannelAllowlist, k as detectBinary, kt as CHANNEL_MESSAGE_ACTION_NAMES, lt as RequestBodyLimitError, mt as requestBodyErrorToText, n as listLineAccountIds, ot as isWSLSync, pt as readRequestBodyWithLimit, q as mergeAllowlist, r as normalizeAccountId$1, st as DEFAULT_WEBHOOK_BODY_TIMEOUT_MS, tt as recordPendingHistoryEntryIfEnabled, ut as installRequestBodyLimitGuard, vt as rejectDevicePairing, w as stripMarkdown, wt as formatAllowlistMatchMeta, xt as autoBindSpawnedDiscordSubagent, yt as extractToolSend, z as logInboundDrop } from "./unified-runner-KBVvJUFF.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-muf5lfx-.js";
|
|
@@ -47,12 +47,12 @@ import "./paths-A0xdf3yk.js";
|
|
|
47
47
|
import { h as onDiagnosticEvent, m as isDiagnosticsEnabled, p as emitDiagnosticEvent } from "./diagnostic-fnIb_o_V.js";
|
|
48
48
|
import { n as extractOriginalFilename } from "./store-uf7TpQm3.js";
|
|
49
49
|
import { t as resolveWhatsAppOutboundTarget } from "./resolve-outbound-target-BkHNUpdB.js";
|
|
50
|
-
import { r as resolveWhatsAppHeartbeatRecipients } from "./channel-web
|
|
50
|
+
import { r as resolveWhatsAppHeartbeatRecipients } from "./channel-web-DAJtsqF_.js";
|
|
51
51
|
import "./diagnostic-session-state-DnkpMfCl.js";
|
|
52
52
|
import "./image-B7fj8HDX.js";
|
|
53
53
|
import "./pi-auth-json-BOqOPkC8.js";
|
|
54
54
|
import "./pi-model-discovery-Cdz3tuFk.js";
|
|
55
|
-
import "./manager-
|
|
55
|
+
import "./manager-DhiL-RSO.js";
|
|
56
56
|
import "./gemini-auth-lC1AI-WK.js";
|
|
57
57
|
import "./sqlite-BflKfcLD.js";
|
|
58
58
|
import "./commands-registry-L_7UhT9Y.js";
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Register an AbortController as the controller for an in-flight
|
|
3
|
+
* heartbeat run on `sessionKey`. If a previous controller exists for
|
|
4
|
+
* the same key (shouldn't happen — heartbeats are serialized per
|
|
5
|
+
* session — but be defensive), abort it before replacing.
|
|
6
|
+
*/
|
|
7
|
+
export declare function registerHeartbeatRun(sessionKey: string, controller: AbortController): void;
|
|
8
|
+
/**
|
|
9
|
+
* Drop the controller for `sessionKey` from the registry. Called from
|
|
10
|
+
* the heartbeat runner's finally block once the run has completed
|
|
11
|
+
* (successfully, with an error, or via abort).
|
|
12
|
+
*/
|
|
13
|
+
export declare function clearHeartbeatRun(sessionKey: string): void;
|
|
14
|
+
/**
|
|
15
|
+
* Abort the active heartbeat (if any) for `sessionKey`. Returns true
|
|
16
|
+
* when an abort was issued, false when no heartbeat was in flight.
|
|
17
|
+
*
|
|
18
|
+
* Called from the chat.send handler before it enqueues the user turn,
|
|
19
|
+
* so the user's message doesn't sit behind a heartbeat that may take
|
|
20
|
+
* 30s+ to finish. The aborted heartbeat will fire again on the next
|
|
21
|
+
* pulse interval — no state to recover.
|
|
22
|
+
*/
|
|
23
|
+
export declare function abortHeartbeatRunForSession(sessionKey: string): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Snapshot of currently-tracked heartbeat session keys. Test-only;
|
|
26
|
+
* production code should not rely on enumeration since the set is
|
|
27
|
+
* fundamentally racy.
|
|
28
|
+
*/
|
|
29
|
+
export declare function listActiveHeartbeatSessionsForTest(): string[];
|
|
30
|
+
/**
|
|
31
|
+
* Drop every controller from the registry without aborting them.
|
|
32
|
+
* Test-only — used by suite setup/teardown to keep state isolated.
|
|
33
|
+
*/
|
|
34
|
+
export declare function resetActiveHeartbeatRunsForTest(): void;
|
|
@@ -3970,7 +3970,7 @@ var MemoryIndexManager = class MemoryIndexManager extends MemoryManagerEmbedding
|
|
|
3970
3970
|
* to bypass the min-interval guard (CLI use).
|
|
3971
3971
|
*/
|
|
3972
3972
|
async runL3CycleIfDue(params) {
|
|
3973
|
-
const [{ runL3Cycle, runL3CycleIfDue }, { createSynthesizer }] = await Promise.all([import("./consolidate-BieO-_k_.js"), import("./synthesis-
|
|
3973
|
+
const [{ runL3Cycle, runL3CycleIfDue }, { createSynthesizer }] = await Promise.all([import("./consolidate-BieO-_k_.js"), import("./synthesis-cOQ27lCy.js")]);
|
|
3974
3974
|
const synthesize = createSynthesizer({
|
|
3975
3975
|
cfg: this.cfg,
|
|
3976
3976
|
agentId: this.agentId,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./accounts-D9zGZU5t.js";
|
|
2
|
-
import { t as runAgentTurn } from "./unified-runner-
|
|
2
|
+
import { t as runAgentTurn } from "./unified-runner-KBVvJUFF.js";
|
|
3
3
|
import "./paths-DR2yt_mP.js";
|
|
4
4
|
import "./github-copilot-token-D9X2phUj.js";
|
|
5
5
|
import "./plugins-muf5lfx-.js";
|
|
@@ -49,7 +49,7 @@ import "./diagnostic-session-state-DnkpMfCl.js";
|
|
|
49
49
|
import "./image-B7fj8HDX.js";
|
|
50
50
|
import "./pi-auth-json-BOqOPkC8.js";
|
|
51
51
|
import "./pi-model-discovery-Cdz3tuFk.js";
|
|
52
|
-
import "./manager-
|
|
52
|
+
import "./manager-DhiL-RSO.js";
|
|
53
53
|
import "./gemini-auth-lC1AI-WK.js";
|
|
54
54
|
import "./sqlite-BflKfcLD.js";
|
|
55
55
|
import "./commands-registry-L_7UhT9Y.js";
|
|
@@ -52,7 +52,7 @@ import { r as getDiagnosticSessionState } from "./diagnostic-session-state-DnkpM
|
|
|
52
52
|
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-B7fj8HDX.js";
|
|
53
53
|
import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-BOqOPkC8.js";
|
|
54
54
|
import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-Cdz3tuFk.js";
|
|
55
|
-
import { i as resolveMemorySearchConfig, n as probeOllamaEmbeddingModels, r as resolveOllamaBaseUrl } from "./manager-
|
|
55
|
+
import { i as resolveMemorySearchConfig, n as probeOllamaEmbeddingModels, r as resolveOllamaBaseUrl } from "./manager-DhiL-RSO.js";
|
|
56
56
|
import { c as normalizeExtraMemoryPaths, f as runTasksWithConcurrency, s as listMemoryFiles } from "./internal-BpFmQTvo.js";
|
|
57
57
|
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-L_7UhT9Y.js";
|
|
58
58
|
import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-5H7RKVif.js";
|
|
@@ -5900,7 +5900,11 @@ const SAFETY_AND_STYLE_ADDITIONS = [
|
|
|
5900
5900
|
"- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
|
|
5901
5901
|
"- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
|
|
5902
5902
|
"- If you need to verify your work, do so before writing your response, not after.",
|
|
5903
|
-
"- Send brief progress updates on long tasks so the user knows you are active."
|
|
5903
|
+
"- Send brief progress updates on long tasks so the user knows you are active.",
|
|
5904
|
+
"TOOL USE DISCIPLINE (no fabrication):",
|
|
5905
|
+
"- If the user asks you to use a tool (e.g., 'use exec to run X', 'read the file', 'check the hostname'), you MUST invoke that tool. Do not answer from training data or priors in place of an actual tool call.",
|
|
5906
|
+
"- Never narrate or quote tool output you did not receive from a real tool result. Writing 'I ran X and got Y' without a corresponding tool call is fabrication.",
|
|
5907
|
+
"- For local-system facts (hostname, file contents, process state, env vars, current dir), the answer comes from running the tool, not from priors — always invoke."
|
|
5904
5908
|
];
|
|
5905
5909
|
/** Hint for native-reasoning models (Nemotron, Qwen 3.5/3.6) to keep
|
|
5906
5910
|
* planning internal. Not applied to Gemma/Ollama because those models
|
|
@@ -9625,7 +9629,7 @@ async function getMemorySearchManager(params) {
|
|
|
9625
9629
|
const wrapper = new FallbackMemoryManager({
|
|
9626
9630
|
primary,
|
|
9627
9631
|
fallbackFactory: async () => {
|
|
9628
|
-
const { MemoryIndexManager } = await import("./manager-
|
|
9632
|
+
const { MemoryIndexManager } = await import("./manager-DhiL-RSO.js").then((n) => n.t);
|
|
9629
9633
|
return await MemoryIndexManager.get(params);
|
|
9630
9634
|
}
|
|
9631
9635
|
}, () => QMD_MANAGER_CACHE.delete(cacheKey));
|
|
@@ -9638,7 +9642,7 @@ async function getMemorySearchManager(params) {
|
|
|
9638
9642
|
}
|
|
9639
9643
|
}
|
|
9640
9644
|
try {
|
|
9641
|
-
const { MemoryIndexManager } = await import("./manager-
|
|
9645
|
+
const { MemoryIndexManager } = await import("./manager-DhiL-RSO.js").then((n) => n.t);
|
|
9642
9646
|
return { manager: await MemoryIndexManager.get(params) };
|
|
9643
9647
|
} catch (err) {
|
|
9644
9648
|
return {
|
|
@@ -12104,6 +12108,40 @@ function buildSkillsJitBlocks(opts) {
|
|
|
12104
12108
|
|
|
12105
12109
|
//#endregion
|
|
12106
12110
|
//#region src/agents/system-prompt.ts
|
|
12111
|
+
/**
|
|
12112
|
+
* Read up to `limit` markdown filenames from `<workspaceDir>/memory/`,
|
|
12113
|
+
* sorted by mtime descending. Returns relative names (e.g. "2026-04-30.md")
|
|
12114
|
+
* for inlining into the system prompt — gives the agent the actual file
|
|
12115
|
+
* surface so it doesn't speculate names like "memory/2026-04-30.md" from
|
|
12116
|
+
* training-data priors. Resilient: missing dir → [], unreadable → [].
|
|
12117
|
+
*/
|
|
12118
|
+
function listWorkspaceMemoryFiles(workspaceDir, limit = 10) {
|
|
12119
|
+
if (!workspaceDir) return [];
|
|
12120
|
+
const memoryDir = path.join(workspaceDir, "memory");
|
|
12121
|
+
let entries;
|
|
12122
|
+
try {
|
|
12123
|
+
entries = fs.readdirSync(memoryDir, { withFileTypes: true });
|
|
12124
|
+
} catch {
|
|
12125
|
+
return [];
|
|
12126
|
+
}
|
|
12127
|
+
const files = [];
|
|
12128
|
+
for (const entry of entries) {
|
|
12129
|
+
if (!entry.isFile()) continue;
|
|
12130
|
+
if (!entry.name.toLowerCase().endsWith(".md")) continue;
|
|
12131
|
+
let mtimeMs = 0;
|
|
12132
|
+
try {
|
|
12133
|
+
mtimeMs = fs.statSync(path.join(memoryDir, entry.name)).mtimeMs;
|
|
12134
|
+
} catch {
|
|
12135
|
+
mtimeMs = 0;
|
|
12136
|
+
}
|
|
12137
|
+
files.push({
|
|
12138
|
+
name: entry.name,
|
|
12139
|
+
mtimeMs
|
|
12140
|
+
});
|
|
12141
|
+
}
|
|
12142
|
+
files.sort((a, b) => b.mtimeMs - a.mtimeMs);
|
|
12143
|
+
return files.slice(0, limit).map((f) => f.name);
|
|
12144
|
+
}
|
|
12107
12145
|
function buildSkillsSection(params) {
|
|
12108
12146
|
if (params.isMinimal) return [];
|
|
12109
12147
|
if (params.dropCatalog) return [];
|
|
@@ -12127,13 +12165,21 @@ function buildMemorySection(params) {
|
|
|
12127
12165
|
"## Memory Recall",
|
|
12128
12166
|
"Before answering anything about prior work, decisions, dates, people, preferences, or todos: run memory_search on MEMORY.md + memory/*.md; then use memory_get to pull only the needed lines. If low confidence after search, say you checked.",
|
|
12129
12167
|
"",
|
|
12168
|
+
"**Never speculate memory file paths.** Use memory_search to find content; do not construct paths like `memory/<date>.md` from training-data priors and call read on them — that produces ENOENT spam and trips the consecutive-tool-error breaker.",
|
|
12169
|
+
"",
|
|
12130
12170
|
"Memory is split into two layers you will see as files:",
|
|
12131
12171
|
"- `MEMORY.md` — user-authored short-term memory. Hand-edited by the user; treat as ground truth they wrote themselves. Never rewrite it yourself.",
|
|
12132
|
-
"- `memory/symi-core.md` + `memory/symi-beliefs.md` — long-term memory automatically consolidated from repeated observations (your evolving self). Do NOT hand-edit these files: they are regenerated each consolidation cycle. When the files disagree with a fresh user statement, trust the fresh statement and write a new observation
|
|
12133
|
-
"- `memory
|
|
12134
|
-
"",
|
|
12135
|
-
"When the user explicitly asks to *remember* or *always remember* something, after writing the observation also call `memory_pin` with a distinctive query so the fact survives pruning. Call `memory_unpin` when the user says to forget it."
|
|
12172
|
+
"- `memory/symi-core.md` + `memory/symi-beliefs.md` — long-term memory automatically consolidated from repeated observations (your evolving self). Do NOT hand-edit these files: they are regenerated each consolidation cycle. When the files disagree with a fresh user statement, trust the fresh statement and write a new observation. The cycle will reconcile them.",
|
|
12173
|
+
"- New observations go in dated daily files (e.g. `memory/<today>.md`); use `memory_search` to discover what already exists rather than guessing filenames."
|
|
12136
12174
|
];
|
|
12175
|
+
const memoryFiles = (params.workspaceMemoryFiles ?? []).filter(Boolean);
|
|
12176
|
+
if (memoryFiles.length > 0) {
|
|
12177
|
+
lines.push("");
|
|
12178
|
+
lines.push("Existing memory files in this workspace (most-recently-modified first):");
|
|
12179
|
+
for (const name of memoryFiles) lines.push(`- \`memory/${name}\``);
|
|
12180
|
+
}
|
|
12181
|
+
lines.push("");
|
|
12182
|
+
lines.push("When the user explicitly asks to *remember* or *always remember* something, after writing the observation also call `memory_pin` with a distinctive query so the fact survives pruning. Call `memory_unpin` when the user says to forget it.");
|
|
12137
12183
|
if (params.citationsMode === "off") lines.push("Citations are disabled: do not mention file paths or line numbers in replies unless the user explicitly asks.");
|
|
12138
12184
|
else lines.push("Citations: include Source: <path#line> when it helps the user verify memory snippets.");
|
|
12139
12185
|
lines.push("");
|
|
@@ -12422,7 +12468,8 @@ function buildAgentSystemPrompt(params) {
|
|
|
12422
12468
|
const memorySection = buildMemorySection({
|
|
12423
12469
|
isMinimal,
|
|
12424
12470
|
availableTools,
|
|
12425
|
-
citationsMode: params.memoryCitationsMode
|
|
12471
|
+
citationsMode: params.memoryCitationsMode,
|
|
12472
|
+
workspaceMemoryFiles: listWorkspaceMemoryFiles(params.workspaceDir)
|
|
12426
12473
|
});
|
|
12427
12474
|
const docsSection = buildDocsSection({
|
|
12428
12475
|
docsPath: params.docsPath,
|
|
@@ -12460,6 +12507,11 @@ function buildAgentSystemPrompt(params) {
|
|
|
12460
12507
|
"If a task is more complex or takes longer, spawn a sub-agent. Completion is push-based: it will auto-announce when done.",
|
|
12461
12508
|
"Do not poll `subagents list` / `sessions_list` in a loop; only check status on-demand (for intervention, debugging, or when explicitly asked).",
|
|
12462
12509
|
"",
|
|
12510
|
+
"## Tool Use Discipline (mandatory)",
|
|
12511
|
+
"- If the user explicitly tells you to use a tool (e.g., \"use exec to run X\", \"read the file with read\", \"check the hostname\"), you MUST invoke that tool. Do not answer from training data or memory in place of the tool call.",
|
|
12512
|
+
"- Never narrate or quote tool output you did not actually receive from a real tool result. Writing \"I ran X and got Y\" without a corresponding tool invocation is fabrication and breaks user trust.",
|
|
12513
|
+
"- For factual local-system lookups (hostname, file contents, process state, env vars, current dir, system info), the answer comes from invoking the appropriate tool — not from priors. Always invoke.",
|
|
12514
|
+
"",
|
|
12463
12515
|
...compactMode ? [] : [
|
|
12464
12516
|
"## Tool Call Style",
|
|
12465
12517
|
"Default: do not narrate routine, low-risk tool calls (just call the tool).",
|
|
@@ -54566,7 +54618,7 @@ function setCliSessionId(entry, provider, sessionId) {
|
|
|
54566
54618
|
function createDefaultDeps() {
|
|
54567
54619
|
return {
|
|
54568
54620
|
sendMessageWhatsApp: async (...args) => {
|
|
54569
|
-
const { sendMessageWhatsApp } = await import("./web-
|
|
54621
|
+
const { sendMessageWhatsApp } = await import("./web-Bj-jTlHW.js");
|
|
54570
54622
|
return await sendMessageWhatsApp(...args);
|
|
54571
54623
|
},
|
|
54572
54624
|
sendMessageTelegram: async (...args) => {
|
|
@@ -69237,7 +69289,7 @@ function loadWebLoginQr() {
|
|
|
69237
69289
|
return webLoginQrPromise;
|
|
69238
69290
|
}
|
|
69239
69291
|
function loadWebChannel() {
|
|
69240
|
-
webChannelPromise ??= import("./web-
|
|
69292
|
+
webChannelPromise ??= import("./web-Bj-jTlHW.js");
|
|
69241
69293
|
return webChannelPromise;
|
|
69242
69294
|
}
|
|
69243
69295
|
function loadWhatsAppActions() {
|