@qwen-code/qwen-code 0.24.5-preview.0 → 0.24.5
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/bundled/browser-use/SKILL.md +11 -10
- package/bundled/browser-use/runtime/index.js +70 -31
- package/bundled/browser-use/runtime/native-host.js +1 -0
- package/bundled/browser-use/runtime/scripts/native-host-setup.js +1 -0
- package/bundled/computer-use/SKILL.md +182 -224
- package/bundled/qc-helper/docs/configuration/model-providers.md +13 -2
- package/bundled/qc-helper/docs/conversations-recovery.md +10 -0
- package/bundled/qc-helper/docs/features/browser-use.md +22 -12
- package/bundled/qc-helper/docs/features/channels/dingtalk.md +2 -2
- package/bundled/qc-helper/docs/features/channels/dws.md +7 -7
- package/bundled/qc-helper/docs/features/channels/feishu.md +1 -1
- package/bundled/qc-helper/docs/features/channels/github.md +13 -9
- package/bundled/qc-helper/docs/features/channels/gitlab.md +12 -5
- package/bundled/qc-helper/docs/features/channels/overview.md +121 -46
- package/bundled/qc-helper/docs/features/channels/plugins.md +12 -12
- package/bundled/qc-helper/docs/features/channels/qqbot.md +5 -5
- package/bundled/qc-helper/docs/features/channels/telegram.md +5 -5
- package/bundled/qc-helper/docs/features/channels/wecom.md +5 -4
- package/bundled/qc-helper/docs/features/channels/weixin.md +3 -3
- package/bundled/qc-helper/docs/features/code-review.md +4 -0
- package/bundled/qc-helper/docs/features/computer-use.md +1 -1
- package/bundled/qc-helper/docs/quickstart.md +14 -14
- package/bundled/qc-helper/docs/qwen-serve.md +10 -4
- package/bundled/review/SKILL.md +44 -9
- package/bundled/review/references/persistence.md +3 -4
- package/chunks/{MaxSizedBox-3RXPTLCS.js → MaxSizedBox-4MLWQHF3.js} +33 -31
- package/chunks/{StandaloneSessionPicker-74775YBZ.js → StandaloneSessionPicker-PDNU6KJJ.js} +50 -48
- package/chunks/{acp-subagent-executor-OQXOMTFK.js → acp-subagent-executor-JB2J6N73.js} +35 -33
- package/chunks/{acpAgent-MD56LD7L.js → acpAgent-CAPZFZCW.js} +123 -97
- package/chunks/{agent-75EZNG2Q.js → agent-MTWGIPWC.js} +18 -16
- package/chunks/{agent-headless-TQ6MWUDT.js → agent-headless-Z27XJSXK.js} +18 -16
- package/chunks/{anthropicContentGenerator-DCDXTX3R.js → anthropicContentGenerator-VAFZRJWG.js} +3 -3
- package/chunks/{askUserQuestion-2NU6CXK2.js → askUserQuestion-V4OFZD5D.js} +1 -1
- package/chunks/{bridge-KGJYQUWD.js → bridge-BUCSJHCE.js} +35 -33
- package/chunks/{channel-management-service-YN4A3BJ6.js → channel-management-service-Q2B7WUPL.js} +27 -10
- package/chunks/{channel-settings-store-773UOD6B.js → channel-settings-store-U25CVEL6.js} +42 -40
- package/chunks/{channel-worker-group-AKPVHRUO.js → channel-worker-group-QNX4OIMZ.js} +5 -5
- package/chunks/{channel-worker-manager-TDAQSKWX.js → channel-worker-manager-IJCPV4WY.js} +24 -5
- package/chunks/{channel-worker-supervisor-PUMSN4J2.js → channel-worker-supervisor-ENJ2AE2N.js} +4 -4
- package/chunks/{chunk-OU4ZCLGJ.js → chunk-242INZ6Y.js} +1 -1
- package/chunks/{chunk-JOFZBTVL.js → chunk-245NB3M4.js} +1 -1
- package/chunks/{chunk-LISITUEH.js → chunk-26KGIWIW.js} +1 -1
- package/chunks/{chunk-WPHZEGFC.js → chunk-2RQEWY2P.js} +1 -1
- package/chunks/{chunk-DCTJ3GVF.js → chunk-2SCE6YR2.js} +3 -3
- package/chunks/{chunk-STKUN7BR.js → chunk-2XNGG7R3.js} +1 -1
- package/chunks/{chunk-OQE7AA2W.js → chunk-36ZMEEBW.js} +16 -12
- package/chunks/{chunk-Y53WH7VD.js → chunk-44K6Q5AW.js} +3 -3
- package/chunks/{chunk-N4VKU36J.js → chunk-465XOJLQ.js} +1 -1
- package/chunks/{chunk-HD4IXPPC.js → chunk-4A4XNQEZ.js} +3 -3
- package/chunks/{chunk-RXB6Y33E.js → chunk-4VULJ3LV.js} +1 -1
- package/chunks/{chunk-EBRC4GX2.js → chunk-4XXUGJJS.js} +1 -1
- package/chunks/{chunk-MVC4XLNM.js → chunk-53IRNMPU.js} +118 -5
- package/chunks/{chunk-VGLXXHTF.js → chunk-5BLOZPTW.js} +1 -1
- package/chunks/{chunk-3SK2A75W.js → chunk-5OJQLD3P.js} +3 -3
- package/chunks/{chunk-WVNCMGAO.js → chunk-6FURC4LI.js} +1 -1
- package/chunks/{chunk-WVTM33Q3.js → chunk-6KXQIDK2.js} +4 -4
- package/chunks/{chunk-ZKDUQHU4.js → chunk-7MNHZUTA.js} +35 -18
- package/chunks/{chunk-JEIPBSGX.js → chunk-7P5WZQXF.js} +7 -7
- package/chunks/{chunk-GGUOO2XC.js → chunk-7RCAMBLN.js} +1 -1
- package/chunks/{chunk-FBLGI2SO.js → chunk-AAOMFXVZ.js} +7 -7
- package/chunks/{chunk-JM76TMGV.js → chunk-ACLD6C3R.js} +8798 -7901
- package/chunks/{chunk-4FCWKBOC.js → chunk-ALTMZEBU.js} +6 -6
- package/chunks/{chunk-ZHQSWNO6.js → chunk-AN62TPO6.js} +1 -1
- package/chunks/{chunk-U5DPG7JW.js → chunk-AYTI24XN.js} +1 -1
- package/chunks/{chunk-B53FO7JN.js → chunk-AZN2GSLM.js} +2 -2
- package/chunks/{chunk-6KQQPPFF.js → chunk-B3J4BSPL.js} +1 -1
- package/chunks/{chunk-SLSH5TFD.js → chunk-BMCDSO77.js} +4 -4
- package/chunks/{chunk-DBYUN4U3.js → chunk-BUDUHXX3.js} +1 -1
- package/chunks/{chunk-TS4Y2MHO.js → chunk-CGREZDGO.js} +1 -1
- package/chunks/chunk-CLNDQINM.js +523 -0
- package/chunks/{chunk-LNUQA3OE.js → chunk-CVRZNFXO.js} +1 -1
- package/chunks/{chunk-3DBI3LLL.js → chunk-CWLTXYKP.js} +4 -4
- package/chunks/{chunk-B3XMX4SN.js → chunk-DACCX4JI.js} +4 -4
- package/chunks/{chunk-YWZOEHBT.js → chunk-DE2WI7RU.js} +192 -62
- package/chunks/{chunk-3TQVPDCN.js → chunk-DU53RB7A.js} +2 -2
- package/chunks/{chunk-2KZURPTB.js → chunk-DZCTQ2MF.js} +6 -1
- package/chunks/{chunk-35SABQFH.js → chunk-DZUNDX4M.js} +1 -1
- package/chunks/{chunk-4INF7OYV.js → chunk-ELY2U74S.js} +2 -2
- package/chunks/chunk-EMGHODF7.js +56 -0
- package/chunks/{chunk-5FZKG4JB.js → chunk-EMOTEATH.js} +1 -1
- package/chunks/{chunk-LW7WW3Z5.js → chunk-ERGQUKZ2.js} +1 -1
- package/chunks/{chunk-TNWJJEDT.js → chunk-ES6EQNGR.js} +6 -6
- package/chunks/{chunk-E3TLOFX7.js → chunk-EUHSEMO4.js} +62 -7
- package/chunks/{chunk-N25B6FZN.js → chunk-EYCDA5MN.js} +2 -0
- package/chunks/{chunk-GPTEZLRR.js → chunk-F4ERRMCO.js} +25 -23
- package/chunks/{chunk-SXFZ5P7F.js → chunk-FE7D3WKV.js} +1 -1
- package/chunks/{chunk-XEXNBTYX.js → chunk-FH45BQGZ.js} +3 -3
- package/chunks/{chunk-CAORZAZD.js → chunk-FLBUHGL4.js} +10 -10
- package/chunks/{chunk-X2R47SFR.js → chunk-FLVPNMCS.js} +1 -1
- package/chunks/{chunk-5SZSV2CK.js → chunk-FVIJFKEQ.js} +3 -3
- package/chunks/{chunk-KFLDZ3HB.js → chunk-G6XRNTXF.js} +1 -1
- package/chunks/{chunk-2JHQ2J3Y.js → chunk-G72UHXC3.js} +5 -5
- package/chunks/{chunk-4A255ZI6.js → chunk-GAHZJLQG.js} +2 -2
- package/chunks/{chunk-7IVZOKKW.js → chunk-GKJGKTWJ.js} +3 -3
- package/chunks/{chunk-KY4HZXLV.js → chunk-GLPNIOEV.js} +33 -2
- package/chunks/{chunk-6PRSQUPJ.js → chunk-GQZZGEMS.js} +1 -1
- package/chunks/{chunk-G2AE7GYZ.js → chunk-GRUASRWC.js} +1 -1
- package/chunks/{chunk-HH7R6RLK.js → chunk-GTQ35GRO.js} +1 -1
- package/chunks/{chunk-LWRJLRZS.js → chunk-GYLDOFLU.js} +3 -3
- package/chunks/{chunk-MZRJ2JJS.js → chunk-HDSI3RDN.js} +136 -9
- package/chunks/{chunk-RO5K7QUL.js → chunk-HHMJ5ONX.js} +45 -31
- package/chunks/{chunk-E4HNTYHK.js → chunk-HVVQYSBA.js} +32 -9
- package/chunks/{chunk-H2GVLBFU.js → chunk-I36GIR6K.js} +64 -2
- package/chunks/{chunk-VTFLRL55.js → chunk-IBRV4T3I.js} +2 -2
- package/chunks/{chunk-4VSTV4C2.js → chunk-IH22ZGZI.js} +53 -2
- package/chunks/{chunk-AOW7WIWE.js → chunk-IQH7Q5OP.js} +4 -4
- package/chunks/{chunk-OB444SG3.js → chunk-IYKGSUTA.js} +1 -1
- package/chunks/{chunk-HS5OZTQF.js → chunk-J2FLXQJM.js} +1 -1
- package/chunks/{chunk-BBCH7PBA.js → chunk-KACKEW2M.js} +2 -2
- package/chunks/{chunk-JE3J5HFM.js → chunk-KAOHUUM7.js} +62 -251
- package/chunks/{chunk-JCMDVGPR.js → chunk-KGLPVCX7.js} +2 -2
- package/chunks/{chunk-QKXZOHHQ.js → chunk-LDURD6EP.js} +15 -62
- package/chunks/{chunk-O4IH5UEC.js → chunk-LLIYDIGU.js} +20 -20
- package/chunks/{chunk-3XHMOJCP.js → chunk-MBC3PULP.js} +1 -1
- package/chunks/{chunk-SRZA7OU4.js → chunk-MMCGLNPP.js} +6 -6
- package/chunks/{chunk-3NG2ZQAJ.js → chunk-NZC74TT2.js} +1 -1
- package/chunks/{chunk-47C3HPMW.js → chunk-O5YL6KSX.js} +47 -18
- package/chunks/{chunk-EIHZ4FFM.js → chunk-O6PPYFQN.js} +3 -3
- package/chunks/{chunk-XCU752HT.js → chunk-OICDXWXP.js} +13 -19
- package/chunks/{chunk-VJCKLKZX.js → chunk-OOU7XOZF.js} +3 -3
- package/chunks/{chunk-OM5NSL25.js → chunk-P4P7CH7H.js} +38 -38
- package/chunks/{chunk-CIS4SY3R.js → chunk-PPBZHGEQ.js} +3 -3
- package/chunks/{chunk-PB7JBAHF.js → chunk-PVBIEIVZ.js} +0 -1
- package/chunks/{chunk-GG3MO6NO.js → chunk-PWGMHXIV.js} +2 -2
- package/chunks/{chunk-6N2PJAZG.js → chunk-PX2ZOOGQ.js} +1 -1
- package/chunks/{chunk-NNN2PKPV.js → chunk-PYYPSK6Q.js} +36 -495
- package/chunks/{chunk-TKOQGFRE.js → chunk-PZOWKCPJ.js} +1 -1
- package/chunks/{chunk-PJ546DX4.js → chunk-Q36IJ74U.js} +17 -11
- package/chunks/chunk-Q4FJVWI4.js +78 -0
- package/chunks/{chunk-PA4HU5IQ.js → chunk-QATPE3SN.js} +13 -7
- package/chunks/{chunk-MBUUQJPV.js → chunk-QGKAYDES.js} +5 -5
- package/chunks/{chunk-TFBQ5CKI.js → chunk-QNEBHC2E.js} +1 -1
- package/chunks/{chunk-6NA357SF.js → chunk-QTNSMJKU.js} +1 -1
- package/chunks/{chunk-TDLEDOJN.js → chunk-QU7VULWX.js} +5 -4
- package/chunks/{chunk-LOTGIM6V.js → chunk-R3IFSY55.js} +20 -20
- package/chunks/{chunk-ZX6EZ7EH.js → chunk-RBE3WRSN.js} +3 -3
- package/chunks/{chunk-YSZ2XZTG.js → chunk-RBKZ6SK4.js} +5 -5
- package/chunks/{chunk-FLRFAPDA.js → chunk-RCL6OXZC.js} +5 -5
- package/chunks/{chunk-H4W6TJFJ.js → chunk-RONRTFAQ.js} +1 -1
- package/chunks/{chunk-ZEGLZ3MN.js → chunk-SCYKHWRM.js} +5 -5
- package/chunks/{chunk-STUJ7IMZ.js → chunk-SI7XKACY.js} +56 -56
- package/chunks/{chunk-RL2HSTEB.js → chunk-SYZPPX3O.js} +1492 -1140
- package/chunks/{chunk-VUYJRNG5.js → chunk-T7TJPVTY.js} +3 -3
- package/chunks/{chunk-4V5YKOBI.js → chunk-TF7UC7F6.js} +3 -3
- package/chunks/{chunk-NXZD3VNX.js → chunk-TL7DSR47.js} +1 -1
- package/chunks/{chunk-BVFBDXI2.js → chunk-TPFV5YZK.js} +1 -1
- package/chunks/{chunk-YIHOHHJL.js → chunk-TZHXHWEW.js} +1 -1
- package/chunks/{chunk-3X5BDEXS.js → chunk-U6RMVE5X.js} +8 -8
- package/chunks/{chunk-HRVFPNGT.js → chunk-VFNKO4FK.js} +4 -4
- package/chunks/{chunk-VPALWDQL.js → chunk-VUIH3BQL.js} +31 -12
- package/chunks/{chunk-WVNML4HH.js → chunk-VW33WARJ.js} +1 -1
- package/chunks/{chunk-MICQVBPI.js → chunk-WCLHOKAZ.js} +1 -1
- package/chunks/{chunk-KMQ2ZH3Q.js → chunk-WVWCRZ6M.js} +2 -2
- package/chunks/{chunk-5NFAKADR.js → chunk-WZCVB2ER.js} +1 -36
- package/chunks/{chunk-JNQEW7B2.js → chunk-X3A72KX5.js} +6 -6
- package/chunks/{chunk-3JSIWFNA.js → chunk-XHHUGXYW.js} +527 -135
- package/chunks/{chunk-VIA4STCR.js → chunk-YCCBLTSL.js} +3 -3
- package/chunks/{chunk-Q5IEY2TN.js → chunk-Z3I5B4DH.js} +1 -1
- package/chunks/{chunk-O346IB64.js → chunk-ZAJNI63I.js} +1 -1
- package/chunks/{chunk-QR4U27UW.js → chunk-ZJFCDRVP.js} +4 -4
- package/chunks/{codex-subagent-executor-437LQYGM.js → codex-subagent-executor-IKWULWIZ.js} +35 -33
- package/chunks/{config-utils-CVLI36KM.js → config-utils-3IOTAFBG.js} +38 -34
- package/chunks/{contextCommand-2KSW7H5F.js → contextCommand-ZKG2JFCR.js} +33 -31
- package/chunks/{core-runtime-4IB27E7J.js → core-runtime-5CAK5DSM.js} +32 -30
- package/chunks/{create-sub-session-A73TQDAN.js → create-sub-session-DG4CVOQC.js} +33 -31
- package/chunks/{daemon-Y6AOK7LF.js → daemon-D4OAVQKB.js} +1 -1
- package/chunks/{daemon-git-worktree-guard-BTKVV3DZ.js → daemon-git-worktree-guard-S3SFT3H7.js} +32 -30
- package/chunks/{daemon-status-provider-ETDIOWMS.js → daemon-status-provider-GG64ZJR3.js} +40 -38
- package/chunks/{daemon-trust-policy-U5SPHJLP.js → daemon-trust-policy-XNWYLQ32.js} +38 -36
- package/chunks/{daemon-trust-policy-monitor-QKRCO5WI.js → daemon-trust-policy-monitor-DR5CRWMM.js} +38 -36
- package/chunks/{deferred-core-runtime-FRELZPIE.js → deferred-core-runtime-V4Q674KN.js} +32 -30
- package/chunks/{dist-54LGNLWW.js → dist-3M75XY4G.js} +1 -1
- package/chunks/{dist-YZBMQPNS.js → dist-6U5NQYA7.js} +5 -5
- package/chunks/{dist-FVMLRUVM.js → dist-AS2RPYOB.js} +1 -1
- package/chunks/{dist-HANHY2MK.js → dist-GFT4GU72.js} +2 -2
- package/chunks/{dist-Y5GP7SWL.js → dist-J7JK3GPY.js} +10 -9
- package/chunks/{dist-O723VE2K.js → dist-JTPRKF5H.js} +30 -27
- package/chunks/{dist-MGZKUISU.js → dist-MOO5VOC5.js} +7 -20
- package/chunks/{dist-IZ66D5A3.js → dist-NJ2L5QKL.js} +1 -1
- package/chunks/{dist-EI2XAB4W.js → dist-YC6LDCKH.js} +22 -28
- package/chunks/{edit-TQ3CABYP.js → edit-FPIWTN3L.js} +20 -18
- package/chunks/{enter-worktree-J46XVFRS.js → enter-worktree-55OWD4LT.js} +4 -3
- package/chunks/{enterPlanMode-JHOWELZO.js → enterPlanMode-GDZVXYB2.js} +18 -16
- package/chunks/{environment-LUM7XX27.js → environment-Q2BVTUQO.js} +36 -32
- package/chunks/{errors-SH32ID5I.js → errors-MZTLVUEM.js} +34 -32
- package/chunks/{execution-sandbox-settings-HIYVUBII.js → execution-sandbox-settings-3WJ67GX3.js} +3 -1
- package/chunks/{execution-tool-IIEL25CL.js → execution-tool-DZ4XSEFZ.js} +21 -19
- package/chunks/{execution-worker-NKKEZ4XF.js → execution-worker-L3TM3F5D.js} +24 -22
- package/chunks/{exit-worktree-BC4SDZCC.js → exit-worktree-MI6N4OUP.js} +4 -3
- package/chunks/{exitPlanMode-PUICCCQ5.js → exitPlanMode-VIGOD2KP.js} +18 -16
- package/chunks/{fast-path-QH3QTZZA.js → fast-path-JCKEFUUL.js} +4 -4
- package/chunks/{fast-path-settings-TQAYWLXR.js → fast-path-settings-VIYSH3SD.js} +2 -2
- package/chunks/{glob-OEB4WH3Z.js → glob-UOKQZHKL.js} +18 -16
- package/chunks/{goal-tools-KWGKFUSK.js → goal-tools-G4RIX4ER.js} +18 -16
- package/chunks/{handleAutoUpdate-KEA7JSUD.js → handleAutoUpdate-UZZEGL3N.js} +34 -32
- package/chunks/{i18n-AC3MUXKZ.js → i18n-IL33FVND.js} +32 -30
- package/chunks/{initializer-WBD32BEX.js → initializer-BCXBRM6Y.js} +38 -36
- package/chunks/{installationInfo-JRGFTKWY.js → installationInfo-V7OKUOJV.js} +32 -30
- package/chunks/{list-S7KW7NBX.js → list-LQHG6SXA.js} +41 -39
- package/chunks/{llm-E32WLISX.js → llm-JWCANCDC.js} +85 -74
- package/chunks/{llm-content-generator-OMKJHC5P.js → llm-content-generator-OXMMHUVK.js} +3 -3
- package/chunks/{loadedSettingsAdapter-5OSU3J46.js → loadedSettingsAdapter-EKXSRWMY.js} +38 -36
- package/chunks/{local-execution-environment-IQHCTUJ5.js → local-execution-environment-XIQLRMLF.js} +24 -22
- package/chunks/{loggingContentGenerator-JIYG3LJS.js → loggingContentGenerator-6KHNZDTZ.js} +20 -18
- package/chunks/{managed-npm-update-RKAT7AMQ.js → managed-npm-update-MBUH5TIX.js} +32 -30
- package/chunks/managed-runtime-attestation-worker-G23AEEMF.js +367 -0
- package/chunks/{mcp-SV72BZKG.js → mcp-AYVCEEN7.js} +38 -36
- package/chunks/{model-call-collection-PKDMVCZN.js → model-call-collection-OKUGOY4B.js} +1 -1
- package/chunks/{model-configuration-A52XMQW7.js → model-configuration-Q3MNGG3B.js} +38 -36
- package/chunks/{modelConfigUtils-7O4P3SLE.js → modelConfigUtils-WC5XDR34.js} +33 -31
- package/chunks/{monitor-ZXRV2DJB.js → monitor-7JUZXYZN.js} +18 -16
- package/chunks/{nonInteractiveCli-UPSGIYRC.js → nonInteractiveCli-B3GCZ6NJ.js} +74 -73
- package/chunks/{nonInteractiveToolExecutor-TDKVR43J.js → nonInteractiveToolExecutor-IUHO7PXG.js} +19 -17
- package/chunks/{notebook-edit-FBVHAHYM.js → notebook-edit-IYDACZDW.js} +19 -17
- package/chunks/{omni-3NREMV2Q.js → omni-DLBHISHC.js} +10 -7
- package/chunks/{openaiContentGenerator-EWPBZFIT.js → openaiContentGenerator-W5GN6H6Z.js} +12 -10
- package/chunks/{openaiResponsesContentGenerator-3CI3PINB.js → openaiResponsesContentGenerator-BXXRYJQQ.js} +5 -5
- package/chunks/{pidfile-BBUANGZX.js → pidfile-QIBF53CW.js} +32 -30
- package/chunks/{processUtils-6OHQLG7W.js → processUtils-2LU22KCR.js} +2 -2
- package/chunks/{prompt-terminal-ledger-ZBFYXJ4L.js → prompt-terminal-ledger-LXFVLR6C.js} +33 -31
- package/chunks/{qwenContentGenerator-62F5IKXJ.js → qwenContentGenerator-LYMLXBWI.js} +21 -19
- package/chunks/{reactive-degrade-URJMXJ7N.js → reactive-degrade-HPYBJHYA.js} +6 -6
- package/chunks/{read-file-IM4Q5TKI.js → read-file-SXS2MKDY.js} +6 -3
- package/chunks/{record-artifact-K4XSMW4X.js → record-artifact-XP3X7RE5.js} +3 -2
- package/chunks/{record-source-XZCI3IGU.js → record-source-2VBLKVIE.js} +2 -2
- package/chunks/{report-findings-MCGXBQFX.js → report-findings-D2QUYUOG.js} +4 -3
- package/chunks/{request-shutdown-TT62PREA.js → request-shutdown-R5SA5GE3.js} +1 -1
- package/chunks/{resumeHistoryUtils-O3NQMDVR.js → resumeHistoryUtils-UPGZGP5V.js} +35 -33
- package/chunks/{ripGrep-BG2FEVIV.js → ripGrep-X33VVIN5.js} +8 -5
- package/chunks/{run-qwen-serve-GMLWJITM.js → run-qwen-serve-CUB2NZ6P.js} +278 -79
- package/chunks/{runtime-SSGPOXRZ.js → runtime-2DAVBADX.js} +43 -41
- package/chunks/{sandboxConfig-ALYLLNWY.js → sandboxConfig-ESBH3F27.js} +34 -32
- package/chunks/{scheduled-tasks-QJTC5XQ7.js → scheduled-tasks-TGWYXZWW.js} +38 -36
- package/chunks/{scheduler-PEXTY7IG.js → scheduler-XGLZCXPN.js} +34 -32
- package/chunks/{send-message-3UM7XRTB.js → send-message-FBU6WDID.js} +1 -1
- package/chunks/{serve-OVAUTKXK.js → serve-7RX4AIID.js} +38 -36
- package/chunks/{server-3MMYOOJW.js → server-MJETIFJS.js} +1789 -375
- package/chunks/{session-PZBIKBQJ.js → session-7AVYU3TC.js} +75 -74
- package/chunks/{session-attachments-root-ESP5CNBV.js → session-attachments-root-RONFQ3D3.js} +32 -30
- package/chunks/{session-pr-refresh-B3N7PKUP.js → session-pr-refresh-ZPT6TAD4.js} +37 -35
- package/chunks/{settings-KSQ2DGPY.js → settings-FPMUAVWD.js} +37 -35
- package/chunks/{shell-3V26EVNC.js → shell-THD5EYOK.js} +18 -16
- package/chunks/{skill-XP7F3LBV.js → skill-2D6KXDC5.js} +52 -13
- package/chunks/{skill-settings-PDESL7S3.js → skill-settings-XW7X244B.js} +38 -36
- package/chunks/{spawnChannel-NVO7CCBW.js → spawnChannel-DBSAAUUT.js} +34 -32
- package/chunks/{standalone-update-FDWS2EGF.js → standalone-update-TFAWA676.js} +33 -31
- package/chunks/{start-opentui-ui-WIFFY5UD.js → start-opentui-ui-VYMAXPBH.js} +87 -86
- package/chunks/{startInteractiveUI-YBLIRIHD.js → startInteractiveUI-Z54XKH35.js} +1037 -966
- package/chunks/{task-create-PEI7AJLE.js → task-create-PVF66J3R.js} +2 -2
- package/chunks/{task-update-MQZRWBGK.js → task-update-RSIITTOK.js} +2 -2
- package/chunks/{team-create-Z5JUEMB7.js → team-create-TPCELNBJ.js} +18 -16
- package/chunks/{team-plan-approval-ZLLHMEQN.js → team-plan-approval-RUURGHQL.js} +18 -16
- package/chunks/{terminal-image-renderer-QFO2JTTT.js → terminal-image-renderer-SLJVUD4Z.js} +32 -30
- package/chunks/{theme-manager-N7ILUTRY.js → theme-manager-VBOIN2KT.js} +32 -30
- package/chunks/{tool-call-PLSQ34VE.js → tool-call-DUHP6UXC.js} +2 -2
- package/chunks/{tool-result-media-OAHUKGRK.js → tool-result-media-WU6QAREN.js} +10 -7
- package/chunks/{tool-search-534QKE2X.js → tool-search-ET4NH2LK.js} +7 -4
- package/chunks/{total-session-admission-EZJQKTPF.js → total-session-admission-UWMJWTWP.js} +35 -33
- package/chunks/{trustedFolders-4ZEV6RXD.js → trustedFolders-3WNZBUH7.js} +33 -31
- package/chunks/{update-relaunch-GB3SGRDP.js → update-relaunch-SHS3BD6V.js} +5 -5
- package/chunks/{updateCheck-DVAGAEQ4.js → updateCheck-MDF2FCRN.js} +32 -30
- package/chunks/{upload-config-DMZVTDH7.js → upload-config-LVVUIKA2.js} +4 -4
- package/chunks/{useAutoAcceptIndicator-PTQBS42B.js → useAutoAcceptIndicator-26OOM7OM.js} +41 -39
- package/chunks/{validateNonInterActiveAuth-DU3WXVSU.js → validateNonInterActiveAuth-TBCZCQIN.js} +72 -71
- package/chunks/{version-PNMZGKCV.js → version-MICV7I4Y.js} +1 -1
- package/chunks/{web-fetch-LMCOAHW6.js → web-fetch-3O2DFRE5.js} +13 -9
- package/chunks/{web-search-N7RR74LA.js → web-search-5FS3NB3D.js} +4 -4
- package/chunks/{web-shell-static-GI6FVIMI.js → web-shell-static-E3O6NW7Y.js} +4 -3
- package/chunks/{workflow-ZZPHI7FK.js → workflow-FRJO5ZUI.js} +19 -17
- package/chunks/{workspace-providers-status-TU73CNRF.js → workspace-providers-status-I5MO7Z2T.js} +43 -41
- package/chunks/{workspace-registration-store-743FRSOU.js → workspace-registration-store-CBHKV34L.js} +1 -1
- package/chunks/{workspace-registry-S7QTXFWM.js → workspace-registry-2UKNZO5M.js} +35 -33
- package/chunks/{workspace-runtime-coordinator-GWNDUIGO.js → workspace-runtime-coordinator-TKCI5WJW.js} +36 -34
- package/chunks/{workspace-service-CERZFJ3B.js → workspace-service-M3ZKR6WL.js} +40 -38
- package/chunks/{workspace-skills-status-5M3EIAUY.js → workspace-skills-status-OC3EYL7U.js} +41 -39
- package/chunks/{workspace-trust-reconciler-Q3LUKMQB.js → workspace-trust-reconciler-YQZSUOH4.js} +41 -39
- package/chunks/{write-file-CT54LXQL.js → write-file-BATJLBJX.js} +21 -19
- package/chunks/{zoom-image-EU3PGSZM.js → zoom-image-5I7DDLQE.js} +10 -6
- package/cli-entry.js +13 -0
- package/cli.js +24 -12
- package/execution-worker.js +1 -1
- package/export-transcript-document.css +1 -1
- package/export-transcript-document.js +104 -104
- package/package.json +3 -3
- package/web-shell/assets/{abnfDiagram-VCTEODGH-DDYEvG-M.js → abnfDiagram-VCTEODGH-DQHroFS1.js} +1 -1
- package/web-shell/assets/{arc-DQncKWFX.js → arc-BrOc_HVh.js} +1 -1
- package/web-shell/assets/{architectureDiagram-5GKGNRK7-C0-8u9zj.js → architectureDiagram-5GKGNRK7-DXce8IH6.js} +1 -1
- package/web-shell/assets/{blockDiagram-NRAW4CY4-Cpt59Ge5.js → blockDiagram-NRAW4CY4-96A3Q3-l.js} +1 -1
- package/web-shell/assets/{c4Diagram-UCG6FXSJ-BvESWh83.js → c4Diagram-UCG6FXSJ-CQBg2PSg.js} +1 -1
- package/web-shell/assets/channel-CBP6pwSs.js +1 -0
- package/web-shell/assets/{chunk-2Q5K7J3B-wKulGIU6.js → chunk-2Q5K7J3B-i_jhVz-t.js} +1 -1
- package/web-shell/assets/{chunk-5VM5RSS4-BX6kRoq7.js → chunk-5VM5RSS4-Cx3gMrWT.js} +1 -1
- package/web-shell/assets/{chunk-F27PBJKO-wA4IqTt-.js → chunk-F27PBJKO-B9WwW7C0.js} +1 -1
- package/web-shell/assets/{chunk-G27WJ6UU-B7hzevlb.js → chunk-G27WJ6UU-B8t0FNPI.js} +1 -1
- package/web-shell/assets/{chunk-JWPE2WC7-BdBg9pJg.js → chunk-JWPE2WC7-Dg0__6CF.js} +1 -1
- package/web-shell/assets/{chunk-LCL6LL3I-DghmF6LJ.js → chunk-LCL6LL3I-DUwE5g3m.js} +1 -1
- package/web-shell/assets/{chunk-POPQ4Y6H-BbReTOod.js → chunk-POPQ4Y6H-BirYW5iS.js} +1 -1
- package/web-shell/assets/{chunk-SVP7TREG-C1t0_19D.js → chunk-SVP7TREG-_ONJKtFF.js} +1 -1
- package/web-shell/assets/{chunk-XXDRQBXY-DQBby5mI.js → chunk-XXDRQBXY-DGi0chgj.js} +1 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-_4_fFrN3.js +1 -0
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-_4_fFrN3.js +1 -0
- package/web-shell/assets/{cose-bilkent-JH36ORCC-CNrSyg7B.js → cose-bilkent-JH36ORCC-BSSFxREn.js} +1 -1
- package/web-shell/assets/{cynefin-OW5HDTMX-DoxgDRN-.js → cynefin-OW5HDTMX-h-oYVCez.js} +1 -1
- package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-BmUwbS8Q.js → cynefinDiagram-5FMLGOSQ-CXj6T7Pm.js} +1 -1
- package/web-shell/assets/{dagre-3AP2YEHR-BJrOVIjc.js → dagre-3AP2YEHR-Ch9GIhJm.js} +1 -1
- package/web-shell/assets/{diagram-S7CK7UJ4-TDX4KU9V.js → diagram-S7CK7UJ4-Cq3W541T.js} +1 -1
- package/web-shell/assets/{diagram-UQ7AKVKN-D3VUQkGl.js → diagram-UQ7AKVKN-Bm1R5-sN.js} +1 -1
- package/web-shell/assets/{diagram-VSXAHHWV-CqCpgViy.js → diagram-VSXAHHWV-BW2qG6Vh.js} +1 -1
- package/web-shell/assets/{diagram-VX7I27RA-CthqfwCs.js → diagram-VX7I27RA-DN96PhRe.js} +1 -1
- package/web-shell/assets/{diagram-Z3DM3KII-BRY3Ahvu.js → diagram-Z3DM3KII-A8MnwaJr.js} +1 -1
- package/web-shell/assets/{ebnfDiagram-PWID7BFC-tJvTnIwp.js → ebnfDiagram-PWID7BFC-CZTpUypI.js} +1 -1
- package/web-shell/assets/{erDiagram-SSCWMZ5O-DT4b7w5B.js → erDiagram-SSCWMZ5O-CbxCRFru.js} +1 -1
- package/web-shell/assets/{flowDiagram-A5DVABFB-C5oirWSf.js → flowDiagram-A5DVABFB-Bt1PM2Dy.js} +1 -1
- package/web-shell/assets/{ganttDiagram-EL5Y4UJY-ZD3kNlO4.js → ganttDiagram-EL5Y4UJY-CTgim3LX.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-Bp1sg_wH.js → gitGraphDiagram-WWUBYQGX-h4jX7S4l.js} +1 -1
- package/web-shell/assets/{index-DSIzVof7.js → index-BDxWHGNm.js} +1 -1
- package/web-shell/assets/index-Bd3iA5Er.js +2407 -0
- package/web-shell/assets/index-DuwfO01z.css +36 -0
- package/web-shell/assets/{infoDiagram-RXCK75RN-Btumz_CZ.js → infoDiagram-RXCK75RN-DsIsFmZ4.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-5VMMS53U-Dx8_uvso.js → ishikawaDiagram-5VMMS53U-BgF2V3rC.js} +1 -1
- package/web-shell/assets/{journeyDiagram-EYS64GPL-DS5spUhj.js → journeyDiagram-EYS64GPL-CJ2ibWhB.js} +1 -1
- package/web-shell/assets/{kanban-definition-3QL26DDD-DttC9d4D.js → kanban-definition-3QL26DDD-oqNfpjND.js} +1 -1
- package/web-shell/assets/{layout-BDOJQJbX.js → layout-DKF2f-UC.js} +1 -1
- package/web-shell/assets/{linear-BsUVMxld.js → linear-CadmYA8J.js} +1 -1
- package/web-shell/assets/{mermaid.core-De4-EW4Z.js → mermaid.core-BSD13L-h.js} +6 -6
- package/web-shell/assets/{mindmap-definition-FBJOCRG2-BsYY98Wv.js → mindmap-definition-FBJOCRG2-Cg3jlHzV.js} +1 -1
- package/web-shell/assets/{pegDiagram-XKGWAZYB-DXnnQrVY.js → pegDiagram-XKGWAZYB-BGzqlBWk.js} +1 -1
- package/web-shell/assets/{pieDiagram-E7YTZNPT-DGLAGUYR.js → pieDiagram-E7YTZNPT-BVDdPYnC.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-AXDQQJYC-Y8DcMTa5.js → quadrantDiagram-AXDQQJYC-D7maRW6r.js} +1 -1
- package/web-shell/assets/{railroadDiagram-O6MQD6OU-ZgauslUZ.js → railroadDiagram-O6MQD6OU-C7J0Nnqc.js} +1 -1
- package/web-shell/assets/{requirementDiagram-EFPCY7ZU-Kxtu4twe.js → requirementDiagram-EFPCY7ZU-CDEpUB7S.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-P5KCCOFB-BKsLF9EA.js → sankeyDiagram-P5KCCOFB-DoA0BWeR.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-D8sCv1NK.js → sequenceDiagram-WJ2MYXX4-DlqRjDLl.js} +1 -1
- package/web-shell/assets/{sizeCapture-X5ZJPWSS-BX8sokZX.js → sizeCapture-X5ZJPWSS-3l2EJ1DB.js} +1 -1
- package/web-shell/assets/{stateDiagram-HBIQ2CUA-DFMl58kv.js → stateDiagram-HBIQ2CUA-Bdq0N6Lr.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-DtdYpKZp.js +1 -0
- package/web-shell/assets/{swimlanes-XN3QIQJK-BnMwURLN.js → swimlanes-XN3QIQJK-B4ArxdLV.js} +1 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-B_iL0Dc4.js +8 -0
- package/web-shell/assets/{timeline-definition-24CTP7MA-C8y77DDz.js → timeline-definition-24CTP7MA-B_Ug6D_k.js} +1 -1
- package/web-shell/assets/{vennDiagram-4TSXK5OY-DOWQgX9u.js → vennDiagram-4TSXK5OY-BR9tvaDT.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-VM6X3IG4-BM0AVIzE.js → wardleyDiagram-VM6X3IG4-BdGIt6qE.js} +1 -1
- package/web-shell/assets/{xychartDiagram-S5SC5T6Z-B18-YghG.js → xychartDiagram-S5SC5T6Z-NxS8XkXN.js} +1 -1
- package/web-shell/index.html +2 -2
- package/web-shell/sw.js +1 -1
- package/bundled/computer-use/references/macos.md +0 -208
- package/bundled/computer-use/references/windows-linux.md +0 -247
- package/web-shell/assets/channel-B88Zt8_x.js +0 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-Dp-7ruHm.js +0 -1
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-Dp-7ruHm.js +0 -1
- package/web-shell/assets/index-CpxLhWqx.js +0 -2337
- package/web-shell/assets/index-mr0Sw0G-.css +0 -36
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-B3HSbbo2.js +0 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-FnO0SUMi.js +0 -8
|
@@ -43,6 +43,12 @@ function parseExecutionSandboxSettings(value) {
|
|
|
43
43
|
return { ...value };
|
|
44
44
|
}
|
|
45
45
|
__name(parseExecutionSandboxSettings, "parseExecutionSandboxSettings");
|
|
46
|
+
var FIRST_NON_V1_SETTINGS_VERSION = 2;
|
|
47
|
+
function legacyUsageStatisticsEnabled(scope) {
|
|
48
|
+
const version = scope.$version;
|
|
49
|
+
return typeof version === "number" && version >= FIRST_NON_V1_SETTINGS_VERSION ? void 0 : scope.usageStatisticsEnabled;
|
|
50
|
+
}
|
|
51
|
+
__name(legacyUsageStatisticsEnabled, "legacyUsageStatisticsEnabled");
|
|
46
52
|
function selectOperatorExecutionSandbox(...scopes) {
|
|
47
53
|
let selected;
|
|
48
54
|
for (const scope of scopes) {
|
|
@@ -53,8 +59,29 @@ function selectOperatorExecutionSandbox(...scopes) {
|
|
|
53
59
|
}
|
|
54
60
|
__name(selectOperatorExecutionSandbox, "selectOperatorExecutionSandbox");
|
|
55
61
|
function readOperatorSandboxSettings() {
|
|
62
|
+
return sandboxSettingsFromScopes(readOperatorSettingsScopes());
|
|
63
|
+
}
|
|
64
|
+
__name(readOperatorSandboxSettings, "readOperatorSandboxSettings");
|
|
65
|
+
function readBareModeOperatorSettings() {
|
|
66
|
+
const scopes = readOperatorSettingsScopes();
|
|
67
|
+
const usageStatisticsEnabled = scopes.reduce(
|
|
68
|
+
(current, scope) => {
|
|
69
|
+
const value = scope.privacy?.usageStatisticsEnabled ?? legacyUsageStatisticsEnabled(scope);
|
|
70
|
+
if (value === void 0 || value === null) return current;
|
|
71
|
+
if (typeof value === "boolean") return value;
|
|
72
|
+
return value ? current : false;
|
|
73
|
+
},
|
|
74
|
+
void 0
|
|
75
|
+
);
|
|
76
|
+
return {
|
|
77
|
+
...sandboxSettingsFromScopes(scopes),
|
|
78
|
+
...usageStatisticsEnabled === void 0 ? {} : { privacy: { usageStatisticsEnabled } }
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
__name(readBareModeOperatorSettings, "readBareModeOperatorSettings");
|
|
82
|
+
function readOperatorSettingsScopes() {
|
|
56
83
|
const userSettingsPath = path.join(getGlobalQwenDirLite(), "settings.json");
|
|
57
|
-
|
|
84
|
+
return [
|
|
58
85
|
getSystemDefaultsPath(),
|
|
59
86
|
userSettingsPath,
|
|
60
87
|
getSystemSettingsPath()
|
|
@@ -92,6 +119,9 @@ function readOperatorSandboxSettings() {
|
|
|
92
119
|
);
|
|
93
120
|
}
|
|
94
121
|
});
|
|
122
|
+
}
|
|
123
|
+
__name(readOperatorSettingsScopes, "readOperatorSettingsScopes");
|
|
124
|
+
function sandboxSettingsFromScopes(scopes) {
|
|
95
125
|
const executionSandbox = selectOperatorExecutionSandbox(...scopes);
|
|
96
126
|
const sandbox = scopes.reduce(
|
|
97
127
|
(current, scope) => scope.tools?.sandbox ?? current,
|
|
@@ -99,7 +129,7 @@ function readOperatorSandboxSettings() {
|
|
|
99
129
|
);
|
|
100
130
|
return { tools: { executionSandbox, sandbox } };
|
|
101
131
|
}
|
|
102
|
-
__name(
|
|
132
|
+
__name(sandboxSettingsFromScopes, "sandboxSettingsFromScopes");
|
|
103
133
|
function validateExecutionSandboxSelection(settings, args = {}) {
|
|
104
134
|
const policy = parseExecutionSandboxSettings(
|
|
105
135
|
settings.tools?.executionSandbox
|
|
@@ -133,6 +163,7 @@ export {
|
|
|
133
163
|
parseExecutionSandboxSettings,
|
|
134
164
|
selectOperatorExecutionSandbox,
|
|
135
165
|
readOperatorSandboxSettings,
|
|
166
|
+
readBareModeOperatorSettings,
|
|
136
167
|
validateExecutionSandboxSelection,
|
|
137
168
|
assertExecutionSandboxSupported
|
|
138
169
|
};
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import {
|
|
4
4
|
getUserSettingsPath,
|
|
5
5
|
v1ToV2Migration
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-36ZMEEBW.js";
|
|
7
7
|
import {
|
|
8
8
|
getSystemDefaultsPath,
|
|
9
9
|
getSystemSettingsPath
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
TrustLevel,
|
|
14
14
|
getExplicitTrustLevel,
|
|
15
15
|
getTrustedFoldersPath
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-245NB3M4.js";
|
|
17
17
|
import {
|
|
18
18
|
arePathsEquivalent
|
|
19
19
|
} from "./chunk-MR3PXB6E.js";
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
} from "./chunk-ALGGS7UH.js";
|
|
23
23
|
import {
|
|
24
24
|
ideContextStore
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-SYZPPX3O.js";
|
|
26
26
|
import {
|
|
27
27
|
init_esbuild_shims
|
|
28
28
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
isCacheableReadResult,
|
|
12
12
|
parsePDFPageRange,
|
|
13
13
|
processSingleFileContent
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-PYYPSK6Q.js";
|
|
15
15
|
import {
|
|
16
16
|
getCurrentToolCallSource
|
|
17
17
|
} from "./chunk-CFMZLE3L.js";
|
|
@@ -21,6 +21,16 @@ import {
|
|
|
21
21
|
import {
|
|
22
22
|
runSideQuery
|
|
23
23
|
} from "./chunk-GHKVBSBY.js";
|
|
24
|
+
import {
|
|
25
|
+
TOOL_RESULT_MEDIA_REMEDY,
|
|
26
|
+
clampInlineMediaPart,
|
|
27
|
+
getMaxInlineMediaBytes
|
|
28
|
+
} from "./chunk-Q4FJVWI4.js";
|
|
29
|
+
import {
|
|
30
|
+
ImageViewError,
|
|
31
|
+
boundImageBuffer,
|
|
32
|
+
sniffBoundableImageMime
|
|
33
|
+
} from "./chunk-CLNDQINM.js";
|
|
24
34
|
import {
|
|
25
35
|
INVOCATION_CONTEXT_META_KEY,
|
|
26
36
|
getInvocationContext
|
|
@@ -34,7 +44,7 @@ import {
|
|
|
34
44
|
} from "./chunk-XASQGHGO.js";
|
|
35
45
|
import {
|
|
36
46
|
defaultModalities
|
|
37
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-ALTMZEBU.js";
|
|
38
48
|
import {
|
|
39
49
|
safeJsonStringify
|
|
40
50
|
} from "./chunk-HHJLM3WQ.js";
|
|
@@ -6087,9 +6097,9 @@ var DiscoveredMCPToolInvocation = class _DiscoveredMCPToolInvocation extends Bas
|
|
|
6087
6097
|
clearTimeout(idleTimeoutId);
|
|
6088
6098
|
idleTimeoutId = void 0;
|
|
6089
6099
|
}
|
|
6090
|
-
const rawResponseParts =
|
|
6091
|
-
this.serverToolName,
|
|
6092
|
-
|
|
6100
|
+
const rawResponseParts = await this.boundImages(
|
|
6101
|
+
wrapMcpCallToolResultAsParts(this.serverToolName, callToolResult),
|
|
6102
|
+
signal
|
|
6093
6103
|
);
|
|
6094
6104
|
if (this.isMCPToolError(rawResponseParts)) {
|
|
6095
6105
|
return await this.buildMcpToolError(rawResponseParts, {
|
|
@@ -6097,7 +6107,9 @@ var DiscoveredMCPToolInvocation = class _DiscoveredMCPToolInvocation extends Bas
|
|
|
6097
6107
|
args: this.params
|
|
6098
6108
|
});
|
|
6099
6109
|
}
|
|
6100
|
-
const transformedParts =
|
|
6110
|
+
const transformedParts = await this.clampInlineMedia(
|
|
6111
|
+
transformMcpContentToParts(rawResponseParts)
|
|
6112
|
+
);
|
|
6101
6113
|
const truncated = await this.truncateTextParts(transformedParts);
|
|
6102
6114
|
const fallbackText = getDisplayFromPartsWithPersistedOutput(
|
|
6103
6115
|
transformedParts,
|
|
@@ -6221,11 +6233,13 @@ var DiscoveredMCPToolInvocation = class _DiscoveredMCPToolInvocation extends Bas
|
|
|
6221
6233
|
if (isParentAbortOutcome(outcome)) {
|
|
6222
6234
|
throw outcome.reason;
|
|
6223
6235
|
}
|
|
6224
|
-
const rawResponseParts = outcome;
|
|
6236
|
+
const rawResponseParts = await this.boundImages(outcome, signal);
|
|
6225
6237
|
if (this.isMCPToolError(rawResponseParts)) {
|
|
6226
6238
|
return await this.buildMcpToolError(rawResponseParts, functionCalls[0]);
|
|
6227
6239
|
}
|
|
6228
|
-
const transformedParts =
|
|
6240
|
+
const transformedParts = await this.clampInlineMedia(
|
|
6241
|
+
transformMcpContentToParts(rawResponseParts)
|
|
6242
|
+
);
|
|
6229
6243
|
const truncated = await this.truncateTextParts(transformedParts);
|
|
6230
6244
|
return {
|
|
6231
6245
|
llmContent: truncated.parts,
|
|
@@ -6253,7 +6267,9 @@ var DiscoveredMCPToolInvocation = class _DiscoveredMCPToolInvocation extends Bas
|
|
|
6253
6267
|
let errorMessage;
|
|
6254
6268
|
let persistedOutputFiles;
|
|
6255
6269
|
if (imageContent) {
|
|
6256
|
-
const truncatedContent = await this.truncateTextParts(
|
|
6270
|
+
const truncatedContent = await this.truncateTextParts(
|
|
6271
|
+
await this.clampInlineMedia(imageContent)
|
|
6272
|
+
);
|
|
6257
6273
|
llmContent = truncatedContent.parts;
|
|
6258
6274
|
persistedOutputFiles = truncatedContent.persistedOutputFiles;
|
|
6259
6275
|
errorMessage = `MCP tool '${this.serverToolName}' reported tool error for function call: ${safeJsonStringify(
|
|
@@ -6275,6 +6291,28 @@ var DiscoveredMCPToolInvocation = class _DiscoveredMCPToolInvocation extends Bas
|
|
|
6275
6291
|
...persistedOutputFiles !== void 0 ? { persistedOutputFiles } : {}
|
|
6276
6292
|
};
|
|
6277
6293
|
}
|
|
6294
|
+
boundImages(rawResponseParts, signal) {
|
|
6295
|
+
return boundMcpImageBlocks(
|
|
6296
|
+
rawResponseParts,
|
|
6297
|
+
signal,
|
|
6298
|
+
`${this.serverName}/${this.serverToolName}`
|
|
6299
|
+
);
|
|
6300
|
+
}
|
|
6301
|
+
async clampInlineMedia(parts) {
|
|
6302
|
+
return clampMcpInlineMedia(parts, await this.isOmniMediaDeliveryActive());
|
|
6303
|
+
}
|
|
6304
|
+
/**
|
|
6305
|
+
* Whether the omni funnel (`processToolResultOmniMedia`) takes over this
|
|
6306
|
+
* result's image, audio and video parts. It uploads by reference under its
|
|
6307
|
+
* own ceilings and bounds any part it keeps inline, so the inline clamp must
|
|
6308
|
+
* not pre-empt it. `isOmniEnabled()` runs first so non-omni sessions skip
|
|
6309
|
+
* the dynamic import, as in `fileUtils`.
|
|
6310
|
+
*/
|
|
6311
|
+
async isOmniMediaDeliveryActive() {
|
|
6312
|
+
if (!this.cliConfig?.isOmniEnabled?.()) return false;
|
|
6313
|
+
const omni = await this.cliConfig.loadOmniMediaReader();
|
|
6314
|
+
return omni.isOmniDeliveryActive(this.cliConfig);
|
|
6315
|
+
}
|
|
6278
6316
|
/**
|
|
6279
6317
|
* Truncates text parts in the transformed result if they exceed the
|
|
6280
6318
|
* configured threshold. Non-text parts (images, audio, etc.) are preserved.
|
|
@@ -6565,6 +6603,86 @@ function transformImageAudioBlock(block, toolName) {
|
|
|
6565
6603
|
];
|
|
6566
6604
|
}
|
|
6567
6605
|
__name(transformImageAudioBlock, "transformImageAudioBlock");
|
|
6606
|
+
async function boundMcpImageBlocks(rawResponseParts, signal, subject) {
|
|
6607
|
+
const funcResponse = rawResponseParts?.[0]?.functionResponse;
|
|
6608
|
+
const content = funcResponse?.response?.["content"];
|
|
6609
|
+
if (!funcResponse || !Array.isArray(content)) return rawResponseParts;
|
|
6610
|
+
const inlineByteCeiling = getMaxInlineMediaBytes();
|
|
6611
|
+
let changed = false;
|
|
6612
|
+
const boundedContent = [];
|
|
6613
|
+
for (const block of content) {
|
|
6614
|
+
const media = block.type === "image" ? { data: block.data, mimeType: block.mimeType } : block.type === "resource" && block.resource?.blob ? { data: block.resource.blob, mimeType: block.resource.mimeType } : void 0;
|
|
6615
|
+
const sniffedMime = typeof media?.data === "string" ? sniffBoundableImageMime(
|
|
6616
|
+
Buffer.from(media.data.slice(0, 16), "base64")
|
|
6617
|
+
) : null;
|
|
6618
|
+
if (!media || !sniffedMime) {
|
|
6619
|
+
boundedContent.push(block);
|
|
6620
|
+
continue;
|
|
6621
|
+
}
|
|
6622
|
+
let bounded;
|
|
6623
|
+
try {
|
|
6624
|
+
const view = await boundImageBuffer(
|
|
6625
|
+
Buffer.from(media.data, "base64"),
|
|
6626
|
+
`${subject} ${sniffedMime}`,
|
|
6627
|
+
signal,
|
|
6628
|
+
inlineByteCeiling
|
|
6629
|
+
);
|
|
6630
|
+
bounded = view ? { data: view.bytes.toString("base64"), mimeType: view.mimeType } : { data: media.data, mimeType: sniffedMime };
|
|
6631
|
+
} catch (error) {
|
|
6632
|
+
if (!(error instanceof ImageViewError)) {
|
|
6633
|
+
throw error;
|
|
6634
|
+
}
|
|
6635
|
+
const message = `Unable to bound MCP image from ${subject} (${media.mimeType}): ${getErrorMessage(error)}`;
|
|
6636
|
+
if (error.code === "renderer_unavailable") {
|
|
6637
|
+
debugLogger5.warn(message);
|
|
6638
|
+
} else {
|
|
6639
|
+
debugLogger5.debug(message);
|
|
6640
|
+
}
|
|
6641
|
+
}
|
|
6642
|
+
if (!bounded || bounded.data === media.data && bounded.mimeType === media.mimeType) {
|
|
6643
|
+
boundedContent.push(block);
|
|
6644
|
+
continue;
|
|
6645
|
+
}
|
|
6646
|
+
changed = true;
|
|
6647
|
+
boundedContent.push(
|
|
6648
|
+
block.type === "resource" ? {
|
|
6649
|
+
...block,
|
|
6650
|
+
resource: {
|
|
6651
|
+
...block.resource,
|
|
6652
|
+
blob: bounded.data,
|
|
6653
|
+
mimeType: bounded.mimeType
|
|
6654
|
+
}
|
|
6655
|
+
} : { ...block, ...bounded }
|
|
6656
|
+
);
|
|
6657
|
+
}
|
|
6658
|
+
if (!changed) return rawResponseParts;
|
|
6659
|
+
return [
|
|
6660
|
+
{
|
|
6661
|
+
...rawResponseParts[0],
|
|
6662
|
+
functionResponse: {
|
|
6663
|
+
...funcResponse,
|
|
6664
|
+
response: { ...funcResponse.response, content: boundedContent }
|
|
6665
|
+
}
|
|
6666
|
+
},
|
|
6667
|
+
...rawResponseParts.slice(1)
|
|
6668
|
+
];
|
|
6669
|
+
}
|
|
6670
|
+
__name(boundMcpImageBlocks, "boundMcpImageBlocks");
|
|
6671
|
+
function clampMcpInlineMedia(parts, omniDeliveryActive) {
|
|
6672
|
+
const inlineByteCeiling = getMaxInlineMediaBytes();
|
|
6673
|
+
return parts.map((part) => {
|
|
6674
|
+
const mimeType = part.inlineData?.mimeType;
|
|
6675
|
+
if (!part.inlineData || omniDeliveryActive && /^(image|audio|video)\//.test(mimeType ?? "")) {
|
|
6676
|
+
return part;
|
|
6677
|
+
}
|
|
6678
|
+
return clampInlineMediaPart(
|
|
6679
|
+
part,
|
|
6680
|
+
inlineByteCeiling,
|
|
6681
|
+
TOOL_RESULT_MEDIA_REMEDY
|
|
6682
|
+
);
|
|
6683
|
+
});
|
|
6684
|
+
}
|
|
6685
|
+
__name(clampMcpInlineMedia, "clampMcpInlineMedia");
|
|
6568
6686
|
function transformResourceBlock(block, toolName) {
|
|
6569
6687
|
const resource = block.resource;
|
|
6570
6688
|
if (resource?.text) {
|
|
@@ -6777,6 +6895,14 @@ var ToolCallEvent = class {
|
|
|
6777
6895
|
function_name;
|
|
6778
6896
|
function_args;
|
|
6779
6897
|
duration_ms;
|
|
6898
|
+
/**
|
|
6899
|
+
* Epoch ms at which `duration_ms` started counting: when the call was
|
|
6900
|
+
* scheduled, before any approval wait. Set only when the producer measured
|
|
6901
|
+
* it. Readers must not derive it from `event.timestamp` instead — that is
|
|
6902
|
+
* when the event was logged, which for a scheduled batch is after every
|
|
6903
|
+
* call in the batch has settled.
|
|
6904
|
+
*/
|
|
6905
|
+
started_at_ms;
|
|
6780
6906
|
status;
|
|
6781
6907
|
execution_status;
|
|
6782
6908
|
success;
|
|
@@ -6801,6 +6927,7 @@ var ToolCallEvent = class {
|
|
|
6801
6927
|
this.function_name = call.request.name;
|
|
6802
6928
|
this.function_args = call.request.name === ToolNames.STRUCTURED_OUTPUT ? { ...STRUCTURED_OUTPUT_REDACTED_ARGS } : call.request.args;
|
|
6803
6929
|
this.duration_ms = call.durationMs ?? 0;
|
|
6930
|
+
if (call.startTime !== void 0) this.started_at_ms = call.startTime;
|
|
6804
6931
|
this.status = call.status;
|
|
6805
6932
|
this.execution_status = call.response.executionStatus;
|
|
6806
6933
|
this.success = call.status === "success";
|
|
@@ -9,30 +9,27 @@ import {
|
|
|
9
9
|
formatContextFileDisplayPath,
|
|
10
10
|
getMainSessionBaseSystemPrompt,
|
|
11
11
|
stripTerminalControlSequences
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-SYZPPX3O.js";
|
|
13
13
|
import {
|
|
14
14
|
qualifySkillName
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-QNEBHC2E.js";
|
|
16
16
|
import {
|
|
17
17
|
isMediaPolicyToolHiddenFromModel
|
|
18
18
|
} from "./chunk-MNU36NGH.js";
|
|
19
|
-
import {
|
|
20
|
-
resolveSlimmingConfig
|
|
21
|
-
} from "./chunk-GC3J5W2O.js";
|
|
22
19
|
import {
|
|
23
20
|
DiscoveredMCPTool,
|
|
24
21
|
uiTelemetryService
|
|
25
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-HDSI3RDN.js";
|
|
23
|
+
import {
|
|
24
|
+
resolveSlimmingConfig
|
|
25
|
+
} from "./chunk-GC3J5W2O.js";
|
|
26
26
|
import {
|
|
27
27
|
DEFAULT_TOKEN_LIMIT
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-ALTMZEBU.js";
|
|
29
29
|
import {
|
|
30
30
|
buildAvailableSkillsReminder,
|
|
31
31
|
getStartupContextLength
|
|
32
32
|
} from "./chunk-MNK4GIGD.js";
|
|
33
|
-
import {
|
|
34
|
-
buildSkillLlmContent
|
|
35
|
-
} from "./chunk-A3E7JYX7.js";
|
|
36
33
|
import {
|
|
37
34
|
ToolNames
|
|
38
35
|
} from "./chunk-RSWOFJBY.js";
|
|
@@ -320,20 +317,24 @@ function estimateFunctionResponseTokens(part, imageTokenEstimate) {
|
|
|
320
317
|
return tokens;
|
|
321
318
|
}
|
|
322
319
|
__name(estimateFunctionResponseTokens, "estimateFunctionResponseTokens");
|
|
323
|
-
function
|
|
320
|
+
function consumeBilledSkillBody(part, billedSkillBodies) {
|
|
324
321
|
if (billedSkillBodies.size === 0) return false;
|
|
325
322
|
const output = part.functionResponse?.response?.output;
|
|
326
323
|
if (typeof output !== "string") return false;
|
|
327
|
-
if (billedSkillBodies.
|
|
324
|
+
if (billedSkillBodies.delete(output)) return true;
|
|
328
325
|
for (const body of billedSkillBodies) {
|
|
329
326
|
if (output.startsWith(`${body}
|
|
330
|
-
`))
|
|
327
|
+
`)) {
|
|
328
|
+
billedSkillBodies.delete(body);
|
|
329
|
+
return true;
|
|
330
|
+
}
|
|
331
331
|
}
|
|
332
332
|
return false;
|
|
333
333
|
}
|
|
334
|
-
__name(
|
|
334
|
+
__name(consumeBilledSkillBody, "consumeBilledSkillBody");
|
|
335
335
|
function estimateConversationTokens(conversation, billing) {
|
|
336
336
|
let tokens = 0;
|
|
337
|
+
const remainingSkillBodies = new Set(billing.billedSkillBodies);
|
|
337
338
|
for (const content of conversation) {
|
|
338
339
|
for (const part of content.parts ?? []) {
|
|
339
340
|
if (typeof part.text === "string") {
|
|
@@ -344,7 +345,7 @@ function estimateConversationTokens(conversation, billing) {
|
|
|
344
345
|
} else if (part.functionCall) {
|
|
345
346
|
tokens += estimateContextTextTokens(JSON.stringify(part.functionCall));
|
|
346
347
|
} else if (part.functionResponse) {
|
|
347
|
-
if (part.functionResponse.name === ToolNames.SKILL &&
|
|
348
|
+
if (part.functionResponse.name === ToolNames.SKILL && consumeBilledSkillBody(part, remainingSkillBodies)) {
|
|
348
349
|
continue;
|
|
349
350
|
}
|
|
350
351
|
tokens += estimateFunctionResponseTokens(
|
|
@@ -417,7 +418,18 @@ async function collectContextData(config, showDetails) {
|
|
|
417
418
|
const memoryFilesTokens = memoryFiles.reduce((sum, f) => sum + f.tokens, 0);
|
|
418
419
|
const skillTool = allTools.find((tool) => tool.name === ToolNames.SKILL);
|
|
419
420
|
const skillToolDefinitionTokens = skillTool ? estimateContextTextTokens(JSON.stringify(skillTool.schema)) : 0;
|
|
420
|
-
const
|
|
421
|
+
const loadedContentNames = skillTool && "getLoadedSkillContentNames" in skillTool ? skillTool.getLoadedSkillContentNames() : /* @__PURE__ */ new Map();
|
|
422
|
+
const bodyTokensByName = /* @__PURE__ */ new Map();
|
|
423
|
+
for (const [content, name] of loadedContentNames) {
|
|
424
|
+
bodyTokensByName.set(
|
|
425
|
+
name,
|
|
426
|
+
(bodyTokensByName.get(name) ?? 0) + estimateContextTextTokens(content)
|
|
427
|
+
);
|
|
428
|
+
}
|
|
429
|
+
const loadedBodiesTokens = [...bodyTokensByName.values()].reduce(
|
|
430
|
+
(sum, tokens) => sum + tokens,
|
|
431
|
+
0
|
|
432
|
+
);
|
|
421
433
|
const skillManager = config.getSkillManager();
|
|
422
434
|
const skillConfigs = skillManager ? await skillManager.listSkills() : [];
|
|
423
435
|
const enabledSkillNames = new Set(
|
|
@@ -431,19 +443,11 @@ async function collectContextData(config, showDetails) {
|
|
|
431
443
|
}
|
|
432
444
|
}
|
|
433
445
|
mergeSkillListing(skillListing, tailSkillListings.listing);
|
|
434
|
-
|
|
435
|
-
const billedSkillBodies = /* @__PURE__ */ new Set();
|
|
446
|
+
const billedSkillBodies = new Set(loadedContentNames.keys());
|
|
436
447
|
const skills = skillConfigs.map((skill) => {
|
|
437
448
|
const listingTokens = skillListing.byName.get(skill.name.toLowerCase())?.tokens ?? 0;
|
|
438
|
-
const
|
|
439
|
-
|
|
440
|
-
if (isLoaded && skill.body) {
|
|
441
|
-
const baseDir = skill.filePath ? path.dirname(skill.filePath) : "";
|
|
442
|
-
const body = buildSkillLlmContent(baseDir, skill.body);
|
|
443
|
-
bodyTokens = estimateContextTextTokens(body);
|
|
444
|
-
loadedBodiesTokens += bodyTokens;
|
|
445
|
-
billedSkillBodies.add(body);
|
|
446
|
-
}
|
|
449
|
+
const bodyTokens = bodyTokensByName.get(skill.name);
|
|
450
|
+
const isLoaded = bodyTokens !== void 0;
|
|
447
451
|
return {
|
|
448
452
|
name: skill.name,
|
|
449
453
|
tokens: listingTokens,
|
|
@@ -451,7 +455,18 @@ async function collectContextData(config, showDetails) {
|
|
|
451
455
|
bodyTokens
|
|
452
456
|
};
|
|
453
457
|
});
|
|
454
|
-
const
|
|
458
|
+
const discoveredNames = new Set(skillConfigs.map((skill) => skill.name));
|
|
459
|
+
for (const [name, bodyTokens] of bodyTokensByName) {
|
|
460
|
+
if (!discoveredNames.has(name)) {
|
|
461
|
+
skills.push({
|
|
462
|
+
name,
|
|
463
|
+
tokens: skillListing.byName.get(name.toLowerCase())?.tokens ?? 0,
|
|
464
|
+
loaded: true,
|
|
465
|
+
bodyTokens
|
|
466
|
+
});
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
const rowedNames = new Set(skills.map((s) => s.name.toLowerCase()));
|
|
455
470
|
for (const [key, entry] of skillListing.byName) {
|
|
456
471
|
if (rowedNames.has(key)) continue;
|
|
457
472
|
rowedNames.add(key);
|
|
@@ -587,7 +602,7 @@ async function collectContextData(config, showDetails) {
|
|
|
587
602
|
mcpTools: showDetails ? detailMcpTools : [],
|
|
588
603
|
memoryFiles: showDetails ? detailMemoryFiles : [],
|
|
589
604
|
skills: showDetails ? detailSkills.filter(
|
|
590
|
-
(skill) => enabledSkillNames.has(skill.name.toLowerCase())
|
|
605
|
+
(skill) => skill.loaded || enabledSkillNames.has(skill.name.toLowerCase())
|
|
591
606
|
) : [],
|
|
592
607
|
isEstimated,
|
|
593
608
|
showDetails
|
|
@@ -751,9 +766,8 @@ function formatContextUsageText(data) {
|
|
|
751
766
|
lines.push("");
|
|
752
767
|
lines.push("**Skills**");
|
|
753
768
|
for (const skill of sortedSkills) {
|
|
754
|
-
const label = skill.loaded ? `${skill.name} (active)` : skill.name;
|
|
755
769
|
lines.push(
|
|
756
|
-
fmtCategoryRow(
|
|
770
|
+
fmtCategoryRow(skill.name, skill.tokens, contextWindowSize, " \u2514 ")
|
|
757
771
|
);
|
|
758
772
|
if (skill.loaded && skill.bodyTokens && skill.bodyTokens > 0) {
|
|
759
773
|
lines.push(
|
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
// Force strict mode and setup for ESM
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
|
-
multiSessionCompatibilityError
|
|
5
|
-
|
|
4
|
+
multiSessionCompatibilityError,
|
|
5
|
+
parseMessageRoutingConfig
|
|
6
|
+
} from "./chunk-53IRNMPU.js";
|
|
6
7
|
import {
|
|
7
8
|
UNSAFE_OBJECT_KEYS,
|
|
8
9
|
getPlugin
|
|
9
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-VUIH3BQL.js";
|
|
10
11
|
import {
|
|
11
12
|
CHANNEL_OUTPUT_MODE_FIELD,
|
|
12
13
|
parseChannelOutputMode
|
|
13
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-DE2WI7RU.js";
|
|
14
15
|
import {
|
|
15
16
|
loadSettings,
|
|
16
17
|
saveSettings
|
|
17
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-36ZMEEBW.js";
|
|
18
19
|
import {
|
|
19
20
|
init_esbuild_shims
|
|
20
21
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -101,13 +102,22 @@ function assertStringRecord(key, value, allowedKeys) {
|
|
|
101
102
|
}
|
|
102
103
|
__name(assertStringRecord, "assertStringRecord");
|
|
103
104
|
function assertSharedField(key, value, previous) {
|
|
105
|
+
if (key === "messageRoutes" || key === "defaultMessageRoute") {
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
104
108
|
if (key === "multiSession") {
|
|
105
109
|
if (typeof value !== "boolean") {
|
|
106
110
|
throw invalidConfig(`Channel field "${key}" must be a boolean.`);
|
|
107
111
|
}
|
|
108
112
|
return true;
|
|
109
113
|
}
|
|
114
|
+
if (key === "groupSenderPolicy" || key === "allowedGroupUsers") {
|
|
115
|
+
throw invalidConfig(
|
|
116
|
+
`Channel field "${key}" moved to groups["*"].${key === "groupSenderPolicy" ? "senders" : "allowedUsers"}.`
|
|
117
|
+
);
|
|
118
|
+
}
|
|
110
119
|
const enumValues = {
|
|
120
|
+
privatePolicy: /* @__PURE__ */ new Set(["disabled", "allowlist", "pairing", "open"]),
|
|
111
121
|
senderPolicy: /* @__PURE__ */ new Set(["allowlist", "pairing", "open"]),
|
|
112
122
|
dmPolicy: /* @__PURE__ */ new Set(["open", "disabled"]),
|
|
113
123
|
groupPolicy: /* @__PURE__ */ new Set(["disabled", "allowlist", "pairing", "open"]),
|
|
@@ -126,7 +136,7 @@ function assertSharedField(key, value, previous) {
|
|
|
126
136
|
}
|
|
127
137
|
return true;
|
|
128
138
|
}
|
|
129
|
-
if (key === "allowedUsers") {
|
|
139
|
+
if (key === "allowedUsers" || key === "operators") {
|
|
130
140
|
if (!Array.isArray(value) || value.some((item) => typeof item !== "string")) {
|
|
131
141
|
throw invalidConfig(`Channel field "${key}" must be a string array.`);
|
|
132
142
|
}
|
|
@@ -149,10 +159,12 @@ function assertSharedField(key, value, previous) {
|
|
|
149
159
|
const known = [
|
|
150
160
|
"requireMention",
|
|
151
161
|
"dispatchMode",
|
|
152
|
-
"groupHistoryLimit"
|
|
162
|
+
"groupHistoryLimit",
|
|
163
|
+
"senders",
|
|
164
|
+
"allowedUsers"
|
|
153
165
|
].includes(nestedKey);
|
|
154
|
-
const valid = nestedKey === "requireMention" && typeof nestedValue === "boolean" || nestedKey === "dispatchMode" && typeof nestedValue === "string" && ["collect", "steer", "followup"].includes(nestedValue) || nestedKey === "groupHistoryLimit" && typeof nestedValue === "number" && Number.isFinite(nestedValue);
|
|
155
|
-
if (known && !valid && !(Object.hasOwn(previousGroup, nestedKey) && isDeepStrictEqual(previousGroup[nestedKey], nestedValue) && !containsUnsafeObjectKey(nestedValue))) {
|
|
166
|
+
const valid = nestedKey === "requireMention" && typeof nestedValue === "boolean" || nestedKey === "dispatchMode" && typeof nestedValue === "string" && ["collect", "steer", "followup"].includes(nestedValue) || nestedKey === "groupHistoryLimit" && typeof nestedValue === "number" && Number.isFinite(nestedValue) || nestedKey === "senders" && typeof nestedValue === "string" && ["open", "allowlist"].includes(nestedValue) || nestedKey === "allowedUsers" && Array.isArray(nestedValue) && nestedValue.every((item) => typeof item === "string");
|
|
167
|
+
if (known && !valid && !(nestedKey !== "senders" && Object.hasOwn(previousGroup, nestedKey) && isDeepStrictEqual(previousGroup[nestedKey], nestedValue) && !containsUnsafeObjectKey(nestedValue))) {
|
|
156
168
|
throw invalidConfig(
|
|
157
169
|
`Channel field "${key}.${groupId}.${nestedKey}" is invalid.`
|
|
158
170
|
);
|
|
@@ -458,6 +470,17 @@ var WorkspaceChannelSettingsStore = class {
|
|
|
458
470
|
webhooks: nextConfig["webhooks"]
|
|
459
471
|
});
|
|
460
472
|
if (multiSessionError) throw invalidConfig(multiSessionError);
|
|
473
|
+
try {
|
|
474
|
+
const routing = parseMessageRoutingConfig(name, nextConfig);
|
|
475
|
+
if (routing.messageRoutes !== void 0)
|
|
476
|
+
nextConfig["messageRoutes"] = routing.messageRoutes;
|
|
477
|
+
if (routing.defaultMessageRoute !== void 0)
|
|
478
|
+
nextConfig["defaultMessageRoute"] = routing.defaultMessageRoute;
|
|
479
|
+
} catch (error) {
|
|
480
|
+
throw invalidConfig(
|
|
481
|
+
error instanceof Error ? error.message : String(error)
|
|
482
|
+
);
|
|
483
|
+
}
|
|
461
484
|
let crossFieldError;
|
|
462
485
|
try {
|
|
463
486
|
crossFieldError = plugin.management.validateConfig?.(nextConfig);
|