@symerian/symi 2.8.17 → 2.9.0
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-9cAyC5ED.js → agents-CvNeiuSB.js} +4 -4
- package/dist/{agents.config-Cu9zTq04.js → agents.config-BCgY5FjE.js} +1 -1
- package/dist/{agents.config-DuwhYjpi.js → agents.config-Ct64cGQ8.js} +1 -1
- package/dist/{audio-preflight-rjCWpcfE.js → audio-preflight-Cb-T0r6e.js} +4 -4
- package/dist/{auth-choice-CPqyqc93.js → auth-choice-ChFU9OCF.js} +1 -1
- package/dist/{auth-choice-DeNzlUAR.js → auth-choice-DmMyKZX4.js} +1 -1
- package/dist/{banner-S1NGA6-s.js → banner-Bf46tqiY.js} +1 -1
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +7 -7
- package/dist/bundled/session-memory/handler.js +7 -7
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-options-C0v4BJgp.js → channel-options-Bqc2VCgt.js} +1 -1
- package/dist/{channel-options-C6y7Khvq.js → channel-options-D4a0ZJ72.js} +1 -1
- package/dist/{channel-web-DirOFV_n.js → channel-web-YNC2xS5K.js} +1 -1
- package/dist/{channels-cli-BhNHckMo.js → channels-cli-BFJcNLbB.js} +6 -6
- package/dist/{channels-cli-By_SbriI.js → channels-cli-h3GnmmM9.js} +6 -6
- package/dist/{chrome-C08Z0XAa.js → chrome-ROtrXlNs.js} +7 -7
- package/dist/{cli-B1QQv1cb.js → cli-BX54CAM7.js} +3 -3
- package/dist/{cli-Bx4RQCuK.js → cli-BpQlSGVs.js} +3 -3
- package/dist/{command-registry-uMOPbrbY.js → command-registry-BiRjJ2Sy.js} +10 -10
- package/dist/{completion-cli-B6s_3rEE.js → completion-cli-BYXofVqv.js} +2 -2
- package/dist/{completion-cli-DVD79pVj.js → completion-cli-C8K5J1ld.js} +1 -1
- package/dist/{config-cli-DzudcNAD.js → config-cli-BPPD3xqE.js} +1 -1
- package/dist/{config-cli-DCGgd-ZL.js → config-cli-Deoo6r2K.js} +1 -1
- package/dist/{configure-BybpK_1N.js → configure-BKHxUAAh.js} +3 -3
- package/dist/{configure-CItWwZwI.js → configure-D4f0P3bH.js} +3 -3
- package/dist/{deliver-qUx-eLKt.js → deliver-B0OUq6RP.js} +1 -1
- package/dist/{doctor-completion-BkwgaO4G.js → doctor-completion-gMWymNcA.js} +1 -1
- package/dist/{doctor-completion-Bf6dN4D-.js → doctor-completion-woDYSVtY.js} +1 -1
- package/dist/entry.js +1 -1
- package/dist/extensionAPI.js +2 -2
- package/dist/{gateway-cli-eNV6kb1V.js → gateway-cli-Bnh42-56.js} +85 -41
- package/dist/{gateway-cli-7CVmb3cX.js → gateway-cli-DsnkTUOp.js} +85 -41
- package/dist/{glass-ui-ws-i91Ms6ts.js → glass-ui-ws-0Y0KsBvU.js} +9 -9
- package/dist/{glass-ui-ws-B4fsBuHx.js → glass-ui-ws-uj3DRmL8.js} +9 -9
- package/dist/{health-C4tWTDu_.js → health-CcV5nKIK.js} +1 -1
- package/dist/{health-dA8r4WJ4.js → health-Dl2WRoTa.js} +1 -1
- package/dist/{hooks-cli-DYn9nXX0.js → hooks-cli-CTcHtm_0.js} +4 -4
- package/dist/{hooks-cli-uGLWBIcW.js → hooks-cli-DEJe3dUH.js} +4 -4
- package/dist/{image-C6rCON9L.js → image-BuVL0jHI.js} +1 -1
- package/dist/index.js +8 -8
- package/dist/llm-slug-generator.js +7 -7
- package/dist/{manager-DhGfNqfc.js → manager-9Mni2AA9.js} +1 -1
- package/dist/{manager-D6E6EGWa.js → manager-C-H0XXJq.js} +1 -1
- package/dist/{manager-BaSutzfz.js → manager-CjW8kPVc.js} +1 -1
- package/dist/{manager-CgQo1mIM.js → manager-QPF0UtOC.js} +1 -1
- package/dist/{memory-cli-BMb31chU.js → memory-cli-BTByRgM0.js} +3 -3
- package/dist/{memory-cli-lJe72a5i.js → memory-cli-OW9XfyYu.js} +3 -3
- package/dist/{models-BITN17gY.js → models-Q1jV8ArL.js} +2 -2
- package/dist/{models-cli-CHjxevMe.js → models-cli-Cy6H1sFq.js} +5 -5
- package/dist/{models-cli-C6JJWWoI.js → models-cli-pfVmmgpv.js} +4 -4
- package/dist/{onboard-C8Si08MS.js → onboard-CvpyaUQd.js} +2 -2
- package/dist/{onboard-DdJV-Doq.js → onboard-EL8foMiP.js} +2 -2
- package/dist/{onboard-channels-Cb-bemSg.js → onboard-channels-BRoSUijQ.js} +1 -1
- package/dist/{onboard-channels-PQP9wlk8.js → onboard-channels-Bupbm6zh.js} +1 -1
- package/dist/{onboarding-QAtuyHtA.js → onboarding-Ch8WSJ3j.js} +3 -3
- package/dist/{onboarding-CAaoPaVQ.js → onboarding-Dg5ydWSh.js} +3 -3
- package/dist/{onboarding.finalize-MuO2mvHv.js → onboarding.finalize-Bo8-8TtH.js} +7 -7
- package/dist/{onboarding.finalize-BhlQmJlX.js → onboarding.finalize-CCTaCp2s.js} +8 -8
- package/dist/{pi-embedded-BUYKq7Wv.js → pi-embedded-Bl3YkBkI.js} +149 -35
- package/dist/{pi-embedded-helpers-P13adotN.js → pi-embedded-helpers-D1_Sab0M.js} +4 -4
- package/dist/{plugin-registry-tXiHw0vr.js → plugin-registry-BVYZLxmo.js} +1 -1
- package/dist/{plugin-registry-DEhkDNDx.js → plugin-registry-Bn9Mj8mP.js} +1 -1
- package/dist/plugin-sdk/agents/pi-tools.read-edit-guard.d.ts +5 -0
- package/dist/plugin-sdk/agents/pi-tools.read-edit-tracker.d.ts +26 -0
- package/dist/plugin-sdk/{channel-web-C7aP_KKZ.js → channel-web-BhqGIC7q.js} +1 -1
- package/dist/plugin-sdk/index.js +3 -3
- package/dist/plugin-sdk/{manager-CvrDwB1Q.js → manager-DdOb0Em2.js} +1 -1
- package/dist/plugin-sdk/{reply-BI7Rf3_S.js → reply-Cjjf4VYT.js} +149 -35
- package/dist/plugin-sdk/{synthesis-B3z0Jqt1.js → synthesis-CZ8BYNXP.js} +2 -2
- package/dist/plugin-sdk/{web-D2WrY-DI.js → web-B8upqMUo.js} +3 -3
- package/dist/{plugins-cli-ByG6o7D2.js → plugins-cli-3h1N5N8n.js} +4 -4
- package/dist/{plugins-cli-D1vPxTOQ.js → plugins-cli-CYOQh2DM.js} +4 -4
- package/dist/{program-Q44fKoq6.js → program-D3_xE9BL.js} +9 -9
- package/dist/{program-context-C3QEc34t.js → program-context-COwsYCbf.js} +18 -18
- package/dist/{prompt-select-styled-DBVeLysq.js → prompt-select-styled-D88AWCeM.js} +6 -6
- package/dist/{prompt-select-styled-BSZrZcW2.js → prompt-select-styled-rKPBDv7n.js} +6 -6
- package/dist/{provider-auth-helpers-Bm4cf-Ms.js → provider-auth-helpers-CyZyVx-V.js} +1 -1
- package/dist/{provider-auth-helpers-rH91VXG-.js → provider-auth-helpers-rff7s_gC.js} +1 -1
- package/dist/{push-apns-CRD9IH1s.js → push-apns-BNzgqUl3.js} +1 -1
- package/dist/{push-apns-Cj10sUbK.js → push-apns-d9qKGKPe.js} +1 -1
- package/dist/{pw-ai-CeWN4iD9.js → pw-ai-DWkC5eGA.js} +1 -1
- package/dist/{register.agent-DGDnsvVd.js → register.agent-BjaqQA02.js} +7 -7
- package/dist/{register.agent-Dfu85lRL.js → register.agent-D_MON8p-.js} +8 -8
- package/dist/{register.configure-FCTbPCwe.js → register.configure-BWkkQhpH.js} +8 -8
- package/dist/{register.configure-BcdyiQui.js → register.configure-UJi9sfNv.js} +8 -8
- package/dist/{register.maintenance-Y8P9AnLe.js → register.maintenance-ChskcWGz.js} +10 -10
- package/dist/{register.maintenance-DvDwpW6B.js → register.maintenance-DJptz3DR.js} +9 -9
- package/dist/{register.message-mTqwOntI.js → register.message-BDTsiyrW.js} +4 -4
- package/dist/{register.message-C57ubt4f.js → register.message-CiadI_oS.js} +4 -4
- package/dist/{register.onboard-MIChlygg.js → register.onboard-BflOE1jy.js} +6 -6
- package/dist/{register.onboard-YCmMzAW-.js → register.onboard-KR_-4TLY.js} +6 -6
- package/dist/{register.setup-sQeN5xag.js → register.setup-Cl0sD25T.js} +6 -6
- package/dist/{register.setup-DzUZ2x6y.js → register.setup-W-oNfOp0.js} +6 -6
- package/dist/{register.status-health-sessions-DaPK2tow.js → register.status-health-sessions-CCQs235z.js} +5 -5
- package/dist/{register.status-health-sessions-DsptpS7K.js → register.status-health-sessions-CT_SmmOH.js} +5 -5
- package/dist/{register.subclis-17z5d7uO.js → register.subclis-ByZAz4st.js} +9 -9
- package/dist/{reply-2awhibgG.js → reply-CgyjcoxC.js} +148 -34
- package/dist/{run-main-CfVO6DFS.js → run-main-xmWpjZL9.js} +17 -17
- package/dist/{runner-D633VT13.js → runner-ecX1WzDt.js} +1 -1
- package/dist/{server-methods-Bdgs89ve.js → server-methods-CBn954AO.js} +8 -8
- package/dist/{server-methods-D_g3GJhv.js → server-methods-DDpCXuOU.js} +8 -8
- package/dist/{server-node-events-BZN3RZ8H.js → server-node-events-BBEMSKVE.js} +4 -4
- package/dist/{server-node-events-Cvgmf8fS.js → server-node-events-BUEZ3py9.js} +4 -4
- package/dist/{status-CwqBkxi2.js → status-BjMiGq0n.js} +1 -1
- package/dist/{status-Dkr4Celv.js → status-CG5iHUJ6.js} +3 -3
- package/dist/{status-DcxWlds6.js → status-CpvzoCOC.js} +1 -1
- package/dist/{status-Ca_VZkZV.js → status-PfvX-BjO.js} +3 -3
- package/dist/{subagent-registry-CncIZPCd.js → subagent-registry-D0IYimMO.js} +148 -34
- package/dist/{synthesis-CxvpkXBW.js → synthesis-BVZ5RJLg.js} +3 -3
- package/dist/{synthesis-lD0Vb_9q.js → synthesis-CBwKBuLy.js} +7 -7
- package/dist/{synthesis-CTC73eY9.js → synthesis-D55QrjAJ.js} +3 -3
- package/dist/{synthesis-DOmJ2Gay.js → synthesis-itgrzpuj.js} +2 -2
- package/dist/{unified-runner-JQaSdhSg.js → unified-runner-BhnvjB1J.js} +163 -49
- package/dist/{update-cli-BO1uw-SU.js → update-cli-CL1_LPBS.js} +10 -10
- package/dist/{update-cli-CplnPSZ5.js → update-cli-D3K4mhrr.js} +9 -9
- package/dist/{update-runner-Df4mjndq.js → update-runner-Bmq67eos.js} +1 -1
- package/dist/{update-runner-DFp9PDMN.js → update-runner-DMucmRlv.js} +1 -1
- package/dist/{web-CCEVjDcU.js → web-B0lZdBBl.js} +3 -3
- package/dist/{web-CZoQ03ZE.js → web-C1HPdY_D.js} +2 -2
- package/dist/{web-BEDc6iEz.js → web-DCO_YCRw.js} +7 -7
- package/dist/{web-Dn33Cd3-.js → web-DmgQtLx3.js} +4 -4
- 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 +6 -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 +6 -0
- package/extensions/msteams/package.json +1 -1
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nostr/CHANGELOG.md +6 -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 +6 -0
- package/extensions/twitch/package.json +1 -1
- package/extensions/voice-call/CHANGELOG.md +6 -0
- package/extensions/voice-call/package.json +1 -1
- package/extensions/whatsapp/package.json +1 -1
- package/extensions/zalo/CHANGELOG.md +6 -0
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalouser/CHANGELOG.md +6 -0
- package/extensions/zalouser/package.json +1 -1
- package/package.json +1 -1
|
@@ -12,7 +12,7 @@ import { f as GATEWAY_CLIENT_CAPS, g as hasGatewayClientCap, i as isGatewayMessa
|
|
|
12
12
|
import { c as writeJsonAtomic, o as createAsyncLock, s as readJsonFile } from "./pairing-token-Byh6drgn.js";
|
|
13
13
|
import { s as pickPrimaryLanIPv4 } from "./net-DZ5Ayk-W.js";
|
|
14
14
|
import { i as normalizeInputProvenance } from "./input-provenance-D0lNkCf6.js";
|
|
15
|
-
import { $n as resolveTtsApiKey, B as dispatchInboundMessage, C as resolveAgentDeliveryPlan, Cn as parseVerboseOverride, D as createOutboundSendDeps, Dt as normalizeCronJobCreate, G as BARE_SESSION_RESET_PROMPT, Gn as isAbortTrigger, Gt as applyBrowserProxyPaths, Hn as formatZonedTimestamp, Kn as stopSubagentsForRequester, Kt as persistBrowserProxyFiles, Ln as resolveAgentTimeoutMs, Ot as normalizeCronJobPatch, Qn as isTtsProviderConfigured, Qt as scheduleGatewaySigusr1Restart, Sn as applyVerboseOverride, Tn as isSystemEventContextChanged, Tr as registerAgentRunContext, Tt as writeRestartSentinel, V as createReplyDispatcher, Xn as getTtsProvider, Y as abortEmbeddedPiRun, Yn as resolveUserTimezone, Z as waitForEmbeddedPiRunEnd, Zn as isTtsEnabled, a as listSubagentRunsForRequester, ar as setTtsProvider, bt as formatDoctorNonInteractiveHint, c as clearSessionQueues, cr as OPENAI_TTS_VOICES, ct as ensureOutboundSessionEntry, er as resolveTtsAutoMode, ft as resolveOutboundTarget, gn as resolveSendPolicy, hn as normalizeSendPolicy, i as listDescendantRunsForRequester, in as loadProviderUsageSummary, ir as setTtsEnabled, it as listTasksInWorkdir, lt as resolveOutboundSessionRoute, m as loadSymiPlugins, nn as normalizeGroupActivation, nr as resolveTtsPrefsPath, or as textToSpeech, rr as resolveTtsProviderOrder, sr as OPENAI_TTS_MODELS, tn as unbindThreadBindingsBySessionKey, tr as resolveTtsConfig, w as resolveAgentOutboundTarget, wn as enqueueSystemEvent, wr as onAgentEvent, x as agentCommand, xn as applyModelOverrideToSessionEntry } from "./subagent-registry-
|
|
15
|
+
import { $n as resolveTtsApiKey, B as dispatchInboundMessage, C as resolveAgentDeliveryPlan, Cn as parseVerboseOverride, D as createOutboundSendDeps, Dt as normalizeCronJobCreate, G as BARE_SESSION_RESET_PROMPT, Gn as isAbortTrigger, Gt as applyBrowserProxyPaths, Hn as formatZonedTimestamp, Kn as stopSubagentsForRequester, Kt as persistBrowserProxyFiles, Ln as resolveAgentTimeoutMs, Ot as normalizeCronJobPatch, Qn as isTtsProviderConfigured, Qt as scheduleGatewaySigusr1Restart, Sn as applyVerboseOverride, Tn as isSystemEventContextChanged, Tr as registerAgentRunContext, Tt as writeRestartSentinel, V as createReplyDispatcher, Xn as getTtsProvider, Y as abortEmbeddedPiRun, Yn as resolveUserTimezone, Z as waitForEmbeddedPiRunEnd, Zn as isTtsEnabled, a as listSubagentRunsForRequester, ar as setTtsProvider, bt as formatDoctorNonInteractiveHint, c as clearSessionQueues, cr as OPENAI_TTS_VOICES, ct as ensureOutboundSessionEntry, er as resolveTtsAutoMode, ft as resolveOutboundTarget, gn as resolveSendPolicy, hn as normalizeSendPolicy, i as listDescendantRunsForRequester, in as loadProviderUsageSummary, ir as setTtsEnabled, it as listTasksInWorkdir, lt as resolveOutboundSessionRoute, m as loadSymiPlugins, nn as normalizeGroupActivation, nr as resolveTtsPrefsPath, or as textToSpeech, rr as resolveTtsProviderOrder, sr as OPENAI_TTS_MODELS, tn as unbindThreadBindingsBySessionKey, tr as resolveTtsConfig, w as resolveAgentOutboundTarget, wn as enqueueSystemEvent, wr as onAgentEvent, x as agentCommand, xn as applyModelOverrideToSessionEntry } from "./subagent-registry-D0IYimMO.js";
|
|
16
16
|
import { F as resolveMainSessionKey, I as resolveMainSessionKeyFromConfig, J as normalizeSessionDeliveryFields, N as resolveAgentMainSessionKey, P as resolveExplicitAgentSessionKey, R as snapshotSessionOrigin, S as stripEnvelopeFromMessages, _ as capArrayByJsonBytes, d as updateSessionStore, g as archiveSessionTranscripts, h as archiveFileOnDisk, o as loadSessionStore, t as extractDeliveryInfo, v as readSessionMessages, x as resolveSessionTranscriptCandidates, y as readSessionPreviewItemsFromTranscript } from "./sessions-BPD85pWA.js";
|
|
17
17
|
import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-CwSlLxM8.js";
|
|
18
18
|
import { n as createBrowserRouteDispatcher } from "./with-timeout-BuIx7QnX.js";
|
|
@@ -21,7 +21,7 @@ import { t as movePathToTrash } from "./trash-CWQQXWX3.js";
|
|
|
21
21
|
import { c as resolveStorePath, n as resolveSessionFilePath, r as resolveSessionFilePathOptions, s as resolveSessionTranscriptsDirForAgent } from "./paths-DNdWAq7b.js";
|
|
22
22
|
import { a as normalizeElevatedLevel, c as normalizeUsageDisplay, d as supportsXHighThinking, n as formatXHighModelHint, o as normalizeReasoningLevel, s as normalizeThinkLevel, t as formatThinkingLevels } from "./thinking-8sKPnzpp.js";
|
|
23
23
|
import { a as resolveAgentIdentity, t as createReplyPrefixOptions } from "./reply-prefix-BUN71nd5.js";
|
|
24
|
-
import { r as getMemorySearchManager } from "./memory-cli-
|
|
24
|
+
import { r as getMemorySearchManager } from "./memory-cli-OW9XfyYu.js";
|
|
25
25
|
import { a as loadCombinedSessionStoreForGateway, c as resolveGatewaySessionStoreTarget, i as listSessionsFromStore, l as resolveSessionModelRef, o as loadSessionEntry, r as listAgentsForGateway, s as pruneLegacyStoreKeys, t as canonicalizeSpawnedByForAgent } from "./session-utils-DaBIs243.js";
|
|
26
26
|
import { _ as requestNodePairing, g as renamePairedNode, h as rejectNodePairing, m as listNodePairing, o as getRemoteSkillEligibility, p as approveNodePairing, y as verifyNodeToken } from "./skill-commands-DrX4xCNq.js";
|
|
27
27
|
import { t as listAgentWorkspaceDirs } from "./workspace-dirs-DVn-uDvF.js";
|
|
@@ -38,14 +38,14 @@ import { t as WizardCancelledError } from "./prompts-DbHSz44H.js";
|
|
|
38
38
|
import { t as resolveChannelDefaultAccountId } from "./helpers-gWnZ9zWR.js";
|
|
39
39
|
import { t as buildChannelAccountSnapshot } from "./status-B8TZsG0t.js";
|
|
40
40
|
import { o as isNodeCommandAllowed, s as resolveNodeCommandAllowlist } from "./audit-CuKP86d_.js";
|
|
41
|
-
import { r as getStatusSummary } from "./status-
|
|
42
|
-
import { c as setHeartbeatsEnabled } from "./health-
|
|
41
|
+
import { r as getStatusSummary } from "./status-PfvX-BjO.js";
|
|
42
|
+
import { c as setHeartbeatsEnabled } from "./health-CcV5nKIK.js";
|
|
43
43
|
import { m as normalizeUpdateChannel } from "./update-check-BNjupSIM.js";
|
|
44
|
-
import { a as sendApnsAlert, c as parseMessageWithAttachments, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration } from "./push-apns-
|
|
45
|
-
import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-
|
|
44
|
+
import { a as sendApnsAlert, c as parseMessageWithAttachments, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration } from "./push-apns-d9qKGKPe.js";
|
|
45
|
+
import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-BCgY5FjE.js";
|
|
46
46
|
import { t as resolveSystemRunCommand } from "./system-run-command-B_qw8CXP.js";
|
|
47
47
|
import { t as installSkill } from "./skills-install-BnEN_qla.js";
|
|
48
|
-
import { t as runGatewayUpdate } from "./update-runner-
|
|
48
|
+
import { t as runGatewayUpdate } from "./update-runner-Bmq67eos.js";
|
|
49
49
|
import { spawnSync } from "node:child_process";
|
|
50
50
|
import * as os$1 from "node:os";
|
|
51
51
|
import os from "node:os";
|
|
@@ -7507,7 +7507,7 @@ const nodeHandlers = {
|
|
|
7507
7507
|
const p = params;
|
|
7508
7508
|
const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
|
|
7509
7509
|
await respondUnavailableOnThrow(respond, async () => {
|
|
7510
|
-
const { handleNodeEvent } = await import("./server-node-events-
|
|
7510
|
+
const { handleNodeEvent } = await import("./server-node-events-BBEMSKVE.js");
|
|
7511
7511
|
const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
|
|
7512
7512
|
await handleNodeEvent({
|
|
7513
7513
|
deps: context.deps,
|
|
@@ -15,7 +15,7 @@ import "./client-CJIMV1WD.js";
|
|
|
15
15
|
import "./call-M4YyUnwu.js";
|
|
16
16
|
import "./message-channel-C9dERklz.js";
|
|
17
17
|
import "./pairing-token-Byh6drgn.js";
|
|
18
|
-
import { T as createOutboundSendDeps, fn as requestHeartbeatNow, ft as resolveOutboundTarget, wn as enqueueSystemEvent, x as agentCommand } from "./subagent-registry-
|
|
18
|
+
import { T as createOutboundSendDeps, fn as requestHeartbeatNow, ft as resolveOutboundTarget, wn as enqueueSystemEvent, x as agentCommand } from "./subagent-registry-D0IYimMO.js";
|
|
19
19
|
import { d as updateSessionStore } from "./sessions-BPD85pWA.js";
|
|
20
20
|
import "./tokens-Csntmwwn.js";
|
|
21
21
|
import { r as normalizeChannelId } from "./plugins-CwSlLxM8.js";
|
|
@@ -53,8 +53,8 @@ import "./tool-images-CVLISeRT.js";
|
|
|
53
53
|
import "./thinking-8sKPnzpp.js";
|
|
54
54
|
import "./models-config-J1x_DaPn.js";
|
|
55
55
|
import "./reply-prefix-BUN71nd5.js";
|
|
56
|
-
import "./memory-cli-
|
|
57
|
-
import "./manager-
|
|
56
|
+
import "./memory-cli-OW9XfyYu.js";
|
|
57
|
+
import "./manager-QPF0UtOC.js";
|
|
58
58
|
import "./gemini-auth-DEakvf-D.js";
|
|
59
59
|
import "./retry-C4Q_VPOo.js";
|
|
60
60
|
import "./sqlite-BP8tiuca.js";
|
|
@@ -99,7 +99,7 @@ import "./onboard-helpers-DWDNKmkJ.js";
|
|
|
99
99
|
import "./prompt-style-BxVdnrLq.js";
|
|
100
100
|
import "./pairing-labels-BHx_CdbP.js";
|
|
101
101
|
import "./pi-tools.policy-o0ytjRqu.js";
|
|
102
|
-
import { c as parseMessageWithAttachments, l as formatForLog, r as registerApnsToken, s as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-
|
|
102
|
+
import { c as parseMessageWithAttachments, l as formatForLog, r as registerApnsToken, s as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-d9qKGKPe.js";
|
|
103
103
|
import { randomUUID } from "node:crypto";
|
|
104
104
|
|
|
105
105
|
//#region src/gateway/server-node-events.ts
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "./paths-Cqn-zk3M.js";
|
|
2
2
|
import "./utils-B-0b9bGM.js";
|
|
3
3
|
import "./thinking-EAliFiVK.js";
|
|
4
|
-
import { Dt as agentCommand, Ft as createOutboundSendDeps, Nt as resolveOutboundTarget, Sr as enqueueSystemEvent, b as pruneLegacyStoreKeys, ct as requestHeartbeatNow, x as resolveGatewaySessionStoreTarget, y as loadSessionEntry } from "./reply-
|
|
4
|
+
import { Dt as agentCommand, Ft as createOutboundSendDeps, Nt as resolveOutboundTarget, Sr as enqueueSystemEvent, b as pruneLegacyStoreKeys, ct as requestHeartbeatNow, x as resolveGatewaySessionStoreTarget, y as loadSessionEntry } from "./reply-CgyjcoxC.js";
|
|
5
5
|
import { c as normalizeMainKey } from "./session-key-DCt45XZa.js";
|
|
6
6
|
import "./registry-Cja8eT7G.js";
|
|
7
7
|
import { f as defaultRuntime } from "./subsystem-D9vIQve0.js";
|
|
@@ -61,8 +61,8 @@ import "./diagnostic-session-state-CUslJyKP.js";
|
|
|
61
61
|
import "./send-DpMnSIi5.js";
|
|
62
62
|
import "./model-ECsJuJew.js";
|
|
63
63
|
import "./reply-prefix-CE2YmmsD.js";
|
|
64
|
-
import "./memory-cli-
|
|
65
|
-
import "./manager-
|
|
64
|
+
import "./memory-cli-BTByRgM0.js";
|
|
65
|
+
import "./manager-9Mni2AA9.js";
|
|
66
66
|
import "./retry-BoS4e4X_.js";
|
|
67
67
|
import "./sqlite-D55gRQbH.js";
|
|
68
68
|
import "./target-errors-C9e6dMU_.js";
|
|
@@ -103,7 +103,7 @@ import "./pi-tools.policy-Bx5zp45n.js";
|
|
|
103
103
|
import "./control-service-C0pRqIFv.js";
|
|
104
104
|
import "./stagger-CZ1Rrj7O.js";
|
|
105
105
|
import "./channel-selection-9fIQGtZy.js";
|
|
106
|
-
import { c as parseMessageWithAttachments, l as formatForLog, r as registerApnsToken, s as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-
|
|
106
|
+
import { c as parseMessageWithAttachments, l as formatForLog, r as registerApnsToken, s as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-BNzgqUl3.js";
|
|
107
107
|
import { randomUUID } from "node:crypto";
|
|
108
108
|
|
|
109
109
|
//#region src/gateway/server-node-events.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ft as createPluginLoaderLogger, pt as loadSymiPlugins } from "./reply-
|
|
1
|
+
import { ft as createPluginLoaderLogger, pt as loadSymiPlugins } from "./reply-CgyjcoxC.js";
|
|
2
2
|
import { t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
|
|
3
3
|
import { D as resolveDefaultAgentWorkspaceDir, c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-CgUHAtCo.js";
|
|
4
4
|
import { i as loadConfig } from "./config-PXAJCHa5.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { u as resolveGatewayPort } from "./paths-Cqn-zk3M.js";
|
|
2
2
|
import { B as theme, k as info, z as isRich } from "./utils-B-0b9bGM.js";
|
|
3
|
-
import { B as readRestartSentinel, S as resolveSessionModelRef, Tr as peekSystemEvents, V as summarizeRestartSentinel, Yt as sha256HexPrefix, _t as loadProviderUsageSummary, a as buildChannelSummary, g as listAgentsForGateway, h as classifySessionKey, mr as lookupContextTokens, o as buildChannelAccountSnapshot, s as formatChannelAllowFrom, vt as formatUsageReportLines } from "./reply-
|
|
3
|
+
import { B as readRestartSentinel, S as resolveSessionModelRef, Tr as peekSystemEvents, V as summarizeRestartSentinel, Yt as sha256HexPrefix, _t as loadProviderUsageSummary, a as buildChannelSummary, g as listAgentsForGateway, h as classifySessionKey, mr as lookupContextTokens, o as buildChannelAccountSnapshot, s as formatChannelAllowFrom, vt as formatUsageReportLines } from "./reply-CgyjcoxC.js";
|
|
4
4
|
import { S as parseAgentSessionKey } from "./session-key-DCt45XZa.js";
|
|
5
5
|
import { t as resolveSymiPackageRoot } from "./symi-root-CrGJbkzf.js";
|
|
6
6
|
import { n as runExec } from "./exec-CWkblSrI.js";
|
|
@@ -13,7 +13,7 @@ import { a as inspectPortUsage, s as formatPortDiagnostics } from "./ports-BOmtx
|
|
|
13
13
|
import { H as resolveMainSessionKey, R as resolveFreshSessionTotalTokens, o as loadSessionStore } from "./sessions-BeYHj0gr.js";
|
|
14
14
|
import { n as listChannelPlugins } from "./plugins-DKDeQZF0.js";
|
|
15
15
|
import { c as resolveStorePath } from "./paths-CyhzMxFA.js";
|
|
16
|
-
import { r as getMemorySearchManager } from "./memory-cli-
|
|
16
|
+
import { r as getMemorySearchManager } from "./memory-cli-BTByRgM0.js";
|
|
17
17
|
import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-DYfKEdwh.js";
|
|
18
18
|
import { n as formatTimeAgo } from "./format-relative-CviDPm2s.js";
|
|
19
19
|
import { n as withProgress } from "./progress-WhkkDU0H.js";
|
|
@@ -28,7 +28,7 @@ import { t as formatRuntimeStatusWithDetails } from "./runtime-status-D0P5lDGf.j
|
|
|
28
28
|
import { t as readLastGatewayErrorLine } from "./diagnostics-1uBuB9IE.js";
|
|
29
29
|
import { t as renderTable } from "./table-BWuvjnmY.js";
|
|
30
30
|
import { a as resolveGatewayProbeAuth$1, c as probeGateway, t as runSecurityAudit } from "./audit-C9nq99IR.js";
|
|
31
|
-
import { a as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-
|
|
31
|
+
import { a as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-Dl2WRoTa.js";
|
|
32
32
|
import { g as resolveUpdateChannelDisplay, i as formatGitInstallLabel, m as normalizeUpdateChannel, t as checkUpdateStatus } from "./update-check-Bbvpax6u.js";
|
|
33
33
|
import { t as resolveNodeService } from "./node-service-DxPZ_ZFk.js";
|
|
34
34
|
import { n as redactSecrets, t as formatGatewayAuthUsed } from "./format-DNqZrSx7.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { o as createSubsystemLogger } from "./entry.js";
|
|
2
2
|
import { D as resolveDefaultAgentWorkspaceDir, c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-D-jRCY0d.js";
|
|
3
3
|
import { i as loadConfig } from "./config-DXt3pc08.js";
|
|
4
|
-
import { m as loadSymiPlugins, p as createPluginLoaderLogger } from "./subagent-registry-
|
|
4
|
+
import { m as loadSymiPlugins, p as createPluginLoaderLogger } from "./subagent-registry-D0IYimMO.js";
|
|
5
5
|
|
|
6
6
|
//#region src/plugins/status.ts
|
|
7
7
|
const log = createSubsystemLogger("plugins");
|
|
@@ -9,13 +9,13 @@ import { c as resolveAgentWorkspaceDir } from "./agent-scope-D-jRCY0d.js";
|
|
|
9
9
|
import { t as buildWorkspaceSkillStatus } from "./skills-status-DODCG6UU.js";
|
|
10
10
|
import { H as VERSION, i as loadConfig, o as readConfigFileSnapshot } from "./config-DXt3pc08.js";
|
|
11
11
|
import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-M4YyUnwu.js";
|
|
12
|
-
import { Ct as summarizeRestartSentinel, Dn as peekSystemEvents, St as readRestartSentinel, an as formatUsageReportLines, cn as buildChannelSummary, in as loadProviderUsageSummary, ln as buildChannelAccountSnapshot, nt as sha256HexPrefix, un as formatChannelAllowFrom } from "./subagent-registry-
|
|
12
|
+
import { Ct as summarizeRestartSentinel, Dn as peekSystemEvents, St as readRestartSentinel, an as formatUsageReportLines, cn as buildChannelSummary, in as loadProviderUsageSummary, ln as buildChannelAccountSnapshot, nt as sha256HexPrefix, un as formatChannelAllowFrom } from "./subagent-registry-D0IYimMO.js";
|
|
13
13
|
import { F as resolveMainSessionKey, j as resolveFreshSessionTotalTokens, o as loadSessionStore } from "./sessions-BPD85pWA.js";
|
|
14
14
|
import { n as listChannelPlugins } from "./plugins-CwSlLxM8.js";
|
|
15
15
|
import { o as getTailnetHostname, s as readTailscaleStatusJson } from "./tailscale-CbbvYNVw.js";
|
|
16
16
|
import { i as formatPortDiagnostics, n as inspectPortUsage } from "./ports-2xFXbwLq.js";
|
|
17
17
|
import { c as resolveStorePath } from "./paths-DNdWAq7b.js";
|
|
18
|
-
import { r as getMemorySearchManager } from "./memory-cli-
|
|
18
|
+
import { r as getMemorySearchManager } from "./memory-cli-OW9XfyYu.js";
|
|
19
19
|
import { n as formatTimeAgo } from "./format-relative-BDwAggS5.js";
|
|
20
20
|
import { l as resolveSessionModelRef, n as classifySessionKey, r as listAgentsForGateway, u as lookupContextTokens } from "./session-utils-DaBIs243.js";
|
|
21
21
|
import { o as getRemoteSkillEligibility } from "./skill-commands-DrX4xCNq.js";
|
|
@@ -29,7 +29,7 @@ import { t as formatRuntimeStatusWithDetails } from "./runtime-status-DJYthOLz.j
|
|
|
29
29
|
import { t as readLastGatewayErrorLine } from "./diagnostics-C6xPE2ln.js";
|
|
30
30
|
import { t as renderTable } from "./table-Bka4fasy.js";
|
|
31
31
|
import { a as resolveGatewayProbeAuth$1, c as probeGateway, t as runSecurityAudit } from "./audit-CuKP86d_.js";
|
|
32
|
-
import { o as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-
|
|
32
|
+
import { o as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-CcV5nKIK.js";
|
|
33
33
|
import { g as resolveUpdateChannelDisplay, i as formatGitInstallLabel, m as normalizeUpdateChannel, t as checkUpdateStatus } from "./update-check-BNjupSIM.js";
|
|
34
34
|
import { t as resolveNodeService } from "./node-service-B-qdOCNb.js";
|
|
35
35
|
import { n as redactSecrets, t as formatGatewayAuthUsed } from "./format-yQZNwAF2.js";
|
|
@@ -50,8 +50,8 @@ import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as san
|
|
|
50
50
|
import { a as normalizeElevatedLevel, c as normalizeUsageDisplay, d as supportsXHighThinking, l as normalizeVerboseLevel, n as formatXHighModelHint, o as normalizeReasoningLevel, s as normalizeThinkLevel, t as formatThinkingLevels, u as resolveResponseUsageMode } from "./thinking-8sKPnzpp.js";
|
|
51
51
|
import { t as ensureSymiModelsJson } from "./models-config-J1x_DaPn.js";
|
|
52
52
|
import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-BUN71nd5.js";
|
|
53
|
-
import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-
|
|
54
|
-
import { a as resolveMemorySearchConfig, t as MemoryIndexManager } from "./manager-
|
|
53
|
+
import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-OW9XfyYu.js";
|
|
54
|
+
import { a as resolveMemorySearchConfig, t as MemoryIndexManager } from "./manager-QPF0UtOC.js";
|
|
55
55
|
import { f as runTasksWithConcurrency } from "./internal-C2jxeHS9.js";
|
|
56
56
|
import { n as retryAsync } from "./retry-C4Q_VPOo.js";
|
|
57
57
|
import { c as imageResultFromFile, d as readNumberParam, f as readReactionParams, h as readStringParam, l as jsonResult, m as readStringOrNumberParam, n as missingTargetError, o as createActionGate, p as readStringArrayParam, r as unknownTargetError, s as imageResult, t as ambiguousTargetError, u as parseAvailableTags } from "./target-errors-Co0LcWKH.js";
|
|
@@ -4957,16 +4957,16 @@ function shouldComputeCommandAuthorized(text, cfg, options) {
|
|
|
4957
4957
|
|
|
4958
4958
|
//#endregion
|
|
4959
4959
|
//#region src/channels/sender-label.ts
|
|
4960
|
-
function normalize(value) {
|
|
4960
|
+
function normalize$1(value) {
|
|
4961
4961
|
const trimmed = value?.trim();
|
|
4962
4962
|
return trimmed ? trimmed : void 0;
|
|
4963
4963
|
}
|
|
4964
4964
|
function resolveSenderLabel(params) {
|
|
4965
|
-
const name = normalize(params.name);
|
|
4966
|
-
const username = normalize(params.username);
|
|
4967
|
-
const tag = normalize(params.tag);
|
|
4968
|
-
const e164 = normalize(params.e164);
|
|
4969
|
-
const id = normalize(params.id);
|
|
4965
|
+
const name = normalize$1(params.name);
|
|
4966
|
+
const username = normalize$1(params.username);
|
|
4967
|
+
const tag = normalize$1(params.tag);
|
|
4968
|
+
const e164 = normalize$1(params.e164);
|
|
4969
|
+
const id = normalize$1(params.id);
|
|
4970
4970
|
const display = name ?? username ?? tag ?? "";
|
|
4971
4971
|
const idPart = e164 ?? id ?? "";
|
|
4972
4972
|
if (display && idPart && display !== idPart) return `${display} (${idPart})`;
|
|
@@ -23720,8 +23720,39 @@ const GatewayToolSchema = Type.Object({
|
|
|
23720
23720
|
baseHash: Type.Optional(Type.String()),
|
|
23721
23721
|
sessionKey: Type.Optional(Type.String()),
|
|
23722
23722
|
note: Type.Optional(Type.String()),
|
|
23723
|
-
restartDelayMs: Type.Optional(Type.Number())
|
|
23723
|
+
restartDelayMs: Type.Optional(Type.Number()),
|
|
23724
|
+
userRequestAcknowledgment: Type.Optional(Type.String())
|
|
23724
23725
|
});
|
|
23726
|
+
/** Actions that mutate gateway state and require explicit user authorization. */
|
|
23727
|
+
const DESTRUCTIVE_ACTIONS = new Set([
|
|
23728
|
+
"config.apply",
|
|
23729
|
+
"config.patch",
|
|
23730
|
+
"update.run"
|
|
23731
|
+
]);
|
|
23732
|
+
/** Minimum length for a meaningful authorization message. */
|
|
23733
|
+
const MIN_AUTHORIZATION_LENGTH = 10;
|
|
23734
|
+
/**
|
|
23735
|
+
* Asserts the user's request was explicitly acknowledged for destructive
|
|
23736
|
+
* actions. Throws a descriptive error if the acknowledgment is missing,
|
|
23737
|
+
* empty, or trivially short.
|
|
23738
|
+
*
|
|
23739
|
+
* NOTE: This is defense-in-depth, not a hard barrier. A determined model
|
|
23740
|
+
* could still populate the field with fabricated text. The barrier exists
|
|
23741
|
+
* to:
|
|
23742
|
+
* 1. Force the agent to deliberately compose a justification (vs. blind
|
|
23743
|
+
* tool invocation).
|
|
23744
|
+
* 2. Provide an audit trail (the acknowledgment is logged with the tool
|
|
23745
|
+
* call args).
|
|
23746
|
+
* 3. Surface for future tightening (e.g., matching against real session
|
|
23747
|
+
* history).
|
|
23748
|
+
*/
|
|
23749
|
+
function assertUserAuthorization(action, params) {
|
|
23750
|
+
if (!DESTRUCTIVE_ACTIONS.has(action)) return;
|
|
23751
|
+
const ack = params.userRequestAcknowledgment;
|
|
23752
|
+
const trimmed = typeof ack === "string" ? ack.trim() : "";
|
|
23753
|
+
if (!trimmed) throw new Error(`Action '${action}' requires an explicit user authorization. Pass userRequestAcknowledgment with a paraphrase of the user's request (e.g., "user said: please update Symi"). If the user did not explicitly request this action, ask them first instead of invoking it.`);
|
|
23754
|
+
if (trimmed.length < MIN_AUTHORIZATION_LENGTH) throw new Error(`Action '${action}' requires a substantive userRequestAcknowledgment (minimum ${MIN_AUTHORIZATION_LENGTH} characters describing the user's request). Received: ${JSON.stringify(trimmed)}.`);
|
|
23755
|
+
}
|
|
23725
23756
|
function createGatewayTool(opts) {
|
|
23726
23757
|
return {
|
|
23727
23758
|
label: "Gateway",
|
|
@@ -23732,6 +23763,7 @@ function createGatewayTool(opts) {
|
|
|
23732
23763
|
execute: async (_toolCallId, args) => {
|
|
23733
23764
|
const params = args;
|
|
23734
23765
|
const action = readStringParam(params, "action", { required: true });
|
|
23766
|
+
assertUserAuthorization(action, params);
|
|
23735
23767
|
if (action === "restart") {
|
|
23736
23768
|
if (!isRestartEnabled(opts?.config)) throw new Error("Gateway restart is disabled (commands.restart=false).");
|
|
23737
23769
|
const sessionKey = typeof params.sessionKey === "string" && params.sessionKey.trim() ? params.sessionKey.trim() : opts?.agentSessionKey?.trim() || void 0;
|
|
@@ -53882,7 +53914,7 @@ function isVoiceChannelType(type) {
|
|
|
53882
53914
|
function createDefaultDeps() {
|
|
53883
53915
|
return {
|
|
53884
53916
|
sendMessageWhatsApp: async (...args) => {
|
|
53885
|
-
const { sendMessageWhatsApp } = await import("./web-
|
|
53917
|
+
const { sendMessageWhatsApp } = await import("./web-B0lZdBBl.js");
|
|
53886
53918
|
return await sendMessageWhatsApp(...args);
|
|
53887
53919
|
},
|
|
53888
53920
|
sendMessageTelegram: async (...args) => {
|
|
@@ -69196,7 +69228,7 @@ function loadWebLoginQr() {
|
|
|
69196
69228
|
return webLoginQrPromise;
|
|
69197
69229
|
}
|
|
69198
69230
|
function loadWebChannel() {
|
|
69199
|
-
webChannelPromise ??= import("./web-
|
|
69231
|
+
webChannelPromise ??= import("./web-B0lZdBBl.js");
|
|
69200
69232
|
return webChannelPromise;
|
|
69201
69233
|
}
|
|
69202
69234
|
function loadWhatsAppActions() {
|
|
@@ -70458,6 +70490,91 @@ function wrapToolWithAbortSignal(tool, abortSignal) {
|
|
|
70458
70490
|
};
|
|
70459
70491
|
}
|
|
70460
70492
|
|
|
70493
|
+
//#endregion
|
|
70494
|
+
//#region src/agents/pi-tools.read-edit-guard.ts
|
|
70495
|
+
const RETRY_GUIDANCE_SUFFIX$1 = " Read the file first, then retry the edit.";
|
|
70496
|
+
function readGuardError(filePath) {
|
|
70497
|
+
return /* @__PURE__ */ new Error(`Edit refused: '${filePath}' has not been read in this session. The edit tool requires the agent to read the file first so oldText can match real content rather than hallucinated content.${RETRY_GUIDANCE_SUFFIX$1}`);
|
|
70498
|
+
}
|
|
70499
|
+
function extractPath(args) {
|
|
70500
|
+
if (!args || typeof args !== "object") return;
|
|
70501
|
+
const record = args;
|
|
70502
|
+
const candidate = record.path ?? record.file_path;
|
|
70503
|
+
if (typeof candidate !== "string") return;
|
|
70504
|
+
const trimmed = candidate.trim();
|
|
70505
|
+
return trimmed.length > 0 ? trimmed : void 0;
|
|
70506
|
+
}
|
|
70507
|
+
function wrapReadToolWithTracker(tool, tracker) {
|
|
70508
|
+
return {
|
|
70509
|
+
...tool,
|
|
70510
|
+
execute: async (toolCallId, args, signal, onUpdate) => {
|
|
70511
|
+
const result = await tool.execute(toolCallId, args, signal, onUpdate);
|
|
70512
|
+
if (!(!!result && typeof result === "object" && result.isError === true)) {
|
|
70513
|
+
const filePath = extractPath(args);
|
|
70514
|
+
if (filePath) tracker.recordRead(filePath);
|
|
70515
|
+
}
|
|
70516
|
+
return result;
|
|
70517
|
+
}
|
|
70518
|
+
};
|
|
70519
|
+
}
|
|
70520
|
+
function wrapWriteToolWithTracker(tool, tracker) {
|
|
70521
|
+
return {
|
|
70522
|
+
...tool,
|
|
70523
|
+
execute: async (toolCallId, args, signal, onUpdate) => {
|
|
70524
|
+
const result = await tool.execute(toolCallId, args, signal, onUpdate);
|
|
70525
|
+
if (!(!!result && typeof result === "object" && result.isError === true)) {
|
|
70526
|
+
const filePath = extractPath(args);
|
|
70527
|
+
if (filePath) tracker.recordWrite(filePath);
|
|
70528
|
+
}
|
|
70529
|
+
return result;
|
|
70530
|
+
}
|
|
70531
|
+
};
|
|
70532
|
+
}
|
|
70533
|
+
function wrapEditToolWithGuard(tool, tracker) {
|
|
70534
|
+
return {
|
|
70535
|
+
...tool,
|
|
70536
|
+
execute: async (toolCallId, args, signal, onUpdate) => {
|
|
70537
|
+
const filePath = extractPath(args);
|
|
70538
|
+
if (filePath && !tracker.hasObserved(filePath)) throw readGuardError(filePath);
|
|
70539
|
+
return tool.execute(toolCallId, args, signal, onUpdate);
|
|
70540
|
+
}
|
|
70541
|
+
};
|
|
70542
|
+
}
|
|
70543
|
+
|
|
70544
|
+
//#endregion
|
|
70545
|
+
//#region src/agents/pi-tools.read-edit-tracker.ts
|
|
70546
|
+
function normalize(filePath, workspaceRoot) {
|
|
70547
|
+
if (!workspaceRoot) return filePath;
|
|
70548
|
+
if (path.isAbsolute(filePath)) return path.normalize(filePath);
|
|
70549
|
+
return path.resolve(workspaceRoot, filePath);
|
|
70550
|
+
}
|
|
70551
|
+
function createReadEditTracker(opts = {}) {
|
|
70552
|
+
const observed = /* @__PURE__ */ new Map();
|
|
70553
|
+
const record = (filePath, kind) => {
|
|
70554
|
+
if (typeof filePath !== "string" || !filePath.trim()) return;
|
|
70555
|
+
const key = normalize(filePath.trim(), opts.workspaceRoot);
|
|
70556
|
+
const prior = observed.get(key);
|
|
70557
|
+
if (kind === "written" || prior !== "written") observed.set(key, kind);
|
|
70558
|
+
};
|
|
70559
|
+
return {
|
|
70560
|
+
recordRead: (filePath) => record(filePath, "read"),
|
|
70561
|
+
recordWrite: (filePath) => record(filePath, "written"),
|
|
70562
|
+
observation: (filePath) => {
|
|
70563
|
+
if (typeof filePath !== "string" || !filePath.trim()) return null;
|
|
70564
|
+
const key = normalize(filePath.trim(), opts.workspaceRoot);
|
|
70565
|
+
return observed.get(key) ?? null;
|
|
70566
|
+
},
|
|
70567
|
+
hasObserved: (filePath) => {
|
|
70568
|
+
if (typeof filePath !== "string" || !filePath.trim()) return false;
|
|
70569
|
+
const key = normalize(filePath.trim(), opts.workspaceRoot);
|
|
70570
|
+
return observed.has(key);
|
|
70571
|
+
},
|
|
70572
|
+
reset: () => {
|
|
70573
|
+
observed.clear();
|
|
70574
|
+
}
|
|
70575
|
+
};
|
|
70576
|
+
}
|
|
70577
|
+
|
|
70461
70578
|
//#endregion
|
|
70462
70579
|
//#region src/media/sniff-mime-from-base64.ts
|
|
70463
70580
|
async function sniffMimeFromBase64(base64) {
|
|
@@ -71085,33 +71202,34 @@ function createSymiCodingTools(options) {
|
|
|
71085
71202
|
});
|
|
71086
71203
|
if (sandboxRoot && !sandboxFsBridge) throw new Error("Sandbox filesystem bridge is unavailable.");
|
|
71087
71204
|
const imageSanitization = resolveImageSanitizationLimits(options?.config);
|
|
71205
|
+
const readEditTracker = createReadEditTracker({ workspaceRoot: sandboxRoot ?? workspaceRoot });
|
|
71088
71206
|
const base = codingTools.flatMap((tool) => {
|
|
71089
71207
|
if (tool.name === readTool.name) {
|
|
71090
71208
|
if (sandboxRoot) {
|
|
71091
|
-
const
|
|
71209
|
+
const tracked = wrapReadToolWithTracker(createSandboxedReadTool({
|
|
71092
71210
|
root: sandboxRoot,
|
|
71093
71211
|
bridge: sandboxFsBridge,
|
|
71094
71212
|
modelContextWindowTokens: options?.modelContextWindowTokens,
|
|
71095
71213
|
imageSanitization
|
|
71096
|
-
});
|
|
71097
|
-
return [workspaceOnly ? wrapToolWorkspaceRootGuard(
|
|
71214
|
+
}), readEditTracker);
|
|
71215
|
+
return [workspaceOnly ? wrapToolWorkspaceRootGuard(tracked, sandboxRoot) : tracked];
|
|
71098
71216
|
}
|
|
71099
|
-
const
|
|
71217
|
+
const tracked = wrapReadToolWithTracker(createSymiReadTool(createReadTool(workspaceRoot), {
|
|
71100
71218
|
modelContextWindowTokens: options?.modelContextWindowTokens,
|
|
71101
71219
|
imageSanitization
|
|
71102
|
-
});
|
|
71103
|
-
return [workspaceOnly ? wrapToolWorkspaceRootGuard(
|
|
71220
|
+
}), readEditTracker);
|
|
71221
|
+
return [workspaceOnly ? wrapToolWorkspaceRootGuard(tracked, workspaceRoot) : tracked];
|
|
71104
71222
|
}
|
|
71105
71223
|
if (tool.name === "bash" || tool.name === execToolName) return [];
|
|
71106
71224
|
if (tool.name === "write") {
|
|
71107
71225
|
if (sandboxRoot) return [];
|
|
71108
|
-
const
|
|
71109
|
-
return [workspaceOnly ? wrapToolWorkspaceRootGuard(
|
|
71226
|
+
const tracked = wrapWriteToolWithTracker(wrapToolParamNormalization(createWriteTool(workspaceRoot), CLAUDE_PARAM_GROUPS.write), readEditTracker);
|
|
71227
|
+
return [workspaceOnly ? wrapToolWorkspaceRootGuard(tracked, workspaceRoot) : tracked];
|
|
71110
71228
|
}
|
|
71111
71229
|
if (tool.name === "edit") {
|
|
71112
71230
|
if (sandboxRoot) return [];
|
|
71113
|
-
const
|
|
71114
|
-
return [workspaceOnly ? wrapToolWorkspaceRootGuard(
|
|
71231
|
+
const guarded = wrapEditToolWithGuard(wrapToolParamNormalization(createEditTool(workspaceRoot), CLAUDE_PARAM_GROUPS.edit), readEditTracker);
|
|
71232
|
+
return [workspaceOnly ? wrapToolWorkspaceRootGuard(guarded, workspaceRoot) : guarded];
|
|
71115
71233
|
}
|
|
71116
71234
|
return [tool];
|
|
71117
71235
|
});
|
|
@@ -71154,22 +71272,18 @@ function createSymiCodingTools(options) {
|
|
|
71154
71272
|
} : void 0,
|
|
71155
71273
|
workspaceOnly: applyPatchWorkspaceOnly
|
|
71156
71274
|
});
|
|
71275
|
+
const sandboxedEditTool = sandboxRoot ? wrapEditToolWithGuard(createSandboxedEditTool({
|
|
71276
|
+
root: sandboxRoot,
|
|
71277
|
+
bridge: sandboxFsBridge
|
|
71278
|
+
}), readEditTracker) : null;
|
|
71279
|
+
const sandboxedWriteTool = sandboxRoot ? wrapWriteToolWithTracker(createSandboxedWriteTool({
|
|
71280
|
+
root: sandboxRoot,
|
|
71281
|
+
bridge: sandboxFsBridge
|
|
71282
|
+
}), readEditTracker) : null;
|
|
71157
71283
|
const withHooks = applyToolPolicyPipeline({
|
|
71158
71284
|
tools: applyOwnerOnlyToolPolicy([
|
|
71159
71285
|
...base,
|
|
71160
|
-
...sandboxRoot ? allowWorkspaceWrites ? [workspaceOnly ? wrapToolWorkspaceRootGuard(
|
|
71161
|
-
root: sandboxRoot,
|
|
71162
|
-
bridge: sandboxFsBridge
|
|
71163
|
-
}), sandboxRoot) : createSandboxedEditTool({
|
|
71164
|
-
root: sandboxRoot,
|
|
71165
|
-
bridge: sandboxFsBridge
|
|
71166
|
-
}), workspaceOnly ? wrapToolWorkspaceRootGuard(createSandboxedWriteTool({
|
|
71167
|
-
root: sandboxRoot,
|
|
71168
|
-
bridge: sandboxFsBridge
|
|
71169
|
-
}), sandboxRoot) : createSandboxedWriteTool({
|
|
71170
|
-
root: sandboxRoot,
|
|
71171
|
-
bridge: sandboxFsBridge
|
|
71172
|
-
})] : [] : [],
|
|
71286
|
+
...sandboxRoot ? allowWorkspaceWrites && sandboxedEditTool && sandboxedWriteTool ? [workspaceOnly ? wrapToolWorkspaceRootGuard(sandboxedEditTool, sandboxRoot) : sandboxedEditTool, workspaceOnly ? wrapToolWorkspaceRootGuard(sandboxedWriteTool, sandboxRoot) : sandboxedWriteTool] : [] : [],
|
|
71173
71287
|
...applyPatchTool ? [applyPatchTool] : [],
|
|
71174
71288
|
execTool,
|
|
71175
71289
|
processTool,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "./paths-Cqn-zk3M.js";
|
|
2
2
|
import "./utils-B-0b9bGM.js";
|
|
3
3
|
import "./thinking-EAliFiVK.js";
|
|
4
|
-
import { Bt as runAgentTurn } from "./reply-
|
|
4
|
+
import { Bt as runAgentTurn } from "./reply-CgyjcoxC.js";
|
|
5
5
|
import "./registry-Cja8eT7G.js";
|
|
6
6
|
import { t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
|
|
7
7
|
import "./exec-CWkblSrI.js";
|
|
@@ -60,8 +60,8 @@ import "./diagnostic-session-state-CUslJyKP.js";
|
|
|
60
60
|
import "./send-DpMnSIi5.js";
|
|
61
61
|
import "./model-ECsJuJew.js";
|
|
62
62
|
import "./reply-prefix-CE2YmmsD.js";
|
|
63
|
-
import "./memory-cli-
|
|
64
|
-
import "./manager-
|
|
63
|
+
import "./memory-cli-BTByRgM0.js";
|
|
64
|
+
import "./manager-9Mni2AA9.js";
|
|
65
65
|
import "./retry-BoS4e4X_.js";
|
|
66
66
|
import "./sqlite-D55gRQbH.js";
|
|
67
67
|
import "./target-errors-C9e6dMU_.js";
|
|
@@ -3,16 +3,16 @@ import "./registry-DYq1AYOv.js";
|
|
|
3
3
|
import "./agent-scope-CpEJ0B88.js";
|
|
4
4
|
import { t as createSubsystemLogger } from "./subsystem-BjyjJF-d.js";
|
|
5
5
|
import "./workspace-DscDraUb.js";
|
|
6
|
-
import { t as runAgentTurn } from "./unified-runner-
|
|
6
|
+
import { t as runAgentTurn } from "./unified-runner-BhnvjB1J.js";
|
|
7
7
|
import "./paths-CbQV9WEg.js";
|
|
8
8
|
import "./auth-profiles-C2vj6htZ.js";
|
|
9
9
|
import "./env-BDXYbTKj.js";
|
|
10
10
|
import "./github-copilot-token-cCYzSU9h.js";
|
|
11
11
|
import "./boolean-CE7i9tBR.js";
|
|
12
|
-
import "./pi-embedded-helpers-
|
|
12
|
+
import "./pi-embedded-helpers-D1_Sab0M.js";
|
|
13
13
|
import "./config-BkZ9HOKT.js";
|
|
14
14
|
import "./manifest-registry-CBCGTsIb.js";
|
|
15
|
-
import "./chrome-
|
|
15
|
+
import "./chrome-ROtrXlNs.js";
|
|
16
16
|
import "./frontmatter-CTR5f_Ez.js";
|
|
17
17
|
import "./skills-CXxrn_e2.js";
|
|
18
18
|
import "./redact-BDMXB06K.js";
|
|
@@ -30,16 +30,16 @@ import "./bindings-BsHoBLIE.js";
|
|
|
30
30
|
import "./send-BKo1T3HF.js";
|
|
31
31
|
import "./send-C0QjmPaf.js";
|
|
32
32
|
import "./tool-images-SqqWIT22.js";
|
|
33
|
-
import "./deliver-
|
|
33
|
+
import "./deliver-B0OUq6RP.js";
|
|
34
34
|
import "./diagnostic-BUcR3Meg.js";
|
|
35
35
|
import "./diagnostic-session-state-Zw87xFym.js";
|
|
36
|
-
import "./image-
|
|
36
|
+
import "./image-BuVL0jHI.js";
|
|
37
37
|
import "./pi-auth-json-RXOlh8ar.js";
|
|
38
38
|
import "./tokens-W0JzCJJM.js";
|
|
39
39
|
import "./send-Bb4it0te.js";
|
|
40
40
|
import "./pi-model-discovery-CuZX_Q4t.js";
|
|
41
41
|
import "./reply-prefix-CvEIl6_d.js";
|
|
42
|
-
import "./manager-
|
|
42
|
+
import "./manager-CjW8kPVc.js";
|
|
43
43
|
import "./gemini-auth-BefM10YB.js";
|
|
44
44
|
import "./retry-B-y5suGA.js";
|
|
45
45
|
import "./sqlite-BN_hIcmu.js";
|
|
@@ -50,7 +50,7 @@ import "./local-roots-ClipCZ9s.js";
|
|
|
50
50
|
import "./ir-7tMVY7D_.js";
|
|
51
51
|
import "./render-D1xvLuGo.js";
|
|
52
52
|
import "./commands-registry-DxbSTLNQ.js";
|
|
53
|
-
import "./runner-
|
|
53
|
+
import "./runner-ecX1WzDt.js";
|
|
54
54
|
import "./skill-commands-DG2lcozb.js";
|
|
55
55
|
import "./fetch-ClslA6GS.js";
|
|
56
56
|
import "./channel-activity-D8QD7GoV.js";
|
|
@@ -14,7 +14,7 @@ import "./client-CJIMV1WD.js";
|
|
|
14
14
|
import "./call-M4YyUnwu.js";
|
|
15
15
|
import "./message-channel-C9dERklz.js";
|
|
16
16
|
import "./pairing-token-Byh6drgn.js";
|
|
17
|
-
import { J as runAgentTurn } from "./subagent-registry-
|
|
17
|
+
import { J as runAgentTurn } from "./subagent-registry-D0IYimMO.js";
|
|
18
18
|
import "./sessions-BPD85pWA.js";
|
|
19
19
|
import "./tokens-Csntmwwn.js";
|
|
20
20
|
import "./plugins-CwSlLxM8.js";
|
|
@@ -52,8 +52,8 @@ import "./tool-images-CVLISeRT.js";
|
|
|
52
52
|
import "./thinking-8sKPnzpp.js";
|
|
53
53
|
import "./models-config-J1x_DaPn.js";
|
|
54
54
|
import "./reply-prefix-BUN71nd5.js";
|
|
55
|
-
import "./memory-cli-
|
|
56
|
-
import "./manager-
|
|
55
|
+
import "./memory-cli-OW9XfyYu.js";
|
|
56
|
+
import "./manager-QPF0UtOC.js";
|
|
57
57
|
import "./gemini-auth-DEakvf-D.js";
|
|
58
58
|
import "./retry-C4Q_VPOo.js";
|
|
59
59
|
import "./sqlite-BP8tiuca.js";
|
|
@@ -7,7 +7,7 @@ import "./reply-prefix-K_J_nfgx.js";
|
|
|
7
7
|
import "./github-copilot-token-BbsJ0Qbo.js";
|
|
8
8
|
import "./env-CQ_DQOwT.js";
|
|
9
9
|
import "./tokens-Cn6drXx2.js";
|
|
10
|
-
import { p as runAgentTurn } from "./pi-embedded-
|
|
10
|
+
import { p as runAgentTurn } from "./pi-embedded-Bl3YkBkI.js";
|
|
11
11
|
import "./plugins-71oIavrF.js";
|
|
12
12
|
import "./accounts-DDEyGwby.js";
|
|
13
13
|
import "./bindings-DYVakimr.js";
|
|
@@ -35,7 +35,7 @@ import "./accounts-DImOt9jX.js";
|
|
|
35
35
|
import "./paths-DkMamAQ-.js";
|
|
36
36
|
import "./tool-images-ChC2CXaN.js";
|
|
37
37
|
import "./image-MNvheU8U.js";
|
|
38
|
-
import "./manager-
|
|
38
|
+
import "./manager-C-H0XXJq.js";
|
|
39
39
|
import "./gemini-auth-DVcG-42i.js";
|
|
40
40
|
import "./retry-QGp0jvVi.js";
|
|
41
41
|
import "./sqlite-Bo4pHfp8.js";
|