@symerian/symi 2.6.41 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{accounts-DDuIpcln.js → accounts-Cd816n6l.js} +7 -7
- package/dist/{accounts-bK-Yqdwx.js → accounts-CokRskCl.js} +1 -1
- package/dist/{accounts-DyJN4_vR.js → accounts-mN_EcgxC.js} +1 -1
- package/dist/{acp-cli-CrEIx-c7.js → acp-cli-COzlJi3B.js} +6 -6
- package/dist/{agent-scope-CgUHAtCo.js → agent-scope-BRwEc2pG.js} +18 -18
- package/dist/{agents-B4RNdKQ3.js → agents-Cu2bthAX.js} +4 -4
- package/dist/{agents.config-CA31c0kN.js → agents.config-5PTwsijs.js} +1 -1
- package/dist/{agents.config-CG2klYOg.js → agents.config-Dib8Uo2P.js} +2 -2
- package/dist/{api-key-rotation-CzuPlV2t.js → api-key-rotation-CEr3lKih.js} +1 -1
- package/dist/{audio-preflight-K-s65jbB.js → audio-preflight-COaFw917.js} +4 -4
- package/dist/{audio-preflight-CIiS5cfP.js → audio-preflight-mj-z_vQ6.js} +28 -28
- package/dist/{audit-DB9YkTVX.js → audit-Djfdh06o.js} +23 -23
- package/dist/{auth-choice-CCGIgXvF.js → auth-choice-5gul6jy2.js} +1 -1
- package/dist/{auth-choice-CiMf3Pjp.js → auth-choice-CmSUU3t8.js} +8 -8
- package/dist/{auth-token-Cay2jwzn.js → auth-token-83A2btbE.js} +1 -1
- package/dist/{banner-BNsB_A87.js → banner-B4vQpMIJ.js} +1 -1
- package/dist/{bindings-DFaVVCsf.js → bindings-ChzePa8q.js} +1 -1
- package/dist/{browser-cli-Ctn9do4z.js → browser-cli-BTD0NlrA.js} +9 -9
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +6 -6
- package/dist/bundled/session-memory/handler.js +6 -6
- package/dist/{call-DwpGquzW.js → call-tmHtVCkn.js} +9 -9
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-options-BMQlkUDX.js → channel-options-DVf4CJIu.js} +1 -1
- package/dist/{channel-options-pAH4A-xX.js → channel-options-DsWGc55A.js} +2 -2
- package/dist/{channel-selection-V2xDgw16.js → channel-selection-DaJDux-Q.js} +1 -1
- package/dist/{channel-web-Dwuj48T5.js → channel-web-vGC-WJXi.js} +17 -17
- package/dist/{channels-cli-rmDzxb0W.js → channels-cli-COayA28A.js} +76 -76
- package/dist/{channels-cli-CuExxB0U.js → channels-cli-CSv05N3q.js} +4 -4
- package/dist/{channels-status-issues-CJ0Vb_9z.js → channels-status-issues-B_PI3nEE.js} +1 -1
- package/dist/{chrome-DU2ZysN3.js → chrome-CSJzpT9Z.js} +2 -2
- package/dist/{chrome-BYOhnxTr.js → chrome-CbA-qnhp.js} +7 -7
- package/dist/cli/daemon-cli.js +1 -1
- package/dist/{cli-Mcq2pPI0.js → cli-B-g79xPe.js} +1 -1
- package/dist/{cli-BPGZalMg.js → cli-DJjOxip6.js} +63 -63
- package/dist/{client-jI1oE0_k.js → client-Bj_vTpri.js} +1 -1
- package/dist/{command-registry-BoEw2RzH.js → command-registry-BvpLfzl7.js} +9 -9
- package/dist/{commands-BNLCWX6e.js → commands-CtocZ4Lg.js} +1 -1
- package/dist/{commands-registry-BT0-zzs3.js → commands-registry-BZ0ZSQpM.js} +3 -3
- package/dist/{completion-cli-CQVZGJPg.js → completion-cli-CfRZ-7QF.js} +2 -2
- package/dist/{completion-cli-CE9Xqlyx.js → completion-cli-DtQcXg1N.js} +12 -12
- package/dist/{config-cli-mU_ckD4l.js → config-cli-D9Z78raJ.js} +4 -4
- package/dist/{config-cli-BucNvr-c.js → config-cli-DL2RdfLM.js} +1 -1
- package/dist/{config-guard-CEkSg4hl.js → config-guard-4oRmpR0a.js} +12 -12
- package/dist/{config-Dz95lSBW.js → config-tNauHpdq.js} +2 -2
- package/dist/{config-validation-HDVDlMSV.js → config-validation-BoDWiwe3.js} +1 -1
- package/dist/{configure-CxnBcN95.js → configure-Dq4f8WPa.js} +3 -3
- package/dist/{configure-CDOF87Fk.js → configure-jDpF8lmx.js} +15 -15
- package/dist/{control-service-BYKXzY4f.js → control-service-BBnhN7aZ.js} +4 -4
- package/dist/control-ui/css/style.css +51 -0
- package/dist/control-ui/js/app.js +39 -0
- package/dist/control-ui/js/gateway.js +2 -0
- package/dist/control-ui/js/settings.js +71 -8
- package/dist/{control-ui-assets-B7moDVHX.js → control-ui-assets-6n-YayeS.js} +1 -1
- package/dist/{cron-cli-DCpsXkrw.js → cron-cli-D165ecaj.js} +10 -10
- package/dist/{daemon-cli-DSDcmWOi.js → daemon-cli-BccZzUb0.js} +11 -11
- package/dist/{daemon-runtime-mE1b-Q48.js → daemon-runtime-u01h46bE.js} +10 -10
- package/dist/{deliver-B4KZ6-oZ.js → deliver-BYdNAEqj.js} +7 -7
- package/dist/{deliver-C1HRkzPJ.js → deliver-C7NePF9Z.js} +1 -1
- package/dist/{devices-cli-x3jIP4Ih.js → devices-cli-D0N71nqX.js} +6 -6
- package/dist/{diagnostics-BRwihzJG.js → diagnostics-BrUo0gqs.js} +5 -5
- package/dist/{directory-cli-KgsAVTA0.js → directory-cli-aj7aXIBM.js} +7 -7
- package/dist/{dm-policy-shared-DlDAGtZL.js → dm-policy-shared-epgkayyq.js} +2 -2
- package/dist/{dns-cli-Cwr92Aiq.js → dns-cli-Dit09wbu.js} +3 -3
- package/dist/{dock-BhS32F6E.js → dock-BYiRZSgZ.js} +4 -4
- package/dist/{docs-cli-qE-blOLC.js → docs-cli-CyWGMA-e.js} +1 -1
- package/dist/{doctor-completion-CoftKlUX.js → doctor-completion-Ccb83Wl5.js} +2 -2
- package/dist/{doctor-completion-CHF_TwGQ.js → doctor-completion-oQemZItC.js} +1 -1
- package/dist/{doctor-config-flow-iIzSEQxb.js → doctor-config-flow-BXmHd2bb.js} +10 -10
- package/dist/entry.js +1 -1
- package/dist/{exec-approvals-cli-BSgxsdMt.js → exec-approvals-cli-CZ-iTtNO.js} +13 -13
- package/dist/extensionAPI.js +1 -1
- package/dist/{fs-safe-CUjO1ca2.js → fs-safe-CTDvb1DF.js} +6 -6
- package/dist/{gateway-cli-SNaqDM7f.js → gateway-cli-C1zPKZ7B.js} +137 -121
- package/dist/{gateway-cli-G7fiXsQ6.js → gateway-cli-zbVm1MBQ.js} +32 -16
- package/dist/{gateway-rpc-5fREQe9Q.js → gateway-rpc-B1Wzoj99.js} +1 -1
- package/dist/{glass-ui-ws-CF0__vuO.js → glass-ui-ws-CvUFd4C6.js} +28 -9
- package/dist/{glass-ui-ws-he25wGFt.js → glass-ui-ws-D3tAmqKX.js} +104 -85
- package/dist/{health-q7706M36.js → health-DQEqLYg1.js} +1 -1
- package/dist/{health-en2N_Kqc.js → health-o847FIt1.js} +13 -13
- package/dist/{hooks-cli-ChQbBpyb.js → hooks-cli-D_UW9fc8.js} +2 -2
- package/dist/{hooks-cli-C4rVaLzZ.js → hooks-cli-sYjbF4I6.js} +77 -77
- package/dist/{image-CbyTdMd5.js → image-C3ugMkb5.js} +1 -1
- package/dist/{image-BWmcNF8N.js → image-lCS3o9xj.js} +3 -3
- package/dist/{image-ops-1OJMSAUX.js → image-ops-DYbDWaIA.js} +10 -10
- package/dist/index.js +73 -73
- package/dist/{inspect-CvbbCuoa.js → inspect-CNYyHVfH.js} +4 -4
- package/dist/{install-safe-path-D3Uz77u7.js → install-safe-path-D3mg1DMG.js} +11 -11
- package/dist/{installs-DQcRVF1U.js → installs-CYTVYWH_.js} +10 -10
- package/dist/{ir-DZam9q5M.js → ir-Dt4hOzxG.js} +6 -6
- package/dist/{lifecycle-core-C4HzGXA1.js → lifecycle-core-DxmxQdhS.js} +5 -5
- package/dist/llm-slug-generator.js +6 -6
- package/dist/{local-roots-aAFLQGkY.js → local-roots-BBeKX7PX.js} +2 -2
- package/dist/{login-DODfJ3Dn.js → login-CnjdNmGD.js} +3 -3
- package/dist/{login-qr-CBRxijIg.js → login-qr-DUf6CM0M.js} +5 -5
- package/dist/{logs-cli-CfGj-dOg.js → logs-cli-BVd6h2-Q.js} +7 -7
- package/dist/{manager-D4LJSRyZ.js → manager-C1CfGzZ2.js} +13 -13
- package/dist/{markdown-tables-CEbN0fEm.js → markdown-tables-ZwP14ydw.js} +1 -1
- package/dist/{memory-cli-DDumUksr.js → memory-cli-DhkRAIdT.js} +14 -14
- package/dist/{model-tWhwnFf8.js → model-CeeOcylL.js} +1 -1
- package/dist/{model-catalog-8Son0J4O.js → model-catalog-CvbwxWuC.js} +4 -4
- package/dist/{model-picker-CAm2Bftd.js → model-picker-C2MqloOs.js} +3 -3
- package/dist/{model-selection-CyFvYcRt.js → model-selection-X1oLh3CE.js} +9 -9
- package/dist/{models-DOTpfa7b.js → models-Zol34e73.js} +2 -2
- package/dist/{models-cli-MJAY_Wg4.js → models-cli-BzcEA9oa.js} +3 -3
- package/dist/{models-cli-CBl45f7R.js → models-cli-DnMUzr15.js} +72 -72
- package/dist/{models-config-CFFjJPe7.js → models-config-CEMioDUi.js} +7 -7
- package/dist/{node-cli-DnfDOh1d.js → node-cli-BVJid4L_.js} +28 -28
- package/dist/{node-service-CD47Qpf1.js → node-service-CXzMs782.js} +1 -1
- package/dist/{nodes-cli-Ci3oxw8k.js → nodes-cli-BN2Nslim.js} +10 -10
- package/dist/{nodes-screen-8Bq7DiSa.js → nodes-screen-Cd49cSPb.js} +4 -4
- package/dist/{npm-registry-spec-C0CPT3vr.js → npm-registry-spec-DchndI6P.js} +9 -9
- package/dist/{onboard-DQdGJ1lE.js → onboard-CSseK0Co.js} +13 -13
- package/dist/{onboard-Bx02XPb1.js → onboard-CxOT_xD4.js} +2 -2
- package/dist/{onboard-channels-Bp89ZT6Q.js → onboard-channels-CUlITipG.js} +5 -5
- package/dist/{onboard-channels-Ct2eNYUC.js → onboard-channels-D-lh_Vh1.js} +1 -1
- package/dist/{onboard-custom-XiomtQr7.js → onboard-custom-DTcLdtA9.js} +3 -3
- package/dist/{onboard-helpers-DFvWPFhU.js → onboard-helpers-CdPNw25E.js} +8 -8
- package/dist/{onboard-hooks-C3ok8kqB.js → onboard-hooks-C_2_jpWg.js} +1 -1
- package/dist/{onboard-remote-BURDxwoE.js → onboard-remote-v6QMnyJD.js} +1 -1
- package/dist/{onboard-skills-CbzgBT1W.js → onboard-skills-CQtkRP20.js} +4 -4
- package/dist/{onboarding-Dnn_0VTy.js → onboarding-DktESmTv.js} +3 -3
- package/dist/{onboarding-DxUcsrKV.js → onboarding-Dn5agNG_.js} +13 -13
- package/dist/{onboarding.finalize-1kzzMLFM.js → onboarding.finalize-Bm-1Kdnh.js} +6 -6
- package/dist/{onboarding.finalize-Dwr-jEtL.js → onboarding.finalize-CTIZ1zvV.js} +75 -75
- package/dist/{onboarding.gateway-config-DKwJ5bWd.js → onboarding.gateway-config-CwnQkyO0.js} +14 -14
- package/dist/{openai-model-default-WqcGxyFM.js → openai-model-default-4kBA1_78.js} +2 -2
- package/dist/{outbound-wnv03tb3.js → outbound-_Ir3M05f.js} +4 -4
- package/dist/{outbound-attachment-Bw-c5Cdp.js → outbound-attachment-Qfh5dlsg.js} +2 -2
- package/dist/{pairing-cli-DSM82gJG.js → pairing-cli-C8UXBJ_A.js} +8 -8
- package/dist/{pairing-labels-DyXoD1DS.js → pairing-labels-Dxb898X5.js} +1 -1
- package/dist/{pairing-store-CK726Dzq.js → pairing-store-B8ktu-6j.js} +2 -2
- package/dist/{pairing-token-CX3NN_qj.js → pairing-token-AV-MMfVE.js} +7 -7
- package/dist/{paths-BBm9fwuG.js → paths-CT6jsi4E.js} +1 -1
- package/dist/{pi-auth-json-zHckislA.js → pi-auth-json-FpfHyEcu.js} +5 -5
- package/dist/{pi-embedded-BfEg6Wwb.js → pi-embedded-CYDMb5q0.js} +79 -3
- package/dist/{pi-embedded-helpers-GaCyI2oH.js → pi-embedded-helpers-BgRcgoC9.js} +4 -4
- package/dist/{pi-embedded-helpers-BgdB5kvy.js → pi-embedded-helpers-Bs4eMaNo.js} +6 -6
- package/dist/{pi-tools.policy-DRWb_Cax.js → pi-tools.policy-BBxnqCay.js} +4 -4
- package/dist/{plugin-auto-enable-CP0nONRL.js → plugin-auto-enable-DwIrzVOA.js} +2 -2
- package/dist/{plugin-registry-BMFEJ4FA.js → plugin-registry-CJGPW1-k.js} +1 -1
- package/dist/{plugin-registry-wAQeBSeD.js → plugin-registry-d0oZLl6y.js} +3 -3
- package/dist/plugin-sdk/agents/pi-embedded-runner/long-task-prompt.d.ts +5 -0
- package/dist/plugin-sdk/{channel-web-Ba27v-Om.js → channel-web-Dm-CzA1O.js} +1 -1
- package/dist/plugin-sdk/index.js +2 -2
- package/dist/plugin-sdk/{reply-Bok_WQGW.js → reply-4HEU7aDS.js} +79 -3
- package/dist/plugin-sdk/{web-BoOAa0Xn.js → web-Cclb7FTq.js} +2 -2
- package/dist/{plugins-DKDeQZF0.js → plugins-BAyxWQSz.js} +2 -2
- package/dist/{plugins-cli-B36YKKla.js → plugins-cli-BWgjIJQL.js} +72 -72
- package/dist/{plugins-cli-DoJbbST7.js → plugins-cli-CL0tzkMo.js} +2 -2
- package/dist/{ports-BOmtxoTv.js → ports-OZQlocB7.js} +2 -2
- package/dist/{ports-DtW62rqS.js → ports-u9lWy2Jt.js} +1 -1
- package/dist/{program-4f7W2RMs.js → program-BHjH97Q_.js} +7 -7
- package/dist/{program-context-Y4KnAKNT.js → program-context-CXZHSZ4D.js} +39 -39
- package/dist/{prompt-select-styled-D0sLJ4TD.js → prompt-select-styled-BUFEoSlM.js} +38 -38
- package/dist/{prompt-select-styled-Dql_0SI0.js → prompt-select-styled-D8LXSUR7.js} +4 -4
- package/dist/{provider-auth-helpers-GSv3namf.js → provider-auth-helpers-BFHctF2f.js} +1 -1
- package/dist/{provider-auth-helpers-CJbHC_mv.js → provider-auth-helpers-CeAbh3lv.js} +5 -5
- package/dist/{push-apns-giplY7u-.js → push-apns-BylbQyP9.js} +1 -1
- package/dist/{push-apns-sxB8QxSj.js → push-apns-DqFdzIkc.js} +4 -4
- package/dist/{pw-ai-pQoxTh-a.js → pw-ai--LDjnyuN.js} +1 -1
- package/dist/{pw-ai-DQohWnzT.js → pw-ai-CfrnAHwA.js} +7 -7
- package/dist/{qmd-manager-CCUK1xoc.js → qmd-manager-DUNbG4Qr.js} +18 -18
- package/dist/{qr-cli-CejYwqsj.js → qr-cli-BZYa2gvF.js} +3 -3
- package/dist/{register.agent-_2tVQLMK.js → register.agent-DxAqRAt3.js} +6 -6
- package/dist/{register.agent-vd2BSsyE.js → register.agent-bzSGKS-l.js} +82 -82
- package/dist/register.configure-Boyfir72.js +148 -0
- package/dist/{register.configure-BVKwTrz8.js → register.configure-WS1nlSp8.js} +6 -6
- package/dist/{register.maintenance-XySU31jf.js → register.maintenance-B1QcUr38.js} +85 -85
- package/dist/{register.maintenance-BqYR2fop.js → register.maintenance-D_qMTrgD.js} +8 -8
- package/dist/{register.message-CCfWNWs3.js → register.message-CJF8gLAN.js} +64 -64
- package/dist/{register.message-DOyREWdG.js → register.message-zu3HGGff.js} +2 -2
- package/dist/{register.onboard-Dy_D_uMj.js → register.onboard-9dwNqCe6.js} +4 -4
- package/dist/{register.onboard-zmF-euog.js → register.onboard-CswoaT7q.js} +75 -75
- package/dist/{register.setup-DiGPa1Fw.js → register.setup-CvomtGGu.js} +78 -78
- package/dist/{register.setup-cE7gPp2m.js → register.setup-TcjUu6HC.js} +4 -4
- package/dist/{register.status-health-sessions-ksv1WnIs.js → register.status-health-sessions-CM1SX81r.js} +3 -3
- package/dist/{register.status-health-sessions-DWKL1rkz.js → register.status-health-sessions-CQMvbwr6.js} +76 -76
- package/dist/{register.subclis-Crt_IYK0.js → register.subclis-CVQASXaL.js} +9 -9
- package/dist/{replies-BMqtgBhh.js → replies-Dy92jzrz.js} +1 -1
- package/dist/{reply-CjYJHt_H.js → reply-CpNWtuU4.js} +216 -140
- package/dist/{reply-prefix-CE2YmmsD.js → reply-prefix-BLOOs1aW.js} +1 -1
- package/dist/{resolve-route-BMoTaVAH.js → resolve-route-BcnaXYvh.js} +2 -2
- package/dist/{routes-BAZTZNuQ.js → routes-CVwRcA9D.js} +8 -8
- package/dist/{rpc-Co5PQ3IJ.js → rpc-CZFfee1J.js} +1 -1
- package/dist/{run-main-bOlPbL7t.js → run-main-Dq6tfDry.js} +14 -14
- package/dist/{runner-DRv0uCK_.js → runner-BAVs-p6Z.js} +20 -20
- package/dist/{runner-B0AbN8wV.js → runner-cJ3m-bxK.js} +1 -1
- package/dist/{sandbox-B6N8cV4d.js → sandbox-HZ_uilsn.js} +18 -18
- package/dist/{sandbox-cli-DwzaNjIJ.js → sandbox-cli-wZtiyo8g.js} +20 -20
- package/dist/{security-cli-D5BWzqEJ.js → security-cli-BESmRIrl.js} +36 -36
- package/dist/{send-CQVnyJyF.js → send-BVBCh27_.js} +13 -13
- package/dist/{send-DVm0du0_.js → send-CXFTeD_J.js} +4 -4
- package/dist/{send-B3RdXvjC.js → send-DT-5buW5.js} +6 -6
- package/dist/{send-9SapUCg7.js → send-DsSI8z3F.js} +6 -6
- package/dist/{send-Bm4ULEzh.js → send-JWV62VbW.js} +6 -6
- package/dist/{server-context-CCBZN8a0.js → server-context-VlF1_hYj.js} +5 -5
- package/dist/{server-methods-VimYvcpY.js → server-methods-B0pdetGJ.js} +130 -64
- package/dist/{server-methods-CiwWwj6K.js → server-methods-IBEaQXPX.js} +177 -111
- package/dist/{server-node-events-DYC45lKC.js → server-node-events-BACmfyjo.js} +64 -64
- package/dist/{server-node-events-CHmLiFNV.js → server-node-events-CyDj7Txd.js} +2 -2
- package/dist/{service-osK70kTZ.js → service-D80PyJxB.js} +15 -15
- package/dist/{session-DsJGtM7g.js → session-6Qyc4cBQ.js} +2 -2
- package/dist/{session-dirs-Dgz7kkUM.js → session-dirs-DPzjjra2.js} +2 -2
- package/dist/{sessions-Cpgnq0pA.js → sessions-jTAGYjWl.js} +13 -13
- package/dist/{shared-DnmJ0ABB.js → shared-BV7WhIkY.js} +1 -1
- package/dist/{shared-73T9fyuK.js → shared-BfhtOZAz.js} +3 -3
- package/dist/{skill-commands-Cxw-jNxU.js → skill-commands-ZXbEITKi.js} +5 -5
- package/dist/{skill-scanner-hMtQbWPV.js → skill-scanner-w3DJvw1Q.js} +5 -5
- package/dist/{skills-6jdJQ5ZL.js → skills-DqQUtOph.js} +4 -4
- package/dist/{skills-cli-DXkx4vNV.js → skills-cli-D3lePXkf.js} +7 -7
- package/dist/{skills-install-CWVdJkLn.js → skills-install-HGYidhrv.js} +3 -3
- package/dist/{skills-status-C3ptXwnh.js → skills-status-Cjsh8we0.js} +1 -1
- package/dist/{sqlite-Dx3J_aSE.js → sqlite-BV5ILFtC.js} +12 -12
- package/dist/{status-DxhtJtzE.js → status-BJtbD-cG.js} +2 -2
- package/dist/{status-Dt_MXoNa.js → status-DUeTrQSz.js} +1 -1
- package/dist/{status-CA5wJHMj.js → status-DzHL-eVu.js} +3 -3
- package/dist/{status-DEpM69Pd.js → status-nzJEZmNT.js} +25 -25
- package/dist/{status.update-CG0ciGaf.js → status.update-TlYwuzTa.js} +3 -3
- package/dist/{store-r1DJSDq-.js → store-DvtcmOKj.js} +5 -5
- package/dist/{subagent-registry-BPwn3Qm7.js → subagent-registry-CzS4CfnV.js} +79 -3
- package/dist/{symi-root-CrGJbkzf.js → symi-root-MF6_6SCS.js} +2 -2
- package/dist/{system-cli-DFZNGx0i.js → system-cli-C2yhGP4C.js} +7 -7
- package/dist/{systemd-DT6SbCim.js → systemd-CevHlgD4.js} +5 -5
- package/dist/{systemd-hints-xYZbFny_.js → systemd-hints-DmgRnw1L.js} +6 -6
- package/dist/{systemd-linger-DCskIKcx.js → systemd-linger-ScxQ1_H4.js} +1 -1
- package/dist/{tables-BEzT0Da4.js → tables-C38rzF6E.js} +1 -1
- package/dist/{target-errors-7AvoVa10.js → target-errors-CCz79CmV.js} +4 -4
- package/dist/{tool-images-DvUBlqjX.js → tool-images-B-pqX3nX.js} +1 -1
- package/dist/{tui-DjPsMdL6.js → tui-D2MOx3Kx.js} +7 -7
- package/dist/{tui-cli-pWD_NrUR.js → tui-cli-B2ii7u23.js} +28 -28
- package/dist/{unified-runner-CVkyzT1I.js → unified-runner-BtO3UQSd.js} +93 -17
- package/dist/{update-Ya0e-JnM.js → update-Don6XTH9.js} +3 -3
- package/dist/{update-check-7EzEjSzb.js → update-check-DCo5RtKp.js} +5 -5
- package/dist/{update-cli-Dh_dfprI.js → update-cli-DRODEMSI.js} +8 -8
- package/dist/{update-cli-Dv4c5Gup.js → update-cli-gKtjyXlD.js} +95 -95
- package/dist/{update-runner-MMFI1UZ0.js → update-runner-AsKAxe31.js} +15 -15
- package/dist/{update-runner-CG_kbbGR.js → update-runner-JcdOHr71.js} +1 -1
- package/dist/{web-DCBOD-Vj.js → web-BIzWZFiN.js} +1 -1
- package/dist/{web-BUc-ts5b.js → web-DGo16lWn.js} +6 -6
- package/dist/{web-CJk-lv93.js → web-DKwOxo8E.js} +1 -1
- package/dist/web-sefqR11J.js +110 -0
- package/dist/{webhooks-cli-BRxe4uCg.js → webhooks-cli-DbnQ2BVE.js} +4 -4
- package/dist/{whatsapp-actions-ChO_shrk.js → whatsapp-actions-CqXxtCoj.js} +15 -15
- package/dist/{with-timeout-CtVdu_1U.js → with-timeout-Cm5EhxG_.js} +1 -1
- package/dist/{workspace-dirs-GpkFi6Kw.js → workspace-dirs-DKu48umx.js} +1 -1
- package/dist/{wsl-q8spwrME.js → wsl-xNOi_Ch8.js} +2 -2
- package/extensions/bluebubbles/package.json +1 -1
- package/extensions/copilot-proxy/package.json +1 -1
- package/extensions/diagnostics-otel/package.json +1 -1
- package/extensions/discord/package.json +1 -1
- package/extensions/feishu/package.json +1 -1
- package/extensions/google-antigravity-auth/package.json +1 -1
- package/extensions/google-gemini-cli-auth/package.json +1 -1
- package/extensions/googlechat/package.json +1 -1
- package/extensions/imessage/package.json +1 -1
- package/extensions/irc/package.json +1 -1
- package/extensions/learning-loop/package.json +1 -1
- package/extensions/line/package.json +1 -1
- package/extensions/llm-task/package.json +1 -1
- package/extensions/matrix/CHANGELOG.md +12 -0
- package/extensions/matrix/package.json +1 -1
- package/extensions/mattermost/package.json +1 -1
- package/extensions/memory-core/package.json +1 -1
- package/extensions/memory-lancedb/package.json +1 -1
- package/extensions/minimax-portal-auth/package.json +1 -1
- package/extensions/msteams/CHANGELOG.md +12 -0
- package/extensions/msteams/package.json +1 -1
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nostr/CHANGELOG.md +12 -0
- package/extensions/nostr/package.json +1 -1
- package/extensions/open-prose/package.json +1 -1
- package/extensions/outlook/package.json +1 -1
- package/extensions/pipeline/package.json +1 -1
- package/extensions/signal/package.json +1 -1
- package/extensions/slack/package.json +1 -1
- package/extensions/telegram/package.json +1 -1
- package/extensions/tlon/package.json +1 -1
- package/extensions/twitch/CHANGELOG.md +12 -0
- package/extensions/twitch/package.json +1 -1
- package/extensions/voice-call/CHANGELOG.md +12 -0
- package/extensions/voice-call/package.json +1 -1
- package/extensions/whatsapp/package.json +1 -1
- package/extensions/zalo/CHANGELOG.md +12 -0
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalouser/CHANGELOG.md +12 -0
- package/extensions/zalouser/package.json +1 -1
- package/package.json +1 -1
- package/skills/long-task/SKILL.md +57 -0
- package/skills/long-task/scripts/detach-task.sh +135 -0
- package/dist/register.configure-D-XV6_Nb.js +0 -148
- package/dist/web-CfVd3Mhp.js +0 -110
|
@@ -3,102 +3,102 @@ import { g as resolveStateDir, r as STATE_DIR, u as resolveGatewayPort, y as res
|
|
|
3
3
|
import { B as theme, C as sleep$1, D as isPlainObject, E as truncateUtf16Safe, F as shouldLogVerbose, J as normalizeLogLevel, L as warn, M as logVerbose, O as danger, S as shortenHomePath, V as getChildLogger, X as resolvePreferredSymiTmpDir, d as isRecord$1, i as clampInt, l as escapeRegExp, m as normalizeE164, t as CONFIG_DIR, w as sliceUtf16Safe, x as shortenHomeInString, y as resolveUserPath } from "./utils-B-0b9bGM.js";
|
|
4
4
|
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-EAliFiVK.js";
|
|
5
5
|
import { C as resolveThreadParentSessionKey, S as parseAgentSessionKey, _ as getSubagentDepth, b as isCronSessionKey, c as normalizeMainKey, d as sanitizeAgentId, h as normalizeAccountId$2, l as resolveAgentIdFromSessionKey, m as DEFAULT_ACCOUNT_ID, o as classifySessionKeyShape, r as buildAgentMainSessionKey, s as normalizeAgentId, t as DEFAULT_AGENT_ID, u as resolveThreadSessionKeys, v as isAcpSessionKey, x as isSubagentSessionKey, y as isCronRunSessionKey } from "./session-key-DCt45XZa.js";
|
|
6
|
-
import { t as resolveSymiPackageRoot } from "./symi-root-
|
|
6
|
+
import { t as resolveSymiPackageRoot } from "./symi-root-MF6_6SCS.js";
|
|
7
7
|
import { C as createInternalHookEvent, T as triggerInternalHook, _ as clearPluginCommands, b as listPluginCommands, c as normalizeAnyChannelId, f as requireActivePluginRegistry, g as normalizePluginHttpPath, h as createPluginRegistry, l as normalizeChannelId, n as CHAT_CHANNEL_ORDER, p as setActivePluginRegistry, r as DEFAULT_CHAT_CHANNEL, v as executePluginCommand, x as matchPluginCommand, y as getPluginCommandSpecs } from "./registry-Cja8eT7G.js";
|
|
8
8
|
import { d as createNonExitingRuntime, f as defaultRuntime, t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
|
|
9
9
|
import { a as logError, i as logDebug, n as runExec, o as logInfo, r as spawnWithFallback, s as logWarn, t as runCommandWithTimeout } from "./exec-CWkblSrI.js";
|
|
10
|
-
import { C as ensureAgentWorkspace, E as loadWorkspaceBootstrapFiles, a as resolveAgentModelFallbacksOverride, c as resolveAgentWorkspaceDir, d as resolveSessionAgentId, f as resolveSessionAgentIds, g as DEFAULT_IDENTITY_FILENAME, h as DEFAULT_BOOTSTRAP_FILENAME, i as resolveAgentDir, l as resolveDefaultAgentId, m as DEFAULT_AGENT_WORKSPACE_DIR, n as listAgentIds, o as resolveAgentModelPrimary, r as resolveAgentConfig, s as resolveAgentSkillsFilter, u as resolveEffectiveModelFallbacks, w as filterBootstrapFilesForSession } from "./agent-scope-
|
|
11
|
-
import { At as ensureAuthProfileStore, Bt as normalizeSecretInput, Et as markAuthProfileGood, Ft as resolveSymiAgentDir, G as getCustomProviderApiKey, Gt as DEFAULT_MODEL, H as OLLAMA_NATIVE_BASE_URL, It as withFileLock, K as requireApiKey, Kt as DEFAULT_PROVIDER, Pt as resolveAuthStorePathForDisplay, Q as getShellPathFromLoginShell, Tt as listProfilesForProvider, U as createOllamaStreamFn, Vt as resolveAuthProfileDisplayLabel, W as getApiKeyForModel, Wt as DEFAULT_CONTEXT_TOKENS, X as resolveModelAuthMode, Y as resolveEnvApiKey, c as normalizeModelRef$2, et as resolveShellEnvFallbackTimeoutMs, ft as resolveAuthProfileOrder, g as resolveModelRefFromString, gt as markAuthProfileUsed, ht as markAuthProfileFailure, i as findNormalizedProviderValue, l as normalizeProviderId, m as resolveDefaultModelForAgent, mt as isProfileInCooldown, n as buildConfiguredAllowlistKeys, o as isCliProvider, p as resolveConfiguredModelRef, pt as getSoonestCooldownExpiry, q as resolveApiKeyForProvider, r as buildModelAliasIndex, s as modelKey, t as buildAllowedModelSet, u as parseModelRef, v as resolveSubagentSpawnModelSelection, vt as resolveApiKeyForProfile, wt as dedupeProfileIds, y as resolveThinkingDefault } from "./model-selection-
|
|
10
|
+
import { C as ensureAgentWorkspace, E as loadWorkspaceBootstrapFiles, a as resolveAgentModelFallbacksOverride, c as resolveAgentWorkspaceDir, d as resolveSessionAgentId, f as resolveSessionAgentIds, g as DEFAULT_IDENTITY_FILENAME, h as DEFAULT_BOOTSTRAP_FILENAME, i as resolveAgentDir, l as resolveDefaultAgentId, m as DEFAULT_AGENT_WORKSPACE_DIR, n as listAgentIds, o as resolveAgentModelPrimary, r as resolveAgentConfig, s as resolveAgentSkillsFilter, u as resolveEffectiveModelFallbacks, w as filterBootstrapFilesForSession } from "./agent-scope-BRwEc2pG.js";
|
|
11
|
+
import { At as ensureAuthProfileStore, Bt as normalizeSecretInput, Et as markAuthProfileGood, Ft as resolveSymiAgentDir, G as getCustomProviderApiKey, Gt as DEFAULT_MODEL, H as OLLAMA_NATIVE_BASE_URL, It as withFileLock, K as requireApiKey, Kt as DEFAULT_PROVIDER, Pt as resolveAuthStorePathForDisplay, Q as getShellPathFromLoginShell, Tt as listProfilesForProvider, U as createOllamaStreamFn, Vt as resolveAuthProfileDisplayLabel, W as getApiKeyForModel, Wt as DEFAULT_CONTEXT_TOKENS, X as resolveModelAuthMode, Y as resolveEnvApiKey, c as normalizeModelRef$2, et as resolveShellEnvFallbackTimeoutMs, ft as resolveAuthProfileOrder, g as resolveModelRefFromString, gt as markAuthProfileUsed, ht as markAuthProfileFailure, i as findNormalizedProviderValue, l as normalizeProviderId, m as resolveDefaultModelForAgent, mt as isProfileInCooldown, n as buildConfiguredAllowlistKeys, o as isCliProvider, p as resolveConfiguredModelRef, pt as getSoonestCooldownExpiry, q as resolveApiKeyForProvider, r as buildModelAliasIndex, s as modelKey, t as buildAllowedModelSet, u as parseModelRef, v as resolveSubagentSpawnModelSelection, vt as resolveApiKeyForProfile, wt as dedupeProfileIds, y as resolveThinkingDefault } from "./model-selection-X1oLh3CE.js";
|
|
12
12
|
import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-DAu1a6BX.js";
|
|
13
13
|
import { t as formatCliCommand } from "./command-format-COaS-S7B.js";
|
|
14
14
|
import { t as parseBooleanValue$1 } from "./boolean-BsqeuxE6.js";
|
|
15
15
|
import { t as isTruthyEnvValue } from "./env-DPCHYPeH.js";
|
|
16
16
|
import { a as isInternalMessageChannel, c as listDeliverableMessageChannels, d as resolveMessageChannel, h as GATEWAY_CLIENT_NAMES, i as isGatewayMessageChannel, 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-aT-I_DTX.js";
|
|
17
|
-
import { $ as parseDiscordTarget, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as createDiscordRestClient, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as createDiscordClient, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordSystemLocation, a as removeReactionDiscord, at as normalizeDiscordAllowList, b as sendWebhookMessageDiscord, bt as fetchChannelPermissionsDiscord, c as formatDiscordComponentEventText, ct as resolveDiscordChannelConfigWithFallback, d as parseDiscordModalCustomId, dt as resolveDiscordOwnerAllowFrom, et as resolveDiscordChannelId, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordShouldRequireMention, g as sendMessageDiscord, gt as formatDiscordUserTag, h as resolveDiscordModalEntry, ht as formatDiscordReactionEmoji, i as removeOwnReactionsDiscord, it as isDiscordGroupAllowedByPolicy, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as resolveDiscordGuildEntry, m as resolveDiscordComponentEntry, mt as shouldEmitDiscordReactionNotification, n as fetchReactionsDiscord, nt as listDiscordDirectoryPeersLive, o as sendDiscordComponentMessage, ot as normalizeDiscordSlug, p as readDiscordComponentSpec, pt as resolveGroupDmAllow, q as deleteChannelDiscord, r as reactMessageDiscord, rt as allowListMatches$1, s as createDiscordFormModal, st as resolveDiscordAllowListMatch, tt as listDiscordDirectoryGroupsLive, u as parseDiscordComponentCustomIdForCarbon, ut as resolveDiscordMemberAccessState, v as sendStickerDiscord, vt as resolveTimestampMs, w as fetchMessageDiscord, wt as chunkDiscordTextWithMode, x as createThreadDiscord, xt as hasAnyGuildPermissionDiscord, y as sendVoiceMessageDiscord, yt as fetchDiscord, z as listGuildChannelsDiscord } from "./send-
|
|
18
|
-
import { A as parseConfigPath, B as resolveAgentMaxConcurrent, C as parseDurationMs, D as setConfigOverride, E as resetConfigOverrides, H as VERSION, M as unsetConfigValueAtPath, O as unsetConfigOverride, T as getConfigOverrides, _ as isInboundPathAllowed, b as resolveIMessageRemoteAttachmentRoots, c as resolveConfigSnapshotHash, h as resolveTelegramCustomCommands, i as loadConfig, j as setConfigValueAtPath, k as getConfigValueAtPath, l as writeConfigFile, m as normalizeTelegramCommandName, o as readConfigFileSnapshot, p as TELEGRAM_COMMAND_NAME_PATTERN, u as validateConfigObjectWithPlugins, w as validateJsonSchemaValue, x as normalizeScpRemoteHost, y as resolveIMessageAttachmentRoots, z as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH } from "./config-
|
|
17
|
+
import { $ as parseDiscordTarget, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as createDiscordRestClient, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as createDiscordClient, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordSystemLocation, a as removeReactionDiscord, at as normalizeDiscordAllowList, b as sendWebhookMessageDiscord, bt as fetchChannelPermissionsDiscord, c as formatDiscordComponentEventText, ct as resolveDiscordChannelConfigWithFallback, d as parseDiscordModalCustomId, dt as resolveDiscordOwnerAllowFrom, et as resolveDiscordChannelId, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordShouldRequireMention, g as sendMessageDiscord, gt as formatDiscordUserTag, h as resolveDiscordModalEntry, ht as formatDiscordReactionEmoji, i as removeOwnReactionsDiscord, it as isDiscordGroupAllowedByPolicy, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as resolveDiscordGuildEntry, m as resolveDiscordComponentEntry, mt as shouldEmitDiscordReactionNotification, n as fetchReactionsDiscord, nt as listDiscordDirectoryPeersLive, o as sendDiscordComponentMessage, ot as normalizeDiscordSlug, p as readDiscordComponentSpec, pt as resolveGroupDmAllow, q as deleteChannelDiscord, r as reactMessageDiscord, rt as allowListMatches$1, s as createDiscordFormModal, st as resolveDiscordAllowListMatch, tt as listDiscordDirectoryGroupsLive, u as parseDiscordComponentCustomIdForCarbon, ut as resolveDiscordMemberAccessState, v as sendStickerDiscord, vt as resolveTimestampMs, w as fetchMessageDiscord, wt as chunkDiscordTextWithMode, x as createThreadDiscord, xt as hasAnyGuildPermissionDiscord, y as sendVoiceMessageDiscord, yt as fetchDiscord, z as listGuildChannelsDiscord } from "./send-BVBCh27_.js";
|
|
18
|
+
import { A as parseConfigPath, B as resolveAgentMaxConcurrent, C as parseDurationMs, D as setConfigOverride, E as resetConfigOverrides, H as VERSION, M as unsetConfigValueAtPath, O as unsetConfigOverride, T as getConfigOverrides, _ as isInboundPathAllowed, b as resolveIMessageRemoteAttachmentRoots, c as resolveConfigSnapshotHash, h as resolveTelegramCustomCommands, i as loadConfig, j as setConfigValueAtPath, k as getConfigValueAtPath, l as writeConfigFile, m as normalizeTelegramCommandName, o as readConfigFileSnapshot, p as TELEGRAM_COMMAND_NAME_PATTERN, u as validateConfigObjectWithPlugins, w as validateJsonSchemaValue, x as normalizeScpRemoteHost, y as resolveIMessageAttachmentRoots, z as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH } from "./config-tNauHpdq.js";
|
|
19
19
|
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-C4BxOMWX.js";
|
|
20
20
|
import { a as isPathInsideWithRealpath } from "./legacy-names-Be3msDZo.js";
|
|
21
21
|
import { t as normalizeChatType } from "./chat-type-DyovJwCt.js";
|
|
22
22
|
import { n as resolveConversationLabel } from "./conversation-label-Bn5j3lUT.js";
|
|
23
23
|
import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-CmmmT8IP.js";
|
|
24
|
-
import { _ as applyTemplate, a as resolveMediaAttachmentLocalRoots, c as resolveAttachmentKind, d as registerUnhandledRejectionHandler, f as resolveConcurrency, g as CLI_OUTPUT_MAX_BUFFER, h as resolveMediaUnderstandingScope, i as resolveAutoImageModel, l as buildRandomTempFilePath, m as normalizeMediaUnderstandingChatType, n as createMediaAttachmentCache, o as runCapability, p as resolveTimeoutMs, r as normalizeMediaAttachments, t as buildProviderRegistry } from "./runner-
|
|
25
|
-
import { _ as stripThinkingTagsFromText, a as decodeDataUrl, b as minimaxUnderstandImage, c as extractAssistantThinking, d as formatReasoningMessage, f as inferToolMetaFromArgs, g as stripMinimaxToolCallXml, h as stripDowngradedToolCallText, i as coerceImageModelConfig, l as extractThinkingFromTaggedStream, m as promoteThinkingTagsToBlocks, o as resolveProviderVisionModelFromConfig, p as isAssistantMessage, r as coerceImageAssistantText, s as extractAssistantText$1, u as extractThinkingFromTaggedText, v as stripReasoningTagsFromText, y as extractTextFromChatContent } from "./image-
|
|
26
|
-
import { t as ensureSymiModelsJson } from "./models-config-
|
|
24
|
+
import { _ as applyTemplate, a as resolveMediaAttachmentLocalRoots, c as resolveAttachmentKind, d as registerUnhandledRejectionHandler, f as resolveConcurrency, g as CLI_OUTPUT_MAX_BUFFER, h as resolveMediaUnderstandingScope, i as resolveAutoImageModel, l as buildRandomTempFilePath, m as normalizeMediaUnderstandingChatType, n as createMediaAttachmentCache, o as runCapability, p as resolveTimeoutMs, r as normalizeMediaAttachments, t as buildProviderRegistry } from "./runner-BAVs-p6Z.js";
|
|
25
|
+
import { _ as stripThinkingTagsFromText, a as decodeDataUrl, b as minimaxUnderstandImage, c as extractAssistantThinking, d as formatReasoningMessage, f as inferToolMetaFromArgs, g as stripMinimaxToolCallXml, h as stripDowngradedToolCallText, i as coerceImageModelConfig, l as extractThinkingFromTaggedStream, m as promoteThinkingTagsToBlocks, o as resolveProviderVisionModelFromConfig, p as isAssistantMessage, r as coerceImageAssistantText, s as extractAssistantText$1, u as extractThinkingFromTaggedText, v as stripReasoningTagsFromText, y as extractTextFromChatContent } from "./image-lCS3o9xj.js";
|
|
26
|
+
import { t as ensureSymiModelsJson } from "./models-config-CEMioDUi.js";
|
|
27
27
|
import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-4uUnLc3n.js";
|
|
28
|
-
import { A as isTransientHttpError, C as isContextOverflowError, D as isRateLimitAssistantError, E as isLikelyContextOverflowError, F as ensureSessionHeader, I as resolveBootstrapMaxChars, L as resolveBootstrapTotalMaxChars, M as parseImageSizeError, N as sanitizeUserFacingText, O as isRawApiErrorPayload, P as buildBootstrapContextFiles, R as sanitizeGoogleTurnOrdering, S as isCompactionFailureError, T as isFailoverErrorMessage, _ as formatRawAssistantErrorForUi, a as isMessagingToolDuplicateNormalized, b as isBillingAssistantError, c as extractToolCallsFromAssistant, d as isAntigravityClaude, f as isGoogleModelApi, g as formatBillingErrorMessage, h as formatAssistantErrorText, j as parseImageDimensionError, k as isTimeoutErrorMessage, l as extractToolResultId, m as classifyFailoverReason, n as validateGeminiTurns, o as normalizeTextForComparison, p as BILLING_ERROR_USER_MESSAGE, r as pickFallbackThinkingLevel, s as sanitizeSessionMessagesImages, t as validateAnthropicTurns, u as downgradeOpenAIReasoningBlocks, v as getApiErrorPayloadFingerprint, w as isFailoverAssistantError, x as isCloudCodeAssistFormatError, y as isAuthAssistantError } from "./pi-embedded-helpers-
|
|
29
|
-
import { C as stripPluginOnlyAllowlist, S as resolveToolProfilePolicy, T as matchesAnyGlobPattern, _ as collectExplicitAllowlist, a as ensureSandboxWorkspaceForSession, b as mergeAlsoAllowPolicy, c as resolveSandboxRuntimeStatus, d as getBridgeAuthForPort, f as resolveSandboxConfigForAgent, g as buildPluginToolGroups, h as applyOwnerOnlyToolPolicy, o as resolveSandboxContext, v as expandPolicyWithPluginGroups, w as compileGlobPatterns, x as normalizeToolName } from "./sandbox-
|
|
30
|
-
import { T as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-
|
|
31
|
-
import { i as resolveBrowserConfig, m as resolveBrowserControlAuth } from "./server-context-
|
|
32
|
-
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-
|
|
28
|
+
import { A as isTransientHttpError, C as isContextOverflowError, D as isRateLimitAssistantError, E as isLikelyContextOverflowError, F as ensureSessionHeader, I as resolveBootstrapMaxChars, L as resolveBootstrapTotalMaxChars, M as parseImageSizeError, N as sanitizeUserFacingText, O as isRawApiErrorPayload, P as buildBootstrapContextFiles, R as sanitizeGoogleTurnOrdering, S as isCompactionFailureError, T as isFailoverErrorMessage, _ as formatRawAssistantErrorForUi, a as isMessagingToolDuplicateNormalized, b as isBillingAssistantError, c as extractToolCallsFromAssistant, d as isAntigravityClaude, f as isGoogleModelApi, g as formatBillingErrorMessage, h as formatAssistantErrorText, j as parseImageDimensionError, k as isTimeoutErrorMessage, l as extractToolResultId, m as classifyFailoverReason, n as validateGeminiTurns, o as normalizeTextForComparison, p as BILLING_ERROR_USER_MESSAGE, r as pickFallbackThinkingLevel, s as sanitizeSessionMessagesImages, t as validateAnthropicTurns, u as downgradeOpenAIReasoningBlocks, v as getApiErrorPayloadFingerprint, w as isFailoverAssistantError, x as isCloudCodeAssistFormatError, y as isAuthAssistantError } from "./pi-embedded-helpers-Bs4eMaNo.js";
|
|
29
|
+
import { C as stripPluginOnlyAllowlist, S as resolveToolProfilePolicy, T as matchesAnyGlobPattern, _ as collectExplicitAllowlist, a as ensureSandboxWorkspaceForSession, b as mergeAlsoAllowPolicy, c as resolveSandboxRuntimeStatus, d as getBridgeAuthForPort, f as resolveSandboxConfigForAgent, g as buildPluginToolGroups, h as applyOwnerOnlyToolPolicy, o as resolveSandboxContext, v as expandPolicyWithPluginGroups, w as compileGlobPatterns, x as normalizeToolName } from "./sandbox-HZ_uilsn.js";
|
|
30
|
+
import { T as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-CSJzpT9Z.js";
|
|
31
|
+
import { i as resolveBrowserConfig, m as resolveBrowserControlAuth } from "./server-context-VlF1_hYj.js";
|
|
32
|
+
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-DqQUtOph.js";
|
|
33
33
|
import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-BF3TeRH2.js";
|
|
34
|
-
import { i as resolveExistingPathsWithinRoot, r as DEFAULT_UPLOAD_DIR } from "./paths-
|
|
34
|
+
import { i as resolveExistingPathsWithinRoot, r as DEFAULT_UPLOAD_DIR } from "./paths-CT6jsi4E.js";
|
|
35
35
|
import { i as isBlockedHostnameOrIp, o as normalizeHostname, t as SsrFBlockedError } from "./ssrf-BCYMnxkM.js";
|
|
36
|
-
import { c as detectMime, d as imageMimeFromFormat, f as isAudioFileName, g as MAX_IMAGE_BYTES, i as getImageMetadata, l as extensionForMime, p as isGifMedia, s as resizeToJpeg, v as mediaKindFromMime } from "./image-ops-
|
|
37
|
-
import { n as getMediaDir, r as saveMediaBuffer } from "./store-
|
|
38
|
-
import { B as resolveAgentMainSessionKey, C as capArrayByJsonBytes, D as resolveSessionTranscriptCandidates, E as readSessionTitleFieldsFromTranscript, F as resolveSessionResetType, H as resolveMainSessionKey, I as resolveThreadFlag, J as acquireSessionWriteLock, K as buildGroupDisplayName, L as DEFAULT_RESET_TRIGGERS, M as evaluateSessionFreshness, N as resolveChannelResetConfig, P as resolveSessionResetPolicy, R as resolveFreshSessionTotalTokens, S as archiveSessionTranscripts, V as resolveExplicitAgentSessionKey, W as deriveSessionMetaPatch, X as resolveSessionLockMaxHoldFromTimeout, _ as mergeDeliveryContext, a as resolveAndPersistSessionFile, b as normalizeAccountId$3, c as recordSessionMetaFromInbound, d as updateSessionStore, f as updateSessionStoreEntry, g as deliveryContextKey, h as deliveryContextFromSession, j as resolveSessionKey, m as resolveCacheTtlMs$1, n as parseSessionThreadInfo, 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, z as canonicalizeMainSessionAlias } from "./sessions-
|
|
39
|
-
import { a as resolveChannelGroupRequireMention, c as normalizeHyphenSlug, i as resolveChannelGroupPolicy, l as normalizeStringEntries, n as listChannelDocks, r as normalizeSignalMessagingTarget, s as normalizeAtHashSlug, t as getChannelDock, u as normalizeStringEntriesLower } from "./dock-
|
|
40
|
-
import { _ as listEnabledDiscordAccounts, a as isWhatsAppGroupJid, c as listEnabledTelegramAccounts, d as resolveTelegramToken, f as resolveSlackAccount, g as createDiscordActionGate, h as resolveSlackBotToken, l as listTelegramAccountIds, m as resolveSlackAppToken, n as listChannelPlugins, o as normalizeWhatsAppTarget, r as normalizeChannelId$1, s as createTelegramActionGate, t as getChannelPlugin, u as resolveTelegramAccount, v as resolveDiscordAccount, y as normalizeDiscordToken } from "./plugins-
|
|
41
|
-
import { a as logWebSelfId, i as getWebAuthAgeMs, m as webAuthExists, n as resolveWhatsAppAccount, o as logoutWeb, u as readWebSelfId } from "./accounts-
|
|
42
|
-
import { t as resolveIMessageAccount } from "./accounts-
|
|
43
|
-
import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-
|
|
44
|
-
import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i as createSlackWebClient, l as parseSlackTarget, o as parseSlackBlocksInput, s as validateSlackBlocksArray, t as sendMessageSlack, u as resolveSlackChannelId } from "./send-
|
|
36
|
+
import { c as detectMime, d as imageMimeFromFormat, f as isAudioFileName, g as MAX_IMAGE_BYTES, i as getImageMetadata, l as extensionForMime, p as isGifMedia, s as resizeToJpeg, v as mediaKindFromMime } from "./image-ops-DYbDWaIA.js";
|
|
37
|
+
import { n as getMediaDir, r as saveMediaBuffer } from "./store-DvtcmOKj.js";
|
|
38
|
+
import { B as resolveAgentMainSessionKey, C as capArrayByJsonBytes, D as resolveSessionTranscriptCandidates, E as readSessionTitleFieldsFromTranscript, F as resolveSessionResetType, H as resolveMainSessionKey, I as resolveThreadFlag, J as acquireSessionWriteLock, K as buildGroupDisplayName, L as DEFAULT_RESET_TRIGGERS, M as evaluateSessionFreshness, N as resolveChannelResetConfig, P as resolveSessionResetPolicy, R as resolveFreshSessionTotalTokens, S as archiveSessionTranscripts, V as resolveExplicitAgentSessionKey, W as deriveSessionMetaPatch, X as resolveSessionLockMaxHoldFromTimeout, _ as mergeDeliveryContext, a as resolveAndPersistSessionFile, b as normalizeAccountId$3, c as recordSessionMetaFromInbound, d as updateSessionStore, f as updateSessionStoreEntry, g as deliveryContextKey, h as deliveryContextFromSession, j as resolveSessionKey, m as resolveCacheTtlMs$1, n as parseSessionThreadInfo, 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, z as canonicalizeMainSessionAlias } from "./sessions-jTAGYjWl.js";
|
|
39
|
+
import { a as resolveChannelGroupRequireMention, c as normalizeHyphenSlug, i as resolveChannelGroupPolicy, l as normalizeStringEntries, n as listChannelDocks, r as normalizeSignalMessagingTarget, s as normalizeAtHashSlug, t as getChannelDock, u as normalizeStringEntriesLower } from "./dock-BYiRZSgZ.js";
|
|
40
|
+
import { _ as listEnabledDiscordAccounts, a as isWhatsAppGroupJid, c as listEnabledTelegramAccounts, d as resolveTelegramToken, f as resolveSlackAccount, g as createDiscordActionGate, h as resolveSlackBotToken, l as listTelegramAccountIds, m as resolveSlackAppToken, n as listChannelPlugins, o as normalizeWhatsAppTarget, r as normalizeChannelId$1, s as createTelegramActionGate, t as getChannelPlugin, u as resolveTelegramAccount, v as resolveDiscordAccount, y as normalizeDiscordToken } from "./plugins-BAyxWQSz.js";
|
|
41
|
+
import { a as logWebSelfId, i as getWebAuthAgeMs, m as webAuthExists, n as resolveWhatsAppAccount, o as logoutWeb, u as readWebSelfId } from "./accounts-Cd816n6l.js";
|
|
42
|
+
import { t as resolveIMessageAccount } from "./accounts-CokRskCl.js";
|
|
43
|
+
import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-mN_EcgxC.js";
|
|
44
|
+
import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i as createSlackWebClient, l as parseSlackTarget, o as parseSlackBlocksInput, s as validateSlackBlocksArray, t as sendMessageSlack, u as resolveSlackChannelId } from "./send-CXFTeD_J.js";
|
|
45
45
|
import { c as resolveStorePath, i as resolveSessionTranscriptPath, n as resolveSessionFilePath, r as resolveSessionFilePathOptions, t as resolveDefaultSessionStorePath } from "./paths-CyhzMxFA.js";
|
|
46
46
|
import { i as normalizeInputProvenance, n as applyInputProvenanceToUserMessage, r as hasInterSessionUserProvenance } from "./input-provenance-BzbXHcaD.js";
|
|
47
47
|
import { t as emitSessionTranscriptUpdate } from "./transcript-events-DdnTeoR1.js";
|
|
48
|
-
import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-
|
|
48
|
+
import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-B-pqX3nX.js";
|
|
49
49
|
import { n as resolveToolDisplay } from "./tool-display-D8N3rsYt.js";
|
|
50
50
|
import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-Db3da8yR.js";
|
|
51
51
|
import { t as fetchWithSsrFGuard } from "./fetch-guard-DOPkVbh3.js";
|
|
52
|
-
import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, t as getAgentScopedMediaLocalRoots } from "./local-roots-
|
|
53
|
-
import { v as runTasksWithConcurrency } from "./sqlite-
|
|
54
|
-
import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-
|
|
52
|
+
import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, t as getAgentScopedMediaLocalRoots } from "./local-roots-BBeKX7PX.js";
|
|
53
|
+
import { v as runTasksWithConcurrency } from "./sqlite-BV5ILFtC.js";
|
|
54
|
+
import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-CvbwxWuC.js";
|
|
55
55
|
import { a as isSilentReplyText, i as isSilentReplyPrefixText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-BuceUQDl.js";
|
|
56
|
-
import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$4 } from "./with-timeout-
|
|
57
|
-
import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeChannelTargetInput, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as buildTargetResolverSignature, h as throwIfAborted, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as normalizeTargetForProvider, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-
|
|
56
|
+
import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$4 } from "./with-timeout-Cm5EhxG_.js";
|
|
57
|
+
import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeChannelTargetInput, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as buildTargetResolverSignature, h as throwIfAborted, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as normalizeTargetForProvider, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-BYdNAEqj.js";
|
|
58
58
|
import { a as logMessageProcessed, c as logWebhookError, d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, i as logLaneEnqueue, l as logWebhookProcessed, m as isDiagnosticsEnabled, o as logMessageQueued, p as emitDiagnosticEvent, r as logLaneDequeue, s as logSessionStateChange, t as diag, u as logWebhookReceived } from "./diagnostic-CH0skkp6.js";
|
|
59
59
|
import { r as getDiagnosticSessionState } from "./diagnostic-session-state-CUslJyKP.js";
|
|
60
|
-
import { A as hasBotMention, B as resolveSenderAllowMatch, C as buildTelegramGroupPeerId, D as describeReplyTarget, E as buildTypingThreadParams, F as resolveTelegramReplyId, G as toLocationContext, H as isSenderIdAllowed, I as resolveTelegramStreamMode, J as parseTelegramTarget, K as withTelegramApiErrorLogging, L as resolveTelegramThreadSpec, M as resolveTelegramForumThreadId, N as resolveTelegramGroupAllowFromContext, O as expandTextLinks, P as resolveTelegramMediaPlaceholder, R as isSenderAllowed$1, S as buildTelegramGroupFrom, T as buildTelegramThreadParams, U as mergeAllowFromSources, V as firstDefined$1, W as formatLocationText, Y as resolveTelegramTargetChatType, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildSenderLabel, c as sendStickerTelegram, d as wasSentByBot, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as normalizeForwardedContext, k as extractTelegramLocation, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as isVoiceCompatibleAudio, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramParentPeer, x as buildSenderName, y as buildGroupLabel, z as normalizeAllowFromWithStore$1 } from "./send-
|
|
61
|
-
import { a as buildModelAliasLines, n as resolveModel } from "./model-
|
|
62
|
-
import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-
|
|
63
|
-
import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-
|
|
64
|
-
import { i as resolveMemorySearchConfig } from "./manager-
|
|
60
|
+
import { A as hasBotMention, B as resolveSenderAllowMatch, C as buildTelegramGroupPeerId, D as describeReplyTarget, E as buildTypingThreadParams, F as resolveTelegramReplyId, G as toLocationContext, H as isSenderIdAllowed, I as resolveTelegramStreamMode, J as parseTelegramTarget, K as withTelegramApiErrorLogging, L as resolveTelegramThreadSpec, M as resolveTelegramForumThreadId, N as resolveTelegramGroupAllowFromContext, O as expandTextLinks, P as resolveTelegramMediaPlaceholder, R as isSenderAllowed$1, S as buildTelegramGroupFrom, T as buildTelegramThreadParams, U as mergeAllowFromSources, V as firstDefined$1, W as formatLocationText, Y as resolveTelegramTargetChatType, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildSenderLabel, c as sendStickerTelegram, d as wasSentByBot, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as normalizeForwardedContext, k as extractTelegramLocation, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as isVoiceCompatibleAudio, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramParentPeer, x as buildSenderName, y as buildGroupLabel, z as normalizeAllowFromWithStore$1 } from "./send-DT-5buW5.js";
|
|
61
|
+
import { a as buildModelAliasLines, n as resolveModel } from "./model-CeeOcylL.js";
|
|
62
|
+
import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-BLOOs1aW.js";
|
|
63
|
+
import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-DhkRAIdT.js";
|
|
64
|
+
import { i as resolveMemorySearchConfig } from "./manager-C1CfGzZ2.js";
|
|
65
65
|
import { n as retryAsync } from "./retry-BoS4e4X_.js";
|
|
66
|
-
import { c as imageResultFromFile, d as readNumberParam, f as readReactionParams, h as readStringParam, l as jsonResult, m as readStringOrNumberParam, n as missingTargetError, o as createActionGate, p as readStringArrayParam, r as unknownTargetError, s as imageResult, t as ambiguousTargetError, u as parseAvailableTags } from "./target-errors-
|
|
66
|
+
import { c as imageResultFromFile, d as readNumberParam, f as readReactionParams, h as readStringParam, l as jsonResult, m as readStringOrNumberParam, n as missingTargetError, o as createActionGate, p as readStringArrayParam, r as unknownTargetError, s as imageResult, t as ambiguousTargetError, u as parseAvailableTags } from "./target-errors-CCz79CmV.js";
|
|
67
67
|
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-1dhPX1NK.js";
|
|
68
|
-
import { n as resolveMarkdownTableMode } from "./markdown-tables-
|
|
69
|
-
import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-
|
|
70
|
-
import { a as resolveNativeSkillsEnabled, i as resolveNativeCommandsEnabled, n as isNativeCommandsExplicitlyDisabled, r as isRestartEnabled, t as isCommandFlagEnabled } from "./commands-
|
|
71
|
-
import { a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, i as listChatCommands, l as parseCommandArgs, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices } from "./commands-registry-
|
|
72
|
-
import { Nt as SESSION_LABEL_MAX_LENGTH, t as GatewayClient } from "./client-
|
|
73
|
-
import { a as randomIdempotencyKey, d as resolveLeastPrivilegeOperatorScopesForMethod, n as callGateway, r as callGatewayLeastPrivilege, t as buildGatewayConnectionDetails } from "./call-
|
|
68
|
+
import { n as resolveMarkdownTableMode } from "./markdown-tables-ZwP14ydw.js";
|
|
69
|
+
import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-Dt4hOzxG.js";
|
|
70
|
+
import { a as resolveNativeSkillsEnabled, i as resolveNativeCommandsEnabled, n as isNativeCommandsExplicitlyDisabled, r as isRestartEnabled, t as isCommandFlagEnabled } from "./commands-CtocZ4Lg.js";
|
|
71
|
+
import { a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, i as listChatCommands, l as parseCommandArgs, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices } from "./commands-registry-BZ0ZSQpM.js";
|
|
72
|
+
import { Nt as SESSION_LABEL_MAX_LENGTH, t as GatewayClient } from "./client-Bj_vTpri.js";
|
|
73
|
+
import { a as randomIdempotencyKey, d as resolveLeastPrivilegeOperatorScopesForMethod, n as callGateway, r as callGatewayLeastPrivilege, t as buildGatewayConnectionDetails } from "./call-tmHtVCkn.js";
|
|
74
74
|
import { n as formatTimeAgo } from "./format-relative-BXoxEQVN.js";
|
|
75
75
|
import { n as normalizePollInput } from "./polls-DhH5YkzN.js";
|
|
76
76
|
import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-BOiuJS3t.js";
|
|
77
77
|
import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-DTNGXEzX.js";
|
|
78
|
-
import { t as convertMarkdownTables } from "./tables-
|
|
79
|
-
import { c as signalRpcRequest, l as streamSignalEvents, n as sendReadReceiptSignal, o as resolveSignalRpcContext, r as sendTypingSignal, s as signalCheck, t as sendMessageSignal } from "./send-
|
|
80
|
-
import { i as readChannelAllowFromStore, l as listPairingChannels, o as removeChannelAllowFromStoreEntry, s as upsertChannelPairingRequest, t as addChannelAllowFromStoreEntry } from "./pairing-store-
|
|
78
|
+
import { t as convertMarkdownTables } from "./tables-C38rzF6E.js";
|
|
79
|
+
import { c as signalRpcRequest, l as streamSignalEvents, n as sendReadReceiptSignal, o as resolveSignalRpcContext, r as sendTypingSignal, s as signalCheck, t as sendMessageSignal } from "./send-JWV62VbW.js";
|
|
80
|
+
import { i as readChannelAllowFromStore, l as listPairingChannels, o as removeChannelAllowFromStoreEntry, s as upsertChannelPairingRequest, t as addChannelAllowFromStoreEntry } from "./pairing-store-B8ktu-6j.js";
|
|
81
81
|
import { t as makeProxyFetch } from "./proxy-DU7W9XSc.js";
|
|
82
82
|
import { i as formatDurationSeconds, r as formatDurationPrecise, t as formatDurationCompact$1 } from "./format-duration-D0B0Uo-I.js";
|
|
83
|
-
import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-
|
|
84
|
-
import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-
|
|
85
|
-
import { b as ensureSkillsWatcher, i as resolveSkillCommandInvocation, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, r as listSkillCommandsForWorkspace, t as listReservedChatSlashCommandNames, x as getSkillsSnapshotVersion } from "./skill-commands-
|
|
86
|
-
import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-
|
|
83
|
+
import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-BcnaXYvh.js";
|
|
84
|
+
import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-Dy92jzrz.js";
|
|
85
|
+
import { b as ensureSkillsWatcher, i as resolveSkillCommandInvocation, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, r as listSkillCommandsForWorkspace, t as listReservedChatSlashCommandNames, x as getSkillsSnapshotVersion } from "./skill-commands-ZXbEITKi.js";
|
|
86
|
+
import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-FpfHyEcu.js";
|
|
87
87
|
import { c as hasNonzeroUsage, l as normalizeUsage, n as loadCostUsageSummary, o as derivePromptTokens, r as loadSessionCostSummary, s as deriveSessionTotalTokens } from "./session-cost-usage-BXAI7CNH.js";
|
|
88
|
-
import { a as normalizeIMessageHandle, c as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, i as isAllowedIMessageSender, o as parseIMessageTarget, r as formatIMessageChatTarget, s as createIMessageRpcClient, t as sendMessageIMessage } from "./send-
|
|
89
|
-
import { r as detectBinary } from "./onboard-helpers-
|
|
90
|
-
import { t as resolvePairingIdLabel } from "./pairing-labels-
|
|
88
|
+
import { a as normalizeIMessageHandle, c as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, i as isAllowedIMessageSender, o as parseIMessageTarget, r as formatIMessageChatTarget, s as createIMessageRpcClient, t as sendMessageIMessage } from "./send-DsSI8z3F.js";
|
|
89
|
+
import { r as detectBinary } from "./onboard-helpers-CdPNw25E.js";
|
|
90
|
+
import { t as resolvePairingIdLabel } from "./pairing-labels-Dxb898X5.js";
|
|
91
91
|
import { i as resolveModelCostConfig, n as formatTokenCount$2, r as formatUsd, t as estimateUsageCost } from "./usage-format-BgUx3Bm4.js";
|
|
92
92
|
import { t as getActiveWebListener } from "./active-listener-SKkHHqlN.js";
|
|
93
93
|
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-DXM2pQYL.js";
|
|
94
|
-
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-
|
|
94
|
+
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-Cd49cSPb.js";
|
|
95
95
|
import { n as parseNodeList, r as parsePairingList, t as resolveNodeIdFromCandidates } from "./node-match-CdUiymRU.js";
|
|
96
96
|
import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-CaTOIqVn.js";
|
|
97
|
-
import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-
|
|
98
|
-
import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-
|
|
97
|
+
import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-BBxnqCay.js";
|
|
98
|
+
import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-BBnhN7aZ.js";
|
|
99
99
|
import { i as parseAbsoluteTimeMs, r as resolveDefaultCronStaggerMs, t as normalizeCronStaggerMs } from "./stagger-CvFURHzt.js";
|
|
100
100
|
import { c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName } from "./constants-CafH8-8D.js";
|
|
101
|
-
import { n as resolveMessageChannelSelection, t as listConfiguredMessageChannels } from "./channel-selection-
|
|
101
|
+
import { n as resolveMessageChannelSelection, t as listConfiguredMessageChannels } from "./channel-selection-DaJDux-Q.js";
|
|
102
102
|
import { t as parseTimeoutMs } from "./parse-timeout-2S5vp0-9.js";
|
|
103
103
|
import { createRequire } from "node:module";
|
|
104
104
|
import { fileURLToPath } from "node:url";
|
|
@@ -106,7 +106,7 @@ import fs, { existsSync, mkdirSync, mkdtempSync, readFileSync, renameSync, rmSyn
|
|
|
106
106
|
import os, { homedir } from "node:os";
|
|
107
107
|
import path from "node:path";
|
|
108
108
|
import JSON5 from "json5";
|
|
109
|
-
import
|
|
109
|
+
import fsPromises from "node:fs/promises";
|
|
110
110
|
import { execFileSync, spawn, spawnSync } from "node:child_process";
|
|
111
111
|
import { inspect } from "node:util";
|
|
112
112
|
import crypto, { createHash, createHmac, randomBytes, randomUUID } from "node:crypto";
|
|
@@ -2894,7 +2894,7 @@ async function createModelSelectionState(params) {
|
|
|
2894
2894
|
}
|
|
2895
2895
|
}
|
|
2896
2896
|
if (sessionEntry && sessionStore && sessionKey && sessionEntry.authProfileOverride) {
|
|
2897
|
-
const { ensureAuthProfileStore } = await import("./model-selection-
|
|
2897
|
+
const { ensureAuthProfileStore } = await import("./model-selection-X1oLh3CE.js").then((n) => n.dt);
|
|
2898
2898
|
const profile = ensureAuthProfileStore(void 0, { allowKeychainPrompt: false }).profiles[sessionEntry.authProfileOverride];
|
|
2899
2899
|
const providerKey = normalizeProviderId(provider);
|
|
2900
2900
|
if (!profile || normalizeProviderId(profile.provider) !== providerKey) await clearSessionAuthProfileOverride({
|
|
@@ -10416,7 +10416,7 @@ async function routeReply(params) {
|
|
|
10416
10416
|
const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
|
|
10417
10417
|
const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
|
|
10418
10418
|
try {
|
|
10419
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
10419
|
+
const { deliverOutboundPayloads } = await import("./deliver-BYdNAEqj.js").then((n) => n.n);
|
|
10420
10420
|
return {
|
|
10421
10421
|
ok: true,
|
|
10422
10422
|
messageId: (await deliverOutboundPayloads({
|
|
@@ -12965,8 +12965,8 @@ async function describeStickerImage(params) {
|
|
|
12965
12965
|
const { provider, model } = resolved;
|
|
12966
12966
|
logVerbose(`telegram: describing sticker with ${provider}/${model}`);
|
|
12967
12967
|
try {
|
|
12968
|
-
const buffer = await
|
|
12969
|
-
const { describeImageWithModel } = await import("./image-
|
|
12968
|
+
const buffer = await fsPromises.readFile(imagePath);
|
|
12969
|
+
const { describeImageWithModel } = await import("./image-lCS3o9xj.js").then((n) => n.n);
|
|
12970
12970
|
return (await describeImageWithModel({
|
|
12971
12971
|
buffer,
|
|
12972
12972
|
fileName: "sticker.webp",
|
|
@@ -13389,7 +13389,7 @@ function createWhatsAppLoginTool() {
|
|
|
13389
13389
|
force: Type.Optional(Type.Boolean())
|
|
13390
13390
|
}),
|
|
13391
13391
|
execute: async (_toolCallId, args) => {
|
|
13392
|
-
const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-
|
|
13392
|
+
const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-DUf6CM0M.js");
|
|
13393
13393
|
if ((args?.action ?? "start") === "wait") {
|
|
13394
13394
|
const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
|
|
13395
13395
|
return {
|
|
@@ -15605,7 +15605,7 @@ async function preflightDiscordMessage(params) {
|
|
|
15605
15605
|
let preflightTranscript;
|
|
15606
15606
|
const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
|
|
15607
15607
|
if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
|
|
15608
|
-
const { transcribeFirstAudio } = await import("./audio-preflight-
|
|
15608
|
+
const { transcribeFirstAudio } = await import("./audio-preflight-mj-z_vQ6.js");
|
|
15609
15609
|
const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
|
|
15610
15610
|
if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
|
|
15611
15611
|
ctx: {
|
|
@@ -21611,18 +21611,18 @@ function appendImagePathsToPrompt(prompt, paths) {
|
|
|
21611
21611
|
return `${trimmed}${trimmed ? "\n\n" : ""}${paths.join("\n")}`;
|
|
21612
21612
|
}
|
|
21613
21613
|
async function writeCliImages(images) {
|
|
21614
|
-
const tempDir = await
|
|
21614
|
+
const tempDir = await fsPromises.mkdtemp(path.join(os.tmpdir(), "symi-cli-images-"));
|
|
21615
21615
|
const paths = [];
|
|
21616
21616
|
for (let i = 0; i < images.length; i += 1) {
|
|
21617
21617
|
const image = images[i];
|
|
21618
21618
|
const ext = resolveImageExtension(image.mimeType);
|
|
21619
21619
|
const filePath = path.join(tempDir, `image-${i + 1}.${ext}`);
|
|
21620
21620
|
const buffer = Buffer.from(image.data, "base64");
|
|
21621
|
-
await
|
|
21621
|
+
await fsPromises.writeFile(filePath, buffer, { mode: 384 });
|
|
21622
21622
|
paths.push(filePath);
|
|
21623
21623
|
}
|
|
21624
21624
|
const cleanup = async () => {
|
|
21625
|
-
await
|
|
21625
|
+
await fsPromises.rm(tempDir, {
|
|
21626
21626
|
recursive: true,
|
|
21627
21627
|
force: true
|
|
21628
21628
|
});
|
|
@@ -22745,12 +22745,12 @@ function getQueuedFileWriter(writers, filePath) {
|
|
|
22745
22745
|
const existing = writers.get(filePath);
|
|
22746
22746
|
if (existing) return existing;
|
|
22747
22747
|
const dir = path.dirname(filePath);
|
|
22748
|
-
const ready =
|
|
22748
|
+
const ready = fsPromises.mkdir(dir, { recursive: true }).catch(() => void 0);
|
|
22749
22749
|
let queue = Promise.resolve();
|
|
22750
22750
|
const writer = {
|
|
22751
22751
|
filePath,
|
|
22752
22752
|
write: (line) => {
|
|
22753
|
-
queue = queue.then(() => ready).then(() =>
|
|
22753
|
+
queue = queue.then(() => ready).then(() => fsPromises.appendFile(filePath, line, "utf8")).catch(() => void 0);
|
|
22754
22754
|
}
|
|
22755
22755
|
};
|
|
22756
22756
|
writers.set(filePath, writer);
|
|
@@ -26166,7 +26166,7 @@ function repairToolUseResultPairing(messages) {
|
|
|
26166
26166
|
*/
|
|
26167
26167
|
async function readSessionFile(sessionFile) {
|
|
26168
26168
|
try {
|
|
26169
|
-
return await
|
|
26169
|
+
return await fsPromises.readFile(sessionFile, "utf-8");
|
|
26170
26170
|
} catch {
|
|
26171
26171
|
return null;
|
|
26172
26172
|
}
|
|
@@ -26175,8 +26175,8 @@ async function writeAtomically(sessionFile, text) {
|
|
|
26175
26175
|
const dir = path.dirname(sessionFile);
|
|
26176
26176
|
const base = path.basename(sessionFile);
|
|
26177
26177
|
const tmp = path.join(dir, `.${base}.prune-${process.pid}-${Date.now()}.tmp`);
|
|
26178
|
-
await
|
|
26179
|
-
await
|
|
26178
|
+
await fsPromises.writeFile(tmp, text, "utf-8");
|
|
26179
|
+
await fsPromises.rename(tmp, sessionFile);
|
|
26180
26180
|
}
|
|
26181
26181
|
/**
|
|
26182
26182
|
* Remove empty assistant JSONL entries from the session file.
|
|
@@ -26244,7 +26244,7 @@ async function repairSessionFileIfNeeded(params) {
|
|
|
26244
26244
|
};
|
|
26245
26245
|
let content;
|
|
26246
26246
|
try {
|
|
26247
|
-
content = await
|
|
26247
|
+
content = await fsPromises.readFile(sessionFile, "utf-8");
|
|
26248
26248
|
} catch (err) {
|
|
26249
26249
|
if (err?.code === "ENOENT") return {
|
|
26250
26250
|
repaired: false,
|
|
@@ -26292,15 +26292,15 @@ async function repairSessionFileIfNeeded(params) {
|
|
|
26292
26292
|
const backupPath = `${sessionFile}.bak-${process.pid}-${Date.now()}`;
|
|
26293
26293
|
const tmpPath = `${sessionFile}.repair-${process.pid}-${Date.now()}.tmp`;
|
|
26294
26294
|
try {
|
|
26295
|
-
const stat = await
|
|
26296
|
-
await
|
|
26297
|
-
if (stat) await
|
|
26298
|
-
await
|
|
26299
|
-
if (stat) await
|
|
26300
|
-
await
|
|
26295
|
+
const stat = await fsPromises.stat(sessionFile).catch(() => null);
|
|
26296
|
+
await fsPromises.writeFile(backupPath, content, "utf-8");
|
|
26297
|
+
if (stat) await fsPromises.chmod(backupPath, stat.mode);
|
|
26298
|
+
await fsPromises.writeFile(tmpPath, cleaned, "utf-8");
|
|
26299
|
+
if (stat) await fsPromises.chmod(tmpPath, stat.mode);
|
|
26300
|
+
await fsPromises.rename(tmpPath, sessionFile);
|
|
26301
26301
|
} catch (err) {
|
|
26302
26302
|
try {
|
|
26303
|
-
await
|
|
26303
|
+
await fsPromises.unlink(tmpPath);
|
|
26304
26304
|
} catch (cleanupErr) {
|
|
26305
26305
|
params.warn?.(`session file repair cleanup failed: ${cleanupErr instanceof Error ? cleanupErr.message : "unknown error"} (${path.basename(tmpPath)})`);
|
|
26306
26306
|
}
|
|
@@ -26711,7 +26711,7 @@ function isInPoisonRange(version) {
|
|
|
26711
26711
|
*/
|
|
26712
26712
|
async function checkSessionPoison(sessionFile) {
|
|
26713
26713
|
try {
|
|
26714
|
-
const firstLine = (await
|
|
26714
|
+
const firstLine = (await fsPromises.readFile(sessionFile, "utf-8")).split("\n")[0];
|
|
26715
26715
|
if (!firstLine) return null;
|
|
26716
26716
|
const header = JSON.parse(firstLine);
|
|
26717
26717
|
if (header.type !== "session") return null;
|
|
@@ -26729,7 +26729,7 @@ async function checkSessionPoison(sessionFile) {
|
|
|
26729
26729
|
*/
|
|
26730
26730
|
async function archivePoisonedSession(sessionFile) {
|
|
26731
26731
|
const archiveName = `${sessionFile}.archived-poison.${(/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-")}`;
|
|
26732
|
-
await
|
|
26732
|
+
await fsPromises.rename(sessionFile, archiveName);
|
|
26733
26733
|
return archiveName;
|
|
26734
26734
|
}
|
|
26735
26735
|
/**
|
|
@@ -26738,14 +26738,14 @@ async function archivePoisonedSession(sessionFile) {
|
|
|
26738
26738
|
*/
|
|
26739
26739
|
async function stampSessionVersion(sessionFile) {
|
|
26740
26740
|
try {
|
|
26741
|
-
const lines = (await
|
|
26741
|
+
const lines = (await fsPromises.readFile(sessionFile, "utf-8")).split("\n");
|
|
26742
26742
|
if (lines.length === 0) return;
|
|
26743
26743
|
const header = JSON.parse(lines[0]);
|
|
26744
26744
|
if (header.type !== "session") return;
|
|
26745
26745
|
if (header.symiVersion === VERSION) return;
|
|
26746
26746
|
header.symiVersion = VERSION;
|
|
26747
26747
|
lines[0] = JSON.stringify(header);
|
|
26748
|
-
await
|
|
26748
|
+
await fsPromises.writeFile(sessionFile, lines.join("\n"), "utf-8");
|
|
26749
26749
|
} catch {}
|
|
26750
26750
|
}
|
|
26751
26751
|
/**
|
|
@@ -28830,6 +28830,77 @@ function getHistoryLimitFromSessionKey(sessionKey, config) {
|
|
|
28830
28830
|
*/
|
|
28831
28831
|
const getDmHistoryLimitFromSessionKey = getHistoryLimitFromSessionKey;
|
|
28832
28832
|
|
|
28833
|
+
//#endregion
|
|
28834
|
+
//#region src/agents/pi-embedded-runner/long-task-prompt.ts
|
|
28835
|
+
const SCRIPT_REL_PATH = "skills/long-task/scripts/detach-task.sh";
|
|
28836
|
+
let cachedScriptPath;
|
|
28837
|
+
function isExecutable(candidatePath) {
|
|
28838
|
+
try {
|
|
28839
|
+
fs.accessSync(candidatePath, fs.constants.X_OK);
|
|
28840
|
+
return true;
|
|
28841
|
+
} catch {
|
|
28842
|
+
return false;
|
|
28843
|
+
}
|
|
28844
|
+
}
|
|
28845
|
+
/**
|
|
28846
|
+
* Ensure the script is present AND has the exec bit. npm usually preserves
|
|
28847
|
+
* mode 100755 on pack/install, but a subset of filesystems (FAT32, some
|
|
28848
|
+
* container mounts) silently drop it. If the bit is missing, we try to set
|
|
28849
|
+
* it; on failure we return null rather than emit a prompt that would break
|
|
28850
|
+
* when the model tries to exec the script.
|
|
28851
|
+
*/
|
|
28852
|
+
async function resolveDetachScriptPath(params) {
|
|
28853
|
+
if (cachedScriptPath !== void 0) return cachedScriptPath;
|
|
28854
|
+
const packageRoot = await resolveSymiPackageRoot({
|
|
28855
|
+
cwd: params.cwd,
|
|
28856
|
+
argv1: params.argv1,
|
|
28857
|
+
moduleUrl: params.moduleUrl
|
|
28858
|
+
});
|
|
28859
|
+
if (!packageRoot) {
|
|
28860
|
+
cachedScriptPath = null;
|
|
28861
|
+
return null;
|
|
28862
|
+
}
|
|
28863
|
+
const candidate = path.join(packageRoot, SCRIPT_REL_PATH);
|
|
28864
|
+
if (!fs.existsSync(candidate)) {
|
|
28865
|
+
cachedScriptPath = null;
|
|
28866
|
+
return null;
|
|
28867
|
+
}
|
|
28868
|
+
if (!isExecutable(candidate)) try {
|
|
28869
|
+
fs.chmodSync(candidate, 493);
|
|
28870
|
+
} catch {
|
|
28871
|
+
cachedScriptPath = null;
|
|
28872
|
+
return null;
|
|
28873
|
+
}
|
|
28874
|
+
cachedScriptPath = candidate;
|
|
28875
|
+
return cachedScriptPath;
|
|
28876
|
+
}
|
|
28877
|
+
async function buildLongTaskPromptSuffix(params) {
|
|
28878
|
+
const scriptPath = await resolveDetachScriptPath(params);
|
|
28879
|
+
if (!scriptPath) return "";
|
|
28880
|
+
return "\n\n" + [
|
|
28881
|
+
"LONG-RUNNING TASK PATTERN:",
|
|
28882
|
+
"- Applies ONLY when a command is expected to take longer than about 15 minutes (deep nmap scans of /24 or larger, full brute-force sweeps, long builds, exhaustive enumeration). For anything shorter, use the normal exec tool — detaching short tasks creates pointless cron noise.",
|
|
28883
|
+
"- Foreground-blocking the exec tool for the full duration will fail: the agent turn will hit its timeout and the process will be SIGTERMed mid-run. Detach instead.",
|
|
28884
|
+
`- Detach pattern: exec \`${scriptPath} <task-id> <workdir> <command...>\`.`,
|
|
28885
|
+
" • task-id: alphanumeric + dot/dash/underscore, 1–60 chars, must not start with '.' or '-'.",
|
|
28886
|
+
" • workdir: absolute path you own (e.g. the agent workspace).",
|
|
28887
|
+
" • Script spawns under setsid+nohup+disown, writes task-<id>.{pid,cmd,started,log,status} files.",
|
|
28888
|
+
"- Immediately after detaching, respond to the user with: task id, PID, log file path, your ETA estimate, and that a cron monitor has been scheduled.",
|
|
28889
|
+
"- Register a cron monitor using the `cron` tool with action=add. Required fields:",
|
|
28890
|
+
" • schedule: { kind: \"interval\", ms: 180000 } (every 3 minutes; minimum 60000)",
|
|
28891
|
+
" • payload: { kind: \"agent\", sessionTarget: \"isolated\", text: <job prompt> }",
|
|
28892
|
+
" The job prompt must literally contain the task-id, PID, log path, and status path so the future turn has enough context without re-deriving them.",
|
|
28893
|
+
"- Safe status read (inside the monitor turn):",
|
|
28894
|
+
" `status=$(cat \"<workdir>/task-<id>.status\" 2>/dev/null || echo missing)`",
|
|
28895
|
+
" Possible values: `running pid=<N> started=<ISO>`, `complete rc=<N> ended=<ISO>`, `aborted rc=<N> signal=<TERM|INT|HUP> ended=<ISO>`, or `missing` if the file was cleaned up.",
|
|
28896
|
+
"- Monitor responsibilities each tick:",
|
|
28897
|
+
" • If status begins with `running`: tail -n 20 <log>, post a one-sentence progress line.",
|
|
28898
|
+
" • If status begins with `complete`: post a final summary with rc and tail, then call cron action=remove on this job id.",
|
|
28899
|
+
" • If status begins with `aborted`: post a failure summary with signal and tail, then call cron action=remove.",
|
|
28900
|
+
" • Never leave stale monitors running after the task finishes."
|
|
28901
|
+
].join("\n");
|
|
28902
|
+
}
|
|
28903
|
+
|
|
28833
28904
|
//#endregion
|
|
28834
28905
|
//#region src/agents/pi-embedded-runner/runs.ts
|
|
28835
28906
|
const ACTIVE_EMBEDDED_RUNS = /* @__PURE__ */ new Map();
|
|
@@ -28991,7 +29062,7 @@ async function prewarmSessionFile(sessionFile) {
|
|
|
28991
29062
|
if (!isSessionManagerCacheEnabled()) return;
|
|
28992
29063
|
if (isSessionManagerCached(sessionFile)) return;
|
|
28993
29064
|
try {
|
|
28994
|
-
const handle = await
|
|
29065
|
+
const handle = await fsPromises.open(sessionFile, "r");
|
|
28995
29066
|
try {
|
|
28996
29067
|
const buffer = Buffer$1.alloc(4096);
|
|
28997
29068
|
await handle.read(buffer, 0, buffer.length, 0);
|
|
@@ -29025,7 +29096,7 @@ async function prepareSessionManagerForRun(params) {
|
|
|
29025
29096
|
return;
|
|
29026
29097
|
}
|
|
29027
29098
|
if (params.hadSessionFile && header && !hasAssistant) {
|
|
29028
|
-
await
|
|
29099
|
+
await fsPromises.writeFile(params.sessionFile, "", "utf-8");
|
|
29029
29100
|
sm.fileEntries = [header];
|
|
29030
29101
|
sm.byId?.clear?.();
|
|
29031
29102
|
sm.labelsById?.clear?.();
|
|
@@ -29670,7 +29741,7 @@ async function runEmbeddedAttempt(params) {
|
|
|
29670
29741
|
const prevCwd = process.cwd();
|
|
29671
29742
|
const runAbortController = new AbortController();
|
|
29672
29743
|
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"}`);
|
|
29673
|
-
await
|
|
29744
|
+
await fsPromises.mkdir(resolvedWorkspace, { recursive: true });
|
|
29674
29745
|
const sandboxSessionKey = params.sessionKey?.trim() || params.sessionId;
|
|
29675
29746
|
const sandbox = await resolveSandboxContext({
|
|
29676
29747
|
config: params.config,
|
|
@@ -29678,7 +29749,7 @@ async function runEmbeddedAttempt(params) {
|
|
|
29678
29749
|
workspaceDir: resolvedWorkspace
|
|
29679
29750
|
});
|
|
29680
29751
|
const effectiveWorkspace = sandbox?.enabled ? sandbox.workspaceAccess === "rw" ? resolvedWorkspace : sandbox.workspaceDir : resolvedWorkspace;
|
|
29681
|
-
await
|
|
29752
|
+
await fsPromises.mkdir(effectiveWorkspace, { recursive: true });
|
|
29682
29753
|
let restoreSkillEnv;
|
|
29683
29754
|
process.chdir(effectiveWorkspace);
|
|
29684
29755
|
try {
|
|
@@ -29895,7 +29966,12 @@ async function runEmbeddedAttempt(params) {
|
|
|
29895
29966
|
const profileModelKey = params.modelId ?? "";
|
|
29896
29967
|
const modelProfile = resolveModelProfile(profileModelKey, params.config?.models?.profiles);
|
|
29897
29968
|
log$7.debug(`[profile] resolved: modelId=${profileModelKey} → profile=${modelProfile.label} validateToolArgs=${modelProfile.filters?.validateToolArgs ?? false}`);
|
|
29898
|
-
const
|
|
29969
|
+
const profilePromptSuffix = modelProfile.promptAdditions.length > 0 ? "\n\n" + modelProfile.promptAdditions.join("\n") : "";
|
|
29970
|
+
const systemPromptText = createSystemPromptOverride(appendPrompt + await buildLongTaskPromptSuffix({
|
|
29971
|
+
argv1: process.argv[1],
|
|
29972
|
+
cwd: process.cwd(),
|
|
29973
|
+
moduleUrl: import.meta.url
|
|
29974
|
+
}) + profilePromptSuffix)();
|
|
29899
29975
|
const sessionLock = await acquireSessionWriteLock({
|
|
29900
29976
|
sessionFile: params.sessionFile,
|
|
29901
29977
|
maxHoldMs: resolveSessionLockMaxHoldFromTimeout({ timeoutMs: params.timeoutMs })
|
|
@@ -29908,7 +29984,7 @@ async function runEmbeddedAttempt(params) {
|
|
|
29908
29984
|
sessionFile: params.sessionFile,
|
|
29909
29985
|
warn: (message) => log$7.warn(message)
|
|
29910
29986
|
});
|
|
29911
|
-
const hadSessionFile = await
|
|
29987
|
+
const hadSessionFile = await fsPromises.stat(params.sessionFile).then(() => true).catch(() => false);
|
|
29912
29988
|
const transcriptPolicy = resolveTranscriptPolicy({
|
|
29913
29989
|
modelApi: params.model?.api,
|
|
29914
29990
|
provider: params.provider,
|
|
@@ -30980,7 +31056,7 @@ async function runEmbeddedPiAgent(params) {
|
|
|
30980
31056
|
}
|
|
30981
31057
|
runLoopIterations += 1;
|
|
30982
31058
|
attemptedThinking.add(thinkLevel);
|
|
30983
|
-
await
|
|
31059
|
+
await fsPromises.mkdir(resolvedWorkspace, { recursive: true });
|
|
30984
31060
|
const prompt = provider === "anthropic" ? scrubAnthropicRefusalMagic(params.prompt) : params.prompt;
|
|
30985
31061
|
const attempt = await runEmbeddedAttempt({
|
|
30986
31062
|
sessionId: params.sessionId,
|
|
@@ -31704,27 +31780,27 @@ async function runAgentTurn(params) {
|
|
|
31704
31780
|
function createDefaultDeps() {
|
|
31705
31781
|
return {
|
|
31706
31782
|
sendMessageWhatsApp: async (...args) => {
|
|
31707
|
-
const { sendMessageWhatsApp } = await import("./web-
|
|
31783
|
+
const { sendMessageWhatsApp } = await import("./web-sefqR11J.js");
|
|
31708
31784
|
return await sendMessageWhatsApp(...args);
|
|
31709
31785
|
},
|
|
31710
31786
|
sendMessageTelegram: async (...args) => {
|
|
31711
|
-
const { sendMessageTelegram } = await import("./send-
|
|
31787
|
+
const { sendMessageTelegram } = await import("./send-DT-5buW5.js").then((n) => n.l);
|
|
31712
31788
|
return await sendMessageTelegram(...args);
|
|
31713
31789
|
},
|
|
31714
31790
|
sendMessageDiscord: async (...args) => {
|
|
31715
|
-
const { sendMessageDiscord } = await import("./send-
|
|
31791
|
+
const { sendMessageDiscord } = await import("./send-BVBCh27_.js").then((n) => n.t);
|
|
31716
31792
|
return await sendMessageDiscord(...args);
|
|
31717
31793
|
},
|
|
31718
31794
|
sendMessageSlack: async (...args) => {
|
|
31719
|
-
const { sendMessageSlack } = await import("./send-
|
|
31795
|
+
const { sendMessageSlack } = await import("./send-CXFTeD_J.js").then((n) => n.n);
|
|
31720
31796
|
return await sendMessageSlack(...args);
|
|
31721
31797
|
},
|
|
31722
31798
|
sendMessageSignal: async (...args) => {
|
|
31723
|
-
const { sendMessageSignal } = await import("./send-
|
|
31799
|
+
const { sendMessageSignal } = await import("./send-JWV62VbW.js").then((n) => n.i);
|
|
31724
31800
|
return await sendMessageSignal(...args);
|
|
31725
31801
|
},
|
|
31726
31802
|
sendMessageIMessage: async (...args) => {
|
|
31727
|
-
const { sendMessageIMessage } = await import("./send-
|
|
31803
|
+
const { sendMessageIMessage } = await import("./send-DsSI8z3F.js").then((n) => n.n);
|
|
31728
31804
|
return await sendMessageIMessage(...args);
|
|
31729
31805
|
}
|
|
31730
31806
|
};
|
|
@@ -32906,10 +32982,10 @@ function estimateDurationSeconds(pcm) {
|
|
|
32906
32982
|
return pcm.length / (bytesPerSample * SAMPLE_RATE);
|
|
32907
32983
|
}
|
|
32908
32984
|
async function writeWavFile(pcm) {
|
|
32909
|
-
const tempDir = await
|
|
32985
|
+
const tempDir = await fsPromises.mkdtemp(path.join(resolvePreferredSymiTmpDir(), "discord-voice-"));
|
|
32910
32986
|
const filePath = path.join(tempDir, `segment-${randomUUID()}.wav`);
|
|
32911
32987
|
const wav = buildWavBuffer(pcm);
|
|
32912
|
-
await
|
|
32988
|
+
await fsPromises.writeFile(filePath, wav);
|
|
32913
32989
|
scheduleTempCleanup(tempDir);
|
|
32914
32990
|
return {
|
|
32915
32991
|
path: filePath,
|
|
@@ -32918,7 +32994,7 @@ async function writeWavFile(pcm) {
|
|
|
32918
32994
|
}
|
|
32919
32995
|
function scheduleTempCleanup(tempDir, delayMs = 1800 * 1e3) {
|
|
32920
32996
|
setTimeout(() => {
|
|
32921
|
-
|
|
32997
|
+
fsPromises.rm(tempDir, {
|
|
32922
32998
|
recursive: true,
|
|
32923
32999
|
force: true
|
|
32924
33000
|
}).catch((err) => {
|
|
@@ -36657,7 +36733,7 @@ function normalizeAllowList$2(list) {
|
|
|
36657
36733
|
async function detectRemoteHostFromCliPath(cliPath) {
|
|
36658
36734
|
try {
|
|
36659
36735
|
const expanded = cliPath.startsWith("~") ? cliPath.replace(/^~/, process.env.HOME ?? "") : cliPath;
|
|
36660
|
-
const content = await
|
|
36736
|
+
const content = await fsPromises.readFile(expanded, "utf8");
|
|
36661
36737
|
const userHostMatch = content.match(/\bssh\b[^\n]*?\s+([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+)/);
|
|
36662
36738
|
if (userHostMatch) return userHostMatch[1];
|
|
36663
36739
|
return content.match(/\bssh\b[^\n]*?\s+([a-zA-Z][a-zA-Z0-9._-]*)\s+\S*\bimsg\b/)?.[1];
|
|
@@ -42872,7 +42948,7 @@ function readSlackExternalArgMenuToken(raw) {
|
|
|
42872
42948
|
}
|
|
42873
42949
|
let commandsRegistry;
|
|
42874
42950
|
async function getCommandsRegistry() {
|
|
42875
|
-
if (!commandsRegistry) commandsRegistry = await import("./commands-registry-
|
|
42951
|
+
if (!commandsRegistry) commandsRegistry = await import("./commands-registry-BZ0ZSQpM.js").then((n) => n.n);
|
|
42876
42952
|
return commandsRegistry;
|
|
42877
42953
|
}
|
|
42878
42954
|
function encodeSlackCommandArgValue(parts) {
|
|
@@ -43214,11 +43290,11 @@ async function registerSlackMonitorSlashCommands(params) {
|
|
|
43214
43290
|
const channelName = channelInfo?.name;
|
|
43215
43291
|
const roomLabel = channelName ? `#${channelName}` : `#${command.channel_id}`;
|
|
43216
43292
|
const [{ resolveAgentRoute }, { finalizeInboundContext }, { dispatchReplyWithDispatcher }] = await Promise.all([
|
|
43217
|
-
import("./resolve-route-
|
|
43293
|
+
import("./resolve-route-BcnaXYvh.js").then((n) => n.r),
|
|
43218
43294
|
import("./inbound-context-CmmmT8IP.js").then((n) => n.n),
|
|
43219
43295
|
Promise.resolve().then(() => provider_dispatcher_exports)
|
|
43220
43296
|
]);
|
|
43221
|
-
const [{ resolveConversationLabel }, { createReplyPrefixOptions }] = await Promise.all([import("./conversation-label-Bn5j3lUT.js").then((n) => n.t), import("./reply-prefix-
|
|
43297
|
+
const [{ resolveConversationLabel }, { createReplyPrefixOptions }] = await Promise.all([import("./conversation-label-Bn5j3lUT.js").then((n) => n.t), import("./reply-prefix-BLOOs1aW.js").then((n) => n.n)]);
|
|
43222
43298
|
const route = resolveAgentRoute({
|
|
43223
43299
|
cfg,
|
|
43224
43300
|
channel: "slack",
|
|
@@ -43275,9 +43351,9 @@ async function registerSlackMonitorSlashCommands(params) {
|
|
|
43275
43351
|
});
|
|
43276
43352
|
const deliverSlashPayloads = async (replies) => {
|
|
43277
43353
|
const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
|
|
43278
|
-
import("./replies-
|
|
43354
|
+
import("./replies-Dy92jzrz.js").then((n) => n.r),
|
|
43279
43355
|
import("./chunk-1dhPX1NK.js").then((n) => n.s),
|
|
43280
|
-
import("./markdown-tables-
|
|
43356
|
+
import("./markdown-tables-ZwP14ydw.js").then((n) => n.t)
|
|
43281
43357
|
]);
|
|
43282
43358
|
await deliverSlackSlashReplies({
|
|
43283
43359
|
replies,
|
|
@@ -43330,7 +43406,7 @@ async function registerSlackMonitorSlashCommands(params) {
|
|
|
43330
43406
|
let nativeCommands = [];
|
|
43331
43407
|
if (nativeEnabled) {
|
|
43332
43408
|
reg = await getCommandsRegistry();
|
|
43333
|
-
const skillCommands = nativeSkillsEnabled ? (await import("./skill-commands-
|
|
43409
|
+
const skillCommands = nativeSkillsEnabled ? (await import("./skill-commands-ZXbEITKi.js").then((n) => n.a)).listSkillCommandsForAgents({ cfg }) : [];
|
|
43334
43410
|
nativeCommands = reg.listNativeCommandSpecsForConfig(cfg, {
|
|
43335
43411
|
skillCommands,
|
|
43336
43412
|
provider: "slack"
|
|
@@ -47969,7 +48045,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
|
|
|
47969
48045
|
const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
|
|
47970
48046
|
let preflightTranscript;
|
|
47971
48047
|
if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
|
|
47972
|
-
const { transcribeFirstAudio } = await import("./audio-preflight-
|
|
48048
|
+
const { transcribeFirstAudio } = await import("./audio-preflight-mj-z_vQ6.js");
|
|
47973
48049
|
preflightTranscript = await transcribeFirstAudio({
|
|
47974
48050
|
ctx: {
|
|
47975
48051
|
MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
|
|
@@ -49737,7 +49813,7 @@ function safeParseState(raw) {
|
|
|
49737
49813
|
async function readTelegramUpdateOffset(params) {
|
|
49738
49814
|
const filePath = resolveTelegramUpdateOffsetPath(params.accountId, params.env);
|
|
49739
49815
|
try {
|
|
49740
|
-
return safeParseState(await
|
|
49816
|
+
return safeParseState(await fsPromises.readFile(filePath, "utf-8"))?.lastUpdateId ?? null;
|
|
49741
49817
|
} catch (err) {
|
|
49742
49818
|
if (err.code === "ENOENT") return null;
|
|
49743
49819
|
return null;
|
|
@@ -49746,7 +49822,7 @@ async function readTelegramUpdateOffset(params) {
|
|
|
49746
49822
|
async function writeTelegramUpdateOffset(params) {
|
|
49747
49823
|
const filePath = resolveTelegramUpdateOffsetPath(params.accountId, params.env);
|
|
49748
49824
|
const dir = path.dirname(filePath);
|
|
49749
|
-
await
|
|
49825
|
+
await fsPromises.mkdir(dir, {
|
|
49750
49826
|
recursive: true,
|
|
49751
49827
|
mode: 448
|
|
49752
49828
|
});
|
|
@@ -49755,14 +49831,14 @@ async function writeTelegramUpdateOffset(params) {
|
|
|
49755
49831
|
version: STORE_VERSION,
|
|
49756
49832
|
lastUpdateId: params.updateId
|
|
49757
49833
|
};
|
|
49758
|
-
await
|
|
49759
|
-
await
|
|
49760
|
-
await
|
|
49834
|
+
await fsPromises.writeFile(tmp, `${JSON.stringify(payload, null, 2)}\n`, { encoding: "utf-8" });
|
|
49835
|
+
await fsPromises.chmod(tmp, 384);
|
|
49836
|
+
await fsPromises.rename(tmp, filePath);
|
|
49761
49837
|
}
|
|
49762
49838
|
async function deleteTelegramUpdateOffset(params) {
|
|
49763
49839
|
const filePath = resolveTelegramUpdateOffsetPath(params.accountId, params.env);
|
|
49764
49840
|
try {
|
|
49765
|
-
await
|
|
49841
|
+
await fsPromises.unlink(filePath);
|
|
49766
49842
|
} catch (err) {
|
|
49767
49843
|
if (err.code === "ENOENT") return;
|
|
49768
49844
|
throw err;
|
|
@@ -50123,23 +50199,23 @@ let webLoginQrPromise = null;
|
|
|
50123
50199
|
let webChannelPromise = null;
|
|
50124
50200
|
let whatsappActionsPromise = null;
|
|
50125
50201
|
function loadWebOutbound() {
|
|
50126
|
-
webOutboundPromise ??= import("./outbound-
|
|
50202
|
+
webOutboundPromise ??= import("./outbound-_Ir3M05f.js").then((n) => n.t);
|
|
50127
50203
|
return webOutboundPromise;
|
|
50128
50204
|
}
|
|
50129
50205
|
function loadWebLogin() {
|
|
50130
|
-
webLoginPromise ??= import("./login-
|
|
50206
|
+
webLoginPromise ??= import("./login-CnjdNmGD.js").then((n) => n.n);
|
|
50131
50207
|
return webLoginPromise;
|
|
50132
50208
|
}
|
|
50133
50209
|
function loadWebLoginQr() {
|
|
50134
|
-
webLoginQrPromise ??= import("./login-qr-
|
|
50210
|
+
webLoginQrPromise ??= import("./login-qr-DUf6CM0M.js");
|
|
50135
50211
|
return webLoginQrPromise;
|
|
50136
50212
|
}
|
|
50137
50213
|
function loadWebChannel() {
|
|
50138
|
-
webChannelPromise ??= import("./web-
|
|
50214
|
+
webChannelPromise ??= import("./web-sefqR11J.js");
|
|
50139
50215
|
return webChannelPromise;
|
|
50140
50216
|
}
|
|
50141
50217
|
function loadWhatsAppActions() {
|
|
50142
|
-
whatsappActionsPromise ??= import("./whatsapp-actions-
|
|
50218
|
+
whatsappActionsPromise ??= import("./whatsapp-actions-CqXxtCoj.js");
|
|
50143
50219
|
return whatsappActionsPromise;
|
|
50144
50220
|
}
|
|
50145
50221
|
function createPluginRuntime() {
|
|
@@ -50906,7 +50982,7 @@ function resolvePluginTools(params) {
|
|
|
50906
50982
|
//#endregion
|
|
50907
50983
|
//#region src/agents/apply-patch-update.ts
|
|
50908
50984
|
async function defaultReadFile(filePath) {
|
|
50909
|
-
return
|
|
50985
|
+
return fsPromises.readFile(filePath, "utf8");
|
|
50910
50986
|
}
|
|
50911
50987
|
async function applyUpdateHunk(filePath, chunks, options) {
|
|
50912
50988
|
const originalLines = (await (options?.readFile ?? defaultReadFile)(filePath).catch((err) => {
|
|
@@ -51150,10 +51226,10 @@ function resolvePatchFileOps(options) {
|
|
|
51150
51226
|
};
|
|
51151
51227
|
}
|
|
51152
51228
|
return {
|
|
51153
|
-
readFile: (filePath) =>
|
|
51154
|
-
writeFile: (filePath, content) =>
|
|
51155
|
-
remove: (filePath) =>
|
|
51156
|
-
mkdirp: (dir) =>
|
|
51229
|
+
readFile: (filePath) => fsPromises.readFile(filePath, "utf8"),
|
|
51230
|
+
writeFile: (filePath, content) => fsPromises.writeFile(filePath, content, "utf8"),
|
|
51231
|
+
remove: (filePath) => fsPromises.rm(filePath),
|
|
51232
|
+
mkdirp: (dir) => fsPromises.mkdir(dir, { recursive: true }).then(() => {})
|
|
51157
51233
|
};
|
|
51158
51234
|
}
|
|
51159
51235
|
async function ensureDir(filePath, ops) {
|
|
@@ -51874,7 +51950,7 @@ async function resolveSandboxWorkdir(params) {
|
|
|
51874
51950
|
cwd: process.cwd(),
|
|
51875
51951
|
root: params.sandbox.workspaceDir
|
|
51876
51952
|
});
|
|
51877
|
-
if (!(await
|
|
51953
|
+
if (!(await fsPromises.stat(resolved.resolved)).isDirectory()) throw new Error("workdir is not a directory");
|
|
51878
51954
|
const relative = resolved.relative ? resolved.relative.split(path.sep).join(path.posix.sep) : "";
|
|
51879
51955
|
const containerWorkdir = relative ? path.posix.join(params.sandbox.containerWorkdir, relative) : params.sandbox.containerWorkdir;
|
|
51880
51956
|
return {
|
|
@@ -52855,13 +52931,13 @@ async function validateScriptFileForShellBleed(params) {
|
|
|
52855
52931
|
cwd: params.workdir,
|
|
52856
52932
|
root: params.workdir
|
|
52857
52933
|
});
|
|
52858
|
-
stat = await
|
|
52934
|
+
stat = await fsPromises.stat(absPath);
|
|
52859
52935
|
} catch {
|
|
52860
52936
|
return;
|
|
52861
52937
|
}
|
|
52862
52938
|
if (!stat.isFile()) return;
|
|
52863
52939
|
if (stat.size > 512 * 1024) return;
|
|
52864
|
-
const content = await
|
|
52940
|
+
const content = await fsPromises.readFile(absPath, "utf-8");
|
|
52865
52941
|
const first = /\$[A-Z_][A-Z0-9_]{1,}/g.exec(content);
|
|
52866
52942
|
if (first) {
|
|
52867
52943
|
const idx = first.index;
|
|
@@ -55535,7 +55611,7 @@ async function readJsonlFromPath(jsonlPath) {
|
|
|
55535
55611
|
if (shouldLogVerbose()) logVerbose(`Blocked canvas jsonlPath outside allowed roots: ${resolved}`);
|
|
55536
55612
|
throw new Error("jsonlPath outside allowed roots");
|
|
55537
55613
|
}
|
|
55538
|
-
const canonical = await
|
|
55614
|
+
const canonical = await fsPromises.realpath(resolved).catch(() => resolved);
|
|
55539
55615
|
if (!isInboundPathAllowed({
|
|
55540
55616
|
filePath: canonical,
|
|
55541
55617
|
roots
|
|
@@ -55543,7 +55619,7 @@ async function readJsonlFromPath(jsonlPath) {
|
|
|
55543
55619
|
if (shouldLogVerbose()) logVerbose(`Blocked canvas jsonlPath outside allowed roots: ${canonical}`);
|
|
55544
55620
|
throw new Error("jsonlPath outside allowed roots");
|
|
55545
55621
|
}
|
|
55546
|
-
return await
|
|
55622
|
+
return await fsPromises.readFile(canonical, "utf8");
|
|
55547
55623
|
}
|
|
55548
55624
|
const CanvasToolSchema = Type.Object({
|
|
55549
55625
|
action: stringEnum(CANVAS_ACTIONS),
|
|
@@ -56323,27 +56399,27 @@ function resolveRestartSentinelPath(env = process.env) {
|
|
|
56323
56399
|
}
|
|
56324
56400
|
async function writeRestartSentinel(payload, env = process.env) {
|
|
56325
56401
|
const filePath = resolveRestartSentinelPath(env);
|
|
56326
|
-
await
|
|
56402
|
+
await fsPromises.mkdir(path.dirname(filePath), { recursive: true });
|
|
56327
56403
|
const data = {
|
|
56328
56404
|
version: 1,
|
|
56329
56405
|
payload
|
|
56330
56406
|
};
|
|
56331
|
-
await
|
|
56407
|
+
await fsPromises.writeFile(filePath, `${JSON.stringify(data, null, 2)}\n`, "utf-8");
|
|
56332
56408
|
return filePath;
|
|
56333
56409
|
}
|
|
56334
56410
|
async function readRestartSentinel(env = process.env) {
|
|
56335
56411
|
const filePath = resolveRestartSentinelPath(env);
|
|
56336
56412
|
try {
|
|
56337
|
-
const raw = await
|
|
56413
|
+
const raw = await fsPromises.readFile(filePath, "utf-8");
|
|
56338
56414
|
let parsed;
|
|
56339
56415
|
try {
|
|
56340
56416
|
parsed = JSON.parse(raw);
|
|
56341
56417
|
} catch {
|
|
56342
|
-
await
|
|
56418
|
+
await fsPromises.unlink(filePath).catch(() => {});
|
|
56343
56419
|
return null;
|
|
56344
56420
|
}
|
|
56345
56421
|
if (!parsed || parsed.version !== 1 || !parsed.payload) {
|
|
56346
|
-
await
|
|
56422
|
+
await fsPromises.unlink(filePath).catch(() => {});
|
|
56347
56423
|
return null;
|
|
56348
56424
|
}
|
|
56349
56425
|
return parsed;
|
|
@@ -56355,7 +56431,7 @@ async function consumeRestartSentinel(env = process.env) {
|
|
|
56355
56431
|
const filePath = resolveRestartSentinelPath(env);
|
|
56356
56432
|
const parsed = await readRestartSentinel(env);
|
|
56357
56433
|
if (!parsed) return null;
|
|
56358
|
-
await
|
|
56434
|
+
await fsPromises.unlink(filePath).catch(() => {});
|
|
56359
56435
|
return parsed;
|
|
56360
56436
|
}
|
|
56361
56437
|
function formatRestartSentinelMessage(payload) {
|
|
@@ -57462,7 +57538,7 @@ async function hydrateAttachmentPayload(params) {
|
|
|
57462
57538
|
accountId: params.accountId
|
|
57463
57539
|
}),
|
|
57464
57540
|
sandboxValidated: true,
|
|
57465
|
-
readFile: (filePath) =>
|
|
57541
|
+
readFile: (filePath) => fsPromises.readFile(filePath)
|
|
57466
57542
|
});
|
|
57467
57543
|
params.args.buffer = media.buffer.toString("base64");
|
|
57468
57544
|
if (!contentTypeParam && media.contentType) params.args.contentType = media.contentType;
|
|
@@ -65014,7 +65090,7 @@ async function compactEmbeddedPiSessionDirect(params) {
|
|
|
65014
65090
|
} catch (err) {
|
|
65015
65091
|
return fail(describeUnknownError(err));
|
|
65016
65092
|
}
|
|
65017
|
-
await
|
|
65093
|
+
await fsPromises.mkdir(resolvedWorkspace, { recursive: true });
|
|
65018
65094
|
const sandboxSessionKey = params.sessionKey?.trim() || params.sessionId;
|
|
65019
65095
|
const sandbox = await resolveSandboxContext({
|
|
65020
65096
|
config: params.config,
|
|
@@ -65022,7 +65098,7 @@ async function compactEmbeddedPiSessionDirect(params) {
|
|
|
65022
65098
|
workspaceDir: resolvedWorkspace
|
|
65023
65099
|
});
|
|
65024
65100
|
const effectiveWorkspace = sandbox?.enabled ? sandbox.workspaceAccess === "rw" ? resolvedWorkspace : sandbox.workspaceDir : resolvedWorkspace;
|
|
65025
|
-
await
|
|
65101
|
+
await fsPromises.mkdir(effectiveWorkspace, { recursive: true });
|
|
65026
65102
|
await ensureSessionHeader({
|
|
65027
65103
|
sessionFile: params.sessionFile,
|
|
65028
65104
|
sessionId: params.sessionId,
|
|
@@ -69177,7 +69253,7 @@ async function handleCommands(params) {
|
|
|
69177
69253
|
try {
|
|
69178
69254
|
const messages = [];
|
|
69179
69255
|
if (sessionFile) {
|
|
69180
|
-
const content = await
|
|
69256
|
+
const content = await fsPromises.readFile(sessionFile, "utf-8");
|
|
69181
69257
|
for (const line of content.split("\n")) {
|
|
69182
69258
|
if (!line.trim()) continue;
|
|
69183
69259
|
try {
|
|
@@ -72838,7 +72914,7 @@ async function deliverSessionMaintenanceWarning(params) {
|
|
|
72838
72914
|
return;
|
|
72839
72915
|
}
|
|
72840
72916
|
try {
|
|
72841
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
72917
|
+
const { deliverOutboundPayloads } = await import("./deliver-BYdNAEqj.js").then((n) => n.n);
|
|
72842
72918
|
await deliverOutboundPayloads({
|
|
72843
72919
|
cfg: params.cfg,
|
|
72844
72920
|
channel,
|
|
@@ -73213,7 +73289,7 @@ async function stageSandboxMedia(params) {
|
|
|
73213
73289
|
};
|
|
73214
73290
|
try {
|
|
73215
73291
|
const destDir = sandbox ? path.join(effectiveWorkspaceDir, "media", "inbound") : effectiveWorkspaceDir;
|
|
73216
|
-
await
|
|
73292
|
+
await fsPromises.mkdir(destDir, { recursive: true });
|
|
73217
73293
|
const remoteAttachmentRoots = resolveIMessageRemoteAttachmentRoots({
|
|
73218
73294
|
cfg,
|
|
73219
73295
|
accountId: ctx.AccountId
|
|
@@ -73263,7 +73339,7 @@ async function stageSandboxMedia(params) {
|
|
|
73263
73339
|
usedNames.add(fileName);
|
|
73264
73340
|
const dest = path.join(destDir, fileName);
|
|
73265
73341
|
if (ctx.MediaRemoteHost) await scpFile(ctx.MediaRemoteHost, source, dest);
|
|
73266
|
-
else await
|
|
73342
|
+
else await fsPromises.copyFile(source, dest);
|
|
73267
73343
|
const stagedPath = sandbox ? path.posix.join("media", "inbound", fileName) : dest;
|
|
73268
73344
|
staged.set(source, stagedPath);
|
|
73269
73345
|
}
|