@symerian/symi 3.3.0 → 3.3.1
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/{agent-B2IkIBj2.js → agent-BI1-UXxQ.js} +1 -1
- package/dist/{agent-BrIHHGnC.js → agent-DeLysRUa.js} +29 -29
- package/dist/{agent-scope-2la27US0.js → agent-scope-BjEBQhs0.js} +23 -23
- package/dist/{agent-scope-D_MtsuXX.js → agent-scope-DE5eEsvh.js} +2 -2
- package/dist/{agents-B57SUSPt.js → agents-BMRZpxNt.js} +2 -2
- package/dist/{agents.config-COMcEDAk.js → agents.config-BFKM-a83.js} +3 -3
- package/dist/{audit-B58SlbPa.js → audit-DQ_p2Pbq.js} +34 -34
- package/dist/{auth-CC9_WXMi.js → auth-BbwD4lRX.js} +3 -3
- package/dist/{auth-choice-B6iYCDVN.js → auth-choice-BGZsmh6a.js} +9 -9
- package/dist/{auth-choice-Z1qCZxwg.js → auth-choice-T77Ymi34.js} +1 -1
- package/dist/{auth-profiles-CZTGpbyT.js → auth-profiles-B6ISm3Th.js} +5 -5
- package/dist/{auth-profiles-8vSEr9B4.js → auth-profiles-BVtpxYtY.js} +17 -17
- package/dist/{auth-token-DpYUPTNG.js → auth-token-CPluo60n.js} +3 -3
- package/dist/{banner-QsnCDxXH.js → banner-BJHky-bq.js} +1 -1
- package/dist/{bindings-CiRAK4tH.js → bindings-9LSA3Jr1.js} +2 -2
- package/dist/{bonjour-discovery-lp5P_YUR.js → bonjour-discovery-CU1mz7AC.js} +3 -3
- package/dist/{browser-cli-_9G3GBJS.js → browser-cli-O7Ic8DI3.js} +28 -28
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +34 -34
- package/dist/bundled/bootstrap-extra-files/handler.js +5 -5
- package/dist/bundled/session-memory/handler.js +33 -33
- package/dist/{call-DLBaLOHo.js → call-CdXXPXpo.js} +13 -13
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{catalog-CNZxYA15.js → catalog-BEREnWaa.js} +4 -4
- package/dist/{channel-options-DckWOMWG.js → channel-options-BrDTgiiV.js} +5 -5
- package/dist/{channel-options-Cj-xJAMD.js → channel-options-C1yi5h7A.js} +1 -1
- package/dist/{channel-selection-BGtIUbFL.js → channel-selection-BvIcXQLj.js} +2 -2
- package/dist/{channels-cli-CIq4PFA0.js → channels-cli-BYeGzy-G.js} +7 -7
- package/dist/{channels-cli-Y8CGJ_qQ.js → channels-cli-Pxe1OINS.js} +98 -98
- package/dist/{channels-status-issues-rRBNHH7B.js → channels-status-issues-DC8vgOMo.js} +1 -1
- package/dist/{chrome-b556dOQ6.js → chrome-CQnRgvJz.js} +7 -7
- package/dist/{chrome-BgQbis3t.js → chrome-FAf5DZL2.js} +11 -11
- package/dist/{chrome-sQI2Ex5S.js → chrome-NUKborg3.js} +7 -7
- package/dist/{chunk-CKgSHf7u.js → chunk-DQGU0F8t.js} +2 -2
- package/dist/{chunk-Ds8SZRkS.js → chunk-DX6VtywY.js} +1 -1
- package/dist/{clack-prompter-CR9tYooX.js → clack-prompter-CWQQn_CK.js} +5 -5
- package/dist/cli-DFNOC2Ad.js +128 -0
- package/dist/{cli--omJsLkl.js → cli-Dt-wfm_7.js} +4 -4
- package/dist/{client-D8iTVY4F.js → client-Bs2zB0rY.js} +7 -7
- package/dist/{clipboard-C9NQe8TV.js → clipboard-McRwF3r0.js} +1 -1
- package/dist/{command-registry-bozDt85D.js → command-registry-BwbT4ll7.js} +10 -10
- package/dist/{commands-sNCgvbpu.js → commands-B3UrgxIz.js} +2 -2
- package/dist/{commands-registry-CRkL6mTz.js → commands-registry-C5IdtVVy.js} +4 -4
- package/dist/{commands-registry-DXK4Ortm.js → commands-registry-DYk02tmt.js} +6 -6
- package/dist/{completion-cli-9qQYFUPk.js → completion-cli-CyOSA5xZ.js} +2 -2
- package/dist/{completion-cli-FXkVKM19.js → completion-cli-DiNUqrNY.js} +16 -16
- package/dist/{config-fTqqDRAc.js → config-CW8aDVM0.js} +9 -9
- package/dist/{config-cli-BexhS7Qb.js → config-cli-DBU_S417.js} +15 -15
- package/dist/{config-cli-C3D7beGW.js → config-cli-DfG0nukz.js} +1 -1
- package/dist/{config-guard-IteQa1rq.js → config-guard-CNmD3-IC.js} +23 -23
- package/dist/{config-validation-B05t9fma.js → config-validation-Bz5CV181.js} +2 -2
- package/dist/{configure-BWXNd2TO.js → configure-BYu2DI_6.js} +2 -2
- package/dist/{configure-0e3ty1G9.js → configure-BkH4ueot.js} +26 -26
- package/dist/{consolidate-BaeR2tIX.js → consolidate-Cx7qF5Ht.js} +10 -10
- package/dist/{consolidate-C-HKdAJo.js → consolidate-dh1m3X1s.js} +2 -2
- package/dist/{control-service-BDMq-0pg.js → control-service-Drd2sr2o.js} +5 -5
- package/dist/{control-ui-assets-muBwnb6-.js → control-ui-assets-D22DSxhv.js} +4 -4
- package/dist/{conversation-label-B4d5pKXr.js → conversation-label-CS5Zjc4w.js} +1 -1
- package/dist/{conversation-label-WjwKgn7n.js → conversation-label-tLwAlqLf.js} +1 -1
- package/dist/{cron-cli-DvDr2Uxo.js → cron-cli-BTAdnRhX.js} +21 -21
- package/dist/{daemon-cli-DiLogoCM.js → daemon-cli-BY9BFNuw.js} +22 -22
- package/dist/{daemon-runtime-C3dBpZhs.js → daemon-runtime-BH3ZBZXS.js} +13 -13
- package/dist/{deliver-B_Fv-dS9.js → deliver-DZ7ynJYH.js} +8 -8
- package/dist/{deliver-B_Gz2_tA.js → deliver-Dlq2X0K5.js} +4 -4
- package/dist/{deliver-B_jXI55b.js → deliver-kmnOOp9j.js} +22 -22
- package/dist/{delivery-queue-CeY346SK.js → delivery-queue-DDs84baU.js} +2 -2
- package/dist/{deps-Du8ZcRHN.js → deps-i1g0Zpz4.js} +1 -1
- package/dist/{devices-cli-BFPrh5bu.js → devices-cli-Cqi6L8PH.js} +19 -19
- package/dist/{diagnostic-D7z6O7v0.js → diagnostic-CQLyE7_n.js} +1 -1
- package/dist/{diagnostic-oeL366QK.js → diagnostic-CwF3MnBL.js} +1 -1
- package/dist/{diagnostics-3x3usVgE.js → diagnostics-nLP2i_BY.js} +5 -5
- package/dist/{directory-cli-BUBucKQI.js → directory-cli-B0XsBWso.js} +19 -19
- package/dist/{dm-policy-shared-BcXoqtVd.js → dm-policy-shared-CnKffdt_.js} +2 -2
- package/dist/{dns-cli-B6QTNBXV.js → dns-cli-BHWlCG31.js} +17 -17
- package/dist/{dock-n_MeJBcj.js → dock-CnGWTXL4.js} +3 -3
- package/dist/{docs-cli-C2xEH6jC.js → docs-cli-DASNErN-.js} +13 -13
- package/dist/{doctor-completion-K1dL1s3P.js → doctor-completion-D_cwpDAq.js} +4 -4
- package/dist/{doctor-completion-CcHk8myN.js → doctor-completion-DqvmZZEo.js} +1 -1
- package/dist/{doctor-config-flow-Dl08K6Q3.js → doctor-config-flow-BvHSaiFy.js} +15 -15
- package/dist/entry.js +1 -1
- package/dist/{env-B7UUyzd_.js → env-B97Ms861.js} +2 -2
- package/dist/{errors-BgCjRT2k.js → errors-BkfLlDKo.js} +1 -1
- package/dist/{errors-CBVhQiQ9.js → errors-Z-WkF18Q.js} +1 -1
- package/dist/{exec-BcvUYCcV.js → exec-DKyLtSjm.js} +2 -2
- package/dist/{exec-approvals-BWtVKlN2.js → exec-approvals-CZOc8M5w.js} +3 -3
- package/dist/{exec-approvals-cli-SDF4LICf.js → exec-approvals-cli-CyHTywue.js} +27 -27
- package/dist/extensionAPI.js +4 -4
- package/dist/{fetch-guard-BWofyagX.js → fetch-guard-DG6T0ZdL.js} +2 -2
- package/dist/{frontmatter-B5iYTsZP.js → frontmatter-B6IdJ7UK.js} +2 -2
- package/dist/{frontmatter-vaw8OX7Y.js → frontmatter-BW7tVmn4.js} +5 -5
- package/dist/{fs-safe-CR_3Yr4x.js → fs-safe-DjAKGGJ8.js} +7 -7
- package/dist/{gateway-cli-CAFWFnSX.js → gateway-cli-BBqSqFGV.js} +451 -151
- package/dist/{gateway-cli-CzD6faIt.js → gateway-cli-BYGA5ex3.js} +311 -11
- package/dist/{gateway-rpc-o8CJkHuM.js → gateway-rpc-BJF1iDnx.js} +3 -3
- package/dist/{github-copilot-token-DTYkb2IC.js → github-copilot-token-BTNK6Tcd.js} +2 -2
- package/dist/{glass-ui-ws-Bbs2mIij.js → glass-ui-ws-DJnV8nJK.js} +8 -8
- package/dist/{glass-ui-ws-Dsez9bGF.js → glass-ui-ws-NJNiRFL3.js} +105 -105
- package/dist/{gmail-setup-utils-CLvOQ6kY.js → gmail-setup-utils-D5G00y8h.js} +5 -5
- package/dist/{health-iJ9JzccO.js → health-D59E1VfO.js} +13 -13
- package/dist/{health-format-CxAXRqzB.js → health-format-39e76m9p.js} +1 -1
- package/dist/{help-format-BWTv-lf6.js → help-format-BI_G2p1e.js} +1 -1
- package/dist/{helpers-BtwjKsDp.js → helpers-BBypnAYf.js} +1 -1
- package/dist/{hooks-cli-BEYoHsqh.js → hooks-cli-Bidz8ACz.js} +98 -98
- package/dist/{hooks-cli-DNlmk6eB.js → hooks-cli-CyjEjDSY.js} +5 -5
- package/dist/{hooks-status-D9SOPTTY.js → hooks-status-DLHEahg_.js} +3 -3
- package/dist/{image-ops-BkR5mVOY.js → image-ops-c7_of0HT.js} +12 -12
- package/dist/{inbound-context-CICDRKxY.js → inbound-context-CJj1VfzK.js} +2 -2
- package/dist/{inbound-context-B4B7i7oM.js → inbound-context-DqAyGDbE.js} +2 -2
- package/dist/index.js +90 -90
- package/dist/{inspect-XD55qAEL.js → inspect-op0Ov-v4.js} +4 -4
- package/dist/{install-safe-path-odQNUvjd.js → install-safe-path-B73BkVO3.js} +12 -12
- package/dist/{installs-DLhIne1t.js → installs-ZXEjR9Sp.js} +12 -12
- package/dist/{internal-CBKiu8Jv.js → internal-C3o_xyzP.js} +10 -10
- package/dist/{legacy-names-BVA_sKnb.js → legacy-names-C0hZiM-7.js} +1 -1
- package/dist/{lifecycle-core-CcinwCvM.js → lifecycle-core-zhQYm_ni.js} +10 -10
- package/dist/{links-C6mXo5Yj.js → links-CSaUKNKm.js} +1 -1
- package/dist/llm-slug-generator.js +33 -33
- package/dist/{local-roots-C0G03E-R.js → local-roots-CTriU02e.js} +3 -3
- package/dist/{local-roots-DtvYChMM.js → local-roots-Dm8-ErgQ.js} +3 -3
- package/dist/{logging-CMolPIQB.js → logging-B96FQvnn.js} +2 -2
- package/dist/{logs-cli--Wek899G.js → logs-cli-B7RJ57Dc.js} +20 -20
- package/dist/{manager-CS1vxold.js → manager-9dNT9kNF.js} +22 -22
- package/dist/{manager-9Rt8-xIT.js → manager-CpBl-VGg.js} +1 -1
- package/dist/{manager-Bmh-pcUv.js → manager-Dsdh0rGn.js} +9 -9
- package/dist/{manager-Do0-i7vp.js → manager-t4GthPGw.js} +1 -1
- package/dist/{manifest-registry-Cc80pffV.js → manifest-registry-B2vClvK5.js} +2 -2
- package/dist/{manifest-registry-B4I9g0CL.js → manifest-registry-D7Qup2Vq.js} +3 -3
- package/dist/{markdown-tables-D0bwB4O7.js → markdown-tables-BaWa2kOe.js} +1 -1
- package/dist/{markdown-tables-jlJYpF1X.js → markdown-tables-GTLvbzuR.js} +2 -2
- package/dist/{memory-BduQaKuC.js → memory-B7TJXpqS.js} +2 -2
- package/dist/{memory-ofHIUCzf.js → memory-DcWXMzOH.js} +7 -7
- package/dist/{memory-cli-BCz9iNCM.js → memory-cli-C0WA_nRS.js} +2 -2
- package/dist/{memory-cli-LXH0BNmI.js → memory-cli-xBZPEOeL.js} +22 -22
- package/dist/{message-channel-j44ChSJV.js → message-channel-C_V8IAYx.js} +1 -1
- package/dist/{model-BBL3doiY.js → model-BXWgh5eZ.js} +1 -1
- package/dist/{model-catalog-D8YRs6r8.js → model-catalog-BGVslwAT.js} +4 -4
- package/dist/{model-picker-CdmjvvmL.js → model-picker-aTfyp_mP.js} +3 -3
- package/dist/{models-DTHdIg0A.js → models-IfAFy9bK.js} +2 -2
- package/dist/{models-cli-CdL5Tf5E.js → models-cli-DiB4JqF2.js} +6 -6
- package/dist/{models-cli-DrJsggrX.js → models-cli-h8h_qu3F.js} +94 -94
- package/dist/{models-config-BCa11tVc.js → models-config-DRgHv7Ss.js} +8 -8
- package/dist/{node-cli-Dl-lvH1N.js → node-cli-BPkbqgRt.js} +50 -50
- package/dist/{node-service-O5CpXu6c.js → node-service-DuN9eBL6.js} +1 -1
- package/dist/{nodes-cli-C9pjIduh.js → nodes-cli-C09c6nCf.js} +27 -27
- package/dist/{nodes-screen-B_D8bZhT.js → nodes-screen-CT94yu_w.js} +7 -7
- package/dist/{note-1QdZVD7W.js → note-CHrtEumO.js} +2 -2
- package/dist/{npm-registry-spec-BQ7yzKIT.js → npm-registry-spec-B8X06AqB.js} +12 -12
- package/dist/{onboard-channels-DmvTuYe_.js → onboard-channels-BfzW-9vo.js} +1 -1
- package/dist/{onboard-channels-CXqIlUcV.js → onboard-channels-Deq8QGnM.js} +13 -13
- package/dist/{onboard-custom-DAD9D1fS.js → onboard-custom-DEdRdzNq.js} +3 -3
- package/dist/{onboard-helpers-C5J9vSm2.js → onboard-helpers-DZKHFY2J.js} +16 -16
- package/dist/{onboard-hooks-D87tRcuX.js → onboard-hooks-DZZM8goM.js} +11 -11
- package/dist/{onboard-3VcPRZV5.js → onboard-iL7Z0wKJ.js} +1 -1
- package/dist/{onboard-remote-D3CWFQ0_.js → onboard-remote-dn4L5WdE.js} +3 -3
- package/dist/{onboard-Cr1Rd93U.js → onboard-sMgEOBjV.js} +20 -20
- package/dist/{onboard-skills-CTv0hBJv.js → onboard-skills-DGHye9Q3.js} +5 -5
- package/dist/{onboarding-D_wPq7hv.js → onboarding-70YKbZi6.js} +3 -3
- package/dist/{onboarding-Bop5peq2.js → onboarding-BjXYbWlg.js} +19 -19
- package/dist/{onboarding.finalize-DGwAMlRi.js → onboarding.finalize-Ch3V08eY.js} +4 -4
- package/dist/{onboarding.finalize-Pa0bEFjp.js → onboarding.finalize-dU_CtL43.js} +62 -62
- package/dist/{onboarding.gateway-config-aIrdqmcQ.js → onboarding.gateway-config-DfF8Rxvn.js} +23 -23
- package/dist/{openai-model-default-BDH_OYY8.js → openai-model-default-D1NFHFF_.js} +4 -4
- package/dist/{pairing-cli-PrIxvqnD.js → pairing-cli-CJv8LQfb.js} +17 -17
- package/dist/{pairing-store-DmCi9E47.js → pairing-store-CxT0UGxd.js} +5 -5
- package/dist/{pairing-token-BmIoXjHZ.js → pairing-token-DorpwP8O.js} +9 -9
- package/dist/{path-env-CRW1aXZp.js → path-env-DuQralyy.js} +3 -3
- package/dist/{paths-Cqn-zk3M.js → paths-BSzKwaxE.js} +1 -1
- package/dist/paths-BeAyfCRg.js +127 -0
- package/dist/{paths-CdGa1jlU.js → paths-CJcw9nbZ.js} +3 -3
- package/dist/{paths-DvXvD4Xu.js → paths-DaQrPPet.js} +2 -2
- package/dist/{pi-auth-json-ChKC--mV.js → pi-auth-json-BzuhVcKu.js} +1 -1
- package/dist/{pi-auth-json-DhbhmAvs.js → pi-auth-json-DGZH6URT.js} +5 -5
- package/dist/{pi-embedded-hri4e4ie.js → pi-embedded-DOCVZrmx.js} +20 -64
- package/dist/{pi-embedded-helpers-VZo1D4Ck.js → pi-embedded-helpers-Be-EeyzH.js} +9 -9
- package/dist/{pi-tools.policy-DrRZdkk0.js → pi-tools.policy-qwS9SXOa.js} +6 -6
- package/dist/{plugin-auto-enable-BV-thF8P.js → plugin-auto-enable-zDUaiaf2.js} +4 -4
- package/dist/{plugin-registry-CYEwOWqU.js → plugin-registry-BgGVB3kW.js} +5 -5
- package/dist/{plugin-registry-q_UuFncy.js → plugin-registry-CP2mbhwk.js} +1 -1
- package/dist/plugin-sdk/auto-reply/reply/get-reply-directives.d.ts +0 -1
- package/dist/plugin-sdk/auto-reply/reply/model-selection.d.ts +0 -3
- package/dist/plugin-sdk/auto-reply/reply/payload-middleware.d.ts +0 -2
- package/dist/plugin-sdk/auto-reply/reply/typing-mode.d.ts +5 -3
- package/dist/plugin-sdk/auto-reply/types.d.ts +0 -3
- package/dist/plugin-sdk/gateway/outbound-filter.d.ts +4 -7
- package/dist/plugin-sdk/infra/agent-events.d.ts +0 -1
- package/dist/{plugins-CYQOjCDt.js → plugins-DuuHorqi.js} +3 -3
- package/dist/{plugins-cli-DE_0PdqM.js → plugins-cli-1wkCRsFe.js} +5 -5
- package/dist/{plugins-cli-CR1PAkGv.js → plugins-cli-B_Gtx3LU.js} +89 -89
- package/dist/{plugins-BG2b7dR_.js → plugins-yymezpEd.js} +2 -2
- package/dist/{ports-DfsXfAsq.js → ports-ChuJYhEL.js} +2 -2
- package/dist/{ports-LzI_-wEZ.js → ports-EAVAOFyK.js} +7 -7
- package/dist/{program-x8XxEZXE.js → program-UyCr49qs.js} +10 -10
- package/dist/{program-context-CvgJOZ3Q.js → program-context-C7uCS8z7.js} +39 -39
- package/dist/{progress-B6mhJhX6.js → progress-CyPyGCDn.js} +2 -2
- package/dist/{prompt-select-styled-BFV2QYJC.js → prompt-select-styled-BRcRFLzB.js} +4 -4
- package/dist/{prompt-select-styled-CFeLUnsr.js → prompt-select-styled-DcMra8CK.js} +54 -54
- package/dist/{prompt-style-DtQMGj0v.js → prompt-style-Cad0BDRS.js} +1 -1
- package/dist/{provider-auth-helpers-D2GLBV7U.js → provider-auth-helpers-BJTb9xI0.js} +1 -1
- package/dist/{provider-auth-helpers-C-Cv3SZA.js → provider-auth-helpers-Xn1TAPPY.js} +8 -8
- package/dist/{push-apns-DTqLWoEj.js → push-apns-Aaqf9WKI.js} +10 -10
- package/dist/{push-apns-9XQgEWxs.js → push-apns-Bfqnchj6.js} +1 -1
- package/dist/{pw-ai-BFZrohva.js → pw-ai-B3qisJP1.js} +1 -1
- package/dist/{pw-ai-Bb4P23-n.js → pw-ai-C-ddUgTA.js} +20 -20
- package/dist/{pw-ai-D5WlMgqy.js → pw-ai-DJrnU1ja.js} +12 -12
- package/dist/{qmd-manager-92cDmzSO.js → qmd-manager-D5kqCz-Y.js} +28 -28
- package/dist/{qmd-manager-D6ABQ2yd.js → qmd-manager-DrM6m9z1.js} +7 -7
- package/dist/{qr-cli-B_kge4ua.js → qr-cli-B_mw4i0R.js} +12 -12
- package/dist/{register.agent-C-p6kDhf.js → register.agent-BqKNzdaW.js} +108 -108
- package/dist/{register.agent-D9FfFyh0.js → register.agent-vAJ0_4m0.js} +9 -9
- package/dist/register.configure-7TmTqCgU.js +129 -0
- package/dist/{register.configure-CtbO9t7v.js → register.configure-BzgavjpU.js} +8 -8
- package/dist/{register.maintenance-Dy8l8hKt.js → register.maintenance-6Wz4HXlm.js} +109 -109
- package/dist/{register.maintenance-h-CVvMpP.js → register.maintenance-BJO0RCk9.js} +9 -9
- package/dist/{register.message-DFytf1Dr.js → register.message-CW9PahRi.js} +5 -5
- package/dist/{register.message-CaOagrcp.js → register.message-XYivyrQJ.js} +81 -81
- package/dist/{register.onboard-SunldfQB.js → register.onboard-BgwkmP4D.js} +45 -45
- package/dist/{register.onboard-BAQSWmTB.js → register.onboard-MWRC29wD.js} +2 -2
- package/dist/{register.setup-D3uuohUQ.js → register.setup-7OoAqQG_.js} +48 -48
- package/dist/{register.setup-BnuPTj2h.js → register.setup-V-arsKvb.js} +2 -2
- package/dist/{register.status-health-sessions-azKiEST-.js → register.status-health-sessions-1VnuXhGM.js} +3 -3
- package/dist/{register.status-health-sessions-CPcQpUNU.js → register.status-health-sessions-Bgg1sdY_.js} +68 -68
- package/dist/{register.subclis-Di2DRNVF.js → register.subclis-DpPYIqkP.js} +9 -9
- package/dist/{registry-C-JddWwo.js → registry-9AaJQms1.js} +2 -2
- package/dist/{registry-CtguoMhn.js → registry-DKJLAPDB.js} +4 -4
- package/dist/{replies-CvuXRwhI.js → replies-BZN1LuJP.js} +3 -3
- package/dist/{replies-BUaT9S6J.js → replies-Dqft-42v.js} +3 -3
- package/dist/{reply-prefix-ClUrRCRd.js → reply-prefix-CyLplifX.js} +1 -1
- package/dist/{reply-prefix-ChIeKp-P.js → reply-prefix-DkDTGwTs.js} +1 -1
- package/dist/{resolve-route-BLDKso2x.js → resolve-route-CIA0TSsF.js} +4 -4
- package/dist/{resolve-route-C0EHjIMD.js → resolve-route-xpyI3enn.js} +6 -6
- package/dist/{routes-BFfAPz_0.js → routes-xZZ99jJJ.js} +14 -14
- package/dist/{rpc-CQUsmQ6_.js → rpc-BzR2wLkc.js} +3 -3
- package/dist/{run-main-BhJ6M7oy.js → run-main-n0fjk-o5.js} +17 -17
- package/dist/{runtime-guard-Btd35-OG.js → runtime-guard-BZ3_1QqS.js} +1 -1
- package/dist/{sandbox-sayuve7z.js → sandbox-DGG12SGo.js} +27 -27
- package/dist/{sandbox-cli-Dyh_eqHp.js → sandbox-cli--d2MJPM2.js} +37 -37
- package/dist/{security-cli-B5XGCe-n.js → security-cli-CeP9ss1g.js} +53 -53
- package/dist/{send-dfhV1QIV.js → send-BQJKg0bU.js} +7 -7
- package/dist/{send-B-tsyoRw.js → send-BzUWmgQ9.js} +13 -13
- package/dist/{server-context-hxl_K7eY.js → server-context-BNbx1tUD.js} +11 -11
- package/dist/{server-methods-MUFuMWc_.js → server-methods-BHg4GltA.js} +76 -408
- package/dist/{server-methods-3uA_KwN4.js → server-methods-DkZ2XtEo.js} +8 -340
- package/dist/{server-node-events-FUPulMjB.js → server-node-events-6dZ22EGj.js} +82 -82
- package/dist/{server-node-events-DkbyHj1T.js → server-node-events-BXviL2UH.js} +6 -6
- package/dist/{service-B5aOZmQH.js → service-9ItKCWWS.js} +15 -15
- package/dist/{session-cost-usage-DQjHUno0.js → session-cost-usage-DYcv40ss.js} +3 -3
- package/dist/{session-dirs-Chh7bBGo.js → session-dirs-B6PWqKEf.js} +2 -2
- package/dist/{session-utils-C6O0Db39.js → session-utils-BVC8mmBv.js} +22 -22
- package/dist/{sessions-oPVoK2gW.js → sessions-BaFVKzC2.js} +25 -25
- package/dist/{shared-BJxR-kzm.js → shared-DUmy8R4n.js} +5 -5
- package/dist/{shared-E4KDN3LG.js → shared-ot5_jkpP.js} +3 -3
- package/dist/{skill-commands-CfGPouRa.js → skill-commands-DaNhP2Jb.js} +5 -5
- package/dist/{skill-commands-4afIEM1a.js → skill-commands-X3T9Y9lT.js} +4 -4
- package/dist/{skill-scanner-BGtq5jZi.js → skill-scanner-DVq7ZopF.js} +7 -7
- package/dist/{skills-Kt1PL_Um.js → skills-BMTJ2Tiq.js} +6 -6
- package/dist/{skills-BF_e-fYt.js → skills-C_KgxpBD.js} +9 -9
- package/dist/{skills-cli-BlFM1U3r.js → skills-cli-DwYoPwkG.js} +19 -19
- package/dist/{skills-install-miTQGOBQ.js → skills-install-U4FmCP8u.js} +9 -9
- package/dist/{skills-remote-Ch1B-1aN.js → skills-remote-C0gcKYWX.js} +6 -6
- package/dist/{skills-status-CFVFYR-o.js → skills-status-CdfQvU1h.js} +4 -4
- package/dist/{sqlite-CfMLToLW.js → sqlite-BUXBg2yu.js} +8 -8
- package/dist/{sqlite-BKMdYqso.js → sqlite-C6MZhX4c.js} +3 -3
- package/dist/{ssrf-LaudpmHD.js → ssrf-BvjSIOlZ.js} +9 -9
- package/dist/{status-BNH-f3PA.js → status-BAnT_4qI.js} +4 -4
- package/dist/{status-B-XD80Yl.js → status-BK-ZK7SP.js} +36 -36
- package/dist/{status-CCgqMBwp.js → status-CmoBgZ99.js} +1 -1
- package/dist/{status-C7F7r-qN.js → status-J_gR_zbh.js} +1 -1
- package/dist/{status.update-B9WCVHPy.js → status.update-Cvj7y384.js} +4 -4
- package/dist/{subagent-registry-z08a8MUS.js → subagent-registry-CWolsN8K.js} +13 -55
- package/dist/{subsystem-CgepNOk5.js → subsystem-CtH6J8AV.js} +1 -1
- package/dist/{subsystem-DzRUKS9f.js → subsystem-DhOo2FZn.js} +1 -1
- package/dist/{symi-root-7ei1lwo0.js → symi-root-0MUhiNlM.js} +3 -3
- package/dist/{synthesis-D4iCZvKx.js → synthesis-BSKiS446.js} +4 -4
- package/dist/{synthesis-CjFmYp54.js → synthesis-CRQp5mTx.js} +78 -78
- package/dist/{synthesis-Dlweuq0p.js → synthesis-D3wZX5g3.js} +33 -33
- package/dist/{synthesis-ByjLMHMS.js → synthesis-DTZGPpj5.js} +4 -4
- package/dist/{system-cli-Ccu9utFt.js → system-cli-CUGyogmP.js} +19 -19
- package/dist/{systemd-ChKNxGyT.js → systemd-8KKQdTO_.js} +8 -8
- package/dist/{systemd-hints-hoofHqb7.js → systemd-hints-_ghBqtKo.js} +7 -7
- package/dist/{systemd-linger-DLgi3jd0.js → systemd-linger-CnKJZBUr.js} +2 -2
- package/dist/{table-Cyd0-LaL.js → table-DkAQzCOR.js} +2 -2
- package/dist/{tailscale-D3KwzQUZ.js → tailscale-D7dC-5EX.js} +3 -3
- package/dist/{thinking-nf5YVDrR.js → thinking-BYtE7_UC.js} +2 -2
- package/dist/{tokens-DfB8vBa4.js → tokens-DvvjOTxN.js} +1 -1
- package/dist/{tokens-B24nv23l.js → tokens-wW7opugV.js} +1 -1
- package/dist/{tool-display-D1Hh5TqL.js → tool-display-Dr6VaTg5.js} +2 -2
- package/dist/{tool-loop-detection-BxrJfVQU.js → tool-loop-detection-CSSq5kkt.js} +4 -4
- package/dist/{tool-loop-detection-BR52lwOt.js → tool-loop-detection-DyZ0TWGh.js} +2 -2
- package/dist/transcript-events-JGGQViao.js +17 -0
- package/dist/{trash-oWw0M_xA.js → trash-BjVrPcAx.js} +2 -2
- package/dist/{tui-cli-sRKxOjmC.js → tui-cli-BPOcMJ-f.js} +43 -43
- package/dist/{tui-DqMRn1zF.js → tui-fKWqWqeq.js} +12 -12
- package/dist/{unified-runner-Uyw1gZOm.js → unified-runner-Cdj1nLUh.js} +286 -328
- package/dist/{unified-runner-CBVGL54b.js → unified-runner-DftrstdI.js} +200 -245
- package/dist/{update-rop24lF7.js → update-XJWQZpV7.js} +5 -5
- package/dist/{update-check-CC111uwU.js → update-check-BdSIMYWq.js} +7 -7
- package/dist/{update-cli-BbtFbkK5.js → update-cli-D_MLjj6j.js} +120 -120
- package/dist/{update-cli-CH7SLjSd.js → update-cli-jQo-vg6S.js} +9 -9
- package/dist/{update-runner-B0L2a2rW.js → update-runner-D_UHlPN0.js} +18 -18
- package/dist/{utils-AQWIWjGu.js → utils-BU8jVQFM.js} +2 -2
- package/dist/{webhooks-cli-CFMpDwWL.js → webhooks-cli-DgRLVVrD.js} +17 -17
- package/dist/{widearea-dns-DxpPXWPv.js → widearea-dns-C5NqCQ3L.js} +2 -2
- package/dist/{with-timeout-Bxn0qVBQ.js → with-timeout-DwVWQ2sN.js} +2 -2
- package/dist/{workspace-StbmAqYj.js → workspace-B_xyjOdv.js} +4 -4
- package/dist/{workspace-CsaDUuDn.js → workspace-OBnI5mKu.js} +2 -2
- package/dist/{workspace-dirs-B5axjz_-.js → workspace-dirs-DStsDXra.js} +1 -1
- package/dist/{ws-FAiTi9-v.js → ws-CahTJvD6.js} +1 -1
- package/dist/{wsl-ZWGwnnKI.js → wsl-DO9usEVV.js} +2 -2
- package/package.json +1 -1
- package/dist/cli-iz9sMJ9d.js +0 -128
- package/dist/plugin-sdk/gateway/server-chat.d.ts +0 -49
- package/dist/register.configure-D69HXLo4.js +0 -129
- package/dist/{boolean-B8-BqKGQ.js → boolean-Wzu0-e0P.js} +0 -0
- package/dist/{boolean-BgXe2hyu.js → boolean-mcn6kL0s.js} +0 -0
- package/dist/{brew-ip7v32wW.js → brew-BoKmB5x9.js} +1 -1
- /package/dist/{chat-type-B2TfTsnW.js → chat-type-B7XD_ESN.js} +0 -0
- /package/dist/{chat-type-BoBpxitL.js → chat-type-BPBtOjer.js} +0 -0
- /package/dist/{command-format-CyXZlazG.js → command-format-BvAkTjTI.js} +0 -0
- /package/dist/{github-copilot-token-BUd9oA8x.js → github-copilot-token-B31ugq7R.js} +0 -0
- /package/dist/{input-provenance-iBlnbS1d.js → input-provenance-DsLesw6T.js} +0 -0
- /package/dist/{legacy-names-BlIw4lsD.js → legacy-names-sghWmXe3.js} +0 -0
- /package/dist/{redact-CozCe54d.js → redact-CSc_2Nka.js} +0 -0
- /package/dist/{redact-DPnDWsnT.js → redact-Dd8jrogi.js} +0 -0
- /package/dist/{secret-equal-DjTAoH50.js → secret-equal-D1BCVB1D.js} +0 -0
- /package/dist/{session-key-DUSb7CCb.js → session-key-B_ZVH1kE.js} +0 -0
- /package/dist/{ssrf-Cirmgays.js → ssrf-CC9kEPCT.js} +0 -0
- /package/dist/{tailnet-BruyvjMC.js → tailnet-LYvn9g3I.js} +0 -0
- /package/dist/{thinking-BTh3b5vY.js → thinking-177f26eg.js} +0 -0
- /package/dist/{transcript-events-BOK6eOU8.js → transcript-events-Ch7wLX-j.js} +0 -0
- /package/dist/{transcript-tools--a2pL_yH.js → transcript-tools-CrMLYORt.js} +0 -0
|
@@ -1,97 +1,97 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
2
|
-
import { g as
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { t as
|
|
9
|
-
import {
|
|
10
|
-
import { n as
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import { t as
|
|
15
|
-
import { t as
|
|
16
|
-
import { A as
|
|
17
|
-
import {
|
|
18
|
-
import { a as
|
|
19
|
-
import { a as
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import { l as
|
|
24
|
-
import {
|
|
25
|
-
import { n as
|
|
26
|
-
import {
|
|
27
|
-
import { i as
|
|
28
|
-
import { i as
|
|
29
|
-
import { _ as
|
|
30
|
-
import {
|
|
31
|
-
import { c as
|
|
32
|
-
import {
|
|
33
|
-
import {
|
|
34
|
-
import { n as
|
|
35
|
-
import { a as
|
|
36
|
-
import {
|
|
37
|
-
import {
|
|
38
|
-
import {
|
|
39
|
-
import { t as
|
|
40
|
-
import {
|
|
41
|
-
import { c as normalizeChannelTargetInput, d as parseReplyDirectives, f as MEDIA_TOKEN_RE, g as initializeGlobalHookRunner, h as getGlobalHookRunner, l as normalizeTargetForProvider, m as parseInlineDirectives$1, o as normalizeReplyPayloadsForDelivery, p as splitMediaFromOutput, s as buildTargetResolverSignature, t as deliverOutboundPayloads, u as throwIfAborted } from "./deliver-
|
|
42
|
-
import { a as logMessageProcessed, i as logLaneEnqueue, o as logMessageQueued, r as logLaneDequeue, s as logSessionStateChange, t as diag } from "./diagnostic-
|
|
2
|
+
import { D as shouldLogVerbose, H as createInternalHookEvent, M as getChildLogger, O as warn, R as normalizeLogLevel, W as triggerInternalHook, _ as executePluginCommand, b as danger, c as normalizeAnyChannelId, g as clearPluginCommands, h as createPluginRegistry, l as normalizeChannelId, n as CHAT_CHANNEL_ORDER, p as setActivePluginRegistry, v as listPluginCommands, w as logVerbose, y as matchPluginCommand } from "./registry-DKJLAPDB.js";
|
|
3
|
+
import { g as resolveStateDir, u as resolveGatewayPort } from "./paths-BSzKwaxE.js";
|
|
4
|
+
import { S as isPlainObject, _ as shortenHomeInString, b as sliceUtf16Safe, c as escapeRegExp, h as resolveUserPath, r as clampInt, t as CONFIG_DIR, u as isRecord, v as shortenHomePath, x as truncateUtf16Safe, y as sleep } from "./utils-BU8jVQFM.js";
|
|
5
|
+
import { d as createNonExitingRuntime, f as defaultRuntime, t as createSubsystemLogger } from "./subsystem-CtH6J8AV.js";
|
|
6
|
+
import { A as buildConfiguredAllowlistKeys, At as resolveShellEnvFallbackTimeoutMs, Ct as resolveEnvApiKey, Et as normalizeSecretInput, F as modelKey, H as resolveDefaultModelForAgent, Ht as DEFAULT_MODEL, I as normalizeModelRef$1, K as resolveSubagentSpawnModelSelection, L as normalizeProviderId, M as findNormalizedProviderValue, Ot as getShellPathFromLoginShell, T as resolveSymiAgentDir, Ut as DEFAULT_PROVIDER, V as resolveConfiguredModelRef, Vt as DEFAULT_CONTEXT_TOKENS, W as resolveModelRefFromString, Wt as resolveAuthProfileDisplayLabel, _t as createOllamaStreamFn, a as markAuthProfileFailure, b as ensureAuthProfileStore, bt as requireApiKey, et as normalizeGoogleModelId, g as markAuthProfileGood, gt as OLLAMA_NATIVE_BASE_URL, h as listProfilesForProvider, i as isProfileInCooldown, j as buildModelAliasIndex, k as buildAllowedModelSet, n as resolveAuthProfileOrder, o as markAuthProfileUsed, q as resolveThinkingDefault, r as getSoonestCooldownExpiry, vt as getApiKeyForModel, w as resolveAuthStorePathForDisplay, wt as resolveModelAuthMode, xt as resolveApiKeyForProvider, yt as getCustomProviderApiKey } from "./auth-profiles-BVtpxYtY.js";
|
|
7
|
+
import { t as formatCliCommand } from "./command-format-BvAkTjTI.js";
|
|
8
|
+
import { S as resolveThreadParentSessionKey, _ as isAcpSessionKey, a as classifySessionKeyShape, b as isSubagentSessionKey, c as resolveAgentIdFromSessionKey, g as getSubagentDepth, l as resolveThreadSessionKeys, m as normalizeAccountId, o as normalizeAgentId, p as DEFAULT_ACCOUNT_ID, r as buildAgentMainSessionKey, s as normalizeMainKey, t as DEFAULT_AGENT_ID, u as sanitizeAgentId, x as parseAgentSessionKey, y as isCronSessionKey } from "./session-key-B_ZVH1kE.js";
|
|
9
|
+
import { n as resolveSymiPackageRootSync, t as resolveSymiPackageRoot } from "./symi-root-0MUhiNlM.js";
|
|
10
|
+
import { a as logError, i as logDebug, n as runExec, o as logInfo, r as spawnWithFallback, s as logWarn, t as runCommandWithTimeout } from "./exec-DKyLtSjm.js";
|
|
11
|
+
import { C as ensureAgentWorkspace, E as loadWorkspaceBootstrapFiles, c as resolveAgentWorkspaceDir, d as resolveSessionAgentId, f as resolveSessionAgentIds, h as DEFAULT_BOOTSTRAP_FILENAME, i as resolveAgentDir, l as resolveDefaultAgentId, m as DEFAULT_AGENT_WORKSPACE_DIR, r as resolveAgentConfig, s as resolveAgentSkillsFilter, w as filterBootstrapFilesForSession } from "./agent-scope-BjEBQhs0.js";
|
|
12
|
+
import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-BTNK6Tcd.js";
|
|
13
|
+
import { t as parseBooleanValue } from "./boolean-Wzu0-e0P.js";
|
|
14
|
+
import { t as isTruthyEnvValue } from "./env-B97Ms861.js";
|
|
15
|
+
import { A as isRawApiErrorPayload, B as sanitizeGoogleTurnOrdering, C as isCloudCodeAssistFormatError, D as isFailoverErrorMessage, E as isFailoverAssistantError, F as sanitizeUserFacingText, I as buildBootstrapContextFiles, L as ensureSessionHeader, M as isTransientHttpError, N as parseImageDimensionError, O as isLikelyContextOverflowError, P as parseImageSizeError, R as resolveBootstrapMaxChars, S as isBillingAssistantError, T as isContextOverflowError, _ as formatAssistantErrorText, a as normalizeTextForComparison, b as getApiErrorPayloadFingerprint, c as sanitizeToolResultImages, d as extractToolResultId, f as downgradeOpenAIReasoningBlocks, g as classifyFailoverReason, h as BILLING_ERROR_USER_MESSAGE, i as isMessagingToolDuplicateNormalized, j as isTimeoutErrorMessage, k as isRateLimitAssistantError, l as resolveImageSanitizationLimits, m as isGoogleModelApi, n as validateGeminiTurns, o as sanitizeSessionMessagesImages, p as isAntigravityClaude, r as pickFallbackThinkingLevel, s as sanitizeImageBlocks, t as validateAnthropicTurns, u as extractToolCallsFromAssistant, v as formatBillingErrorMessage, w as isCompactionFailureError, x as isAuthAssistantError, y as formatRawAssistantErrorForUi, z as resolveBootstrapTotalMaxChars } from "./pi-embedded-helpers-Be-EeyzH.js";
|
|
16
|
+
import { A as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, C as unsetConfigValueAtPath, N as VERSION, S as setConfigValueAtPath, _ as resetConfigOverrides, b as getConfigValueAtPath, c as resolveConfigSnapshotHash, g as getConfigOverrides, h as validateJsonSchemaValue, i as loadConfig, l as writeConfigFile, m as parseDurationMs, o as readConfigFileSnapshot, u as validateConfigObjectWithPlugins, v as setConfigOverride, x as parseConfigPath, y as unsetConfigOverride } from "./config-CW8aDVM0.js";
|
|
17
|
+
import { a as safeStatSync, c as applyTestPluginDefaults, d as resolveEnableState, f as resolveMemorySlotDecision, h as isDangerousHostEnvVarName, i as isPathInside, n as loadPluginManifestRegistry, r as discoverSymiPlugins, u as normalizePluginsConfig } from "./manifest-registry-D7Qup2Vq.js";
|
|
18
|
+
import { a as isPathInsideWithRealpath } from "./legacy-names-C0hZiM-7.js";
|
|
19
|
+
import { C as stripPluginOnlyAllowlist, S as resolveToolProfilePolicy, T as matchesAnyGlobPattern, _ as collectExplicitAllowlist, a as ensureSandboxWorkspaceForSession, b as mergeAlsoAllowPolicy, c as resolveSandboxRuntimeStatus, d as getBridgeAuthForPort, g as buildPluginToolGroups, h as applyOwnerOnlyToolPolicy, o as resolveSandboxContext, v as expandPolicyWithPluginGroups, w as compileGlobPatterns, x as normalizeToolName } from "./sandbox-DGG12SGo.js";
|
|
20
|
+
import { T as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-NUKborg3.js";
|
|
21
|
+
import { i as resolveBrowserConfig, m as resolveBrowserControlAuth } from "./server-context-BNbx1tUD.js";
|
|
22
|
+
import { l as parseFrontmatterBlock } from "./frontmatter-B6IdJ7UK.js";
|
|
23
|
+
import { a as resolveSkillsPromptForRun, d as resolveSandboxInputPath, h as applySkillEnvOverridesFromSnapshot, i as loadWorkspaceSkillEntries, l as assertMediaNotDataUrl, m as applySkillEnvOverrides, p as resolveSandboxedMediaSource, r as buildWorkspaceSkillSnapshot, u as assertSandboxPath } from "./skills-C_KgxpBD.js";
|
|
24
|
+
import { n as getMediaDir, r as saveMediaBuffer } from "./routes-xZZ99jJJ.js";
|
|
25
|
+
import { n as formatErrorMessage, r as formatUncaughtError, t as extractErrorCode } from "./errors-Z-WkF18Q.js";
|
|
26
|
+
import { i as resolveExistingPathsWithinRoot, r as DEFAULT_UPLOAD_DIR } from "./paths-DaQrPPet.js";
|
|
27
|
+
import { i as isBlockedHostnameOrIp, o as normalizeHostname, t as SsrFBlockedError } from "./ssrf-CC9kEPCT.js";
|
|
28
|
+
import { _ as mediaKindFromMime, c as detectMime, d as imageMimeFromFormat, f as isAudioFileName, h as MAX_IMAGE_BYTES, i as getImageMetadata, l as extensionForMime, m as normalizeMimeType$1, p as kindFromMime, s as resizeToJpeg, u as getFileExtension } from "./image-ops-c7_of0HT.js";
|
|
29
|
+
import { C as capArrayByJsonBytes, F as resolveSessionResetType, H as resolveMainSessionKey, I as resolveThreadFlag, J as acquireSessionWriteLock, L as DEFAULT_RESET_TRIGGERS, M as evaluateSessionFreshness, N as resolveChannelResetConfig, P as resolveSessionResetPolicy, R as resolveFreshSessionTotalTokens, S as archiveSessionTranscripts, W as deriveSessionMetaPatch, X as resolveSessionLockMaxHoldFromTimeout, _ as mergeDeliveryContext, a as resolveAndPersistSessionFile, c as recordSessionMetaFromInbound, d as updateSessionStore, f as updateSessionStoreEntry, g as deliveryContextKey, h as deliveryContextFromSession, j as resolveSessionKey, m as resolveCacheTtlMs$1, o as loadSessionStore, p as isCacheEnabled, q as resolveGroupSessionKey, r as appendAssistantMessageToSessionTranscript, s as readSessionUpdatedAt, t as extractDeliveryInfo, u as updateLastRoute, v as normalizeDeliveryContext, y as normalizeSessionDeliveryFields } from "./sessions-BaFVKzC2.js";
|
|
30
|
+
import { c as normalizeStringEntries, i as resolveChannelGroupRequireMention, l as normalizeStringEntriesLower, n as listChannelDocks, o as normalizeAtHashSlug, r as resolveChannelGroupPolicy, s as normalizeHyphenSlug, t as getChannelDock } from "./dock-CnGWTXL4.js";
|
|
31
|
+
import { a as isInternalMessageChannel, c as listDeliverableMessageChannels, h as GATEWAY_CLIENT_NAMES, l as normalizeMessageChannel, m as GATEWAY_CLIENT_MODES, n as isDeliverableMessageChannel, o as isMarkdownCapableMessageChannel, p as GATEWAY_CLIENT_IDS, t as INTERNAL_MESSAGE_CHANNEL, u as resolveGatewayMessageChannel } from "./message-channel-C_V8IAYx.js";
|
|
32
|
+
import { t as normalizeChatType } from "./chat-type-B7XD_ESN.js";
|
|
33
|
+
import { n as resolveConversationLabel } from "./conversation-label-CS5Zjc4w.js";
|
|
34
|
+
import { a as resolveSlackAccount, c as resolveSlackBotToken, n as listChannelPlugins, r as normalizeChannelId$1, s as resolveSlackAppToken, t as getChannelPlugin } from "./plugins-DuuHorqi.js";
|
|
35
|
+
import { _ as resolveSlackChannelId, a as markdownToIRWithMeta, c as MediaFetchError, d as createSlackWebClient, f as resolveSlackWebClientOptions, g as parseSlackTarget, h as buildSlackBlocksFallbackText, i as renderMarkdownWithMarkers, l as fetchRemoteMedia, m as validateSlackBlocksArray, o as getDefaultLocalRoots, p as parseSlackBlocksInput, s as loadWebMedia, t as sendMessageSlack, u as readResponseWithLimit } from "./send-BzUWmgQ9.js";
|
|
36
|
+
import { c as resolveStorePath, i as resolveSessionTranscriptPath, n as resolveSessionFilePath, r as resolveSessionFilePathOptions, t as resolveDefaultSessionStorePath } from "./paths-CJcw9nbZ.js";
|
|
37
|
+
import { i as normalizeInputProvenance, n as applyInputProvenanceToUserMessage, r as hasInterSessionUserProvenance } from "./input-provenance-DsLesw6T.js";
|
|
38
|
+
import { t as emitSessionTranscriptUpdate } from "./transcript-events-Ch7wLX-j.js";
|
|
39
|
+
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-177f26eg.js";
|
|
40
|
+
import { i as isSilentReplyText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-DvvjOTxN.js";
|
|
41
|
+
import { c as normalizeChannelTargetInput, d as parseReplyDirectives, f as MEDIA_TOKEN_RE, g as initializeGlobalHookRunner, h as getGlobalHookRunner, l as normalizeTargetForProvider, m as parseInlineDirectives$1, o as normalizeReplyPayloadsForDelivery, p as splitMediaFromOutput, s as buildTargetResolverSignature, t as deliverOutboundPayloads, u as throwIfAborted } from "./deliver-DZ7ynJYH.js";
|
|
42
|
+
import { a as logMessageProcessed, i as logLaneEnqueue, o as logMessageQueued, r as logLaneDequeue, s as logSessionStateChange, t as diag } from "./diagnostic-CwF3MnBL.js";
|
|
43
43
|
import { r as getDiagnosticSessionState } from "./diagnostic-session-state-I4x9gPY4.js";
|
|
44
|
-
import { t as ensureSymiModelsJson } from "./models-config-
|
|
45
|
-
import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-
|
|
46
|
-
import { c as hasNonzeroUsage, l as normalizeUsage, n as loadCostUsageSummary, o as derivePromptTokens, r as loadSessionCostSummary } from "./session-cost-usage-
|
|
47
|
-
import { C as enqueueSystemEvent, E as buildChannelSummary, S as drainSystemEventEntries, _ as loadProviderUsageSummary, a as loadCombinedSessionStoreForGateway, b as resolveUsageProviderId, d as formatDoctorNonInteractiveHint, g as writeRestartSentinel, k as redactIdentifier, x as lookupContextTokens, y as formatUsageWindowSummary } from "./session-utils-
|
|
48
|
-
import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$2 } from "./with-timeout-
|
|
49
|
-
import { i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-
|
|
50
|
-
import { n as resolveMemoryBackendConfig, t as getMemorySearchManager } from "./memory-
|
|
51
|
-
import { a as parseGeminiAuth, c as resolveMemorySearchConfig, n as retryAsync, o as collectProviderApiKeysForExecution, s as executeWithApiKeyRotation } from "./manager-
|
|
52
|
-
import { f as runTasksWithConcurrency } from "./internal-
|
|
53
|
-
import { a as chunkText, c as resolveChunkMode, d as isSafeFenceBreak, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, o as chunkTextWithMode, r as chunkMarkdownText, t as chunkByNewline, u as findFenceSpanAt } from "./chunk-
|
|
54
|
-
import { n as resolveMarkdownTableMode } from "./markdown-tables-
|
|
44
|
+
import { t as ensureSymiModelsJson } from "./models-config-DRgHv7Ss.js";
|
|
45
|
+
import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-DGZH6URT.js";
|
|
46
|
+
import { c as hasNonzeroUsage, l as normalizeUsage, n as loadCostUsageSummary, o as derivePromptTokens, r as loadSessionCostSummary } from "./session-cost-usage-DYcv40ss.js";
|
|
47
|
+
import { C as enqueueSystemEvent, E as buildChannelSummary, S as drainSystemEventEntries, _ as loadProviderUsageSummary, a as loadCombinedSessionStoreForGateway, b as resolveUsageProviderId, d as formatDoctorNonInteractiveHint, g as writeRestartSentinel, k as redactIdentifier, x as lookupContextTokens, y as formatUsageWindowSummary } from "./session-utils-BVC8mmBv.js";
|
|
48
|
+
import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$2 } from "./with-timeout-DwVWQ2sN.js";
|
|
49
|
+
import { i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-CyLplifX.js";
|
|
50
|
+
import { n as resolveMemoryBackendConfig, t as getMemorySearchManager } from "./memory-DcWXMzOH.js";
|
|
51
|
+
import { a as parseGeminiAuth, c as resolveMemorySearchConfig, n as retryAsync, o as collectProviderApiKeysForExecution, s as executeWithApiKeyRotation } from "./manager-9dNT9kNF.js";
|
|
52
|
+
import { f as runTasksWithConcurrency } from "./internal-C3o_xyzP.js";
|
|
53
|
+
import { a as chunkText, c as resolveChunkMode, d as isSafeFenceBreak, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, o as chunkTextWithMode, r as chunkMarkdownText, t as chunkByNewline, u as findFenceSpanAt } from "./chunk-DQGU0F8t.js";
|
|
54
|
+
import { n as resolveMarkdownTableMode } from "./markdown-tables-GTLvbzuR.js";
|
|
55
55
|
import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-CgmRK282.js";
|
|
56
|
-
import { t as fetchWithSsrFGuard } from "./fetch-guard-
|
|
57
|
-
import { n as getDefaultMediaLocalRoots } from "./local-roots-
|
|
58
|
-
import { i as resolveNativeSkillsEnabled, n as isRestartEnabled, r as resolveNativeCommandsEnabled, t as isCommandFlagEnabled } from "./commands-
|
|
59
|
-
import { a as shouldHandleTextCommands, i as normalizeCommandBody, n as listChatCommands, r as listChatCommandsForConfig } from "./commands-registry-
|
|
60
|
-
import { Rt as SESSION_LABEL_MAX_LENGTH } from "./client-
|
|
61
|
-
import { a as randomIdempotencyKey, d as resolveLeastPrivilegeOperatorScopesForMethod, n as callGateway, r as callGatewayLeastPrivilege } from "./call-
|
|
62
|
-
import { n as resolveToolDisplay, t as formatToolDetail } from "./tool-display-
|
|
56
|
+
import { t as fetchWithSsrFGuard } from "./fetch-guard-DG6T0ZdL.js";
|
|
57
|
+
import { n as getDefaultMediaLocalRoots } from "./local-roots-CTriU02e.js";
|
|
58
|
+
import { i as resolveNativeSkillsEnabled, n as isRestartEnabled, r as resolveNativeCommandsEnabled, t as isCommandFlagEnabled } from "./commands-B3UrgxIz.js";
|
|
59
|
+
import { a as shouldHandleTextCommands, i as normalizeCommandBody, n as listChatCommands, r as listChatCommandsForConfig } from "./commands-registry-DYk02tmt.js";
|
|
60
|
+
import { Rt as SESSION_LABEL_MAX_LENGTH } from "./client-Bs2zB0rY.js";
|
|
61
|
+
import { a as randomIdempotencyKey, d as resolveLeastPrivilegeOperatorScopesForMethod, n as callGateway, r as callGatewayLeastPrivilege } from "./call-CdXXPXpo.js";
|
|
62
|
+
import { n as resolveToolDisplay, t as formatToolDetail } from "./tool-display-Dr6VaTg5.js";
|
|
63
63
|
import { n as formatTimeAgo } from "./format-relative-Vm-Tqk0h.js";
|
|
64
|
-
import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-
|
|
65
|
-
import { g as getSkillsSnapshotVersion, h as ensureSkillsWatcher, t as getRemoteSkillEligibility } from "./skills-remote-
|
|
64
|
+
import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-DqAyGDbE.js";
|
|
65
|
+
import { g as getSkillsSnapshotVersion, h as ensureSkillsWatcher, t as getRemoteSkillEligibility } from "./skills-remote-C0gcKYWX.js";
|
|
66
66
|
import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-DdkUSfiI.js";
|
|
67
|
-
import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-
|
|
68
|
-
import { i as resolveSkillCommandInvocation, n as listSkillCommandsForAgents, r as listSkillCommandsForWorkspace, t as listReservedChatSlashCommandNames } from "./skill-commands-
|
|
69
|
-
import { a as removeChannelAllowFromStoreEntry, c as listPairingChannels, i as readChannelAllowFromStore, o as upsertChannelPairingRequest, t as addChannelAllowFromStoreEntry } from "./pairing-store-
|
|
70
|
-
import { _ as getTrustedSafeBinDirs, b as buildSafeShellCommand, d as resolveExecApprovals, f as resolveExecApprovalsFromFile, g as resolveSafeBins, h as evaluateShellAllowlist, i as maxAsk, l as recordAllowlistUse, n as addAllowlistEntry, o as minSecurity, u as requiresExecApproval, y as buildSafeBinsShellCommand } from "./exec-approvals-
|
|
71
|
-
import { a as canvasSnapshotTempPath, c as parseCameraClipPayload, d as writeCameraClipPayloadToFile, f as writeUrlToFile, g as normalizePathPrepend, h as mergePathPrepend, i as parseEnvPairs, l as parseCameraSnapPayload, m as applyPathPrepend, n as screenRecordTempPath, o as parseCanvasSnapshotPayload, p as buildNodeShellCommand, r as writeScreenRecordToFile, s as cameraTempPath, t as parseScreenRecordPayload, u as writeBase64ToFile } from "./nodes-screen-
|
|
67
|
+
import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-BGVslwAT.js";
|
|
68
|
+
import { i as resolveSkillCommandInvocation, n as listSkillCommandsForAgents, r as listSkillCommandsForWorkspace, t as listReservedChatSlashCommandNames } from "./skill-commands-X3T9Y9lT.js";
|
|
69
|
+
import { a as removeChannelAllowFromStoreEntry, c as listPairingChannels, i as readChannelAllowFromStore, o as upsertChannelPairingRequest, t as addChannelAllowFromStoreEntry } from "./pairing-store-CxT0UGxd.js";
|
|
70
|
+
import { _ as getTrustedSafeBinDirs, b as buildSafeShellCommand, d as resolveExecApprovals, f as resolveExecApprovalsFromFile, g as resolveSafeBins, h as evaluateShellAllowlist, i as maxAsk, l as recordAllowlistUse, n as addAllowlistEntry, o as minSecurity, u as requiresExecApproval, y as buildSafeBinsShellCommand } from "./exec-approvals-CZOc8M5w.js";
|
|
71
|
+
import { a as canvasSnapshotTempPath, c as parseCameraClipPayload, d as writeCameraClipPayloadToFile, f as writeUrlToFile, g as normalizePathPrepend, h as mergePathPrepend, i as parseEnvPairs, l as parseCameraSnapPayload, m as applyPathPrepend, n as screenRecordTempPath, o as parseCanvasSnapshotPayload, p as buildNodeShellCommand, r as writeScreenRecordToFile, s as cameraTempPath, t as parseScreenRecordPayload, u as writeBase64ToFile } from "./nodes-screen-CT94yu_w.js";
|
|
72
72
|
import { n as parseNodeList, r as parsePairingList, t as resolveNodeIdFromCandidates } from "./node-match-dNgkVIEe.js";
|
|
73
73
|
import { t as formatDurationCompact$1 } from "./format-duration-DbZRICyO.js";
|
|
74
74
|
import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-2_Os41y-.js";
|
|
75
75
|
import { i as resolveModelCostConfig, n as formatTokenCount$2, r as formatUsd, t as estimateUsageCost } from "./usage-format-Ca9K30TH.js";
|
|
76
76
|
import { c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName } from "./constants-DsZw7bas.js";
|
|
77
|
-
import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-
|
|
77
|
+
import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-Drd2sr2o.js";
|
|
78
78
|
import { i as parseAbsoluteTimeMs, r as resolveDefaultCronStaggerMs, t as normalizeCronStaggerMs } from "./stagger-BhvnarfO.js";
|
|
79
|
-
import { n as resolveMessageChannelSelection, t as listConfiguredMessageChannels } from "./channel-selection-
|
|
80
|
-
import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-
|
|
79
|
+
import { n as resolveMessageChannelSelection, t as listConfiguredMessageChannels } from "./channel-selection-BvIcXQLj.js";
|
|
80
|
+
import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-xpyI3enn.js";
|
|
81
81
|
import { t as parseTimeoutMs } from "./parse-timeout-CpgyC-LD.js";
|
|
82
|
-
import { n as registerMemoryCli } from "./memory-cli-
|
|
83
|
-
import { i as resolveSlackThreadTs, n as deliverReplies, t as createSlackReplyDeliveryPlan } from "./replies-
|
|
84
|
-
import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-
|
|
85
|
-
import { a as buildModelAliasLines, n as resolveModel$2 } from "./model-
|
|
82
|
+
import { n as registerMemoryCli } from "./memory-cli-xBZPEOeL.js";
|
|
83
|
+
import { i as resolveSlackThreadTs, n as deliverReplies, t as createSlackReplyDeliveryPlan } from "./replies-Dqft-42v.js";
|
|
84
|
+
import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-qwS9SXOa.js";
|
|
85
|
+
import { a as buildModelAliasLines, n as resolveModel$2 } from "./model-BXWgh5eZ.js";
|
|
86
86
|
import { createRequire } from "node:module";
|
|
87
87
|
import process$1 from "node:process";
|
|
88
88
|
import { fileURLToPath } from "node:url";
|
|
89
89
|
import crypto, { createHash, createHmac, randomBytes, randomUUID } from "node:crypto";
|
|
90
|
+
import path from "node:path";
|
|
90
91
|
import fs, { constants, existsSync, statSync } from "node:fs";
|
|
91
92
|
import os, { homedir } from "node:os";
|
|
92
|
-
import path from "node:path";
|
|
93
93
|
import JSON5 from "json5";
|
|
94
|
-
import
|
|
94
|
+
import fsPromises from "node:fs/promises";
|
|
95
95
|
import { execFileSync, spawn, spawnSync } from "node:child_process";
|
|
96
96
|
import { complete, createAssistantMessageEventStream, streamSimple } from "@mariozechner/pi-ai";
|
|
97
97
|
import { CURRENT_SESSION_VERSION, DefaultResourceLoader, SessionManager, SettingsManager, codingTools, createAgentSession, createEditTool, createReadTool, createWriteTool, estimateTokens, generateSummary, readTool } from "@mariozechner/pi-coding-agent";
|
|
@@ -101,97 +101,6 @@ import { Type } from "@sinclair/typebox";
|
|
|
101
101
|
import { EventEmitter } from "node:events";
|
|
102
102
|
import SlackBolt from "@slack/bolt";
|
|
103
103
|
|
|
104
|
-
//#region src/auto-reply/heartbeat.ts
|
|
105
|
-
const DEFAULT_HEARTBEAT_ACK_MAX_CHARS = 300;
|
|
106
|
-
function stripTokenAtEdges(raw) {
|
|
107
|
-
let text = raw.trim();
|
|
108
|
-
if (!text) return {
|
|
109
|
-
text: "",
|
|
110
|
-
didStrip: false
|
|
111
|
-
};
|
|
112
|
-
const token = SYMIPULSE_TOKEN;
|
|
113
|
-
const tokenAtEndWithOptionalTrailingPunctuation = new RegExp(`${escapeRegExp(token)}[^\\w]{0,4}$`);
|
|
114
|
-
if (!text.includes(token)) return {
|
|
115
|
-
text,
|
|
116
|
-
didStrip: false
|
|
117
|
-
};
|
|
118
|
-
let didStrip = false;
|
|
119
|
-
let changed = true;
|
|
120
|
-
while (changed) {
|
|
121
|
-
changed = false;
|
|
122
|
-
const next = text.trim();
|
|
123
|
-
if (next.startsWith(token)) {
|
|
124
|
-
text = next.slice(token.length).trimStart();
|
|
125
|
-
didStrip = true;
|
|
126
|
-
changed = true;
|
|
127
|
-
continue;
|
|
128
|
-
}
|
|
129
|
-
if (tokenAtEndWithOptionalTrailingPunctuation.test(next)) {
|
|
130
|
-
const idx = next.lastIndexOf(token);
|
|
131
|
-
const before = next.slice(0, idx).trimEnd();
|
|
132
|
-
if (!before) text = "";
|
|
133
|
-
else text = `${before}${next.slice(idx + token.length).trimStart()}`.trimEnd();
|
|
134
|
-
didStrip = true;
|
|
135
|
-
changed = true;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
return {
|
|
139
|
-
text: text.replace(/\s+/g, " ").trim(),
|
|
140
|
-
didStrip
|
|
141
|
-
};
|
|
142
|
-
}
|
|
143
|
-
function stripHeartbeatToken(raw, opts = {}) {
|
|
144
|
-
if (!raw) return {
|
|
145
|
-
shouldSkip: true,
|
|
146
|
-
text: "",
|
|
147
|
-
didStrip: false
|
|
148
|
-
};
|
|
149
|
-
const trimmed = raw.trim();
|
|
150
|
-
if (!trimmed) return {
|
|
151
|
-
shouldSkip: true,
|
|
152
|
-
text: "",
|
|
153
|
-
didStrip: false
|
|
154
|
-
};
|
|
155
|
-
const mode = opts.mode ?? "message";
|
|
156
|
-
const maxAckCharsRaw = opts.maxAckChars;
|
|
157
|
-
const parsedAckChars = typeof maxAckCharsRaw === "string" ? Number(maxAckCharsRaw) : maxAckCharsRaw;
|
|
158
|
-
const maxAckChars = Math.max(0, typeof parsedAckChars === "number" && Number.isFinite(parsedAckChars) ? parsedAckChars : DEFAULT_HEARTBEAT_ACK_MAX_CHARS);
|
|
159
|
-
const stripMarkup = (text) => text.replace(/<[^>]*>/g, " ").replace(/ /gi, " ").replace(/^[*`~_]+/, "").replace(/[*`~_]+$/, "");
|
|
160
|
-
const trimmedNormalized = stripMarkup(trimmed);
|
|
161
|
-
if (!(trimmed.includes(SYMIPULSE_TOKEN) || trimmedNormalized.includes(SYMIPULSE_TOKEN))) return {
|
|
162
|
-
shouldSkip: false,
|
|
163
|
-
text: trimmed,
|
|
164
|
-
didStrip: false
|
|
165
|
-
};
|
|
166
|
-
const strippedOriginal = stripTokenAtEdges(trimmed);
|
|
167
|
-
const strippedNormalized = stripTokenAtEdges(trimmedNormalized);
|
|
168
|
-
const picked = strippedOriginal.didStrip && strippedOriginal.text ? strippedOriginal : strippedNormalized;
|
|
169
|
-
if (!picked.didStrip) return {
|
|
170
|
-
shouldSkip: false,
|
|
171
|
-
text: trimmed,
|
|
172
|
-
didStrip: false
|
|
173
|
-
};
|
|
174
|
-
if (!picked.text) return {
|
|
175
|
-
shouldSkip: true,
|
|
176
|
-
text: "",
|
|
177
|
-
didStrip: true
|
|
178
|
-
};
|
|
179
|
-
const rest = picked.text.trim();
|
|
180
|
-
if (mode === "heartbeat") {
|
|
181
|
-
if (rest.length <= maxAckChars) return {
|
|
182
|
-
shouldSkip: true,
|
|
183
|
-
text: "",
|
|
184
|
-
didStrip: true
|
|
185
|
-
};
|
|
186
|
-
}
|
|
187
|
-
return {
|
|
188
|
-
shouldSkip: false,
|
|
189
|
-
text: rest,
|
|
190
|
-
didStrip: true
|
|
191
|
-
};
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
//#endregion
|
|
195
104
|
//#region src/auto-reply/reply/middleware-circuit-breaker.ts
|
|
196
105
|
/**
|
|
197
106
|
* Default recovery prompt — tells the model the previous turn aborted on
|
|
@@ -1165,34 +1074,13 @@ function isBareSymipulseAck(text) {
|
|
|
1165
1074
|
* Returns a structured verdict the caller uses to decide whether to
|
|
1166
1075
|
* broadcast / persist a payload. Pure function — no side effects.
|
|
1167
1076
|
*/
|
|
1168
|
-
function classifyOutboundMessage(rawText,
|
|
1077
|
+
function classifyOutboundMessage(rawText, _opts) {
|
|
1169
1078
|
const text = typeof rawText === "string" ? rawText : "";
|
|
1170
1079
|
if (isBareSilentReply(text)) return {
|
|
1171
1080
|
action: "drop",
|
|
1172
1081
|
output: "",
|
|
1173
1082
|
reason: "silent-reply-bare"
|
|
1174
1083
|
};
|
|
1175
|
-
if (opts.isHeartbeat) {
|
|
1176
|
-
const stripped = stripHeartbeatToken(text, {
|
|
1177
|
-
mode: "heartbeat",
|
|
1178
|
-
maxAckChars: opts.heartbeatAckMaxChars
|
|
1179
|
-
});
|
|
1180
|
-
if (stripped.shouldSkip) return {
|
|
1181
|
-
action: "drop",
|
|
1182
|
-
output: "",
|
|
1183
|
-
reason: stripped.didStrip ? "symipulse-heartbeat-ack" : "silent-reply-bare"
|
|
1184
|
-
};
|
|
1185
|
-
if (stripped.didStrip) return {
|
|
1186
|
-
action: "deliver-stripped",
|
|
1187
|
-
output: stripped.text,
|
|
1188
|
-
reason: "symipulse-heartbeat-stripped"
|
|
1189
|
-
};
|
|
1190
|
-
return {
|
|
1191
|
-
action: "deliver",
|
|
1192
|
-
output: text,
|
|
1193
|
-
reason: "deliver"
|
|
1194
|
-
};
|
|
1195
|
-
}
|
|
1196
1084
|
if (isBareSymipulseAck(text)) return {
|
|
1197
1085
|
action: "drop",
|
|
1198
1086
|
output: "",
|
|
@@ -1205,48 +1093,6 @@ function classifyOutboundMessage(rawText, opts) {
|
|
|
1205
1093
|
};
|
|
1206
1094
|
}
|
|
1207
1095
|
|
|
1208
|
-
//#endregion
|
|
1209
|
-
//#region src/infra/agent-events.ts
|
|
1210
|
-
const seqByRun = /* @__PURE__ */ new Map();
|
|
1211
|
-
const listeners = /* @__PURE__ */ new Set();
|
|
1212
|
-
const runContextById = /* @__PURE__ */ new Map();
|
|
1213
|
-
function registerAgentRunContext(runId, context) {
|
|
1214
|
-
if (!runId) return;
|
|
1215
|
-
const existing = runContextById.get(runId);
|
|
1216
|
-
if (!existing) {
|
|
1217
|
-
runContextById.set(runId, { ...context });
|
|
1218
|
-
return;
|
|
1219
|
-
}
|
|
1220
|
-
if (context.sessionKey && existing.sessionKey !== context.sessionKey) existing.sessionKey = context.sessionKey;
|
|
1221
|
-
if (context.verboseLevel && existing.verboseLevel !== context.verboseLevel) existing.verboseLevel = context.verboseLevel;
|
|
1222
|
-
if (context.isHeartbeat !== void 0 && existing.isHeartbeat !== context.isHeartbeat) existing.isHeartbeat = context.isHeartbeat;
|
|
1223
|
-
}
|
|
1224
|
-
function getAgentRunContext(runId) {
|
|
1225
|
-
return runContextById.get(runId);
|
|
1226
|
-
}
|
|
1227
|
-
function clearAgentRunContext(runId) {
|
|
1228
|
-
runContextById.delete(runId);
|
|
1229
|
-
}
|
|
1230
|
-
function emitAgentEvent(event) {
|
|
1231
|
-
const nextSeq = (seqByRun.get(event.runId) ?? 0) + 1;
|
|
1232
|
-
seqByRun.set(event.runId, nextSeq);
|
|
1233
|
-
const context = runContextById.get(event.runId);
|
|
1234
|
-
const sessionKey = typeof event.sessionKey === "string" && event.sessionKey.trim() ? event.sessionKey : context?.sessionKey;
|
|
1235
|
-
const enriched = {
|
|
1236
|
-
...event,
|
|
1237
|
-
sessionKey,
|
|
1238
|
-
seq: nextSeq,
|
|
1239
|
-
ts: Date.now()
|
|
1240
|
-
};
|
|
1241
|
-
for (const listener of listeners) try {
|
|
1242
|
-
listener(enriched);
|
|
1243
|
-
} catch {}
|
|
1244
|
-
}
|
|
1245
|
-
function onAgentEvent(listener) {
|
|
1246
|
-
listeners.add(listener);
|
|
1247
|
-
return () => listeners.delete(listener);
|
|
1248
|
-
}
|
|
1249
|
-
|
|
1250
1096
|
//#endregion
|
|
1251
1097
|
//#region src/process/lanes.ts
|
|
1252
1098
|
let CommandLane = /* @__PURE__ */ function(CommandLane) {
|
|
@@ -2006,7 +1852,7 @@ async function imageResult(params) {
|
|
|
2006
1852
|
}, params.label, params.imageSanitization);
|
|
2007
1853
|
}
|
|
2008
1854
|
async function imageResultFromFile(params) {
|
|
2009
|
-
const buf = await
|
|
1855
|
+
const buf = await fsPromises.readFile(params.path);
|
|
2010
1856
|
const mimeType = await detectMime({ buffer: buf.slice(0, 256) }) ?? "image/png";
|
|
2011
1857
|
return await imageResult({
|
|
2012
1858
|
label: params.label,
|
|
@@ -5085,7 +4931,7 @@ async function recordLoopOutcome(args) {
|
|
|
5085
4931
|
if (!args.ctx?.sessionKey) return;
|
|
5086
4932
|
try {
|
|
5087
4933
|
const { getDiagnosticSessionState } = await import("./diagnostic-session-state-I4x9gPY4.js").then((n) => n.n);
|
|
5088
|
-
const { recordToolCallOutcome } = await import("./tool-loop-detection-
|
|
4934
|
+
const { recordToolCallOutcome } = await import("./tool-loop-detection-CSSq5kkt.js");
|
|
5089
4935
|
recordToolCallOutcome(getDiagnosticSessionState({
|
|
5090
4936
|
sessionKey: args.ctx.sessionKey,
|
|
5091
4937
|
sessionId: args.ctx?.agentId
|
|
@@ -5106,8 +4952,8 @@ async function runBeforeToolCallHook(args) {
|
|
|
5106
4952
|
const params = args.params;
|
|
5107
4953
|
if (args.ctx?.sessionKey) {
|
|
5108
4954
|
const { getDiagnosticSessionState } = await import("./diagnostic-session-state-I4x9gPY4.js").then((n) => n.n);
|
|
5109
|
-
const { logToolLoopAction } = await import("./diagnostic-
|
|
5110
|
-
const { detectToolCallLoop, recordToolCall } = await import("./tool-loop-detection-
|
|
4955
|
+
const { logToolLoopAction } = await import("./diagnostic-CwF3MnBL.js").then((n) => n.n);
|
|
4956
|
+
const { detectToolCallLoop, recordToolCall } = await import("./tool-loop-detection-CSSq5kkt.js");
|
|
5111
4957
|
const sessionState = getDiagnosticSessionState({
|
|
5112
4958
|
sessionKey: args.ctx.sessionKey,
|
|
5113
4959
|
sessionId: args.ctx?.agentId
|
|
@@ -5388,6 +5234,47 @@ function splitSdkTools(options) {
|
|
|
5388
5234
|
};
|
|
5389
5235
|
}
|
|
5390
5236
|
|
|
5237
|
+
//#endregion
|
|
5238
|
+
//#region src/infra/agent-events.ts
|
|
5239
|
+
const seqByRun = /* @__PURE__ */ new Map();
|
|
5240
|
+
const listeners = /* @__PURE__ */ new Set();
|
|
5241
|
+
const runContextById = /* @__PURE__ */ new Map();
|
|
5242
|
+
function registerAgentRunContext(runId, context) {
|
|
5243
|
+
if (!runId) return;
|
|
5244
|
+
const existing = runContextById.get(runId);
|
|
5245
|
+
if (!existing) {
|
|
5246
|
+
runContextById.set(runId, { ...context });
|
|
5247
|
+
return;
|
|
5248
|
+
}
|
|
5249
|
+
if (context.sessionKey && existing.sessionKey !== context.sessionKey) existing.sessionKey = context.sessionKey;
|
|
5250
|
+
if (context.verboseLevel && existing.verboseLevel !== context.verboseLevel) existing.verboseLevel = context.verboseLevel;
|
|
5251
|
+
}
|
|
5252
|
+
function getAgentRunContext(runId) {
|
|
5253
|
+
return runContextById.get(runId);
|
|
5254
|
+
}
|
|
5255
|
+
function clearAgentRunContext(runId) {
|
|
5256
|
+
runContextById.delete(runId);
|
|
5257
|
+
}
|
|
5258
|
+
function emitAgentEvent(event) {
|
|
5259
|
+
const nextSeq = (seqByRun.get(event.runId) ?? 0) + 1;
|
|
5260
|
+
seqByRun.set(event.runId, nextSeq);
|
|
5261
|
+
const context = runContextById.get(event.runId);
|
|
5262
|
+
const sessionKey = typeof event.sessionKey === "string" && event.sessionKey.trim() ? event.sessionKey : context?.sessionKey;
|
|
5263
|
+
const enriched = {
|
|
5264
|
+
...event,
|
|
5265
|
+
sessionKey,
|
|
5266
|
+
seq: nextSeq,
|
|
5267
|
+
ts: Date.now()
|
|
5268
|
+
};
|
|
5269
|
+
for (const listener of listeners) try {
|
|
5270
|
+
listener(enriched);
|
|
5271
|
+
} catch {}
|
|
5272
|
+
}
|
|
5273
|
+
function onAgentEvent(listener) {
|
|
5274
|
+
listeners.add(listener);
|
|
5275
|
+
return () => listeners.delete(listener);
|
|
5276
|
+
}
|
|
5277
|
+
|
|
5391
5278
|
//#endregion
|
|
5392
5279
|
//#region src/utils/queue-helpers.ts
|
|
5393
5280
|
function clearQueueSummaryState(state) {
|
|
@@ -5843,6 +5730,97 @@ function clearSessionQueues(keys) {
|
|
|
5843
5730
|
};
|
|
5844
5731
|
}
|
|
5845
5732
|
|
|
5733
|
+
//#endregion
|
|
5734
|
+
//#region src/auto-reply/heartbeat.ts
|
|
5735
|
+
const DEFAULT_HEARTBEAT_ACK_MAX_CHARS = 300;
|
|
5736
|
+
function stripTokenAtEdges(raw) {
|
|
5737
|
+
let text = raw.trim();
|
|
5738
|
+
if (!text) return {
|
|
5739
|
+
text: "",
|
|
5740
|
+
didStrip: false
|
|
5741
|
+
};
|
|
5742
|
+
const token = SYMIPULSE_TOKEN;
|
|
5743
|
+
const tokenAtEndWithOptionalTrailingPunctuation = new RegExp(`${escapeRegExp(token)}[^\\w]{0,4}$`);
|
|
5744
|
+
if (!text.includes(token)) return {
|
|
5745
|
+
text,
|
|
5746
|
+
didStrip: false
|
|
5747
|
+
};
|
|
5748
|
+
let didStrip = false;
|
|
5749
|
+
let changed = true;
|
|
5750
|
+
while (changed) {
|
|
5751
|
+
changed = false;
|
|
5752
|
+
const next = text.trim();
|
|
5753
|
+
if (next.startsWith(token)) {
|
|
5754
|
+
text = next.slice(token.length).trimStart();
|
|
5755
|
+
didStrip = true;
|
|
5756
|
+
changed = true;
|
|
5757
|
+
continue;
|
|
5758
|
+
}
|
|
5759
|
+
if (tokenAtEndWithOptionalTrailingPunctuation.test(next)) {
|
|
5760
|
+
const idx = next.lastIndexOf(token);
|
|
5761
|
+
const before = next.slice(0, idx).trimEnd();
|
|
5762
|
+
if (!before) text = "";
|
|
5763
|
+
else text = `${before}${next.slice(idx + token.length).trimStart()}`.trimEnd();
|
|
5764
|
+
didStrip = true;
|
|
5765
|
+
changed = true;
|
|
5766
|
+
}
|
|
5767
|
+
}
|
|
5768
|
+
return {
|
|
5769
|
+
text: text.replace(/\s+/g, " ").trim(),
|
|
5770
|
+
didStrip
|
|
5771
|
+
};
|
|
5772
|
+
}
|
|
5773
|
+
function stripHeartbeatToken(raw, opts = {}) {
|
|
5774
|
+
if (!raw) return {
|
|
5775
|
+
shouldSkip: true,
|
|
5776
|
+
text: "",
|
|
5777
|
+
didStrip: false
|
|
5778
|
+
};
|
|
5779
|
+
const trimmed = raw.trim();
|
|
5780
|
+
if (!trimmed) return {
|
|
5781
|
+
shouldSkip: true,
|
|
5782
|
+
text: "",
|
|
5783
|
+
didStrip: false
|
|
5784
|
+
};
|
|
5785
|
+
const mode = opts.mode ?? "message";
|
|
5786
|
+
const maxAckCharsRaw = opts.maxAckChars;
|
|
5787
|
+
const parsedAckChars = typeof maxAckCharsRaw === "string" ? Number(maxAckCharsRaw) : maxAckCharsRaw;
|
|
5788
|
+
const maxAckChars = Math.max(0, typeof parsedAckChars === "number" && Number.isFinite(parsedAckChars) ? parsedAckChars : DEFAULT_HEARTBEAT_ACK_MAX_CHARS);
|
|
5789
|
+
const stripMarkup = (text) => text.replace(/<[^>]*>/g, " ").replace(/ /gi, " ").replace(/^[*`~_]+/, "").replace(/[*`~_]+$/, "");
|
|
5790
|
+
const trimmedNormalized = stripMarkup(trimmed);
|
|
5791
|
+
if (!(trimmed.includes(SYMIPULSE_TOKEN) || trimmedNormalized.includes(SYMIPULSE_TOKEN))) return {
|
|
5792
|
+
shouldSkip: false,
|
|
5793
|
+
text: trimmed,
|
|
5794
|
+
didStrip: false
|
|
5795
|
+
};
|
|
5796
|
+
const strippedOriginal = stripTokenAtEdges(trimmed);
|
|
5797
|
+
const strippedNormalized = stripTokenAtEdges(trimmedNormalized);
|
|
5798
|
+
const picked = strippedOriginal.didStrip && strippedOriginal.text ? strippedOriginal : strippedNormalized;
|
|
5799
|
+
if (!picked.didStrip) return {
|
|
5800
|
+
shouldSkip: false,
|
|
5801
|
+
text: trimmed,
|
|
5802
|
+
didStrip: false
|
|
5803
|
+
};
|
|
5804
|
+
if (!picked.text) return {
|
|
5805
|
+
shouldSkip: true,
|
|
5806
|
+
text: "",
|
|
5807
|
+
didStrip: true
|
|
5808
|
+
};
|
|
5809
|
+
const rest = picked.text.trim();
|
|
5810
|
+
if (mode === "heartbeat") {
|
|
5811
|
+
if (rest.length <= maxAckChars) return {
|
|
5812
|
+
shouldSkip: true,
|
|
5813
|
+
text: "",
|
|
5814
|
+
didStrip: true
|
|
5815
|
+
};
|
|
5816
|
+
}
|
|
5817
|
+
return {
|
|
5818
|
+
shouldSkip: false,
|
|
5819
|
+
text: rest,
|
|
5820
|
+
didStrip: true
|
|
5821
|
+
};
|
|
5822
|
+
}
|
|
5823
|
+
|
|
5846
5824
|
//#endregion
|
|
5847
5825
|
//#region src/auto-reply/reply/normalize-reply.ts
|
|
5848
5826
|
function normalizeReplyPayload(payload, opts = {}) {
|
|
@@ -5939,7 +5917,7 @@ async function routeReply(params) {
|
|
|
5939
5917
|
const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
|
|
5940
5918
|
const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
|
|
5941
5919
|
try {
|
|
5942
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
5920
|
+
const { deliverOutboundPayloads } = await import("./deliver-DZ7ynJYH.js").then((n) => n.n);
|
|
5943
5921
|
return {
|
|
5944
5922
|
ok: true,
|
|
5945
5923
|
messageId: (await deliverOutboundPayloads({
|
|
@@ -10060,8 +10038,7 @@ async function incrementCompactionCount(params) {
|
|
|
10060
10038
|
//#endregion
|
|
10061
10039
|
//#region src/auto-reply/reply/typing-mode.ts
|
|
10062
10040
|
const DEFAULT_GROUP_TYPING_MODE = "message";
|
|
10063
|
-
function resolveTypingMode({ configured, isGroupChat, wasMentioned
|
|
10064
|
-
if (isHeartbeat) return "never";
|
|
10041
|
+
function resolveTypingMode({ configured, isGroupChat, wasMentioned }) {
|
|
10065
10042
|
if (configured) return configured;
|
|
10066
10043
|
if (!isGroupChat || wasMentioned) return "instant";
|
|
10067
10044
|
return DEFAULT_GROUP_TYPING_MODE;
|
|
@@ -10095,12 +10072,11 @@ async function prepareAgentRun(params) {
|
|
|
10095
10072
|
const isFirstTurnInSession = isNewSession || !currentSystemSent;
|
|
10096
10073
|
const isGroupChat = sessionCtx.ChatType === "group";
|
|
10097
10074
|
const wasMentioned = ctx.WasMentioned === true;
|
|
10098
|
-
const isHeartbeat = opts?.isHeartbeat === true;
|
|
10099
10075
|
const typingMode = resolveTypingMode({
|
|
10100
10076
|
configured: sessionCfg?.typingMode ?? agentCfg?.typingMode,
|
|
10101
10077
|
isGroupChat,
|
|
10102
10078
|
wasMentioned,
|
|
10103
|
-
isHeartbeat
|
|
10079
|
+
isHeartbeat: false
|
|
10104
10080
|
});
|
|
10105
10081
|
const shouldInjectGroupIntro = Boolean(isGroupChat && (isFirstTurnInSession || sessionEntry?.groupActivationNeedsSystemIntro));
|
|
10106
10082
|
const groupChatContext = isGroupChat ? buildGroupChatContext({ sessionCtx }) : "";
|
|
@@ -11786,7 +11762,7 @@ var MediaAttachmentCache = class {
|
|
|
11786
11762
|
const size = await this.ensureLocalStat(entry);
|
|
11787
11763
|
if (entry.resolvedPath) {
|
|
11788
11764
|
if (size !== void 0 && size > params.maxBytes) throw new MediaUnderstandingSkipError("maxBytes", `Attachment ${params.attachmentIndex + 1} exceeds maxBytes ${params.maxBytes}`);
|
|
11789
|
-
const buffer = await
|
|
11765
|
+
const buffer = await fsPromises.readFile(entry.resolvedPath);
|
|
11790
11766
|
entry.buffer = buffer;
|
|
11791
11767
|
entry.bufferMime = entry.bufferMime ?? entry.attachment.mime ?? await detectMime({
|
|
11792
11768
|
buffer,
|
|
@@ -11856,10 +11832,10 @@ var MediaAttachmentCache = class {
|
|
|
11856
11832
|
prefix: "symi-media",
|
|
11857
11833
|
extension: path.extname(bufferResult.fileName || "") || ""
|
|
11858
11834
|
});
|
|
11859
|
-
await
|
|
11835
|
+
await fsPromises.writeFile(tmpPath, bufferResult.buffer);
|
|
11860
11836
|
entry.tempPath = tmpPath;
|
|
11861
11837
|
entry.tempCleanup = async () => {
|
|
11862
|
-
await
|
|
11838
|
+
await fsPromises.unlink(tmpPath).catch(() => {});
|
|
11863
11839
|
};
|
|
11864
11840
|
return {
|
|
11865
11841
|
path: tmpPath,
|
|
@@ -11906,12 +11882,12 @@ var MediaAttachmentCache = class {
|
|
|
11906
11882
|
if (entry.statSize !== void 0) return entry.statSize;
|
|
11907
11883
|
try {
|
|
11908
11884
|
const currentPath = entry.resolvedPath;
|
|
11909
|
-
const stat = await
|
|
11885
|
+
const stat = await fsPromises.stat(currentPath);
|
|
11910
11886
|
if (!stat.isFile()) {
|
|
11911
11887
|
entry.resolvedPath = void 0;
|
|
11912
11888
|
return;
|
|
11913
11889
|
}
|
|
11914
|
-
const canonicalPath = await
|
|
11890
|
+
const canonicalPath = await fsPromises.realpath(currentPath).catch(() => currentPath);
|
|
11915
11891
|
if (!isInboundPathAllowed({
|
|
11916
11892
|
filePath: canonicalPath,
|
|
11917
11893
|
roots: await this.getCanonicalLocalPathRoots()
|
|
@@ -11933,7 +11909,7 @@ var MediaAttachmentCache = class {
|
|
|
11933
11909
|
if (this.canonicalLocalPathRoots) return await this.canonicalLocalPathRoots;
|
|
11934
11910
|
this.canonicalLocalPathRoots = (async () => mergeInboundPathRoots(this.localPathRoots, await Promise.all(this.localPathRoots.map(async (root) => {
|
|
11935
11911
|
if (root.includes("*")) return root;
|
|
11936
|
-
return await
|
|
11912
|
+
return await fsPromises.realpath(root).catch(() => root);
|
|
11937
11913
|
}))))();
|
|
11938
11914
|
return await this.canonicalLocalPathRoots;
|
|
11939
11915
|
}
|
|
@@ -12004,7 +11980,7 @@ function formatAudioTranscripts(outputs) {
|
|
|
12004
11980
|
async function fileExists(filePath) {
|
|
12005
11981
|
if (!filePath) return false;
|
|
12006
11982
|
try {
|
|
12007
|
-
await
|
|
11983
|
+
await fsPromises.stat(filePath);
|
|
12008
11984
|
return true;
|
|
12009
11985
|
} catch {
|
|
12010
11986
|
return false;
|
|
@@ -12104,7 +12080,7 @@ async function resolveCliOutput(params) {
|
|
|
12104
12080
|
const commandId = commandBase(params.command);
|
|
12105
12081
|
const fileOutput = commandId === "whisper-cli" ? resolveWhisperCppOutputPath(params.args) : commandId === "whisper" ? resolveWhisperOutputPath(params.args, params.mediaPath) : null;
|
|
12106
12082
|
if (fileOutput && await fileExists(fileOutput)) try {
|
|
12107
|
-
const content = await
|
|
12083
|
+
const content = await fsPromises.readFile(fileOutput, "utf8");
|
|
12108
12084
|
if (content.trim()) return content.trim();
|
|
12109
12085
|
} catch {}
|
|
12110
12086
|
if (commandId === "gemini") {
|
|
@@ -12395,7 +12371,7 @@ async function runCliEntry(params) {
|
|
|
12395
12371
|
maxBytes,
|
|
12396
12372
|
timeoutMs
|
|
12397
12373
|
});
|
|
12398
|
-
const outputDir = await
|
|
12374
|
+
const outputDir = await fsPromises.mkdtemp(path.join(os.tmpdir(), "symi-media-cli-"));
|
|
12399
12375
|
const mediaPath = pathResult.path;
|
|
12400
12376
|
const outputBase = path.join(outputDir, path.parse(mediaPath).name);
|
|
12401
12377
|
const templCtx = {
|
|
@@ -12429,7 +12405,7 @@ async function runCliEntry(params) {
|
|
|
12429
12405
|
model: command
|
|
12430
12406
|
};
|
|
12431
12407
|
} finally {
|
|
12432
|
-
await
|
|
12408
|
+
await fsPromises.rm(outputDir, {
|
|
12433
12409
|
recursive: true,
|
|
12434
12410
|
force: true
|
|
12435
12411
|
}).catch(() => {});
|
|
@@ -12473,9 +12449,9 @@ function candidateBinaryNames(name) {
|
|
|
12473
12449
|
}
|
|
12474
12450
|
async function isExecutable$1(filePath) {
|
|
12475
12451
|
try {
|
|
12476
|
-
if (!(await
|
|
12452
|
+
if (!(await fsPromises.stat(filePath)).isFile()) return false;
|
|
12477
12453
|
if (process.platform === "win32") return true;
|
|
12478
|
-
await
|
|
12454
|
+
await fsPromises.access(filePath, constants.X_OK);
|
|
12479
12455
|
return true;
|
|
12480
12456
|
} catch {
|
|
12481
12457
|
return false;
|
|
@@ -14170,8 +14146,7 @@ async function createModelSelectionState(params) {
|
|
|
14170
14146
|
sessionKey,
|
|
14171
14147
|
parentSessionKey
|
|
14172
14148
|
});
|
|
14173
|
-
|
|
14174
|
-
if (storedOverride?.model && !skipStoredOverride) {
|
|
14149
|
+
if (storedOverride?.model) {
|
|
14175
14150
|
const candidateProvider = storedOverride.provider || defaultProvider;
|
|
14176
14151
|
const key = modelKey(candidateProvider, storedOverride.model);
|
|
14177
14152
|
if (allowedModelKeys.size === 0 || allowedModelKeys.has(key)) {
|
|
@@ -14180,7 +14155,7 @@ async function createModelSelectionState(params) {
|
|
|
14180
14155
|
}
|
|
14181
14156
|
}
|
|
14182
14157
|
if (sessionEntry && sessionStore && sessionKey && sessionEntry.authProfileOverride) {
|
|
14183
|
-
const { ensureAuthProfileStore } = await import("./auth-profiles-
|
|
14158
|
+
const { ensureAuthProfileStore } = await import("./auth-profiles-BVtpxYtY.js").then((n) => n.t);
|
|
14184
14159
|
const profile = ensureAuthProfileStore(void 0, { allowKeychainPrompt: false }).profiles[sessionEntry.authProfileOverride];
|
|
14185
14160
|
const providerKey = normalizeProviderId(provider);
|
|
14186
14161
|
if (!profile || normalizeProviderId(profile.provider) !== providerKey) await clearSessionAuthProfileOverride({
|
|
@@ -17324,7 +17299,7 @@ async function resolveSandboxWorkdir(params) {
|
|
|
17324
17299
|
cwd: process.cwd(),
|
|
17325
17300
|
root: params.sandbox.workspaceDir
|
|
17326
17301
|
});
|
|
17327
|
-
if (!(await
|
|
17302
|
+
if (!(await fsPromises.stat(resolved.resolved)).isDirectory()) throw new Error("workdir is not a directory");
|
|
17328
17303
|
const relative = resolved.relative ? resolved.relative.split(path.sep).join(path.posix.sep) : "";
|
|
17329
17304
|
const containerWorkdir = relative ? path.posix.join(params.sandbox.containerWorkdir, relative) : params.sandbox.containerWorkdir;
|
|
17330
17305
|
return {
|
|
@@ -18338,13 +18313,13 @@ async function validateScriptFileForShellBleed(params) {
|
|
|
18338
18313
|
cwd: params.workdir,
|
|
18339
18314
|
root: params.workdir
|
|
18340
18315
|
});
|
|
18341
|
-
stat = await
|
|
18316
|
+
stat = await fsPromises.stat(absPath);
|
|
18342
18317
|
} catch {
|
|
18343
18318
|
return;
|
|
18344
18319
|
}
|
|
18345
18320
|
if (!stat.isFile()) return;
|
|
18346
18321
|
if (stat.size > 512 * 1024) return;
|
|
18347
|
-
const content = await
|
|
18322
|
+
const content = await fsPromises.readFile(absPath, "utf-8");
|
|
18348
18323
|
const first = /\$[A-Z_][A-Z0-9_]{1,}/g.exec(content);
|
|
18349
18324
|
if (first) {
|
|
18350
18325
|
const idx = first.index;
|
|
@@ -23021,7 +22996,7 @@ async function handleCommands(params) {
|
|
|
23021
22996
|
try {
|
|
23022
22997
|
const messages = [];
|
|
23023
22998
|
if (sessionFile) {
|
|
23024
|
-
const content = await
|
|
22999
|
+
const content = await fsPromises.readFile(sessionFile, "utf-8");
|
|
23025
23000
|
for (const line of content.split("\n")) {
|
|
23026
23001
|
if (!line.trim()) continue;
|
|
23027
23002
|
try {
|
|
@@ -23476,7 +23451,7 @@ function resolveExecOverrides(params) {
|
|
|
23476
23451
|
};
|
|
23477
23452
|
}
|
|
23478
23453
|
async function resolveReplyDirectives(params) {
|
|
23479
|
-
const { ctx, cfg, agentId, agentCfg, agentDir, workspaceDir, sessionCtx, sessionEntry, sessionStore, sessionKey, storePath, sessionScope, groupResolution, isGroup, triggerBodyNormalized, commandAuthorized, defaultProvider, defaultModel, provider: initialProvider, model: initialModel,
|
|
23454
|
+
const { ctx, cfg, agentId, agentCfg, agentDir, workspaceDir, sessionCtx, sessionEntry, sessionStore, sessionKey, storePath, sessionScope, groupResolution, isGroup, triggerBodyNormalized, commandAuthorized, defaultProvider, defaultModel, provider: initialProvider, model: initialModel, typing, opts, skillFilter } = params;
|
|
23480
23455
|
let provider = initialProvider;
|
|
23481
23456
|
let model = initialModel;
|
|
23482
23457
|
const commandSource = sessionCtx.BodyForCommands ?? sessionCtx.CommandBody ?? sessionCtx.RawBody ?? sessionCtx.Transcript ?? sessionCtx.BodyStripped ?? sessionCtx.Body ?? ctx.BodyForCommands ?? ctx.CommandBody ?? ctx.RawBody ?? "";
|
|
@@ -23617,8 +23592,7 @@ async function resolveReplyDirectives(params) {
|
|
|
23617
23592
|
defaultModel,
|
|
23618
23593
|
provider,
|
|
23619
23594
|
model,
|
|
23620
|
-
hasModelDirective: directives.hasModelDirective
|
|
23621
|
-
hasResolvedHeartbeatModelOverride
|
|
23595
|
+
hasModelDirective: directives.hasModelDirective
|
|
23622
23596
|
});
|
|
23623
23597
|
provider = modelState.provider;
|
|
23624
23598
|
model = modelState.model;
|
|
@@ -25209,7 +25183,7 @@ async function readJsonlFromPath(jsonlPath) {
|
|
|
25209
25183
|
if (shouldLogVerbose()) logVerbose(`Blocked canvas jsonlPath outside allowed roots: ${resolved}`);
|
|
25210
25184
|
throw new Error("jsonlPath outside allowed roots");
|
|
25211
25185
|
}
|
|
25212
|
-
const canonical = await
|
|
25186
|
+
const canonical = await fsPromises.realpath(resolved).catch(() => resolved);
|
|
25213
25187
|
if (!isInboundPathAllowed({
|
|
25214
25188
|
filePath: canonical,
|
|
25215
25189
|
roots
|
|
@@ -25217,7 +25191,7 @@ async function readJsonlFromPath(jsonlPath) {
|
|
|
25217
25191
|
if (shouldLogVerbose()) logVerbose(`Blocked canvas jsonlPath outside allowed roots: ${canonical}`);
|
|
25218
25192
|
throw new Error("jsonlPath outside allowed roots");
|
|
25219
25193
|
}
|
|
25220
|
-
return await
|
|
25194
|
+
return await fsPromises.readFile(canonical, "utf8");
|
|
25221
25195
|
}
|
|
25222
25196
|
const CanvasToolSchema = Type.Object({
|
|
25223
25197
|
action: stringEnum(CANVAS_ACTIONS),
|
|
@@ -26760,7 +26734,7 @@ async function hydrateAttachmentPayload(params) {
|
|
|
26760
26734
|
accountId: params.accountId
|
|
26761
26735
|
}),
|
|
26762
26736
|
sandboxValidated: true,
|
|
26763
|
-
readFile: (filePath) =>
|
|
26737
|
+
readFile: (filePath) => fsPromises.readFile(filePath)
|
|
26764
26738
|
});
|
|
26765
26739
|
params.args.buffer = media.buffer.toString("base64");
|
|
26766
26740
|
if (!contentTypeParam && media.contentType) params.args.contentType = media.contentType;
|
|
@@ -33254,7 +33228,7 @@ async function deliverSessionMaintenanceWarning(params) {
|
|
|
33254
33228
|
return;
|
|
33255
33229
|
}
|
|
33256
33230
|
try {
|
|
33257
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
33231
|
+
const { deliverOutboundPayloads } = await import("./deliver-DZ7ynJYH.js").then((n) => n.n);
|
|
33258
33232
|
await deliverOutboundPayloads({
|
|
33259
33233
|
cfg: params.cfg,
|
|
33260
33234
|
channel,
|
|
@@ -33659,7 +33633,7 @@ async function stageSandboxMedia(params) {
|
|
|
33659
33633
|
};
|
|
33660
33634
|
try {
|
|
33661
33635
|
const destDir = sandbox ? path.join(effectiveWorkspaceDir, "media", "inbound") : effectiveWorkspaceDir;
|
|
33662
|
-
await
|
|
33636
|
+
await fsPromises.mkdir(destDir, { recursive: true });
|
|
33663
33637
|
const remoteAttachmentRoots = resolveIMessageRemoteAttachmentRoots({
|
|
33664
33638
|
cfg,
|
|
33665
33639
|
accountId: ctx.AccountId
|
|
@@ -33709,7 +33683,7 @@ async function stageSandboxMedia(params) {
|
|
|
33709
33683
|
usedNames.add(fileName);
|
|
33710
33684
|
const dest = path.join(destDir, fileName);
|
|
33711
33685
|
if (ctx.MediaRemoteHost) await scpFile(ctx.MediaRemoteHost, source, dest);
|
|
33712
|
-
else await
|
|
33686
|
+
else await fsPromises.copyFile(source, dest);
|
|
33713
33687
|
const stagedPath = sandbox ? path.posix.join("media", "inbound", fileName) : dest;
|
|
33714
33688
|
staged.set(source, stagedPath);
|
|
33715
33689
|
}
|
|
@@ -33928,20 +33902,6 @@ async function prepareReplyTurn(ctx, opts, configOverride) {
|
|
|
33928
33902
|
});
|
|
33929
33903
|
let provider = defaultProvider;
|
|
33930
33904
|
let model = defaultModel;
|
|
33931
|
-
let hasResolvedHeartbeatModelOverride = false;
|
|
33932
|
-
if (opts?.isHeartbeat) {
|
|
33933
|
-
const heartbeatRaw = opts.heartbeatModelOverride?.trim() ?? agentCfg?.heartbeat?.model?.trim() ?? "";
|
|
33934
|
-
const heartbeatRef = heartbeatRaw ? resolveModelRefFromString({
|
|
33935
|
-
raw: heartbeatRaw,
|
|
33936
|
-
defaultProvider,
|
|
33937
|
-
aliasIndex
|
|
33938
|
-
}) : null;
|
|
33939
|
-
if (heartbeatRef) {
|
|
33940
|
-
provider = heartbeatRef.ref.provider;
|
|
33941
|
-
model = heartbeatRef.ref.model;
|
|
33942
|
-
hasResolvedHeartbeatModelOverride = true;
|
|
33943
|
-
}
|
|
33944
|
-
}
|
|
33945
33905
|
const workspaceDir = (await ensureAgentWorkspace({
|
|
33946
33906
|
dir: resolveAgentWorkspaceDir(cfg, agentId) ?? DEFAULT_AGENT_WORKSPACE_DIR,
|
|
33947
33907
|
ensureBootstrapFiles: !agentCfg?.skipBootstrap && !isFastTestEnv
|
|
@@ -34020,8 +33980,7 @@ async function prepareReplyTurn(ctx, opts, configOverride) {
|
|
|
34020
33980
|
groupSubject: sessionEntry.subject ?? sessionCtx.GroupSubject ?? finalized.GroupSubject,
|
|
34021
33981
|
parentSessionKey: sessionCtx.ParentSessionKey
|
|
34022
33982
|
});
|
|
34023
|
-
|
|
34024
|
-
if (!hasResolvedHeartbeatModelOverride && !hasSessionModelOverride && channelModelOverride) {
|
|
33983
|
+
if (!Boolean(sessionEntry.modelOverride?.trim() || sessionEntry.providerOverride?.trim()) && channelModelOverride) {
|
|
34025
33984
|
const resolved = resolveModelRefFromString({
|
|
34026
33985
|
raw: channelModelOverride.model,
|
|
34027
33986
|
defaultProvider,
|
|
@@ -34054,7 +34013,6 @@ async function prepareReplyTurn(ctx, opts, configOverride) {
|
|
|
34054
34013
|
aliasIndex,
|
|
34055
34014
|
provider,
|
|
34056
34015
|
model,
|
|
34057
|
-
hasResolvedHeartbeatModelOverride,
|
|
34058
34016
|
typing,
|
|
34059
34017
|
opts: resolvedOpts,
|
|
34060
34018
|
skillFilter: mergedSkillFilter
|
|
@@ -34800,7 +34758,7 @@ function withHeartbeatStrip(opts) {
|
|
|
34800
34758
|
return (next) => async (payload, ctx) => {
|
|
34801
34759
|
let text = payload.text;
|
|
34802
34760
|
const hasMedia = Boolean(payload.mediaUrl) || (payload.mediaUrls?.length ?? 0) > 0;
|
|
34803
|
-
if (
|
|
34761
|
+
if (typeof text === "string" && text.includes("SYMIPULSE_OK")) {
|
|
34804
34762
|
const stripped = stripHeartbeatToken(text, { mode: "message" });
|
|
34805
34763
|
if (stripped.didStrip && !didLogStrip) {
|
|
34806
34764
|
didLogStrip = true;
|
|
@@ -39094,7 +39052,7 @@ function readSlackExternalArgMenuToken(raw) {
|
|
|
39094
39052
|
}
|
|
39095
39053
|
let commandsRegistry;
|
|
39096
39054
|
async function getCommandsRegistry() {
|
|
39097
|
-
if (!commandsRegistry) commandsRegistry = await import("./commands-registry-
|
|
39055
|
+
if (!commandsRegistry) commandsRegistry = await import("./commands-registry-DYk02tmt.js").then((n) => n.t);
|
|
39098
39056
|
return commandsRegistry;
|
|
39099
39057
|
}
|
|
39100
39058
|
function encodeSlackCommandArgValue(parts) {
|
|
@@ -39436,11 +39394,11 @@ async function registerSlackMonitorSlashCommands(params) {
|
|
|
39436
39394
|
const channelName = channelInfo?.name;
|
|
39437
39395
|
const roomLabel = channelName ? `#${channelName}` : `#${command.channel_id}`;
|
|
39438
39396
|
const [{ resolveAgentRoute }, { finalizeInboundContext }, { dispatchReplyWithDispatcher }] = await Promise.all([
|
|
39439
|
-
import("./resolve-route-
|
|
39440
|
-
import("./inbound-context-
|
|
39397
|
+
import("./resolve-route-xpyI3enn.js").then((n) => n.r),
|
|
39398
|
+
import("./inbound-context-DqAyGDbE.js").then((n) => n.n),
|
|
39441
39399
|
Promise.resolve().then(() => provider_dispatcher_exports)
|
|
39442
39400
|
]);
|
|
39443
|
-
const [{ resolveConversationLabel }, { createReplyPrefixOptions }] = await Promise.all([import("./conversation-label-
|
|
39401
|
+
const [{ resolveConversationLabel }, { createReplyPrefixOptions }] = await Promise.all([import("./conversation-label-CS5Zjc4w.js").then((n) => n.t), import("./reply-prefix-CyLplifX.js").then((n) => n.n)]);
|
|
39444
39402
|
const route = resolveAgentRoute({
|
|
39445
39403
|
cfg,
|
|
39446
39404
|
channel: "slack",
|
|
@@ -39497,9 +39455,9 @@ async function registerSlackMonitorSlashCommands(params) {
|
|
|
39497
39455
|
});
|
|
39498
39456
|
const deliverSlashPayloads = async (replies) => {
|
|
39499
39457
|
const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
|
|
39500
|
-
import("./replies-
|
|
39501
|
-
import("./chunk-
|
|
39502
|
-
import("./markdown-tables-
|
|
39458
|
+
import("./replies-Dqft-42v.js").then((n) => n.r),
|
|
39459
|
+
import("./chunk-DQGU0F8t.js").then((n) => n.s),
|
|
39460
|
+
import("./markdown-tables-GTLvbzuR.js").then((n) => n.t)
|
|
39503
39461
|
]);
|
|
39504
39462
|
await deliverSlackSlashReplies({
|
|
39505
39463
|
replies,
|
|
@@ -39552,7 +39510,7 @@ async function registerSlackMonitorSlashCommands(params) {
|
|
|
39552
39510
|
let nativeCommands = [];
|
|
39553
39511
|
if (nativeEnabled) {
|
|
39554
39512
|
reg = await getCommandsRegistry();
|
|
39555
|
-
const skillCommands = nativeSkillsEnabled ? (await import("./skill-commands-
|
|
39513
|
+
const skillCommands = nativeSkillsEnabled ? (await import("./skill-commands-X3T9Y9lT.js").then((n) => n.a)).listSkillCommandsForAgents({ cfg }) : [];
|
|
39556
39514
|
nativeCommands = reg.listNativeCommandSpecsForConfig(cfg, {
|
|
39557
39515
|
skillCommands,
|
|
39558
39516
|
provider: "slack"
|
|
@@ -40685,7 +40643,7 @@ function resolvePluginTools(params) {
|
|
|
40685
40643
|
//#endregion
|
|
40686
40644
|
//#region src/agents/apply-patch-update.ts
|
|
40687
40645
|
async function defaultReadFile(filePath) {
|
|
40688
|
-
return
|
|
40646
|
+
return fsPromises.readFile(filePath, "utf8");
|
|
40689
40647
|
}
|
|
40690
40648
|
async function applyUpdateHunk(filePath, chunks, options) {
|
|
40691
40649
|
const originalLines = (await (options?.readFile ?? defaultReadFile)(filePath).catch((err) => {
|
|
@@ -40929,10 +40887,10 @@ function resolvePatchFileOps(options) {
|
|
|
40929
40887
|
};
|
|
40930
40888
|
}
|
|
40931
40889
|
return {
|
|
40932
|
-
readFile: (filePath) =>
|
|
40933
|
-
writeFile: (filePath, content) =>
|
|
40934
|
-
remove: (filePath) =>
|
|
40935
|
-
mkdirp: (dir) =>
|
|
40890
|
+
readFile: (filePath) => fsPromises.readFile(filePath, "utf8"),
|
|
40891
|
+
writeFile: (filePath, content) => fsPromises.writeFile(filePath, content, "utf8"),
|
|
40892
|
+
remove: (filePath) => fsPromises.rm(filePath),
|
|
40893
|
+
mkdirp: (dir) => fsPromises.mkdir(dir, { recursive: true }).then(() => {})
|
|
40936
40894
|
};
|
|
40937
40895
|
}
|
|
40938
40896
|
async function ensureDir(filePath, ops) {
|
|
@@ -42099,7 +42057,7 @@ async function repairSessionFileIfNeeded(params) {
|
|
|
42099
42057
|
};
|
|
42100
42058
|
let content;
|
|
42101
42059
|
try {
|
|
42102
|
-
content = await
|
|
42060
|
+
content = await fsPromises.readFile(sessionFile, "utf-8");
|
|
42103
42061
|
} catch (err) {
|
|
42104
42062
|
if (err?.code === "ENOENT") return {
|
|
42105
42063
|
repaired: false,
|
|
@@ -42147,15 +42105,15 @@ async function repairSessionFileIfNeeded(params) {
|
|
|
42147
42105
|
const backupPath = `${sessionFile}.bak-${process.pid}-${Date.now()}`;
|
|
42148
42106
|
const tmpPath = `${sessionFile}.repair-${process.pid}-${Date.now()}.tmp`;
|
|
42149
42107
|
try {
|
|
42150
|
-
const stat = await
|
|
42151
|
-
await
|
|
42152
|
-
if (stat) await
|
|
42153
|
-
await
|
|
42154
|
-
if (stat) await
|
|
42155
|
-
await
|
|
42108
|
+
const stat = await fsPromises.stat(sessionFile).catch(() => null);
|
|
42109
|
+
await fsPromises.writeFile(backupPath, content, "utf-8");
|
|
42110
|
+
if (stat) await fsPromises.chmod(backupPath, stat.mode);
|
|
42111
|
+
await fsPromises.writeFile(tmpPath, cleaned, "utf-8");
|
|
42112
|
+
if (stat) await fsPromises.chmod(tmpPath, stat.mode);
|
|
42113
|
+
await fsPromises.rename(tmpPath, sessionFile);
|
|
42156
42114
|
} catch (err) {
|
|
42157
42115
|
try {
|
|
42158
|
-
await
|
|
42116
|
+
await fsPromises.unlink(tmpPath);
|
|
42159
42117
|
} catch (cleanupErr) {
|
|
42160
42118
|
params.warn?.(`session file repair cleanup failed: ${cleanupErr instanceof Error ? cleanupErr.message : "unknown error"} (${path.basename(tmpPath)})`);
|
|
42161
42119
|
}
|
|
@@ -43428,7 +43386,7 @@ async function prewarmSessionFile(sessionFile) {
|
|
|
43428
43386
|
if (!isSessionManagerCacheEnabled()) return;
|
|
43429
43387
|
if (isSessionManagerCached(sessionFile)) return;
|
|
43430
43388
|
try {
|
|
43431
|
-
const handle = await
|
|
43389
|
+
const handle = await fsPromises.open(sessionFile, "r");
|
|
43432
43390
|
try {
|
|
43433
43391
|
const buffer = Buffer$1.alloc(4096);
|
|
43434
43392
|
await handle.read(buffer, 0, buffer.length, 0);
|
|
@@ -43561,14 +43519,14 @@ async function compactEmbeddedPiSessionDirect(params) {
|
|
|
43561
43519
|
if (!apiKeyInfo.apiKey) {
|
|
43562
43520
|
if (apiKeyInfo.mode !== "aws-sdk") throw new Error(`No API key resolved for provider "${model.provider}" (auth mode: ${apiKeyInfo.mode}).`);
|
|
43563
43521
|
} else if (model.provider === "github-copilot") {
|
|
43564
|
-
const { resolveCopilotApiToken } = await import("./github-copilot-token-
|
|
43522
|
+
const { resolveCopilotApiToken } = await import("./github-copilot-token-BTNK6Tcd.js").then((n) => n.n);
|
|
43565
43523
|
const copilotToken = await resolveCopilotApiToken({ githubToken: apiKeyInfo.apiKey });
|
|
43566
43524
|
authStorage.setRuntimeApiKey(model.provider, copilotToken.token);
|
|
43567
43525
|
} else authStorage.setRuntimeApiKey(model.provider, apiKeyInfo.apiKey);
|
|
43568
43526
|
} catch (err) {
|
|
43569
43527
|
return fail(describeUnknownError(err));
|
|
43570
43528
|
}
|
|
43571
|
-
await
|
|
43529
|
+
await fsPromises.mkdir(resolvedWorkspace, { recursive: true });
|
|
43572
43530
|
const sandboxSessionKey = params.sessionKey?.trim() || params.sessionId;
|
|
43573
43531
|
const sandbox = await resolveSandboxContext({
|
|
43574
43532
|
config: params.config,
|
|
@@ -43576,7 +43534,7 @@ async function compactEmbeddedPiSessionDirect(params) {
|
|
|
43576
43534
|
workspaceDir: resolvedWorkspace
|
|
43577
43535
|
});
|
|
43578
43536
|
const effectiveWorkspace = sandbox?.enabled ? sandbox.workspaceAccess === "rw" ? resolvedWorkspace : sandbox.workspaceDir : resolvedWorkspace;
|
|
43579
|
-
await
|
|
43537
|
+
await fsPromises.mkdir(effectiveWorkspace, { recursive: true });
|
|
43580
43538
|
await ensureSessionHeader({
|
|
43581
43539
|
sessionFile: params.sessionFile,
|
|
43582
43540
|
sessionId: params.sessionId,
|
|
@@ -43902,12 +43860,12 @@ function getQueuedFileWriter(writers, filePath) {
|
|
|
43902
43860
|
const existing = writers.get(filePath);
|
|
43903
43861
|
if (existing) return existing;
|
|
43904
43862
|
const dir = path.dirname(filePath);
|
|
43905
|
-
const ready =
|
|
43863
|
+
const ready = fsPromises.mkdir(dir, { recursive: true }).catch(() => void 0);
|
|
43906
43864
|
let queue = Promise.resolve();
|
|
43907
43865
|
const writer = {
|
|
43908
43866
|
filePath,
|
|
43909
43867
|
write: (line) => {
|
|
43910
|
-
queue = queue.then(() => ready).then(() =>
|
|
43868
|
+
queue = queue.then(() => ready).then(() => fsPromises.appendFile(filePath, line, "utf8")).catch(() => void 0);
|
|
43911
43869
|
}
|
|
43912
43870
|
};
|
|
43913
43871
|
writers.set(filePath, writer);
|
|
@@ -47062,7 +47020,7 @@ Use the message tool with buttons:
|
|
|
47062
47020
|
*/
|
|
47063
47021
|
async function readSessionFile(sessionFile) {
|
|
47064
47022
|
try {
|
|
47065
|
-
return await
|
|
47023
|
+
return await fsPromises.readFile(sessionFile, "utf-8");
|
|
47066
47024
|
} catch {
|
|
47067
47025
|
return null;
|
|
47068
47026
|
}
|
|
@@ -47071,8 +47029,8 @@ async function writeAtomically(sessionFile, text) {
|
|
|
47071
47029
|
const dir = path.dirname(sessionFile);
|
|
47072
47030
|
const base = path.basename(sessionFile);
|
|
47073
47031
|
const tmp = path.join(dir, `.${base}.prune-${process.pid}-${Date.now()}.tmp`);
|
|
47074
|
-
await
|
|
47075
|
-
await
|
|
47032
|
+
await fsPromises.writeFile(tmp, text, "utf-8");
|
|
47033
|
+
await fsPromises.rename(tmp, sessionFile);
|
|
47076
47034
|
}
|
|
47077
47035
|
/**
|
|
47078
47036
|
* Remove empty assistant JSONL entries from the session file.
|
|
@@ -47174,7 +47132,7 @@ function isInPoisonRange(version) {
|
|
|
47174
47132
|
*/
|
|
47175
47133
|
async function checkSessionPoison(sessionFile) {
|
|
47176
47134
|
try {
|
|
47177
|
-
const firstLine = (await
|
|
47135
|
+
const firstLine = (await fsPromises.readFile(sessionFile, "utf-8")).split("\n")[0];
|
|
47178
47136
|
if (!firstLine) return null;
|
|
47179
47137
|
const header = JSON.parse(firstLine);
|
|
47180
47138
|
if (header.type !== "session") return null;
|
|
@@ -47192,7 +47150,7 @@ async function checkSessionPoison(sessionFile) {
|
|
|
47192
47150
|
*/
|
|
47193
47151
|
async function archivePoisonedSession(sessionFile) {
|
|
47194
47152
|
const archiveName = `${sessionFile}.archived-poison.${(/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-")}`;
|
|
47195
|
-
await
|
|
47153
|
+
await fsPromises.rename(sessionFile, archiveName);
|
|
47196
47154
|
return archiveName;
|
|
47197
47155
|
}
|
|
47198
47156
|
/**
|
|
@@ -47201,14 +47159,14 @@ async function archivePoisonedSession(sessionFile) {
|
|
|
47201
47159
|
*/
|
|
47202
47160
|
async function stampSessionVersion(sessionFile) {
|
|
47203
47161
|
try {
|
|
47204
|
-
const lines = (await
|
|
47162
|
+
const lines = (await fsPromises.readFile(sessionFile, "utf-8")).split("\n");
|
|
47205
47163
|
if (lines.length === 0) return;
|
|
47206
47164
|
const header = JSON.parse(lines[0]);
|
|
47207
47165
|
if (header.type !== "session") return;
|
|
47208
47166
|
if (header.symiVersion === VERSION) return;
|
|
47209
47167
|
header.symiVersion = VERSION;
|
|
47210
47168
|
lines[0] = JSON.stringify(header);
|
|
47211
|
-
await
|
|
47169
|
+
await fsPromises.writeFile(sessionFile, lines.join("\n"), "utf-8");
|
|
47212
47170
|
} catch {}
|
|
47213
47171
|
}
|
|
47214
47172
|
/**
|
|
@@ -47462,7 +47420,7 @@ async function prepareSessionManagerForRun(params) {
|
|
|
47462
47420
|
return;
|
|
47463
47421
|
}
|
|
47464
47422
|
if (params.hadSessionFile && header && !hasAssistant) {
|
|
47465
|
-
await
|
|
47423
|
+
await fsPromises.writeFile(params.sessionFile, "", "utf-8");
|
|
47466
47424
|
sm.fileEntries = [header];
|
|
47467
47425
|
sm.byId?.clear?.();
|
|
47468
47426
|
sm.labelsById?.clear?.();
|
|
@@ -48020,7 +47978,7 @@ async function runEmbeddedAttempt(params) {
|
|
|
48020
47978
|
const prevCwd = process.cwd();
|
|
48021
47979
|
const runAbortController = new AbortController();
|
|
48022
47980
|
log$7.debug(`embedded run start: runId=${params.runId} sessionId=${params.sessionId} provider=${params.provider} model=${params.modelId} thinking=${params.thinkLevel} messageChannel=${params.messageChannel ?? params.messageProvider ?? "unknown"}`);
|
|
48023
|
-
await
|
|
47981
|
+
await fsPromises.mkdir(resolvedWorkspace, { recursive: true });
|
|
48024
47982
|
const sandboxSessionKey = params.sessionKey?.trim() || params.sessionId;
|
|
48025
47983
|
const sandbox = await resolveSandboxContext({
|
|
48026
47984
|
config: params.config,
|
|
@@ -48028,7 +47986,7 @@ async function runEmbeddedAttempt(params) {
|
|
|
48028
47986
|
workspaceDir: resolvedWorkspace
|
|
48029
47987
|
});
|
|
48030
47988
|
const effectiveWorkspace = sandbox?.enabled ? sandbox.workspaceAccess === "rw" ? resolvedWorkspace : sandbox.workspaceDir : resolvedWorkspace;
|
|
48031
|
-
await
|
|
47989
|
+
await fsPromises.mkdir(effectiveWorkspace, { recursive: true });
|
|
48032
47990
|
let restoreSkillEnv;
|
|
48033
47991
|
process.chdir(effectiveWorkspace);
|
|
48034
47992
|
try {
|
|
@@ -48238,7 +48196,7 @@ async function runEmbeddedAttempt(params) {
|
|
|
48238
48196
|
sessionFile: params.sessionFile,
|
|
48239
48197
|
warn: (message) => log$7.warn(message)
|
|
48240
48198
|
});
|
|
48241
|
-
const hadSessionFile = await
|
|
48199
|
+
const hadSessionFile = await fsPromises.stat(params.sessionFile).then(() => true).catch(() => false);
|
|
48242
48200
|
const transcriptPolicy = resolveTranscriptPolicy({
|
|
48243
48201
|
modelApi: params.model?.api,
|
|
48244
48202
|
provider: params.provider,
|
|
@@ -49245,7 +49203,7 @@ async function runEmbeddedPiAgent(params) {
|
|
|
49245
49203
|
return;
|
|
49246
49204
|
}
|
|
49247
49205
|
if (model.provider === "github-copilot") {
|
|
49248
|
-
const { resolveCopilotApiToken } = await import("./github-copilot-token-
|
|
49206
|
+
const { resolveCopilotApiToken } = await import("./github-copilot-token-BTNK6Tcd.js").then((n) => n.n);
|
|
49249
49207
|
const copilotToken = await resolveCopilotApiToken({ githubToken: apiKeyInfo.apiKey });
|
|
49250
49208
|
authStorage.setRuntimeApiKey(model.provider, copilotToken.token);
|
|
49251
49209
|
} else authStorage.setRuntimeApiKey(model.provider, apiKeyInfo.apiKey);
|
|
@@ -49330,7 +49288,7 @@ async function runEmbeddedPiAgent(params) {
|
|
|
49330
49288
|
}
|
|
49331
49289
|
runLoopIterations += 1;
|
|
49332
49290
|
attemptedThinking.add(thinkLevel);
|
|
49333
|
-
await
|
|
49291
|
+
await fsPromises.mkdir(resolvedWorkspace, { recursive: true });
|
|
49334
49292
|
const prompt = provider === "anthropic" ? scrubAnthropicRefusalMagic(params.prompt) : params.prompt;
|
|
49335
49293
|
const attempt = await runEmbeddedAttempt({
|
|
49336
49294
|
sessionId: params.sessionId,
|
|
@@ -49994,8 +49952,8 @@ async function runAgentTurnImpl(params) {
|
|
|
49994
49952
|
const result = await runEmbeddedPiAgent(buildInternalParams());
|
|
49995
49953
|
const rawText = (result.payloads ?? []).filter((p) => p.text && !p.isError).map((p) => p.text).join("\n").trim();
|
|
49996
49954
|
const outboundResult = classifyOutboundMessage(rawText, {
|
|
49997
|
-
isHeartbeat:
|
|
49998
|
-
heartbeatAckMaxChars:
|
|
49955
|
+
isHeartbeat: false,
|
|
49956
|
+
heartbeatAckMaxChars: 0
|
|
49999
49957
|
});
|
|
50000
49958
|
const filteredText = outboundResult.output.trim();
|
|
50001
49959
|
const resolvedProvider = result.meta.agentMeta?.provider ?? params.provider ?? "";
|
|
@@ -50052,4 +50010,4 @@ async function runAgentTurn(params) {
|
|
|
50052
50010
|
}
|
|
50053
50011
|
|
|
50054
50012
|
//#endregion
|
|
50055
|
-
export { applyBrowserProxyPaths as $,
|
|
50013
|
+
export { applyBrowserProxyPaths as $, clearAgentRunContext as $t, normalizePollInput as A, describeFailoverError as An, estimateBase64DecodedBytes as At, normalizeOptionalText as B, countActiveRunsForSession as Bt, listTasksInWorkdir as C, waitForActiveTasks as Cn, DEFAULT_INPUT_IMAGE_MIMES as Ct, resolveOutboundSessionRoute as D, composeTurnMiddleware as Dn, extractImageContentFromSource as Dt, ensureOutboundSessionEntry as E, resolveModelProfile as En, extractFileContentFromSource as Et, normalizeCronJobCreate as F, clearSessionAuthProfileOverride as Ft, hasLegacyDeliveryHints as G, resolveAgentTimeoutMs as Gt, normalizeRequiredName as H, listDescendantRunsForRequester as Ht, normalizeCronJobPatch as I, formatZonedTimestamp as It, CHANNEL_TARGET_DESCRIPTION as J, AGENT_LANE_NESTED as Jt, stripLegacyDeliveryFields as K, runSubagentAnnounceFlow as Kt, inferLegacyName as L, isAbortTrigger as Lt, resetDirectoryCache as M, prepareAgentRun as Mt, CHANNEL_MESSAGE_ACTION_NAMES as N, BARE_SESSION_RESET_PROMPT as Nt, resolveOutboundTarget as O, runWithModelFallback as On, normalizeMimeList as Ot, normalizeHttpWebhookUrl as P, normalizeGroupActivation as Pt, isExternalHookSession as Q, clearSessionQueues as Qt, normalizeOptionalAgentId as R, stopSubagentsForRequester as Rt, createSymiTools as S, setCommandLaneConcurrency as Sn, DEFAULT_INPUT_IMAGE_MAX_BYTES as St, runMessageAction as T, classifyOutboundMessage as Tn, DEFAULT_INPUT_TIMEOUT_MS as Tt, migrateLegacyCronPayload as U, listSubagentRunsForRequester as Ut, normalizePayloadToSystemText as V, initSubagentRegistry as Vt, buildDeliveryFromLegacyPayload as W, subagent_registry_exports as Wt, detectSuspiciousPatterns as X, DEFAULT_HEARTBEAT_ACK_MAX_CHARS as Xt, buildSafeExternalPrompt as Y, AGENT_LANE_SUBAGENT as Yt, getHookType as Z, stripHeartbeatToken as Zt, withContextUsageWarning as _, redactRunIdentifier as _n, buildAuthHealthSummary as _t, getPluginToolMeta as a, abortEmbeddedPiRun as an, markGatewaySigusr1RestartHandled as at, buildAgentTurnParams as b, getTotalQueueSize as bn, applyVerboseOverride as bt, handleSlackHttpRequest as c, installUnhandledRejectionHandler as cn, setPreRestartDeferralCheck as ct, buildHistoryContextFromEntries as d, resolveSymiDocsPath as dn, getProcessSupervisor as dt, emitAgentEvent as en, persistBrowserProxyFiles as et, getChannelActivity as f, formatUserTime as fn, detectRuntimeShell as ft, buildGlassUiProfile as g, resolveBootstrapContextForRun as gn, DEFAULT_OAUTH_WARN_MS as gt, getTotalPendingReplies as h, makeBootstrapWarn as hn, maskApiKey as ht, sniffMimeFromBase64 as i, buildAgentSystemPrompt as in, isGatewaySigusr1RestartExternallyAllowed as it, formatTargetDisplay as j, resolveFailoverStatus as jn, applyTemplate as jt, resolveSessionDeliveryTarget as k, FailoverError as kn, resolveInputFileLimits as kt, readJsonBodyWithLimit as l, registerUnhandledRejectionHandler as ln, buildSystemPromptParams as lt, createReplyDispatcher as m, resolveUserTimezone as mn, resolveSendPolicy as mt, applyToolPolicyPipeline as n, onAgentEvent as nn, deferGatewayRestartUntilIdle as nt, createPluginLoaderLogger as o, getActiveEmbeddedRunCount as on, scheduleGatewaySigusr1Restart as ot, provider_dispatcher_exports as p, resolveUserTimeFormat as pn, normalizeSendPolicy as pt, CHANNEL_TARGETS_DESCRIPTION as q, readLatestAssistantReply as qt, buildDefaultToolPolicyPipelineSteps as r, registerAgentRunContext as rn, emitGatewayRestart as rt, loadSymiPlugins as s, waitForEmbeddedPiRunEnd as sn, setGatewaySigusr1RestartPolicy as st, runAgentTurn as t, getAgentRunContext as tn, consumeGatewaySigusr1RestartAuthorization as tt, requestBodyErrorToText as u, ToolInputError as un, resolveCommitHash as ut, withContextOverflowRecovery as v, resolveRunWorkspaceDir as vn, formatRemainingShort as vt, resolveAnnounceTargetFromKey as w, CommandLane as wn, DEFAULT_INPUT_MAX_REDIRECTS as wt, prepareReplyTurn as x, resetAllLanes as xn, parseVerboseOverride as xt, runUnifiedTurn as y, getActiveTaskCount as yn, applyModelOverrideToSessionEntry as yt, normalizeOptionalSessionKey as z, countActiveDescendantRuns as zt };
|