@qwen-code/qwen-code 0.22.3-nightly.20260831.3a0c4c6108 → 0.23.0
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/README.md +30 -0
- package/bundled/computer-use/SKILL.md +116 -180
- package/bundled/goal-draft/SKILL.md +5 -1
- package/bundled/qc-helper/docs/configuration/model-providers.md +4 -0
- package/bundled/qc-helper/docs/configuration/settings.md +53 -50
- package/bundled/qc-helper/docs/features/_meta.ts +1 -0
- package/bundled/qc-helper/docs/features/channels/dingtalk.md +4 -2
- package/bundled/qc-helper/docs/features/channels/dws.md +6 -2
- package/bundled/qc-helper/docs/features/channels/overview.md +1 -0
- package/bundled/qc-helper/docs/features/commands.md +38 -1
- package/bundled/qc-helper/docs/features/computer-use.md +2 -2
- package/bundled/qc-helper/docs/features/goals.md +9 -3
- package/bundled/qc-helper/docs/features/headless.md +16 -1
- package/bundled/qc-helper/docs/features/hooks.md +2 -1
- package/bundled/qc-helper/docs/features/output-styles.md +38 -0
- package/bundled/qc-helper/docs/qwen-serve.md +15 -0
- package/bundled/review/SKILL.md +5 -5
- package/bundled/review/references/posting.md +2 -2
- package/chunks/{MaxSizedBox-IHRTWGSY.js → MaxSizedBox-B3D7545A.js} +41 -45
- package/chunks/{StandaloneSessionPicker-TLVWVTJ7.js → StandaloneSessionPicker-QUMO4LLQ.js} +64 -67
- package/chunks/{acpAgent-7I5LLPP3.js → acpAgent-2GTFCIEP.js} +771 -248
- package/chunks/{agent-4Z4NTJXD.js → agent-XKF5SZWU.js} +26 -30
- package/chunks/{agent-headless-TVUJXQWU.js → agent-headless-OC2IB55D.js} +26 -30
- package/chunks/{anthropicContentGenerator-VSSPG7XV.js → anthropicContentGenerator-L76MR5OR.js} +14 -14
- package/chunks/{artifact-tool-TEYW6I4A.js → artifact-tool-MYCL2QCS.js} +2 -3
- package/chunks/{askUserQuestion-PYNBWV63.js → askUserQuestion-THQZMG44.js} +2 -2
- package/chunks/{bridge-EVURP4NO.js → bridge-IHSBI2YJ.js} +42 -46
- package/chunks/{build-INBK7IXX.js → build-63BIOYWK.js} +1 -1
- package/chunks/{channel-management-service-IDBNYSFW.js → channel-management-service-4MTCEGJB.js} +4 -4
- package/chunks/{channel-settings-store-MZNXRKVI.js → channel-settings-store-BVKWAI2T.js} +50 -54
- package/chunks/{channel-worker-group-ZLP5SJHT.js → channel-worker-group-47F4ISUZ.js} +6 -6
- package/chunks/{channel-worker-manager-FG5377T2.js → channel-worker-manager-I5Y44GYR.js} +50 -9
- package/chunks/{channel-worker-supervisor-HDVE4ADS.js → channel-worker-supervisor-6VCLUXFE.js} +4 -4
- package/chunks/{chunk-3452WXOK.js → chunk-2M3EWQNG.js} +17 -0
- package/chunks/{chunk-HDMKCJHI.js → chunk-32LU3APX.js} +1 -1
- package/chunks/{chunk-BSJOBW4U.js → chunk-37JFWFCD.js} +1 -1
- package/chunks/{chunk-AN3KFCNH.js → chunk-3JQZVCBI.js} +2 -2
- package/chunks/{chunk-RGEV5AUD.js → chunk-3L724BJ5.js} +11 -8
- package/chunks/{chunk-GCUR24KK.js → chunk-47RYEQW5.js} +2 -2
- package/chunks/{chunk-CM4F4JBB.js → chunk-4BGDFKQE.js} +5 -5
- package/chunks/{chunk-ZBDYI7VM.js → chunk-4F7GQGXB.js} +10961 -4033
- package/chunks/{chunk-JMRE4WJQ.js → chunk-4HVH57J3.js} +81 -17
- package/chunks/{chunk-26SIKQIC.js → chunk-4LIFGNI4.js} +1 -1
- package/chunks/{chunk-U5RTYI7D.js → chunk-4M24B5J5.js} +13 -13
- package/chunks/{chunk-7XICSE62.js → chunk-4PSDSCW3.js} +3 -3
- package/chunks/{chunk-AYYKUUKP.js → chunk-4UANMABT.js} +73 -19
- package/chunks/{chunk-GS7XT345.js → chunk-54C6PIGT.js} +3 -3
- package/chunks/{chunk-UKB2TZAO.js → chunk-5EIOJGCR.js} +4 -4
- package/chunks/{chunk-64REQJJ2.js → chunk-5H5S4UY5.js} +3 -3
- package/chunks/chunk-5IENVM7Z.js +35 -0
- package/chunks/{chunk-JOWQD4LO.js → chunk-5Q5RC2WE.js} +1 -1
- package/chunks/{chunk-3NQCZMUB.js → chunk-5RTTI4GE.js} +73 -73
- package/chunks/{chunk-J4Y3QJHF.js → chunk-64QH2UC6.js} +11 -1
- package/chunks/{chunk-I75VKFCJ.js → chunk-65HWLGA7.js} +1 -1
- package/chunks/{chunk-W7KWB6AH.js → chunk-6A2D4QSO.js} +8 -5
- package/chunks/{chunk-OTTNXUT5.js → chunk-7IKXTGZT.js} +1 -1
- package/chunks/{chunk-LYSZVCCD.js → chunk-7JMGTOH7.js} +427 -129
- package/chunks/{chunk-YOFULAHO.js → chunk-7RB56BRJ.js} +3 -3
- package/chunks/{chunk-6VHIWUJP.js → chunk-ADYN7P2Y.js} +2 -2
- package/chunks/{chunk-7DDTI7Q3.js → chunk-AHYTURFB.js} +1 -1
- package/chunks/{chunk-TNMOFNT4.js → chunk-ALUYNJPM.js} +1395 -2079
- package/chunks/{chunk-H2A2GJGL.js → chunk-AZJLY2XZ.js} +5 -5
- package/chunks/{chunk-BE5FGT5Z.js → chunk-BA4WJC4L.js} +1 -1
- package/chunks/{chunk-H5GPPDGY.js → chunk-BFY33IB4.js} +16 -8
- package/chunks/{chunk-RY7DL5IF.js → chunk-BJXCYUGM.js} +1 -1
- package/chunks/{chunk-ND7TQQPE.js → chunk-C2VWOXHS.js} +6 -6
- package/chunks/{chunk-T4RMUTTT.js → chunk-C4TIXFDZ.js} +2 -2
- package/chunks/{chunk-B2RIIK3K.js → chunk-CVX63TFJ.js} +3 -1
- package/chunks/{chunk-SMJYTKTB.js → chunk-DQCKVAF5.js} +1 -1
- package/chunks/{chunk-RLSPPTWH.js → chunk-DSX7KQPM.js} +438 -181
- package/chunks/{chunk-PNIGAVY6.js → chunk-DTVQSSNM.js} +2 -2
- package/chunks/{chunk-67AY5D3M.js → chunk-DYTW3QVG.js} +23 -8
- package/chunks/{chunk-3CZGSTZX.js → chunk-EBDGRBZX.js} +22 -14
- package/chunks/{chunk-DJBQCO2E.js → chunk-EFTPIZIC.js} +412 -3
- package/chunks/{chunk-QE7DTCLX.js → chunk-EIY7SUPZ.js} +1 -1
- package/chunks/{chunk-6OO7QEWV.js → chunk-EVFDRBUM.js} +97 -77
- package/chunks/{chunk-QTMPM6RC.js → chunk-EWRW2WQC.js} +3 -3
- package/chunks/{chunk-IIFL7QDN.js → chunk-F33GFWPR.js} +34 -11
- package/chunks/{chunk-YPISTYEI.js → chunk-F47DITLZ.js} +11 -1
- package/chunks/{chunk-OE5AQVNB.js → chunk-F7NF2IOE.js} +6 -6
- package/chunks/{chunk-RT4QNQ5P.js → chunk-FD5SJOWT.js} +8 -5
- package/chunks/{chunk-ACZ4YRYK.js → chunk-FRICLXCZ.js} +3 -3
- package/chunks/{chunk-IBMUI5EV.js → chunk-FUO5V5KI.js} +11 -4
- package/chunks/{chunk-T3TL6S3B.js → chunk-G5PBOQWI.js} +8 -5
- package/chunks/{chunk-D7D3HSYQ.js → chunk-G7HBEEX7.js} +12 -7
- package/chunks/{chunk-FXUSWLBF.js → chunk-GH2S4GD5.js} +133 -8
- package/chunks/{chunk-XPDKSOVW.js → chunk-GXUTFQXK.js} +42 -44
- package/chunks/{chunk-OSTQZIOY.js → chunk-H43PSPYS.js} +2 -2
- package/chunks/{chunk-UVYKCRJZ.js → chunk-HJBHMANB.js} +11 -13
- package/chunks/{chunk-WLEYH7CD.js → chunk-HRPFBHW7.js} +4 -0
- package/chunks/{chunk-DBTMP3P4.js → chunk-I2TMJPCV.js} +1 -1
- package/chunks/{chunk-EU2B4P3D.js → chunk-I4NRYS6A.js} +4 -4
- package/chunks/{chunk-JPKTAQS3.js → chunk-I5N4EAS6.js} +1 -1
- package/chunks/{chunk-W4BDHLRT.js → chunk-IG4W5SJR.js} +2 -2
- package/chunks/{chunk-BXNKREX7.js → chunk-IPATA3T2.js} +2 -2
- package/chunks/{chunk-NKLP3DCK.js → chunk-IQAFKVXS.js} +1 -1
- package/chunks/{chunk-AYHQZBJ4.js → chunk-IRKQ4YYX.js} +3 -3
- package/chunks/{chunk-J3NNHTV6.js → chunk-J5TTWBZK.js} +6 -0
- package/chunks/{chunk-AVNATYLY.js → chunk-JJKNYRFY.js} +1 -1
- package/chunks/{chunk-ERHAMGAA.js → chunk-JR42V4UY.js} +1 -1
- package/chunks/{chunk-NT7LXVV5.js → chunk-JUARRUMA.js} +362 -1084
- package/chunks/{chunk-OKMDOATP.js → chunk-KEVYJSI4.js} +11 -11
- package/chunks/{chunk-AF3QB6OL.js → chunk-KGV55H53.js} +1 -1
- package/chunks/{chunk-SDCHI64N.js → chunk-KM3XVTMO.js} +10 -4
- package/chunks/{chunk-ERRJA23L.js → chunk-KMU3ZHH4.js} +1 -1
- package/chunks/chunk-KOGW3YWJ.js +2054 -0
- package/chunks/{chunk-6NWPR2EB.js → chunk-L26ONV2Y.js} +5 -5
- package/chunks/chunk-L34XSHIZ.js +28 -0
- package/chunks/{chunk-UXEW7TQS.js → chunk-LB3WQQJK.js} +1 -1
- package/chunks/{chunk-YNG7XAJU.js → chunk-LEPCWS5A.js} +1 -1
- package/chunks/{chunk-XLENZQXH.js → chunk-LHBNR6EU.js} +2 -2
- package/chunks/{chunk-AKNQMSL2.js → chunk-LOBDDFYK.js} +4 -28
- package/chunks/{chunk-L6CUJZDG.js → chunk-LU77UT4D.js} +2 -2
- package/chunks/{chunk-3EGEBDTW.js → chunk-M4KFODIP.js} +1 -1
- package/chunks/{chunk-JLSZT354.js → chunk-M4LBBSVP.js} +2 -0
- package/chunks/{chunk-YOMKOM7E.js → chunk-MP6YZ4RK.js} +6580 -5992
- package/chunks/chunk-N2TNM3QB.js +9 -0
- package/chunks/{chunk-GDXSXL3H.js → chunk-NFIDVZND.js} +1 -1
- package/chunks/{chunk-NT5XIL5H.js → chunk-NQ4L2CMD.js} +51 -6
- package/chunks/{chunk-OQYXJK2V.js → chunk-NRL5CUZT.js} +1 -1
- package/chunks/{chunk-FIWZOMBF.js → chunk-NSUKQ4DN.js} +6 -0
- package/chunks/chunk-NUHOLAQ6.js +59 -0
- package/chunks/{chunk-BBYTY46C.js → chunk-NVVJTUSL.js} +266 -105
- package/chunks/{chunk-CAZADEU7.js → chunk-NXKOVOM5.js} +9 -9
- package/chunks/{chunk-5Q372OFJ.js → chunk-O4KNCAX4.js} +57 -10
- package/chunks/{chunk-GOXKNSDZ.js → chunk-O5CD7T4T.js} +40 -9
- package/chunks/{chunk-XIQ5HQ2F.js → chunk-OBTWL6ZW.js} +1 -1
- package/chunks/{chunk-5MK45KZ3.js → chunk-OHOO527W.js} +1 -1
- package/chunks/{chunk-CETB5XY4.js → chunk-ORFIYTI2.js} +1 -1
- package/chunks/{chunk-7E7UCJHS.js → chunk-OSHQMOBS.js} +18 -17
- package/chunks/{chunk-YDQ4OCDK.js → chunk-OSSTATJF.js} +89 -1
- package/chunks/chunk-P6UIF2OW.js +400 -0
- package/chunks/{chunk-V4HN35IF.js → chunk-PCRBLMIN.js} +16 -2
- package/chunks/{chunk-L2OKAIUK.js → chunk-QI27MKNQ.js} +23 -15
- package/chunks/{chunk-FHPYRXRH.js → chunk-QJGYU5PG.js} +1 -1
- package/chunks/{chunk-IVUWTA2D.js → chunk-QJVZLILI.js} +1 -1
- package/chunks/{chunk-TBJ3SNS3.js → chunk-QKDNS6FU.js} +1 -1
- package/chunks/{chunk-YKADANK6.js → chunk-QQD2GART.js} +10 -3
- package/chunks/{chunk-ED7DD7MV.js → chunk-RAFQIHN2.js} +1 -1
- package/chunks/{chunk-TV7BJ7TX.js → chunk-RJUVTJEZ.js} +1 -1
- package/chunks/{chunk-RVCGAHC7.js → chunk-RM4WT2XB.js} +4 -4
- package/chunks/{chunk-6YXNJXQW.js → chunk-RN3YGDCA.js} +3 -3
- package/chunks/{chunk-SMRDCANI.js → chunk-S6H3ELPG.js} +1 -1
- package/chunks/{chunk-MBZ5ORJB.js → chunk-SI7WDR3U.js} +281 -2
- package/chunks/{chunk-5FGWVPCM.js → chunk-SRF4KTAG.js} +4 -4
- package/chunks/{chunk-LFAR7CPW.js → chunk-STCVJXQB.js} +23 -23
- package/chunks/{chunk-JDIO45X7.js → chunk-SULZPKTA.js} +1 -1
- package/chunks/{chunk-KUDI54QQ.js → chunk-SX2QIMJV.js} +5 -5
- package/chunks/{chunk-VYSZUQGU.js → chunk-TJYRTS4S.js} +2 -2
- package/chunks/{chunk-JOTYTYYW.js → chunk-TMKTOTMQ.js} +3 -3
- package/chunks/{chunk-FPMQT2YY.js → chunk-TQHPVKO6.js} +4 -4
- package/chunks/{chunk-GN422P4J.js → chunk-TSZSGQ3N.js} +1 -1
- package/chunks/{chunk-IXEZHTDR.js → chunk-U4DJ5XB3.js} +292 -38
- package/chunks/{chunk-MZ5A5PQW.js → chunk-UAKRDON5.js} +4 -4
- package/chunks/{chunk-NGKLMNWN.js → chunk-UM2FFKXN.js} +2 -2
- package/chunks/{chunk-5ICKESC3.js → chunk-UPFRILIL.js} +2 -2
- package/chunks/{chunk-RAEEQEC5.js → chunk-UUASLXHW.js} +54 -5
- package/chunks/chunk-V5U2NZNJ.js +29 -0
- package/chunks/{chunk-P5Y23G2L.js → chunk-V7RNNPGC.js} +1 -18
- package/chunks/{chunk-ZYPJ7HVZ.js → chunk-VBWD6C27.js} +1 -1
- package/chunks/{chunk-MJBHSZEJ.js → chunk-VNAYZAFX.js} +3 -3
- package/chunks/chunk-VPSIC437.js +780 -0
- package/chunks/{chunk-AAX236AR.js → chunk-VWTSRH6C.js} +52 -11
- package/chunks/{chunk-PDXYZBBQ.js → chunk-VYIUNFEA.js} +2 -2
- package/chunks/{chunk-BY24DZ4J.js → chunk-WP4AX3XD.js} +5 -7
- package/chunks/{chunk-X7C7KFWA.js → chunk-XLXAZLDR.js} +1 -1
- package/chunks/{chunk-ZQ3FKEWA.js → chunk-YPWZTR7F.js} +3 -3
- package/chunks/{chunk-IXHV5MIC.js → chunk-ZDFQGHZH.js} +1 -1
- package/chunks/chunk-ZJ2LM2SI.js +198 -0
- package/chunks/{chunk-PWR2NQBS.js → chunk-ZKFTS3OV.js} +3 -3
- package/chunks/{chunk-HMJ2P3SV.js → chunk-ZL4HFSL6.js} +91 -29
- package/chunks/{chunk-ID33ZRWH.js → chunk-ZTPGUFQV.js} +28 -6
- package/chunks/chunk-bdqvmfwv-ZTSOWAFE.js +17446 -0
- package/chunks/{config-utils-NNUPVGEC.js → config-utils-LVSYDLHZ.js} +42 -46
- package/chunks/{contextCommand-S3TPCDM5.js → contextCommand-TZD7UAJK.js} +40 -44
- package/chunks/{core-runtime-NASPCSQX.js → core-runtime-B4UKKIAQ.js} +42 -46
- package/chunks/{create-sub-session-36TNCHCP.js → create-sub-session-LUPWEUHR.js} +2 -2
- package/chunks/{create-sub-session-DS4BJLYZ.js → create-sub-session-NJ24B4US.js} +41 -44
- package/chunks/{cron-create-QXHTYUTO.js → cron-create-CRSPET3H.js} +1 -1
- package/chunks/{cron-delete-WV2BM42M.js → cron-delete-DB77SZTU.js} +1 -1
- package/chunks/{cron-list-7KVNBLZ7.js → cron-list-U2JNYWV6.js} +1 -1
- package/chunks/{daemon-UCVUHPJD.js → daemon-RKDGBFLK.js} +385 -19
- package/chunks/{daemon-git-worktree-guard-ATXVQPS3.js → daemon-git-worktree-guard-O2HPOBAB.js} +40 -44
- package/chunks/{daemon-status-provider-UI3GBTMO.js → daemon-status-provider-GRRVCJFW.js} +47 -51
- package/chunks/{daemon-trust-policy-SUCBJ2CA.js → daemon-trust-policy-YJL442BK.js} +46 -50
- package/chunks/{daemon-trust-policy-monitor-3LM5RQNS.js → daemon-trust-policy-monitor-JL7F4Y4Q.js} +46 -50
- package/chunks/{deferred-core-runtime-SCOJLVYG.js → deferred-core-runtime-S32AYVZI.js} +39 -43
- package/chunks/{devtools-JCG4K2NZ.js → devtools-VDRJYPZF.js} +1 -1
- package/chunks/{discovery-X2NV535U.js → discovery-TUM3ZQ6U.js} +2 -2
- package/chunks/{display-image-Z4VBQDEJ.js → display-image-73C7XNRK.js} +3 -3
- package/chunks/{dist-7WDZYMWV.js → dist-62OZ7QXB.js} +2 -2
- package/chunks/{dist-FLJLHASF.js → dist-EDHQIBYD.js} +7 -7
- package/chunks/{dist-S3BKCTWF.js → dist-GT64AAUR.js} +1 -1
- package/chunks/{dist-GPSRNVVP.js → dist-JVXT4VUJ.js} +2 -2
- package/chunks/{dist-LY66XNUL.js → dist-L6URO6CK.js} +3 -3
- package/chunks/{dist-5423MG3D.js → dist-LXFYIJNG.js} +734 -128
- package/chunks/{dist-SDKHGH5O.js → dist-PDGNRVPY.js} +4 -4
- package/chunks/{dist-WAUO5OMN.js → dist-QAF5DO3Y.js} +363 -73
- package/chunks/{dist-WIVVPE7M.js → dist-ZCJLKQSP.js} +1 -1
- package/chunks/{earlyInputCapture-INWJ2STR.js → earlyInputCapture-BBPCIVZG.js} +38 -42
- package/chunks/{edit-B7ZRRGAE.js → edit-SUGXY63Y.js} +26 -30
- package/chunks/{en-E4AYTX6H.js → en-2RATMNX7.js} +2 -0
- package/chunks/{enter-worktree-SPZHEETQ.js → enter-worktree-B6USKSIK.js} +5 -5
- package/chunks/{enterPlanMode-S554IKJ2.js → enterPlanMode-MDX4RVVL.js} +26 -30
- package/chunks/{environment-25ADH4Y6.js → environment-VN6RXDVN.js} +41 -45
- package/chunks/{errors-G2I6LFTW.js → errors-UEY36PIT.js} +40 -44
- package/chunks/{exit-worktree-AWUXAMAM.js → exit-worktree-DLQ73SJH.js} +8 -6
- package/chunks/{exitPlanMode-ZFH4OYPM.js → exitPlanMode-EPHIEDAA.js} +26 -30
- package/chunks/{fast-path-WZHVZ2ER.js → fast-path-Y73R42LV.js} +3 -3
- package/chunks/{fast-path-settings-NILM6QZL.js → fast-path-settings-MFUR3IWK.js} +3 -3
- package/chunks/{glob-UOVDMBUP.js → glob-DMGH7EZN.js} +27 -31
- package/chunks/goal-tools-3RF3PXCL.js +99 -0
- package/chunks/{grep-LHYJ5V2N.js → grep-AJVLCVXC.js} +2 -2
- package/chunks/{handleAutoUpdate-4MZ45DZY.js → handleAutoUpdate-HVWQT2AU.js} +42 -46
- package/chunks/{i18n-KWUEI4DS.js → i18n-5OR7NTRZ.js} +39 -43
- package/chunks/{image-gen-YZDVO5YS.js → image-gen-VOIDOHOB.js} +1 -1
- package/chunks/{initializer-2NBROGMG.js → initializer-JE5RQSOE.js} +46 -50
- package/chunks/{installationInfo-YKUSY3ZB.js → installationInfo-KO3CCSCK.js} +38 -42
- package/chunks/{list-W2WV3COM.js → list-3IORSFIY.js} +49 -53
- package/chunks/{list-agents-PMVMHNY7.js → list-agents-SBMONIUK.js} +3 -3
- package/chunks/{llm-NPPHLIJI.js → llm-K26SUDVK.js} +155 -99
- package/chunks/{llm-content-generator-YK3WN6XW.js → llm-content-generator-TT6EAUD4.js} +5 -6
- package/chunks/{loadedSettingsAdapter-2P7DFWUR.js → loadedSettingsAdapter-KLLFZF3M.js} +46 -50
- package/chunks/{loggingContentGenerator-QYYYGU6V.js → loggingContentGenerator-EYQBA4M4.js} +43 -47
- package/chunks/{loop-wakeup-EBM4F5MZ.js → loop-wakeup-QA6SHCZT.js} +2 -2
- package/chunks/{ls-F6TRX3DD.js → ls-HEJNCEYO.js} +1 -1
- package/chunks/{lsp-QYTOS2FI.js → lsp-WOQKNZP6.js} +1 -1
- package/chunks/{managed-npm-update-UMC4NBWW.js → managed-npm-update-HIJTODQT.js} +38 -42
- package/chunks/{mcp-OFI6XDP2.js → mcp-A2UEHETW.js} +46 -50
- package/chunks/{monitor-QX3BM3JY.js → monitor-DKNZQAB2.js} +28 -32
- package/chunks/{node-QKLNSZMX.js → node-UETAYMMO.js} +3 -3
- package/chunks/{nonInteractiveCli-NVRMD5MN.js → nonInteractiveCli-YA47F2F4.js} +86 -89
- package/chunks/{notebook-edit-AAILDPSV.js → notebook-edit-MGHTRL2D.js} +26 -30
- package/chunks/{openaiContentGenerator-53PB3CMN.js → openaiContentGenerator-ZJIEQ3ZJ.js} +15 -17
- package/chunks/{pidfile-5ACKG2LI.js → pidfile-ETHAZNMY.js} +38 -42
- package/chunks/{processUtils-2BCDO3DZ.js → processUtils-UY3SAJJZ.js} +2 -2
- package/chunks/{prompt-terminal-ledger-3RKW73A2.js → prompt-terminal-ledger-GZ747VYE.js} +39 -43
- package/chunks/{qwenContentGenerator-N4LLWDPH.js → qwenContentGenerator-VI4KATRY.js} +39 -43
- package/chunks/{read-file-DPAKXHYE.js → read-file-P7F4P7LV.js} +6 -8
- package/chunks/{read-mcp-resource-R4NO75DW.js → read-mcp-resource-GLAGB6R7.js} +1 -1
- package/chunks/{record-artifact-2EAYLAL5.js → record-artifact-SWVR7NSU.js} +3 -3
- package/chunks/renderer-selection-M4UN63VJ.js +99 -0
- package/chunks/{report-findings-Y4MSHDS3.js → report-findings-AL5YW3KI.js} +4 -4
- package/chunks/{request-shutdown-DWRMGTMB.js → request-shutdown-5YK4IZ54.js} +5 -5
- package/chunks/{resumeHistoryUtils-3JQORXAK.js → resumeHistoryUtils-DPZKFW24.js} +44 -48
- package/chunks/{ripGrep-AHF5QCI7.js → ripGrep-C7LJKUPZ.js} +9 -11
- package/chunks/{run-qwen-serve-3LKV7KDC.js → run-qwen-serve-OGTEEUR2.js} +132 -81
- package/chunks/{runtime-66F4W3IA.js → runtime-LNBLEMZS.js} +51 -55
- package/chunks/{scheduled-tasks-2NVKS5Q2.js → scheduled-tasks-FLDYZQOF.js} +44 -48
- package/chunks/{scheduler-JNV7T3ZO.js → scheduler-73YXGUGW.js} +40 -44
- package/chunks/{sdk-exporters-grpc-G5IT4XS4.js → sdk-exporters-grpc-MXTVSE3C.js} +2 -2
- package/chunks/{sdk-exporters-http-MFIWD23D.js → sdk-exporters-http-3JO5TJNU.js} +3 -3
- package/chunks/{sdk-impl-2RXJ4Q6X.js → sdk-impl-HZAUUTHJ.js} +5 -5
- package/chunks/{send-message-WPZRCJOB.js → send-message-JC7NJTY6.js} +7 -7
- package/chunks/{serve-GP2UNRP7.js → serve-3UR2H4CV.js} +46 -50
- package/chunks/{server-7W6C3SOW.js → server-AOYZVVOM.js} +1736 -502
- package/chunks/{session-PZLBAQGG.js → session-UAWFNFGI.js} +90 -93
- package/chunks/session-attachments-root-ZCGXQQTR.js +104 -0
- package/chunks/{session-pr-refresh-OIVL3U3Z.js → session-pr-refresh-CT2INROL.js} +131 -65
- package/chunks/{settings-ZOHIQWYK.js → settings-BHRGDASJ.js} +45 -49
- package/chunks/{shell-FWZT6IUR.js → shell-YHOGC7TO.js} +26 -30
- package/chunks/{skill-RTQC2YGA.js → skill-ZGBKNCHQ.js} +71 -49
- package/chunks/{skill-settings-AKMIXFSJ.js → skill-settings-AKSP665O.js} +45 -49
- package/chunks/{spawnChannel-ZP23JL6O.js → spawnChannel-N25MBB6F.js} +40 -44
- package/chunks/{standalone-update-P2Q5H4ZU.js → standalone-update-XGPWJDRN.js} +40 -44
- package/chunks/start-opentui-ui-FZ4USOU7.js +55342 -0
- package/chunks/{startInteractiveUI-NSA6QPQZ.js → startInteractiveUI-E2WQJUOA.js} +2920 -4542
- package/chunks/{syntheticOutput-5URSQLIS.js → syntheticOutput-HJNZSEHN.js} +2 -2
- package/chunks/{task-create-3EXVDG3G.js → task-create-6RSD54S5.js} +7 -7
- package/chunks/{task-list-PIBYNSE7.js → task-list-IQSACPOM.js} +31 -7
- package/chunks/{task-stop-IV3BYWJC.js → task-stop-HE2LRQNW.js} +1 -1
- package/chunks/{task-update-H5BPDS5Y.js → task-update-XAJ2NYOA.js} +7 -7
- package/chunks/{team-create-53T42W37.js → team-create-SOKMYSQU.js} +28 -32
- package/chunks/{team-delete-X3WPELS6.js → team-delete-NGNNKGMG.js} +1 -1
- package/chunks/{team-plan-approval-D45ZC5OE.js → team-plan-approval-U7ZWXYAY.js} +26 -30
- package/chunks/{terminal-image-renderer-FCRUWT6C.js → terminal-image-renderer-KKM4OBLO.js} +40 -44
- package/chunks/{theme-manager-MHNPEDP7.js → theme-manager-GQHF3A7T.js} +38 -42
- package/chunks/{todoWrite-A5IOZZ3P.js → todoWrite-5UTVUXHA.js} +36 -6
- package/chunks/{tool-search-6RPBGGUX.js → tool-search-IAI2RVWT.js} +10 -12
- package/chunks/{total-session-admission-MGV56XDK.js → total-session-admission-G4CGCSTG.js} +43 -47
- package/chunks/{trustedFolders-QJYEFMTU.js → trustedFolders-D2I3FDPB.js} +39 -43
- package/chunks/{update-relaunch-ZDMQX63C.js → update-relaunch-5RWKZAL3.js} +5 -5
- package/chunks/{updateCheck-4QZWCGP6.js → updateCheck-ZXOQDFEI.js} +42 -46
- package/chunks/{useAutoAcceptIndicator-DLIQN256.js → useAutoAcceptIndicator-6EK4QGAH.js} +49 -53
- package/chunks/{validateNonInterActiveAuth-HGTG7AEK.js → validateNonInterActiveAuth-QPFEKATS.js} +82 -86
- package/chunks/{version-CPAZMC4B.js → version-JKNG7YDH.js} +1 -1
- package/chunks/{web-fetch-N4K5M3M4.js → web-fetch-X3AHIIHW.js} +8 -11
- package/chunks/{web-search-4VZKM5SF.js → web-search-K2FMOGS5.js} +6 -7
- package/chunks/{web-shell-static-PW7OEDQO.js → web-shell-static-POZHGGXE.js} +4 -4
- package/chunks/{workflow-2ALQKTHG.js → workflow-TOLPAK5G.js} +38 -38
- package/chunks/{workspace-providers-status-5JM4CB6R.js → workspace-providers-status-PCJK3RC7.js} +50 -54
- package/chunks/{workspace-registration-store-RNMFVCH7.js → workspace-registration-store-KQWVVW4Y.js} +1 -1
- package/chunks/{workspace-registry-6EULAPZC.js → workspace-registry-YNIOB6HJ.js} +43 -47
- package/chunks/{workspace-runtime-coordinator-IRI2DRCJ.js → workspace-runtime-coordinator-WG2RNEN7.js} +43 -47
- package/chunks/{workspace-service-SETHN4WE.js → workspace-service-G4ZNBOFH.js} +51 -55
- package/chunks/{workspace-skills-status-4D4EUEQU.js → workspace-skills-status-FMTPPMWC.js} +47 -51
- package/chunks/{workspace-trust-reconciler-4LR3CDL4.js → workspace-trust-reconciler-IBDFQBQS.js} +53 -57
- package/chunks/wrapper-JH3IFHT2.js +35 -0
- package/chunks/{write-file-45GWPSOI.js → write-file-YTLFY2S5.js} +28 -32
- package/chunks/{zh-2BQ7P6OD.js → zh-25DF7OGK.js} +2 -0
- package/chunks/{zh-TW-UFXRZTXX.js → zh-TW-5EDMZVGK.js} +2 -0
- package/chunks/{zoom-image-K6IQUKRC.js → zoom-image-IFXSN74N.js} +6 -8
- package/cli.js +17 -13
- package/locales/en.js +3 -0
- package/locales/zh-TW.js +3 -0
- package/locales/zh.js +3 -0
- package/package.json +3 -3
- package/web-shell/assets/{abnfDiagram-VCTEODGH-C80OZcPP.js → abnfDiagram-VCTEODGH-Cxf7xE_Z.js} +1 -1
- package/web-shell/assets/{arc-AUqStYgf.js → arc-ESi1eNkE.js} +1 -1
- package/web-shell/assets/{architectureDiagram-5GKGNRK7-CQYOdYla.js → architectureDiagram-5GKGNRK7-D9l7-bDo.js} +1 -1
- package/web-shell/assets/{blockDiagram-NRAW4CY4-lYKlFysy.js → blockDiagram-NRAW4CY4-Bc8DEasw.js} +1 -1
- package/web-shell/assets/{c4Diagram-UCG6FXSJ-BoS23iIp.js → c4Diagram-UCG6FXSJ-Dimb2Hmh.js} +1 -1
- package/web-shell/assets/channel-B7ohGDil.js +1 -0
- package/web-shell/assets/{chunk-2Q5K7J3B-DLLooL1E.js → chunk-2Q5K7J3B-jVDmOpAQ.js} +1 -1
- package/web-shell/assets/{chunk-5VM5RSS4-kPfJxScY.js → chunk-5VM5RSS4-DbG_SwdB.js} +1 -1
- package/web-shell/assets/{chunk-F27PBJKO-CVGFBqkD.js → chunk-F27PBJKO-QEc4cY1v.js} +1 -1
- package/web-shell/assets/{chunk-G27WJ6UU-CnM_kOVV.js → chunk-G27WJ6UU-iJ36lQ3X.js} +1 -1
- package/web-shell/assets/{chunk-JWPE2WC7-Cj-ajOkT.js → chunk-JWPE2WC7-DuArnVtF.js} +1 -1
- package/web-shell/assets/{chunk-LCL6LL3I-8L5c-wFo.js → chunk-LCL6LL3I-DxOf1zwL.js} +1 -1
- package/web-shell/assets/{chunk-POPQ4Y6H-DsXTxpvL.js → chunk-POPQ4Y6H-lVLu9Ild.js} +1 -1
- package/web-shell/assets/{chunk-SVP7TREG-DU5GE1_z.js → chunk-SVP7TREG-C6XYlIer.js} +1 -1
- package/web-shell/assets/{chunk-XXDRQBXY-D2IIWZKt.js → chunk-XXDRQBXY-CiG2j2Ji.js} +1 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-DdFpqpfD.js +1 -0
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-DdFpqpfD.js +1 -0
- package/web-shell/assets/{cose-bilkent-JH36ORCC-CF_txUJr.js → cose-bilkent-JH36ORCC-DGVHMMVm.js} +1 -1
- package/web-shell/assets/{cynefin-OW5HDTMX-DEZ-My-Z.js → cynefin-OW5HDTMX-D6cgpCnH.js} +1 -1
- package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-BV7EKUS6.js → cynefinDiagram-5FMLGOSQ-BKv4Z-UX.js} +1 -1
- package/web-shell/assets/{dagre-3AP2YEHR-JGIX0G4H.js → dagre-3AP2YEHR-B4ABMIG-.js} +1 -1
- package/web-shell/assets/{diagram-S7CK7UJ4-DdUY7q6A.js → diagram-S7CK7UJ4-DgCkp_Lm.js} +1 -1
- package/web-shell/assets/{diagram-UQ7AKVKN-fhzRZ19v.js → diagram-UQ7AKVKN-FG0FNokz.js} +1 -1
- package/web-shell/assets/{diagram-VSXAHHWV-BOgOex6q.js → diagram-VSXAHHWV-JgkP9qg-.js} +1 -1
- package/web-shell/assets/{diagram-VX7I27RA-C0NknIz6.js → diagram-VX7I27RA-ADh2x83l.js} +1 -1
- package/web-shell/assets/{diagram-Z3DM3KII-C__3mUBX.js → diagram-Z3DM3KII-yXqoYF1J.js} +1 -1
- package/web-shell/assets/{ebnfDiagram-PWID7BFC-BvPhqycH.js → ebnfDiagram-PWID7BFC-Duk83Ek_.js} +1 -1
- package/web-shell/assets/{erDiagram-SSCWMZ5O-BqzoNoL9.js → erDiagram-SSCWMZ5O-DMdvxySG.js} +1 -1
- package/web-shell/assets/{flowDiagram-A5DVABFB-CJKOre47.js → flowDiagram-A5DVABFB-DHjVgSji.js} +1 -1
- package/web-shell/assets/{ganttDiagram-EL5Y4UJY-C5xZjrp0.js → ganttDiagram-EL5Y4UJY-DMM9DkCE.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-C0EjwuPK.js → gitGraphDiagram-WWUBYQGX-t_ug9vO8.js} +1 -1
- package/web-shell/assets/index-BGZRqbRo.css +36 -0
- package/web-shell/assets/index-DRri_6_x.js +2067 -0
- package/web-shell/assets/{index-C5M93syE.js → index-zqvnpGHv.js} +1 -1
- package/web-shell/assets/{infoDiagram-RXCK75RN-BUwzsYOs.js → infoDiagram-RXCK75RN-eT1fANNm.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-5VMMS53U-EDJ_DH3V.js → ishikawaDiagram-5VMMS53U-k3evzZNn.js} +1 -1
- package/web-shell/assets/{journeyDiagram-EYS64GPL-BnfcOsS0.js → journeyDiagram-EYS64GPL-CGim3EAi.js} +1 -1
- package/web-shell/assets/{kanban-definition-3QL26DDD-D_ofTVGu.js → kanban-definition-3QL26DDD-WHfJo-22.js} +1 -1
- package/web-shell/assets/{layout-CBuQFdfZ.js → layout-DkqIaFlJ.js} +1 -1
- package/web-shell/assets/{linear-DRIHtmGv.js → linear-Bdkd3mCz.js} +1 -1
- package/web-shell/assets/{mermaid.core-CmR5wZH6.js → mermaid.core-CGw0LkT_.js} +6 -6
- package/web-shell/assets/{mindmap-definition-FBJOCRG2-BV374olC.js → mindmap-definition-FBJOCRG2-C9V4rBvo.js} +1 -1
- package/web-shell/assets/{pegDiagram-XKGWAZYB-Bpy1SplK.js → pegDiagram-XKGWAZYB-CwoI2T5G.js} +1 -1
- package/web-shell/assets/{pieDiagram-E7YTZNPT-CeZx4hR2.js → pieDiagram-E7YTZNPT-DaTmBmPG.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-AXDQQJYC-COYKs14h.js → quadrantDiagram-AXDQQJYC-plh6MyGI.js} +1 -1
- package/web-shell/assets/{railroadDiagram-O6MQD6OU-5g2pOeTs.js → railroadDiagram-O6MQD6OU-D_b-S0iK.js} +1 -1
- package/web-shell/assets/{requirementDiagram-EFPCY7ZU-Yn8uPGtF.js → requirementDiagram-EFPCY7ZU-zUzTN7VE.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-P5KCCOFB-CTayAGq6.js → sankeyDiagram-P5KCCOFB-m6AhoD0l.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-BFWDKzUU.js → sequenceDiagram-WJ2MYXX4-Cwhzsine.js} +1 -1
- package/web-shell/assets/{sizeCapture-X5ZJPWSS-CtErUbj4.js → sizeCapture-X5ZJPWSS-CcZuKIae.js} +1 -1
- package/web-shell/assets/{stateDiagram-HBIQ2CUA-Co3HFzOd.js → stateDiagram-HBIQ2CUA-CFoiJwD_.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V--H8HdEmk.js +1 -0
- package/web-shell/assets/{swimlanes-XN3QIQJK-CDZuxzOj.js → swimlanes-XN3QIQJK-CgS9hcaV.js} +1 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-ShE9OIgf.js +8 -0
- package/web-shell/assets/{timeline-definition-24CTP7MA-UcNHj8At.js → timeline-definition-24CTP7MA-Dzzc05t9.js} +1 -1
- package/web-shell/assets/{vennDiagram-4TSXK5OY-JKR9pVFG.js → vennDiagram-4TSXK5OY-DemK0f7Y.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-VM6X3IG4-C4SU-yIW.js → wardleyDiagram-VM6X3IG4-CquLxtMr.js} +1 -1
- package/web-shell/assets/{xychartDiagram-S5SC5T6Z-D_yoWGZ4.js → xychartDiagram-S5SC5T6Z-BTBKTM5g.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/chunk-4P7PPAHN.js +0 -3097
- package/chunks/chunk-7J6OTNGO.js +0 -424
- package/chunks/chunk-LMMHS3RS.js +0 -135
- package/chunks/chunk-MZYWNU66.js +0 -149
- package/chunks/chunk-T4EFG2P5.js +0 -113
- package/chunks/chunk-XZA32HII.js +0 -19
- package/chunks/goal-tools-7TNK5ZHC.js +0 -411
- package/web-shell/assets/channel-B0ovOJeK.js +0 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-DMll2-6_.js +0 -1
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-DMll2-6_.js +0 -1
- package/web-shell/assets/index-B_IPzA0h.js +0 -2020
- package/web-shell/assets/index-D1OKGQlM.css +0 -36
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-C3gdRjPm.js +0 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-C34TGCPZ.js +0 -8
- /package/chunks/{chunk-FOGQO4FG.js → chunk-JA5CBKRP.js} +0 -0
|
@@ -0,0 +1,780 @@
|
|
|
1
|
+
// Force strict mode and setup for ESM
|
|
2
|
+
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
ICON
|
|
5
|
+
} from "./chunk-HJBHMANB.js";
|
|
6
|
+
import {
|
|
7
|
+
theme
|
|
8
|
+
} from "./chunk-PDAKFU7M.js";
|
|
9
|
+
import {
|
|
10
|
+
require_jsx_runtime
|
|
11
|
+
} from "./chunk-SV5PQVQE.js";
|
|
12
|
+
import {
|
|
13
|
+
require_react
|
|
14
|
+
} from "./chunk-5QWWOFGG.js";
|
|
15
|
+
import {
|
|
16
|
+
sanitizeForOsc,
|
|
17
|
+
wrapForMultiplexer
|
|
18
|
+
} from "./chunk-3AKCBZVW.js";
|
|
19
|
+
import {
|
|
20
|
+
uiTelemetryService
|
|
21
|
+
} from "./chunk-GH2S4GD5.js";
|
|
22
|
+
import {
|
|
23
|
+
ToolDisplayNames,
|
|
24
|
+
ToolNames
|
|
25
|
+
} from "./chunk-7JMGTOH7.js";
|
|
26
|
+
import {
|
|
27
|
+
init_esbuild_shims
|
|
28
|
+
} from "./chunk-5O2XNYP6.js";
|
|
29
|
+
import {
|
|
30
|
+
__name,
|
|
31
|
+
__toESM
|
|
32
|
+
} from "./chunk-J2S4EL5Y.js";
|
|
33
|
+
|
|
34
|
+
// packages/cli/src/ui/contexts/SessionContext.tsx
|
|
35
|
+
init_esbuild_shims();
|
|
36
|
+
var import_react = __toESM(require_react(), 1);
|
|
37
|
+
var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
|
|
38
|
+
var EMPTY_SKILL_METRICS = {
|
|
39
|
+
totalCalls: 0,
|
|
40
|
+
totalSuccess: 0,
|
|
41
|
+
totalFail: 0,
|
|
42
|
+
byName: {}
|
|
43
|
+
};
|
|
44
|
+
function areModelMetricsCoreEqual(a, b) {
|
|
45
|
+
if (a.api.totalRequests !== b.api.totalRequests || a.api.totalErrors !== b.api.totalErrors || a.api.totalLatencyMs !== b.api.totalLatencyMs) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
if (a.tokens.prompt !== b.tokens.prompt || a.tokens.candidates !== b.tokens.candidates || a.tokens.total !== b.tokens.total || a.tokens.cached !== b.tokens.cached || a.tokens.thoughts !== b.tokens.thoughts) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
__name(areModelMetricsCoreEqual, "areModelMetricsCoreEqual");
|
|
54
|
+
function areModelMetricsEqual(a, b) {
|
|
55
|
+
if (!areModelMetricsCoreEqual(a, b)) return false;
|
|
56
|
+
const aKeys = Object.keys(a.bySource);
|
|
57
|
+
const bKeys = Object.keys(b.bySource);
|
|
58
|
+
if (aKeys.length !== bKeys.length) return false;
|
|
59
|
+
for (const key of aKeys) {
|
|
60
|
+
const aSource = a.bySource[key];
|
|
61
|
+
const bSource = b.bySource[key];
|
|
62
|
+
if (!bSource || !areModelMetricsCoreEqual(aSource, bSource)) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
__name(areModelMetricsEqual, "areModelMetricsEqual");
|
|
69
|
+
function areToolCallStatsEqual(a, b) {
|
|
70
|
+
if (a.count !== b.count || a.success !== b.success || a.fail !== b.fail || a.durationMs !== b.durationMs) {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
if (a.decisions["accept" /* ACCEPT */] !== b.decisions["accept" /* ACCEPT */] || a.decisions["reject" /* REJECT */] !== b.decisions["reject" /* REJECT */] || a.decisions["modify" /* MODIFY */] !== b.decisions["modify" /* MODIFY */] || a.decisions["auto_accept" /* AUTO_ACCEPT */] !== b.decisions["auto_accept" /* AUTO_ACCEPT */]) {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
__name(areToolCallStatsEqual, "areToolCallStatsEqual");
|
|
79
|
+
function areSkillCallStatsEqual(a, b) {
|
|
80
|
+
return a.count === b.count && a.success === b.success && a.fail === b.fail;
|
|
81
|
+
}
|
|
82
|
+
__name(areSkillCallStatsEqual, "areSkillCallStatsEqual");
|
|
83
|
+
function areSkillMetricsEqual(a, b) {
|
|
84
|
+
if (a.totalCalls !== b.totalCalls || a.totalSuccess !== b.totalSuccess || a.totalFail !== b.totalFail) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
const aKeys = Object.keys(a.byName);
|
|
88
|
+
const bKeys = Object.keys(b.byName);
|
|
89
|
+
if (aKeys.length !== bKeys.length) return false;
|
|
90
|
+
for (const key of aKeys) {
|
|
91
|
+
const skillA = a.byName[key];
|
|
92
|
+
const skillB = b.byName[key];
|
|
93
|
+
if (!skillB || !areSkillCallStatsEqual(skillA, skillB)) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
__name(areSkillMetricsEqual, "areSkillMetricsEqual");
|
|
100
|
+
function areGenerationMetricsEqual(a, b) {
|
|
101
|
+
if (a === b) return true;
|
|
102
|
+
if (!a || !b) return false;
|
|
103
|
+
if (a.timedRequests !== b.timedRequests || a.totalTtftMs !== b.totalTtftMs || a.totalGenerationDurationMs !== b.totalGenerationDurationMs || a.totalThroughputOutputTokens !== b.totalThroughputOutputTokens) {
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
if (a.last === b.last) return true;
|
|
107
|
+
if (!a.last || !b.last) return false;
|
|
108
|
+
return a.last.model === b.last.model && a.last.ttftMs === b.last.ttftMs && a.last.generationDurationMs === b.last.generationDurationMs && a.last.outputTokens === b.last.outputTokens;
|
|
109
|
+
}
|
|
110
|
+
__name(areGenerationMetricsEqual, "areGenerationMetricsEqual");
|
|
111
|
+
function areMetricsEqual(a, b) {
|
|
112
|
+
if (a === b) return true;
|
|
113
|
+
if (!a || !b) return false;
|
|
114
|
+
if (!areGenerationMetricsEqual(a.generation, b.generation)) {
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
if (a.files.totalLinesAdded !== b.files.totalLinesAdded || a.files.totalLinesRemoved !== b.files.totalLinesRemoved) {
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
const toolsA = a.tools;
|
|
121
|
+
const toolsB = b.tools;
|
|
122
|
+
if (toolsA.totalCalls !== toolsB.totalCalls || toolsA.totalSuccess !== toolsB.totalSuccess || toolsA.totalFail !== toolsB.totalFail || toolsA.totalDurationMs !== toolsB.totalDurationMs) {
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
if (toolsA.totalDecisions["accept" /* ACCEPT */] !== toolsB.totalDecisions["accept" /* ACCEPT */] || toolsA.totalDecisions["reject" /* REJECT */] !== toolsB.totalDecisions["reject" /* REJECT */] || toolsA.totalDecisions["modify" /* MODIFY */] !== toolsB.totalDecisions["modify" /* MODIFY */] || toolsA.totalDecisions["auto_accept" /* AUTO_ACCEPT */] !== toolsB.totalDecisions["auto_accept" /* AUTO_ACCEPT */]) {
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
const toolsByNameAKeys = Object.keys(toolsA.byName);
|
|
129
|
+
const toolsByNameBKeys = Object.keys(toolsB.byName);
|
|
130
|
+
if (toolsByNameAKeys.length !== toolsByNameBKeys.length) return false;
|
|
131
|
+
for (const key of toolsByNameAKeys) {
|
|
132
|
+
const toolA = toolsA.byName[key];
|
|
133
|
+
const toolB = toolsB.byName[key];
|
|
134
|
+
if (!toolB || !areToolCallStatsEqual(toolA, toolB)) {
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
if (!areSkillMetricsEqual(
|
|
139
|
+
a.skills ?? EMPTY_SKILL_METRICS,
|
|
140
|
+
b.skills ?? EMPTY_SKILL_METRICS
|
|
141
|
+
)) {
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
const modelsAKeys = Object.keys(a.models);
|
|
145
|
+
const modelsBKeys = Object.keys(b.models);
|
|
146
|
+
if (modelsAKeys.length !== modelsBKeys.length) return false;
|
|
147
|
+
for (const key of modelsAKeys) {
|
|
148
|
+
if (!b.models[key] || !areModelMetricsEqual(a.models[key], b.models[key])) {
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return true;
|
|
153
|
+
}
|
|
154
|
+
__name(areMetricsEqual, "areMetricsEqual");
|
|
155
|
+
function cloneSessionMetrics(metrics) {
|
|
156
|
+
return {
|
|
157
|
+
models: Object.fromEntries(
|
|
158
|
+
Object.entries(metrics.models).map(([name, model]) => [
|
|
159
|
+
name,
|
|
160
|
+
{
|
|
161
|
+
api: { ...model.api },
|
|
162
|
+
tokens: { ...model.tokens },
|
|
163
|
+
bySource: Object.fromEntries(
|
|
164
|
+
Object.entries(model.bySource).map(([source, sourceMetrics]) => [
|
|
165
|
+
source,
|
|
166
|
+
{
|
|
167
|
+
api: { ...sourceMetrics.api },
|
|
168
|
+
tokens: { ...sourceMetrics.tokens }
|
|
169
|
+
}
|
|
170
|
+
])
|
|
171
|
+
)
|
|
172
|
+
}
|
|
173
|
+
])
|
|
174
|
+
),
|
|
175
|
+
...metrics.generation ? {
|
|
176
|
+
generation: {
|
|
177
|
+
timedRequests: metrics.generation.timedRequests,
|
|
178
|
+
totalTtftMs: metrics.generation.totalTtftMs,
|
|
179
|
+
totalGenerationDurationMs: metrics.generation.totalGenerationDurationMs,
|
|
180
|
+
totalThroughputOutputTokens: metrics.generation.totalThroughputOutputTokens,
|
|
181
|
+
...metrics.generation.last ? { last: { ...metrics.generation.last } } : {}
|
|
182
|
+
}
|
|
183
|
+
} : {},
|
|
184
|
+
tools: {
|
|
185
|
+
totalCalls: metrics.tools.totalCalls,
|
|
186
|
+
totalSuccess: metrics.tools.totalSuccess,
|
|
187
|
+
totalFail: metrics.tools.totalFail,
|
|
188
|
+
totalDurationMs: metrics.tools.totalDurationMs,
|
|
189
|
+
totalDecisions: { ...metrics.tools.totalDecisions },
|
|
190
|
+
byName: Object.fromEntries(
|
|
191
|
+
Object.entries(metrics.tools.byName).map(([name, stats]) => [
|
|
192
|
+
name,
|
|
193
|
+
{
|
|
194
|
+
count: stats.count,
|
|
195
|
+
success: stats.success,
|
|
196
|
+
fail: stats.fail,
|
|
197
|
+
durationMs: stats.durationMs,
|
|
198
|
+
decisions: { ...stats.decisions }
|
|
199
|
+
}
|
|
200
|
+
])
|
|
201
|
+
)
|
|
202
|
+
},
|
|
203
|
+
files: {
|
|
204
|
+
totalLinesAdded: metrics.files.totalLinesAdded,
|
|
205
|
+
totalLinesRemoved: metrics.files.totalLinesRemoved
|
|
206
|
+
},
|
|
207
|
+
...metrics.skills ? {
|
|
208
|
+
skills: {
|
|
209
|
+
totalCalls: metrics.skills.totalCalls,
|
|
210
|
+
totalSuccess: metrics.skills.totalSuccess,
|
|
211
|
+
totalFail: metrics.skills.totalFail,
|
|
212
|
+
byName: Object.fromEntries(
|
|
213
|
+
Object.entries(metrics.skills.byName).map(([name, stats]) => [
|
|
214
|
+
name,
|
|
215
|
+
{
|
|
216
|
+
count: stats.count,
|
|
217
|
+
success: stats.success,
|
|
218
|
+
fail: stats.fail
|
|
219
|
+
}
|
|
220
|
+
])
|
|
221
|
+
)
|
|
222
|
+
}
|
|
223
|
+
} : {}
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
__name(cloneSessionMetrics, "cloneSessionMetrics");
|
|
227
|
+
function getMetricsForDisplay(sessionId) {
|
|
228
|
+
return cloneSessionMetrics(
|
|
229
|
+
sessionId ? uiTelemetryService.getMetricsForSession(sessionId) : uiTelemetryService.getMetrics()
|
|
230
|
+
);
|
|
231
|
+
}
|
|
232
|
+
__name(getMetricsForDisplay, "getMetricsForDisplay");
|
|
233
|
+
var SessionStatsContext = (0, import_react.createContext)(
|
|
234
|
+
void 0
|
|
235
|
+
);
|
|
236
|
+
var createDefaultStats = /* @__PURE__ */ __name((sessionId = "") => ({
|
|
237
|
+
sessionId,
|
|
238
|
+
sessionStartTime: /* @__PURE__ */ new Date(),
|
|
239
|
+
metrics: getMetricsForDisplay(sessionId),
|
|
240
|
+
lastPromptTokenCount: 0,
|
|
241
|
+
promptCount: 0
|
|
242
|
+
}), "createDefaultStats");
|
|
243
|
+
var SessionStatsProvider = /* @__PURE__ */ __name(({ sessionId, children }) => {
|
|
244
|
+
const [stats, setStats] = (0, import_react.useState)(
|
|
245
|
+
() => createDefaultStats(sessionId ?? "")
|
|
246
|
+
);
|
|
247
|
+
(0, import_react.useEffect)(() => {
|
|
248
|
+
const handleUpdate = /* @__PURE__ */ __name(({
|
|
249
|
+
metrics,
|
|
250
|
+
lastPromptTokenCount
|
|
251
|
+
}) => {
|
|
252
|
+
setStats((prevState) => {
|
|
253
|
+
const nextMetrics = prevState.sessionId ? getMetricsForDisplay(prevState.sessionId) : cloneSessionMetrics(metrics);
|
|
254
|
+
if (prevState.lastPromptTokenCount === lastPromptTokenCount && areMetricsEqual(prevState.metrics, nextMetrics)) {
|
|
255
|
+
return prevState;
|
|
256
|
+
}
|
|
257
|
+
return {
|
|
258
|
+
...prevState,
|
|
259
|
+
metrics: nextMetrics,
|
|
260
|
+
lastPromptTokenCount
|
|
261
|
+
};
|
|
262
|
+
});
|
|
263
|
+
}, "handleUpdate");
|
|
264
|
+
uiTelemetryService.on("update", handleUpdate);
|
|
265
|
+
handleUpdate({
|
|
266
|
+
metrics: uiTelemetryService.getMetrics(),
|
|
267
|
+
lastPromptTokenCount: uiTelemetryService.getLastPromptTokenCount()
|
|
268
|
+
});
|
|
269
|
+
return () => {
|
|
270
|
+
uiTelemetryService.off("update", handleUpdate);
|
|
271
|
+
};
|
|
272
|
+
}, []);
|
|
273
|
+
const startNewSession = (0, import_react.useCallback)((sessionId2) => {
|
|
274
|
+
setStats(() => ({
|
|
275
|
+
...createDefaultStats(sessionId2),
|
|
276
|
+
lastPromptTokenCount: uiTelemetryService.getLastPromptTokenCount()
|
|
277
|
+
}));
|
|
278
|
+
}, []);
|
|
279
|
+
const startNewPrompt = (0, import_react.useCallback)(() => {
|
|
280
|
+
setStats((prevState) => ({
|
|
281
|
+
...prevState,
|
|
282
|
+
promptCount: prevState.promptCount + 1
|
|
283
|
+
}));
|
|
284
|
+
}, []);
|
|
285
|
+
const getPromptCount = (0, import_react.useCallback)(
|
|
286
|
+
() => stats.promptCount,
|
|
287
|
+
[stats.promptCount]
|
|
288
|
+
);
|
|
289
|
+
const seedPromptCount = (0, import_react.useCallback)((count) => {
|
|
290
|
+
setStats((prevState) => ({
|
|
291
|
+
...prevState,
|
|
292
|
+
promptCount: Math.max(prevState.promptCount, count)
|
|
293
|
+
}));
|
|
294
|
+
}, []);
|
|
295
|
+
const value = (0, import_react.useMemo)(
|
|
296
|
+
() => ({
|
|
297
|
+
stats,
|
|
298
|
+
startNewSession,
|
|
299
|
+
startNewPrompt,
|
|
300
|
+
getPromptCount,
|
|
301
|
+
seedPromptCount
|
|
302
|
+
}),
|
|
303
|
+
[stats, startNewSession, startNewPrompt, getPromptCount, seedPromptCount]
|
|
304
|
+
);
|
|
305
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SessionStatsContext.Provider, { value, children });
|
|
306
|
+
}, "SessionStatsProvider");
|
|
307
|
+
var useSessionStats = /* @__PURE__ */ __name(() => {
|
|
308
|
+
const context = (0, import_react.useContext)(SessionStatsContext);
|
|
309
|
+
if (context === void 0) {
|
|
310
|
+
throw new Error(
|
|
311
|
+
"useSessionStats must be used within a SessionStatsProvider"
|
|
312
|
+
);
|
|
313
|
+
}
|
|
314
|
+
return context;
|
|
315
|
+
}, "useSessionStats");
|
|
316
|
+
|
|
317
|
+
// packages/cli/src/ui/utils/osc8.ts
|
|
318
|
+
init_esbuild_shims();
|
|
319
|
+
function osc8Open(url) {
|
|
320
|
+
return wrapForMultiplexer(`\x1B]8;;${sanitizeForOsc(url)}\x07`);
|
|
321
|
+
}
|
|
322
|
+
__name(osc8Open, "osc8Open");
|
|
323
|
+
function osc8Close() {
|
|
324
|
+
return wrapForMultiplexer(`\x1B]8;;\x07`);
|
|
325
|
+
}
|
|
326
|
+
__name(osc8Close, "osc8Close");
|
|
327
|
+
var SAFE_OSC8_SCHEMES = /* @__PURE__ */ new Set([
|
|
328
|
+
"http:",
|
|
329
|
+
"https:",
|
|
330
|
+
"mailto:",
|
|
331
|
+
"ftp:",
|
|
332
|
+
"ftps:",
|
|
333
|
+
"sftp:",
|
|
334
|
+
"ssh:"
|
|
335
|
+
]);
|
|
336
|
+
function isSafeOscScheme(url) {
|
|
337
|
+
const match = url.match(/^([a-z][a-z0-9+.-]*:)/i);
|
|
338
|
+
if (!match) return false;
|
|
339
|
+
return SAFE_OSC8_SCHEMES.has(match[1].toLowerCase());
|
|
340
|
+
}
|
|
341
|
+
__name(isSafeOscScheme, "isSafeOscScheme");
|
|
342
|
+
var BARE_URL_BREAK_CHARACTERS = String.raw`\u3001-\u3004\u3008-\u3020\u302e-\u3030\u3036-\u3037\u303d-\u303f\uff01-\uff0f\uff1a-\uff20\uff3b-\uff40\uff5b-\uff65\ufe10-\ufe1f\ufe30-\ufe32\ufe35-\ufe6f`;
|
|
343
|
+
var BARE_URL_BREAK_PATTERN = new RegExp(`[${BARE_URL_BREAK_CHARACTERS}]`);
|
|
344
|
+
function trimTrailingUrlPunctuation(url, nextCharacter = "") {
|
|
345
|
+
let openParen = 0;
|
|
346
|
+
let openBracket = 0;
|
|
347
|
+
let openBrace = 0;
|
|
348
|
+
let closeParen = 0;
|
|
349
|
+
let closeBracket = 0;
|
|
350
|
+
let closeBrace = 0;
|
|
351
|
+
for (let i = 0; i < url.length; i++) {
|
|
352
|
+
const cc = url.charCodeAt(i);
|
|
353
|
+
if (cc === 40) openParen++;
|
|
354
|
+
else if (cc === 91) openBracket++;
|
|
355
|
+
else if (cc === 123) openBrace++;
|
|
356
|
+
else if (cc === 41) closeParen++;
|
|
357
|
+
else if (cc === 93) closeBracket++;
|
|
358
|
+
else if (cc === 125) closeBrace++;
|
|
359
|
+
}
|
|
360
|
+
let end = url.length;
|
|
361
|
+
if (url.charCodeAt(end - 1) === 95 && BARE_URL_BREAK_PATTERN.test(nextCharacter)) {
|
|
362
|
+
end--;
|
|
363
|
+
}
|
|
364
|
+
while (end > 0) {
|
|
365
|
+
const c = url.charCodeAt(end - 1);
|
|
366
|
+
if (c === 46 || c === 44 || c === 59 || c === 58 || c === 33 || c === 63 || c === 39 || c === 34 || c === 96 || c === 62) {
|
|
367
|
+
end--;
|
|
368
|
+
continue;
|
|
369
|
+
}
|
|
370
|
+
if (c === 41 && closeParen > openParen) {
|
|
371
|
+
closeParen--;
|
|
372
|
+
end--;
|
|
373
|
+
continue;
|
|
374
|
+
}
|
|
375
|
+
if (c === 93 && closeBracket > openBracket) {
|
|
376
|
+
closeBracket--;
|
|
377
|
+
end--;
|
|
378
|
+
continue;
|
|
379
|
+
}
|
|
380
|
+
if (c === 125 && closeBrace > openBrace) {
|
|
381
|
+
closeBrace--;
|
|
382
|
+
end--;
|
|
383
|
+
continue;
|
|
384
|
+
}
|
|
385
|
+
break;
|
|
386
|
+
}
|
|
387
|
+
return url.slice(0, end);
|
|
388
|
+
}
|
|
389
|
+
__name(trimTrailingUrlPunctuation, "trimTrailingUrlPunctuation");
|
|
390
|
+
var MD_LINK_PATTERN = String.raw`\[.*?\]\((?:[^()]|\([^()]*\))*\)`;
|
|
391
|
+
var MD_LINK_CAPTURE = /^\[(.*?)\]\(((?:[^()]|\([^()]*\))*)\)$/;
|
|
392
|
+
var BARE_URL_PATTERN = String.raw`https?:\/\/[^\s${BARE_URL_BREAK_CHARACTERS}]+`;
|
|
393
|
+
function shouldWrapMarkdownLink(url, canHyperlink) {
|
|
394
|
+
return canHyperlink && isSafeOscScheme(url) && !/\s/.test(url);
|
|
395
|
+
}
|
|
396
|
+
__name(shouldWrapMarkdownLink, "shouldWrapMarkdownLink");
|
|
397
|
+
var HOST_LIKE_RE = /\b[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?)*\.[a-z]{2,}\b/gi;
|
|
398
|
+
var IPV4_LIKE_RE = /\b(?:\d{1,3}\.){3}\d{1,3}\b/g;
|
|
399
|
+
function targetHostname(url) {
|
|
400
|
+
try {
|
|
401
|
+
const u = new URL(url);
|
|
402
|
+
if (u.protocol === "mailto:") {
|
|
403
|
+
const at = u.pathname.lastIndexOf("@");
|
|
404
|
+
return at >= 0 ? u.pathname.slice(at + 1).toLowerCase() || void 0 : void 0;
|
|
405
|
+
}
|
|
406
|
+
return u.hostname.toLowerCase() || void 0;
|
|
407
|
+
} catch {
|
|
408
|
+
return void 0;
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
__name(targetHostname, "targetHostname");
|
|
412
|
+
function labelMayDeceive(label, url) {
|
|
413
|
+
if (label === url) return false;
|
|
414
|
+
if (/:\/\//.test(label) || /^[a-z][a-z0-9+.-]*:/i.test(label.trim())) {
|
|
415
|
+
return true;
|
|
416
|
+
}
|
|
417
|
+
const lower = label.toLowerCase();
|
|
418
|
+
const labelHosts = [
|
|
419
|
+
...lower.match(HOST_LIKE_RE) ?? [],
|
|
420
|
+
...lower.match(IPV4_LIKE_RE) ?? []
|
|
421
|
+
];
|
|
422
|
+
if (labelHosts.length === 0) return false;
|
|
423
|
+
const target = targetHostname(url);
|
|
424
|
+
if (!target) return true;
|
|
425
|
+
return labelHosts.some((h) => h !== target);
|
|
426
|
+
}
|
|
427
|
+
__name(labelMayDeceive, "labelMayDeceive");
|
|
428
|
+
|
|
429
|
+
// packages/cli/src/ui/keyMatchers.ts
|
|
430
|
+
init_esbuild_shims();
|
|
431
|
+
|
|
432
|
+
// packages/cli/src/config/keyBindings.ts
|
|
433
|
+
init_esbuild_shims();
|
|
434
|
+
var Command = /* @__PURE__ */ ((Command2) => {
|
|
435
|
+
Command2["RETURN"] = "return";
|
|
436
|
+
Command2["ESCAPE"] = "escape";
|
|
437
|
+
Command2["HOME"] = "home";
|
|
438
|
+
Command2["END"] = "end";
|
|
439
|
+
Command2["KILL_LINE_RIGHT"] = "killLineRight";
|
|
440
|
+
Command2["KILL_LINE_LEFT"] = "killLineLeft";
|
|
441
|
+
Command2["CLEAR_INPUT"] = "clearInput";
|
|
442
|
+
Command2["DELETE_WORD_BACKWARD"] = "deleteWordBackward";
|
|
443
|
+
Command2["CLEAR_SCREEN"] = "clearScreen";
|
|
444
|
+
Command2["HISTORY_UP"] = "historyUp";
|
|
445
|
+
Command2["HISTORY_DOWN"] = "historyDown";
|
|
446
|
+
Command2["NAVIGATION_UP"] = "navigationUp";
|
|
447
|
+
Command2["NAVIGATION_DOWN"] = "navigationDown";
|
|
448
|
+
Command2["SELECTION_UP"] = "selectionUp";
|
|
449
|
+
Command2["SELECTION_DOWN"] = "selectionDown";
|
|
450
|
+
Command2["ACCEPT_SUGGESTION"] = "acceptSuggestion";
|
|
451
|
+
Command2["COMPLETION_UP"] = "completionUp";
|
|
452
|
+
Command2["COMPLETION_DOWN"] = "completionDown";
|
|
453
|
+
Command2["COMPLETION_TAB_LEFT"] = "completionTabLeft";
|
|
454
|
+
Command2["COMPLETION_TAB_RIGHT"] = "completionTabRight";
|
|
455
|
+
Command2["SUBMIT"] = "submit";
|
|
456
|
+
Command2["QUEUE_MESSAGE"] = "queueMessage";
|
|
457
|
+
Command2["NEWLINE"] = "newline";
|
|
458
|
+
Command2["VOICE_PUSH_TO_TALK"] = "voicePushToTalk";
|
|
459
|
+
Command2["OPEN_EXTERNAL_EDITOR"] = "openExternalEditor";
|
|
460
|
+
Command2["PASTE_CLIPBOARD_IMAGE"] = "pasteClipboardImage";
|
|
461
|
+
Command2["TOGGLE_TOOL_DESCRIPTIONS"] = "toggleToolDescriptions";
|
|
462
|
+
Command2["TOGGLE_IDE_CONTEXT_DETAIL"] = "toggleIDEContextDetail";
|
|
463
|
+
Command2["QUIT"] = "quit";
|
|
464
|
+
Command2["EXIT"] = "exit";
|
|
465
|
+
Command2["SHOW_MORE_LINES"] = "showMoreLines";
|
|
466
|
+
Command2["RETRY_LAST"] = "retryLast";
|
|
467
|
+
Command2["TOGGLE_RENDER_MODE"] = "toggleRenderMode";
|
|
468
|
+
Command2["PROMOTE_SHELL_TO_BACKGROUND"] = "promoteShellToBackground";
|
|
469
|
+
Command2["REVERSE_SEARCH"] = "reverseSearch";
|
|
470
|
+
Command2["SUBMIT_REVERSE_SEARCH"] = "submitReverseSearch";
|
|
471
|
+
Command2["ACCEPT_SUGGESTION_REVERSE_SEARCH"] = "acceptSuggestionReverseSearch";
|
|
472
|
+
Command2["TOGGLE_SHELL_INPUT_FOCUS"] = "toggleShellInputFocus";
|
|
473
|
+
Command2["EXPAND_SUGGESTION"] = "expandSuggestion";
|
|
474
|
+
Command2["COLLAPSE_SUGGESTION"] = "collapseSuggestion";
|
|
475
|
+
Command2["TOGGLE_THINKING_EXPANDED"] = "toggleThinkingExpanded";
|
|
476
|
+
Command2["SCROLL_UP"] = "scrollUp";
|
|
477
|
+
Command2["SCROLL_DOWN"] = "scrollDown";
|
|
478
|
+
Command2["PAGE_UP"] = "pageUp";
|
|
479
|
+
Command2["PAGE_DOWN"] = "pageDown";
|
|
480
|
+
Command2["SCROLL_HOME"] = "scrollHome";
|
|
481
|
+
Command2["SCROLL_END"] = "scrollEnd";
|
|
482
|
+
return Command2;
|
|
483
|
+
})(Command || {});
|
|
484
|
+
var defaultKeyBindings = {
|
|
485
|
+
// Basic bindings
|
|
486
|
+
["return" /* RETURN */]: [{ key: "return" }],
|
|
487
|
+
["escape" /* ESCAPE */]: [{ key: "escape" }],
|
|
488
|
+
// Cursor movement
|
|
489
|
+
["home" /* HOME */]: [{ key: "a", ctrl: true }],
|
|
490
|
+
["end" /* END */]: [{ key: "e", ctrl: true }],
|
|
491
|
+
// Text deletion
|
|
492
|
+
["killLineRight" /* KILL_LINE_RIGHT */]: [{ key: "k", ctrl: true }],
|
|
493
|
+
["killLineLeft" /* KILL_LINE_LEFT */]: [{ key: "u", ctrl: true }],
|
|
494
|
+
["clearInput" /* CLEAR_INPUT */]: [{ key: "c", ctrl: true, shift: false }],
|
|
495
|
+
// Added command (meta/alt/option) for mac compatibility
|
|
496
|
+
["deleteWordBackward" /* DELETE_WORD_BACKWARD */]: [
|
|
497
|
+
{ key: "backspace", ctrl: true },
|
|
498
|
+
{ key: "backspace", command: true },
|
|
499
|
+
// MinTTY (Git Bash on Windows) emits the byte \x1f (ASCII Unit
|
|
500
|
+
// Separator, rendered as "^_" by `cat -v`) for Ctrl+Backspace under
|
|
501
|
+
// its standard Ctrl-modifies-meta-keys convention. The same byte is
|
|
502
|
+
// the historical Ctrl-mapping of the Unit Separator on traditional
|
|
503
|
+
// ANSI/VT terminals (Ctrl+_ and Ctrl+/ also emit it), but qwen-code
|
|
504
|
+
// doesn't bind those keystrokes elsewhere so this entry is additive
|
|
505
|
+
// and non-conflicting on every platform.
|
|
506
|
+
{ sequence: "" }
|
|
507
|
+
],
|
|
508
|
+
// Screen control
|
|
509
|
+
["clearScreen" /* CLEAR_SCREEN */]: [{ key: "l", ctrl: true }],
|
|
510
|
+
// History navigation
|
|
511
|
+
["historyUp" /* HISTORY_UP */]: [{ key: "p", ctrl: true }],
|
|
512
|
+
["historyDown" /* HISTORY_DOWN */]: [{ key: "n", ctrl: true }],
|
|
513
|
+
["navigationUp" /* NAVIGATION_UP */]: [{ key: "up", shift: false }],
|
|
514
|
+
["navigationDown" /* NAVIGATION_DOWN */]: [{ key: "down", shift: false }],
|
|
515
|
+
// Selection-list nav: arrows + k/j + Ctrl+P/Ctrl+N
|
|
516
|
+
// ctrl: false on bare k/j skips Ctrl+K and Ctrl+J
|
|
517
|
+
["selectionUp" /* SELECTION_UP */]: [
|
|
518
|
+
{ key: "up", shift: false },
|
|
519
|
+
{ key: "k", ctrl: false },
|
|
520
|
+
{ key: "p", ctrl: true }
|
|
521
|
+
],
|
|
522
|
+
["selectionDown" /* SELECTION_DOWN */]: [
|
|
523
|
+
{ key: "down", shift: false },
|
|
524
|
+
{ key: "j", ctrl: false },
|
|
525
|
+
{ key: "n", ctrl: true }
|
|
526
|
+
],
|
|
527
|
+
// Auto-completion
|
|
528
|
+
["acceptSuggestion" /* ACCEPT_SUGGESTION */]: [
|
|
529
|
+
{ key: "tab" },
|
|
530
|
+
{ key: "return", ctrl: false, shift: false }
|
|
531
|
+
],
|
|
532
|
+
// Completion navigation: arrows + readline/Vim-style Ctrl+P/Ctrl+N
|
|
533
|
+
["completionUp" /* COMPLETION_UP */]: [
|
|
534
|
+
{ key: "up", shift: false },
|
|
535
|
+
{ key: "p", ctrl: true }
|
|
536
|
+
],
|
|
537
|
+
["completionDown" /* COMPLETION_DOWN */]: [
|
|
538
|
+
{ key: "down", shift: false },
|
|
539
|
+
{ key: "n", ctrl: true }
|
|
540
|
+
],
|
|
541
|
+
// Completion category tab switching (for the tabbed @ completion UI).
|
|
542
|
+
// Bound to the BARE arrow keys: Ctrl+←/→ was the original binding but many
|
|
543
|
+
// terminals intercept it for word-jump, and on macOS the system claims it
|
|
544
|
+
// for Mission Control, so the documented gesture was unreachable for most
|
|
545
|
+
// users (#8069).
|
|
546
|
+
//
|
|
547
|
+
// Tradeoff, accepted deliberately: while the `@` category tabs are visible,
|
|
548
|
+
// the bare arrows no longer move the caret in the input buffer — press Esc
|
|
549
|
+
// to dismiss the menu first. InputPrompt only renders and handles the tabs
|
|
550
|
+
// when they own the arrows, so search and attachment navigation keep their
|
|
551
|
+
// normal behavior.
|
|
552
|
+
//
|
|
553
|
+
// Modifiers are pinned false so Alt/Option+arrow word movement and any
|
|
554
|
+
// Ctrl+arrow terminal binding fall through untouched.
|
|
555
|
+
["completionTabLeft" /* COMPLETION_TAB_LEFT */]: [
|
|
556
|
+
{ key: "left", shift: false, ctrl: false, meta: false }
|
|
557
|
+
],
|
|
558
|
+
["completionTabRight" /* COMPLETION_TAB_RIGHT */]: [
|
|
559
|
+
{ key: "right", shift: false, ctrl: false, meta: false }
|
|
560
|
+
],
|
|
561
|
+
// Text input
|
|
562
|
+
// Must also exclude shift to allow shift+enter for newline
|
|
563
|
+
["submit" /* SUBMIT */]: [
|
|
564
|
+
{
|
|
565
|
+
key: "return",
|
|
566
|
+
ctrl: false,
|
|
567
|
+
command: false,
|
|
568
|
+
paste: false,
|
|
569
|
+
shift: false
|
|
570
|
+
}
|
|
571
|
+
],
|
|
572
|
+
["queueMessage" /* QUEUE_MESSAGE */]: [
|
|
573
|
+
{ key: "q", ctrl: true, command: false, shift: false, paste: false }
|
|
574
|
+
],
|
|
575
|
+
// Split into multiple data-driven bindings
|
|
576
|
+
// Now also includes shift+enter for multi-line input
|
|
577
|
+
["newline" /* NEWLINE */]: [
|
|
578
|
+
{ key: "return", ctrl: true },
|
|
579
|
+
{ key: "return", command: true },
|
|
580
|
+
{ key: "return", paste: true },
|
|
581
|
+
{ key: "return", shift: true },
|
|
582
|
+
{ key: "j", ctrl: true }
|
|
583
|
+
],
|
|
584
|
+
["voicePushToTalk" /* VOICE_PUSH_TO_TALK */]: [{ key: "space", ctrl: false, meta: false }],
|
|
585
|
+
// External tools
|
|
586
|
+
["openExternalEditor" /* OPEN_EXTERNAL_EDITOR */]: [
|
|
587
|
+
{ key: "x", ctrl: true },
|
|
588
|
+
{ sequence: "", ctrl: true }
|
|
589
|
+
],
|
|
590
|
+
["pasteClipboardImage" /* PASTE_CLIPBOARD_IMAGE */]: process.platform === "win32" ? [
|
|
591
|
+
{ key: "v", command: true },
|
|
592
|
+
{ key: "v", meta: true }
|
|
593
|
+
] : [
|
|
594
|
+
{ key: "v", ctrl: true },
|
|
595
|
+
{ key: "v", command: true }
|
|
596
|
+
],
|
|
597
|
+
// App level bindings
|
|
598
|
+
["toggleToolDescriptions" /* TOGGLE_TOOL_DESCRIPTIONS */]: [{ key: "t", ctrl: true }],
|
|
599
|
+
["toggleIDEContextDetail" /* TOGGLE_IDE_CONTEXT_DETAIL */]: [{ key: "g", ctrl: true }],
|
|
600
|
+
["quit" /* QUIT */]: [{ key: "c", ctrl: true, shift: false }],
|
|
601
|
+
["exit" /* EXIT */]: [{ key: "d", ctrl: true }],
|
|
602
|
+
["showMoreLines" /* SHOW_MORE_LINES */]: [{ key: "s", ctrl: true }],
|
|
603
|
+
["retryLast" /* RETRY_LAST */]: [{ key: "y", ctrl: true }],
|
|
604
|
+
["toggleRenderMode" /* TOGGLE_RENDER_MODE */]: [{ key: "m", meta: true }],
|
|
605
|
+
["promoteShellToBackground" /* PROMOTE_SHELL_TO_BACKGROUND */]: [{ key: "b", ctrl: true }],
|
|
606
|
+
// Shell commands
|
|
607
|
+
["reverseSearch" /* REVERSE_SEARCH */]: [{ key: "r", ctrl: true }],
|
|
608
|
+
// Note: original logic ONLY checked ctrl=false, ignored meta/shift/paste
|
|
609
|
+
["submitReverseSearch" /* SUBMIT_REVERSE_SEARCH */]: [{ key: "return", ctrl: false }],
|
|
610
|
+
["acceptSuggestionReverseSearch" /* ACCEPT_SUGGESTION_REVERSE_SEARCH */]: [{ key: "tab" }],
|
|
611
|
+
["toggleShellInputFocus" /* TOGGLE_SHELL_INPUT_FOCUS */]: [{ key: "f", ctrl: true }],
|
|
612
|
+
// Suggestion expansion
|
|
613
|
+
["expandSuggestion" /* EXPAND_SUGGESTION */]: [{ key: "right" }],
|
|
614
|
+
["collapseSuggestion" /* COLLAPSE_SUGGESTION */]: [{ key: "left" }],
|
|
615
|
+
// Thinking expansion (Ctrl+O primary, Alt+T legacy)
|
|
616
|
+
["toggleThinkingExpanded" /* TOGGLE_THINKING_EXPANDED */]: [
|
|
617
|
+
{ key: "o", ctrl: true },
|
|
618
|
+
{ key: "t", meta: true }
|
|
619
|
+
],
|
|
620
|
+
// Scroll commands
|
|
621
|
+
["scrollUp" /* SCROLL_UP */]: [{ key: "up", shift: true }],
|
|
622
|
+
["scrollDown" /* SCROLL_DOWN */]: [{ key: "down", shift: true }],
|
|
623
|
+
["pageUp" /* PAGE_UP */]: [{ key: "pageup" }],
|
|
624
|
+
["pageDown" /* PAGE_DOWN */]: [{ key: "pagedown" }],
|
|
625
|
+
["scrollHome" /* SCROLL_HOME */]: [{ key: "home", ctrl: true }],
|
|
626
|
+
["scrollEnd" /* SCROLL_END */]: [{ key: "end", ctrl: true }]
|
|
627
|
+
};
|
|
628
|
+
|
|
629
|
+
// packages/cli/src/ui/keyMatchers.ts
|
|
630
|
+
function matchKeyBinding(keyBinding, key) {
|
|
631
|
+
let keyMatches = false;
|
|
632
|
+
if (keyBinding.key !== void 0) {
|
|
633
|
+
keyMatches = keyBinding.key === key.name;
|
|
634
|
+
} else if (keyBinding.sequence !== void 0) {
|
|
635
|
+
keyMatches = keyBinding.sequence === key.sequence;
|
|
636
|
+
} else {
|
|
637
|
+
return false;
|
|
638
|
+
}
|
|
639
|
+
if (!keyMatches) {
|
|
640
|
+
return false;
|
|
641
|
+
}
|
|
642
|
+
if (keyBinding.ctrl !== void 0 && !!key.ctrl !== keyBinding.ctrl) {
|
|
643
|
+
return false;
|
|
644
|
+
}
|
|
645
|
+
if (keyBinding.shift !== void 0 && !!key.shift !== keyBinding.shift) {
|
|
646
|
+
return false;
|
|
647
|
+
}
|
|
648
|
+
if (keyBinding.command !== void 0 && !!key.meta !== keyBinding.command) {
|
|
649
|
+
return false;
|
|
650
|
+
}
|
|
651
|
+
if (keyBinding.paste !== void 0 && !!key.paste !== keyBinding.paste) {
|
|
652
|
+
return false;
|
|
653
|
+
}
|
|
654
|
+
if (keyBinding.meta !== void 0 && !!key.meta !== keyBinding.meta) {
|
|
655
|
+
return false;
|
|
656
|
+
}
|
|
657
|
+
return true;
|
|
658
|
+
}
|
|
659
|
+
__name(matchKeyBinding, "matchKeyBinding");
|
|
660
|
+
function matchCommand(command, key, config = defaultKeyBindings) {
|
|
661
|
+
const bindings = config[command];
|
|
662
|
+
return bindings.some((binding) => matchKeyBinding(binding, key));
|
|
663
|
+
}
|
|
664
|
+
__name(matchCommand, "matchCommand");
|
|
665
|
+
function createKeyMatchers(config = defaultKeyBindings) {
|
|
666
|
+
const matchers = {};
|
|
667
|
+
for (const command of Object.values(Command)) {
|
|
668
|
+
matchers[command] = (key) => matchCommand(command, key, config);
|
|
669
|
+
}
|
|
670
|
+
return matchers;
|
|
671
|
+
}
|
|
672
|
+
__name(createKeyMatchers, "createKeyMatchers");
|
|
673
|
+
var keyMatchers = createKeyMatchers(defaultKeyBindings);
|
|
674
|
+
|
|
675
|
+
// packages/cli/src/ui/utils/tool-display-map.ts
|
|
676
|
+
init_esbuild_shims();
|
|
677
|
+
var TOOL_DISPLAY_BY_NAME = Object.fromEntries(
|
|
678
|
+
Object.keys(ToolNames).map((key) => [
|
|
679
|
+
ToolNames[key],
|
|
680
|
+
ToolDisplayNames[key]
|
|
681
|
+
])
|
|
682
|
+
);
|
|
683
|
+
|
|
684
|
+
// packages/cli/src/ui/utils/displayUtils.ts
|
|
685
|
+
init_esbuild_shims();
|
|
686
|
+
function getArenaStatusLabel(status) {
|
|
687
|
+
switch (status) {
|
|
688
|
+
case "idle" /* IDLE */:
|
|
689
|
+
return { icon: "\u2713", text: "Idle", color: theme.status.success };
|
|
690
|
+
case "completed" /* COMPLETED */:
|
|
691
|
+
return { icon: "\u2713", text: "Done", color: theme.status.success };
|
|
692
|
+
case "cancelled" /* CANCELLED */:
|
|
693
|
+
return { icon: "\u2298", text: "Cancelled", color: theme.status.warning };
|
|
694
|
+
case "failed" /* FAILED */:
|
|
695
|
+
return { icon: "\u2717", text: "Failed", color: theme.status.error };
|
|
696
|
+
case "running" /* RUNNING */:
|
|
697
|
+
return {
|
|
698
|
+
icon: ICON.CIRCLE_EMPTY,
|
|
699
|
+
text: "Running",
|
|
700
|
+
color: theme.text.secondary
|
|
701
|
+
};
|
|
702
|
+
case "initializing" /* INITIALIZING */:
|
|
703
|
+
return {
|
|
704
|
+
icon: ICON.CIRCLE_EMPTY,
|
|
705
|
+
text: "Initializing",
|
|
706
|
+
color: theme.text.secondary
|
|
707
|
+
};
|
|
708
|
+
default:
|
|
709
|
+
return {
|
|
710
|
+
icon: ICON.CIRCLE_EMPTY,
|
|
711
|
+
text: status,
|
|
712
|
+
color: theme.text.secondary
|
|
713
|
+
};
|
|
714
|
+
}
|
|
715
|
+
}
|
|
716
|
+
__name(getArenaStatusLabel, "getArenaStatusLabel");
|
|
717
|
+
var TOOL_SUCCESS_RATE_HIGH = 95;
|
|
718
|
+
var TOOL_SUCCESS_RATE_MEDIUM = 85;
|
|
719
|
+
var USER_AGREEMENT_RATE_HIGH = 75;
|
|
720
|
+
var USER_AGREEMENT_RATE_MEDIUM = 45;
|
|
721
|
+
var getStatusColor = /* @__PURE__ */ __name((value, thresholds, options = {}) => {
|
|
722
|
+
if (value >= thresholds.green) {
|
|
723
|
+
return theme.status.success;
|
|
724
|
+
}
|
|
725
|
+
if (value >= thresholds.yellow) {
|
|
726
|
+
return theme.status.warning;
|
|
727
|
+
}
|
|
728
|
+
if (thresholds.red != null && value >= thresholds.red) {
|
|
729
|
+
return theme.status.error;
|
|
730
|
+
}
|
|
731
|
+
return options.defaultColor ?? theme.status.error;
|
|
732
|
+
}, "getStatusColor");
|
|
733
|
+
function formatDuration(ms) {
|
|
734
|
+
const totalSeconds = Math.round(ms / 1e3);
|
|
735
|
+
if (totalSeconds < 60) {
|
|
736
|
+
return `${totalSeconds}s`;
|
|
737
|
+
}
|
|
738
|
+
const minutes = Math.floor(totalSeconds / 60);
|
|
739
|
+
const seconds = totalSeconds % 60;
|
|
740
|
+
return seconds > 0 ? `${minutes}m ${seconds}s` : `${minutes}m`;
|
|
741
|
+
}
|
|
742
|
+
__name(formatDuration, "formatDuration");
|
|
743
|
+
|
|
744
|
+
export {
|
|
745
|
+
osc8Open,
|
|
746
|
+
osc8Close,
|
|
747
|
+
isSafeOscScheme,
|
|
748
|
+
trimTrailingUrlPunctuation,
|
|
749
|
+
MD_LINK_PATTERN,
|
|
750
|
+
MD_LINK_CAPTURE,
|
|
751
|
+
BARE_URL_PATTERN,
|
|
752
|
+
shouldWrapMarkdownLink,
|
|
753
|
+
labelMayDeceive,
|
|
754
|
+
getArenaStatusLabel,
|
|
755
|
+
TOOL_SUCCESS_RATE_HIGH,
|
|
756
|
+
TOOL_SUCCESS_RATE_MEDIUM,
|
|
757
|
+
USER_AGREEMENT_RATE_HIGH,
|
|
758
|
+
USER_AGREEMENT_RATE_MEDIUM,
|
|
759
|
+
getStatusColor,
|
|
760
|
+
formatDuration,
|
|
761
|
+
keyMatchers,
|
|
762
|
+
TOOL_DISPLAY_BY_NAME,
|
|
763
|
+
SessionStatsProvider,
|
|
764
|
+
useSessionStats
|
|
765
|
+
};
|
|
766
|
+
/**
|
|
767
|
+
* @license
|
|
768
|
+
* Copyright 2025 Google LLC
|
|
769
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
770
|
+
*/
|
|
771
|
+
/**
|
|
772
|
+
* @license
|
|
773
|
+
* Copyright 2025 Qwen
|
|
774
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
775
|
+
*/
|
|
776
|
+
/**
|
|
777
|
+
* @license
|
|
778
|
+
* Copyright 2025 Qwen Team
|
|
779
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
780
|
+
*/
|