squidclaw 3.0.13 → 3.0.14
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-PhtBJ8mA.js → accounts-BjEXPlGc.js} +1 -1
- package/dist/{accounts-Xp5W2xrR.js → accounts-CyBVeR-N.js} +1 -1
- package/dist/{accounts-BFC1okn9.js → accounts-D095MOmG.js} +7 -7
- package/dist/{acp-cli-Dt95OPXW.js → acp-cli-Dd2joFFS.js} +8 -8
- package/dist/{agent-scope-tUxfsPYq.js → agent-scope-C1XMay0T.js} +17 -17
- package/dist/{agents.config-DNPisWCH.js → agents.config-CRKsD30n.js} +2 -2
- package/dist/{api-key-rotation-Y59kKrr0.js → api-key-rotation-BcKKu9kK.js} +1 -1
- package/dist/{audio-preflight-DeBM0nTy.js → audio-preflight-g9rsstMv.js} +34 -34
- package/dist/{audio-transcription-runner-B7oPsr3U.js → audio-transcription-runner-Bnl3Ubjo.js} +23 -23
- package/dist/{audit-Bq3iosCf.js → audit-B4s_5Gn1.js} +29 -29
- package/dist/{auth-HYiP0mxx.js → auth-DHSeaNcB.js} +1 -1
- package/dist/{auth-choice-Du_pIfBh.js → auth-choice-C-7c5Td_.js} +13 -13
- package/dist/{auth-choice-CX8TDXmp.js → auth-choice-D7LiN5Ju.js} +11 -11
- package/dist/{auth-choice.apply-helpers-DRfHu1d8.js → auth-choice.apply-helpers-CxO2Wbq-.js} +1 -1
- package/dist/{auth-token-BQRI3c6e.js → auth-token-BxYYHBlc.js} +1 -1
- package/dist/{bonjour-discovery-BenDpM0y.js → bonjour-discovery-mtNewKSx.js} +1 -1
- package/dist/{browser-cli-Et8PyJjA.js → browser-cli-I1fzIVmS.js} +12 -12
- package/dist/build-info.json +2 -2
- package/dist/{call-DbkLm3eP.js → call-DkR5OGhh.js} +10 -10
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-account-context-C_WQRa6U.js → channel-account-context-e4ysObLI.js} +5 -5
- package/dist/{channel-activity-7kixHIgY.js → channel-activity-CCjlTlcN.js} +1 -1
- package/dist/{channel-options-D0TjqxeO.js → channel-options-BL5mHe-R.js} +3 -3
- package/dist/{channel-selection-BwbXcgj2.js → channel-selection-D_20zq3H.js} +1 -1
- package/dist/{channel-web-lfZ3VOOl.js → channel-web-C7Iij0H0.js} +16 -16
- package/dist/{channels-cli-Hr4vekE6.js → channels-cli-BMiEn81Y.js} +92 -92
- package/dist/{channels-status-issues-DeoqSoo-.js → channels-status-issues-N9kzQrD8.js} +1 -1
- package/dist/{chrome-gIqO4t7T.js → chrome-BNfSmFAM.js} +4 -4
- package/dist/{clawbot-cli-C-jGxnTq.js → clawbot-cli-B6-68gsT.js} +11 -11
- package/dist/cli/daemon-cli.js +1 -1
- package/dist/{cli-BH62lCfL.js → cli-ByaubO_B.js} +72 -72
- package/dist/{client-CeaUCJtL.js → client-BURktNyH.js} +2 -2
- package/dist/{command-secret-targets-BF4WzaME.js → command-secret-targets-WwcPUFAf.js} +4 -4
- package/dist/{commands-CD6EMOiw.js → commands-CiY9HjRt.js} +1 -1
- package/dist/{commands-registry-DCUj1QOi.js → commands-registry-0bpX7A_Q.js} +3 -3
- package/dist/{completion-cli-BIY_jjYY.js → completion-cli-8PdK97J-.js} +12 -12
- package/dist/{config-cli-DvNViMXW.js → config-cli-ClomIMw7.js} +7 -7
- package/dist/{config-guard-DwgnWjmj.js → config-guard-rLrk7eSS.js} +16 -16
- package/dist/{config-validation-CcqZ--gE.js → config-validation-BQEaXMk7.js} +3 -3
- package/dist/{configure-B5Zuhebc.js → configure-CoXGul3l.js} +17 -17
- package/dist/{control-ui-assets-x69xyZH-.js → control-ui-assets-Bz7TCLpb.js} +1 -1
- package/dist/{cron-cli-Bv-X4msQ.js → cron-cli-C3iKBccc.js} +11 -11
- package/dist/{daemon-cli-B-8-rGND.js → daemon-cli-BVcrlw5o.js} +15 -15
- package/dist/{daemon-install-2y4HHhYl.js → daemon-install-CXDWHEEO.js} +4 -4
- package/dist/{daemon-install-helpers-Cdo6Pryw.js → daemon-install-helpers-a4pGEsbA.js} +11 -11
- package/dist/{deliver-CVl43oM1.js → deliver-B1sllFkh.js} +7 -7
- package/dist/deliver-runtime-CaV7seKv.js +61 -0
- package/dist/deps-send-discord.runtime-DbS5pxta.js +36 -0
- package/dist/deps-send-imessage.runtime-Ji753_F7.js +35 -0
- package/dist/deps-send-signal.runtime-DLJqvPLf.js +34 -0
- package/dist/deps-send-slack.runtime-DrFxeZ1I.js +32 -0
- package/dist/{deps-send-telegram.runtime-C9lz8bf0.js → deps-send-telegram.runtime-CF-Ylrvr.js} +16 -16
- package/dist/deps-send-whatsapp.runtime-BOE0Ke6v.js +118 -0
- package/dist/{devices-cli-BT8K0hdG.js → devices-cli-Dn_norz3.js} +8 -8
- package/dist/{diagnostic-5bqrhGEp.js → diagnostic-CNl71AzW.js} +1 -1
- package/dist/{diagnostics-C0CazfQM.js → diagnostics-DZ99A0EW.js} +5 -5
- package/dist/{directory-cli-BZcT9ie1.js → directory-cli-ZzwXkW89.js} +7 -7
- package/dist/{dns-cli-CPYaeASu.js → dns-cli-DipYQjtY.js} +5 -5
- package/dist/{dock-CVTqzMqE.js → dock-C7N1CmcP.js} +4 -4
- package/dist/{docs-cli-C50vGyDh.js → docs-cli-C-Izm9Tb.js} +4 -4
- package/dist/{doctor-completion-Emprau8v.js → doctor-completion-CGmYWy0n.js} +2 -2
- package/dist/{doctor-config-flow-DSA-JE3n.js → doctor-config-flow-DDWA3Z2D.js} +15 -15
- package/dist/{enable-CAYj5OhY.js → enable-RJyJVP_B.js} +1 -1
- package/dist/{exec-approvals-allowlist-BO4EEQUI.js → exec-approvals-allowlist-Bu_oaDJC.js} +1 -1
- package/dist/{exec-approvals-cli-DSOHdWJR.js → exec-approvals-cli-Csducy9L.js} +16 -16
- package/dist/{exec-safe-bin-runtime-policy-CSnpe1AT.js → exec-safe-bin-runtime-policy-DRQwt8kj.js} +2 -2
- package/dist/{fetch-guard-VcWeni3c.js → fetch-guard-DNykKlIv.js} +1 -1
- package/dist/{fs-safe-CjHYKGbt.js → fs-safe-CKHYu4Vz.js} +24 -24
- package/dist/{gateway-cli-B2fScwuY.js → gateway-cli-CUph5Eqo.js} +152 -152
- package/dist/{gateway-rpc-DpqZnhyz.js → gateway-rpc-DoKw40aG.js} +1 -1
- package/dist/{health-BZcB9SMe.js → health-Cia3g9r1.js} +11 -11
- package/dist/{hooks-cli-BylHgZ52.js → hooks-cli-LDbU3XMU.js} +80 -80
- package/dist/{hooks-status-DqGd74DG.js → hooks-status-Dd_iWcBZ.js} +1 -1
- package/dist/{image-CulZw1up.js → image-D2a7rcK1.js} +5 -5
- package/dist/{image-ops-BpsIdA2j.js → image-ops-BIWika4g.js} +10 -10
- package/dist/image-runtime-DTxVPe7Z.js +55 -0
- package/dist/index.js +82 -82
- package/dist/{inspect-D5T8Bbzl.js → inspect-C3PHuODr.js} +4 -4
- package/dist/{install-safe-path-BoN-MLvX.js → install-safe-path-iCmVuopp.js} +25 -25
- package/dist/{installs-CPHMcmNj.js → installs-CyjlehlR.js} +9 -9
- package/dist/{ipv4-Bwl9ruCP.js → ipv4-CWVOQw5T.js} +1 -1
- package/dist/{ir-xnftdkOo.js → ir-BPM7rQYq.js} +8 -8
- package/dist/{issue-format-8t_ncgFx.js → issue-format-sA05c-6t.js} +1 -1
- package/dist/{json-files-DIEpaxUj.js → json-files-D6M304Qd.js} +8 -8
- package/dist/{lifecycle-core-DKiBjZdv.js → lifecycle-core-DsfZ6965.js} +5 -5
- package/dist/{local-roots-BrxGyJnb.js → local-roots-CMxJ8L4w.js} +3 -3
- package/dist/{login-CxDYXbgx.js → login-BjtBaVVG.js} +3 -3
- package/dist/{login-qr-zf4B1lpU.js → login-qr-JfRlpd7I.js} +6 -6
- package/dist/{logs-cli-CJAe1_dv.js → logs-cli-gv2Ql7GE.js} +9 -9
- package/dist/{manager-DBgRFvYb.js → manager-XeZQ6ws7.js} +14 -14
- package/dist/{manager-runtime-Dl31cGh-.js → manager-runtime-BvGqzQIY.js} +9 -9
- package/dist/{manifest-registry-Cx3mB9zS.js → manifest-registry-BaUPjNKb.js} +1 -1
- package/dist/{memory-cli-Bhoc-n_1.js → memory-cli-BUJHSsW6.js} +12 -12
- package/dist/{model-DYzjrxpA.js → model-Jy6fO59G.js} +2 -2
- package/dist/{model-catalog-kpDOW8eY.js → model-catalog-BfoWgIDd.js} +3 -3
- package/dist/{model-picker-BZwK54QT.js → model-picker-CxmHVCE1.js} +4 -4
- package/dist/{model-selection-ZV3PuYVR.js → model-selection-QgM_TOjC.js} +16 -16
- package/dist/{models-cli-BIxlIOFr.js → models-cli-DlbNL6it.js} +81 -81
- package/dist/{models-config-BLdDYoxi.js → models-config-DOD5jluc.js} +6 -6
- package/dist/{node-cli-6uYJccbd.js → node-cli-uJ5lFzxj.js} +33 -33
- package/dist/{node-command-policy-CKTXVa3D.js → node-command-policy-CwVo8Z1X.js} +1 -1
- package/dist/{node-service-DGPVb5ri.js → node-service-xGYkt3vb.js} +1 -1
- package/dist/{nodes-cli-CXLRfAYx.js → nodes-cli-eauCMbSr.js} +16 -16
- package/dist/{nodes-screen-C-tuRhA1.js → nodes-screen-iR_FzGNs.js} +7 -7
- package/dist/{npm-pack-install-DgSn7djE.js → npm-pack-install-s-mP9K0z.js} +18 -18
- package/dist/{npm-resolution-gw3vFNTB.js → npm-resolution-Ck7yFIM2.js} +4 -4
- package/dist/{onboard-CCaYDSO2.js → onboard-aISMp4Kt.js} +6 -6
- package/dist/{onboard-channels-DQnP5d3Y.js → onboard-channels-CELkEQUS.js} +21 -21
- package/dist/{onboard-custom-CJohrPzT.js → onboard-custom-BmAzWYbD.js} +4 -4
- package/dist/{onboard-helpers-Bcs_1b81.js → onboard-helpers-DRk4Y5uA.js} +10 -10
- package/dist/{onboard-hooks-A23nqe_3.js → onboard-hooks-lk1sMnDf.js} +4 -4
- package/dist/{onboard-remote-Hf9sTDHl.js → onboard-remote-Bj9cR8kF.js} +4 -4
- package/dist/{onboard-skills-Cpc8o6sG.js → onboard-skills-eRpyQ1la.js} +4 -4
- package/dist/{onboarding-wx00blu5.js → onboarding-Bl4RDn6W.js} +14 -14
- package/dist/{onboarding.finalize-B8wqvggG.js → onboarding.finalize-Bm7_INHb.js} +85 -85
- package/dist/{onboarding.gateway-config-CvWq5i_X.js → onboarding.gateway-config-BPyk6gwr.js} +18 -18
- package/dist/{onboarding.secret-input-CIN4p8mg.js → onboarding.secret-input-DlDt-I2O.js} +1 -1
- package/dist/{openai-model-default-BYfJa19m.js → openai-model-default-DnYP1Em1.js} +2 -2
- package/dist/{outbound-B3RZI-ai.js → outbound-BQtnr_z2.js} +3 -3
- package/dist/{outbound-attachment-BATDqOuj.js → outbound-attachment-WnXMTJC4.js} +2 -2
- package/dist/{pairing-cli-FMIw0yL6.js → pairing-cli-BsU-YnVT.js} +8 -8
- package/dist/{pairing-labels-MH31IXn_.js → pairing-labels-BXfoinTP.js} +1 -1
- package/dist/{pairing-store-KII9MIZX.js → pairing-store-C1FvWpDK.js} +3 -3
- package/dist/{path-alias-guards-B7H6jIIw.js → path-alias-guards-CCRXJArp.js} +3 -3
- package/dist/{path-safety-3wUzDqI9.js → path-safety-BWiXz6D4.js} +1 -1
- package/dist/{paths-BguvT84s.js → paths-Bg6h1q3v.js} +9 -9
- package/dist/{pi-embedded-helpers-D8WkqLZt.js → pi-embedded-helpers-DctimJJI.js} +6 -6
- package/dist/{pi-model-discovery-Bfyzj3Lq.js → pi-model-discovery-D63dINOn.js} +1 -1
- package/dist/{pi-model-discovery-runtime-nh-zh_Bp.js → pi-model-discovery-runtime-CcXGQcru.js} +5 -5
- package/dist/{pi-tools.before-tool-call.runtime-D4V6gUzq.js → pi-tools.before-tool-call.runtime-BMb_b90y.js} +5 -5
- package/dist/{pi-tools.policy-DCE9mhtw.js → pi-tools.policy-CXvZtJB7.js} +5 -5
- package/dist/{plugin-auto-enable-BJw5Rcbx.js → plugin-auto-enable-DMABTEO-.js} +3 -3
- package/dist/{plugin-registry-V0H8DaZf.js → plugin-registry-BSlUIHKX.js} +3 -3
- package/dist/plugin-sdk/accounts-B6gye1Jd.js +46 -0
- package/dist/plugin-sdk/accounts-C-BT6Po7.js +288 -0
- package/dist/plugin-sdk/accounts-DQDXV8eB.js +35 -0
- package/dist/plugin-sdk/active-listener-DZCohPuZ.js +50 -0
- package/dist/plugin-sdk/api-key-rotation-CrX0fvDj.js +181 -0
- package/dist/plugin-sdk/audio-preflight-xnWAFqH-.js +69 -0
- package/dist/plugin-sdk/audio-transcription-runner-BDmtq7-q.js +2176 -0
- package/dist/plugin-sdk/audit-membership-runtime-B9b-zRwg.js +58 -0
- package/dist/plugin-sdk/channel-activity-JjLRpUa_.js +94 -0
- package/dist/plugin-sdk/channel-web-DNWsxhYh.js +2256 -0
- package/dist/plugin-sdk/chrome-B5PWOUbr.js +2415 -0
- package/dist/plugin-sdk/commands-registry-BKeyJUxK.js +1125 -0
- package/dist/plugin-sdk/config-FhBFLsNm.js +17911 -0
- package/dist/plugin-sdk/deliver-DEbTlzFy.js +1694 -0
- package/dist/plugin-sdk/deliver-runtime-CO2uP-r9.js +32 -0
- package/dist/plugin-sdk/deps-send-discord.runtime-DIPW0tR4.js +23 -0
- package/dist/plugin-sdk/deps-send-imessage.runtime-ByGjRa1H.js +22 -0
- package/dist/plugin-sdk/deps-send-signal.runtime-Ca1awu4L.js +21 -0
- package/dist/plugin-sdk/deps-send-slack.runtime-CRzWCVkC.js +19 -0
- package/dist/plugin-sdk/deps-send-telegram.runtime-BWyavKp9.js +24 -0
- package/dist/plugin-sdk/deps-send-whatsapp.runtime-cC_XvHV8.js +57 -0
- package/dist/plugin-sdk/diagnostic-Dv9S12vm.js +319 -0
- package/dist/plugin-sdk/errors-B8oJXuCF.js +54 -0
- package/dist/plugin-sdk/fetch-guard-W_A4uSz2.js +156 -0
- package/dist/plugin-sdk/fs-safe-Dqmpk-Fr.js +352 -0
- package/dist/plugin-sdk/image-BSFy8d1M.js +2310 -0
- package/dist/plugin-sdk/image-ops-DN17S88I.js +584 -0
- package/dist/plugin-sdk/image-runtime-5YO31sjU.js +25 -0
- package/dist/plugin-sdk/imessage.js +2 -2
- package/dist/plugin-sdk/index.js +50 -50
- package/dist/plugin-sdk/ir-JaPZ0yKH.js +1296 -0
- package/dist/plugin-sdk/local-roots-BTW3ifco.js +186 -0
- package/dist/plugin-sdk/logger-DDdrdbDu.js +1163 -0
- package/dist/plugin-sdk/login-BXGRny-S.js +57 -0
- package/dist/plugin-sdk/login-qr-DTs92ap8.js +320 -0
- package/dist/plugin-sdk/manager-DzFj9oHX.js +3917 -0
- package/dist/plugin-sdk/manager-runtime-DrpyZvO0.js +15 -0
- package/dist/plugin-sdk/mattermost.js +3 -3
- package/dist/plugin-sdk/outbound-CQ7uBBML.js +212 -0
- package/dist/plugin-sdk/outbound-attachment-dTE6EVdX.js +19 -0
- package/dist/plugin-sdk/path-alias-guards-gBhrAn14.js +43 -0
- package/dist/plugin-sdk/paths-C6W4VHoa.js +166 -0
- package/dist/plugin-sdk/pi-embedded-helpers-CfzQPXDC.js +9627 -0
- package/dist/plugin-sdk/pi-model-discovery-Bt6B0MAj.js +134 -0
- package/dist/plugin-sdk/pi-model-discovery-runtime-BcgXpTmL.js +8 -0
- package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-DYJQxhuo.js +354 -0
- package/dist/plugin-sdk/plugins-6NxPd6TS.js +864 -0
- package/dist/plugin-sdk/proxy-fetch-ZPEvp58f.js +38 -0
- package/dist/plugin-sdk/pw-ai-BFK39pwE.js +1938 -0
- package/dist/plugin-sdk/qmd-manager-6bozlfFg.js +1448 -0
- package/dist/plugin-sdk/query-expansion-eeVz_aEm.js +1011 -0
- package/dist/plugin-sdk/redact-BoNEjbpF.js +319 -0
- package/dist/plugin-sdk/reply-DgcrQBKL.js +98828 -0
- package/dist/plugin-sdk/resolve-outbound-target-CbaJ-kc2.js +40 -0
- package/dist/plugin-sdk/run-with-concurrency-5DMu9szx.js +1994 -0
- package/dist/plugin-sdk/runtime-whatsapp-login.runtime-jkgyeVsN.js +10 -0
- package/dist/plugin-sdk/runtime-whatsapp-outbound.runtime-DdLJJ1YC.js +19 -0
- package/dist/plugin-sdk/send-BSoMbeqA.js +3135 -0
- package/dist/plugin-sdk/send-Byyfc20_.js +503 -0
- package/dist/plugin-sdk/send-CI-xWEs7.js +2587 -0
- package/dist/plugin-sdk/send-DzP9EJqK.js +540 -0
- package/dist/plugin-sdk/send-MlSZ82sA.js +414 -0
- package/dist/plugin-sdk/session-DFy97tfW.js +169 -0
- package/dist/plugin-sdk/signal.js +2 -2
- package/dist/plugin-sdk/skill-commands-yum46YuA.js +342 -0
- package/dist/plugin-sdk/skills-DUphJGKn.js +1428 -0
- package/dist/plugin-sdk/slash-commands.runtime-5UW5KLyR.js +13 -0
- package/dist/plugin-sdk/slash-dispatch.runtime-4oQ2P_qo.js +52 -0
- package/dist/plugin-sdk/slash-skill-commands.runtime-y_mOLyS7.js +16 -0
- package/dist/plugin-sdk/ssrf-B3XRWBsP.js +202 -0
- package/dist/plugin-sdk/store-DFvIhzWZ.js +81 -0
- package/dist/plugin-sdk/subagent-registry-runtime-DtKXhKtl.js +52 -0
- package/dist/plugin-sdk/tables-bDM_jlLP.js +55 -0
- package/dist/{target-errors-DlzVutaL.js → plugin-sdk/target-errors-BVBW25Y3.js} +4 -4
- package/dist/plugin-sdk/thinking-Bu-w5mW5.js +1206 -0
- package/dist/plugin-sdk/tokens-CTIYTLWu.js +52 -0
- package/dist/plugin-sdk/tool-images-D0G_giwP.js +274 -0
- package/dist/plugin-sdk/web-DSXk7XCb.js +56 -0
- package/dist/plugin-sdk/whatsapp-actions-BOyA0Uuj.js +80 -0
- package/dist/{plugins-Cl_3OCyK.js → plugins-H53_4Gxb.js} +2 -2
- package/dist/{plugins-cli-CN2fty5U.js → plugins-cli-CQkxWdnt.js} +82 -82
- package/dist/{ports-Bop51hz6.js → ports-CKXuQJST.js} +2 -2
- package/dist/{ports-6i8smH3e.js → ports-CXjhFS7T.js} +1 -1
- package/dist/{program-context-ehHvCw9L.js → program-context-tphS7xu7.js} +41 -41
- package/dist/{prompt-select-styled-CSMviLJY.js → prompt-select-styled-DL2p1pfi.js} +40 -40
- package/dist/{provider-auth-helpers-CgNWlsqs.js → provider-auth-helpers-BqWiy-r-.js} +5 -5
- package/dist/{proxy-env-CRD7fbqp.js → proxy-env-D1tz4Z6a.js} +1 -1
- package/dist/{push-apns-DoYzx3tH.js → push-apns-C-YdARdy.js} +5 -5
- package/dist/{pw-ai-yKJj32B4.js → pw-ai-SVeR5d2o.js} +18 -18
- package/dist/{qmd-manager-AYDUTXmc.js → qmd-manager-B-XXhWVw.js} +20 -20
- package/dist/{qr-cli-cikAHfYn.js → qr-cli-B4fjHvn1.js} +2 -2
- package/dist/{query-expansion-CV2Z4_mS.js → query-expansion-Bf60ekMj.js} +12 -12
- package/dist/{redact-snapshot-C9T1079O.js → redact-snapshot-DRqM8Vla.js} +1 -1
- package/dist/{register.agent-BlxoyQt0.js → register.agent-BdiM0qkl.js} +97 -97
- package/dist/register.configure-wANXDbzQ.js +164 -0
- package/dist/{register.maintenance-C-Yv2mHK.js → register.maintenance-CMAt3Nl8.js} +93 -93
- package/dist/{register.message-CUNXtFOj.js → register.message-CbxQ5lgi.js} +73 -73
- package/dist/{register.onboard-BKXm1mL7.js → register.onboard-CbiTdKQX.js} +18 -18
- package/dist/{register.setup-DaT9AIAz.js → register.setup-KhsHMx2v.js} +21 -21
- package/dist/{register.status-health-sessions-7yZmSvUL.js → register.status-health-sessions-Bw5YDa_s.js} +86 -86
- package/dist/{reply-CeUYZhWu.js → reply-BWXzPVSJ.js} +149 -149
- package/dist/{rpc-BDpuIniF.js → rpc-DlN_W_L1.js} +1 -1
- package/dist/{runtime-Dw7Yw4OJ.js → runtime-Ci7mtLvH.js} +3 -3
- package/dist/{runtime-config-collectors-jhc1wDBg.js → runtime-config-collectors-CKmGmTQ5.js} +1 -1
- package/dist/{runtime-whatsapp-login.runtime-f293Z_er.js → runtime-whatsapp-login.runtime-Bxqt5jiO.js} +7 -7
- package/dist/runtime-whatsapp-outbound.runtime-B-UsXwvb.js +32 -0
- package/dist/{sandbox-BgsD1lf7.js → sandbox-Cuk1IWYT.js} +18 -18
- package/dist/{sandbox-cli-BnvmhiN9.js → sandbox-cli-BxgFeoAD.js} +25 -25
- package/dist/{secrets-cli-D7-K7P82.js → secrets-cli-DODLX29x.js} +11 -11
- package/dist/{security-cli-BFJAgNYH.js → security-cli-Ch83VrLP.js} +42 -42
- package/dist/{send-BvlkshC1.js → send-BfVgGHK6.js} +6 -6
- package/dist/{send-tK0H9nwq.js → send-Bw8LNCit.js} +5 -5
- package/dist/{send-CDms2FQA.js → send-C9UJKBSM.js} +4 -4
- package/dist/{send-CPFNtAP8.js → send-DX_fR45p.js} +11 -11
- package/dist/{send-C3Aeswif.js → send-FTQaNJPj.js} +8 -8
- package/dist/{server-OfKJG6Bo.js → server-Q9nnn04D.js} +20 -20
- package/dist/{server-context-B-0KzcZE.js → server-context-CX28l04l.js} +12 -12
- package/dist/{server-lifecycle-D6VNKVvQ.js → server-lifecycle-yAUMTJhv.js} +2 -2
- package/dist/{server-middleware-7cXowO4W.js → server-middleware-DIc4WJOS.js} +1 -1
- package/dist/{server-node-events-DWQhNK-0.js → server-node-events-qU3NTncQ.js} +73 -73
- package/dist/{service-Dk-UMipf.js → service-D4y0_Q5Z.js} +15 -15
- package/dist/{session-Da18ilJ0.js → session-CZJ5Ux6-.js} +1 -1
- package/dist/{sessions-CmjcNTJ3.js → sessions-C5H_BZSr.js} +15 -15
- package/dist/{shared-BzY0v0tS.js → shared-CxdBWgym.js} +3 -3
- package/dist/{shared-BcB-feC8.js → shared-DwNtcoQg.js} +1 -1
- package/dist/{skill-commands-BEWkEml_.js → skill-commands-BSRPnzXp.js} +5 -5
- package/dist/{skill-scanner-Bb5SMbCz.js → skill-scanner-rdr9cQew.js} +6 -6
- package/dist/{skills-Rnr7zPen.js → skills-BnBOxX1c.js} +3 -3
- package/dist/{skills-cli-BowIIIzH.js → skills-cli-CUgeYV1y.js} +5 -5
- package/dist/{skills-install-BLNCKuex.js → skills-install-BE04CZ6e.js} +6 -6
- package/dist/{skills-status-BCU-5otB.js → skills-status-DQw98BkG.js} +1 -1
- package/dist/{slash-commands.runtime-BgVgQ-Eh.js → slash-commands.runtime-BPtL2Qev.js} +11 -11
- package/dist/slash-dispatch.runtime-Cf9dq1k6.js +113 -0
- package/dist/{slash-skill-commands.runtime-4dOiU6U0.js → slash-skill-commands.runtime-9BYoANpd.js} +15 -15
- package/dist/{squidclaw-root-BcB7vo9M.js → squidclaw-root-CnE19yKj.js} +8 -8
- package/dist/{status-COTRBaam.js → status-rb5Jz-VU.js} +26 -26
- package/dist/{status.update-BUql4yz-.js → status.update-BNODJGA9.js} +2 -2
- package/dist/{store-aa15VM42.js → store-PDMRmC5Z.js} +5 -5
- package/dist/subagent-registry-runtime-CTiA365B.js +113 -0
- package/dist/{system-cli-CgCUbH_M.js → system-cli-DJYyTO07.js} +9 -9
- package/dist/{system-run-command-Ny1SbbOD.js → system-run-command-BgnCyvrj.js} +1 -1
- package/dist/{systemd-zbKl2Q3E.js → systemd-fP8tz4aL.js} +9 -9
- package/dist/{systemd-hints-C9_7ouv7.js → systemd-hints-BG_t__ZD.js} +6 -6
- package/dist/{systemd-linger-BM6JyzAr.js → systemd-linger-DgK8uuKY.js} +1 -1
- package/dist/{tables-jZMI8hLl.js → tables-DUSFF9-W.js} +1 -1
- package/dist/{tailnet-gTCqUBfJ.js → tailnet-CLkKVwDq.js} +1 -1
- package/dist/target-errors-BxwxgIDk.js +195 -0
- package/dist/{tool-images-DTl_LHMa.js → tool-images-FhSCiY-o.js} +1 -1
- package/dist/{tui-kDK-MAOc.js → tui-BMOMT-ma.js} +6 -6
- package/dist/{tui-cli-Dxy6fKkU.js → tui-cli-kqZ_-2Mz.js} +32 -32
- package/dist/{update-ZUTn6Jsu.js → update-blK9j2ag.js} +3 -3
- package/dist/{update-cli-D_QEiKyz.js → update-cli-gLKrP8UQ.js} +102 -102
- package/dist/{update-runner-DOXPSA_-.js → update-runner-C2UrF4oZ.js} +16 -16
- package/dist/web-VmjeceHS.js +117 -0
- package/dist/{webhooks-cli-D1iehjkP.js → webhooks-cli-BEXPBILa.js} +6 -6
- package/dist/{whatsapp-actions-hN5bwjWU.js → whatsapp-actions-DhiV181U.js} +17 -17
- package/dist/{with-timeout-BjaANd4G.js → with-timeout-BCAfkt03.js} +3 -3
- package/dist/{workspace-BITWyKG4.js → workspace-B-k5DNiQ.js} +1 -1
- package/dist/{workspace-dirs-B7O9BAHp.js → workspace-dirs-B2dNahfe.js} +1 -1
- package/dist/{ws-Bx8lpC1N.js → ws-DKt5HoA5.js} +2 -2
- package/dist/{wsl-wYxPJ8EO.js → wsl-CgxzAzRe.js} +2 -2
- package/package.json +1 -1
- package/dist/deliver-runtime-uwleBPlq.js +0 -61
- package/dist/deps-send-discord.runtime-CuZGpA7H.js +0 -36
- package/dist/deps-send-imessage.runtime-ByVW2alP.js +0 -35
- package/dist/deps-send-signal.runtime-Dl4GaCbQ.js +0 -34
- package/dist/deps-send-slack.runtime-BEV10FHj.js +0 -32
- package/dist/deps-send-whatsapp.runtime-Di0SEPNK.js +0 -118
- package/dist/image-runtime-B5Q4J9w2.js +0 -55
- package/dist/register.configure-CGptmTVZ.js +0 -164
- package/dist/runtime-whatsapp-outbound.runtime-uDhEmWe1.js +0 -32
- package/dist/slash-dispatch.runtime-D83FVeU7.js +0 -113
- package/dist/subagent-registry-runtime-CrT5RSO9.js +0 -113
- package/dist/web-DtSq_aUB.js +0 -117
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { _ as escapeRegExp } from "./logger-DDdrdbDu.js";
|
|
2
|
+
|
|
3
|
+
//#region src/auto-reply/tokens.ts
|
|
4
|
+
const HEARTBEAT_TOKEN = "HEARTBEAT_OK";
|
|
5
|
+
const SILENT_REPLY_TOKEN = "NO_REPLY";
|
|
6
|
+
const silentExactRegexByToken = /* @__PURE__ */ new Map();
|
|
7
|
+
const silentTrailingRegexByToken = /* @__PURE__ */ new Map();
|
|
8
|
+
function getSilentExactRegex(token) {
|
|
9
|
+
const cached = silentExactRegexByToken.get(token);
|
|
10
|
+
if (cached) return cached;
|
|
11
|
+
const escaped = escapeRegExp(token);
|
|
12
|
+
const regex = new RegExp(`^\\s*${escaped}\\s*$`);
|
|
13
|
+
silentExactRegexByToken.set(token, regex);
|
|
14
|
+
return regex;
|
|
15
|
+
}
|
|
16
|
+
function getSilentTrailingRegex(token) {
|
|
17
|
+
const cached = silentTrailingRegexByToken.get(token);
|
|
18
|
+
if (cached) return cached;
|
|
19
|
+
const escaped = escapeRegExp(token);
|
|
20
|
+
const regex = new RegExp(`(?:^|\\s+|\\*+)${escaped}\\s*$`);
|
|
21
|
+
silentTrailingRegexByToken.set(token, regex);
|
|
22
|
+
return regex;
|
|
23
|
+
}
|
|
24
|
+
function isSilentReplyText(text, token = SILENT_REPLY_TOKEN) {
|
|
25
|
+
if (!text) return false;
|
|
26
|
+
return getSilentExactRegex(token).test(text);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Strip a trailing silent reply token from mixed-content text.
|
|
30
|
+
* Returns the remaining text with the token removed (trimmed).
|
|
31
|
+
* If the result is empty, the entire message should be treated as silent.
|
|
32
|
+
*/
|
|
33
|
+
function stripSilentToken(text, token = SILENT_REPLY_TOKEN) {
|
|
34
|
+
return text.replace(getSilentTrailingRegex(token), "").trim();
|
|
35
|
+
}
|
|
36
|
+
function isSilentReplyPrefixText(text, token = SILENT_REPLY_TOKEN) {
|
|
37
|
+
if (!text) return false;
|
|
38
|
+
const trimmed = text.trimStart();
|
|
39
|
+
if (!trimmed) return false;
|
|
40
|
+
if (trimmed !== trimmed.toUpperCase()) return false;
|
|
41
|
+
const normalized = trimmed.toUpperCase();
|
|
42
|
+
if (!normalized) return false;
|
|
43
|
+
if (normalized.length < 2) return false;
|
|
44
|
+
if (/[^A-Z_]/.test(normalized)) return false;
|
|
45
|
+
const tokenUpper = token.toUpperCase();
|
|
46
|
+
if (!tokenUpper.startsWith(normalized)) return false;
|
|
47
|
+
if (normalized.includes("_")) return true;
|
|
48
|
+
return tokenUpper === SILENT_REPLY_TOKEN && normalized === "NO";
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
//#endregion
|
|
52
|
+
export { stripSilentToken as a, isSilentReplyText as i, SILENT_REPLY_TOKEN as n, isSilentReplyPrefixText as r, HEARTBEAT_TOKEN as t };
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
import { a as createSubsystemLogger } from "./logger-DDdrdbDu.js";
|
|
2
|
+
import { i as getImageMetadata, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-DN17S88I.js";
|
|
3
|
+
|
|
4
|
+
//#region src/media/base64.ts
|
|
5
|
+
function estimateBase64DecodedBytes(base64) {
|
|
6
|
+
let effectiveLen = 0;
|
|
7
|
+
for (let i = 0; i < base64.length; i += 1) {
|
|
8
|
+
if (base64.charCodeAt(i) <= 32) continue;
|
|
9
|
+
effectiveLen += 1;
|
|
10
|
+
}
|
|
11
|
+
if (effectiveLen === 0) return 0;
|
|
12
|
+
let padding = 0;
|
|
13
|
+
let end = base64.length - 1;
|
|
14
|
+
while (end >= 0 && base64.charCodeAt(end) <= 32) end -= 1;
|
|
15
|
+
if (end >= 0 && base64[end] === "=") {
|
|
16
|
+
padding = 1;
|
|
17
|
+
end -= 1;
|
|
18
|
+
while (end >= 0 && base64.charCodeAt(end) <= 32) end -= 1;
|
|
19
|
+
if (end >= 0 && base64[end] === "=") padding = 2;
|
|
20
|
+
}
|
|
21
|
+
const estimated = Math.floor(effectiveLen * 3 / 4) - padding;
|
|
22
|
+
return Math.max(0, estimated);
|
|
23
|
+
}
|
|
24
|
+
const BASE64_CHARS_RE = /^[A-Za-z0-9+/]+={0,2}$/;
|
|
25
|
+
/**
|
|
26
|
+
* Normalize and validate a base64 string.
|
|
27
|
+
* Returns canonical base64 (no whitespace) or undefined when invalid.
|
|
28
|
+
*/
|
|
29
|
+
function canonicalizeBase64(base64) {
|
|
30
|
+
const cleaned = base64.replace(/\s+/g, "");
|
|
31
|
+
if (!cleaned || cleaned.length % 4 !== 0 || !BASE64_CHARS_RE.test(cleaned)) return;
|
|
32
|
+
return cleaned;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
//#endregion
|
|
36
|
+
//#region src/agents/image-sanitization.ts
|
|
37
|
+
const DEFAULT_IMAGE_MAX_DIMENSION_PX = 1200;
|
|
38
|
+
const DEFAULT_IMAGE_MAX_BYTES = 5 * 1024 * 1024;
|
|
39
|
+
function resolveImageSanitizationLimits(cfg) {
|
|
40
|
+
const configured = cfg?.agents?.defaults?.imageMaxDimensionPx;
|
|
41
|
+
if (typeof configured !== "number" || !Number.isFinite(configured)) return {};
|
|
42
|
+
return { maxDimensionPx: Math.max(1, Math.floor(configured)) };
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
//#endregion
|
|
46
|
+
//#region src/agents/tool-images.ts
|
|
47
|
+
const MAX_IMAGE_DIMENSION_PX = DEFAULT_IMAGE_MAX_DIMENSION_PX;
|
|
48
|
+
const MAX_IMAGE_BYTES = DEFAULT_IMAGE_MAX_BYTES;
|
|
49
|
+
const log = createSubsystemLogger("agents/tool-images");
|
|
50
|
+
function isImageBlock(block) {
|
|
51
|
+
if (!block || typeof block !== "object") return false;
|
|
52
|
+
const rec = block;
|
|
53
|
+
return rec.type === "image" && typeof rec.data === "string" && typeof rec.mimeType === "string";
|
|
54
|
+
}
|
|
55
|
+
function isTextBlock(block) {
|
|
56
|
+
if (!block || typeof block !== "object") return false;
|
|
57
|
+
const rec = block;
|
|
58
|
+
return rec.type === "text" && typeof rec.text === "string";
|
|
59
|
+
}
|
|
60
|
+
function inferMimeTypeFromBase64(base64) {
|
|
61
|
+
const trimmed = base64.trim();
|
|
62
|
+
if (!trimmed) return;
|
|
63
|
+
if (trimmed.startsWith("/9j/")) return "image/jpeg";
|
|
64
|
+
if (trimmed.startsWith("iVBOR")) return "image/png";
|
|
65
|
+
if (trimmed.startsWith("R0lGOD")) return "image/gif";
|
|
66
|
+
}
|
|
67
|
+
function formatBytesShort(bytes) {
|
|
68
|
+
if (!Number.isFinite(bytes) || bytes < 1024) return `${Math.max(0, Math.round(bytes))}B`;
|
|
69
|
+
if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)}KB`;
|
|
70
|
+
return `${(bytes / (1024 * 1024)).toFixed(2)}MB`;
|
|
71
|
+
}
|
|
72
|
+
function parseMediaPathFromText(text) {
|
|
73
|
+
for (const line of text.split(/\r?\n/u)) {
|
|
74
|
+
const trimmed = line.trim();
|
|
75
|
+
if (!trimmed.startsWith("MEDIA:")) continue;
|
|
76
|
+
const raw = trimmed.slice(6).trim();
|
|
77
|
+
if (!raw) continue;
|
|
78
|
+
return (raw.match(/^`([^`]+)`$/u)?.[1] ?? raw).trim();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function fileNameFromPathLike(pathLike) {
|
|
82
|
+
const value = pathLike.trim();
|
|
83
|
+
if (!value) return;
|
|
84
|
+
try {
|
|
85
|
+
const candidate = new URL(value).pathname.split("/").filter(Boolean).at(-1);
|
|
86
|
+
return candidate && candidate.length > 0 ? candidate : void 0;
|
|
87
|
+
} catch {}
|
|
88
|
+
const candidate = value.replaceAll("\\", "/").split("/").filter(Boolean).at(-1);
|
|
89
|
+
return candidate && candidate.length > 0 ? candidate : void 0;
|
|
90
|
+
}
|
|
91
|
+
function inferImageFileName(params) {
|
|
92
|
+
const rec = params.block;
|
|
93
|
+
for (const key of [
|
|
94
|
+
"fileName",
|
|
95
|
+
"filename",
|
|
96
|
+
"path",
|
|
97
|
+
"url"
|
|
98
|
+
]) {
|
|
99
|
+
const raw = rec[key];
|
|
100
|
+
if (typeof raw !== "string" || raw.trim().length === 0) continue;
|
|
101
|
+
const candidate = fileNameFromPathLike(raw);
|
|
102
|
+
if (candidate) return candidate;
|
|
103
|
+
}
|
|
104
|
+
if (typeof rec.name === "string" && rec.name.trim().length > 0) return rec.name.trim();
|
|
105
|
+
if (params.mediaPathHint) {
|
|
106
|
+
const candidate = fileNameFromPathLike(params.mediaPathHint);
|
|
107
|
+
if (candidate) return candidate;
|
|
108
|
+
}
|
|
109
|
+
if (typeof params.label === "string" && params.label.startsWith("read:")) {
|
|
110
|
+
const candidate = fileNameFromPathLike(params.label.slice(5));
|
|
111
|
+
if (candidate) return candidate;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
async function resizeImageBase64IfNeeded(params) {
|
|
115
|
+
const buf = Buffer.from(params.base64, "base64");
|
|
116
|
+
const meta = await getImageMetadata(buf);
|
|
117
|
+
const width = meta?.width;
|
|
118
|
+
const height = meta?.height;
|
|
119
|
+
const overBytes = buf.byteLength > params.maxBytes;
|
|
120
|
+
const hasDimensions = typeof width === "number" && typeof height === "number";
|
|
121
|
+
const overDimensions = hasDimensions && (width > params.maxDimensionPx || height > params.maxDimensionPx);
|
|
122
|
+
if (hasDimensions && !overBytes && width <= params.maxDimensionPx && height <= params.maxDimensionPx) return {
|
|
123
|
+
base64: params.base64,
|
|
124
|
+
mimeType: params.mimeType,
|
|
125
|
+
resized: false,
|
|
126
|
+
width,
|
|
127
|
+
height
|
|
128
|
+
};
|
|
129
|
+
const maxDim = hasDimensions ? Math.max(width ?? 0, height ?? 0) : params.maxDimensionPx;
|
|
130
|
+
const sideStart = maxDim > 0 ? Math.min(params.maxDimensionPx, maxDim) : params.maxDimensionPx;
|
|
131
|
+
const sideGrid = buildImageResizeSideGrid(params.maxDimensionPx, sideStart);
|
|
132
|
+
let smallest = null;
|
|
133
|
+
for (const side of sideGrid) for (const quality of IMAGE_REDUCE_QUALITY_STEPS) {
|
|
134
|
+
const out = await resizeToJpeg({
|
|
135
|
+
buffer: buf,
|
|
136
|
+
maxSide: side,
|
|
137
|
+
quality,
|
|
138
|
+
withoutEnlargement: true
|
|
139
|
+
});
|
|
140
|
+
if (!smallest || out.byteLength < smallest.size) smallest = {
|
|
141
|
+
buffer: out,
|
|
142
|
+
size: out.byteLength
|
|
143
|
+
};
|
|
144
|
+
if (out.byteLength <= params.maxBytes) {
|
|
145
|
+
const sourcePixels = typeof width === "number" && typeof height === "number" ? `${width}x${height}px` : "unknown";
|
|
146
|
+
const sourceWithFile = params.fileName ? `${params.fileName} ${sourcePixels}` : sourcePixels;
|
|
147
|
+
const byteReductionPct = buf.byteLength > 0 ? Number(((buf.byteLength - out.byteLength) / buf.byteLength * 100).toFixed(1)) : 0;
|
|
148
|
+
log.info(`Image resized to fit limits: ${sourceWithFile} ${formatBytesShort(buf.byteLength)} -> ${formatBytesShort(out.byteLength)} (-${byteReductionPct}%)`, {
|
|
149
|
+
label: params.label,
|
|
150
|
+
fileName: params.fileName,
|
|
151
|
+
sourceMimeType: params.mimeType,
|
|
152
|
+
sourceWidth: width,
|
|
153
|
+
sourceHeight: height,
|
|
154
|
+
sourceBytes: buf.byteLength,
|
|
155
|
+
maxBytes: params.maxBytes,
|
|
156
|
+
maxDimensionPx: params.maxDimensionPx,
|
|
157
|
+
triggerOverBytes: overBytes,
|
|
158
|
+
triggerOverDimensions: overDimensions,
|
|
159
|
+
outputMimeType: "image/jpeg",
|
|
160
|
+
outputBytes: out.byteLength,
|
|
161
|
+
outputQuality: quality,
|
|
162
|
+
outputMaxSide: side,
|
|
163
|
+
byteReductionPct
|
|
164
|
+
});
|
|
165
|
+
return {
|
|
166
|
+
base64: out.toString("base64"),
|
|
167
|
+
mimeType: "image/jpeg",
|
|
168
|
+
resized: true,
|
|
169
|
+
width,
|
|
170
|
+
height
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
const best = smallest?.buffer ?? buf;
|
|
175
|
+
const maxMb = (params.maxBytes / (1024 * 1024)).toFixed(0);
|
|
176
|
+
const gotMb = (best.byteLength / (1024 * 1024)).toFixed(2);
|
|
177
|
+
const sourcePixels = typeof width === "number" && typeof height === "number" ? `${width}x${height}px` : "unknown";
|
|
178
|
+
const sourceWithFile = params.fileName ? `${params.fileName} ${sourcePixels}` : sourcePixels;
|
|
179
|
+
log.warn(`Image resize failed to fit limits: ${sourceWithFile} best=${formatBytesShort(best.byteLength)} limit=${formatBytesShort(params.maxBytes)}`, {
|
|
180
|
+
label: params.label,
|
|
181
|
+
fileName: params.fileName,
|
|
182
|
+
sourceMimeType: params.mimeType,
|
|
183
|
+
sourceWidth: width,
|
|
184
|
+
sourceHeight: height,
|
|
185
|
+
sourceBytes: buf.byteLength,
|
|
186
|
+
maxDimensionPx: params.maxDimensionPx,
|
|
187
|
+
maxBytes: params.maxBytes,
|
|
188
|
+
smallestCandidateBytes: best.byteLength,
|
|
189
|
+
triggerOverBytes: overBytes,
|
|
190
|
+
triggerOverDimensions: overDimensions
|
|
191
|
+
});
|
|
192
|
+
throw new Error(`Image could not be reduced below ${maxMb}MB (got ${gotMb}MB)`);
|
|
193
|
+
}
|
|
194
|
+
async function sanitizeContentBlocksImages(blocks, label, opts = {}) {
|
|
195
|
+
const maxDimensionPx = Math.max(opts.maxDimensionPx ?? MAX_IMAGE_DIMENSION_PX, 1);
|
|
196
|
+
const maxBytes = Math.max(opts.maxBytes ?? MAX_IMAGE_BYTES, 1);
|
|
197
|
+
const out = [];
|
|
198
|
+
let mediaPathHint;
|
|
199
|
+
for (const block of blocks) {
|
|
200
|
+
if (isTextBlock(block)) {
|
|
201
|
+
const mediaPath = parseMediaPathFromText(block.text);
|
|
202
|
+
if (mediaPath) mediaPathHint = mediaPath;
|
|
203
|
+
}
|
|
204
|
+
if (!isImageBlock(block)) {
|
|
205
|
+
out.push(block);
|
|
206
|
+
continue;
|
|
207
|
+
}
|
|
208
|
+
const data = block.data.trim();
|
|
209
|
+
if (!data) {
|
|
210
|
+
out.push({
|
|
211
|
+
type: "text",
|
|
212
|
+
text: `[${label}] omitted empty image payload`
|
|
213
|
+
});
|
|
214
|
+
continue;
|
|
215
|
+
}
|
|
216
|
+
const canonicalData = canonicalizeBase64(data);
|
|
217
|
+
if (!canonicalData) {
|
|
218
|
+
out.push({
|
|
219
|
+
type: "text",
|
|
220
|
+
text: `[${label}] omitted image payload: invalid base64`
|
|
221
|
+
});
|
|
222
|
+
continue;
|
|
223
|
+
}
|
|
224
|
+
try {
|
|
225
|
+
const mimeType = inferMimeTypeFromBase64(canonicalData) ?? block.mimeType;
|
|
226
|
+
const resized = await resizeImageBase64IfNeeded({
|
|
227
|
+
base64: canonicalData,
|
|
228
|
+
mimeType,
|
|
229
|
+
maxDimensionPx,
|
|
230
|
+
maxBytes,
|
|
231
|
+
label,
|
|
232
|
+
fileName: inferImageFileName({
|
|
233
|
+
block,
|
|
234
|
+
label,
|
|
235
|
+
mediaPathHint
|
|
236
|
+
})
|
|
237
|
+
});
|
|
238
|
+
out.push({
|
|
239
|
+
...block,
|
|
240
|
+
data: resized.base64,
|
|
241
|
+
mimeType: resized.resized ? resized.mimeType : mimeType
|
|
242
|
+
});
|
|
243
|
+
} catch (err) {
|
|
244
|
+
out.push({
|
|
245
|
+
type: "text",
|
|
246
|
+
text: `[${label}] omitted image payload: ${String(err)}`
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
return out;
|
|
251
|
+
}
|
|
252
|
+
async function sanitizeImageBlocks(images, label, opts = {}) {
|
|
253
|
+
if (images.length === 0) return {
|
|
254
|
+
images,
|
|
255
|
+
dropped: 0
|
|
256
|
+
};
|
|
257
|
+
const next = (await sanitizeContentBlocksImages(images, label, opts)).filter(isImageBlock);
|
|
258
|
+
return {
|
|
259
|
+
images: next,
|
|
260
|
+
dropped: Math.max(0, images.length - next.length)
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
async function sanitizeToolResultImages(result, label, opts = {}) {
|
|
264
|
+
const content = Array.isArray(result.content) ? result.content : [];
|
|
265
|
+
if (!content.some((b) => isImageBlock(b) || isTextBlock(b))) return result;
|
|
266
|
+
const next = await sanitizeContentBlocksImages(content, label, opts);
|
|
267
|
+
return {
|
|
268
|
+
...result,
|
|
269
|
+
content: next
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
//#endregion
|
|
274
|
+
export { canonicalizeBase64 as a, resolveImageSanitizationLimits as i, sanitizeImageBlocks as n, estimateBase64DecodedBytes as o, sanitizeToolResultImages as r, sanitizeContentBlocksImages as t };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import "./run-with-concurrency-5DMu9szx.js";
|
|
2
|
+
import { _ as webAuthExists, c as logWebSelfId, d as pickWebChannel, o as WA_WEB_AUTH_DIR } from "./accounts-C-BT6Po7.js";
|
|
3
|
+
import "./reply-DgcrQBKL.js";
|
|
4
|
+
import "./paths-8xF5kDne.js";
|
|
5
|
+
import "./github-copilot-token-Dy-0-Kh3.js";
|
|
6
|
+
import "./config-FhBFLsNm.js";
|
|
7
|
+
import "./logger-DDdrdbDu.js";
|
|
8
|
+
import "./thinking-Bu-w5mW5.js";
|
|
9
|
+
import "./image-ops-DN17S88I.js";
|
|
10
|
+
import "./pi-embedded-helpers-CfzQPXDC.js";
|
|
11
|
+
import "./plugins-6NxPd6TS.js";
|
|
12
|
+
import "./accounts-DQDXV8eB.js";
|
|
13
|
+
import "./accounts-B6gye1Jd.js";
|
|
14
|
+
import "./send-BSoMbeqA.js";
|
|
15
|
+
import "./paths-C6W4VHoa.js";
|
|
16
|
+
import "./fetch-B_RcOnt9.js";
|
|
17
|
+
import "./redact-BoNEjbpF.js";
|
|
18
|
+
import "./errors-B8oJXuCF.js";
|
|
19
|
+
import "./channel-activity-JjLRpUa_.js";
|
|
20
|
+
import "./path-alias-guards-gBhrAn14.js";
|
|
21
|
+
import "./fs-safe-Dqmpk-Fr.js";
|
|
22
|
+
import "./ssrf-B3XRWBsP.js";
|
|
23
|
+
import "./fetch-guard-W_A4uSz2.js";
|
|
24
|
+
import "./local-roots-BTW3ifco.js";
|
|
25
|
+
import "./ir-JaPZ0yKH.js";
|
|
26
|
+
import "./render-HmipMDlP.js";
|
|
27
|
+
import "./tables-bDM_jlLP.js";
|
|
28
|
+
import "./send-Byyfc20_.js";
|
|
29
|
+
import "./send-CI-xWEs7.js";
|
|
30
|
+
import "./tool-images-D0G_giwP.js";
|
|
31
|
+
import "./target-errors-BVBW25Y3.js";
|
|
32
|
+
import "./send-MlSZ82sA.js";
|
|
33
|
+
import "./audio-transcription-runner-BDmtq7-q.js";
|
|
34
|
+
import "./tokens-CTIYTLWu.js";
|
|
35
|
+
import "./skill-commands-yum46YuA.js";
|
|
36
|
+
import "./skills-DUphJGKn.js";
|
|
37
|
+
import "./chrome-B5PWOUbr.js";
|
|
38
|
+
import "./deliver-DEbTlzFy.js";
|
|
39
|
+
import "./diagnostic-Dv9S12vm.js";
|
|
40
|
+
import "./store-DFvIhzWZ.js";
|
|
41
|
+
import "./commands-registry-BKeyJUxK.js";
|
|
42
|
+
import { n as monitorWebInbox, t as monitorWebChannel } from "./channel-web-DNWsxhYh.js";
|
|
43
|
+
import "./image-BSFy8d1M.js";
|
|
44
|
+
import "./api-key-rotation-CrX0fvDj.js";
|
|
45
|
+
import "./proxy-fetch-ZPEvp58f.js";
|
|
46
|
+
import "./pi-model-discovery-Bt6B0MAj.js";
|
|
47
|
+
import "./send-DzP9EJqK.js";
|
|
48
|
+
import "./outbound-attachment-dTE6EVdX.js";
|
|
49
|
+
import "./proxy-BKdNrmWL.js";
|
|
50
|
+
import "./manager-DzFj9oHX.js";
|
|
51
|
+
import "./query-expansion-eeVz_aEm.js";
|
|
52
|
+
import { t as sendMessageWhatsApp } from "./outbound-CQ7uBBML.js";
|
|
53
|
+
import { i as waitForWaConnection, t as createWaSocket } from "./session-DFy97tfW.js";
|
|
54
|
+
import { t as loginWeb } from "./login-BXGRny-S.js";
|
|
55
|
+
|
|
56
|
+
export { WA_WEB_AUTH_DIR, createWaSocket, logWebSelfId, loginWeb, monitorWebChannel, monitorWebInbox, pickWebChannel, sendMessageWhatsApp, waitForWaConnection, webAuthExists };
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import "./run-with-concurrency-5DMu9szx.js";
|
|
2
|
+
import { i as resolveWhatsAppAccount } from "./accounts-C-BT6Po7.js";
|
|
3
|
+
import "./paths-8xF5kDne.js";
|
|
4
|
+
import "./github-copilot-token-Dy-0-Kh3.js";
|
|
5
|
+
import "./config-FhBFLsNm.js";
|
|
6
|
+
import "./logger-DDdrdbDu.js";
|
|
7
|
+
import "./image-ops-DN17S88I.js";
|
|
8
|
+
import "./plugins-6NxPd6TS.js";
|
|
9
|
+
import "./path-alias-guards-gBhrAn14.js";
|
|
10
|
+
import "./fs-safe-Dqmpk-Fr.js";
|
|
11
|
+
import "./ssrf-B3XRWBsP.js";
|
|
12
|
+
import "./fetch-guard-W_A4uSz2.js";
|
|
13
|
+
import "./local-roots-BTW3ifco.js";
|
|
14
|
+
import "./ir-JaPZ0yKH.js";
|
|
15
|
+
import "./render-HmipMDlP.js";
|
|
16
|
+
import "./tables-bDM_jlLP.js";
|
|
17
|
+
import "./tool-images-D0G_giwP.js";
|
|
18
|
+
import { f as readReactionParams, h as readStringParam, i as ToolAuthorizationError, l as jsonResult, o as createActionGate } from "./target-errors-BVBW25Y3.js";
|
|
19
|
+
import { t as resolveWhatsAppOutboundTarget } from "./resolve-outbound-target-CbaJ-kc2.js";
|
|
20
|
+
import { r as sendReactionWhatsApp } from "./outbound-CQ7uBBML.js";
|
|
21
|
+
|
|
22
|
+
//#region src/agents/tools/whatsapp-target-auth.ts
|
|
23
|
+
function resolveAuthorizedWhatsAppOutboundTarget(params) {
|
|
24
|
+
const account = resolveWhatsAppAccount({
|
|
25
|
+
cfg: params.cfg,
|
|
26
|
+
accountId: params.accountId
|
|
27
|
+
});
|
|
28
|
+
const resolution = resolveWhatsAppOutboundTarget({
|
|
29
|
+
to: params.chatJid,
|
|
30
|
+
allowFrom: account.allowFrom ?? [],
|
|
31
|
+
mode: "implicit"
|
|
32
|
+
});
|
|
33
|
+
if (!resolution.ok) throw new ToolAuthorizationError(`WhatsApp ${params.actionLabel} blocked: chatJid "${params.chatJid}" is not in the configured allowFrom list for account "${account.accountId}".`);
|
|
34
|
+
return {
|
|
35
|
+
to: resolution.to,
|
|
36
|
+
accountId: account.accountId
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
//#endregion
|
|
41
|
+
//#region src/agents/tools/whatsapp-actions.ts
|
|
42
|
+
async function handleWhatsAppAction(params, cfg) {
|
|
43
|
+
const action = readStringParam(params, "action", { required: true });
|
|
44
|
+
const isActionEnabled = createActionGate(cfg.channels?.whatsapp?.actions);
|
|
45
|
+
if (action === "react") {
|
|
46
|
+
if (!isActionEnabled("reactions")) throw new Error("WhatsApp reactions are disabled.");
|
|
47
|
+
const chatJid = readStringParam(params, "chatJid", { required: true });
|
|
48
|
+
const messageId = readStringParam(params, "messageId", { required: true });
|
|
49
|
+
const { emoji, remove, isEmpty } = readReactionParams(params, { removeErrorMessage: "Emoji is required to remove a WhatsApp reaction." });
|
|
50
|
+
const participant = readStringParam(params, "participant");
|
|
51
|
+
const accountId = readStringParam(params, "accountId");
|
|
52
|
+
const fromMeRaw = params.fromMe;
|
|
53
|
+
const fromMe = typeof fromMeRaw === "boolean" ? fromMeRaw : void 0;
|
|
54
|
+
const resolved = resolveAuthorizedWhatsAppOutboundTarget({
|
|
55
|
+
cfg,
|
|
56
|
+
chatJid,
|
|
57
|
+
accountId,
|
|
58
|
+
actionLabel: "reaction"
|
|
59
|
+
});
|
|
60
|
+
const resolvedEmoji = remove ? "" : emoji;
|
|
61
|
+
await sendReactionWhatsApp(resolved.to, messageId, resolvedEmoji, {
|
|
62
|
+
verbose: false,
|
|
63
|
+
fromMe,
|
|
64
|
+
participant: participant ?? void 0,
|
|
65
|
+
accountId: resolved.accountId
|
|
66
|
+
});
|
|
67
|
+
if (!remove && !isEmpty) return jsonResult({
|
|
68
|
+
ok: true,
|
|
69
|
+
added: emoji
|
|
70
|
+
});
|
|
71
|
+
return jsonResult({
|
|
72
|
+
ok: true,
|
|
73
|
+
removed: true
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
throw new Error(`Unsupported WhatsApp action: ${action}`);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
//#endregion
|
|
80
|
+
export { handleWhatsAppAction };
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
2
2
|
import { m as normalizeE164 } from "./utils-DMGXr25O.js";
|
|
3
|
-
import { d as resolveDefaultAgentId } from "./agent-scope-
|
|
3
|
+
import { d as resolveDefaultAgentId } from "./agent-scope-C1XMay0T.js";
|
|
4
4
|
import { t as createSubsystemLogger } from "./subsystem-DC87CPVS.js";
|
|
5
5
|
import { _ as normalizeAccountId, c as normalizeAgentId, g as DEFAULT_ACCOUNT_ID, v as normalizeOptionalAccountId } from "./session-key-CIXZm7v4.js";
|
|
6
6
|
import { M as normalizeResolvedSecretInputString, f as getActivePluginRegistryVersion, l as normalizeChatChannelId, n as CHAT_CHANNEL_ORDER, p as requireActivePluginRegistry, s as normalizeAnyChannelId } from "./registry-CpzNS8-a.js";
|
|
7
7
|
import { t as isTruthyEnvValue } from "./env-DeB9SeAQ.js";
|
|
8
|
-
import { v as createAccountListHelpers, y as resolveAccountEntry } from "./accounts-
|
|
8
|
+
import { v as createAccountListHelpers, y as resolveAccountEntry } from "./accounts-D095MOmG.js";
|
|
9
9
|
import fs from "node:fs";
|
|
10
10
|
import util from "node:util";
|
|
11
11
|
|