@qwen-code/qwen-code 0.23.3 → 0.23.4-dev.codemode-responses.20260914.87437db784
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/computer-use/SKILL.md +46 -198
- package/bundled/computer-use/references/macos.md +208 -0
- package/bundled/computer-use/references/windows-linux.md +247 -0
- package/bundled/goal-draft/SKILL.md +10 -10
- package/bundled/qc-helper/docs/configuration/settings.md +81 -71
- package/bundled/qc-helper/docs/extension/getting-started-extensions.md +2 -0
- package/bundled/qc-helper/docs/extension/introduction.md +9 -3
- package/bundled/qc-helper/docs/features/_meta.ts +1 -0
- package/bundled/qc-helper/docs/features/agent-board.md +89 -0
- package/bundled/qc-helper/docs/features/channels/dingtalk.md +3 -21
- package/bundled/qc-helper/docs/features/channels/dws.md +5 -1
- package/bundled/qc-helper/docs/features/channels/overview.md +5 -6
- package/bundled/qc-helper/docs/features/code-review.md +18 -4
- package/bundled/qc-helper/docs/features/commands.md +9 -0
- package/bundled/qc-helper/docs/features/computer-use.md +26 -8
- package/bundled/qc-helper/docs/features/cross-session-protocol.md +23 -5
- package/bundled/qc-helper/docs/features/followup-suggestions.md +17 -5
- package/bundled/qc-helper/docs/features/goals.md +22 -18
- package/bundled/qc-helper/docs/features/hooks.md +48 -37
- package/bundled/qc-helper/docs/features/skills.md +33 -3
- package/bundled/qc-helper/docs/features/status-line.md +2 -0
- package/bundled/qc-helper/docs/features/sub-agents.md +27 -0
- package/bundled/qc-helper/docs/qwen-serve.md +7 -3
- package/bundled/review/SKILL.md +20 -10
- package/bundled/review/references/persistence.md +2 -0
- package/bundled/workflow-authoring/SKILL.md +442 -0
- package/bundled/workflow-creator/SKILL.md +1 -1
- package/chunks/{MaxSizedBox-D4LW7RZZ.js → MaxSizedBox-CSMC6NNQ.js} +59 -55
- package/chunks/{StandaloneSessionPicker-ALTTRWUP.js → StandaloneSessionPicker-5G46NROB.js} +83 -79
- package/chunks/{acp-startup-profiler-KEU6VAYR.js → acp-startup-profiler-RUQNTNU5.js} +2 -2
- package/chunks/acp-subagent-executor-4JLSF7SA.js +141 -0
- package/chunks/{acpAgent-BBSW7XZG.js → acpAgent-WJ45JV2S.js} +1026 -355
- package/chunks/{agent-SQ6OY3QD.js → agent-KWNOVXAD.js} +43 -39
- package/chunks/{agent-headless-RI2THRQ7.js → agent-headless-TU5N3GFF.js} +43 -39
- package/chunks/{anthropicContentGenerator-JSKMKS6V.js → anthropicContentGenerator-H5YPXIDE.js} +37 -15
- package/chunks/{artifact-tool-PMYZCYNH.js → artifact-tool-MFGORTWZ.js} +59 -109
- package/chunks/{askUserQuestion-4M4YYIB4.js → askUserQuestion-WS4GUT7C.js} +3 -3
- package/chunks/{bridge-DAFMI72L.js → bridge-PF7UX6MH.js} +63 -58
- package/chunks/{build-63BIOYWK.js → build-5KWQBWEQ.js} +1 -1
- package/chunks/{ca-KC2AISNS.js → ca-GZ4FDJU2.js} +3 -3
- package/chunks/{channel-management-service-OWDXVL7R.js → channel-management-service-AFVIT4VH.js} +8 -8
- package/chunks/{channel-settings-store-4I6JONT7.js → channel-settings-store-3OVAGIC2.js} +68 -64
- package/chunks/{channel-worker-group-F2ZZMLNS.js → channel-worker-group-JR6JOELM.js} +8 -8
- package/chunks/{channel-worker-manager-2SZLJJSJ.js → channel-worker-manager-AVKJEZFL.js} +8 -8
- package/chunks/{channel-worker-supervisor-ZFNWMG6D.js → channel-worker-supervisor-OOYY7BAQ.js} +5 -5
- package/chunks/{chunk-6JACAGYH.js → chunk-2S2WIGCM.js} +1 -1
- package/chunks/{chunk-NRXWJXJ4.js → chunk-2YGR3VN6.js} +15 -15
- package/chunks/{chunk-IUVIBDKU.js → chunk-2YMRRI2C.js} +9 -10
- package/chunks/{chunk-3BTSSIJO.js → chunk-3DOAKZYD.js} +99 -14
- package/chunks/{chunk-F53KKZUD.js → chunk-3LMDSCLU.js} +158 -10
- package/chunks/{chunk-2ZN3O5FT.js → chunk-457DR2MC.js} +6 -6
- package/chunks/{chunk-WG7BL3FY.js → chunk-473RJLIH.js} +1 -1
- package/chunks/{chunk-W5ZQMAEM.js → chunk-4Y2I3CI3.js} +1 -1
- package/chunks/{chunk-HGEUHUEV.js → chunk-54B2LTKP.js} +1 -1
- package/chunks/{chunk-IRH27ZC2.js → chunk-5EZRLTLQ.js} +4 -4
- package/chunks/{chunk-DLH7YIX6.js → chunk-5FK4MSHB.js} +3 -3
- package/chunks/{chunk-CUEXOHQH.js → chunk-5ODRE7E5.js} +9 -15
- package/chunks/{chunk-532WHF4F.js → chunk-5VQR2DD7.js} +2 -2
- package/chunks/{chunk-3KQBQ6FM.js → chunk-63WKMKVD.js} +190 -28
- package/chunks/{chunk-YBUMTY7B.js → chunk-66N6C4EH.js} +1 -1
- package/chunks/{chunk-MLQNSPRZ.js → chunk-6MLDTOHU.js} +15 -5
- package/chunks/{chunk-SBRX4BDI.js → chunk-6NKDU7YL.js} +2 -2
- package/chunks/{chunk-3UXUOFO6.js → chunk-6TMXX4Z4.js} +9 -10
- package/chunks/{chunk-Y2MYW47X.js → chunk-6WXVEDT2.js} +9 -2
- package/chunks/{chunk-ZHKTKHMO.js → chunk-7MIBD3LG.js} +1 -1
- package/chunks/{chunk-EVTNACMT.js → chunk-A6QMKS5S.js} +12 -12
- package/chunks/{chunk-NOAG7N22.js → chunk-A6YU6R5N.js} +2 -2
- package/chunks/{chunk-76RGWKLS.js → chunk-ABNX6E6K.js} +1 -1
- package/chunks/chunk-ACHCT36C.js +28 -0
- package/chunks/{chunk-NE624IVP.js → chunk-ADQUK6WA.js} +1 -1
- package/chunks/{chunk-PLLIWEM3.js → chunk-AEWCOE64.js} +2 -2
- package/chunks/{chunk-3FPYT6QC.js → chunk-ARDHE6MM.js} +23 -0
- package/chunks/{chunk-LILGKQ4B.js → chunk-AXZMWAJV.js} +156 -26
- package/chunks/{chunk-SYLECP23.js → chunk-B776VKDA.js} +4 -4
- package/chunks/{chunk-AC6KDLH3.js → chunk-BNYQHLPR.js} +1 -1
- package/chunks/{chunk-BZM5U74J.js → chunk-BS7ON54G.js} +724 -468
- package/chunks/{chunk-TPKQIA7G.js → chunk-BSIOCNDK.js} +1 -1
- package/chunks/{chunk-U7O65WKL.js → chunk-BW2SMO6L.js} +1 -1
- package/chunks/{chunk-POC3YMHG.js → chunk-BY6CE34S.js} +4 -4
- package/chunks/{chunk-RLLRJJDR.js → chunk-C3VNHDWJ.js} +2 -2
- package/chunks/{chunk-WBCPROWX.js → chunk-C4HBZQNH.js} +1 -1
- package/chunks/{chunk-MSNHNAQZ.js → chunk-C5ABXOC2.js} +3 -3
- package/chunks/{chunk-NOO4QFXM.js → chunk-C75BXMPM.js} +1 -3
- package/chunks/chunk-CCWWPFZJ.js +191 -0
- package/chunks/chunk-CFMZLE3L.js +75 -0
- package/chunks/{chunk-N7VWZDWW.js → chunk-CFSBWJBB.js} +4462 -3840
- package/chunks/{chunk-KOKPXIAN.js → chunk-CL7JONZN.js} +3 -3
- package/chunks/{chunk-AXTFYDXT.js → chunk-CXXAZ2LZ.js} +1 -1
- package/chunks/{chunk-JYKWOREU.js → chunk-DBUOMHLZ.js} +13 -3
- package/chunks/{chunk-R4Q2PEFV.js → chunk-DLJBYORJ.js} +1 -1
- package/chunks/{chunk-DT75RKNH.js → chunk-DNVA2MQ2.js} +3 -3
- package/chunks/{chunk-J3TJH52D.js → chunk-DOTF2PF2.js} +1 -1
- package/chunks/{chunk-HGAELO7B.js → chunk-DQMBQCTY.js} +2 -2
- package/chunks/{chunk-2ALXPGB4.js → chunk-E6IR653O.js} +1 -1
- package/chunks/{chunk-ZKYR7QS4.js → chunk-EDB556X7.js} +2 -2
- package/chunks/chunk-EKJXDLDD.js +32 -0
- package/chunks/{chunk-NUQVB25K.js → chunk-EKMJR7M3.js} +2 -2
- package/chunks/{chunk-7QYWGTHB.js → chunk-EPVEPTI3.js} +44 -151
- package/chunks/{chunk-GCDXVPFK.js → chunk-EZSSJSKR.js} +31 -7
- package/chunks/{chunk-S6Q6Q4P2.js → chunk-FBDHP23D.js} +1 -1
- package/chunks/{chunk-UKZ45TJL.js → chunk-FFBP5POK.js} +420 -219
- package/chunks/{chunk-3I7W2POO.js → chunk-FGROOEKM.js} +5 -40
- package/chunks/{chunk-HNLMYDQE.js → chunk-FMLBBXHB.js} +13 -9
- package/chunks/{chunk-SSGAAWLY.js → chunk-GCV4NOHV.js} +95 -73
- package/chunks/{chunk-ALMR3E6Q.js → chunk-GDWE23OR.js} +3 -3
- package/chunks/{chunk-XBZTAGB7.js → chunk-GMN73IMT.js} +1 -1
- package/chunks/{chunk-IAEXTMED.js → chunk-GNV2SFO7.js} +173 -7
- package/chunks/{chunk-CXTPVBFA.js → chunk-GSS4SZNG.js} +100 -17
- package/chunks/chunk-GXN7DWZZ.js +154 -0
- package/chunks/{chunk-SODMFNAR.js → chunk-H23UWPF7.js} +5 -5
- package/chunks/{chunk-6HUXPLB5.js → chunk-HEOH7JZY.js} +5 -5
- package/chunks/{chunk-DTNV6UZY.js → chunk-HFJSQ4GL.js} +10 -24
- package/chunks/{chunk-GOXQL4YH.js → chunk-HWRXJQ6B.js} +2 -2
- package/chunks/{chunk-VZUCTJ2P.js → chunk-I6YJZGHS.js} +10 -10
- package/chunks/{chunk-RZHU3K6M.js → chunk-IAS753HG.js} +2 -20
- package/chunks/{chunk-EDMXGXAK.js → chunk-IBRQG2MP.js} +10 -13
- package/chunks/chunk-INGBUYL6.js +230 -0
- package/chunks/{chunk-7BXXIQG4.js → chunk-J73WJIMT.js} +36 -72
- package/chunks/{chunk-XGYHNWL3.js → chunk-J7LBAKDH.js} +3 -3
- package/chunks/{chunk-Z3GF56ME.js → chunk-JAYWZWZF.js} +3 -3
- package/chunks/{chunk-DYFOSJHU.js → chunk-JBFC2644.js} +2756 -1153
- package/chunks/{chunk-Q5BD56BW.js → chunk-JPCYCFYG.js} +7 -7
- package/chunks/{chunk-LG5Y4OWO.js → chunk-JRHKM3YQ.js} +2 -2
- package/chunks/{chunk-NHCZJQE4.js → chunk-JZKBMADP.js} +6 -6
- package/chunks/{chunk-MF6E7FSA.js → chunk-K7CQWBLT.js} +8 -201
- package/chunks/{chunk-K2OJUPOE.js → chunk-KP2FHIFR.js} +12 -0
- package/chunks/{chunk-ZU47FBOC.js → chunk-KSIOXYVX.js} +126 -12
- package/chunks/{chunk-IV7GDNKC.js → chunk-KZCK5JUN.js} +4 -4
- package/chunks/{chunk-3XLK2QMY.js → chunk-L3S2Y2FF.js} +59 -16
- package/chunks/{chunk-ZW2EUO2A.js → chunk-L6DIANLD.js} +1 -1
- package/chunks/{chunk-6W4HBUA2.js → chunk-LATAUG2M.js} +1 -1
- package/chunks/{chunk-RWVD5RRY.js → chunk-LBDASOPR.js} +3 -3
- package/chunks/{chunk-OX7IZ2G5.js → chunk-LF5AD7PY.js} +4 -4
- package/chunks/{chunk-NMRCXKQ5.js → chunk-LKCNETDW.js} +3 -3
- package/chunks/chunk-LMJSPC55.js +260 -0
- package/chunks/{chunk-X6K77VHC.js → chunk-LWWRJRCD.js} +1 -1
- package/chunks/{chunk-UXEO7E3V.js → chunk-LYD3T3H7.js} +1 -0
- package/chunks/{chunk-KFZYGSJN.js → chunk-M3YNPR56.js} +3 -3
- package/chunks/{chunk-HBQ2NXOU.js → chunk-MDG6GKSE.js} +2 -2
- package/chunks/{chunk-E4UEO3XM.js → chunk-ME4JBHSB.js} +324 -2
- package/chunks/{chunk-BV6Q5HMY.js → chunk-MJHLKWGJ.js} +8 -7
- package/chunks/{chunk-NFYEQRLG.js → chunk-MQRLLBMQ.js} +1 -1
- package/chunks/{chunk-O4KNCAX4.js → chunk-NCPFOLM2.js} +11 -0
- package/chunks/{chunk-2SZH22YO.js → chunk-NJ2OFVUX.js} +115 -97
- package/chunks/{chunk-DAWWT2ID.js → chunk-NN4EC2WO.js} +1374 -2164
- package/chunks/{chunk-6MBXY6WM.js → chunk-NRQI3PGS.js} +1 -1
- package/chunks/{chunk-HBU7EKY4.js → chunk-NRUKL236.js} +45 -15
- package/chunks/{chunk-53GWJOLP.js → chunk-NTCFKGQF.js} +3 -1
- package/chunks/{chunk-3CZ2BQV6.js → chunk-NXUZFW3G.js} +49 -19
- package/chunks/{chunk-X7UJKOHZ.js → chunk-OMDXAHCT.js} +4 -6
- package/chunks/{chunk-5GLDOLNQ.js → chunk-OWUAZXXN.js} +4 -3
- package/chunks/{chunk-2UWQX4FP.js → chunk-OZEV3R3S.js} +1 -1
- package/chunks/{acp-subagent-executor-LEUN3N7N.js → chunk-PAPBT3WP.js} +11 -110
- package/chunks/{chunk-7ICHPMBQ.js → chunk-PHSQVB6D.js} +4 -4
- package/chunks/{chunk-FCQJLMA2.js → chunk-Q3TFRP5G.js} +178 -8
- package/chunks/{chunk-YQHLFCPU.js → chunk-Q5CCYZD3.js} +32 -24
- package/chunks/chunk-QQL5BFOL.js +1416 -0
- package/chunks/{chunk-ZKZHSB5W.js → chunk-QR4Q425T.js} +9 -9
- package/chunks/{chunk-J6MB5ZHZ.js → chunk-QZW6WRB7.js} +2 -1
- package/chunks/{chunk-TP6FYVQT.js → chunk-RSWBT7AZ.js} +33 -1
- package/chunks/{chunk-2PJRI3EH.js → chunk-RVOD66ID.js} +218 -43
- package/chunks/{chunk-W5FIP7FC.js → chunk-S3PU3CNW.js} +5 -5
- package/chunks/chunk-S7UQ3V2H.js +87 -0
- package/chunks/{chunk-N6VQ37ZZ.js → chunk-SFL6U7U7.js} +1 -1
- package/chunks/{chunk-MOS5OAOG.js → chunk-SROLVJFY.js} +6 -6
- package/chunks/{chunk-HUXPEUFL.js → chunk-SYROIHU7.js} +1 -1
- package/chunks/{chunk-E7LB57MB.js → chunk-T3LUMYFP.js} +6 -6
- package/chunks/{chunk-PSPAM24S.js → chunk-TBSCTWKF.js} +6 -0
- package/chunks/{chunk-5KI7ZDTB.js → chunk-TV5WDW7R.js} +24 -12
- package/chunks/{chunk-NMCDMLHL.js → chunk-TXUJOKVR.js} +50 -35
- package/chunks/{chunk-NHJKAR6E.js → chunk-TYWLBEL2.js} +972 -18
- package/chunks/chunk-U6H3XTFA.js +95 -0
- package/chunks/{chunk-GSILBZLN.js → chunk-U7RWQBGZ.js} +2 -2
- package/chunks/{chunk-7APZIRH3.js → chunk-V3CMBOQ6.js} +5 -5
- package/chunks/{chunk-JXNIF2O5.js → chunk-V545KI73.js} +1 -1
- package/chunks/chunk-VGY2RGXL.js +100 -0
- package/chunks/{chunk-TBEXLLAO.js → chunk-VRQZESKP.js} +1 -1
- package/chunks/{chunk-FN3JNDRU.js → chunk-VVI7MK3V.js} +3 -3
- package/chunks/{chunk-EUURTIV6.js → chunk-WBSJ6VPZ.js} +10 -2
- package/chunks/{chunk-NLNQNBZ2.js → chunk-WD6YQI5M.js} +1 -1
- package/chunks/chunk-WFNEY5G7.js +347 -0
- package/chunks/{chunk-XKBFYTCD.js → chunk-WK6DEH3Q.js} +46 -0
- package/chunks/{chunk-36HCNKDS.js → chunk-WKVZES7O.js} +65 -14
- package/chunks/{chunk-BWAMMKIS.js → chunk-WLLRNQVT.js} +135 -6
- package/chunks/{chunk-MHAADZOZ.js → chunk-WMSP3XZK.js} +3 -3
- package/chunks/{chunk-IL5M5NYD.js → chunk-WUTXSXPP.js} +11 -9
- package/chunks/{chunk-NJQTG2G3.js → chunk-XE5ZFBVD.js} +11 -11
- package/chunks/{chunk-OLTN767L.js → chunk-XO3Z27IL.js} +2 -2
- package/chunks/{chunk-VX63RJXE.js → chunk-XX5HQLCZ.js} +7 -0
- package/chunks/{chunk-2Z3T52OC.js → chunk-Y5TM7SBV.js} +7 -2
- package/chunks/{chunk-V2P3DOQR.js → chunk-YDFOHRS5.js} +1 -1
- package/chunks/{chunk-QMUYLYT5.js → chunk-YGFJ6BRT.js} +1 -1
- package/chunks/{chunk-LK2WUCDQ.js → chunk-YM6KUQ2S.js} +1 -1
- package/chunks/{chunk-F42YYSCK.js → chunk-YVF4PKCV.js} +8 -8
- package/chunks/{chunk-LDVNJZGH.js → chunk-Z2H5HQS3.js} +17 -8
- package/chunks/chunk-Z72PLR74.js +36 -0
- package/chunks/{chunk-BWQLXU37.js → chunk-ZDHXRKRG.js} +381 -86
- package/chunks/{chunk-BHTYRHJF.js → chunk-ZJ7JQUGY.js} +4 -1
- package/chunks/{chunk-4ALNJDHL.js → chunk-ZKIAGIGH.js} +87 -4
- package/chunks/{chunk-VG3Q2NC4.js → chunk-ZNI3YJHS.js} +32 -12
- package/chunks/chunk-ZRZZLM37.js +2780 -0
- package/chunks/{chunk-Q2LVVIKF.js → chunk-ZZUXUBEB.js} +29 -12
- package/chunks/codex-subagent-executor-SM3TUSBA.js +586 -0
- package/chunks/{config-utils-L6KLDYIV.js → config-utils-JHKHFOG6.js} +60 -56
- package/chunks/{contextCommand-UYEH7NIU.js → contextCommand-XE4NDYQW.js} +58 -54
- package/chunks/{core-runtime-NVHT3Z3V.js → core-runtime-PNCWH3RE.js} +58 -55
- package/chunks/{create-sub-session-TIGCFGCS.js → create-sub-session-MSGNIM37.js} +5 -2
- package/chunks/{create-sub-session-YWASE5VH.js → create-sub-session-P7E5Y3HY.js} +169 -89
- package/chunks/{cron-create-AKWX67FO.js → cron-create-U2JJ5CCF.js} +3 -3
- package/chunks/{cron-delete-XPB6IYZJ.js → cron-delete-7DM4LJWD.js} +2 -2
- package/chunks/{cron-list-XBKO4WU5.js → cron-list-VCUSZK2Y.js} +2 -2
- package/chunks/{daemon-G5TYKZD6.js → daemon-NJB4PWZ7.js} +3 -1
- package/chunks/{daemon-git-worktree-guard-FOW4RQSK.js → daemon-git-worktree-guard-JFD5VZRN.js} +58 -54
- package/chunks/{daemon-status-provider-O5KQZYMP.js → daemon-status-provider-A3VFVFWW.js} +68 -63
- package/chunks/{daemon-trust-policy-3ATXEON7.js → daemon-trust-policy-NPZ47MZH.js} +64 -60
- package/chunks/{daemon-trust-policy-monitor-7MCNDNEC.js → daemon-trust-policy-monitor-XG2CHL3Z.js} +64 -60
- package/chunks/{de-UU2YTO37.js → de-VGY3VNBU.js} +3 -3
- package/chunks/{deferred-core-runtime-JK5IXL5K.js → deferred-core-runtime-V42EMU27.js} +56 -52
- package/chunks/{discovery-XP4RMDUM.js → discovery-5KUEPR65.js} +2 -2
- package/chunks/{display-image-NAH3AZ63.js → display-image-QTHALY6N.js} +3 -3
- package/chunks/{dist-KLZ7XGEQ.js → dist-2QYIVNS6.js} +1 -4
- package/chunks/{dist-AHJYPSJL.js → dist-GUB7QRYA.js} +2 -5
- package/chunks/{dist-ZXTZTE54.js → dist-MPUZZOG5.js} +4 -17
- package/chunks/{dist-F2DVGTL3.js → dist-NIOJXMGY.js} +111 -101
- package/chunks/{dist-KJGRVIGJ.js → dist-PA7WPFVE.js} +5 -36
- package/chunks/{dist-AIKC5E5P.js → dist-SE4J6Z4O.js} +43 -669
- package/chunks/{dist-H6G3K26N.js → dist-T6DDPDLQ.js} +14 -34
- package/chunks/{dist-GWNQVPZT.js → dist-TFGETXFN.js} +10 -33
- package/chunks/{dist-ZA52JXAS.js → dist-VDLSBCLM.js} +1 -5
- package/chunks/{edit-SY35KYIE.js → edit-E2ZGJDBJ.js} +46 -42
- package/chunks/{en-CAJHTIQT.js → en-E5ZO5TZW.js} +5 -3
- package/chunks/{enter-worktree-54L5QJ3N.js → enter-worktree-CAARFWBI.js} +6 -5
- package/chunks/{enterPlanMode-HXX6KQJR.js → enterPlanMode-442YAAZB.js} +43 -39
- package/chunks/{environment-DKXHG4HB.js → environment-DCJ5FVHM.js} +59 -55
- package/chunks/{errors-ADY7LQJJ.js → errors-ZWTDW2NJ.js} +58 -54
- package/chunks/exec-RPKEY6HP.js +505 -0
- package/chunks/{exit-worktree-EORJDKDS.js → exit-worktree-JXGGUOBP.js} +6 -5
- package/chunks/{exitPlanMode-HSK2CQI6.js → exitPlanMode-4PLQOFOO.js} +43 -39
- package/chunks/{fast-path-U636VWN2.js → fast-path-DBSGDGB3.js} +10 -10
- package/chunks/{fast-path-settings-V7MI7EZJ.js → fast-path-settings-XDYX7X5Z.js} +2 -2
- package/chunks/{fr-HKNWVXRJ.js → fr-UAZJJH5N.js} +3 -3
- package/chunks/{glob-GUGGTH5L.js → glob-VWOE4W7K.js} +43 -39
- package/chunks/{goal-tools-PXYRSQGX.js → goal-tools-K6SIBXMB.js} +49 -41
- package/chunks/{grep-3PKFKLCA.js → grep-H2I33VAO.js} +8 -3
- package/chunks/{handleAutoUpdate-5KHS4HIN.js → handleAutoUpdate-NCC3XELY.js} +61 -57
- package/chunks/{i18n-KSGKMUPT.js → i18n-GO7JI4PT.js} +57 -53
- package/chunks/{image-gen-OCCR2WWU.js → image-gen-5G2TQ3DY.js} +6 -5
- package/chunks/{initializer-YYT5XEZF.js → initializer-BXKAW5A6.js} +64 -60
- package/chunks/{installationInfo-UNSBPYW2.js → installationInfo-5JONIX62.js} +57 -53
- package/chunks/{ja-GJS5RZGU.js → ja-2RITCMAJ.js} +3 -3
- package/chunks/list-QW74LCLS.js +133 -0
- package/chunks/{list-agents-QLDXS5OD.js → list-agents-EWDCEPIW.js} +3 -3
- package/chunks/{llm-XGGLBGPH.js → llm-FJHSMJTM.js} +161 -125
- package/chunks/{llm-content-generator-ZHQQT5W7.js → llm-content-generator-3VLLPQS4.js} +14 -7
- package/chunks/{loadedSettingsAdapter-3DXLASK7.js → loadedSettingsAdapter-OLMQSKVC.js} +64 -60
- package/chunks/{loggingContentGenerator-V72OCCJO.js → loggingContentGenerator-IMLIJULY.js} +47 -43
- package/chunks/{loop-wakeup-HHMYIC7Z.js → loop-wakeup-VG6CGBQA.js} +4 -4
- package/chunks/{ls-N7ABR6HI.js → ls-6ZB3BEIR.js} +1 -1
- package/chunks/{lsp-LTOFWG5P.js → lsp-M54FQARP.js} +5 -1
- package/chunks/{managed-npm-update-HV5LPZH2.js → managed-npm-update-LXLBWCNA.js} +57 -53
- package/chunks/mcp-FOXA3372.js +127 -0
- package/chunks/model-configuration-SCOI2KPF.js +140 -0
- package/chunks/modelConfigUtils-EA44S64C.js +119 -0
- package/chunks/{monitor-TLBNM4MV.js → monitor-TJAHYCCY.js} +43 -39
- package/chunks/{nonInteractiveCli-LSJSQ2W4.js → nonInteractiveCli-QH2HABWC.js} +112 -107
- package/chunks/{notebook-edit-OSPOLZP6.js → notebook-edit-WEMSBUBS.js} +45 -41
- package/chunks/{openaiContentGenerator-BE4S5TRD.js → openaiContentGenerator-WD5DWYOA.js} +24 -19
- package/chunks/{openaiResponsesContentGenerator-RTCAJ5V5.js → openaiResponsesContentGenerator-AWRYZLJU.js} +110 -19
- package/chunks/{pidfile-H32FEPWA.js → pidfile-TQL2LCEG.js} +56 -52
- package/chunks/{processUtils-SSLIPDEA.js → processUtils-6ZU56DCI.js} +2 -2
- package/chunks/{prompt-terminal-ledger-I5SLL6UF.js → prompt-terminal-ledger-3HAKHXFV.js} +57 -53
- package/chunks/{pt-FXMYXEUV.js → pt-5ZF7ZQUV.js} +3 -3
- package/chunks/{qwenContentGenerator-TMQC623Z.js → qwenContentGenerator-3OIZQZLC.js} +47 -43
- package/chunks/{qwenOAuth2-3ZRQHHTC.js → qwenOAuth2-WIEUEFEY.js} +5 -4
- package/chunks/{read-file-T2QAIZE2.js → read-file-2PWWL6J2.js} +9 -8
- package/chunks/{read-mcp-resource-B37WANAQ.js → read-mcp-resource-LPSWXVOD.js} +1 -1
- package/chunks/{record-artifact-OAXWXZ5D.js → record-artifact-PXMNP7GZ.js} +3 -3
- package/chunks/{record-source-D7R7X3GT.js → record-source-2GSY5JD5.js} +6 -6
- package/chunks/{report-findings-AR3VC6EQ.js → report-findings-W6GR7SYZ.js} +4 -4
- package/chunks/{request-shutdown-IKNWTX5M.js → request-shutdown-53SNYGVR.js} +5 -5
- package/chunks/{resumeHistoryUtils-QLKDH5GY.js → resumeHistoryUtils-S4TEUTKE.js} +63 -59
- package/chunks/{ripGrep-YGWL7KCV.js → ripGrep-5NMGLMLX.js} +13 -11
- package/chunks/{ru-RMHURE5U.js → ru-7BNZFQKG.js} +3 -3
- package/chunks/{run-qwen-serve-26KZDECC.js → run-qwen-serve-6MGYRK4V.js} +314 -127
- package/chunks/{runtime-BMEIVDDG.js → runtime-ZJYUQCPP.js} +69 -65
- package/chunks/{scheduled-tasks-NCFPP6VQ.js → scheduled-tasks-5MKF4EV3.js} +66 -60
- package/chunks/{scheduler-47TVMUVN.js → scheduler-72DZWRH5.js} +58 -54
- package/chunks/{sdk-exporters-http-VWTF4W6K.js → sdk-exporters-http-3R2TRQHE.js} +2 -1
- package/chunks/{sdk-impl-G6FVTBQZ.js → sdk-impl-4WF3VZ2F.js} +3 -3
- package/chunks/{send-message-TWOGWCBG.js → send-message-UMJKN27Q.js} +7 -7
- package/chunks/{serve-KL3G6LQQ.js → serve-7ZDMMA7I.js} +66 -62
- package/chunks/{server-LBPYXZ5G.js → server-ONK5RTEV.js} +783 -350
- package/chunks/{session-YG6742LO.js → session-XQW2LM4S.js} +117 -112
- package/chunks/{session-attachments-root-OUBQDYC4.js → session-attachments-root-Q5IUCMQV.js} +56 -52
- package/chunks/{session-pr-refresh-EKGMYNAW.js → session-pr-refresh-MVECWT3W.js} +66 -60
- package/chunks/{settings-DDNHJX2L.js → settings-DL6K2HQ3.js} +67 -63
- package/chunks/{shell-KUCXWITU.js → shell-BLP25QJU.js} +43 -39
- package/chunks/{skill-JQLKPNWZ.js → skill-7KURUNLD.js} +128 -23
- package/chunks/{skill-settings-XERQCUXZ.js → skill-settings-MY76LM46.js} +72 -60
- package/chunks/{spawnChannel-GQ45QFGB.js → spawnChannel-IJLH3Z74.js} +60 -55
- package/chunks/{standalone-update-PRF3ILGZ.js → standalone-update-YQKN7VNO.js} +58 -54
- package/chunks/{start-opentui-ui-JDSOZE3N.js → start-opentui-ui-ORNGKZTG.js} +2693 -2160
- package/chunks/{startInteractiveUI-RRW3JVHN.js → startInteractiveUI-PRLIKB4U.js} +1610 -1773
- package/chunks/{syntheticOutput-F6F27JMK.js → syntheticOutput-EX5L5GYI.js} +2 -2
- package/chunks/{task-create-Y623TBHB.js → task-create-75HVPEAH.js} +7 -7
- package/chunks/{task-list-FCPEEGWL.js → task-list-ZLJSMRFA.js} +2 -2
- package/chunks/{task-stop-QTKZXLPH.js → task-stop-MD7P6QGK.js} +1 -1
- package/chunks/{task-update-YLSXF25N.js → task-update-RI7QNVDP.js} +20 -13
- package/chunks/{team-create-5DRLOLOE.js → team-create-ANLKOQ44.js} +43 -39
- package/chunks/{team-delete-S7TLHZCF.js → team-delete-RIDINW6I.js} +1 -1
- package/chunks/{team-plan-approval-MWSGAL5T.js → team-plan-approval-EFUENI6Y.js} +43 -39
- package/chunks/{terminal-image-renderer-H7PD4FQW.js → terminal-image-renderer-CXMFIWKC.js} +58 -54
- package/chunks/{theme-manager-7AV73D6R.js → theme-manager-JUFYQDQQ.js} +56 -52
- package/chunks/{todoWrite-5QI2H2FW.js → todoWrite-XSTG2VT5.js} +6 -3
- package/chunks/{tool-search-UGYTBLUV.js → tool-search-SNCEA4VA.js} +17 -12
- package/chunks/{total-session-admission-JIHSTJ5S.js → total-session-admission-UHYNUO3L.js} +63 -58
- package/chunks/{tree-sitter-4D7QS7F6.js → tree-sitter-NZ3QACD7.js} +1 -1
- package/chunks/{tree-sitter-bash-VEJGF5XF.js → tree-sitter-bash-WXHLMORC.js} +1 -1
- package/chunks/{trustedFolders-5VCBXFOP.js → trustedFolders-YBR5URPG.js} +57 -53
- package/chunks/{update-relaunch-4LF3APCV.js → update-relaunch-L6MTSN76.js} +5 -5
- package/chunks/{updateCheck-4T3WUE5F.js → updateCheck-Z3SPZXHC.js} +60 -56
- package/chunks/{useAutoAcceptIndicator-UMGB64Z6.js → useAutoAcceptIndicator-PR5XGMO6.js} +68 -64
- package/chunks/{validateNonInterActiveAuth-GFJ72U2C.js → validateNonInterActiveAuth-KFLTWEYW.js} +109 -104
- package/chunks/{version-EAAZN4T2.js → version-NGAKFVUF.js} +1 -1
- package/chunks/{web-fetch-VRU3A2NI.js → web-fetch-WPGTHGU5.js} +15 -13
- package/chunks/web-search-JT63IJJV.js +39 -0
- package/chunks/{web-shell-static-CCN4JZEE.js → web-shell-static-T7UGLVE4.js} +2 -7
- package/chunks/{workflow-UHPFALVZ.js → workflow-EB63BAL4.js} +179 -79
- package/chunks/workspace-providers-status-NEPR67D2.js +133 -0
- package/chunks/{workspace-registration-store-A7RGKW62.js → workspace-registration-store-CFWXOMGH.js} +2 -2
- package/chunks/{workspace-registry-C2NGE6SD.js → workspace-registry-6KRZXOGB.js} +63 -58
- package/chunks/{workspace-runtime-coordinator-QKMZ24YF.js → workspace-runtime-coordinator-SP4X3UVH.js} +66 -59
- package/chunks/{workspace-service-RQTTAGGC.js → workspace-service-PRMYJTTV.js} +70 -65
- package/chunks/workspace-skills-status-VYTZJ5MB.js +130 -0
- package/chunks/{workspace-trust-reconciler-KFWATZUU.js → workspace-trust-reconciler-B4QMGDMI.js} +73 -68
- package/chunks/{write-file-DPVB2SBQ.js → write-file-EGBMW7TS.js} +45 -41
- package/chunks/{zh-TW-2K2WRFPY.js → zh-TW-7PRVUGLW.js} +5 -3
- package/chunks/{zh-S5V3Z5CR.js → zh-V2EYTYJP.js} +5 -3
- package/chunks/{zoom-image-S7AWLAPC.js → zoom-image-UR6K2LDR.js} +11 -10
- package/cli.js +18 -17
- package/codeModeHost.js +4425 -0
- package/export-transcript-document.css +1 -1
- package/export-transcript-document.js +151 -151
- package/locales/ca.js +5 -6
- package/locales/de.js +5 -6
- package/locales/en.js +7 -6
- package/locales/fr.js +6 -6
- package/locales/ja.js +5 -6
- package/locales/pt.js +5 -6
- package/locales/ru.js +6 -6
- package/locales/zh-TW.js +7 -6
- package/locales/zh.js +7 -6
- package/package.json +4 -3
- package/web-shell/assets/{abnfDiagram-VCTEODGH-nU24rpIE.js → abnfDiagram-VCTEODGH-S_JCiANq.js} +1 -1
- package/web-shell/assets/{arc-D1hTu8QI.js → arc-DP-839Xn.js} +1 -1
- package/web-shell/assets/architectureDiagram-5GKGNRK7-C8rCd2KK.js +36 -0
- package/web-shell/assets/blockDiagram-NRAW4CY4-DQR82jwr.js +129 -0
- package/web-shell/assets/{c4Diagram-UCG6FXSJ-kEFoC1ei.js → c4Diagram-UCG6FXSJ-D21PNMRP.js} +4 -4
- package/web-shell/assets/channel-BgGrpX_z.js +1 -0
- package/web-shell/assets/{chunk-2Q5K7J3B-DbT9wS7j.js → chunk-2Q5K7J3B-KdDInGLi.js} +1 -1
- package/web-shell/assets/{chunk-5VM5RSS4-CNbULt6O.js → chunk-5VM5RSS4-ltb7zRmH.js} +1 -1
- package/web-shell/assets/{chunk-F27PBJKO-CbQRy4Tb.js → chunk-F27PBJKO-DcpQA0Ng.js} +1 -1
- package/web-shell/assets/chunk-G27WJ6UU-C8NDZxcy.js +231 -0
- package/web-shell/assets/chunk-JWPE2WC7-hXhhHTs1.js +1 -0
- package/web-shell/assets/chunk-LCL6LL3I-CLaOR-Hl.js +206 -0
- package/web-shell/assets/chunk-POPQ4Y6H-Y5_qlB1N.js +1 -0
- package/web-shell/assets/{chunk-SVP7TREG-DyBb2Axj.js → chunk-SVP7TREG-BWX2Voh7.js} +4 -4
- package/web-shell/assets/{chunk-XXDRQBXY-BIA0eb5B.js → chunk-XXDRQBXY-1wmj_kXI.js} +1 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-jUH7ADYs.js +1 -0
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-jUH7ADYs.js +1 -0
- package/web-shell/assets/cose-bilkent-JH36ORCC-DpLc-cdd.js +1 -0
- package/web-shell/assets/cynefin-OW5HDTMX-DhxGiPZW.js +178 -0
- package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-LENf_IUy.js → cynefinDiagram-5FMLGOSQ-Dl3jfBry.js} +1 -1
- package/web-shell/assets/{cytoscape.esm-CUqq0XTU.js → cytoscape.esm-DJK6lGiH.js} +3 -3
- package/web-shell/assets/dagre-3AP2YEHR-C8FA8vJk.js +4 -0
- package/web-shell/assets/diagram-S7CK7UJ4-D-quIUtW.js +30 -0
- package/web-shell/assets/diagram-UQ7AKVKN-Bjo09Uts.js +41 -0
- package/web-shell/assets/diagram-VSXAHHWV-IoI3ttq4.js +3 -0
- package/web-shell/assets/diagram-VX7I27RA-BKyOZ5SO.js +24 -0
- package/web-shell/assets/diagram-Z3DM3KII-Cu_OHEhw.js +24 -0
- package/web-shell/assets/{ebnfDiagram-PWID7BFC-BGpiquRm.js → ebnfDiagram-PWID7BFC-UVB-bbPg.js} +1 -1
- package/web-shell/assets/{erDiagram-SSCWMZ5O-D0besu_U.js → erDiagram-SSCWMZ5O-l8drddto.js} +13 -13
- package/web-shell/assets/flowDiagram-A5DVABFB-DU1I_VAI.js +168 -0
- package/web-shell/assets/{ganttDiagram-EL5Y4UJY-CNlsAeNr.js → ganttDiagram-EL5Y4UJY-BLRH05uB.js} +1 -1
- package/web-shell/assets/gitGraphDiagram-WWUBYQGX-Czg_BkRE.js +106 -0
- package/web-shell/assets/index-CmMV8Jla.js +3 -0
- package/web-shell/assets/{index-CGT341lL.js → index-DohPy72Z.js} +1 -1
- package/web-shell/assets/index-DyMtNYuu.js +2207 -0
- package/web-shell/assets/index-n6N-2a3v.css +36 -0
- package/web-shell/assets/{infoDiagram-RXCK75RN-Bpai64Ll.js → infoDiagram-RXCK75RN-BpBvjkro.js} +1 -1
- package/web-shell/assets/ishikawaDiagram-5VMMS53U-phy1l3jm.js +70 -0
- package/web-shell/assets/{journeyDiagram-EYS64GPL-iz_DKgFX.js → journeyDiagram-EYS64GPL-oY-9LgVS.js} +1 -1
- package/web-shell/assets/kanban-definition-3QL26DDD-slZoy-sc.js +89 -0
- package/web-shell/assets/{layout-qEvKgnvU.js → layout-0hnn_P9l.js} +1 -1
- package/web-shell/assets/{linear-C6lklGdq.js → linear-7Wqe8DRy.js} +1 -1
- package/web-shell/assets/mermaid.core-BaK8n0bq.js +312 -0
- package/web-shell/assets/mindmap-definition-FBJOCRG2-BedUdy_E.js +96 -0
- package/web-shell/assets/{pegDiagram-XKGWAZYB-BhD0q0i6.js → pegDiagram-XKGWAZYB-DQLRdmxq.js} +1 -1
- package/web-shell/assets/pieDiagram-E7YTZNPT-UC20w9-5.js +39 -0
- package/web-shell/assets/quadrantDiagram-AXDQQJYC-CQx2Hmk3.js +7 -0
- package/web-shell/assets/qwen-code-notification-BRVagufF.png +0 -0
- package/web-shell/assets/{railroadDiagram-O6MQD6OU-E1g2KIFK.js → railroadDiagram-O6MQD6OU-2UEJe_y-.js} +1 -1
- package/web-shell/assets/{requirementDiagram-EFPCY7ZU-CuerYJOe.js → requirementDiagram-EFPCY7ZU-DOAJggB4.js} +13 -13
- package/web-shell/assets/{sankeyDiagram-P5KCCOFB-CqWyCZGA.js → sankeyDiagram-P5KCCOFB-DnQ_qJo7.js} +7 -7
- package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-B-YWb8x4.js → sequenceDiagram-WJ2MYXX4-DZrZUoCo.js} +16 -16
- package/web-shell/assets/sizeCapture-X5ZJPWSS-B5G4GDQB.js +1 -0
- package/web-shell/assets/{stateDiagram-HBIQ2CUA-C8LDpNHS.js → stateDiagram-HBIQ2CUA-Bn1cT0qF.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-BF3xtNvJ.js +1 -0
- package/web-shell/assets/swimlanes-XN3QIQJK-Bzhcdn87.js +1 -0
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-B753mA3E.js +8 -0
- package/web-shell/assets/timeline-definition-24CTP7MA-BqZ_3D10.js +120 -0
- package/web-shell/assets/vennDiagram-4TSXK5OY-z9kw1kmm.js +34 -0
- package/web-shell/assets/wardleyDiagram-VM6X3IG4-Cydp1zJW.js +78 -0
- package/web-shell/assets/{xychartDiagram-S5SC5T6Z-ruD2Wjhg.js → xychartDiagram-S5SC5T6Z-j4X1lQKo.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/chunk-7Q2AXRDJ.js +0 -114
- package/chunks/chunk-AEY27Z35.js +0 -1411
- package/chunks/chunk-CFKIH3D3.js +0 -50
- package/chunks/chunk-HWVUSYSN.js +0 -126
- package/chunks/chunk-QHMLYMMS.js +0 -32
- package/chunks/chunk-SAH4BD2J.js +0 -92
- package/chunks/chunk-TWUKBNWM.js +0 -86
- package/chunks/chunk-ZTTC7T4X.js +0 -126
- package/chunks/list-YL6LDQKQ.js +0 -129
- package/chunks/mcp-IYVSIW6O.js +0 -123
- package/chunks/web-search-NEGYQNDJ.js +0 -912
- package/chunks/workspace-providers-status-AEYISSU2.js +0 -127
- package/chunks/workspace-skills-status-5HWZU3HX.js +0 -126
- package/web-shell/assets/architectureDiagram-5GKGNRK7-B_fgkKe7.js +0 -36
- package/web-shell/assets/blockDiagram-NRAW4CY4-C3pddUNg.js +0 -129
- package/web-shell/assets/channel-Blod4z1X.js +0 -1
- package/web-shell/assets/chunk-G27WJ6UU-CVbXTxYk.js +0 -231
- package/web-shell/assets/chunk-JWPE2WC7-D89c_BXy.js +0 -1
- package/web-shell/assets/chunk-LCL6LL3I-B7-I_9KB.js +0 -206
- package/web-shell/assets/chunk-POPQ4Y6H-DcLQFzS4.js +0 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-D6hFDMqb.js +0 -1
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-D6hFDMqb.js +0 -1
- package/web-shell/assets/cose-bilkent-JH36ORCC-Db2FYN85.js +0 -1
- package/web-shell/assets/cynefin-OW5HDTMX-i4GwmBVy.js +0 -178
- package/web-shell/assets/dagre-3AP2YEHR-CF9XVrD9.js +0 -4
- package/web-shell/assets/diagram-S7CK7UJ4-DD5PJfSm.js +0 -30
- package/web-shell/assets/diagram-UQ7AKVKN-CjD_sBMj.js +0 -41
- package/web-shell/assets/diagram-VSXAHHWV-U5WwMqyA.js +0 -3
- package/web-shell/assets/diagram-VX7I27RA-BujpHJJf.js +0 -24
- package/web-shell/assets/diagram-Z3DM3KII-3ZLtKEXo.js +0 -24
- package/web-shell/assets/flowDiagram-A5DVABFB-9DwDuIyr.js +0 -168
- package/web-shell/assets/gitGraphDiagram-WWUBYQGX-C_pPFiTR.js +0 -106
- package/web-shell/assets/index-BYWs4JWq.js +0 -3
- package/web-shell/assets/index-D3YS6KuJ.js +0 -2173
- package/web-shell/assets/index-eBxK3rs2.css +0 -36
- package/web-shell/assets/ishikawaDiagram-5VMMS53U-ktpJFq4r.js +0 -70
- package/web-shell/assets/kanban-definition-3QL26DDD-m_gG00Yt.js +0 -89
- package/web-shell/assets/mermaid.core-DSCYB_2P.js +0 -312
- package/web-shell/assets/mindmap-definition-FBJOCRG2-DRQbT8w-.js +0 -96
- package/web-shell/assets/pieDiagram-E7YTZNPT-BvIGQCSd.js +0 -39
- package/web-shell/assets/quadrantDiagram-AXDQQJYC-BDQtfpU-.js +0 -7
- package/web-shell/assets/sizeCapture-X5ZJPWSS-BB7YY4Tl.js +0 -1
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-C4CbdvGa.js +0 -1
- package/web-shell/assets/swimlanes-XN3QIQJK-D94vOoxZ.js +0 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN--QNSIOC8.js +0 -8
- package/web-shell/assets/timeline-definition-24CTP7MA-C9C8uEYm.js +0 -120
- package/web-shell/assets/vennDiagram-4TSXK5OY-CYzMHbVW.js +0 -34
- package/web-shell/assets/wardleyDiagram-VM6X3IG4-G9nhtLES.js +0 -78
- package/chunks/{open-with-auth-6MVIHMXB.js → open-with-auth-XFCCJOO6.js} +3 -3
|
@@ -449,6 +449,23 @@ var MAX_PERSISTED_MIME_CHARS = 120;
|
|
|
449
449
|
var MAX_PERSISTED_FIELD_CHARS = 200;
|
|
450
450
|
var MAX_PERSISTED_TIMESTAMP_CHARS = 64;
|
|
451
451
|
var SECRET_TOKEN_VALUE_PATTERN = /(?:^|\s)(?:bearer\s+\S{8,}|sk-[A-Za-z0-9_-]{12,}|(?:gh[pousr]|github_pat)_[A-Za-z0-9_/-]{12,}|[a-f0-9]{40,}|[A-Za-z0-9+/]{48,}={0,2})(?:$|\s)/i;
|
|
452
|
+
function getWebPreviewSnapshotId(artifact) {
|
|
453
|
+
const id = /^preview-([0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})$/.exec(
|
|
454
|
+
artifact.managedId ?? ""
|
|
455
|
+
)?.[1];
|
|
456
|
+
const sha256 = artifact.metadata?.[PUBLISHED_CONTENT_SHA256_METADATA_KEY];
|
|
457
|
+
if (!id || artifact.kind !== "html" || artifact.storage !== "published" || artifact.metadata?.["artifactType"] !== "web_preview_snapshot" || typeof sha256 !== "string" || !/^[0-9a-f]{64}$/.test(sha256) || artifact.source !== void 0 && (artifact.source !== "tool" || artifact.toolName?.toLowerCase() !== "artifact") || artifact.toolName !== void 0 && artifact.toolName.toLowerCase() !== "artifact")
|
|
458
|
+
return void 0;
|
|
459
|
+
try {
|
|
460
|
+
const url = new URL(artifact.url ?? "");
|
|
461
|
+
if (url.protocol === "file:" && !url.host && !url.search && !url.hash && url.pathname.endsWith(`/artifacts/snapshots/${id}/index.html`))
|
|
462
|
+
return id;
|
|
463
|
+
} catch {
|
|
464
|
+
return void 0;
|
|
465
|
+
}
|
|
466
|
+
return void 0;
|
|
467
|
+
}
|
|
468
|
+
__name(getWebPreviewSnapshotId, "getWebPreviewSnapshotId");
|
|
452
469
|
function isSessionArtifactRecord(record) {
|
|
453
470
|
return isTranscriptArtifactRecord(record);
|
|
454
471
|
}
|
|
@@ -797,7 +814,7 @@ function isForkSafeArtifact(artifact) {
|
|
|
797
814
|
if (artifact.metadata && hasRestoreUnsafeMetadata(artifact.metadata)) {
|
|
798
815
|
return false;
|
|
799
816
|
}
|
|
800
|
-
if (artifact.url && hasRestoreUnsafeUrl(artifact.url)) {
|
|
817
|
+
if (artifact.url && hasRestoreUnsafeUrl(artifact.url) && !getWebPreviewSnapshotId(artifact)) {
|
|
801
818
|
return false;
|
|
802
819
|
}
|
|
803
820
|
return true;
|
|
@@ -1233,6 +1250,296 @@ function getNonNegativeInteger(record, key) {
|
|
|
1233
1250
|
}
|
|
1234
1251
|
__name(getNonNegativeInteger, "getNonNegativeInteger");
|
|
1235
1252
|
|
|
1253
|
+
// packages/core/src/tools/artifact/html.ts
|
|
1254
|
+
init_esbuild_shims();
|
|
1255
|
+
var MAX_ARTIFACT_BYTES = 16 * 1024 * 1024;
|
|
1256
|
+
var CSS_RESET = `*,*::before,*::after{box-sizing:border-box}
|
|
1257
|
+
html{-webkit-text-size-adjust:100%}
|
|
1258
|
+
body{margin:0;padding:1.5rem;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5;color:#1a1a1a;background:#fff}
|
|
1259
|
+
img,svg,video,canvas{max-width:100%;height:auto}
|
|
1260
|
+
pre,table{max-width:100%;overflow-x:auto}
|
|
1261
|
+
:where(a){color:#0969da}`;
|
|
1262
|
+
var DEFAULT_TITLE = "Artifact";
|
|
1263
|
+
function sanitizeArtifactTitle(raw) {
|
|
1264
|
+
const cleaned = (raw ?? "").replace(/\s+/g, " ").trim().slice(0, 120);
|
|
1265
|
+
return cleaned || DEFAULT_TITLE;
|
|
1266
|
+
}
|
|
1267
|
+
__name(sanitizeArtifactTitle, "sanitizeArtifactTitle");
|
|
1268
|
+
function escapeForTitle(s) {
|
|
1269
|
+
return s.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
|
1270
|
+
}
|
|
1271
|
+
__name(escapeForTitle, "escapeForTitle");
|
|
1272
|
+
function validateSelfContained(fragment) {
|
|
1273
|
+
if (!fragment.trim()) {
|
|
1274
|
+
return "Artifact file is empty \u2014 write the page content (a body-only HTML fragment) first.";
|
|
1275
|
+
}
|
|
1276
|
+
const scan = normalizeAttributeQuotes(fragment);
|
|
1277
|
+
const head = fragment.replace(/^\s+/, "").replace(/^(?:<!--[\s\S]*?-->\s*)+/, "");
|
|
1278
|
+
const wrapperTag = /^(?:<!doctype\b|<html[\s>]|<head[\s>]|<body[\s>])/i.exec(
|
|
1279
|
+
head
|
|
1280
|
+
);
|
|
1281
|
+
if (wrapperTag) {
|
|
1282
|
+
return `Write a body-only fragment \u2014 it starts with a full-document tag (${wrapperTag[0].trim()}). Omit <!doctype>, <html>, <head>, and <body>; they are added at publish time.`;
|
|
1283
|
+
}
|
|
1284
|
+
const extResource = /\b(?:src|srcset|poster)\s*=\s*["']?\s*(?:https?:)?\/\//i.exec(scan) ?? /<link\b[^>]*\bhref\s*=\s*["']?\s*(?:https?:)?\/\//i.exec(scan);
|
|
1285
|
+
if (extResource) {
|
|
1286
|
+
return `Artifact must be self-contained \u2014 found an external reference (${truncate(extResource[0])}). Inline scripts/styles and embed assets as data: URIs.`;
|
|
1287
|
+
}
|
|
1288
|
+
const jsUri = /\b(?:href|src)\s*=\s*["']?\s*javascript\s*:/i.exec(scan);
|
|
1289
|
+
if (jsUri) {
|
|
1290
|
+
return `Artifact must be self-contained \u2014 found a javascript: URI (${truncate(jsUri[0])}). Use inline <script> blocks instead.`;
|
|
1291
|
+
}
|
|
1292
|
+
const extScript = /\b(?:fetch|WebSocket|XMLHttpRequest)\s*\(\s*["']\s*(?:https?|wss?):\/\//i.exec(
|
|
1293
|
+
scan
|
|
1294
|
+
) ?? /\bimport\s*\(\s*["'](?:https?:)?\/\//i.exec(scan) ?? /\bwindow\.open\s*\(/i.exec(scan) ?? /\blocation\.\w+\s*[=(]/i.exec(scan) ?? /\bnavigator\.sendBeacon\s*\(\s*["']\s*(?:https?:)?\/\//i.exec(scan);
|
|
1295
|
+
if (extScript) {
|
|
1296
|
+
return `Artifact must be self-contained \u2014 found browser network egress (${truncate(extScript[0])}). Embed data in the artifact instead of fetching it at runtime.`;
|
|
1297
|
+
}
|
|
1298
|
+
const metaRefresh = /<meta\b[^>]*http-equiv\s*=\s*["']?refresh["']?[^>]*\burl\s*=\s*(?:https?:)?\/\//i.exec(
|
|
1299
|
+
scan
|
|
1300
|
+
);
|
|
1301
|
+
if (metaRefresh) {
|
|
1302
|
+
return `Artifact must be self-contained \u2014 found a meta refresh redirect (${truncate(metaRefresh[0])}).`;
|
|
1303
|
+
}
|
|
1304
|
+
const extCss = /(?:@import\s+(?:url\()?|url\()\s*["']?\s*(?:https?:)?\/\//i.exec(scan);
|
|
1305
|
+
if (extCss) {
|
|
1306
|
+
return `Artifact must be self-contained \u2014 found an external CSS reference (${truncate(extCss[0])}). Inline CSS and embed fonts/images as data: URIs.`;
|
|
1307
|
+
}
|
|
1308
|
+
return null;
|
|
1309
|
+
}
|
|
1310
|
+
__name(validateSelfContained, "validateSelfContained");
|
|
1311
|
+
function normalizeAttributeQuotes(s) {
|
|
1312
|
+
return s.replace(/"|"|"/gi, '"').replace(/'|'|'/gi, "'");
|
|
1313
|
+
}
|
|
1314
|
+
__name(normalizeAttributeQuotes, "normalizeAttributeQuotes");
|
|
1315
|
+
function truncate(s, max = 60) {
|
|
1316
|
+
const t = s.replace(/\s+/g, " ").trim();
|
|
1317
|
+
return t.length > max ? `${t.slice(0, max)}\u2026` : t;
|
|
1318
|
+
}
|
|
1319
|
+
__name(truncate, "truncate");
|
|
1320
|
+
function wrapArtifactHtml(bodyFragment, title) {
|
|
1321
|
+
const safeTitle = escapeForTitle(sanitizeArtifactTitle(title));
|
|
1322
|
+
return `<!doctype html>
|
|
1323
|
+
<html lang="en">
|
|
1324
|
+
<head>
|
|
1325
|
+
<meta charset="utf-8">
|
|
1326
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
1327
|
+
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline'; style-src 'unsafe-inline'; img-src data:; font-src data:; media-src data:; connect-src 'none'; form-action 'none'; base-uri 'none'; frame-ancestors 'none'; sandbox allow-scripts;">
|
|
1328
|
+
<title>${safeTitle}</title>
|
|
1329
|
+
<style>${CSS_RESET}</style>
|
|
1330
|
+
</head>
|
|
1331
|
+
<body>
|
|
1332
|
+
${bodyFragment}
|
|
1333
|
+
</body>
|
|
1334
|
+
</html>
|
|
1335
|
+
`;
|
|
1336
|
+
}
|
|
1337
|
+
__name(wrapArtifactHtml, "wrapArtifactHtml");
|
|
1338
|
+
function byteLength(s) {
|
|
1339
|
+
return Buffer.byteLength(s, "utf8");
|
|
1340
|
+
}
|
|
1341
|
+
__name(byteLength, "byteLength");
|
|
1342
|
+
|
|
1343
|
+
// packages/core/src/tools/artifact/artifact-snapshots.ts
|
|
1344
|
+
init_esbuild_shims();
|
|
1345
|
+
import { createHash as createHash2, randomUUID } from "node:crypto";
|
|
1346
|
+
import { constants, promises as fs } from "node:fs";
|
|
1347
|
+
import path from "node:path";
|
|
1348
|
+
import { pathToFileURL } from "node:url";
|
|
1349
|
+
var SNAPSHOT_REFERENCES_METADATA_KEY = "qwen.snapshot.references";
|
|
1350
|
+
async function saveArtifactSnapshot(html, title, publishedUrl, sessionId, runtimeBaseDir) {
|
|
1351
|
+
const id = randomUUID();
|
|
1352
|
+
const root = path.join(runtimeBaseDir, "artifacts", "snapshots");
|
|
1353
|
+
await fs.mkdir(root, { recursive: true });
|
|
1354
|
+
const dir = path.join(root, id);
|
|
1355
|
+
await fs.mkdir(dir);
|
|
1356
|
+
const file = path.join(dir, "index.html");
|
|
1357
|
+
try {
|
|
1358
|
+
const references = path.join(dir, "references");
|
|
1359
|
+
await fs.mkdir(references);
|
|
1360
|
+
await fs.writeFile(
|
|
1361
|
+
path.join(references, snapshotReference(sessionId)),
|
|
1362
|
+
"",
|
|
1363
|
+
{
|
|
1364
|
+
flag: "wx",
|
|
1365
|
+
mode: 384,
|
|
1366
|
+
flush: true
|
|
1367
|
+
}
|
|
1368
|
+
);
|
|
1369
|
+
await fs.writeFile(file, html, {
|
|
1370
|
+
encoding: "utf8",
|
|
1371
|
+
flag: "wx",
|
|
1372
|
+
mode: 384,
|
|
1373
|
+
flush: true
|
|
1374
|
+
});
|
|
1375
|
+
await syncSnapshotDirectory(references);
|
|
1376
|
+
await syncSnapshotDirectory(dir);
|
|
1377
|
+
await syncSnapshotDirectory(root);
|
|
1378
|
+
} catch (error) {
|
|
1379
|
+
await fs.rm(dir, { recursive: true, force: true }).catch(() => void 0);
|
|
1380
|
+
throw error;
|
|
1381
|
+
}
|
|
1382
|
+
return {
|
|
1383
|
+
kind: "html",
|
|
1384
|
+
storage: "published",
|
|
1385
|
+
title,
|
|
1386
|
+
url: pathToFileURL(file).href,
|
|
1387
|
+
managedId: `preview-${id}`,
|
|
1388
|
+
mimeType: "text/html",
|
|
1389
|
+
sizeBytes: Buffer.byteLength(html, "utf8"),
|
|
1390
|
+
metadata: {
|
|
1391
|
+
artifactType: "web_preview_snapshot",
|
|
1392
|
+
[SNAPSHOT_REFERENCES_METADATA_KEY]: 1,
|
|
1393
|
+
publishedUrl,
|
|
1394
|
+
[PUBLISHED_CONTENT_SHA256_METADATA_KEY]: createHash2("sha256").update(html).digest("hex")
|
|
1395
|
+
}
|
|
1396
|
+
};
|
|
1397
|
+
}
|
|
1398
|
+
__name(saveArtifactSnapshot, "saveArtifactSnapshot");
|
|
1399
|
+
async function readArtifactSnapshot(artifact, runtimeBaseDir) {
|
|
1400
|
+
const id = getWebPreviewSnapshotId(artifact);
|
|
1401
|
+
const sha256 = artifact.metadata?.[PUBLISHED_CONTENT_SHA256_METADATA_KEY];
|
|
1402
|
+
const unavailable = /* @__PURE__ */ __name(() => new Error("Saved webpage version is unavailable."), "unavailable");
|
|
1403
|
+
if (!id) throw unavailable();
|
|
1404
|
+
const root = path.join(runtimeBaseDir, "artifacts", "snapshots");
|
|
1405
|
+
const file = path.join(root, id, "index.html");
|
|
1406
|
+
if (artifact.url !== pathToFileURL(file).href) throw unavailable();
|
|
1407
|
+
const realRoot = await fs.realpath(root);
|
|
1408
|
+
if (await fs.realpath(file) !== path.join(realRoot, id, "index.html")) {
|
|
1409
|
+
throw unavailable();
|
|
1410
|
+
}
|
|
1411
|
+
const handle = await fs.open(
|
|
1412
|
+
file,
|
|
1413
|
+
// O_NOFOLLOW refuses a symlink swapped in after the realpath check, and
|
|
1414
|
+
// O_NONBLOCK keeps a FIFO swapped into the same window from blocking the
|
|
1415
|
+
// open: the path is only proven to be a regular file by the fstat below.
|
|
1416
|
+
constants.O_RDONLY | constants.O_NOFOLLOW | constants.O_NONBLOCK
|
|
1417
|
+
);
|
|
1418
|
+
try {
|
|
1419
|
+
const stat = await handle.stat();
|
|
1420
|
+
if (!stat.isFile() || stat.size > MAX_ARTIFACT_BYTES) throw unavailable();
|
|
1421
|
+
const bytes = Buffer.alloc(stat.size + 1);
|
|
1422
|
+
let length = 0;
|
|
1423
|
+
while (length < bytes.length) {
|
|
1424
|
+
const { bytesRead } = await handle.read(
|
|
1425
|
+
bytes,
|
|
1426
|
+
length,
|
|
1427
|
+
bytes.length - length
|
|
1428
|
+
);
|
|
1429
|
+
if (bytesRead === 0) break;
|
|
1430
|
+
length += bytesRead;
|
|
1431
|
+
}
|
|
1432
|
+
const content = bytes.subarray(0, length);
|
|
1433
|
+
if (length !== stat.size || createHash2("sha256").update(content).digest("hex") !== sha256) {
|
|
1434
|
+
throw unavailable();
|
|
1435
|
+
}
|
|
1436
|
+
return content.toString("utf8");
|
|
1437
|
+
} finally {
|
|
1438
|
+
await handle.close();
|
|
1439
|
+
}
|
|
1440
|
+
}
|
|
1441
|
+
__name(readArtifactSnapshot, "readArtifactSnapshot");
|
|
1442
|
+
function snapshotReference(sessionId, operationId) {
|
|
1443
|
+
const owner = createHash2("sha256").update(sessionId).digest("hex");
|
|
1444
|
+
return operationId ? `${owner}-${createHash2("sha256").update(operationId).digest("hex")}` : owner;
|
|
1445
|
+
}
|
|
1446
|
+
__name(snapshotReference, "snapshotReference");
|
|
1447
|
+
async function syncSnapshotDirectory(directory) {
|
|
1448
|
+
try {
|
|
1449
|
+
const handle = await fs.open(directory, "r");
|
|
1450
|
+
try {
|
|
1451
|
+
await handle.sync();
|
|
1452
|
+
} finally {
|
|
1453
|
+
await handle.close();
|
|
1454
|
+
}
|
|
1455
|
+
} catch (error) {
|
|
1456
|
+
if (process.platform !== "win32") throw error;
|
|
1457
|
+
}
|
|
1458
|
+
}
|
|
1459
|
+
__name(syncSnapshotDirectory, "syncSnapshotDirectory");
|
|
1460
|
+
async function snapshotDirectory(artifact, runtimeBaseDir) {
|
|
1461
|
+
const id = getWebPreviewSnapshotId(artifact);
|
|
1462
|
+
if (!id) return void 0;
|
|
1463
|
+
const root = path.join(runtimeBaseDir, "artifacts", "snapshots");
|
|
1464
|
+
const dir = path.join(root, id);
|
|
1465
|
+
if (artifact.url !== pathToFileURL(path.join(dir, "index.html")).href) {
|
|
1466
|
+
return void 0;
|
|
1467
|
+
}
|
|
1468
|
+
if (artifact.metadata?.[SNAPSHOT_REFERENCES_METADATA_KEY] !== 1)
|
|
1469
|
+
return void 0;
|
|
1470
|
+
const realRoot = await fs.realpath(root);
|
|
1471
|
+
if (await fs.realpath(dir) !== path.join(realRoot, id)) return void 0;
|
|
1472
|
+
if (await fs.realpath(path.join(dir, "index.html")) !== path.join(realRoot, id, "index.html"))
|
|
1473
|
+
return void 0;
|
|
1474
|
+
if (await fs.realpath(path.join(dir, "references")) !== path.join(realRoot, id, "references")) {
|
|
1475
|
+
return void 0;
|
|
1476
|
+
}
|
|
1477
|
+
return dir;
|
|
1478
|
+
}
|
|
1479
|
+
__name(snapshotDirectory, "snapshotDirectory");
|
|
1480
|
+
async function retainArtifactSnapshot(artifact, runtimeBaseDir, sessionId, operationId) {
|
|
1481
|
+
try {
|
|
1482
|
+
const dir = await snapshotDirectory(artifact, runtimeBaseDir);
|
|
1483
|
+
if (!dir) return;
|
|
1484
|
+
const references = path.join(dir, "references");
|
|
1485
|
+
const owner = snapshotReference(sessionId);
|
|
1486
|
+
const entries = await fs.readdir(references);
|
|
1487
|
+
if (!operationId && entries.some((entry) => entry === owner || entry.startsWith(`${owner}-`)))
|
|
1488
|
+
return;
|
|
1489
|
+
await fs.writeFile(
|
|
1490
|
+
path.join(references, snapshotReference(sessionId, operationId)),
|
|
1491
|
+
"",
|
|
1492
|
+
{ flag: "wx", mode: 384, flush: true }
|
|
1493
|
+
);
|
|
1494
|
+
await syncSnapshotDirectory(references);
|
|
1495
|
+
} catch (error) {
|
|
1496
|
+
const code = error.code;
|
|
1497
|
+
if (code !== "EEXIST" && !(code === "ENOENT" && !operationId)) throw error;
|
|
1498
|
+
}
|
|
1499
|
+
}
|
|
1500
|
+
__name(retainArtifactSnapshot, "retainArtifactSnapshot");
|
|
1501
|
+
async function deleteArtifactSnapshot(artifact, runtimeBaseDir, sessionId, operationId, assertCleanupOwned) {
|
|
1502
|
+
try {
|
|
1503
|
+
const dir = await snapshotDirectory(artifact, runtimeBaseDir);
|
|
1504
|
+
if (!dir) return;
|
|
1505
|
+
await releaseSnapshotDirectory(
|
|
1506
|
+
dir,
|
|
1507
|
+
sessionId,
|
|
1508
|
+
operationId,
|
|
1509
|
+
assertCleanupOwned
|
|
1510
|
+
);
|
|
1511
|
+
} catch {
|
|
1512
|
+
assertCleanupOwned?.();
|
|
1513
|
+
}
|
|
1514
|
+
}
|
|
1515
|
+
__name(deleteArtifactSnapshot, "deleteArtifactSnapshot");
|
|
1516
|
+
async function releaseSnapshotDirectory(dir, sessionId, operationId, assertCleanupOwned) {
|
|
1517
|
+
const references = path.join(dir, "references");
|
|
1518
|
+
const owner = snapshotReference(sessionId, operationId);
|
|
1519
|
+
let released = false;
|
|
1520
|
+
for (const reference of await fs.readdir(references)) {
|
|
1521
|
+
if (reference === owner || !operationId && reference.startsWith(`${owner}-`)) {
|
|
1522
|
+
assertCleanupOwned?.();
|
|
1523
|
+
await fs.unlink(path.join(references, reference));
|
|
1524
|
+
released = true;
|
|
1525
|
+
}
|
|
1526
|
+
}
|
|
1527
|
+
if (!released) return;
|
|
1528
|
+
try {
|
|
1529
|
+
assertCleanupOwned?.();
|
|
1530
|
+
await fs.rmdir(references);
|
|
1531
|
+
} catch (error) {
|
|
1532
|
+
if (error.code === "ENOTEMPTY") return;
|
|
1533
|
+
throw error;
|
|
1534
|
+
}
|
|
1535
|
+
const file = path.join(dir, "index.html");
|
|
1536
|
+
assertCleanupOwned?.();
|
|
1537
|
+
await fs.unlink(file);
|
|
1538
|
+
assertCleanupOwned?.();
|
|
1539
|
+
await fs.rmdir(dir);
|
|
1540
|
+
}
|
|
1541
|
+
__name(releaseSnapshotDirectory, "releaseSnapshotDirectory");
|
|
1542
|
+
|
|
1236
1543
|
export {
|
|
1237
1544
|
TranscriptRecordPreparationError,
|
|
1238
1545
|
stripGeneratedAttachmentTokens,
|
|
@@ -1250,6 +1557,7 @@ export {
|
|
|
1250
1557
|
WORKSPACE_CONTENT_MTIME_MS_METADATA_KEY,
|
|
1251
1558
|
WORKSPACE_CONTENT_SIZE_BYTES_METADATA_KEY,
|
|
1252
1559
|
PUBLISHED_CONTENT_SHA256_METADATA_KEY,
|
|
1560
|
+
getWebPreviewSnapshotId,
|
|
1253
1561
|
isSessionArtifactRecord,
|
|
1254
1562
|
selectActiveSideArtifactRecordUuids,
|
|
1255
1563
|
stableSessionArtifactId,
|
|
@@ -1261,7 +1569,16 @@ export {
|
|
|
1261
1569
|
isPrototypeMetadataKey,
|
|
1262
1570
|
isReservedWorkspaceMetadataKey,
|
|
1263
1571
|
isAdoptableContentFingerprintKey,
|
|
1264
|
-
metadataBudgetBytes
|
|
1572
|
+
metadataBudgetBytes,
|
|
1573
|
+
MAX_ARTIFACT_BYTES,
|
|
1574
|
+
sanitizeArtifactTitle,
|
|
1575
|
+
validateSelfContained,
|
|
1576
|
+
wrapArtifactHtml,
|
|
1577
|
+
byteLength,
|
|
1578
|
+
saveArtifactSnapshot,
|
|
1579
|
+
readArtifactSnapshot,
|
|
1580
|
+
retainArtifactSnapshot,
|
|
1581
|
+
deleteArtifactSnapshot
|
|
1265
1582
|
};
|
|
1266
1583
|
/**
|
|
1267
1584
|
* @license
|
|
@@ -1273,3 +1590,8 @@ export {
|
|
|
1273
1590
|
* Copyright 2026 Qwen Team
|
|
1274
1591
|
* SPDX-License-Identifier: Apache-2.0
|
|
1275
1592
|
*/
|
|
1593
|
+
/**
|
|
1594
|
+
* @license
|
|
1595
|
+
* Copyright 2025 Google LLC
|
|
1596
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1597
|
+
*/
|
|
@@ -2,17 +2,18 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
ACP_ROUTE_ID_PREFIX
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-INGBUYL6.js";
|
|
6
6
|
import {
|
|
7
7
|
isOpenRouterHostname
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-GSS4SZNG.js";
|
|
9
9
|
import {
|
|
10
10
|
REASONING_EFFORT_TIERS,
|
|
11
11
|
clampReasoningEffort,
|
|
12
12
|
getGptReasoningCapabilities,
|
|
13
13
|
isReasoningEffortPlaceholder,
|
|
14
|
-
parseModelReasoningCapabilities
|
|
15
|
-
|
|
14
|
+
parseModelReasoningCapabilities,
|
|
15
|
+
reasoningEffortsForCapability
|
|
16
|
+
} from "./chunk-ARDHE6MM.js";
|
|
16
17
|
import {
|
|
17
18
|
init_esbuild_shims
|
|
18
19
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -185,9 +186,9 @@ function getConfiguredModelReasoning(config, modelId = config.getModel?.(), fall
|
|
|
185
186
|
__name(getConfiguredModelReasoning, "getConfiguredModelReasoning");
|
|
186
187
|
function getReasoningEffortsForConfig(config) {
|
|
187
188
|
const modelId = config.getModel?.();
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
189
|
+
return reasoningEffortsForCapability(
|
|
190
|
+
getConfiguredModelReasoning(config, modelId, false)
|
|
191
|
+
);
|
|
191
192
|
}
|
|
192
193
|
__name(getReasoningEffortsForConfig, "getReasoningEffortsForConfig");
|
|
193
194
|
function parseReasoningSelection(value) {
|
|
@@ -19583,8 +19583,19 @@ var findRootNode = /* @__PURE__ */ __name((node) => {
|
|
|
19583
19583
|
var useBoxMetrics = /* @__PURE__ */ __name((ref) => {
|
|
19584
19584
|
const [metrics, setMetrics] = (0, import_react33.useState)(emptyMetrics);
|
|
19585
19585
|
const [hasMeasured, setHasMeasured] = (0, import_react33.useState)(false);
|
|
19586
|
+
const guardRef = (0, import_react33.useRef)({ count: 0, windowStart: 0 });
|
|
19586
19587
|
const { stdout } = use_stdout_default();
|
|
19587
19588
|
const updateMetrics = (0, import_react33.useCallback)(() => {
|
|
19589
|
+
const guard = guardRef.current;
|
|
19590
|
+
const now = performance.now();
|
|
19591
|
+
if (now - guard.windowStart >= 16) {
|
|
19592
|
+
guard.count = 0;
|
|
19593
|
+
guard.windowStart = now;
|
|
19594
|
+
}
|
|
19595
|
+
if (guard.count >= 32) {
|
|
19596
|
+
return;
|
|
19597
|
+
}
|
|
19598
|
+
guard.count += 1;
|
|
19588
19599
|
const layout = ref.current?.yogaNode?.getComputedLayout() ?? emptyMetrics;
|
|
19589
19600
|
setMetrics((previousMetrics) => {
|
|
19590
19601
|
const hasChanged = previousMetrics.width !== layout.width || previousMetrics.height !== layout.height || previousMetrics.left !== layout.left || previousMetrics.top !== layout.top;
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
getMeter,
|
|
17
17
|
isTelemetrySdkInitialized,
|
|
18
18
|
isValidSensitiveSpanAttributeMaxLength
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-4Y2I3CI3.js";
|
|
20
20
|
import {
|
|
21
21
|
FatalConfigError,
|
|
22
22
|
QWEN_DIR,
|
|
@@ -8489,6 +8489,117 @@ async function resolveTelemetrySettings(options) {
|
|
|
8489
8489
|
}
|
|
8490
8490
|
__name(resolveTelemetrySettings, "resolveTelemetrySettings");
|
|
8491
8491
|
|
|
8492
|
+
// packages/core/src/skills/types.ts
|
|
8493
|
+
init_esbuild_shims();
|
|
8494
|
+
function parseModelField(frontmatter) {
|
|
8495
|
+
const raw = frontmatter["model"];
|
|
8496
|
+
if (raw === void 0) {
|
|
8497
|
+
return void 0;
|
|
8498
|
+
}
|
|
8499
|
+
if (typeof raw !== "string") {
|
|
8500
|
+
throw new Error('"model" must be a string');
|
|
8501
|
+
}
|
|
8502
|
+
const trimmed = raw.trim();
|
|
8503
|
+
if (trimmed === "" || trimmed === "inherit") {
|
|
8504
|
+
return void 0;
|
|
8505
|
+
}
|
|
8506
|
+
return trimmed;
|
|
8507
|
+
}
|
|
8508
|
+
__name(parseModelField, "parseModelField");
|
|
8509
|
+
function parseUserInvocableField(frontmatter) {
|
|
8510
|
+
const raw = frontmatter["user-invocable"];
|
|
8511
|
+
if (raw === void 0) {
|
|
8512
|
+
return void 0;
|
|
8513
|
+
}
|
|
8514
|
+
if (raw === true || raw === "true") {
|
|
8515
|
+
return true;
|
|
8516
|
+
}
|
|
8517
|
+
if (raw === false || raw === "false") {
|
|
8518
|
+
return false;
|
|
8519
|
+
}
|
|
8520
|
+
return void 0;
|
|
8521
|
+
}
|
|
8522
|
+
__name(parseUserInvocableField, "parseUserInvocableField");
|
|
8523
|
+
function parsePathsField(frontmatter) {
|
|
8524
|
+
const raw = frontmatter["paths"];
|
|
8525
|
+
if (raw === void 0 || raw === null) {
|
|
8526
|
+
return void 0;
|
|
8527
|
+
}
|
|
8528
|
+
if (!Array.isArray(raw)) {
|
|
8529
|
+
throw new Error('"paths" must be an array of glob patterns');
|
|
8530
|
+
}
|
|
8531
|
+
const cleaned = raw.map((p) => String(p).trim()).filter((p) => p.length > 0);
|
|
8532
|
+
for (const pattern of cleaned) {
|
|
8533
|
+
const normalized = pattern.replace(/\\/g, "/");
|
|
8534
|
+
if (normalized.startsWith("/") || /^[A-Za-z]:/.test(normalized)) {
|
|
8535
|
+
throw new Error(
|
|
8536
|
+
`"paths" entry "${pattern}" looks absolute; patterns are project-root-relative \u2014 drop the leading slash / drive letter`
|
|
8537
|
+
);
|
|
8538
|
+
}
|
|
8539
|
+
const segments = normalized.split("/");
|
|
8540
|
+
if (segments.some((seg) => seg === "..")) {
|
|
8541
|
+
throw new Error(
|
|
8542
|
+
`"paths" entry "${pattern}" contains a ".." segment that escapes the project root; patterns must stay within the project`
|
|
8543
|
+
);
|
|
8544
|
+
}
|
|
8545
|
+
}
|
|
8546
|
+
return cleaned.length > 0 ? cleaned : void 0;
|
|
8547
|
+
}
|
|
8548
|
+
__name(parsePathsField, "parsePathsField");
|
|
8549
|
+
var SKILL_NAME_PATTERN = /^[\p{L}\p{N}_:.-]+$/u;
|
|
8550
|
+
function parseAllowedToolsField(frontmatter) {
|
|
8551
|
+
const raw = frontmatter["allowedTools"];
|
|
8552
|
+
if (raw == null) {
|
|
8553
|
+
return void 0;
|
|
8554
|
+
}
|
|
8555
|
+
if (!Array.isArray(raw)) {
|
|
8556
|
+
throw new Error('"allowedTools" must be an array');
|
|
8557
|
+
}
|
|
8558
|
+
return raw.map(String);
|
|
8559
|
+
}
|
|
8560
|
+
__name(parseAllowedToolsField, "parseAllowedToolsField");
|
|
8561
|
+
function validateSkillName(name) {
|
|
8562
|
+
if (!SKILL_NAME_PATTERN.test(name)) {
|
|
8563
|
+
throw new Error(
|
|
8564
|
+
`"name" must match ${SKILL_NAME_PATTERN} (letters, digits, _, :, ., -); got "${name}"`
|
|
8565
|
+
);
|
|
8566
|
+
}
|
|
8567
|
+
}
|
|
8568
|
+
__name(validateSkillName, "validateSkillName");
|
|
8569
|
+
function qualifySkillName(extensionName, authoredName) {
|
|
8570
|
+
return `${extensionName}:${authoredName}`;
|
|
8571
|
+
}
|
|
8572
|
+
__name(qualifySkillName, "qualifySkillName");
|
|
8573
|
+
function skillRestrictionNames(skill) {
|
|
8574
|
+
const { name, authoredName } = skill;
|
|
8575
|
+
const canonical = name.trim().toLowerCase();
|
|
8576
|
+
const authored = authoredName?.trim().toLowerCase();
|
|
8577
|
+
return authored && authored !== canonical ? [canonical, authored] : [canonical];
|
|
8578
|
+
}
|
|
8579
|
+
__name(skillRestrictionNames, "skillRestrictionNames");
|
|
8580
|
+
function authoredSkillName(skill) {
|
|
8581
|
+
return skill.authoredName ?? skill.name;
|
|
8582
|
+
}
|
|
8583
|
+
__name(authoredSkillName, "authoredSkillName");
|
|
8584
|
+
var SkillError = class extends Error {
|
|
8585
|
+
constructor(message, code, skillName) {
|
|
8586
|
+
super(message);
|
|
8587
|
+
this.code = code;
|
|
8588
|
+
this.skillName = skillName;
|
|
8589
|
+
this.name = "SkillError";
|
|
8590
|
+
}
|
|
8591
|
+
static {
|
|
8592
|
+
__name(this, "SkillError");
|
|
8593
|
+
}
|
|
8594
|
+
};
|
|
8595
|
+
var SkillErrorCode = {
|
|
8596
|
+
NOT_FOUND: "NOT_FOUND",
|
|
8597
|
+
INVALID_CONFIG: "INVALID_CONFIG",
|
|
8598
|
+
INVALID_NAME: "INVALID_NAME",
|
|
8599
|
+
FILE_ERROR: "FILE_ERROR",
|
|
8600
|
+
PARSE_ERROR: "PARSE_ERROR"
|
|
8601
|
+
};
|
|
8602
|
+
|
|
8492
8603
|
// packages/core/src/skills/skill-curator.ts
|
|
8493
8604
|
init_esbuild_shims();
|
|
8494
8605
|
var import_proper_lockfile = __toESM(require_proper_lockfile(), 1);
|
|
@@ -8733,102 +8844,6 @@ async function assertRealProjectSkillPath(targetPath, projectRoot) {
|
|
|
8733
8844
|
}
|
|
8734
8845
|
__name(assertRealProjectSkillPath, "assertRealProjectSkillPath");
|
|
8735
8846
|
|
|
8736
|
-
// packages/core/src/skills/types.ts
|
|
8737
|
-
init_esbuild_shims();
|
|
8738
|
-
function parseModelField(frontmatter) {
|
|
8739
|
-
const raw = frontmatter["model"];
|
|
8740
|
-
if (raw === void 0) {
|
|
8741
|
-
return void 0;
|
|
8742
|
-
}
|
|
8743
|
-
if (typeof raw !== "string") {
|
|
8744
|
-
throw new Error('"model" must be a string');
|
|
8745
|
-
}
|
|
8746
|
-
const trimmed = raw.trim();
|
|
8747
|
-
if (trimmed === "" || trimmed === "inherit") {
|
|
8748
|
-
return void 0;
|
|
8749
|
-
}
|
|
8750
|
-
return trimmed;
|
|
8751
|
-
}
|
|
8752
|
-
__name(parseModelField, "parseModelField");
|
|
8753
|
-
function parseUserInvocableField(frontmatter) {
|
|
8754
|
-
const raw = frontmatter["user-invocable"];
|
|
8755
|
-
if (raw === void 0) {
|
|
8756
|
-
return void 0;
|
|
8757
|
-
}
|
|
8758
|
-
if (raw === true || raw === "true") {
|
|
8759
|
-
return true;
|
|
8760
|
-
}
|
|
8761
|
-
if (raw === false || raw === "false") {
|
|
8762
|
-
return false;
|
|
8763
|
-
}
|
|
8764
|
-
return void 0;
|
|
8765
|
-
}
|
|
8766
|
-
__name(parseUserInvocableField, "parseUserInvocableField");
|
|
8767
|
-
function parsePathsField(frontmatter) {
|
|
8768
|
-
const raw = frontmatter["paths"];
|
|
8769
|
-
if (raw === void 0 || raw === null) {
|
|
8770
|
-
return void 0;
|
|
8771
|
-
}
|
|
8772
|
-
if (!Array.isArray(raw)) {
|
|
8773
|
-
throw new Error('"paths" must be an array of glob patterns');
|
|
8774
|
-
}
|
|
8775
|
-
const cleaned = raw.map((p) => String(p).trim()).filter((p) => p.length > 0);
|
|
8776
|
-
for (const pattern of cleaned) {
|
|
8777
|
-
const normalized = pattern.replace(/\\/g, "/");
|
|
8778
|
-
if (normalized.startsWith("/") || /^[A-Za-z]:/.test(normalized)) {
|
|
8779
|
-
throw new Error(
|
|
8780
|
-
`"paths" entry "${pattern}" looks absolute; patterns are project-root-relative \u2014 drop the leading slash / drive letter`
|
|
8781
|
-
);
|
|
8782
|
-
}
|
|
8783
|
-
const segments = normalized.split("/");
|
|
8784
|
-
if (segments.some((seg) => seg === "..")) {
|
|
8785
|
-
throw new Error(
|
|
8786
|
-
`"paths" entry "${pattern}" contains a ".." segment that escapes the project root; patterns must stay within the project`
|
|
8787
|
-
);
|
|
8788
|
-
}
|
|
8789
|
-
}
|
|
8790
|
-
return cleaned.length > 0 ? cleaned : void 0;
|
|
8791
|
-
}
|
|
8792
|
-
__name(parsePathsField, "parsePathsField");
|
|
8793
|
-
var SKILL_NAME_PATTERN = /^[\p{L}\p{N}_:.-]+$/u;
|
|
8794
|
-
function parseAllowedToolsField(frontmatter) {
|
|
8795
|
-
const raw = frontmatter["allowedTools"];
|
|
8796
|
-
if (raw == null) {
|
|
8797
|
-
return void 0;
|
|
8798
|
-
}
|
|
8799
|
-
if (!Array.isArray(raw)) {
|
|
8800
|
-
throw new Error('"allowedTools" must be an array');
|
|
8801
|
-
}
|
|
8802
|
-
return raw.map(String);
|
|
8803
|
-
}
|
|
8804
|
-
__name(parseAllowedToolsField, "parseAllowedToolsField");
|
|
8805
|
-
function validateSkillName(name) {
|
|
8806
|
-
if (!SKILL_NAME_PATTERN.test(name)) {
|
|
8807
|
-
throw new Error(
|
|
8808
|
-
`"name" must match ${SKILL_NAME_PATTERN} (letters, digits, _, :, ., -); got "${name}"`
|
|
8809
|
-
);
|
|
8810
|
-
}
|
|
8811
|
-
}
|
|
8812
|
-
__name(validateSkillName, "validateSkillName");
|
|
8813
|
-
var SkillError = class extends Error {
|
|
8814
|
-
constructor(message, code, skillName) {
|
|
8815
|
-
super(message);
|
|
8816
|
-
this.code = code;
|
|
8817
|
-
this.skillName = skillName;
|
|
8818
|
-
this.name = "SkillError";
|
|
8819
|
-
}
|
|
8820
|
-
static {
|
|
8821
|
-
__name(this, "SkillError");
|
|
8822
|
-
}
|
|
8823
|
-
};
|
|
8824
|
-
var SkillErrorCode = {
|
|
8825
|
-
NOT_FOUND: "NOT_FOUND",
|
|
8826
|
-
INVALID_CONFIG: "INVALID_CONFIG",
|
|
8827
|
-
INVALID_NAME: "INVALID_NAME",
|
|
8828
|
-
FILE_ERROR: "FILE_ERROR",
|
|
8829
|
-
PARSE_ERROR: "PARSE_ERROR"
|
|
8830
|
-
};
|
|
8831
|
-
|
|
8832
8847
|
// packages/core/src/skills/skill-curator.ts
|
|
8833
8848
|
var AUTO_SKILL_CURATOR_INTERVAL_MS = 7 * 24 * 60 * 60 * 1e3;
|
|
8834
8849
|
var AUTO_SKILL_STALE_AFTER_MS = 30 * 24 * 60 * 60 * 1e3;
|
|
@@ -9588,6 +9603,9 @@ export {
|
|
|
9588
9603
|
SKILL_NAME_PATTERN,
|
|
9589
9604
|
parseAllowedToolsField,
|
|
9590
9605
|
validateSkillName,
|
|
9606
|
+
qualifySkillName,
|
|
9607
|
+
skillRestrictionNames,
|
|
9608
|
+
authoredSkillName,
|
|
9591
9609
|
SkillError,
|
|
9592
9610
|
SkillErrorCode,
|
|
9593
9611
|
parse2 as parse,
|