@symerian/symi 2.5.8 → 2.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{accounts-qtxJ-6em.js → accounts-3dCrO3oZ.js} +1 -1
- package/dist/{accounts-tNElYrCH.js → accounts-BRw8yhIW.js} +21 -21
- package/dist/{accounts-CWktKM8a.js → accounts-BuZxOb3B.js} +1 -1
- package/dist/{active-listener-C9r8ZB9m.js → active-listener-CfHHV2SU.js} +1 -1
- package/dist/{agent-scope-BxoUQqgM.js → agent-scope-CpEJ0B88.js} +3 -3
- package/dist/{agents-CXloh6n_.js → agents-DQIz-_on.js} +4 -4
- package/dist/{agents.config-BuTzBaXf.js → agents.config-CIJRaVWl.js} +1 -1
- package/dist/{agents.config-BhAJXAtA.js → agents.config-D8WPDf-m.js} +1 -1
- package/dist/{audio-preflight-O3ASWbaG.js → audio-preflight-BVaaZWkg.js} +34 -34
- package/dist/{audio-preflight-C40mKAp7.js → audio-preflight-CPBOQV4I.js} +4 -4
- package/dist/{auth-choice-DvaVrSwn.js → auth-choice-BqFbNDuP.js} +1 -1
- package/dist/{auth-choice-Br6zT8iS.js → auth-choice-DTDyJL1r.js} +1 -1
- package/dist/{model-auth-DK43VicI.js → auth-profiles-DdK1Hxaa.js} +412 -412
- package/dist/{banner-BtqKaQZr.js → banner-DYDCxnDL.js} +1 -1
- package/dist/{bindings-B7Ke6LJi.js → bindings-BsHoBLIE.js} +2 -2
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +60 -60
- package/dist/bundled/bootstrap-extra-files/handler.js +6 -6
- package/dist/bundled/command-logger/handler.js +3 -3
- package/dist/bundled/session-memory/handler.js +61 -61
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-activity-CsM_hJ_s.js → channel-activity-B6G1jnQT.js} +2 -2
- package/dist/{channel-options-CfLxsV76.js → channel-options-CvHSm_Kx.js} +1 -1
- package/dist/{channel-options-DFHEgad5.js → channel-options-vBCJhJB7.js} +1 -1
- package/dist/{channel-web-D-jDDmWN.js → channel-web-CM2LyWZW.js} +1 -1
- package/dist/{channels-cli-BEZORT4N.js → channels-cli-D5H3Wcho.js} +4 -4
- package/dist/{channels-cli-CT6wdGT8.js → channels-cli-DzOjNNFn.js} +4 -4
- package/dist/{chrome-BFekevcE.js → chrome-D2SKJnR7.js} +24 -24
- package/dist/{chrome-CDJYxX5a.js → chrome-DkaXoP36.js} +5 -5
- package/dist/{chunk-BW5f05BR.js → chunk-09egQapi.js} +1 -1
- package/dist/{cli-kxxM9xT0.js → cli-8hqssnRJ.js} +1 -1
- package/dist/{cli-CkxvN9Cb.js → cli-DNZwCDRe.js} +1 -1
- package/dist/{command-registry-DsqA8NDd.js → command-registry-CHtN2HeK.js} +9 -9
- package/dist/{commands-registry-D7CTCQPm.js → commands-registry-Bfc7Uz0o.js} +4 -4
- package/dist/{completion-cli-mZMiIG7C.js → completion-cli-C8y_J5KC.js} +1 -1
- package/dist/{completion-cli-QCrjurdu.js → completion-cli-Cov6N3BO.js} +2 -2
- package/dist/{config-DRbjHIwD.js → config-5SdHIcHU.js} +6 -6
- package/dist/{config-cli-CS_0o9LY.js → config-cli-B2REEd2l.js} +1 -1
- package/dist/{config-cli-DLsLPE4o.js → config-cli-BwO0xAbV.js} +1 -1
- package/dist/{configure-T9J4bw0H.js → configure-BWSYSi2-.js} +3 -3
- package/dist/{configure-BX4aNf3w.js → configure-C6yNe33U.js} +3 -3
- package/dist/{conversation-label-DXUkoKcB.js → conversation-label-Onz2hiJh.js} +1 -1
- package/dist/{deliver-BH0l3UKW.js → deliver-C-37cZUe.js} +1 -1
- package/dist/{deliver-CvCK5Mm9.js → deliver-C46-vyqg.js} +11 -11
- package/dist/{diagnostic-CI0kRQkt.js → diagnostic-rPhsBoZz.js} +2 -2
- package/dist/{doctor-completion-BKydQfCM.js → doctor-completion-BKKzstt6.js} +1 -1
- package/dist/{doctor-completion-CTodkFg2.js → doctor-completion-D7CDLFLg.js} +1 -1
- package/dist/entry.js +1 -1
- package/dist/{command-format-BaxDnULz.js → env-BDXYbTKj.js} +10 -10
- package/dist/{errors-BoQgnc8X.js → errors-XIsvXeC-.js} +1 -1
- package/dist/extensionAPI.js +6 -6
- package/dist/{frontmatter-C_bv_0P8.js → frontmatter-CTR5f_Ez.js} +2 -2
- package/dist/{gateway-cli-CZnyhTAu.js → gateway-cli-BhFM4Bkm.js} +20 -18
- package/dist/{gateway-cli-DEpU3Bg3.js → gateway-cli-Datohp3m.js} +20 -18
- package/dist/{gemini-auth-CdSPHuLl.js → gemini-auth-Dy12ZAH3.js} +2 -2
- package/dist/{github-copilot-token-C_qUP7p5.js → github-copilot-token-cCYzSU9h.js} +1 -1
- package/dist/{glass-ui-ws-KbKXJGb5.js → glass-ui-ws-BzqfD_wX.js} +7 -7
- package/dist/{glass-ui-ws-BdBSYcsf.js → glass-ui-ws-D9yvYULL.js} +7 -7
- package/dist/{health-DQmyj-7z.js → health-BjwDRAdd.js} +1 -1
- package/dist/{health-z-YCZRhf.js → health-C5XJPwpt.js} +1 -1
- package/dist/{hooks-cli-4d-QhgRs.js → hooks-cli-CafMq9Vr.js} +2 -2
- package/dist/{hooks-cli-BRehYEXJ.js → hooks-cli-U12oVyLH.js} +2 -2
- package/dist/{image-B0wGflxA.js → image-CuzFLQWC.js} +7 -7
- package/dist/{image-CHzdaNJ4.js → image-DcpMiprB.js} +1 -1
- package/dist/{image-ops-CvJzsyvE.js → image-ops-C7CauEK8.js} +99 -99
- package/dist/{inbound-context-BlHX0H3E.js → inbound-context-DSDTl6Kj.js} +2 -2
- package/dist/index.js +6 -6
- package/dist/{ir-DccrnjsE.js → ir-CTiz95Vb.js} +5 -5
- package/dist/llm-slug-generator.js +64 -84
- package/dist/{local-roots-DMwIh5cS.js → local-roots-DhZz0Ybs.js} +6 -6
- package/dist/{login-qr-Batf3PT5.js → login-qr-AP9agO-i.js} +13 -13
- package/dist/{login-CwCoxapk.js → login-ul8zaw_S.js} +7 -7
- package/dist/{manager-D_LwXbc6.js → manager-PprhCvO_.js} +25 -25
- package/dist/{manifest-registry-D0IQ3WuX.js → manifest-registry-yb7sAlu4.js} +2 -2
- package/dist/{markdown-tables-iMQQZu4Q.js → markdown-tables-C-BmIap8.js} +1 -1
- package/dist/{message-channel-Dz5lr5b0.js → message-channel-OlFBYAw8.js} +1 -1
- package/dist/{models-CPlSSoV0.js → models-Bo4iHJy-.js} +7 -8
- package/dist/{models-cli-BM2RWTmM.js → models-cli-6aNi3eN9.js} +7 -8
- package/dist/{models-cli-DDhpJuX3.js → models-cli-B5vh-XK8.js} +3 -3
- package/dist/{onboard-DpB21qno.js → onboard-Bm-pmstf.js} +2 -2
- package/dist/{onboard-channels-DjfS9mS6.js → onboard-channels-BRd1cXye.js} +1 -1
- package/dist/{onboard-channels-S0FbC25u.js → onboard-channels-CUl5U8kV.js} +1 -1
- package/dist/{onboard-BczLOUCW.js → onboard-f-GJ26Ix.js} +2 -2
- package/dist/{onboarding-CyPkawbg.js → onboarding-CvBDWlBJ.js} +3 -3
- package/dist/{onboarding--mrKZtpR.js → onboarding-DIVKvosg.js} +3 -3
- package/dist/{onboarding.finalize-0XoI3wLH.js → onboarding.finalize-DJX6mSLa.js} +6 -6
- package/dist/{onboarding.finalize-C0ijhYbg.js → onboarding.finalize-WSac-JKd.js} +5 -5
- package/dist/{outbound-D4fN_ZlE.js → outbound-CtMCmwxR.js} +7 -7
- package/dist/{outbound-attachment-DjNDa3zn.js → outbound-attachment-DJldbweZ.js} +2 -2
- package/dist/{paths-DLyHUt31.js → paths-CbQV9WEg.js} +2 -2
- package/dist/{pi-auth-json-0SYBFZTt.js → pi-auth-json-Bk8ERadJ.js} +10 -10
- package/dist/{pi-embedded-Cg70pjmm.js → pi-embedded-BmbbC1Sb.js} +20275 -20070
- package/dist/{pi-embedded-helpers-lgx_U5KS.js → pi-embedded-helpers-B8kqLWns.js} +4 -4
- package/dist/{pi-embedded-helpers-DLFjnVBb.js → pi-embedded-helpers-CfqDGQ9J.js} +81 -81
- package/dist/{plugin-registry-VhRGXCLQ.js → plugin-registry-2zUJMasm.js} +1 -1
- package/dist/{plugin-registry-Dxo1iUfJ.js → plugin-registry-5yf-hu_W.js} +1 -1
- package/dist/plugin-sdk/agents/model-token-filter.d.ts +10 -0
- package/dist/plugin-sdk/agents/pi-embedded-runner.d.ts +1 -1
- package/dist/plugin-sdk/agents/pi-tools.validate-wrapper.d.ts +23 -0
- package/dist/plugin-sdk/agents/pi-tools.validate.d.ts +26 -0
- package/dist/plugin-sdk/agents/tool-loop-detection.d.ts +3 -1
- package/dist/plugin-sdk/agents/unified-runner.d.ts +69 -1
- package/dist/plugin-sdk/auto-reply/reply/agent-runner-execution.d.ts +2 -2
- package/dist/plugin-sdk/{channel-web-DKo2tOO-.js → channel-web-DPyyTvFo.js} +1 -1
- package/dist/plugin-sdk/config/model-profiles.d.ts +2 -0
- package/dist/plugin-sdk/index.js +2 -2
- package/dist/plugin-sdk/infra/diagnostic-events.d.ts +1 -1
- package/dist/plugin-sdk/logging/diagnostic-session-state.d.ts +2 -0
- package/dist/plugin-sdk/logging/diagnostic.d.ts +1 -1
- package/dist/plugin-sdk/{reply-Ch4_18FZ.js → reply-QAcAd9ev.js} +536 -331
- package/dist/plugin-sdk/{tool-loop-detection-edmW8ZiF.js → tool-loop-detection-DU5sTIKg.js} +53 -3
- package/dist/plugin-sdk/{web-Dz2oyzw_.js → web-DaTTL9M0.js} +2 -2
- package/dist/{plugins-DQYI3Fr-.js → plugins-BzmbgY7s.js} +5 -5
- package/dist/{plugins-cli-zNr1ThAO.js → plugins-cli-D4eRESV2.js} +2 -2
- package/dist/{plugins-cli-DeDSnKlr.js → plugins-cli-DksVl33N.js} +2 -2
- package/dist/{program-COEKTv5u.js → program-BjORH7Cc.js} +7 -7
- package/dist/{program-context-CbM3x8lT.js → program-context-DaNGrTOm.js} +17 -17
- package/dist/{prompt-select-styled-d18_XWTb.js → prompt-select-styled-QaS2zul_.js} +4 -4
- package/dist/{prompt-select-styled-C6JLWNMU.js → prompt-select-styled-YOj4xigd.js} +4 -4
- package/dist/{provider-auth-helpers-BmH4oHwJ.js → provider-auth-helpers-BAGT_RXV.js} +1 -1
- package/dist/{provider-auth-helpers-C8cO9DLi.js → provider-auth-helpers-DCEbm2hz.js} +1 -1
- package/dist/{push-apns-CoqskfCc.js → push-apns-BECodU1i.js} +1 -1
- package/dist/{push-apns-CJtWrkQV.js → push-apns-Bek3ANJa.js} +1 -1
- package/dist/{pw-ai-De-KR9_s.js → pw-ai-1htA-NnS.js} +1 -1
- package/dist/{pw-ai-BnAKvSuw.js → pw-ai-m0mj2KWK.js} +16 -16
- package/dist/{qmd-manager-QHUP-_em.js → qmd-manager-iDLSiI4Z.js} +10 -10
- package/dist/{register.agent-C1Is84Q1.js → register.agent-B34lxx7F.js} +5 -5
- package/dist/{register.agent-fK3vOCU5.js → register.agent-DJHQo-Iq.js} +6 -6
- package/dist/{register.configure-CIwwqqt9.js → register.configure-BdhhIzb0.js} +6 -6
- package/dist/{register.configure-DFJeKFFK.js → register.configure-DC_-t5kj.js} +6 -6
- package/dist/{register.maintenance-BwTFd3Ax.js → register.maintenance-CITur3O_.js} +8 -8
- package/dist/{register.maintenance-DKDqruW6.js → register.maintenance-cs-A4kHF.js} +7 -7
- package/dist/{register.message-DYnXMP4c.js → register.message--RhtnEYn.js} +2 -2
- package/dist/{register.message-Ce57RPK8.js → register.message-PIaHm2pZ.js} +2 -2
- package/dist/{register.onboard-9glf-j43.js → register.onboard-CTJQoDcK.js} +4 -4
- package/dist/{register.onboard-Dj-_AJQr.js → register.onboard-DucZgrF7.js} +4 -4
- package/dist/{register.setup-C0CXUMFE.js → register.setup-2ZiUN7ui.js} +4 -4
- package/dist/{register.setup-Cp3DBI6D.js → register.setup-DD4Rgkt9.js} +4 -4
- package/dist/{register.status-health-sessions-DBXMyrNP.js → register.status-health-sessions-BqD7L8XL.js} +3 -3
- package/dist/{register.status-health-sessions-BncpB9Vw.js → register.status-health-sessions-sLgA92t7.js} +3 -3
- package/dist/{register.subclis-D6PmKJll.js → register.subclis-B2dGWFur.js} +9 -9
- package/dist/{registry-CK4e9hn8.js → registry-DYq1AYOv.js} +2 -2
- package/dist/{replies-BIX_isV7.js → replies-LSmuwOhA.js} +3 -3
- package/dist/{reply-BfZzgC9H.js → reply-DYnTEYoa.js} +537 -332
- package/dist/{reply-prefix-XlyuyChD.js → reply-prefix-DpqZu44Z.js} +1 -1
- package/dist/{resolve-route-CZ-1eqw0.js → resolve-route-C4_I4GFI.js} +5 -5
- package/dist/{retry-Cly39XZB.js → retry-BBVXkKBV.js} +1 -1
- package/dist/{run-main-wm3s04Xh.js → run-main-DWmu2b6D.js} +14 -14
- package/dist/{runner-DUBExAb5.js → runner-BcQ0sF9T.js} +1 -1
- package/dist/{runner-odEv83vv.js → runner-CU9l0uJh.js} +46 -46
- package/dist/{send-WyRqb4WD.js → send-CQAKg_12.js} +7 -7
- package/dist/{send-DeFniOjh.js → send-CVMyYPQw.js} +7 -7
- package/dist/{send-CiTGOvEc.js → send-CvhXrdgS.js} +12 -12
- package/dist/{send-DW96zgDL.js → send-DAN9hA5h.js} +6 -6
- package/dist/{send-B1u-LrcS.js → send-DYj_o4_F.js} +14 -14
- package/dist/{server-methods-D5zcFhng.js → server-methods-C8EWZt2g.js} +7 -7
- package/dist/{server-methods-xXv4ObXK.js → server-methods-vDGoM3xL.js} +7 -7
- package/dist/{server-node-events-BN7H6wBM.js → server-node-events-CKi12bol.js} +2 -2
- package/dist/{server-node-events-D4At7-pe.js → server-node-events-DFwGbkcO.js} +2 -2
- package/dist/{session-SM36BTsl.js → session-DSU1vxxi.js} +4 -4
- package/dist/{skill-commands-BJMb_psG.js → skill-commands-DcVwOafC.js} +17 -17
- package/dist/{skills-BFekKL7i.js → skills-Bs0AW1g3.js} +25 -25
- package/dist/{sqlite-DRbx2dhW.js → sqlite-D_mz1_-y.js} +17 -17
- package/dist/{status-XJTqV-CC.js → status--iNVOTMO.js} +2 -2
- package/dist/{status-PbQwO8SV.js → status-B1_iHrOg.js} +2 -2
- package/dist/{status-Nhvf_TEN.js → status-BQcdARV4.js} +1 -1
- package/dist/{status-C5rGEkur.js → status-DiX0DAtH.js} +1 -1
- package/dist/{store-C0wvOkae.js → store-01F_JM7O.js} +6 -6
- package/dist/{subagent-registry-DvCrN2PQ.js → subagent-registry-CXrOOgPW.js} +19438 -19233
- package/dist/{subsystem-Bs9YvKLa.js → subsystem-BjyjJF-d.js} +1 -1
- package/dist/{tables-DuZspiBu.js → tables-qMwbq29u.js} +1 -1
- package/dist/{target-errors-Be1SwYlW.js → target-errors-Bbr9rlzN.js} +2 -2
- package/dist/{thinking-CdlENGRW.js → thinking-BprCy23Z.js} +5 -5
- package/dist/{tokens-H1H1LiSQ.js → tokens-Bux9Y_xD.js} +1 -1
- package/dist/{tool-images-DXB7tqWi.js → tool-images-SqqWIT22.js} +2 -2
- package/dist/{tool-loop-detection-BgbtzUGc.js → tool-loop-detection-C7TCF2V2.js} +53 -3
- package/dist/{tool-loop-detection-BU3fbtCd.js → tool-loop-detection-D7qjFnRh.js} +53 -3
- package/dist/{tool-loop-detection-B6j1r-Wk.js → tool-loop-detection-DPVtQOfM.js} +53 -3
- package/dist/{tool-loop-detection-Cs8_HCsx.js → tool-loop-detection-DR_rrIA1.js} +56 -6
- package/dist/{pi-embedded-CTBkDXkV.js → unified-runner-CulJZMxc.js} +69924 -69719
- package/dist/{update-cli-BHxqriaA.js → update-cli-560gprSp.js} +7 -7
- package/dist/{update-cli-IqwjBYS0.js → update-cli-D1pLX3eo.js} +8 -8
- package/dist/{update-runner-BuoOzUcX.js → update-runner-BQxFFCGc.js} +1 -1
- package/dist/{update-runner-BFwirE1P.js → update-runner-CLKHrONW.js} +1 -1
- package/dist/{web-C4CDNJmR.js → web-Bqrgp43v.js} +1 -1
- package/dist/{web-OSVyyJa9.js → web-D4qJ9XKP.js} +6 -6
- package/dist/{web-Cr6E8Ych.js → web-Dr5cOn-1.js} +2 -2
- package/dist/{web-Dti17mxB.js → web-hHX9a9YO.js} +64 -64
- package/dist/{whatsapp-actions-D1RsnX7P.js → whatsapp-actions-BIeSWsCF.js} +25 -25
- package/dist/{workspace-wAaHI8-5.js → workspace-DscDraUb.js} +28 -28
- package/extensions/bluebubbles/node_modules/.bin/symi +0 -0
- package/extensions/copilot-proxy/node_modules/.bin/symi +0 -0
- package/extensions/diagnostics-otel/node_modules/.bin/acorn +0 -0
- package/extensions/diagnostics-otel/node_modules/.bin/symi +0 -0
- package/extensions/discord/node_modules/.bin/symi +0 -0
- package/extensions/feishu/node_modules/.bin/symi +0 -0
- package/extensions/google-antigravity-auth/node_modules/.bin/symi +0 -0
- package/extensions/google-gemini-cli-auth/node_modules/.bin/symi +0 -0
- package/extensions/googlechat/node_modules/.bin/symi +0 -0
- package/extensions/imessage/node_modules/.bin/symi +0 -0
- package/extensions/irc/node_modules/.bin/symi +0 -0
- package/extensions/learning-loop/node_modules/.bin/symi +0 -0
- package/extensions/line/node_modules/.bin/symi +0 -0
- package/extensions/matrix/node_modules/.bin/markdown-it +0 -0
- package/extensions/matrix/node_modules/.bin/symi +0 -0
- package/extensions/mattermost/node_modules/.bin/symi +0 -0
- package/extensions/memory-core/node_modules/.bin/symi +0 -0
- package/extensions/memory-lancedb/node_modules/.bin/arrow2csv +0 -0
- package/extensions/memory-lancedb/node_modules/.bin/openai +0 -0
- package/extensions/memory-lancedb/node_modules/.bin/symi +0 -0
- package/extensions/minimax-portal-auth/node_modules/.bin/symi +0 -0
- package/extensions/msteams/node_modules/.bin/symi +0 -0
- package/extensions/nextcloud-talk/node_modules/.bin/symi +0 -0
- package/extensions/nostr/node_modules/.bin/symi +0 -0
- package/extensions/nostr/node_modules/.bin/tsc +0 -0
- package/extensions/nostr/node_modules/.bin/tsserver +0 -0
- package/extensions/signal/node_modules/.bin/symi +0 -0
- package/extensions/slack/node_modules/.bin/symi +0 -0
- package/extensions/telegram/node_modules/.bin/symi +0 -0
- package/extensions/tlon/node_modules/.bin/symi +0 -0
- package/extensions/twitch/node_modules/.bin/symi +0 -0
- package/extensions/voice-call/node_modules/.bin/symi +0 -0
- package/extensions/whatsapp/node_modules/.bin/symi +0 -0
- package/extensions/zalo/node_modules/.bin/symi +0 -0
- package/extensions/zalouser/node_modules/.bin/symi +0 -0
- package/package.json +83 -113
- package/skills/nano-banana-pro/scripts/generate_image.py +0 -0
- package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +0 -0
- package/skills/tmux/scripts/find-sessions.sh +0 -0
- package/skills/tmux/scripts/wait-for-text.sh +0 -0
- package/dist/paths-Cce4PUkG.js +0 -212
- /package/dist/{boolean-B8-BqKGQ.js → boolean-CE7i9tBR.js} +0 -0
- /package/dist/{chat-type-C_KiWNAH.js → chat-type-3FRbbjbq.js} +0 -0
- /package/dist/{diagnostic-session-state-Bxo4UHOL.js → diagnostic-session-state-Zw87xFym.js} +0 -0
- /package/dist/{legacy-names-BHV4AoFT.js → legacy-names-CePMUvus.js} +0 -0
- /package/dist/{pi-model-discovery-DaNAekda.js → pi-model-discovery-Bv5YDJc8.js} +0 -0
- /package/dist/{redact-jSxx6Ep2.js → redact-BDMXB06K.js} +0 -0
- /package/dist/{ssrf-BTMDZjHT.js → ssrf-DpUUUgkK.js} +0 -0
- /package/dist/{targets-CFovdgJI.js → targets-DGkXkFPj.js} +0 -0
- /package/dist/{transcript-events-DDYvbmRV.js → transcript-events-BBh3Gsrx.js} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "./paths-Cqn-zk3M.js";
|
|
2
2
|
import "./utils-B-0b9bGM.js";
|
|
3
3
|
import "./thinking-EAliFiVK.js";
|
|
4
|
-
import "./reply-
|
|
4
|
+
import "./reply-DYnTEYoa.js";
|
|
5
5
|
import "./registry-Cja8eT7G.js";
|
|
6
6
|
import "./subsystem-D9vIQve0.js";
|
|
7
7
|
import "./exec-CWkblSrI.js";
|
|
@@ -113,18 +113,18 @@ import "./service-Cl74hx8J.js";
|
|
|
113
113
|
import "./diagnostics-BAMlsVVX.js";
|
|
114
114
|
import "./table-BTgkRafz.js";
|
|
115
115
|
import "./audit-CrITRV6w.js";
|
|
116
|
-
import "./status
|
|
117
|
-
import "./health-
|
|
116
|
+
import "./status--iNVOTMO.js";
|
|
117
|
+
import "./health-BjwDRAdd.js";
|
|
118
118
|
import "./control-ui-assets-Z947tKLt.js";
|
|
119
119
|
import "./update-check-CtckACbb.js";
|
|
120
|
-
import { n as handleGatewayRequest } from "./server-methods-
|
|
121
|
-
import "./push-apns-
|
|
122
|
-
import "./agents.config-
|
|
120
|
+
import { n as handleGatewayRequest } from "./server-methods-vDGoM3xL.js";
|
|
121
|
+
import "./push-apns-BECodU1i.js";
|
|
122
|
+
import "./agents.config-CIJRaVWl.js";
|
|
123
123
|
import "./dm-policy-shared-Bh3TbexU.js";
|
|
124
124
|
import "./node-service-Cxz4e-Qd.js";
|
|
125
125
|
import "./status.update-DtwCUTf-.js";
|
|
126
126
|
import "./skills-install-D67isO1L.js";
|
|
127
|
-
import "./update-runner-
|
|
127
|
+
import "./update-runner-CLKHrONW.js";
|
|
128
128
|
|
|
129
129
|
//#region src/gateway/glass-ui-ws.ts
|
|
130
130
|
const SESSION_KEY = "agent:main:main";
|
|
@@ -13,7 +13,7 @@ import "./client-DMBZpU6X.js";
|
|
|
13
13
|
import "./call-BcE47FtD.js";
|
|
14
14
|
import "./message-channel-C9dERklz.js";
|
|
15
15
|
import "./pairing-token-Byh6drgn.js";
|
|
16
|
-
import "./subagent-registry-
|
|
16
|
+
import "./subagent-registry-CXrOOgPW.js";
|
|
17
17
|
import "./sessions-CJXnZVjR.js";
|
|
18
18
|
import "./tokens-Csntmwwn.js";
|
|
19
19
|
import "./plugins-CwSlLxM8.js";
|
|
@@ -108,18 +108,18 @@ import "./service-Cm9j9WzQ.js";
|
|
|
108
108
|
import "./diagnostics-CS1ov_hH.js";
|
|
109
109
|
import "./table-D01d2GuY.js";
|
|
110
110
|
import "./audit-Byo5jCLN.js";
|
|
111
|
-
import "./status-
|
|
112
|
-
import "./health-
|
|
111
|
+
import "./status-B1_iHrOg.js";
|
|
112
|
+
import "./health-C5XJPwpt.js";
|
|
113
113
|
import "./control-ui-assets-BseSWee1.js";
|
|
114
114
|
import "./update-check-ZdimP1aU.js";
|
|
115
|
-
import { n as handleGatewayRequest } from "./server-methods-
|
|
116
|
-
import "./push-apns-
|
|
117
|
-
import "./agents.config-
|
|
115
|
+
import { n as handleGatewayRequest } from "./server-methods-C8EWZt2g.js";
|
|
116
|
+
import "./push-apns-Bek3ANJa.js";
|
|
117
|
+
import "./agents.config-D8WPDf-m.js";
|
|
118
118
|
import "./dm-policy-shared-DJ-61hCT.js";
|
|
119
119
|
import "./node-service-fcZExd22.js";
|
|
120
120
|
import "./status.update-DbmZz0Aq.js";
|
|
121
121
|
import "./skills-install-1ZdwGTnh.js";
|
|
122
|
-
import "./update-runner-
|
|
122
|
+
import "./update-runner-BQxFFCGc.js";
|
|
123
123
|
|
|
124
124
|
//#region src/gateway/glass-ui-ws.ts
|
|
125
125
|
const SESSION_KEY = "agent:main:main";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { B as theme, k as info, l as escapeRegExp, z as isRich } from "./utils-B-0b9bGM.js";
|
|
2
|
-
import { At as resolveHeartbeatDeliveryTarget, Cr as peekSystemEventEntries, Vn as resolveUserTimezone, cr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, ct as setHeartbeatWakeHandler, dr as resolveHeartbeatPrompt$1, fr as stripHeartbeatToken, jt as resolveHeartbeatSenderContext, lr as DEFAULT_HEARTBEAT_EVERY, lt as resolveHeartbeatReasonKind, nr as getQueueSize, r as appendCronStyleCurrentTimeLine, sr as CommandLane, st as requestHeartbeatNow, t as getReplyFromConfig, ur as isHeartbeatContentEffectivelyEmpty } from "./reply-
|
|
2
|
+
import { At as resolveHeartbeatDeliveryTarget, Cr as peekSystemEventEntries, Vn as resolveUserTimezone, cr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, ct as setHeartbeatWakeHandler, dr as resolveHeartbeatPrompt$1, fr as stripHeartbeatToken, jt as resolveHeartbeatSenderContext, lr as DEFAULT_HEARTBEAT_EVERY, lt as resolveHeartbeatReasonKind, nr as getQueueSize, r as appendCronStyleCurrentTimeLine, sr as CommandLane, st as requestHeartbeatNow, t as getReplyFromConfig, ur as isHeartbeatContentEffectivelyEmpty } from "./reply-DYnTEYoa.js";
|
|
3
3
|
import { l as resolveAgentIdFromSessionKey, p as toAgentStoreSessionKey, s as normalizeAgentId } from "./session-key-DCt45XZa.js";
|
|
4
4
|
import { f as defaultRuntime, t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
|
|
5
5
|
import { b as DEFAULT_SYMIPULSE_FILENAME, c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId, r as resolveAgentConfig } from "./agent-scope-CgUHAtCo.js";
|
|
@@ -4,7 +4,7 @@ import { l as resolveAgentIdFromSessionKey, p as toAgentStoreSessionKey, s as no
|
|
|
4
4
|
import { b as DEFAULT_SYMIPULSE_FILENAME, c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId, r as resolveAgentConfig } from "./agent-scope-D-jRCY0d.js";
|
|
5
5
|
import { C as parseDurationMs, i as loadConfig } from "./config-DHBLS1Hl.js";
|
|
6
6
|
import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-BcE47FtD.js";
|
|
7
|
-
import { Jn as resolveUserTimezone,
|
|
7
|
+
import { Jn as resolveUserTimezone, K as appendCronStyleCurrentTimeLine, Tn as peekSystemEventEntries, W as getReplyFromConfig, _r as isHeartbeatContentEffectivelyEmpty, dn as requestHeartbeatNow, fn as setHeartbeatWakeHandler, gr as DEFAULT_HEARTBEAT_EVERY, hr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, lr as getQueueSize, lt as resolveHeartbeatDeliveryTarget, mr as CommandLane, pn as resolveHeartbeatReasonKind, ut as resolveHeartbeatSenderContext, vr as resolveHeartbeatPrompt$1, yr as stripHeartbeatToken } from "./subagent-registry-CXrOOgPW.js";
|
|
8
8
|
import { M as canonicalizeMainSessionAlias, N as resolveAgentMainSessionKey, d as updateSessionStore, l as saveSessionStore, o as loadSessionStore } from "./sessions-CJXnZVjR.js";
|
|
9
9
|
import { r as SYMIPULSE_TOKEN } from "./tokens-Csntmwwn.js";
|
|
10
10
|
import { n as listChannelPlugins, t as getChannelPlugin } from "./plugins-CwSlLxM8.js";
|
|
@@ -15,7 +15,7 @@ import "./client-DMBZpU6X.js";
|
|
|
15
15
|
import "./call-BcE47FtD.js";
|
|
16
16
|
import "./message-channel-C9dERklz.js";
|
|
17
17
|
import "./pairing-token-Byh6drgn.js";
|
|
18
|
-
import "./subagent-registry-
|
|
18
|
+
import "./subagent-registry-CXrOOgPW.js";
|
|
19
19
|
import "./sessions-CJXnZVjR.js";
|
|
20
20
|
import "./tokens-Csntmwwn.js";
|
|
21
21
|
import "./plugins-CwSlLxM8.js";
|
|
@@ -104,7 +104,7 @@ import { a as installPackageDir, i as withTempDir, n as installFromNpmSpecArchiv
|
|
|
104
104
|
import { t as renderTable } from "./table-D01d2GuY.js";
|
|
105
105
|
import { a as parseFrontmatter, t as loadWorkspaceHookEntries } from "./workspace-B51TF6q3.js";
|
|
106
106
|
import { t as buildWorkspaceHookStatus } from "./hooks-status-CEoLdlyb.js";
|
|
107
|
-
import { t as buildPluginStatusReport } from "./status-
|
|
107
|
+
import { t as buildPluginStatusReport } from "./status-BQcdARV4.js";
|
|
108
108
|
import path from "node:path";
|
|
109
109
|
import fs from "node:fs";
|
|
110
110
|
import fs$1 from "node:fs/promises";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "./paths-Cqn-zk3M.js";
|
|
2
2
|
import { B as theme, S as shortenHomePath, t as CONFIG_DIR, y as resolveUserPath } from "./utils-B-0b9bGM.js";
|
|
3
3
|
import "./thinking-EAliFiVK.js";
|
|
4
|
-
import "./reply-
|
|
4
|
+
import "./reply-DYnTEYoa.js";
|
|
5
5
|
import "./registry-Cja8eT7G.js";
|
|
6
6
|
import { f as defaultRuntime } from "./subsystem-D9vIQve0.js";
|
|
7
7
|
import "./exec-CWkblSrI.js";
|
|
@@ -108,7 +108,7 @@ import { a as installPackageDir, i as withTempDir, n as installFromNpmSpecArchiv
|
|
|
108
108
|
import { t as renderTable } from "./table-BTgkRafz.js";
|
|
109
109
|
import { a as parseFrontmatter, t as loadWorkspaceHookEntries } from "./workspace-CYxdoAlY.js";
|
|
110
110
|
import { t as buildWorkspaceHookStatus } from "./hooks-status-BqLZtMLa.js";
|
|
111
|
-
import { t as buildPluginStatusReport } from "./status-
|
|
111
|
+
import { t as buildPluginStatusReport } from "./status-DiX0DAtH.js";
|
|
112
112
|
import fs from "node:fs";
|
|
113
113
|
import path from "node:path";
|
|
114
114
|
import fs$1 from "node:fs/promises";
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
2
|
-
import { R as shortenHomeInString, k as isRecord } from "./registry-
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { n as
|
|
7
|
-
import { n as
|
|
8
|
-
import fs from "node:fs/promises";
|
|
2
|
+
import { R as shortenHomeInString, k as isRecord } from "./registry-DYq1AYOv.js";
|
|
3
|
+
import { $ as resolveSymiAgentDir, L as getApiKeyForModel, M as resolveImplicitBedrockProvider, N as resolveImplicitCopilotProvider, P as resolveImplicitProviders, U as normalizeSecretInput, j as normalizeProviders, z as requireApiKey } from "./auth-profiles-DdK1Hxaa.js";
|
|
4
|
+
import { N as sanitizeUserFacingText } from "./pi-embedded-helpers-CfqDGQ9J.js";
|
|
5
|
+
import { n as loadConfig } from "./config-5SdHIcHU.js";
|
|
6
|
+
import { n as redactToolDetail } from "./redact-BDMXB06K.js";
|
|
7
|
+
import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-Bv5YDJc8.js";
|
|
9
8
|
import path from "node:path";
|
|
9
|
+
import fs from "node:fs/promises";
|
|
10
10
|
import { complete } from "@mariozechner/pi-ai";
|
|
11
11
|
|
|
12
12
|
//#region src/agents/models-config.ts
|
|
@@ -2,7 +2,7 @@ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
|
2
2
|
import { D as isRecord, I as shortenHomeInString } from "./registry-BhoUuugi.js";
|
|
3
3
|
import { G as resolveSymiAgentDir, S as getApiKeyForModel, Y as normalizeSecretInput, _ as resolveImplicitBedrockProvider, g as normalizeProviders, v as resolveImplicitCopilotProvider, w as requireApiKey, y as resolveImplicitProviders } from "./model-selection-BQCG9ah0.js";
|
|
4
4
|
import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-j5tVLINv.js";
|
|
5
|
-
import { N as sanitizeUserFacingText } from "./pi-embedded-helpers-
|
|
5
|
+
import { N as sanitizeUserFacingText } from "./pi-embedded-helpers-B8kqLWns.js";
|
|
6
6
|
import { n as loadConfig } from "./config-BmV60pPT.js";
|
|
7
7
|
import { n as redactToolDetail } from "./redact-1NGYV_8p.js";
|
|
8
8
|
import path from "node:path";
|
|
@@ -1,10 +1,96 @@
|
|
|
1
|
-
import { _ as runExec } from "./workspace-
|
|
2
|
-
import fs from "node:fs/promises";
|
|
3
|
-
import os from "node:os";
|
|
1
|
+
import { _ as runExec } from "./workspace-DscDraUb.js";
|
|
4
2
|
import path from "node:path";
|
|
5
3
|
import { constants } from "node:fs";
|
|
4
|
+
import os from "node:os";
|
|
5
|
+
import fs$1 from "node:fs/promises";
|
|
6
6
|
import { fileTypeFromBuffer } from "file-type";
|
|
7
7
|
|
|
8
|
+
//#region src/infra/fs-safe.ts
|
|
9
|
+
var SafeOpenError = class extends Error {
|
|
10
|
+
constructor(code, message, options) {
|
|
11
|
+
super(message, options);
|
|
12
|
+
this.code = code;
|
|
13
|
+
this.name = "SafeOpenError";
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
const NOT_FOUND_CODES = new Set(["ENOENT", "ENOTDIR"]);
|
|
17
|
+
const SUPPORTS_NOFOLLOW = process.platform !== "win32" && "O_NOFOLLOW" in constants;
|
|
18
|
+
const OPEN_READ_FLAGS = constants.O_RDONLY | (SUPPORTS_NOFOLLOW ? constants.O_NOFOLLOW : 0);
|
|
19
|
+
const ensureTrailingSep = (value) => value.endsWith(path.sep) ? value : value + path.sep;
|
|
20
|
+
const isNodeError = (err) => Boolean(err && typeof err === "object" && "code" in err);
|
|
21
|
+
const isNotFoundError = (err) => isNodeError(err) && typeof err.code === "string" && NOT_FOUND_CODES.has(err.code);
|
|
22
|
+
const isSymlinkOpenError = (err) => isNodeError(err) && (err.code === "ELOOP" || err.code === "EINVAL" || err.code === "ENOTSUP");
|
|
23
|
+
async function openVerifiedLocalFile(filePath) {
|
|
24
|
+
let handle;
|
|
25
|
+
try {
|
|
26
|
+
handle = await fs$1.open(filePath, OPEN_READ_FLAGS);
|
|
27
|
+
} catch (err) {
|
|
28
|
+
if (isNotFoundError(err)) throw new SafeOpenError("not-found", "file not found");
|
|
29
|
+
if (isSymlinkOpenError(err)) throw new SafeOpenError("symlink", "symlink open blocked", { cause: err });
|
|
30
|
+
throw err;
|
|
31
|
+
}
|
|
32
|
+
try {
|
|
33
|
+
const [stat, lstat] = await Promise.all([handle.stat(), fs$1.lstat(filePath)]);
|
|
34
|
+
if (lstat.isSymbolicLink()) throw new SafeOpenError("symlink", "symlink not allowed");
|
|
35
|
+
if (!stat.isFile()) throw new SafeOpenError("not-file", "not a file");
|
|
36
|
+
if (stat.ino !== lstat.ino || stat.dev !== lstat.dev) throw new SafeOpenError("path-mismatch", "path changed during read");
|
|
37
|
+
const realPath = await fs$1.realpath(filePath);
|
|
38
|
+
const realStat = await fs$1.stat(realPath);
|
|
39
|
+
if (stat.ino !== realStat.ino || stat.dev !== realStat.dev) throw new SafeOpenError("path-mismatch", "path mismatch");
|
|
40
|
+
return {
|
|
41
|
+
handle,
|
|
42
|
+
realPath,
|
|
43
|
+
stat
|
|
44
|
+
};
|
|
45
|
+
} catch (err) {
|
|
46
|
+
await handle.close().catch(() => {});
|
|
47
|
+
if (err instanceof SafeOpenError) throw err;
|
|
48
|
+
if (isNotFoundError(err)) throw new SafeOpenError("not-found", "file not found");
|
|
49
|
+
throw err;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
async function openFileWithinRoot(params) {
|
|
53
|
+
let rootReal;
|
|
54
|
+
try {
|
|
55
|
+
rootReal = await fs$1.realpath(params.rootDir);
|
|
56
|
+
} catch (err) {
|
|
57
|
+
if (isNotFoundError(err)) throw new SafeOpenError("not-found", "root dir not found");
|
|
58
|
+
throw err;
|
|
59
|
+
}
|
|
60
|
+
const rootWithSep = ensureTrailingSep(rootReal);
|
|
61
|
+
const resolved = path.resolve(rootWithSep, params.relativePath);
|
|
62
|
+
if (!resolved.startsWith(rootWithSep)) throw new SafeOpenError("invalid-path", "path escapes root");
|
|
63
|
+
let opened;
|
|
64
|
+
try {
|
|
65
|
+
opened = await openVerifiedLocalFile(resolved);
|
|
66
|
+
} catch (err) {
|
|
67
|
+
if (err instanceof SafeOpenError) {
|
|
68
|
+
if (err.code === "not-found") throw err;
|
|
69
|
+
throw new SafeOpenError("invalid-path", "path is not a regular file under root", { cause: err });
|
|
70
|
+
}
|
|
71
|
+
throw err;
|
|
72
|
+
}
|
|
73
|
+
if (!opened.realPath.startsWith(rootWithSep)) {
|
|
74
|
+
await opened.handle.close().catch(() => {});
|
|
75
|
+
throw new SafeOpenError("invalid-path", "path escapes root");
|
|
76
|
+
}
|
|
77
|
+
return opened;
|
|
78
|
+
}
|
|
79
|
+
async function readLocalFileSafely(params) {
|
|
80
|
+
const opened = await openVerifiedLocalFile(params.filePath);
|
|
81
|
+
try {
|
|
82
|
+
if (params.maxBytes !== void 0 && opened.stat.size > params.maxBytes) throw new SafeOpenError("too-large", `file exceeds limit of ${params.maxBytes} bytes (got ${opened.stat.size})`);
|
|
83
|
+
return {
|
|
84
|
+
buffer: await opened.handle.readFile(),
|
|
85
|
+
realPath: opened.realPath,
|
|
86
|
+
stat: opened.stat
|
|
87
|
+
};
|
|
88
|
+
} finally {
|
|
89
|
+
await opened.handle.close().catch(() => {});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
//#endregion
|
|
8
94
|
//#region src/media/constants.ts
|
|
9
95
|
const MAX_IMAGE_BYTES = 6 * 1024 * 1024;
|
|
10
96
|
const MAX_AUDIO_BYTES = 16 * 1024 * 1024;
|
|
@@ -149,92 +235,6 @@ function kindFromMime(mime) {
|
|
|
149
235
|
return mediaKindFromMime(mime);
|
|
150
236
|
}
|
|
151
237
|
|
|
152
|
-
//#endregion
|
|
153
|
-
//#region src/infra/fs-safe.ts
|
|
154
|
-
var SafeOpenError = class extends Error {
|
|
155
|
-
constructor(code, message, options) {
|
|
156
|
-
super(message, options);
|
|
157
|
-
this.code = code;
|
|
158
|
-
this.name = "SafeOpenError";
|
|
159
|
-
}
|
|
160
|
-
};
|
|
161
|
-
const NOT_FOUND_CODES = new Set(["ENOENT", "ENOTDIR"]);
|
|
162
|
-
const SUPPORTS_NOFOLLOW = process.platform !== "win32" && "O_NOFOLLOW" in constants;
|
|
163
|
-
const OPEN_READ_FLAGS = constants.O_RDONLY | (SUPPORTS_NOFOLLOW ? constants.O_NOFOLLOW : 0);
|
|
164
|
-
const ensureTrailingSep = (value) => value.endsWith(path.sep) ? value : value + path.sep;
|
|
165
|
-
const isNodeError = (err) => Boolean(err && typeof err === "object" && "code" in err);
|
|
166
|
-
const isNotFoundError = (err) => isNodeError(err) && typeof err.code === "string" && NOT_FOUND_CODES.has(err.code);
|
|
167
|
-
const isSymlinkOpenError = (err) => isNodeError(err) && (err.code === "ELOOP" || err.code === "EINVAL" || err.code === "ENOTSUP");
|
|
168
|
-
async function openVerifiedLocalFile(filePath) {
|
|
169
|
-
let handle;
|
|
170
|
-
try {
|
|
171
|
-
handle = await fs.open(filePath, OPEN_READ_FLAGS);
|
|
172
|
-
} catch (err) {
|
|
173
|
-
if (isNotFoundError(err)) throw new SafeOpenError("not-found", "file not found");
|
|
174
|
-
if (isSymlinkOpenError(err)) throw new SafeOpenError("symlink", "symlink open blocked", { cause: err });
|
|
175
|
-
throw err;
|
|
176
|
-
}
|
|
177
|
-
try {
|
|
178
|
-
const [stat, lstat] = await Promise.all([handle.stat(), fs.lstat(filePath)]);
|
|
179
|
-
if (lstat.isSymbolicLink()) throw new SafeOpenError("symlink", "symlink not allowed");
|
|
180
|
-
if (!stat.isFile()) throw new SafeOpenError("not-file", "not a file");
|
|
181
|
-
if (stat.ino !== lstat.ino || stat.dev !== lstat.dev) throw new SafeOpenError("path-mismatch", "path changed during read");
|
|
182
|
-
const realPath = await fs.realpath(filePath);
|
|
183
|
-
const realStat = await fs.stat(realPath);
|
|
184
|
-
if (stat.ino !== realStat.ino || stat.dev !== realStat.dev) throw new SafeOpenError("path-mismatch", "path mismatch");
|
|
185
|
-
return {
|
|
186
|
-
handle,
|
|
187
|
-
realPath,
|
|
188
|
-
stat
|
|
189
|
-
};
|
|
190
|
-
} catch (err) {
|
|
191
|
-
await handle.close().catch(() => {});
|
|
192
|
-
if (err instanceof SafeOpenError) throw err;
|
|
193
|
-
if (isNotFoundError(err)) throw new SafeOpenError("not-found", "file not found");
|
|
194
|
-
throw err;
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
async function openFileWithinRoot(params) {
|
|
198
|
-
let rootReal;
|
|
199
|
-
try {
|
|
200
|
-
rootReal = await fs.realpath(params.rootDir);
|
|
201
|
-
} catch (err) {
|
|
202
|
-
if (isNotFoundError(err)) throw new SafeOpenError("not-found", "root dir not found");
|
|
203
|
-
throw err;
|
|
204
|
-
}
|
|
205
|
-
const rootWithSep = ensureTrailingSep(rootReal);
|
|
206
|
-
const resolved = path.resolve(rootWithSep, params.relativePath);
|
|
207
|
-
if (!resolved.startsWith(rootWithSep)) throw new SafeOpenError("invalid-path", "path escapes root");
|
|
208
|
-
let opened;
|
|
209
|
-
try {
|
|
210
|
-
opened = await openVerifiedLocalFile(resolved);
|
|
211
|
-
} catch (err) {
|
|
212
|
-
if (err instanceof SafeOpenError) {
|
|
213
|
-
if (err.code === "not-found") throw err;
|
|
214
|
-
throw new SafeOpenError("invalid-path", "path is not a regular file under root", { cause: err });
|
|
215
|
-
}
|
|
216
|
-
throw err;
|
|
217
|
-
}
|
|
218
|
-
if (!opened.realPath.startsWith(rootWithSep)) {
|
|
219
|
-
await opened.handle.close().catch(() => {});
|
|
220
|
-
throw new SafeOpenError("invalid-path", "path escapes root");
|
|
221
|
-
}
|
|
222
|
-
return opened;
|
|
223
|
-
}
|
|
224
|
-
async function readLocalFileSafely(params) {
|
|
225
|
-
const opened = await openVerifiedLocalFile(params.filePath);
|
|
226
|
-
try {
|
|
227
|
-
if (params.maxBytes !== void 0 && opened.stat.size > params.maxBytes) throw new SafeOpenError("too-large", `file exceeds limit of ${params.maxBytes} bytes (got ${opened.stat.size})`);
|
|
228
|
-
return {
|
|
229
|
-
buffer: await opened.handle.readFile(),
|
|
230
|
-
realPath: opened.realPath,
|
|
231
|
-
stat: opened.stat
|
|
232
|
-
};
|
|
233
|
-
} finally {
|
|
234
|
-
await opened.handle.close().catch(() => {});
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
|
|
238
238
|
//#endregion
|
|
239
239
|
//#region src/media/image-ops.ts
|
|
240
240
|
const IMAGE_REDUCE_QUALITY_STEPS = [
|
|
@@ -321,11 +321,11 @@ function readJpegExifOrientation(buffer) {
|
|
|
321
321
|
return null;
|
|
322
322
|
}
|
|
323
323
|
async function withTempDir(fn) {
|
|
324
|
-
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "symi-img-"));
|
|
324
|
+
const dir = await fs$1.mkdtemp(path.join(os.tmpdir(), "symi-img-"));
|
|
325
325
|
try {
|
|
326
326
|
return await fn(dir);
|
|
327
327
|
} finally {
|
|
328
|
-
await fs.rm(dir, {
|
|
328
|
+
await fs$1.rm(dir, {
|
|
329
329
|
recursive: true,
|
|
330
330
|
force: true
|
|
331
331
|
}).catch(() => {});
|
|
@@ -334,7 +334,7 @@ async function withTempDir(fn) {
|
|
|
334
334
|
async function sipsMetadataFromBuffer(buffer) {
|
|
335
335
|
return await withTempDir(async (dir) => {
|
|
336
336
|
const input = path.join(dir, "in.img");
|
|
337
|
-
await fs.writeFile(input, buffer);
|
|
337
|
+
await fs$1.writeFile(input, buffer);
|
|
338
338
|
const { stdout } = await runExec("/usr/bin/sips", [
|
|
339
339
|
"-g",
|
|
340
340
|
"pixelWidth",
|
|
@@ -362,7 +362,7 @@ async function sipsResizeToJpeg(params) {
|
|
|
362
362
|
return await withTempDir(async (dir) => {
|
|
363
363
|
const input = path.join(dir, "in.img");
|
|
364
364
|
const output = path.join(dir, "out.jpg");
|
|
365
|
-
await fs.writeFile(input, params.buffer);
|
|
365
|
+
await fs$1.writeFile(input, params.buffer);
|
|
366
366
|
await runExec("/usr/bin/sips", [
|
|
367
367
|
"-Z",
|
|
368
368
|
String(Math.max(1, Math.round(params.maxSide))),
|
|
@@ -379,14 +379,14 @@ async function sipsResizeToJpeg(params) {
|
|
|
379
379
|
timeoutMs: 2e4,
|
|
380
380
|
maxBuffer: 1024 * 1024
|
|
381
381
|
});
|
|
382
|
-
return await fs.readFile(output);
|
|
382
|
+
return await fs$1.readFile(output);
|
|
383
383
|
});
|
|
384
384
|
}
|
|
385
385
|
async function sipsConvertToJpeg(buffer) {
|
|
386
386
|
return await withTempDir(async (dir) => {
|
|
387
387
|
const input = path.join(dir, "in.heic");
|
|
388
388
|
const output = path.join(dir, "out.jpg");
|
|
389
|
-
await fs.writeFile(input, buffer);
|
|
389
|
+
await fs$1.writeFile(input, buffer);
|
|
390
390
|
await runExec("/usr/bin/sips", [
|
|
391
391
|
"-s",
|
|
392
392
|
"format",
|
|
@@ -398,7 +398,7 @@ async function sipsConvertToJpeg(buffer) {
|
|
|
398
398
|
timeoutMs: 2e4,
|
|
399
399
|
maxBuffer: 1024 * 1024
|
|
400
400
|
});
|
|
401
|
-
return await fs.readFile(output);
|
|
401
|
+
return await fs$1.readFile(output);
|
|
402
402
|
});
|
|
403
403
|
}
|
|
404
404
|
async function getImageMetadata(buffer) {
|
|
@@ -449,7 +449,7 @@ async function sipsApplyOrientation(buffer, orientation) {
|
|
|
449
449
|
return await withTempDir(async (dir) => {
|
|
450
450
|
const input = path.join(dir, "in.jpg");
|
|
451
451
|
const output = path.join(dir, "out.jpg");
|
|
452
|
-
await fs.writeFile(input, buffer);
|
|
452
|
+
await fs$1.writeFile(input, buffer);
|
|
453
453
|
await runExec("/usr/bin/sips", [
|
|
454
454
|
...ops,
|
|
455
455
|
input,
|
|
@@ -459,7 +459,7 @@ async function sipsApplyOrientation(buffer, orientation) {
|
|
|
459
459
|
timeoutMs: 2e4,
|
|
460
460
|
maxBuffer: 1024 * 1024
|
|
461
461
|
});
|
|
462
|
-
return await fs.readFile(output);
|
|
462
|
+
return await fs$1.readFile(output);
|
|
463
463
|
});
|
|
464
464
|
}
|
|
465
465
|
async function resizeToJpeg(params) {
|
|
@@ -584,4 +584,4 @@ async function normalizeExifOrientationSips(buffer) {
|
|
|
584
584
|
}
|
|
585
585
|
|
|
586
586
|
//#endregion
|
|
587
|
-
export {
|
|
587
|
+
export { maxBytesForKind as _, hasAlphaChannel as a, openFileWithinRoot as b, detectMime as c, imageMimeFromFormat as d, isAudioFileName as f, MAX_IMAGE_BYTES as g, normalizeMimeType as h, getImageMetadata as i, extensionForMime as l, kindFromMime as m, buildImageResizeSideGrid as n, optimizeImageToPng as o, isGifMedia as p, convertHeicToJpeg as r, resizeToJpeg as s, IMAGE_REDUCE_QUALITY_STEPS as t, getFileExtension as u, mediaKindFromMime as v, readLocalFileSafely as x, SafeOpenError as y };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
2
|
-
import { t as normalizeChatType } from "./chat-type-
|
|
3
|
-
import { n as resolveConversationLabel } from "./conversation-label-
|
|
2
|
+
import { t as normalizeChatType } from "./chat-type-3FRbbjbq.js";
|
|
3
|
+
import { n as resolveConversationLabel } from "./conversation-label-Onz2hiJh.js";
|
|
4
4
|
|
|
5
5
|
//#region src/auto-reply/reply/inbound-text.ts
|
|
6
6
|
function normalizeInboundTextNewlines(input) {
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import "./paths-Cqn-zk3M.js";
|
|
3
3
|
import { B as theme, P as setVerbose, T as toWhatsappJid, l as escapeRegExp, m as normalizeE164, n as assertWebChannel, z as isRich } from "./utils-B-0b9bGM.js";
|
|
4
4
|
import "./thinking-EAliFiVK.js";
|
|
5
|
-
import { Lt as createDefaultDeps, bt as resolveCommitHash, t as getReplyFromConfig } from "./reply-
|
|
5
|
+
import { Lt as createDefaultDeps, bt as resolveCommitHash, t as getReplyFromConfig } from "./reply-DYnTEYoa.js";
|
|
6
6
|
import "./registry-Cja8eT7G.js";
|
|
7
7
|
import { f as defaultRuntime, r as enableConsoleCapture, u as visibleWidth } from "./subsystem-D9vIQve0.js";
|
|
8
8
|
import { n as runExec, t as runCommandWithTimeout } from "./exec-CWkblSrI.js";
|
|
@@ -103,7 +103,7 @@ import "./pi-tools.policy-CIDBbw6x.js";
|
|
|
103
103
|
import "./control-service-Bz7rxLWq.js";
|
|
104
104
|
import "./stagger-BUClb97_.js";
|
|
105
105
|
import "./channel-selection-DuWs0Aak.js";
|
|
106
|
-
import { r as waitForever, t as monitorWebChannel } from "./channel-web-
|
|
106
|
+
import { r as waitForever, t as monitorWebChannel } from "./channel-web-CM2LyWZW.js";
|
|
107
107
|
import "./outbound-DB5Zus0-.js";
|
|
108
108
|
import "./session-DIBTkyvE.js";
|
|
109
109
|
import "./login-dIlDkG4X.js";
|
|
@@ -112,10 +112,10 @@ import { t as ensureSymiCliOnPath } from "./path-env-MnzRq6nD.js";
|
|
|
112
112
|
import { t as assertSupportedRuntime } from "./runtime-guard-B37eizu-.js";
|
|
113
113
|
import "./ports-BX0kKI0g.js";
|
|
114
114
|
import { a as hasFlag, i as getVerboseFlag, n as getCommandPath, o as hasHelpOrVersion, s as hasRootVersionAlias } from "./argv-C6ovOie2.js";
|
|
115
|
-
import { i as getCoreCliCommandsWithSubcommands, n as setProgramContext, o as registerProgramCommands, s as getSubCliCommandsWithSubcommands } from "./program-context-
|
|
115
|
+
import { i as getCoreCliCommandsWithSubcommands, n as setProgramContext, o as registerProgramCommands, s as getSubCliCommandsWithSubcommands } from "./program-context-DaNGrTOm.js";
|
|
116
116
|
import "./catalog-RiADx7MA.js";
|
|
117
|
-
import "./plugin-registry-
|
|
118
|
-
import { n as resolveCliChannelOptions } from "./channel-options-
|
|
117
|
+
import "./plugin-registry-2zUJMasm.js";
|
|
118
|
+
import { n as resolveCliChannelOptions } from "./channel-options-vBCJhJB7.js";
|
|
119
119
|
import process$1 from "node:process";
|
|
120
120
|
import { fileURLToPath } from "node:url";
|
|
121
121
|
import { Command } from "commander";
|
|
@@ -515,7 +515,7 @@ function registerPreActionHooks(program, programVersion) {
|
|
|
515
515
|
commandPath
|
|
516
516
|
});
|
|
517
517
|
if (PLUGIN_REQUIRED_COMMANDS.has(commandPath[0])) {
|
|
518
|
-
const { ensurePluginRegistryLoaded } = await import("./plugin-registry-
|
|
518
|
+
const { ensurePluginRegistryLoaded } = await import("./plugin-registry-2zUJMasm.js").then((n) => n.n);
|
|
519
519
|
ensurePluginRegistryLoaded();
|
|
520
520
|
}
|
|
521
521
|
});
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { I as resolveUserPath, J as logVerbose, Z as shouldLogVerbose } from "./registry-
|
|
2
|
-
import {
|
|
3
|
-
import { a as chunkText } from "./chunk-
|
|
4
|
-
import { i as fetchRemoteMedia, n as getDefaultMediaLocalRoots } from "./local-roots-
|
|
5
|
-
import fs from "node:fs/promises";
|
|
1
|
+
import { I as resolveUserPath, J as logVerbose, Z as shouldLogVerbose } from "./registry-DYq1AYOv.js";
|
|
2
|
+
import { _ as maxBytesForKind, a as hasAlphaChannel, c as detectMime, l as extensionForMime, o as optimizeImageToPng, r as convertHeicToJpeg, s as resizeToJpeg, v as mediaKindFromMime, x as readLocalFileSafely, y as SafeOpenError } from "./image-ops-C7CauEK8.js";
|
|
3
|
+
import { a as chunkText } from "./chunk-09egQapi.js";
|
|
4
|
+
import { i as fetchRemoteMedia, n as getDefaultMediaLocalRoots } from "./local-roots-DhZz0Ybs.js";
|
|
6
5
|
import path from "node:path";
|
|
6
|
+
import fs from "node:fs/promises";
|
|
7
7
|
import { fileURLToPath } from "node:url";
|
|
8
8
|
import MarkdownIt from "markdown-it";
|
|
9
9
|
|