@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
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
// Force strict mode and setup for ESM
|
|
2
2
|
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
IMAGE_MAX_SOURCE_BYTES,
|
|
5
|
+
ImageViewError,
|
|
6
|
+
extensionForMimeType,
|
|
7
|
+
looksLikeText,
|
|
8
|
+
renderImageOverview,
|
|
9
|
+
sniffFileKind
|
|
10
|
+
} from "./chunk-CLNDQINM.js";
|
|
3
11
|
import {
|
|
4
12
|
detectEncodingFromBuffer
|
|
5
13
|
} from "./chunk-GMTJ3YQW.js";
|
|
@@ -461,227 +469,6 @@ async function renderPDFPagesToImages(filePath, options) {
|
|
|
461
469
|
}
|
|
462
470
|
__name(renderPDFPagesToImages, "renderPDFPagesToImages");
|
|
463
471
|
|
|
464
|
-
// packages/core/src/utils/binary-content.ts
|
|
465
|
-
init_esbuild_shims();
|
|
466
|
-
import { mkdir, writeFile } from "node:fs/promises";
|
|
467
|
-
import * as path from "node:path";
|
|
468
|
-
var BINARY_APPLICATION_TYPES = /* @__PURE__ */ new Set([
|
|
469
|
-
"application/pdf",
|
|
470
|
-
"application/zip",
|
|
471
|
-
"application/gzip",
|
|
472
|
-
"application/x-gzip",
|
|
473
|
-
"application/octet-stream",
|
|
474
|
-
"application/msword",
|
|
475
|
-
"application/vnd.ms-excel",
|
|
476
|
-
"application/vnd.ms-powerpoint",
|
|
477
|
-
"application/x-tar",
|
|
478
|
-
"application/x-7z-compressed",
|
|
479
|
-
"application/x-rar-compressed",
|
|
480
|
-
"application/vnd.rar",
|
|
481
|
-
"application/wasm",
|
|
482
|
-
"application/java-archive"
|
|
483
|
-
]);
|
|
484
|
-
function isBinaryContentType(contentType) {
|
|
485
|
-
if (!contentType) return false;
|
|
486
|
-
const mt = (contentType.split(";")[0] ?? "").trim().toLowerCase();
|
|
487
|
-
if (mt.startsWith("text/")) return false;
|
|
488
|
-
if (mt.endsWith("+json") || mt.endsWith("+xml")) return false;
|
|
489
|
-
if (mt.startsWith("image/") || mt.startsWith("audio/") || mt.startsWith("video/") || mt.startsWith("font/")) {
|
|
490
|
-
return true;
|
|
491
|
-
}
|
|
492
|
-
if (BINARY_APPLICATION_TYPES.has(mt)) return true;
|
|
493
|
-
if (mt.startsWith("application/vnd.openxmlformats")) return true;
|
|
494
|
-
if (mt.startsWith("application/vnd.oasis.opendocument")) return true;
|
|
495
|
-
return false;
|
|
496
|
-
}
|
|
497
|
-
__name(isBinaryContentType, "isBinaryContentType");
|
|
498
|
-
var MIME_EXTENSIONS = /* @__PURE__ */ new Map([
|
|
499
|
-
["application/pdf", "pdf"],
|
|
500
|
-
["application/zip", "zip"],
|
|
501
|
-
[
|
|
502
|
-
"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
503
|
-
"docx"
|
|
504
|
-
],
|
|
505
|
-
["application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "xlsx"],
|
|
506
|
-
[
|
|
507
|
-
"application/vnd.openxmlformats-officedocument.presentationml.presentation",
|
|
508
|
-
"pptx"
|
|
509
|
-
],
|
|
510
|
-
["application/msword", "doc"],
|
|
511
|
-
["application/vnd.ms-excel", "xls"],
|
|
512
|
-
["application/vnd.ms-powerpoint", "ppt"],
|
|
513
|
-
["application/gzip", "gz"],
|
|
514
|
-
["application/x-gzip", "gz"],
|
|
515
|
-
["application/x-tar", "tar"],
|
|
516
|
-
["application/x-7z-compressed", "7z"],
|
|
517
|
-
["application/x-rar-compressed", "rar"],
|
|
518
|
-
["application/vnd.rar", "rar"],
|
|
519
|
-
["application/wasm", "wasm"],
|
|
520
|
-
["application/java-archive", "jar"],
|
|
521
|
-
["audio/mpeg", "mp3"],
|
|
522
|
-
["audio/wav", "wav"],
|
|
523
|
-
["audio/ogg", "ogg"],
|
|
524
|
-
["video/mp4", "mp4"],
|
|
525
|
-
["video/webm", "webm"],
|
|
526
|
-
["image/png", "png"],
|
|
527
|
-
["image/jpeg", "jpg"],
|
|
528
|
-
["image/gif", "gif"],
|
|
529
|
-
["image/webp", "webp"],
|
|
530
|
-
["image/svg+xml", "svg"]
|
|
531
|
-
]);
|
|
532
|
-
function extensionForMimeType(mimeType) {
|
|
533
|
-
if (!mimeType) return "bin";
|
|
534
|
-
const mt = (mimeType.split(";")[0] ?? "").trim().toLowerCase();
|
|
535
|
-
return MIME_EXTENSIONS.get(mt) ?? "bin";
|
|
536
|
-
}
|
|
537
|
-
__name(extensionForMimeType, "extensionForMimeType");
|
|
538
|
-
var KNOWN_EXTENSIONS = /* @__PURE__ */ new Set([...MIME_EXTENSIONS.values(), "jpeg", "bin"]);
|
|
539
|
-
function extensionFromFilename(name) {
|
|
540
|
-
if (!name) return void 0;
|
|
541
|
-
const ext = name.split(".").pop()?.trim().toLowerCase();
|
|
542
|
-
return ext && ext !== name && KNOWN_EXTENSIONS.has(ext) ? ext : void 0;
|
|
543
|
-
}
|
|
544
|
-
__name(extensionFromFilename, "extensionFromFilename");
|
|
545
|
-
function filenameFromContentDisposition(contentDisposition) {
|
|
546
|
-
const star = /filename\*\s*=\s*[^']*'[^']*'([^;]+)/i.exec(contentDisposition);
|
|
547
|
-
if (star?.[1]) {
|
|
548
|
-
try {
|
|
549
|
-
return decodeURIComponent(star[1].trim());
|
|
550
|
-
} catch {
|
|
551
|
-
return star[1].trim();
|
|
552
|
-
}
|
|
553
|
-
}
|
|
554
|
-
const plain = /filename\s*=\s*"?([^";]+)"?/i.exec(contentDisposition);
|
|
555
|
-
return plain?.[1]?.trim();
|
|
556
|
-
}
|
|
557
|
-
__name(filenameFromContentDisposition, "filenameFromContentDisposition");
|
|
558
|
-
function sniffFileKind(bytes, contentType, contentDisposition, url) {
|
|
559
|
-
const dispositionExt = extensionFromFilename(
|
|
560
|
-
filenameFromContentDisposition(contentDisposition)
|
|
561
|
-
);
|
|
562
|
-
let urlExt;
|
|
563
|
-
try {
|
|
564
|
-
urlExt = extensionFromFilename(new URL(url).pathname.split("/").pop());
|
|
565
|
-
} catch {
|
|
566
|
-
urlExt = void 0;
|
|
567
|
-
}
|
|
568
|
-
if (bytes.length >= 5 && bytes.subarray(0, 5).toString("latin1") === "%PDF-") {
|
|
569
|
-
return {
|
|
570
|
-
extension: "pdf",
|
|
571
|
-
mimeType: "application/pdf",
|
|
572
|
-
magicMatched: true,
|
|
573
|
-
extensionSource: "magic"
|
|
574
|
-
};
|
|
575
|
-
}
|
|
576
|
-
if (bytes.length >= 4 && bytes[0] === 80 && bytes[1] === 75 && bytes[2] === 3 && bytes[3] === 4) {
|
|
577
|
-
const zipHint = dispositionExt ?? urlExt ?? extensionForMimeType(contentType);
|
|
578
|
-
const refined = zipHint && ["docx", "xlsx", "pptx", "jar"].includes(zipHint) ? zipHint : "zip";
|
|
579
|
-
return {
|
|
580
|
-
extension: refined,
|
|
581
|
-
mimeType: contentType || "application/zip",
|
|
582
|
-
magicMatched: true,
|
|
583
|
-
extensionSource: "magic"
|
|
584
|
-
};
|
|
585
|
-
}
|
|
586
|
-
if (bytes.length >= 2 && bytes[0] === 31 && bytes[1] === 139) {
|
|
587
|
-
return {
|
|
588
|
-
extension: "gz",
|
|
589
|
-
mimeType: "application/gzip",
|
|
590
|
-
magicMatched: true,
|
|
591
|
-
extensionSource: "magic"
|
|
592
|
-
};
|
|
593
|
-
}
|
|
594
|
-
if (bytes.length >= 7 && bytes.subarray(0, 4).toString("latin1") === "Rar!" && bytes[4] === 26 && bytes[5] === 7) {
|
|
595
|
-
return {
|
|
596
|
-
extension: "rar",
|
|
597
|
-
mimeType: "application/vnd.rar",
|
|
598
|
-
magicMatched: true,
|
|
599
|
-
extensionSource: "magic"
|
|
600
|
-
};
|
|
601
|
-
}
|
|
602
|
-
if (bytes.length >= 8 && bytes[0] === 137 && bytes.subarray(1, 4).toString("latin1") === "PNG") {
|
|
603
|
-
return {
|
|
604
|
-
extension: "png",
|
|
605
|
-
mimeType: "image/png",
|
|
606
|
-
magicMatched: true,
|
|
607
|
-
extensionSource: "magic"
|
|
608
|
-
};
|
|
609
|
-
}
|
|
610
|
-
if (bytes.length >= 3 && bytes[0] === 255 && bytes[1] === 216 && bytes[2] === 255) {
|
|
611
|
-
return {
|
|
612
|
-
extension: "jpg",
|
|
613
|
-
mimeType: "image/jpeg",
|
|
614
|
-
magicMatched: true,
|
|
615
|
-
extensionSource: "magic"
|
|
616
|
-
};
|
|
617
|
-
}
|
|
618
|
-
if (bytes.length >= 4 && bytes.subarray(0, 4).toString("latin1") === "GIF8") {
|
|
619
|
-
return {
|
|
620
|
-
extension: "gif",
|
|
621
|
-
mimeType: "image/gif",
|
|
622
|
-
magicMatched: true,
|
|
623
|
-
extensionSource: "magic"
|
|
624
|
-
};
|
|
625
|
-
}
|
|
626
|
-
if (bytes.length >= 12 && bytes.subarray(0, 4).toString("latin1") === "RIFF" && bytes.subarray(8, 12).toString("latin1") === "WEBP") {
|
|
627
|
-
return {
|
|
628
|
-
extension: "webp",
|
|
629
|
-
mimeType: "image/webp",
|
|
630
|
-
magicMatched: true,
|
|
631
|
-
extensionSource: "magic"
|
|
632
|
-
};
|
|
633
|
-
}
|
|
634
|
-
const nameExt = dispositionExt ?? urlExt;
|
|
635
|
-
if (nameExt) {
|
|
636
|
-
return {
|
|
637
|
-
extension: nameExt,
|
|
638
|
-
mimeType: contentType,
|
|
639
|
-
magicMatched: false,
|
|
640
|
-
extensionSource: "name"
|
|
641
|
-
};
|
|
642
|
-
}
|
|
643
|
-
const mimeExt = extensionForMimeType(contentType);
|
|
644
|
-
return {
|
|
645
|
-
extension: mimeExt,
|
|
646
|
-
mimeType: contentType,
|
|
647
|
-
magicMatched: false,
|
|
648
|
-
extensionSource: mimeExt !== "bin" ? "mime" : "fallback"
|
|
649
|
-
};
|
|
650
|
-
}
|
|
651
|
-
__name(sniffFileKind, "sniffFileKind");
|
|
652
|
-
function looksLikeText(bytes) {
|
|
653
|
-
const window = bytes.subarray(0, 8192);
|
|
654
|
-
if (window.includes(0)) return false;
|
|
655
|
-
const decoded = new TextDecoder("utf-8").decode(window);
|
|
656
|
-
let bad = 0;
|
|
657
|
-
for (let i = 0; i < decoded.length; i++) {
|
|
658
|
-
if (decoded[i] === "\uFFFD" && ++bad > 2) return false;
|
|
659
|
-
}
|
|
660
|
-
return true;
|
|
661
|
-
}
|
|
662
|
-
__name(looksLikeText, "looksLikeText");
|
|
663
|
-
async function persistBinaryContent(bytes, ext, dir, persistId) {
|
|
664
|
-
const filepath = path.join(dir, `${persistId}.${ext}`);
|
|
665
|
-
try {
|
|
666
|
-
await mkdir(dir, { recursive: true, mode: 448 });
|
|
667
|
-
await writeFile(filepath, bytes, { mode: 384 });
|
|
668
|
-
} catch (error) {
|
|
669
|
-
return { error: error instanceof Error ? error.message : String(error) };
|
|
670
|
-
}
|
|
671
|
-
return { filepath, size: bytes.length, ext };
|
|
672
|
-
}
|
|
673
|
-
__name(persistBinaryContent, "persistBinaryContent");
|
|
674
|
-
function formatByteSize(sizeInBytes) {
|
|
675
|
-
const kb = sizeInBytes / 1024;
|
|
676
|
-
if (kb < 1) return `${sizeInBytes} bytes`;
|
|
677
|
-
const fmt = /* @__PURE__ */ __name((n) => n.toFixed(1).replace(/\.0$/, ""), "fmt");
|
|
678
|
-
if (kb < 1024) return `${fmt(kb)}KB`;
|
|
679
|
-
const mb = kb / 1024;
|
|
680
|
-
if (mb < 1024) return `${fmt(mb)}MB`;
|
|
681
|
-
return `${fmt(mb / 1024)}GB`;
|
|
682
|
-
}
|
|
683
|
-
__name(formatByteSize, "formatByteSize");
|
|
684
|
-
|
|
685
472
|
// packages/core/src/utils/notebook.ts
|
|
686
473
|
init_esbuild_shims();
|
|
687
474
|
import fs from "node:fs";
|
|
@@ -949,245 +736,11 @@ ${cellTexts.join("\n\n")}`,
|
|
|
949
736
|
}
|
|
950
737
|
__name(readNotebookWithMetadata, "readNotebookWithMetadata");
|
|
951
738
|
|
|
952
|
-
// packages/core/src/utils/image-view.ts
|
|
953
|
-
init_esbuild_shims();
|
|
954
|
-
import fs2 from "node:fs/promises";
|
|
955
|
-
var IMAGE_VIEW_MAX_EDGE = 1568;
|
|
956
|
-
var IMAGE_VIEW_MAX_PATCHES = 1568;
|
|
957
|
-
var IMAGE_PATCH_SIZE = 28;
|
|
958
|
-
var IMAGE_MAX_UPSCALE = 8;
|
|
959
|
-
var IMAGE_JPEG_QUALITY = 92;
|
|
960
|
-
var IMAGE_MAX_SOURCE_BYTES = 100 * 1024 * 1024;
|
|
961
|
-
var IMAGE_MAX_OUTPUT_BYTES = 9 * 1024 * 1024;
|
|
962
|
-
var SUPPORTED_IMAGE_FORMATS = /* @__PURE__ */ new Set(["jpeg", "png", "webp"]);
|
|
963
|
-
var ImageViewError = class extends Error {
|
|
964
|
-
constructor(code, message) {
|
|
965
|
-
super(message);
|
|
966
|
-
this.code = code;
|
|
967
|
-
}
|
|
968
|
-
static {
|
|
969
|
-
__name(this, "ImageViewError");
|
|
970
|
-
}
|
|
971
|
-
};
|
|
972
|
-
function orientedSize(metadata) {
|
|
973
|
-
const autoOrient = metadata.autoOrient;
|
|
974
|
-
if (autoOrient) {
|
|
975
|
-
return { width: autoOrient.width, height: autoOrient.height };
|
|
976
|
-
}
|
|
977
|
-
const width = metadata.width ?? 0;
|
|
978
|
-
const height = metadata.height ?? 0;
|
|
979
|
-
const orientation = metadata.orientation ?? 0;
|
|
980
|
-
return orientation >= 5 && orientation <= 8 ? { width: height, height: width } : { width, height };
|
|
981
|
-
}
|
|
982
|
-
__name(orientedSize, "orientedSize");
|
|
983
|
-
function fitsVisualBudget({ width, height }) {
|
|
984
|
-
return width <= IMAGE_VIEW_MAX_EDGE && height <= IMAGE_VIEW_MAX_EDGE && Math.ceil(width / IMAGE_PATCH_SIZE) * Math.ceil(height / IMAGE_PATCH_SIZE) <= IMAGE_VIEW_MAX_PATCHES;
|
|
985
|
-
}
|
|
986
|
-
__name(fitsVisualBudget, "fitsVisualBudget");
|
|
987
|
-
function boundedSize(width, height, maxUpscale) {
|
|
988
|
-
const widthIsLongEdge = width >= height;
|
|
989
|
-
const maxLongEdge = Math.min(
|
|
990
|
-
IMAGE_VIEW_MAX_EDGE,
|
|
991
|
-
Math.max(width, height) * maxUpscale
|
|
992
|
-
);
|
|
993
|
-
let low = 1;
|
|
994
|
-
let high = maxLongEdge;
|
|
995
|
-
let best = { width: 1, height: 1 };
|
|
996
|
-
while (low <= high) {
|
|
997
|
-
const longEdge = Math.floor((low + high) / 2);
|
|
998
|
-
const candidate = widthIsLongEdge ? {
|
|
999
|
-
width: longEdge,
|
|
1000
|
-
height: Math.max(1, Math.round(height / width * longEdge))
|
|
1001
|
-
} : {
|
|
1002
|
-
width: Math.max(1, Math.round(width / height * longEdge)),
|
|
1003
|
-
height: longEdge
|
|
1004
|
-
};
|
|
1005
|
-
if (fitsVisualBudget(candidate)) {
|
|
1006
|
-
best = candidate;
|
|
1007
|
-
low = longEdge + 1;
|
|
1008
|
-
} else {
|
|
1009
|
-
high = longEdge - 1;
|
|
1010
|
-
}
|
|
1011
|
-
}
|
|
1012
|
-
return best;
|
|
1013
|
-
}
|
|
1014
|
-
__name(boundedSize, "boundedSize");
|
|
1015
|
-
async function prepareImage(filePath, signal) {
|
|
1016
|
-
signal.throwIfAborted();
|
|
1017
|
-
let sharp;
|
|
1018
|
-
try {
|
|
1019
|
-
sharp = (await import("sharp")).default;
|
|
1020
|
-
} catch {
|
|
1021
|
-
throw new ImageViewError(
|
|
1022
|
-
"renderer_unavailable",
|
|
1023
|
-
'Image rendering is unavailable because the "sharp" image module could not be loaded.'
|
|
1024
|
-
);
|
|
1025
|
-
}
|
|
1026
|
-
let stats;
|
|
1027
|
-
try {
|
|
1028
|
-
stats = await fs2.stat(filePath);
|
|
1029
|
-
} catch (error) {
|
|
1030
|
-
if (error.code === "ENOENT") {
|
|
1031
|
-
throw new ImageViewError(
|
|
1032
|
-
"file_not_found",
|
|
1033
|
-
`Image file not found: ${filePath}`
|
|
1034
|
-
);
|
|
1035
|
-
}
|
|
1036
|
-
throw error;
|
|
1037
|
-
}
|
|
1038
|
-
if (stats.isDirectory()) {
|
|
1039
|
-
throw new ImageViewError(
|
|
1040
|
-
"target_is_directory",
|
|
1041
|
-
`Image path is a directory: ${filePath}`
|
|
1042
|
-
);
|
|
1043
|
-
}
|
|
1044
|
-
if (!stats.isFile()) {
|
|
1045
|
-
throw new ImageViewError(
|
|
1046
|
-
"target_not_regular_file",
|
|
1047
|
-
`Image path is not a regular file: ${filePath}`
|
|
1048
|
-
);
|
|
1049
|
-
}
|
|
1050
|
-
if (stats.size > IMAGE_MAX_SOURCE_BYTES) {
|
|
1051
|
-
throw new ImageViewError(
|
|
1052
|
-
"source_too_large",
|
|
1053
|
-
`Image file exceeds the 100 MB source limit: ${filePath}`
|
|
1054
|
-
);
|
|
1055
|
-
}
|
|
1056
|
-
const bytes = await fs2.readFile(filePath, { signal });
|
|
1057
|
-
if (bytes.length > IMAGE_MAX_SOURCE_BYTES) {
|
|
1058
|
-
throw new ImageViewError(
|
|
1059
|
-
"source_too_large",
|
|
1060
|
-
`Image file exceeds the 100 MB source limit: ${filePath}`
|
|
1061
|
-
);
|
|
1062
|
-
}
|
|
1063
|
-
let metadata;
|
|
1064
|
-
try {
|
|
1065
|
-
metadata = await sharp(bytes, {
|
|
1066
|
-
failOn: "error",
|
|
1067
|
-
limitInputPixels: true
|
|
1068
|
-
}).metadata();
|
|
1069
|
-
} catch {
|
|
1070
|
-
signal.throwIfAborted();
|
|
1071
|
-
throw new ImageViewError(
|
|
1072
|
-
"decode_failed",
|
|
1073
|
-
`Failed to decode image (file may be corrupt or not a static PNG, JPEG, or WebP): ${filePath}`
|
|
1074
|
-
);
|
|
1075
|
-
}
|
|
1076
|
-
signal.throwIfAborted();
|
|
1077
|
-
if (!SUPPORTED_IMAGE_FORMATS.has(metadata.format)) {
|
|
1078
|
-
throw new ImageViewError(
|
|
1079
|
-
"unsupported_image",
|
|
1080
|
-
`Unsupported image. Expected a static PNG, JPEG, or WebP file: ${filePath}`
|
|
1081
|
-
);
|
|
1082
|
-
}
|
|
1083
|
-
if ((metadata.pages ?? 1) > 1) {
|
|
1084
|
-
throw new ImageViewError(
|
|
1085
|
-
"animated_image",
|
|
1086
|
-
`Only static images are supported: ${filePath}`
|
|
1087
|
-
);
|
|
1088
|
-
}
|
|
1089
|
-
return { bytes, metadata, sharp };
|
|
1090
|
-
}
|
|
1091
|
-
__name(prepareImage, "prepareImage");
|
|
1092
|
-
async function renderImageView(filePath, prepared, selection, outputSize, signal) {
|
|
1093
|
-
const { bytes, metadata, sharp } = prepared;
|
|
1094
|
-
const sourceSize = orientedSize(metadata);
|
|
1095
|
-
let output;
|
|
1096
|
-
try {
|
|
1097
|
-
output = await sharp(bytes, {
|
|
1098
|
-
failOn: "error",
|
|
1099
|
-
limitInputPixels: true
|
|
1100
|
-
}).rotate().extract(selection).resize(outputSize.width, outputSize.height, {
|
|
1101
|
-
fit: "fill",
|
|
1102
|
-
kernel: sharp.kernel.lanczos3
|
|
1103
|
-
}).flatten({ background: "#ffffff" }).jpeg({
|
|
1104
|
-
quality: IMAGE_JPEG_QUALITY,
|
|
1105
|
-
chromaSubsampling: "4:4:4"
|
|
1106
|
-
}).toBuffer();
|
|
1107
|
-
} catch {
|
|
1108
|
-
signal.throwIfAborted();
|
|
1109
|
-
throw new ImageViewError(
|
|
1110
|
-
"decode_failed",
|
|
1111
|
-
`Failed to render image overview: ${filePath}`
|
|
1112
|
-
);
|
|
1113
|
-
}
|
|
1114
|
-
signal.throwIfAborted();
|
|
1115
|
-
if (output.length > IMAGE_MAX_OUTPUT_BYTES) {
|
|
1116
|
-
throw new ImageViewError(
|
|
1117
|
-
"output_too_large",
|
|
1118
|
-
`Rendered image exceeds the 9 MB output limit: ${filePath}`
|
|
1119
|
-
);
|
|
1120
|
-
}
|
|
1121
|
-
return {
|
|
1122
|
-
bytes: output,
|
|
1123
|
-
mimeType: "image/jpeg",
|
|
1124
|
-
sourceWidth: sourceSize.width,
|
|
1125
|
-
sourceHeight: sourceSize.height,
|
|
1126
|
-
selectedWidth: selection.width,
|
|
1127
|
-
selectedHeight: selection.height,
|
|
1128
|
-
outputWidth: outputSize.width,
|
|
1129
|
-
outputHeight: outputSize.height
|
|
1130
|
-
};
|
|
1131
|
-
}
|
|
1132
|
-
__name(renderImageView, "renderImageView");
|
|
1133
|
-
async function renderImageOverview(filePath, signal) {
|
|
1134
|
-
const prepared = await prepareImage(filePath, signal);
|
|
1135
|
-
const { width: sourceWidth, height: sourceHeight } = orientedSize(
|
|
1136
|
-
prepared.metadata
|
|
1137
|
-
);
|
|
1138
|
-
const outputSize = boundedSize(sourceWidth, sourceHeight, 1);
|
|
1139
|
-
return renderImageView(
|
|
1140
|
-
filePath,
|
|
1141
|
-
prepared,
|
|
1142
|
-
{ left: 0, top: 0, width: sourceWidth, height: sourceHeight },
|
|
1143
|
-
outputSize,
|
|
1144
|
-
signal
|
|
1145
|
-
);
|
|
1146
|
-
}
|
|
1147
|
-
__name(renderImageOverview, "renderImageOverview");
|
|
1148
|
-
async function renderNormalizedImageCrop(filePath, region, signal) {
|
|
1149
|
-
const prepared = await prepareImage(filePath, signal);
|
|
1150
|
-
const { width: sourceWidth, height: sourceHeight } = orientedSize(
|
|
1151
|
-
prepared.metadata
|
|
1152
|
-
);
|
|
1153
|
-
const left = Math.min(
|
|
1154
|
-
sourceWidth - 1,
|
|
1155
|
-
Math.max(0, Math.floor(region.x1 / 1e3 * sourceWidth))
|
|
1156
|
-
);
|
|
1157
|
-
const top = Math.min(
|
|
1158
|
-
sourceHeight - 1,
|
|
1159
|
-
Math.max(0, Math.floor(region.y1 / 1e3 * sourceHeight))
|
|
1160
|
-
);
|
|
1161
|
-
const right = Math.min(
|
|
1162
|
-
sourceWidth,
|
|
1163
|
-
Math.max(left + 1, Math.ceil(region.x2 / 1e3 * sourceWidth))
|
|
1164
|
-
);
|
|
1165
|
-
const bottom = Math.min(
|
|
1166
|
-
sourceHeight,
|
|
1167
|
-
Math.max(top + 1, Math.ceil(region.y2 / 1e3 * sourceHeight))
|
|
1168
|
-
);
|
|
1169
|
-
const selectedWidth = right - left;
|
|
1170
|
-
const selectedHeight = bottom - top;
|
|
1171
|
-
const outputSize = boundedSize(
|
|
1172
|
-
selectedWidth,
|
|
1173
|
-
selectedHeight,
|
|
1174
|
-
IMAGE_MAX_UPSCALE
|
|
1175
|
-
);
|
|
1176
|
-
return renderImageView(
|
|
1177
|
-
filePath,
|
|
1178
|
-
prepared,
|
|
1179
|
-
{ left, top, width: selectedWidth, height: selectedHeight },
|
|
1180
|
-
outputSize,
|
|
1181
|
-
signal
|
|
1182
|
-
);
|
|
1183
|
-
}
|
|
1184
|
-
__name(renderNormalizedImageCrop, "renderNormalizedImageCrop");
|
|
1185
|
-
|
|
1186
739
|
// packages/core/src/utils/fileUtils.ts
|
|
1187
740
|
init_esbuild_shims();
|
|
1188
|
-
import
|
|
741
|
+
import fs2 from "node:fs";
|
|
1189
742
|
import fsPromises from "node:fs/promises";
|
|
1190
|
-
import
|
|
743
|
+
import path2 from "node:path";
|
|
1191
744
|
|
|
1192
745
|
// packages/core/node_modules/mime/dist/src/index_lite.js
|
|
1193
746
|
init_esbuild_shims();
|
|
@@ -1611,12 +1164,12 @@ var Mime = class {
|
|
|
1611
1164
|
}
|
|
1612
1165
|
return this;
|
|
1613
1166
|
}
|
|
1614
|
-
getType(
|
|
1615
|
-
if (typeof
|
|
1167
|
+
getType(path3) {
|
|
1168
|
+
if (typeof path3 !== "string")
|
|
1616
1169
|
return null;
|
|
1617
|
-
const last =
|
|
1170
|
+
const last = path3.replace(/^.*[/\\]/s, "").toLowerCase();
|
|
1618
1171
|
const ext = last.replace(/^.*\./s, "").toLowerCase();
|
|
1619
|
-
const hasPath = last.length <
|
|
1172
|
+
const hasPath = last.length < path3.length;
|
|
1620
1173
|
const hasDot = ext.length < last.length - 1;
|
|
1621
1174
|
if (!hasDot && hasPath)
|
|
1622
1175
|
return null;
|
|
@@ -1686,7 +1239,7 @@ __name(loadIconvLite, "loadIconvLite");
|
|
|
1686
1239
|
|
|
1687
1240
|
// packages/core/src/utils/ignorePatterns.ts
|
|
1688
1241
|
init_esbuild_shims();
|
|
1689
|
-
import
|
|
1242
|
+
import path from "node:path";
|
|
1690
1243
|
var COMMON_IGNORE_PATTERNS = [
|
|
1691
1244
|
"**/node_modules/**",
|
|
1692
1245
|
"**/.git/**",
|
|
@@ -1825,7 +1378,7 @@ function extractExtensionsFromPatterns(patterns) {
|
|
|
1825
1378
|
return inner.split(",").map((ext) => `.${ext.trim()}`).filter((ext) => ext !== ".");
|
|
1826
1379
|
}
|
|
1827
1380
|
if (extPart.startsWith(".") && !extPart.includes("/") && !extPart.includes("{") && !extPart.includes("}")) {
|
|
1828
|
-
const extracted =
|
|
1381
|
+
const extracted = path.extname(`dummy${extPart}`);
|
|
1829
1382
|
const result = extracted || extPart;
|
|
1830
1383
|
return result && result !== "." && !result.substring(1).includes(".") ? [result] : [];
|
|
1831
1384
|
}
|
|
@@ -2535,7 +2088,7 @@ function bomEncodingToName(bomEncoding) {
|
|
|
2535
2088
|
}
|
|
2536
2089
|
__name(bomEncodingToName, "bomEncodingToName");
|
|
2537
2090
|
async function readFileWithEncodingInfo(filePath, signal) {
|
|
2538
|
-
const full = await
|
|
2091
|
+
const full = await fs2.promises.readFile(
|
|
2539
2092
|
filePath,
|
|
2540
2093
|
signal === void 0 ? void 0 : { signal }
|
|
2541
2094
|
);
|
|
@@ -2554,7 +2107,7 @@ async function countFileLines(filePath) {
|
|
|
2554
2107
|
__name(countFileLines, "countFileLines");
|
|
2555
2108
|
async function readFileWithLineAndLimit(params) {
|
|
2556
2109
|
const { path: filePath, limit, line, maxOutputBytes, signal } = params;
|
|
2557
|
-
const stats = params.stats ?? await
|
|
2110
|
+
const stats = params.stats ?? await fs2.promises.stat(filePath);
|
|
2558
2111
|
if (line !== void 0 && line > 0 || Number.isFinite(limit) || maxOutputBytes !== void 0) {
|
|
2559
2112
|
return readTextRange({
|
|
2560
2113
|
path: filePath,
|
|
@@ -2592,7 +2145,7 @@ __name(readFileWithLineAndLimit, "readFileWithLineAndLimit");
|
|
|
2592
2145
|
async function detectFileEncoding(source) {
|
|
2593
2146
|
let opened = null;
|
|
2594
2147
|
try {
|
|
2595
|
-
const fh = typeof source === "string" ? opened = await
|
|
2148
|
+
const fh = typeof source === "string" ? opened = await fs2.promises.open(source, "r") : source;
|
|
2596
2149
|
const stats = await fh.stat();
|
|
2597
2150
|
if (stats.size === 0) return "utf-8";
|
|
2598
2151
|
const sampleSize = Math.min(8192, stats.size);
|
|
@@ -2626,16 +2179,16 @@ function getSpecificMimeType(filePath) {
|
|
|
2626
2179
|
}
|
|
2627
2180
|
__name(getSpecificMimeType, "getSpecificMimeType");
|
|
2628
2181
|
function isWithinRoot(pathToCheck, rootDirectory) {
|
|
2629
|
-
const normalizedPathToCheck =
|
|
2630
|
-
const normalizedRootDirectory =
|
|
2631
|
-
const rootWithSeparator = normalizedRootDirectory ===
|
|
2182
|
+
const normalizedPathToCheck = path2.resolve(pathToCheck);
|
|
2183
|
+
const normalizedRootDirectory = path2.resolve(rootDirectory);
|
|
2184
|
+
const rootWithSeparator = normalizedRootDirectory === path2.sep || normalizedRootDirectory.endsWith(path2.sep) ? normalizedRootDirectory : normalizedRootDirectory + path2.sep;
|
|
2632
2185
|
return normalizedPathToCheck === normalizedRootDirectory || normalizedPathToCheck.startsWith(rootWithSeparator);
|
|
2633
2186
|
}
|
|
2634
2187
|
__name(isWithinRoot, "isWithinRoot");
|
|
2635
2188
|
async function isBinaryFile(filePath) {
|
|
2636
2189
|
let fh = null;
|
|
2637
2190
|
try {
|
|
2638
|
-
fh = await
|
|
2191
|
+
fh = await fs2.promises.open(filePath, "r");
|
|
2639
2192
|
const stats = await fh.stat();
|
|
2640
2193
|
const fileSize = stats.size;
|
|
2641
2194
|
if (fileSize === 0) return false;
|
|
@@ -2847,9 +2400,9 @@ async function classifyImageContent(filePath, mimeType) {
|
|
|
2847
2400
|
if (!SNIFFABLE_IMAGE_MIME_TYPES.has(mimeType)) return "image";
|
|
2848
2401
|
let handle;
|
|
2849
2402
|
try {
|
|
2850
|
-
handle = await
|
|
2403
|
+
handle = await fs2.promises.open(
|
|
2851
2404
|
filePath,
|
|
2852
|
-
(
|
|
2405
|
+
(fs2.constants?.O_RDONLY ?? 0) | (fs2.constants?.O_NONBLOCK ?? 0)
|
|
2853
2406
|
);
|
|
2854
2407
|
if ((await handle.stat()).size > IMAGE_MAX_SOURCE_BYTES) return "image";
|
|
2855
2408
|
const sample = Buffer.alloc(IMAGE_SNIFF_BYTES);
|
|
@@ -2881,7 +2434,7 @@ async function classifyImageContent(filePath, mimeType) {
|
|
|
2881
2434
|
}
|
|
2882
2435
|
__name(classifyImageContent, "classifyImageContent");
|
|
2883
2436
|
async function detectFileType(filePath) {
|
|
2884
|
-
const ext =
|
|
2437
|
+
const ext = path2.extname(filePath).toLowerCase();
|
|
2885
2438
|
if ([".ts", ".mts", ".cts", ".tsx"].includes(ext)) {
|
|
2886
2439
|
return "text";
|
|
2887
2440
|
}
|
|
@@ -2921,7 +2474,7 @@ async function detectFileType(filePath) {
|
|
|
2921
2474
|
);
|
|
2922
2475
|
return "text";
|
|
2923
2476
|
}
|
|
2924
|
-
if (KNOWN_TEXT_BASENAMES.has(
|
|
2477
|
+
if (KNOWN_TEXT_BASENAMES.has(path2.basename(filePath))) {
|
|
2925
2478
|
debugLogger.debug(
|
|
2926
2479
|
`detectFileType: ${filePath} \u2192 text (basename-override, mime ${lookedUpMimeType ?? "null"})`
|
|
2927
2480
|
);
|
|
@@ -2966,12 +2519,12 @@ async function processSingleFileContent(filePath, config, optionsOrOffset, legac
|
|
|
2966
2519
|
displayPath = filePath
|
|
2967
2520
|
} = options;
|
|
2968
2521
|
const rootDirectory = config.getTargetDir();
|
|
2969
|
-
const relativePathForDisplay = (
|
|
2522
|
+
const relativePathForDisplay = (path2.isAbsolute(displayPath) ? path2.relative(rootDirectory, displayPath) : displayPath).replace(/\\/g, "/");
|
|
2970
2523
|
try {
|
|
2971
2524
|
signal?.throwIfAborted();
|
|
2972
2525
|
let stats;
|
|
2973
2526
|
try {
|
|
2974
|
-
stats = options.textFileStats ?? await
|
|
2527
|
+
stats = options.textFileStats ?? await fs2.promises.stat(filePath);
|
|
2975
2528
|
} catch (error) {
|
|
2976
2529
|
if (isNodeError(error) && error.code === "ENOENT") {
|
|
2977
2530
|
return {
|
|
@@ -2993,13 +2546,13 @@ async function processSingleFileContent(filePath, config, optionsOrOffset, legac
|
|
|
2993
2546
|
}
|
|
2994
2547
|
if (!stats.isFile()) {
|
|
2995
2548
|
return {
|
|
2996
|
-
llmContent: `Cannot read file: ${
|
|
2549
|
+
llmContent: `Cannot read file: ${path2.basename(filePath)} is not a regular file (e.g. device, socket, or pipe).`,
|
|
2997
2550
|
returnDisplay: "Not a regular file.",
|
|
2998
2551
|
error: `Not a regular file: ${displayPath}`,
|
|
2999
2552
|
errorType: "read_content_failure" /* READ_CONTENT_FAILURE */
|
|
3000
2553
|
};
|
|
3001
2554
|
}
|
|
3002
|
-
const mediaMimeType = index_lite_default.getType(filePath) ?? MIME_LITE_MISSING_MEDIA_TYPES.get(
|
|
2555
|
+
const mediaMimeType = index_lite_default.getType(filePath) ?? MIME_LITE_MISSING_MEDIA_TYPES.get(path2.extname(filePath).toLowerCase()) ?? "application/octet-stream";
|
|
3003
2556
|
const bridgePreservesImage = preserveUnsupportedImage && mediaMimeType.startsWith("image/") && SNIFFABLE_IMAGE_MIME_TYPES.has(mediaMimeType);
|
|
3004
2557
|
const fileType = options.textFileHandle ? "text" : options.fileType ?? (bridgePreservesImage ? "image" : await detectFileType(filePath));
|
|
3005
2558
|
if (fileType === "pdf" && config.getShellExecutionSandbox?.()) {
|
|
@@ -3012,7 +2565,7 @@ async function processSingleFileContent(filePath, config, optionsOrOffset, legac
|
|
|
3012
2565
|
};
|
|
3013
2566
|
}
|
|
3014
2567
|
const shouldRenderImageOverview = fileType === "image" && CANONICAL_IMAGE_MIME_TYPES.has(mediaMimeType);
|
|
3015
|
-
const displayName =
|
|
2568
|
+
const displayName = path2.basename(displayPath);
|
|
3016
2569
|
const modalities = config.getContentGeneratorConfig?.()?.modalities ?? {};
|
|
3017
2570
|
const willRenderPdfImages = fileType === "pdf" && !!modalities.image && largePdfBehavior !== "reference";
|
|
3018
2571
|
const renderForBridge = fileType === "pdf" && !modalities.image && !modalities.pdf && (preserveUnsupportedImage || preparePdfForVisionBridge);
|
|
@@ -3334,7 +2887,7 @@ async function processSingleFileContent(filePath, config, optionsOrOffset, legac
|
|
|
3334
2887
|
returnDisplay: `Omitted unsupported image format: ${relativePathForDisplay} (${mediaMimeType})`
|
|
3335
2888
|
};
|
|
3336
2889
|
}
|
|
3337
|
-
const contentBuffer = await
|
|
2890
|
+
const contentBuffer = await fs2.promises.readFile(filePath);
|
|
3338
2891
|
if (mediaMimeType === "image/gif") {
|
|
3339
2892
|
const sharpModule = await import("sharp").catch(() => void 0);
|
|
3340
2893
|
if (sharpModule) {
|
|
@@ -3387,7 +2940,7 @@ async function processSingleFileContent(filePath, config, optionsOrOffset, legac
|
|
|
3387
2940
|
signal
|
|
3388
2941
|
});
|
|
3389
2942
|
}
|
|
3390
|
-
const contentBuffer = await
|
|
2943
|
+
const contentBuffer = await fs2.promises.readFile(filePath);
|
|
3391
2944
|
const base64Data = contentBuffer.toString("base64");
|
|
3392
2945
|
const base64SizeInMB = base64Data.length / (1024 * 1024);
|
|
3393
2946
|
if (base64SizeInMB > 9.9) {
|
|
@@ -3411,7 +2964,7 @@ async function processSingleFileContent(filePath, config, optionsOrOffset, legac
|
|
|
3411
2964
|
}
|
|
3412
2965
|
case "pdf": {
|
|
3413
2966
|
if (!pageRange && modalities.pdf) {
|
|
3414
|
-
const contentBuffer = await
|
|
2967
|
+
const contentBuffer = await fs2.promises.readFile(filePath);
|
|
3415
2968
|
const base64Data = contentBuffer.toString("base64");
|
|
3416
2969
|
const base64SizeInMB = base64Data.length / (1024 * 1024);
|
|
3417
2970
|
if (base64SizeInMB > 9.9) {
|
|
@@ -3677,7 +3230,7 @@ function normalizeRangeReadByteLimit(maxOutputBytes) {
|
|
|
3677
3230
|
__name(normalizeRangeReadByteLimit, "normalizeRangeReadByteLimit");
|
|
3678
3231
|
async function fileExists(filePath) {
|
|
3679
3232
|
try {
|
|
3680
|
-
await fsPromises.access(filePath,
|
|
3233
|
+
await fsPromises.access(filePath, fs2.constants.F_OK);
|
|
3681
3234
|
return true;
|
|
3682
3235
|
} catch (_) {
|
|
3683
3236
|
return false;
|
|
@@ -3703,11 +3256,6 @@ export {
|
|
|
3703
3256
|
extractPDFText,
|
|
3704
3257
|
VISION_BRIDGE_MAX_IMAGES,
|
|
3705
3258
|
VISION_BRIDGE_MAX_IMAGE_BASE64_BYTES,
|
|
3706
|
-
isBinaryContentType,
|
|
3707
|
-
sniffFileKind,
|
|
3708
|
-
looksLikeText,
|
|
3709
|
-
persistBinaryContent,
|
|
3710
|
-
formatByteSize,
|
|
3711
3259
|
normalizeSource,
|
|
3712
3260
|
parseNotebook,
|
|
3713
3261
|
inferNotebookJsonFormat,
|
|
@@ -3726,8 +3274,6 @@ export {
|
|
|
3726
3274
|
TextScanBudgetExceededError,
|
|
3727
3275
|
readTextRangeFromHandle,
|
|
3728
3276
|
readTextCursorWindowFromHandle,
|
|
3729
|
-
ImageViewError,
|
|
3730
|
-
renderNormalizedImageCrop,
|
|
3731
3277
|
isSupportedImageMimeType,
|
|
3732
3278
|
getUnsupportedImageFormatWarning,
|
|
3733
3279
|
decodeBufferWithEncodingInfoAsync,
|
|
@@ -3754,11 +3300,6 @@ export {
|
|
|
3754
3300
|
* Copyright 2025 Qwen Team
|
|
3755
3301
|
* SPDX-License-Identifier: Apache-2.0
|
|
3756
3302
|
*/
|
|
3757
|
-
/**
|
|
3758
|
-
* @license
|
|
3759
|
-
* Copyright 2026 Qwen
|
|
3760
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
3761
|
-
*/
|
|
3762
3303
|
/**
|
|
3763
3304
|
* @license
|
|
3764
3305
|
* Copyright 2026 Qwen Team
|