@qwen-code/qwen-code 0.23.2-preview.0 → 0.23.3-nightly.20260910.c46cb85cf2
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 +35 -15
- package/bundled/computer-use/SKILL.md +1 -1
- package/bundled/goal-draft/SKILL.md +2 -2
- package/bundled/qc-helper/docs/configuration/auth.md +1 -1
- package/bundled/qc-helper/docs/configuration/model-providers.md +76 -34
- package/bundled/qc-helper/docs/configuration/settings.md +5 -3
- package/bundled/qc-helper/docs/features/_meta.ts +1 -0
- package/bundled/qc-helper/docs/features/channels/dingtalk.md +1 -21
- package/bundled/qc-helper/docs/features/channels/dws.md +7 -1
- package/bundled/qc-helper/docs/features/channels/github.md +1 -9
- package/bundled/qc-helper/docs/features/channels/overview.md +30 -56
- package/bundled/qc-helper/docs/features/channels/qqbot.md +1 -2
- package/bundled/qc-helper/docs/features/commands.md +105 -18
- package/bundled/qc-helper/docs/features/computer-use.md +1 -1
- package/bundled/qc-helper/docs/features/cross-session-protocol.md +320 -0
- package/bundled/qc-helper/docs/features/goals.md +5 -3
- package/bundled/qc-helper/docs/features/hooks.md +14 -13
- package/bundled/qc-helper/docs/features/sub-agents.md +8 -0
- package/bundled/qc-helper/docs/qwen-serve.md +84 -53
- package/bundled/review/SKILL.md +82 -79
- package/bundled/review/references/posting.md +31 -14
- package/chunks/{MaxSizedBox-ZZJT3PJF.js → MaxSizedBox-UZW24XUX.js} +63 -55
- package/chunks/{StandaloneSessionPicker-DIOSZTMX.js → StandaloneSessionPicker-IDK7NAZL.js} +85 -77
- package/chunks/{acp-startup-profiler-KEU6VAYR.js → acp-startup-profiler-ARO4II44.js} +2 -2
- package/chunks/acp-subagent-executor-7TLJGISS.js +919 -0
- package/chunks/{acpAgent-62JUP5A7.js → acpAgent-YRCNNIIU.js} +939 -306
- package/chunks/{agent-NLPEQQDZ.js → agent-SGU5EE7U.js} +47 -41
- package/chunks/{agent-headless-Y2GR5F2Q.js → agent-headless-JVYBLNLT.js} +47 -41
- package/chunks/{anthropicContentGenerator-I7LQZH26.js → anthropicContentGenerator-SGIR5IKF.js} +68 -36
- package/chunks/{artifact-tool-P52OKKEF.js → artifact-tool-PMYZCYNH.js} +2 -2
- package/chunks/{askUserQuestion-I5W5S3D6.js → askUserQuestion-4M4YYIB4.js} +2 -2
- package/chunks/{bridge-Q66BD62H.js → bridge-YF6NYRPZ.js} +68 -60
- package/chunks/{ca-KC2AISNS.js → ca-MX3WCEEG.js} +1 -1
- package/chunks/{channel-management-service-TRTLQTSV.js → channel-management-service-E4HTMU7T.js} +9 -9
- package/chunks/{channel-settings-store-R5STFWUW.js → channel-settings-store-FZ5VKHQD.js} +74 -66
- package/chunks/{channel-worker-group-PIYPVCTF.js → channel-worker-group-X6WH4XWF.js} +9 -9
- package/chunks/{channel-worker-manager-FQHEDTD2.js → channel-worker-manager-SICFJDPJ.js} +19 -10
- package/chunks/{channel-worker-supervisor-XJPZZ3VK.js → channel-worker-supervisor-HSFAKML6.js} +6 -6
- package/chunks/{chunk-CLKE4IY3.js → chunk-2SZH22YO.js} +1 -1
- package/chunks/{chunk-OIPUQE3S.js → chunk-34ZYDM3F.js} +27 -12
- package/chunks/{chunk-HIXUUCGY.js → chunk-36HCNKDS.js} +1 -1
- package/chunks/{chunk-6YEOCHSE.js → chunk-3FPYT6QC.js} +101 -31
- package/chunks/{chunk-NFIDVZND.js → chunk-3I7W2POO.js} +3 -22
- package/chunks/{chunk-W3ONSAYO.js → chunk-3VPFA6L2.js} +3 -3
- package/chunks/chunk-532WHF4F.js +127 -0
- package/chunks/{chunk-J3TJH52D.js → chunk-5FFAUU4T.js} +1 -1
- package/chunks/{chunk-G5QLLD53.js → chunk-5FKZ7KFQ.js} +1864 -35
- package/chunks/{chunk-B44JBZBB.js → chunk-5GLDOLNQ.js} +132 -27
- package/chunks/{chunk-ORREXWOM.js → chunk-5ZJ3KK5J.js} +5 -5
- package/chunks/{chunk-2OR32P5M.js → chunk-6EDWSKN4.js} +125 -10
- package/chunks/{chunk-EA4NFWVG.js → chunk-6EOMQPTS.js} +4 -4
- package/chunks/{chunk-45ROPFQY.js → chunk-6NONRGYX.js} +1 -1
- package/chunks/{chunk-EHTKOO6W.js → chunk-6UK77U7D.js} +46 -3
- package/chunks/{chunk-QXXBW2G4.js → chunk-72BGC7RT.js} +4 -4
- package/chunks/{chunk-CRZBDVP2.js → chunk-74JEYK2C.js} +10 -10
- package/chunks/{chunk-B54PFQS5.js → chunk-7CLLH5TI.js} +1 -1
- package/chunks/{chunk-CG2PDIGD.js → chunk-7XM6KEVW.js} +1 -1
- package/chunks/{chunk-CALNF3Z3.js → chunk-7XVQNDFB.js} +1 -1
- package/chunks/{chunk-TK4XHPKW.js → chunk-7ZKDPTYO.js} +2 -2
- package/chunks/{chunk-ZIPYCXQP.js → chunk-7ZVIGDZF.js} +1 -1
- package/chunks/chunk-AEY27Z35.js +1411 -0
- package/chunks/{chunk-WIRYFL2L.js → chunk-ATH66AEU.js} +64 -59
- package/chunks/{chunk-33MLFMCL.js → chunk-AW2SIT3B.js} +3 -3
- package/chunks/{chunk-4BLTSTF6.js → chunk-AWMJRE5N.js} +4 -4
- package/chunks/chunk-AYEJOTIU.js +43 -0
- package/chunks/{chunk-M73KHGNR.js → chunk-B2TGBZXY.js} +420 -227
- package/chunks/{chunk-XDNFODER.js → chunk-B6BDT4RX.js} +1 -1
- package/chunks/{chunk-WZ4YULVF.js → chunk-BHR6IN2X.js} +3251 -974
- package/chunks/{chunk-GXIHBIHC.js → chunk-BI3WSRQE.js} +61 -72
- package/chunks/{chunk-NVS4Z6GT.js → chunk-BQOP3K76.js} +1 -1
- package/chunks/{chunk-R2266LQ5.js → chunk-BTWGOKHU.js} +2 -2
- package/chunks/{process-registry-OAEG6WGC.js → chunk-BYUAT5OC.js} +1 -0
- package/chunks/{chunk-XVTCSVBK.js → chunk-C4NLHK7X.js} +227 -298
- package/chunks/{chunk-NOO4QFXM.js → chunk-C75BXMPM.js} +1 -3
- package/chunks/chunk-CAAMI77K.js +937 -0
- package/chunks/chunk-CF5KXZZX.js +150 -0
- package/chunks/{chunk-SOA4HKRJ.js → chunk-CGKEUUYG.js} +2 -2
- package/chunks/{chunk-BF3RUIVP.js → chunk-CH2YDT6X.js} +36 -38
- package/chunks/{chunk-5HBA2Z7V.js → chunk-CJ3DHN5I.js} +3 -3
- package/chunks/{chunk-3BTHHXXE.js → chunk-CSHX5ZC4.js} +1 -1
- package/chunks/{chunk-UYDQYDW2.js → chunk-CUK6F5UF.js} +1 -1
- package/chunks/{chunk-RPFJJ33Z.js → chunk-DLH7YIX6.js} +3 -3
- package/chunks/{chunk-L6ZME3W7.js → chunk-DMX7RF6E.js} +1 -1
- package/chunks/{chunk-TRWQQBVH.js → chunk-DTNV6UZY.js} +1 -1
- package/chunks/{chunk-FDOGGKAA.js → chunk-E4UEO3XM.js} +5 -2
- package/chunks/{chunk-RN6V5HKE.js → chunk-E5GQNSJY.js} +3 -3
- package/chunks/chunk-ELRMZTPF.js +374 -0
- package/chunks/chunk-ERU3SDXT.js +27 -0
- package/chunks/{chunk-O2FEO2CB.js → chunk-EUURTIV6.js} +18 -2
- package/chunks/{chunk-4HOEU2OR.js → chunk-EWJTAP3Y.js} +1 -19
- package/chunks/{chunk-ZELCTN6Y.js → chunk-F23YN37B.js} +10 -0
- package/chunks/{chunk-BL6B2QS2.js → chunk-F2RKL5I2.js} +809 -1195
- package/chunks/{chunk-J4ECGDA3.js → chunk-F45SKYIQ.js} +3 -3
- package/chunks/{chunk-5WC2ECUK.js → chunk-FCQJLMA2.js} +114 -8
- package/chunks/{chunk-4JKLPTV6.js → chunk-FGRDUDCI.js} +13 -6
- package/chunks/{chunk-ZUNWKOAP.js → chunk-FGV2QEAO.js} +5 -27
- package/chunks/{chunk-4VY3ITHR.js → chunk-FN3JNDRU.js} +3 -3
- package/chunks/{chunk-XI7RST4D.js → chunk-FRVV5SSD.js} +2 -2
- package/chunks/{chunk-UXDVUFKU.js → chunk-FYZ5NZ3V.js} +2 -20
- package/chunks/{chunk-ALMR3E6Q.js → chunk-GDWE23OR.js} +3 -3
- package/chunks/{chunk-W7PXLIZJ.js → chunk-GP47UR3M.js} +6 -6
- package/chunks/{chunk-LNYV4GXX.js → chunk-GSKX53AN.js} +0 -139
- package/chunks/{chunk-MA5OUNN6.js → chunk-HG46TTAG.js} +1 -1
- package/chunks/{chunk-FETY36NQ.js → chunk-HGEUHUEV.js} +1 -1
- package/chunks/{chunk-UULHYZ4W.js → chunk-HL2DQG3Y.js} +148 -23
- package/chunks/{chunk-E6TI726I.js → chunk-HUXPEUFL.js} +1 -1
- package/chunks/{chunk-5DQ4YTIZ.js → chunk-HZTXKVSV.js} +1 -1
- package/chunks/{chunk-LYT2OU7D.js → chunk-IAEXTMED.js} +1 -1
- package/chunks/{chunk-CPJRFFPH.js → chunk-IFHJIEMN.js} +576 -169
- package/chunks/{chunk-IW6RQPQB.js → chunk-IJOS26LH.js} +1 -3
- package/chunks/{chunk-ORFIYTI2.js → chunk-IK2MWJP5.js} +1 -1
- package/chunks/{chunk-MWEF5MUK.js → chunk-IOUBOANU.js} +42 -13
- package/chunks/{chunk-KA5HR3G2.js → chunk-IUVIBDKU.js} +2 -2
- package/chunks/{chunk-PQWM4SX2.js → chunk-J2RNOJRV.js} +2 -2
- package/chunks/{chunk-VHPG7BH6.js → chunk-J5PYQVD2.js} +2 -2
- package/chunks/{chunk-JDPBJIKI.js → chunk-JDEW3V5B.js} +1 -1
- package/chunks/{chunk-RX3FYFCN.js → chunk-JEMDIKGQ.js} +7 -7
- package/chunks/chunk-JL6APGBX.js +43 -0
- package/chunks/{chunk-UHUT4IDM.js → chunk-JOMCZWX7.js} +9 -15
- package/chunks/{chunk-43CI6YWJ.js → chunk-JV5YASQA.js} +2777 -2151
- package/chunks/{chunk-N6S3NUYJ.js → chunk-JXNIF2O5.js} +1 -1
- package/chunks/chunk-K2OJUPOE.js +78 -0
- package/chunks/{chunk-QLM7D7W3.js → chunk-KFGPNCCY.js} +8 -8
- package/chunks/{chunk-7RXOEUFF.js → chunk-KHIBLKNK.js} +1 -1
- package/chunks/{chunk-5GD7LYOH.js → chunk-KVBNJ4K2.js} +5 -5
- package/chunks/{chunk-QJAFSFYA.js → chunk-KZ2CU2LH.js} +1 -1
- package/chunks/{chunk-DCPRCDSR.js → chunk-L2KF7HUE.js} +6 -6
- package/chunks/{chunk-4ALNJDHL.js → chunk-L3DTX6U4.js} +3 -1
- package/chunks/{chunk-3SH53ANB.js → chunk-LAP7X6EC.js} +12 -0
- package/chunks/{chunk-GM44O6F7.js → chunk-LEGNDA46.js} +1 -1
- package/chunks/{chunk-WXFCI3O5.js → chunk-LG5Y4OWO.js} +2 -2
- package/chunks/{chunk-3LPJ776W.js → chunk-LILGKQ4B.js} +10 -7
- package/chunks/{chunk-LBKYQ33T.js → chunk-LIR7YS2O.js} +18 -12
- package/chunks/{chunk-5Z4FCEPY.js → chunk-LK2WUCDQ.js} +625 -119
- package/chunks/{chunk-W673V2H3.js → chunk-LY2GK2PR.js} +4 -4
- package/chunks/{chunk-PQSCGZT2.js → chunk-MOS5OAOG.js} +36 -10
- package/chunks/chunk-MXOALJIL.js +691 -0
- package/chunks/chunk-NFXXBWSE.js +463 -0
- package/chunks/chunk-NUQ4GK5I.js +315 -0
- package/chunks/{chunk-J3VZF2AL.js → chunk-NUQVB25K.js} +2 -2
- package/chunks/{chunk-GNY7B3CA.js → chunk-NVIBH7WS.js} +1 -1
- package/chunks/{chunk-M6YLOETP.js → chunk-O3MKRN2I.js} +4 -4
- package/chunks/{chunk-ISPBBKJN.js → chunk-ONGZNOIP.js} +7 -2
- package/chunks/{chunk-Q2F43WTJ.js → chunk-OOLSYRZ7.js} +36 -19
- package/chunks/{chunk-63ACHB2H.js → chunk-PIGUW2U2.js} +197 -28
- package/chunks/{chunk-QAZ2MGYT.js → chunk-PLLIWEM3.js} +2 -2
- package/chunks/{chunk-ULY4ISY2.js → chunk-PMS4FVLY.js} +23 -8
- package/chunks/{chunk-NB3NDQQK.js → chunk-Q2XLNLAV.js} +1 -1
- package/chunks/{chunk-6GRDHIVI.js → chunk-Q6HXLBZF.js} +12 -12
- package/chunks/{chunk-EUXF6URV.js → chunk-QPWZX4ZV.js} +32 -34
- package/chunks/{chunk-DTB5BXRG.js → chunk-RJZTX2OF.js} +30 -17
- package/chunks/{chunk-PQEISIKS.js → chunk-SAH4BD2J.js} +0 -67
- package/chunks/{chunk-LUVXLLMS.js → chunk-SAWPURIU.js} +2 -2
- package/chunks/{chunk-WZS3X663.js → chunk-SNZWDV67.js} +43 -18
- package/chunks/{chunk-IRKQ4YYX.js → chunk-SVWWF5TZ.js} +29 -1
- package/chunks/{chunk-5VZFJTL2.js → chunk-SXEE6PND.js} +2 -2
- package/chunks/{chunk-743XE7N7.js → chunk-T4JVQR7Z.js} +2 -2
- package/chunks/{chunk-6RZX2HIH.js → chunk-TBEXLLAO.js} +2 -2
- package/chunks/{chunk-LN3WBOKU.js → chunk-TP2DUOB6.js} +8 -8
- package/chunks/{chunk-MWIO7MF6.js → chunk-TP6FYVQT.js} +2 -0
- package/chunks/{chunk-HRPFBHW7.js → chunk-TPKQIA7G.js} +1 -0
- package/chunks/{chunk-VH764G6B.js → chunk-TWC3FHUI.js} +4 -4
- package/chunks/{chunk-H3Q3RSKZ.js → chunk-U7O65WKL.js} +1 -1
- package/chunks/{chunk-IUJLW6ZI.js → chunk-UBEYS536.js} +7 -7
- package/chunks/{chunk-VEQBVJYH.js → chunk-UGS62IR2.js} +3 -3
- package/chunks/{chunk-VF6D6EGV.js → chunk-UKMWZ5NS.js} +109 -842
- package/chunks/{chunk-7GZCCHJL.js → chunk-VHKOULAI.js} +6 -5
- package/chunks/{chunk-ODBNTMZW.js → chunk-VID4BW52.js} +97 -86
- package/chunks/{chunk-7L35FKPF.js → chunk-VLZOU6UH.js} +7 -7
- package/chunks/{chunk-XBLG564H.js → chunk-VTBPMLRO.js} +12 -12
- package/chunks/{chunk-QTNCGZHQ.js → chunk-VX63RJXE.js} +9 -0
- package/chunks/{chunk-7VEYUF3N.js → chunk-W5ZQMAEM.js} +1 -1
- package/chunks/{chunk-XQ4RDO5B.js → chunk-WBCPROWX.js} +1 -1
- package/chunks/{chunk-RDV4NLI3.js → chunk-WS7MOFK6.js} +3 -3
- package/chunks/{chunk-FV4DM2M4.js → chunk-WXFK4MH7.js} +32 -12
- package/chunks/{chunk-XAXTQURR.js → chunk-WY4N6KS7.js} +4 -4
- package/chunks/{chunk-CABDNUJ4.js → chunk-XDQUDARC.js} +11 -14
- package/chunks/{chunk-YHDGABDC.js → chunk-XKBFYTCD.js} +1 -1
- package/chunks/{chunk-2EKVPSIJ.js → chunk-Y2MYW47X.js} +1 -1
- package/chunks/{chunk-Y6ZWXM44.js → chunk-YIU5PEAT.js} +2 -2
- package/chunks/{chunk-PSPAM24S.js → chunk-YKK2XXHF.js} +4 -0
- package/chunks/{chunk-HZ2HUXX7.js → chunk-YS2ZJSOA.js} +29 -12
- package/chunks/{chunk-OFVAS4AR.js → chunk-ZGQIIGNQ.js} +2 -2
- package/chunks/{chunk-HNLMYDQE.js → chunk-ZHECLGA6.js} +2 -4
- package/chunks/{chunk-XBVNNDPK.js → chunk-ZHKTKHMO.js} +8 -1
- package/chunks/{chunk-OWCFKIFQ.js → chunk-ZKYR7QS4.js} +1 -1
- package/chunks/{chunk-YZTGGCEE.js → chunk-ZKZHSB5W.js} +1 -1
- package/chunks/{chunk-ERXNTINK.js → chunk-ZT6EPPBY.js} +1 -1
- package/chunks/{chunk-565U2ANU.js → chunk-ZTTC7T4X.js} +1 -1
- package/chunks/{chunk-MMMA36MN.js → chunk-ZUQVZTWG.js} +3 -3
- package/chunks/{chunk-7OCIQNKX.js → chunk-ZW2EUO2A.js} +1 -1
- package/chunks/{config-utils-37FHWPTP.js → config-utils-S5LFS4RN.js} +67 -59
- package/chunks/{contextCommand-R4JUBV5N.js → contextCommand-XXKZMMSQ.js} +64 -56
- package/chunks/{core-runtime-6U4OXU5C.js → core-runtime-YGUA42AZ.js} +68 -59
- package/chunks/{create-sub-session-LLUYAGZN.js → create-sub-session-SEK6KCYR.js} +64 -56
- package/chunks/{create-sub-session-TGIX63YU.js → create-sub-session-TIGCFGCS.js} +2 -2
- package/chunks/{cron-create-GTPVMJCF.js → cron-create-AKWX67FO.js} +1 -1
- package/chunks/{cron-delete-ZBK27Z4K.js → cron-delete-XPB6IYZJ.js} +1 -1
- package/chunks/{cron-list-KTFKFDKC.js → cron-list-XBKO4WU5.js} +1 -1
- package/chunks/{daemon-UI6SQSBV.js → daemon-G5TYKZD6.js} +2 -2
- package/chunks/{daemon-git-worktree-guard-O2UTNFJC.js → daemon-git-worktree-guard-3AWINPPX.js} +65 -57
- package/chunks/{daemon-status-provider-7GMAKSTX.js → daemon-status-provider-RTKHKUFJ.js} +73 -65
- package/chunks/{daemon-trust-policy-VNP76VMO.js → daemon-trust-policy-6YQOC7B6.js} +69 -61
- package/chunks/{daemon-trust-policy-monitor-TD5O3BZA.js → daemon-trust-policy-monitor-EN5L23GS.js} +69 -61
- package/chunks/{de-UU2YTO37.js → de-OOLZAU2U.js} +1 -1
- package/chunks/{deferred-core-runtime-NJM63YJS.js → deferred-core-runtime-JPLQRVZO.js} +62 -54
- package/chunks/{display-image-CTNHJRZC.js → display-image-NAH3AZ63.js} +3 -3
- package/chunks/{dist-STAGIFNB.js → dist-3BJVSJ7D.js} +389 -724
- package/chunks/{dist-OR2ZQTXZ.js → dist-65Q3TRLH.js} +16 -36
- package/chunks/{dist-24TCWK5H.js → dist-HX2LG76F.js} +233 -35
- package/chunks/{dist-XJ25G6OH.js → dist-J7PDFK53.js} +13 -38
- package/chunks/{dist-WZTUKIDR.js → dist-JCXKXRH6.js} +3 -6
- package/chunks/{dist-M4CBX53H.js → dist-LHGMHIDK.js} +2 -6
- package/chunks/{dist-5I4HLUTO.js → dist-QPTIRE3U.js} +4 -13
- package/chunks/{dist-FDISN4AK.js → dist-SBK33YLC.js} +5 -40
- package/chunks/{dist-NQ2636VT.js → dist-WMFHZG3R.js} +2 -5
- package/chunks/{edit-GL7OA6RV.js → edit-QXJZIWRQ.js} +50 -44
- package/chunks/{en-YJNRUQG4.js → en-7BZ2OZKH.js} +2 -1
- package/chunks/{enter-worktree-YFTKHXHZ.js → enter-worktree-54L5QJ3N.js} +4 -4
- package/chunks/{enterPlanMode-VC4BCSZE.js → enterPlanMode-2ITCVQ5N.js} +47 -41
- package/chunks/{environment-BI6IBAZJ.js → environment-URPO5ORZ.js} +65 -57
- package/chunks/{errors-D6G2ZM2R.js → errors-TDUYLEKI.js} +64 -56
- package/chunks/{exit-worktree-NF2XEMES.js → exit-worktree-EORJDKDS.js} +4 -4
- package/chunks/{exitPlanMode-DX446CA6.js → exitPlanMode-RA7KMUEW.js} +47 -41
- package/chunks/{fast-path-MAYDLJIP.js → fast-path-Q2JYP64P.js} +7 -7
- package/chunks/{fast-path-settings-SATXY3PD.js → fast-path-settings-GTHZLVSS.js} +2 -2
- package/chunks/{fr-HKNWVXRJ.js → fr-JJWM2HUS.js} +1 -1
- package/chunks/{glob-TVKRFY36.js → glob-VHSV4BKE.js} +50 -44
- package/chunks/{goal-tools-CA6YANRN.js → goal-tools-5FIE56CK.js} +53 -43
- package/chunks/{grep-BLHF2S5D.js → grep-3PKFKLCA.js} +2 -2
- package/chunks/{handleAutoUpdate-AW4ZAHON.js → handleAutoUpdate-7FZFLKNZ.js} +65 -57
- package/chunks/{i18n-IH5CRAY7.js → i18n-NTFQDWKR.js} +63 -55
- package/chunks/{image-gen-XP4NNIYG.js → image-gen-TF3IQWSH.js} +7 -6
- package/chunks/{initializer-UBR37ZNM.js → initializer-LB3T635H.js} +69 -61
- package/chunks/{installationInfo-Y52756EC.js → installationInfo-KRO433ZG.js} +62 -54
- package/chunks/{ja-GJS5RZGU.js → ja-L67TXFDJ.js} +1 -1
- package/chunks/{list-7V5JDZPO.js → list-NEP3WPZ7.js} +72 -64
- package/chunks/{list-agents-I5TRH3J7.js → list-agents-QLDXS5OD.js} +18 -8
- package/chunks/{llm-QDB6JVF5.js → llm-AZEJEIAD.js} +141 -128
- package/chunks/{llm-content-generator-EO6MZCEO.js → llm-content-generator-KWXFHBR3.js} +6 -5
- package/chunks/{loadedSettingsAdapter-I3YQKMC4.js → loadedSettingsAdapter-NZORJLSD.js} +69 -61
- package/chunks/{loggingContentGenerator-MNXYUGDG.js → loggingContentGenerator-NGHVU6AK.js} +69 -62
- package/chunks/{loop-wakeup-HL6XOWI4.js → loop-wakeup-HHMYIC7Z.js} +2 -2
- package/chunks/{ls-YV7RKLKY.js → ls-N7ABR6HI.js} +4 -4
- package/chunks/{lsp-NO3AMRZT.js → lsp-LTOFWG5P.js} +1 -1
- package/chunks/{managed-npm-update-EA3EXPTO.js → managed-npm-update-3LHNBEAG.js} +62 -54
- package/chunks/{mcp-QTAJ544Y.js → mcp-4SWJKDX7.js} +69 -61
- package/chunks/{monitor-6FQKQOTP.js → monitor-V5EFBZC7.js} +49 -43
- package/chunks/{nonInteractiveCli-MRCTZL5X.js → nonInteractiveCli-5UFUBUAT.js} +117 -109
- package/chunks/{notebook-edit-BQQCKI7K.js → notebook-edit-ATV46KWD.js} +48 -42
- package/chunks/{open-with-auth-D6JD6LDS.js → open-with-auth-6MVIHMXB.js} +1 -1
- package/chunks/openai-WX26N5OJ.js +47 -0
- package/chunks/{openaiContentGenerator-TTSKXNVH.js → openaiContentGenerator-BKTO5QJK.js} +31 -25
- package/chunks/openaiResponsesContentGenerator-RTCAJ5V5.js +1658 -0
- package/chunks/{pidfile-KPIS6RIT.js → pidfile-JAIOWPI3.js} +65 -55
- package/chunks/process-registry-X6ZCASEN.js +10 -0
- package/chunks/{processUtils-ZCASPKK4.js → processUtils-TCQH3LVD.js} +2 -2
- package/chunks/{prompt-terminal-ledger-D6HM6TV7.js → prompt-terminal-ledger-BYXHEUHX.js} +63 -55
- package/chunks/{pt-FXMYXEUV.js → pt-77SBDL4B.js} +1 -1
- package/chunks/{qwenContentGenerator-GGZEFLBD.js → qwenContentGenerator-K5TJK75P.js} +60 -52
- package/chunks/{qwenOAuth2-KX6LVYQ3.js → qwenOAuth2-NOXRK323.js} +6 -5
- package/chunks/{read-file-VE5GDFLP.js → read-file-DL7GNZD5.js} +11 -9
- package/chunks/{read-mcp-resource-D3N75DGF.js → read-mcp-resource-B37WANAQ.js} +1 -1
- package/chunks/{record-artifact-Q5CRGJTP.js → record-artifact-OAXWXZ5D.js} +2 -2
- package/chunks/record-source-D7R7X3GT.js +22 -0
- package/chunks/{report-findings-TJ34R7QK.js → report-findings-AR3VC6EQ.js} +3 -3
- package/chunks/{request-shutdown-LRKMTBAD.js → request-shutdown-IKNWTX5M.js} +5 -5
- package/chunks/{resumeHistoryUtils-HSSGMYDC.js → resumeHistoryUtils-OYKXZ4YO.js} +68 -60
- package/chunks/{ripGrep-SEJE7AA6.js → ripGrep-EOUMIU4K.js} +15 -13
- package/chunks/{ru-RMHURE5U.js → ru-UYWHKWF2.js} +1 -1
- package/chunks/{run-qwen-serve-OJYVH7N6.js → run-qwen-serve-PPTGWC5B.js} +471 -152
- package/chunks/{runtime-KGMQQFJD.js → runtime-5RO22P2N.js} +77 -67
- package/chunks/{scheduled-tasks-7H5HWHYD.js → scheduled-tasks-YGERFWLZ.js} +70 -62
- package/chunks/{scheduler-BE42AKDG.js → scheduler-S6WU6M3C.js} +64 -56
- package/chunks/{sdk-exporters-grpc-MXTVSE3C.js → sdk-exporters-grpc-Y2ZUQDUQ.js} +2 -2
- package/chunks/{sdk-exporters-http-7R2ARBPV.js → sdk-exporters-http-VWTF4W6K.js} +3 -3
- package/chunks/{sdk-impl-YOLO7LV4.js → sdk-impl-G6FVTBQZ.js} +9 -9
- package/chunks/{send-message-AWKUDJBH.js → send-message-TWOGWCBG.js} +13 -10
- package/chunks/{serve-KZVKYMSL.js → serve-HT4WOCWS.js} +70 -62
- package/chunks/{server-PJRALPJQ.js → server-SWXVPRCS.js} +2977 -617
- package/chunks/{session-IHITXU2S.js → session-6DSFUOMO.js} +154 -119
- package/chunks/{session-attachments-root-GQ2TUI3Y.js → session-attachments-root-SOZCTQWW.js} +62 -54
- package/chunks/{session-pr-refresh-H43LULTE.js → session-pr-refresh-F7XUBQBH.js} +70 -62
- package/chunks/{settings-RKEQQDFC.js → settings-SWQH36PO.js} +74 -66
- package/chunks/{shell-6PJ444U5.js → shell-XUQL6EYV.js} +47 -41
- package/chunks/{skill-Q3UP7B5V.js → skill-HNRDD54C.js} +33 -23
- package/chunks/{skill-settings-LZR5YRRW.js → skill-settings-JU72PCII.js} +68 -60
- package/chunks/{spawnChannel-WM3DT2BF.js → spawnChannel-7ZVM3GBU.js} +65 -57
- package/chunks/{standalone-update-E5474IBI.js → standalone-update-64JQY2LX.js} +64 -56
- package/chunks/{start-opentui-ui-WLWZNQ2I.js → start-opentui-ui-RSLBXESU.js} +554 -297
- package/chunks/{startInteractiveUI-FBQSGWGO.js → startInteractiveUI-ZDPHD7XE.js} +1282 -1915
- package/chunks/{syntheticOutput-D2P5V6RG.js → syntheticOutput-F6F27JMK.js} +2 -2
- package/chunks/{task-create-PMAFST2T.js → task-create-Y623TBHB.js} +10 -10
- package/chunks/{task-list-R2HSY2NC.js → task-list-FCPEEGWL.js} +3 -3
- package/chunks/{task-stop-BFSKRTGV.js → task-stop-QTKZXLPH.js} +1 -1
- package/chunks/{task-update-JYC57USF.js → task-update-YLSXF25N.js} +10 -10
- package/chunks/{team-create-VIGUFUT4.js → team-create-U52VYSNO.js} +49 -43
- package/chunks/{team-delete-CBHVBTPB.js → team-delete-S7TLHZCF.js} +3 -3
- package/chunks/{team-plan-approval-HQVZA3MD.js → team-plan-approval-IQ4ADQIK.js} +47 -41
- package/chunks/{terminal-image-renderer-LUKNCOVM.js → terminal-image-renderer-ZEMF7LB2.js} +64 -56
- package/chunks/{theme-manager-LOENKYLY.js → theme-manager-DK2S2SOX.js} +62 -54
- package/chunks/{todoWrite-5ERKFWAK.js → todoWrite-5QI2H2FW.js} +4 -4
- package/chunks/{tool-search-ZIFAQCE2.js → tool-search-6U4OQG7K.js} +21 -15
- package/chunks/{total-session-admission-FUUJH3QH.js → total-session-admission-BOARHBZU.js} +68 -60
- package/chunks/{trustedFolders-C76KYROP.js → trustedFolders-GKQZXZSV.js} +63 -55
- package/chunks/{update-relaunch-4G2SRXKX.js → update-relaunch-GLACF7PX.js} +5 -5
- package/chunks/{updateCheck-EIZIO7HI.js → updateCheck-NLBSZB4Q.js} +64 -56
- package/chunks/{useAutoAcceptIndicator-EAA6KSY4.js → useAutoAcceptIndicator-3X3BYU7H.js} +72 -64
- package/chunks/{validateNonInterActiveAuth-BRX22QCN.js → validateNonInterActiveAuth-NE3JLOIR.js} +114 -106
- package/chunks/{version-E56RU7PR.js → version-6H5YAT4N.js} +3 -1
- package/chunks/{web-fetch-AAUCD7RM.js → web-fetch-RWSO7TTN.js} +15 -13
- package/chunks/{web-search-HFUQF44Q.js → web-search-DADI3LV5.js} +560 -322
- package/chunks/{web-shell-static-POZHGGXE.js → web-shell-static-CCN4JZEE.js} +5 -4
- package/chunks/workflow-LPGCZCIT.js +1224 -0
- package/chunks/workspace-providers-status-QBRBEFTO.js +127 -0
- package/chunks/{workspace-registration-store-YL7HLYYI.js → workspace-registration-store-WUKTMJPW.js} +3 -2
- package/chunks/{workspace-registry-BNRP2ELW.js → workspace-registry-CJV7KVGF.js} +68 -60
- package/chunks/{workspace-runtime-coordinator-WKGF7VHS.js → workspace-runtime-coordinator-7LYMFMFF.js} +71 -61
- package/chunks/{workspace-service-4MYO72MM.js → workspace-service-HWXZSA4J.js} +75 -67
- package/chunks/{workspace-skills-status-SU66TJLZ.js → workspace-skills-status-D6QXUWCC.js} +70 -62
- package/chunks/{workspace-trust-reconciler-D5QT7WQB.js → workspace-trust-reconciler-VZX7G7CZ.js} +75 -67
- package/chunks/{write-file-NVPQE2AZ.js → write-file-KKHV26YV.js} +49 -43
- package/chunks/{zh-VBFCRQBL.js → zh-J2GLI64H.js} +2 -1
- package/chunks/{zh-TW-N2TBF2F2.js → zh-TW-TBAICUJQ.js} +2 -1
- package/chunks/{zoom-image-RJHC66WG.js → zoom-image-OG7X7KAA.js} +12 -10
- package/cli.js +14 -14
- package/export-transcript-document.css +1 -0
- package/export-transcript-document.js +164 -165
- package/locales/ca.js +2 -2
- package/locales/de.js +2 -2
- package/locales/en.js +3 -2
- package/locales/fr.js +2 -2
- package/locales/ja.js +2 -2
- package/locales/pt.js +2 -2
- package/locales/ru.js +2 -2
- package/locales/zh-TW.js +3 -2
- package/locales/zh.js +3 -2
- package/package.json +6 -5
- package/web-shell/assets/{abnfDiagram-VCTEODGH-DHc6plZn.js → abnfDiagram-VCTEODGH-NT0lTLRG.js} +1 -1
- package/web-shell/assets/{arc-BQ9m8TDV.js → arc-DDqnIMMx.js} +1 -1
- package/web-shell/assets/{architectureDiagram-5GKGNRK7-D5ap3oVB.js → architectureDiagram-5GKGNRK7-DfYghE3W.js} +1 -1
- package/web-shell/assets/{blockDiagram-NRAW4CY4-BIbnyNph.js → blockDiagram-NRAW4CY4-DlqJIx5c.js} +1 -1
- package/web-shell/assets/{c4Diagram-UCG6FXSJ-BRsdx_iG.js → c4Diagram-UCG6FXSJ-CinqLGU4.js} +1 -1
- package/web-shell/assets/channel-BHGoSkEv.js +1 -0
- package/web-shell/assets/{chunk-2Q5K7J3B-3lf1fNlx.js → chunk-2Q5K7J3B-CsjJX5M7.js} +1 -1
- package/web-shell/assets/{chunk-5VM5RSS4-DP8VNRc4.js → chunk-5VM5RSS4-CaVb2tdH.js} +1 -1
- package/web-shell/assets/{chunk-F27PBJKO-DrohDmZ6.js → chunk-F27PBJKO-CRyErlzW.js} +1 -1
- package/web-shell/assets/{chunk-G27WJ6UU-UZ2QhSx6.js → chunk-G27WJ6UU-7I79DZCf.js} +1 -1
- package/web-shell/assets/{chunk-JWPE2WC7-BIMHVcZK.js → chunk-JWPE2WC7-Dz4cac5F.js} +1 -1
- package/web-shell/assets/{chunk-LCL6LL3I-izRxdSDd.js → chunk-LCL6LL3I-Ls24Derb.js} +1 -1
- package/web-shell/assets/{chunk-POPQ4Y6H-CXADD4PP.js → chunk-POPQ4Y6H-JzYe4qx7.js} +1 -1
- package/web-shell/assets/{chunk-SVP7TREG-B96d8Y_1.js → chunk-SVP7TREG-BxDwesA-.js} +1 -1
- package/web-shell/assets/{chunk-XXDRQBXY-CF2sVQpv.js → chunk-XXDRQBXY-CW4hjgWc.js} +1 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-E47Xnn15.js +1 -0
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-E47Xnn15.js +1 -0
- package/web-shell/assets/{cose-bilkent-JH36ORCC-CT6tXVAS.js → cose-bilkent-JH36ORCC-DxikE9iF.js} +1 -1
- package/web-shell/assets/{cynefin-OW5HDTMX-X1NS4vtV.js → cynefin-OW5HDTMX-CvVsIkVN.js} +1 -1
- package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-DNsKNOT4.js → cynefinDiagram-5FMLGOSQ-CDHkk3wq.js} +1 -1
- package/web-shell/assets/{dagre-3AP2YEHR-9-AHKqsb.js → dagre-3AP2YEHR-BgLdkVLT.js} +1 -1
- package/web-shell/assets/{diagram-S7CK7UJ4-Bjgms7j6.js → diagram-S7CK7UJ4-DP43cGhe.js} +1 -1
- package/web-shell/assets/{diagram-UQ7AKVKN-h6bCprbE.js → diagram-UQ7AKVKN-BWrZYhoT.js} +1 -1
- package/web-shell/assets/{diagram-VSXAHHWV-4SbQXVLt.js → diagram-VSXAHHWV-B80wjH_n.js} +1 -1
- package/web-shell/assets/{diagram-VX7I27RA-B5gPCzzB.js → diagram-VX7I27RA-DPpKmDsY.js} +1 -1
- package/web-shell/assets/{diagram-Z3DM3KII-DFJXIA3A.js → diagram-Z3DM3KII-kaEBNbNU.js} +1 -1
- package/web-shell/assets/{ebnfDiagram-PWID7BFC-FwyaU7VY.js → ebnfDiagram-PWID7BFC-1-qbEZvk.js} +1 -1
- package/web-shell/assets/{erDiagram-SSCWMZ5O-8vJQh2te.js → erDiagram-SSCWMZ5O-CrK2gMkV.js} +1 -1
- package/web-shell/assets/{flowDiagram-A5DVABFB-BzA_1gMN.js → flowDiagram-A5DVABFB-Dic2xofW.js} +1 -1
- package/web-shell/assets/{ganttDiagram-EL5Y4UJY-Co-ABbVX.js → ganttDiagram-EL5Y4UJY-DJko8vT7.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-DW_FcyrX.js → gitGraphDiagram-WWUBYQGX-DxsQ-bHT.js} +1 -1
- package/web-shell/assets/index-DY8CxdBr.js +2173 -0
- package/web-shell/assets/index-eBxK3rs2.css +36 -0
- package/web-shell/assets/{index-BbMXfhNG.js → index-t7VBrUeD.js} +1 -1
- package/web-shell/assets/{infoDiagram-RXCK75RN-BEgfhUFN.js → infoDiagram-RXCK75RN-DcRUJbNi.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-5VMMS53U-DCsMxQmc.js → ishikawaDiagram-5VMMS53U-CUPw-2_e.js} +1 -1
- package/web-shell/assets/{journeyDiagram-EYS64GPL-DyIEYoHz.js → journeyDiagram-EYS64GPL-yOHhZxkW.js} +1 -1
- package/web-shell/assets/{kanban-definition-3QL26DDD-CkxjqCNr.js → kanban-definition-3QL26DDD-CFUGBbqz.js} +1 -1
- package/web-shell/assets/{layout-BEWc0Al9.js → layout-BoilNfBU.js} +1 -1
- package/web-shell/assets/{linear-CNuNxirL.js → linear-DOuHaPrl.js} +1 -1
- package/web-shell/assets/{mermaid.core-DZBre674.js → mermaid.core-1G1fXWda.js} +6 -6
- package/web-shell/assets/{mindmap-definition-FBJOCRG2-CpafFz_F.js → mindmap-definition-FBJOCRG2-B8BhkrOX.js} +1 -1
- package/web-shell/assets/{pegDiagram-XKGWAZYB-DfZqk_dq.js → pegDiagram-XKGWAZYB-CipC5K1D.js} +1 -1
- package/web-shell/assets/{pieDiagram-E7YTZNPT-S0UWXlgC.js → pieDiagram-E7YTZNPT-CHBDFDUJ.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-AXDQQJYC-dd37_Ohj.js → quadrantDiagram-AXDQQJYC-_iiBkoZO.js} +1 -1
- package/web-shell/assets/{railroadDiagram-O6MQD6OU-CH8NJZ7u.js → railroadDiagram-O6MQD6OU-Cx1peHDi.js} +1 -1
- package/web-shell/assets/{requirementDiagram-EFPCY7ZU-CFdqWYih.js → requirementDiagram-EFPCY7ZU-CBRiPbdQ.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-P5KCCOFB-CsddcEGD.js → sankeyDiagram-P5KCCOFB-TT6GcHaZ.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-BZ270mGw.js → sequenceDiagram-WJ2MYXX4-CWP42PNb.js} +1 -1
- package/web-shell/assets/{sizeCapture-X5ZJPWSS-CGaS4DBV.js → sizeCapture-X5ZJPWSS-Bp94roEG.js} +1 -1
- package/web-shell/assets/{stateDiagram-HBIQ2CUA-COpIzMu6.js → stateDiagram-HBIQ2CUA-0ftrzTAy.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-PgAST0dK.js +1 -0
- package/web-shell/assets/{swimlanes-XN3QIQJK-CMF889m3.js → swimlanes-XN3QIQJK-D-FsenYJ.js} +1 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-BcWcB5bj.js +8 -0
- package/web-shell/assets/{timeline-definition-24CTP7MA-BelnxYz5.js → timeline-definition-24CTP7MA-Ctvrj28y.js} +1 -1
- package/web-shell/assets/{vennDiagram-4TSXK5OY-CU-NRqIB.js → vennDiagram-4TSXK5OY-5DZncjOt.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-VM6X3IG4-CDNKqWh-.js → wardleyDiagram-VM6X3IG4-jZjYwPY7.js} +1 -1
- package/web-shell/assets/{xychartDiagram-S5SC5T6Z-CLqguL5D.js → xychartDiagram-S5SC5T6Z-Ci6Q2C2_.js} +1 -1
- package/web-shell/index.html +29 -5
- package/chunks/chunk-V7RNNPGC.js +0 -44
- package/chunks/chunk-X35VIWWJ.js +0 -276
- package/chunks/workflow-3MABM53N.js +0 -2771
- package/chunks/workspace-providers-status-2FRLBZ5I.js +0 -119
- package/web-shell/assets/channel-uMMdTrYk.js +0 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-DcY-26Ig.js +0 -1
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-DcY-26Ig.js +0 -1
- package/web-shell/assets/index-Bu-rZoJ-.js +0 -2150
- package/web-shell/assets/index-CsPwZ1ut.css +0 -36
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-D6qEVAji.js +0 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-mem5Jj4m.js +0 -8
- /package/chunks/{chunk-JA5CBKRP.js → chunk-7NXSVSFB.js} +0 -0
|
@@ -2,23 +2,20 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
reportChatRecordingFailureToAdapter
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-7XVQNDFB.js";
|
|
6
6
|
import {
|
|
7
7
|
StreamJsonOutputAdapter
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-AWMJRE5N.js";
|
|
9
9
|
import {
|
|
10
10
|
ICON,
|
|
11
11
|
SHELL_COMMAND_NAME
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-PMS4FVLY.js";
|
|
13
13
|
import {
|
|
14
14
|
theme
|
|
15
15
|
} from "./chunk-4LIPOIXS.js";
|
|
16
16
|
import {
|
|
17
17
|
require_jsx_runtime
|
|
18
18
|
} from "./chunk-SV5PQVQE.js";
|
|
19
|
-
import {
|
|
20
|
-
themeManager
|
|
21
|
-
} from "./chunk-2XRE4KE4.js";
|
|
22
19
|
import {
|
|
23
20
|
Box_default,
|
|
24
21
|
Text
|
|
@@ -26,50 +23,67 @@ import {
|
|
|
26
23
|
import {
|
|
27
24
|
require_react
|
|
28
25
|
} from "./chunk-5QWWOFGG.js";
|
|
26
|
+
import {
|
|
27
|
+
themeManager
|
|
28
|
+
} from "./chunk-2XRE4KE4.js";
|
|
29
|
+
import {
|
|
30
|
+
getCachedStringWidth,
|
|
31
|
+
toCodePoints
|
|
32
|
+
} from "./chunk-47ECGEJC.js";
|
|
29
33
|
import {
|
|
30
34
|
createLoadedSettingsAdapter
|
|
31
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-BQOP3K76.js";
|
|
32
36
|
import {
|
|
33
37
|
SettingScope,
|
|
34
38
|
settingExistsInScope
|
|
35
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-OOLSYRZ7.js";
|
|
36
40
|
import {
|
|
37
|
-
|
|
38
|
-
|
|
41
|
+
getCurrentLanguage,
|
|
42
|
+
t,
|
|
43
|
+
ta
|
|
44
|
+
} from "./chunk-74JEYK2C.js";
|
|
39
45
|
import {
|
|
40
46
|
INITIAL_FOLLOWUP_STATE,
|
|
41
47
|
Logger,
|
|
42
48
|
applyProviderInstallPlan,
|
|
49
|
+
createFollowupController
|
|
50
|
+
} from "./chunk-F2RKL5I2.js";
|
|
51
|
+
import {
|
|
43
52
|
buildInstallPlan,
|
|
44
|
-
createFollowupController,
|
|
45
53
|
getDefaultBaseUrlForProtocol,
|
|
46
54
|
getDefaultModelIds,
|
|
47
55
|
resolveBaseUrl,
|
|
48
56
|
shouldShowStep
|
|
49
|
-
} from "./chunk-
|
|
50
|
-
import {
|
|
51
|
-
qwenOAuth2Events,
|
|
52
|
-
sanitizeForOsc
|
|
53
|
-
} from "./chunk-XDNFODER.js";
|
|
57
|
+
} from "./chunk-AEY27Z35.js";
|
|
54
58
|
import {
|
|
55
59
|
ShellExecutionService,
|
|
60
|
+
TERMINAL_CSI_REGEX,
|
|
61
|
+
TERMINAL_OSC_REGEX,
|
|
62
|
+
TERMINAL_SHIFT_DCS_REGEX,
|
|
56
63
|
allowEditorTypeInSandbox,
|
|
57
64
|
checkHasEditorType,
|
|
58
65
|
compactToolResultDisplayForHistory,
|
|
59
|
-
isSignalTermination
|
|
60
|
-
|
|
66
|
+
isSignalTermination,
|
|
67
|
+
resolveBranchName,
|
|
68
|
+
stripTerminalControlSequences,
|
|
69
|
+
watchRepoBranch
|
|
70
|
+
} from "./chunk-JV5YASQA.js";
|
|
61
71
|
import {
|
|
62
72
|
formatMemoryUsage
|
|
63
73
|
} from "./chunk-CHEIIBT3.js";
|
|
74
|
+
import {
|
|
75
|
+
qwenOAuth2Events,
|
|
76
|
+
sanitizeForOsc
|
|
77
|
+
} from "./chunk-B6BDT4RX.js";
|
|
64
78
|
import {
|
|
65
79
|
AuthEvent,
|
|
66
80
|
PromptSuggestionEvent,
|
|
67
81
|
logAuth,
|
|
68
82
|
logPromptSuggestion
|
|
69
|
-
} from "./chunk-
|
|
83
|
+
} from "./chunk-34ZYDM3F.js";
|
|
70
84
|
import {
|
|
71
85
|
isBinary
|
|
72
|
-
} from "./chunk-
|
|
86
|
+
} from "./chunk-W5ZQMAEM.js";
|
|
73
87
|
import {
|
|
74
88
|
createDebugLogger,
|
|
75
89
|
getErrorMessage
|
|
@@ -435,9 +449,9 @@ var DualOutputBridge = class {
|
|
|
435
449
|
}
|
|
436
450
|
}
|
|
437
451
|
this.active = false;
|
|
438
|
-
this.shutdownPromise = new Promise((
|
|
452
|
+
this.shutdownPromise = new Promise((resolve2) => {
|
|
439
453
|
if (this.stream.closed || this.stream.destroyed) {
|
|
440
|
-
|
|
454
|
+
resolve2();
|
|
441
455
|
return;
|
|
442
456
|
}
|
|
443
457
|
const cleanup = /* @__PURE__ */ __name(() => {
|
|
@@ -446,7 +460,7 @@ var DualOutputBridge = class {
|
|
|
446
460
|
}, "cleanup");
|
|
447
461
|
const onClose = /* @__PURE__ */ __name(() => {
|
|
448
462
|
cleanup();
|
|
449
|
-
|
|
463
|
+
resolve2();
|
|
450
464
|
}, "onClose");
|
|
451
465
|
const onError = /* @__PURE__ */ __name((err) => {
|
|
452
466
|
debugLogger.debug("DualOutput: stream error during shutdown:", err);
|
|
@@ -458,7 +472,7 @@ var DualOutputBridge = class {
|
|
|
458
472
|
} catch (err) {
|
|
459
473
|
cleanup();
|
|
460
474
|
debugLogger.debug("DualOutput: stream end error during shutdown:", err);
|
|
461
|
-
|
|
475
|
+
resolve2();
|
|
462
476
|
}
|
|
463
477
|
});
|
|
464
478
|
return this.shutdownPromise;
|
|
@@ -613,7 +627,7 @@ var RemoteInputWatcher = class {
|
|
|
613
627
|
debugLogger2.warn(`RemoteInput: failed to parse line: ${trimmed}`);
|
|
614
628
|
}
|
|
615
629
|
});
|
|
616
|
-
return new Promise((
|
|
630
|
+
return new Promise((resolve2) => {
|
|
617
631
|
rl.on("close", () => {
|
|
618
632
|
this.bytesRead = consumeUntil;
|
|
619
633
|
if (nextConsumedPrefixHash !== null) {
|
|
@@ -621,7 +635,7 @@ var RemoteInputWatcher = class {
|
|
|
621
635
|
}
|
|
622
636
|
this.reading = false;
|
|
623
637
|
this.processQueue();
|
|
624
|
-
|
|
638
|
+
resolve2();
|
|
625
639
|
});
|
|
626
640
|
});
|
|
627
641
|
}
|
|
@@ -951,6 +965,7 @@ var useAuthCommand = /* @__PURE__ */ __name((settings, config, addItem, onAuthCh
|
|
|
951
965
|
const valid = [
|
|
952
966
|
"qwen-oauth" /* QWEN_OAUTH */,
|
|
953
967
|
"openai" /* USE_OPENAI */,
|
|
968
|
+
"openai-responses" /* USE_OPENAI_RESPONSES */,
|
|
954
969
|
"anthropic" /* USE_ANTHROPIC */,
|
|
955
970
|
"gemini" /* USE_GEMINI */,
|
|
956
971
|
"vertex-ai" /* USE_VERTEX_AI */
|
|
@@ -1019,9 +1034,61 @@ var useAuthCommand = /* @__PURE__ */ __name((settings, config, addItem, onAuthCh
|
|
|
1019
1034
|
};
|
|
1020
1035
|
}, "useAuthCommand");
|
|
1021
1036
|
|
|
1022
|
-
// packages/cli/src/ui/hooks/
|
|
1037
|
+
// packages/cli/src/ui/hooks/useGitBranchName.ts
|
|
1023
1038
|
init_esbuild_shims();
|
|
1024
1039
|
var import_react4 = __toESM(require_react(), 1);
|
|
1040
|
+
var BRANCH_POLL_INTERVAL_MS = 5e3;
|
|
1041
|
+
function useGitBranchName(cwd) {
|
|
1042
|
+
const [branchName, setBranchName] = (0, import_react4.useState)(void 0);
|
|
1043
|
+
const branchNameRef = (0, import_react4.useRef)(branchName);
|
|
1044
|
+
branchNameRef.current = branchName;
|
|
1045
|
+
(0, import_react4.useEffect)(() => {
|
|
1046
|
+
let cancelled = false;
|
|
1047
|
+
let dispose;
|
|
1048
|
+
let pollTimer;
|
|
1049
|
+
let refreshGeneration = 0;
|
|
1050
|
+
const refresh = /* @__PURE__ */ __name(async () => {
|
|
1051
|
+
const generation = ++refreshGeneration;
|
|
1052
|
+
const name = await resolveBranchName(cwd);
|
|
1053
|
+
if (!cancelled && generation === refreshGeneration && name !== branchNameRef.current) {
|
|
1054
|
+
setBranchName(name);
|
|
1055
|
+
}
|
|
1056
|
+
}, "refresh");
|
|
1057
|
+
const init = /* @__PURE__ */ __name(async () => {
|
|
1058
|
+
await refresh();
|
|
1059
|
+
if (cancelled) return;
|
|
1060
|
+
const disposer = await watchRepoBranch(cwd, () => {
|
|
1061
|
+
void refresh().catch(() => {
|
|
1062
|
+
});
|
|
1063
|
+
});
|
|
1064
|
+
if (cancelled) {
|
|
1065
|
+
disposer();
|
|
1066
|
+
} else {
|
|
1067
|
+
dispose = disposer;
|
|
1068
|
+
}
|
|
1069
|
+
if (!cancelled) {
|
|
1070
|
+
pollTimer = setInterval(() => {
|
|
1071
|
+
void refresh().catch(() => {
|
|
1072
|
+
});
|
|
1073
|
+
}, BRANCH_POLL_INTERVAL_MS);
|
|
1074
|
+
pollTimer.unref?.();
|
|
1075
|
+
}
|
|
1076
|
+
}, "init");
|
|
1077
|
+
void init().catch(() => {
|
|
1078
|
+
});
|
|
1079
|
+
return () => {
|
|
1080
|
+
cancelled = true;
|
|
1081
|
+
dispose?.();
|
|
1082
|
+
if (pollTimer) clearInterval(pollTimer);
|
|
1083
|
+
};
|
|
1084
|
+
}, [cwd]);
|
|
1085
|
+
return branchName;
|
|
1086
|
+
}
|
|
1087
|
+
__name(useGitBranchName, "useGitBranchName");
|
|
1088
|
+
|
|
1089
|
+
// packages/cli/src/ui/hooks/shellCommandProcessor.ts
|
|
1090
|
+
init_esbuild_shims();
|
|
1091
|
+
var import_react5 = __toESM(require_react(), 1);
|
|
1025
1092
|
import crypto from "node:crypto";
|
|
1026
1093
|
import path from "node:path";
|
|
1027
1094
|
import os from "node:os";
|
|
@@ -1054,8 +1121,8 @@ ${modelContent}
|
|
|
1054
1121
|
}
|
|
1055
1122
|
__name(addShellCommandToLlmHistory, "addShellCommandToLlmHistory");
|
|
1056
1123
|
var useShellCommandProcessor = /* @__PURE__ */ __name((addItemToHistory, setPendingHistoryItem, onExec, onDebugMessage, config, llmClient, setShellInputFocused, terminalWidth, terminalHeight) => {
|
|
1057
|
-
const [activeShellPtyId, setActiveShellPtyId] = (0,
|
|
1058
|
-
const handleShellCommand = (0,
|
|
1124
|
+
const [activeShellPtyId, setActiveShellPtyId] = (0, import_react5.useState)(null);
|
|
1125
|
+
const handleShellCommand = (0, import_react5.useCallback)(
|
|
1059
1126
|
(rawQuery, abortSignal) => {
|
|
1060
1127
|
if (typeof rawQuery !== "string" || rawQuery.trim() === "") {
|
|
1061
1128
|
return false;
|
|
@@ -1084,7 +1151,7 @@ var useShellCommandProcessor = /* @__PURE__ */ __name((addItemToHistory, setPend
|
|
|
1084
1151
|
commandToExecute = `{ ${command}
|
|
1085
1152
|
}; __code=$?; pwd > "${pwdFilePath}"; exit $__code`;
|
|
1086
1153
|
}
|
|
1087
|
-
const executeCommand = /* @__PURE__ */ __name(async (
|
|
1154
|
+
const executeCommand = /* @__PURE__ */ __name(async (resolve2) => {
|
|
1088
1155
|
let lastUpdateTime = Date.now();
|
|
1089
1156
|
let cumulativeStdout = "";
|
|
1090
1157
|
let isBinaryStream = false;
|
|
@@ -1117,7 +1184,7 @@ var useShellCommandProcessor = /* @__PURE__ */ __name((addItemToHistory, setPend
|
|
|
1117
1184
|
}
|
|
1118
1185
|
setActiveShellPtyId(null);
|
|
1119
1186
|
setShellInputFocused(false);
|
|
1120
|
-
|
|
1187
|
+
resolve2();
|
|
1121
1188
|
}, "cleanupShellCommand");
|
|
1122
1189
|
try {
|
|
1123
1190
|
const activeTheme = themeManager.getActiveTheme();
|
|
@@ -1285,8 +1352,8 @@ ${finalOutput}`;
|
|
|
1285
1352
|
cleanupShellCommand();
|
|
1286
1353
|
}
|
|
1287
1354
|
}, "executeCommand");
|
|
1288
|
-
const execPromise = new Promise((
|
|
1289
|
-
executeCommand(
|
|
1355
|
+
const execPromise = new Promise((resolve2) => {
|
|
1356
|
+
executeCommand(resolve2);
|
|
1290
1357
|
});
|
|
1291
1358
|
onExec(execPromise);
|
|
1292
1359
|
return true;
|
|
@@ -1306,20 +1373,98 @@ ${finalOutput}`;
|
|
|
1306
1373
|
return { handleShellCommand, activeShellPtyId };
|
|
1307
1374
|
}, "useShellCommandProcessor");
|
|
1308
1375
|
|
|
1376
|
+
// packages/cli/src/ui/components/stats-helpers.tsx
|
|
1377
|
+
init_esbuild_shims();
|
|
1378
|
+
var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
|
|
1379
|
+
var TAB_DEFS = [
|
|
1380
|
+
{ tab: "session", label: /* @__PURE__ */ __name(() => t("Session"), "label") },
|
|
1381
|
+
{ tab: "activity", label: /* @__PURE__ */ __name(() => t("Activity"), "label") },
|
|
1382
|
+
{ tab: "efficiency", label: /* @__PURE__ */ __name(() => t("Efficiency"), "label") }
|
|
1383
|
+
];
|
|
1384
|
+
var RANGE_CYCLE = ["all", "month", "week", "today"];
|
|
1385
|
+
function getHeatmapColors() {
|
|
1386
|
+
return {
|
|
1387
|
+
0: "#161b22",
|
|
1388
|
+
1: "#0e4429",
|
|
1389
|
+
2: "#006d32",
|
|
1390
|
+
3: "#26a641",
|
|
1391
|
+
4: "#39d353"
|
|
1392
|
+
};
|
|
1393
|
+
}
|
|
1394
|
+
__name(getHeatmapColors, "getHeatmapColors");
|
|
1395
|
+
function getSeriesColors() {
|
|
1396
|
+
return [
|
|
1397
|
+
theme.text.link,
|
|
1398
|
+
theme.status.error,
|
|
1399
|
+
theme.text.accent,
|
|
1400
|
+
theme.status.success,
|
|
1401
|
+
theme.status.warning,
|
|
1402
|
+
theme.text.code
|
|
1403
|
+
];
|
|
1404
|
+
}
|
|
1405
|
+
__name(getSeriesColors, "getSeriesColors");
|
|
1406
|
+
function getRangeLabel(range) {
|
|
1407
|
+
const labels = {
|
|
1408
|
+
today: t("Today"),
|
|
1409
|
+
all: t("All time"),
|
|
1410
|
+
week: t("Last 7 days"),
|
|
1411
|
+
month: t("Last 30 days")
|
|
1412
|
+
};
|
|
1413
|
+
return labels[range] ?? range;
|
|
1414
|
+
}
|
|
1415
|
+
__name(getRangeLabel, "getRangeLabel");
|
|
1416
|
+
function fmtTokens(n) {
|
|
1417
|
+
if (n >= 1e6) return `${(n / 1e6).toFixed(1)}m`;
|
|
1418
|
+
if (n >= 1e3) return `${(n / 1e3).toFixed(1)}k`;
|
|
1419
|
+
return `${n}`;
|
|
1420
|
+
}
|
|
1421
|
+
__name(fmtTokens, "fmtTokens");
|
|
1422
|
+
function fmtDurationShort(ms) {
|
|
1423
|
+
const totalMinutes = Math.floor(ms / 6e4);
|
|
1424
|
+
const days = Math.floor(totalMinutes / 1440);
|
|
1425
|
+
const hours = Math.floor(totalMinutes % 1440 / 60);
|
|
1426
|
+
const minutes = totalMinutes % 60;
|
|
1427
|
+
const d = t("d");
|
|
1428
|
+
const h = t("h");
|
|
1429
|
+
const m = t("m");
|
|
1430
|
+
if (days > 0) return `${days}${d} ${hours}${h} ${minutes}${m}`;
|
|
1431
|
+
if (hours > 0) return `${hours}${h} ${minutes}${m}`;
|
|
1432
|
+
return `${minutes}${m}`;
|
|
1433
|
+
}
|
|
1434
|
+
__name(fmtDurationShort, "fmtDurationShort");
|
|
1435
|
+
function fmtSuccessBar(rate) {
|
|
1436
|
+
const filled = Math.max(0, Math.min(10, Math.round(rate / 10)));
|
|
1437
|
+
return "\u2588".repeat(filled) + "\u2591".repeat(10 - filled);
|
|
1438
|
+
}
|
|
1439
|
+
__name(fmtSuccessBar, "fmtSuccessBar");
|
|
1440
|
+
function getSuccessColor(rate) {
|
|
1441
|
+
if (rate >= 95) return theme.status.success;
|
|
1442
|
+
if (rate >= 80) return theme.status.warning;
|
|
1443
|
+
return theme.status.error;
|
|
1444
|
+
}
|
|
1445
|
+
__name(getSuccessColor, "getSuccessColor");
|
|
1446
|
+
function getCacheColor(rate) {
|
|
1447
|
+
if (rate >= 85) return theme.status.success;
|
|
1448
|
+
if (rate >= 70) return theme.status.warning;
|
|
1449
|
+
return theme.status.error;
|
|
1450
|
+
}
|
|
1451
|
+
__name(getCacheColor, "getCacheColor");
|
|
1452
|
+
var TableRow = /* @__PURE__ */ __name(({ cells }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Box_default, { children: cells.map((cell, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Box_default, { width: cell.width, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { color: cell.color, bold: cell.bold, children: cell.text }) }, i)) }), "TableRow");
|
|
1453
|
+
|
|
1309
1454
|
// packages/cli/src/ui/hooks/useFollowupSuggestions.tsx
|
|
1310
1455
|
init_esbuild_shims();
|
|
1311
|
-
var
|
|
1456
|
+
var import_react6 = __toESM(require_react(), 1);
|
|
1312
1457
|
function useFollowupSuggestionsCLI(options = {}) {
|
|
1313
1458
|
const { enabled = true, onAccept, config, isFocused = true } = options;
|
|
1314
|
-
const [state, setState] = (0,
|
|
1315
|
-
const onAcceptRef = (0,
|
|
1459
|
+
const [state, setState] = (0, import_react6.useState)(INITIAL_FOLLOWUP_STATE);
|
|
1460
|
+
const onAcceptRef = (0, import_react6.useRef)(onAccept);
|
|
1316
1461
|
onAcceptRef.current = onAccept;
|
|
1317
|
-
const configRef = (0,
|
|
1462
|
+
const configRef = (0, import_react6.useRef)(config);
|
|
1318
1463
|
configRef.current = config;
|
|
1319
|
-
const firstKeystrokeAtRef = (0,
|
|
1320
|
-
const prevShownAtRef = (0,
|
|
1321
|
-
const wasFocusedWhenShownRef = (0,
|
|
1322
|
-
(0,
|
|
1464
|
+
const firstKeystrokeAtRef = (0, import_react6.useRef)(0);
|
|
1465
|
+
const prevShownAtRef = (0, import_react6.useRef)(0);
|
|
1466
|
+
const wasFocusedWhenShownRef = (0, import_react6.useRef)(true);
|
|
1467
|
+
(0, import_react6.useEffect)(() => {
|
|
1323
1468
|
if (state.shownAt > 0 && state.shownAt !== prevShownAtRef.current) {
|
|
1324
1469
|
prevShownAtRef.current = state.shownAt;
|
|
1325
1470
|
wasFocusedWhenShownRef.current = isFocused;
|
|
@@ -1328,12 +1473,12 @@ function useFollowupSuggestionsCLI(options = {}) {
|
|
|
1328
1473
|
prevShownAtRef.current = 0;
|
|
1329
1474
|
}
|
|
1330
1475
|
}, [state.shownAt, isFocused]);
|
|
1331
|
-
const recordKeystroke = (0,
|
|
1476
|
+
const recordKeystroke = (0, import_react6.useCallback)(() => {
|
|
1332
1477
|
if (firstKeystrokeAtRef.current === 0 && state.isVisible) {
|
|
1333
1478
|
firstKeystrokeAtRef.current = Date.now();
|
|
1334
1479
|
}
|
|
1335
1480
|
}, [state.isVisible]);
|
|
1336
|
-
const onOutcome = (0,
|
|
1481
|
+
const onOutcome = (0, import_react6.useCallback)(
|
|
1337
1482
|
(params) => {
|
|
1338
1483
|
const cfg = configRef.current;
|
|
1339
1484
|
if (!cfg) return;
|
|
@@ -1358,7 +1503,7 @@ function useFollowupSuggestionsCLI(options = {}) {
|
|
|
1358
1503
|
},
|
|
1359
1504
|
[]
|
|
1360
1505
|
);
|
|
1361
|
-
const controller = (0,
|
|
1506
|
+
const controller = (0, import_react6.useMemo)(
|
|
1362
1507
|
() => createFollowupController({
|
|
1363
1508
|
enabled,
|
|
1364
1509
|
onStateChange: setState,
|
|
@@ -1367,13 +1512,13 @@ function useFollowupSuggestionsCLI(options = {}) {
|
|
|
1367
1512
|
}),
|
|
1368
1513
|
[enabled, onOutcome]
|
|
1369
1514
|
);
|
|
1370
|
-
(0,
|
|
1515
|
+
(0, import_react6.useEffect)(() => {
|
|
1371
1516
|
if (!enabled) {
|
|
1372
1517
|
controller.clear();
|
|
1373
1518
|
}
|
|
1374
1519
|
return () => controller.cleanup();
|
|
1375
1520
|
}, [controller, enabled]);
|
|
1376
|
-
return (0,
|
|
1521
|
+
return (0, import_react6.useMemo)(
|
|
1377
1522
|
() => ({
|
|
1378
1523
|
state,
|
|
1379
1524
|
setSuggestion: controller.setSuggestion,
|
|
@@ -1387,6 +1532,330 @@ function useFollowupSuggestionsCLI(options = {}) {
|
|
|
1387
1532
|
}
|
|
1388
1533
|
__name(useFollowupSuggestionsCLI, "useFollowupSuggestionsCLI");
|
|
1389
1534
|
|
|
1535
|
+
// packages/cli/src/ui/components/AsciiArt.ts
|
|
1536
|
+
init_esbuild_shims();
|
|
1537
|
+
var shortAsciiLogo = `
|
|
1538
|
+
\u2584\u2584\u2584\u2584\u2584\u2584 \u2584\u2584 \u2584\u2584 \u2584\u2584\u2584\u2584\u2584\u2584\u2584 \u2584\u2584\u2584 \u2584\u2584
|
|
1539
|
+
\u2588\u2588\u2554\u2550\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551
|
|
1540
|
+
\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2554\u2588\u2588\u2557 \u2588\u2588\u2551
|
|
1541
|
+
\u2588\u2588\u2551\u2584\u2584 \u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u255D \u2588\u2588\u2551\u255A\u2588\u2588\u2557\u2588\u2588\u2551
|
|
1542
|
+
\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u255A\u2588\u2588\u2588\u2554\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2551
|
|
1543
|
+
\u255A\u2550\u2550\u2580\u2580\u2550\u255D \u255A\u2550\u2550\u255D\u255A\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u2550\u2550\u255D
|
|
1544
|
+
`;
|
|
1545
|
+
|
|
1546
|
+
// packages/cli/src/ui/utils/customBanner.ts
|
|
1547
|
+
init_esbuild_shims();
|
|
1548
|
+
import * as fs2 from "node:fs";
|
|
1549
|
+
import * as path2 from "node:path";
|
|
1550
|
+
var debugLogger4 = createDebugLogger("BANNER");
|
|
1551
|
+
var MAX_FILE_BYTES = 64 * 1024;
|
|
1552
|
+
var MAX_ART_LINES = 200;
|
|
1553
|
+
var MAX_ART_COLS = 200;
|
|
1554
|
+
var MAX_TITLE_LENGTH = 80;
|
|
1555
|
+
var MAX_SUBTITLE_LENGTH = 160;
|
|
1556
|
+
function resolveCustomBanner(settings) {
|
|
1557
|
+
const ui = settings.merged.ui;
|
|
1558
|
+
const cache = /* @__PURE__ */ new Map();
|
|
1559
|
+
const title = sanitizeTitle(ui?.customBannerTitle);
|
|
1560
|
+
const subtitle = sanitizeSubtitle(ui?.customBannerSubtitle);
|
|
1561
|
+
const scoped = collectScopedTiers(settings);
|
|
1562
|
+
return {
|
|
1563
|
+
asciiArt: {
|
|
1564
|
+
small: scoped.small && resolveTier(scoped.small.source, scoped.small.dir, cache),
|
|
1565
|
+
large: scoped.large && resolveTier(scoped.large.source, scoped.large.dir, cache)
|
|
1566
|
+
},
|
|
1567
|
+
title,
|
|
1568
|
+
subtitle
|
|
1569
|
+
};
|
|
1570
|
+
}
|
|
1571
|
+
__name(resolveCustomBanner, "resolveCustomBanner");
|
|
1572
|
+
function collectScopedTiers(settings) {
|
|
1573
|
+
const order = [
|
|
1574
|
+
settings.system,
|
|
1575
|
+
...settings.isTrusted ? [settings.workspace] : [],
|
|
1576
|
+
settings.user,
|
|
1577
|
+
settings.systemDefaults
|
|
1578
|
+
];
|
|
1579
|
+
let small;
|
|
1580
|
+
let large;
|
|
1581
|
+
for (const file of order) {
|
|
1582
|
+
if (small && large) break;
|
|
1583
|
+
const raw = file.settings.ui?.customAsciiArt;
|
|
1584
|
+
if (raw === void 0 || raw === null) continue;
|
|
1585
|
+
const tiers = normalizeTiers(raw);
|
|
1586
|
+
if (!tiers) continue;
|
|
1587
|
+
const dir = file.path ? path2.dirname(file.path) : "";
|
|
1588
|
+
const considerTier = /* @__PURE__ */ __name((tier, label) => {
|
|
1589
|
+
if (tier === void 0) return void 0;
|
|
1590
|
+
const isPathSource = typeof tier === "object";
|
|
1591
|
+
if (isPathSource && !dir) {
|
|
1592
|
+
debugLogger4.warn(
|
|
1593
|
+
`Ignoring ui.customAsciiArt.${label}: {path} entry has no owning settings file directory to resolve against.`
|
|
1594
|
+
);
|
|
1595
|
+
return void 0;
|
|
1596
|
+
}
|
|
1597
|
+
return { source: tier, dir };
|
|
1598
|
+
}, "considerTier");
|
|
1599
|
+
if (!small) {
|
|
1600
|
+
const next = considerTier(tiers.small, "small");
|
|
1601
|
+
if (next) small = next;
|
|
1602
|
+
}
|
|
1603
|
+
if (!large) {
|
|
1604
|
+
const next = considerTier(tiers.large, "large");
|
|
1605
|
+
if (next) large = next;
|
|
1606
|
+
}
|
|
1607
|
+
}
|
|
1608
|
+
return { small, large };
|
|
1609
|
+
}
|
|
1610
|
+
__name(collectScopedTiers, "collectScopedTiers");
|
|
1611
|
+
function normalizeTiers(value) {
|
|
1612
|
+
if (typeof value === "string") {
|
|
1613
|
+
return { small: value, large: value };
|
|
1614
|
+
}
|
|
1615
|
+
if (!value || typeof value !== "object") {
|
|
1616
|
+
debugLogger4.warn(
|
|
1617
|
+
"Ignoring ui.customAsciiArt: expected a string, {path}, or {small,large} object."
|
|
1618
|
+
);
|
|
1619
|
+
return void 0;
|
|
1620
|
+
}
|
|
1621
|
+
const hasPath = "path" in value && typeof value.path === "string";
|
|
1622
|
+
const hasTierKeys = "small" in value || "large" in value;
|
|
1623
|
+
if (hasPath && hasTierKeys) {
|
|
1624
|
+
debugLogger4.warn(
|
|
1625
|
+
"Ignoring ui.customAsciiArt: object combines `path` with `small` / `large`. Use one shape or the other."
|
|
1626
|
+
);
|
|
1627
|
+
return void 0;
|
|
1628
|
+
}
|
|
1629
|
+
if (hasPath) {
|
|
1630
|
+
return { small: value, large: value };
|
|
1631
|
+
}
|
|
1632
|
+
if (hasTierKeys) {
|
|
1633
|
+
const tiered = value;
|
|
1634
|
+
return {
|
|
1635
|
+
small: validateSource(tiered.small),
|
|
1636
|
+
large: validateSource(tiered.large)
|
|
1637
|
+
};
|
|
1638
|
+
}
|
|
1639
|
+
debugLogger4.warn(
|
|
1640
|
+
"Ignoring ui.customAsciiArt: expected a string, {path}, or {small,large} object."
|
|
1641
|
+
);
|
|
1642
|
+
return void 0;
|
|
1643
|
+
}
|
|
1644
|
+
__name(normalizeTiers, "normalizeTiers");
|
|
1645
|
+
function validateSource(source) {
|
|
1646
|
+
if (source === void 0 || source === null) return void 0;
|
|
1647
|
+
if (typeof source === "string") return source;
|
|
1648
|
+
if (typeof source === "object" && "path" in source && typeof source.path === "string") {
|
|
1649
|
+
return { path: source.path };
|
|
1650
|
+
}
|
|
1651
|
+
debugLogger4.warn(
|
|
1652
|
+
"Ignoring ui.customAsciiArt tier: expected a string or {path} object."
|
|
1653
|
+
);
|
|
1654
|
+
return void 0;
|
|
1655
|
+
}
|
|
1656
|
+
__name(validateSource, "validateSource");
|
|
1657
|
+
function resolveTier(source, ownerDir, cache) {
|
|
1658
|
+
if (source === void 0) return void 0;
|
|
1659
|
+
if (typeof source === "string") {
|
|
1660
|
+
const trimmed = source.trim();
|
|
1661
|
+
if (!trimmed) return void 0;
|
|
1662
|
+
const key = `inline:${source}`;
|
|
1663
|
+
return memo(cache, key, () => sanitizeArt(source));
|
|
1664
|
+
}
|
|
1665
|
+
const resolvedPath = path2.isAbsolute(source.path) ? source.path : path2.resolve(ownerDir, source.path);
|
|
1666
|
+
return memo(cache, `path:${resolvedPath}`, () => {
|
|
1667
|
+
const raw = readArtFile(resolvedPath);
|
|
1668
|
+
if (raw === void 0) return void 0;
|
|
1669
|
+
return sanitizeArt(raw);
|
|
1670
|
+
});
|
|
1671
|
+
}
|
|
1672
|
+
__name(resolveTier, "resolveTier");
|
|
1673
|
+
function memo(cache, key, compute) {
|
|
1674
|
+
const hit = cache.get(key);
|
|
1675
|
+
if (hit) return hit.value;
|
|
1676
|
+
const value = compute();
|
|
1677
|
+
cache.set(key, { value });
|
|
1678
|
+
return value;
|
|
1679
|
+
}
|
|
1680
|
+
__name(memo, "memo");
|
|
1681
|
+
function readArtFile(absolutePath) {
|
|
1682
|
+
let fd;
|
|
1683
|
+
try {
|
|
1684
|
+
let preOpenStat;
|
|
1685
|
+
try {
|
|
1686
|
+
preOpenStat = fs2.lstatSync(absolutePath);
|
|
1687
|
+
} catch (err) {
|
|
1688
|
+
debugLogger4.warn(
|
|
1689
|
+
`Failed to stat ui.customAsciiArt at ${absolutePath}: ${err.message}`
|
|
1690
|
+
);
|
|
1691
|
+
return void 0;
|
|
1692
|
+
}
|
|
1693
|
+
if (!preOpenStat.isFile()) {
|
|
1694
|
+
debugLogger4.warn(
|
|
1695
|
+
`Ignoring ui.customAsciiArt: ${absolutePath} is not a regular file.`
|
|
1696
|
+
);
|
|
1697
|
+
return void 0;
|
|
1698
|
+
}
|
|
1699
|
+
const flags = typeof fs2.constants.O_NOFOLLOW === "number" ? fs2.constants.O_RDONLY | fs2.constants.O_NOFOLLOW : fs2.constants.O_RDONLY;
|
|
1700
|
+
fd = fs2.openSync(absolutePath, flags);
|
|
1701
|
+
const stat = fs2.fstatSync(fd);
|
|
1702
|
+
if (!stat.isFile()) {
|
|
1703
|
+
debugLogger4.warn(
|
|
1704
|
+
`Ignoring ui.customAsciiArt: ${absolutePath} is not a regular file.`
|
|
1705
|
+
);
|
|
1706
|
+
return void 0;
|
|
1707
|
+
}
|
|
1708
|
+
const size = Math.min(stat.size, MAX_FILE_BYTES);
|
|
1709
|
+
const buffer = Buffer.alloc(size);
|
|
1710
|
+
fs2.readSync(fd, buffer, 0, size, 0);
|
|
1711
|
+
if (stat.size > MAX_FILE_BYTES) {
|
|
1712
|
+
debugLogger4.warn(
|
|
1713
|
+
`Truncated ui.customAsciiArt at ${absolutePath}: file is ${stat.size} bytes, capped at ${MAX_FILE_BYTES}.`
|
|
1714
|
+
);
|
|
1715
|
+
}
|
|
1716
|
+
return buffer.toString("utf8");
|
|
1717
|
+
} catch (err) {
|
|
1718
|
+
debugLogger4.warn(
|
|
1719
|
+
`Failed to read ui.customAsciiArt at ${absolutePath}: ${err.message}`
|
|
1720
|
+
);
|
|
1721
|
+
return void 0;
|
|
1722
|
+
} finally {
|
|
1723
|
+
if (fd !== void 0) {
|
|
1724
|
+
try {
|
|
1725
|
+
fs2.closeSync(fd);
|
|
1726
|
+
} catch {
|
|
1727
|
+
}
|
|
1728
|
+
}
|
|
1729
|
+
}
|
|
1730
|
+
}
|
|
1731
|
+
__name(readArtFile, "readArtFile");
|
|
1732
|
+
function sanitizeArt(input) {
|
|
1733
|
+
let s = input.replace(/\r\n?/g, "\n");
|
|
1734
|
+
s = s.replace(TERMINAL_OSC_REGEX, " ").replace(TERMINAL_CSI_REGEX, " ").replace(TERMINAL_SHIFT_DCS_REGEX, " ");
|
|
1735
|
+
s = s.replace(/[\x00-\x08\x0b-\x1f\x7f-\x9f]/g, " ");
|
|
1736
|
+
const rawLines = s.split("\n");
|
|
1737
|
+
const truncatedRows = rawLines.length > MAX_ART_LINES;
|
|
1738
|
+
const limitedLines = truncatedRows ? rawLines.slice(0, MAX_ART_LINES) : rawLines;
|
|
1739
|
+
let truncatedCols = false;
|
|
1740
|
+
const cappedLines = limitedLines.map((line) => {
|
|
1741
|
+
const detabbed = line.replace(/\t/g, " ");
|
|
1742
|
+
const trimmed = detabbed.replace(/\s+$/u, "");
|
|
1743
|
+
if (getCachedStringWidth(trimmed) <= MAX_ART_COLS) {
|
|
1744
|
+
return trimmed;
|
|
1745
|
+
}
|
|
1746
|
+
truncatedCols = true;
|
|
1747
|
+
const codePoints = toCodePoints(trimmed);
|
|
1748
|
+
let kept = "";
|
|
1749
|
+
for (const cp of codePoints) {
|
|
1750
|
+
if (getCachedStringWidth(kept + cp) > MAX_ART_COLS) break;
|
|
1751
|
+
kept += cp;
|
|
1752
|
+
}
|
|
1753
|
+
return kept;
|
|
1754
|
+
});
|
|
1755
|
+
while (cappedLines.length > 0 && cappedLines[cappedLines.length - 1] === "") {
|
|
1756
|
+
cappedLines.pop();
|
|
1757
|
+
}
|
|
1758
|
+
if (cappedLines.length === 0) return "";
|
|
1759
|
+
if (truncatedRows) {
|
|
1760
|
+
debugLogger4.warn(`Truncated ui.customAsciiArt to ${MAX_ART_LINES} lines.`);
|
|
1761
|
+
}
|
|
1762
|
+
if (truncatedCols) {
|
|
1763
|
+
debugLogger4.warn(
|
|
1764
|
+
`Truncated ui.customAsciiArt to ${MAX_ART_COLS} columns per line.`
|
|
1765
|
+
);
|
|
1766
|
+
}
|
|
1767
|
+
return cappedLines.join("\n");
|
|
1768
|
+
}
|
|
1769
|
+
__name(sanitizeArt, "sanitizeArt");
|
|
1770
|
+
function sanitizeTitle(raw) {
|
|
1771
|
+
return sanitizeSingleLine(raw, MAX_TITLE_LENGTH, "ui.customBannerTitle");
|
|
1772
|
+
}
|
|
1773
|
+
__name(sanitizeTitle, "sanitizeTitle");
|
|
1774
|
+
function sanitizeSubtitle(raw) {
|
|
1775
|
+
return sanitizeSingleLine(
|
|
1776
|
+
raw,
|
|
1777
|
+
MAX_SUBTITLE_LENGTH,
|
|
1778
|
+
"ui.customBannerSubtitle"
|
|
1779
|
+
);
|
|
1780
|
+
}
|
|
1781
|
+
__name(sanitizeSubtitle, "sanitizeSubtitle");
|
|
1782
|
+
function sanitizeSingleLine(raw, maxLength, fieldLabel) {
|
|
1783
|
+
if (typeof raw !== "string") return void 0;
|
|
1784
|
+
let t2 = stripTerminalControlSequences(raw).replace(/\s+/g, " ").trim();
|
|
1785
|
+
if (!t2) return void 0;
|
|
1786
|
+
if (t2.length > maxLength) {
|
|
1787
|
+
debugLogger4.warn(`Truncated ${fieldLabel} to ${maxLength} characters.`);
|
|
1788
|
+
t2 = t2.slice(0, maxLength);
|
|
1789
|
+
}
|
|
1790
|
+
return t2;
|
|
1791
|
+
}
|
|
1792
|
+
__name(sanitizeSingleLine, "sanitizeSingleLine");
|
|
1793
|
+
function pickAsciiArtTier(small, large, availableWidth, logoGap, minInfoPanelWidth, measureWidth) {
|
|
1794
|
+
for (const candidate of [large, small]) {
|
|
1795
|
+
if (!candidate) continue;
|
|
1796
|
+
const w = measureWidth(candidate);
|
|
1797
|
+
if (availableWidth >= w + logoGap + minInfoPanelWidth) {
|
|
1798
|
+
return candidate;
|
|
1799
|
+
}
|
|
1800
|
+
}
|
|
1801
|
+
return void 0;
|
|
1802
|
+
}
|
|
1803
|
+
__name(pickAsciiArtTier, "pickAsciiArtTier");
|
|
1804
|
+
|
|
1805
|
+
// packages/cli/src/ui/hooks/usePhraseCycler.ts
|
|
1806
|
+
init_esbuild_shims();
|
|
1807
|
+
var import_react7 = __toESM(require_react(), 1);
|
|
1808
|
+
var WITTY_LOADING_PHRASES = ["I'm Feeling Lucky"];
|
|
1809
|
+
var PHRASE_CHANGE_INTERVAL_MS = 15e3;
|
|
1810
|
+
var usePhraseCycler = /* @__PURE__ */ __name((isActive, isWaiting, customPhrases) => {
|
|
1811
|
+
const currentLanguage = getCurrentLanguage();
|
|
1812
|
+
const loadingPhrases = (0, import_react7.useMemo)(() => {
|
|
1813
|
+
if (customPhrases && customPhrases.length > 0) {
|
|
1814
|
+
return customPhrases;
|
|
1815
|
+
}
|
|
1816
|
+
const translatedPhrases = ta("WITTY_LOADING_PHRASES");
|
|
1817
|
+
return translatedPhrases.length > 0 ? translatedPhrases : WITTY_LOADING_PHRASES;
|
|
1818
|
+
}, [customPhrases, currentLanguage]);
|
|
1819
|
+
const [currentLoadingPhrase, setCurrentLoadingPhrase] = (0, import_react7.useState)(
|
|
1820
|
+
loadingPhrases[0]
|
|
1821
|
+
);
|
|
1822
|
+
const phraseIntervalRef = (0, import_react7.useRef)(null);
|
|
1823
|
+
(0, import_react7.useEffect)(() => {
|
|
1824
|
+
if (isWaiting) {
|
|
1825
|
+
setCurrentLoadingPhrase(t("Waiting for user confirmation..."));
|
|
1826
|
+
if (phraseIntervalRef.current) {
|
|
1827
|
+
clearInterval(phraseIntervalRef.current);
|
|
1828
|
+
phraseIntervalRef.current = null;
|
|
1829
|
+
}
|
|
1830
|
+
} else if (isActive) {
|
|
1831
|
+
if (phraseIntervalRef.current) {
|
|
1832
|
+
clearInterval(phraseIntervalRef.current);
|
|
1833
|
+
}
|
|
1834
|
+
const initialRandomIndex = Math.floor(
|
|
1835
|
+
Math.random() * loadingPhrases.length
|
|
1836
|
+
);
|
|
1837
|
+
setCurrentLoadingPhrase(loadingPhrases[initialRandomIndex]);
|
|
1838
|
+
phraseIntervalRef.current = setInterval(() => {
|
|
1839
|
+
const randomIndex = Math.floor(Math.random() * loadingPhrases.length);
|
|
1840
|
+
setCurrentLoadingPhrase(loadingPhrases[randomIndex]);
|
|
1841
|
+
}, PHRASE_CHANGE_INTERVAL_MS);
|
|
1842
|
+
} else {
|
|
1843
|
+
if (phraseIntervalRef.current) {
|
|
1844
|
+
clearInterval(phraseIntervalRef.current);
|
|
1845
|
+
phraseIntervalRef.current = null;
|
|
1846
|
+
}
|
|
1847
|
+
setCurrentLoadingPhrase(loadingPhrases[0]);
|
|
1848
|
+
}
|
|
1849
|
+
return () => {
|
|
1850
|
+
if (phraseIntervalRef.current) {
|
|
1851
|
+
clearInterval(phraseIntervalRef.current);
|
|
1852
|
+
phraseIntervalRef.current = null;
|
|
1853
|
+
}
|
|
1854
|
+
};
|
|
1855
|
+
}, [isActive, isWaiting, loadingPhrases]);
|
|
1856
|
+
return currentLoadingPhrase;
|
|
1857
|
+
}, "usePhraseCycler");
|
|
1858
|
+
|
|
1390
1859
|
// packages/cli/src/ui/components/mcp/utils.ts
|
|
1391
1860
|
init_esbuild_shims();
|
|
1392
1861
|
|
|
@@ -1539,87 +2008,9 @@ function getScopeMessageForSetting(settingKey, selectedScope, settings) {
|
|
|
1539
2008
|
}
|
|
1540
2009
|
__name(getScopeMessageForSetting, "getScopeMessageForSetting");
|
|
1541
2010
|
|
|
1542
|
-
// packages/cli/src/ui/components/stats-helpers.tsx
|
|
1543
|
-
init_esbuild_shims();
|
|
1544
|
-
var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
|
|
1545
|
-
var TAB_DEFS = [
|
|
1546
|
-
{ tab: "session", label: /* @__PURE__ */ __name(() => t("Session"), "label") },
|
|
1547
|
-
{ tab: "activity", label: /* @__PURE__ */ __name(() => t("Activity"), "label") },
|
|
1548
|
-
{ tab: "efficiency", label: /* @__PURE__ */ __name(() => t("Efficiency"), "label") }
|
|
1549
|
-
];
|
|
1550
|
-
var RANGE_CYCLE = ["all", "month", "week", "today"];
|
|
1551
|
-
function getHeatmapColors() {
|
|
1552
|
-
return {
|
|
1553
|
-
0: "#161b22",
|
|
1554
|
-
1: "#0e4429",
|
|
1555
|
-
2: "#006d32",
|
|
1556
|
-
3: "#26a641",
|
|
1557
|
-
4: "#39d353"
|
|
1558
|
-
};
|
|
1559
|
-
}
|
|
1560
|
-
__name(getHeatmapColors, "getHeatmapColors");
|
|
1561
|
-
function getSeriesColors() {
|
|
1562
|
-
return [
|
|
1563
|
-
theme.text.link,
|
|
1564
|
-
theme.status.error,
|
|
1565
|
-
theme.text.accent,
|
|
1566
|
-
theme.status.success,
|
|
1567
|
-
theme.status.warning,
|
|
1568
|
-
theme.text.code
|
|
1569
|
-
];
|
|
1570
|
-
}
|
|
1571
|
-
__name(getSeriesColors, "getSeriesColors");
|
|
1572
|
-
function getRangeLabel(range) {
|
|
1573
|
-
const labels = {
|
|
1574
|
-
today: t("Today"),
|
|
1575
|
-
all: t("All time"),
|
|
1576
|
-
week: t("Last 7 days"),
|
|
1577
|
-
month: t("Last 30 days")
|
|
1578
|
-
};
|
|
1579
|
-
return labels[range] ?? range;
|
|
1580
|
-
}
|
|
1581
|
-
__name(getRangeLabel, "getRangeLabel");
|
|
1582
|
-
function fmtTokens(n) {
|
|
1583
|
-
if (n >= 1e6) return `${(n / 1e6).toFixed(1)}m`;
|
|
1584
|
-
if (n >= 1e3) return `${(n / 1e3).toFixed(1)}k`;
|
|
1585
|
-
return `${n}`;
|
|
1586
|
-
}
|
|
1587
|
-
__name(fmtTokens, "fmtTokens");
|
|
1588
|
-
function fmtDurationShort(ms) {
|
|
1589
|
-
const totalMinutes = Math.floor(ms / 6e4);
|
|
1590
|
-
const days = Math.floor(totalMinutes / 1440);
|
|
1591
|
-
const hours = Math.floor(totalMinutes % 1440 / 60);
|
|
1592
|
-
const minutes = totalMinutes % 60;
|
|
1593
|
-
const d = t("d");
|
|
1594
|
-
const h = t("h");
|
|
1595
|
-
const m = t("m");
|
|
1596
|
-
if (days > 0) return `${days}${d} ${hours}${h} ${minutes}${m}`;
|
|
1597
|
-
if (hours > 0) return `${hours}${h} ${minutes}${m}`;
|
|
1598
|
-
return `${minutes}${m}`;
|
|
1599
|
-
}
|
|
1600
|
-
__name(fmtDurationShort, "fmtDurationShort");
|
|
1601
|
-
function fmtSuccessBar(rate) {
|
|
1602
|
-
const filled = Math.max(0, Math.min(10, Math.round(rate / 10)));
|
|
1603
|
-
return "\u2588".repeat(filled) + "\u2591".repeat(10 - filled);
|
|
1604
|
-
}
|
|
1605
|
-
__name(fmtSuccessBar, "fmtSuccessBar");
|
|
1606
|
-
function getSuccessColor(rate) {
|
|
1607
|
-
if (rate >= 95) return theme.status.success;
|
|
1608
|
-
if (rate >= 80) return theme.status.warning;
|
|
1609
|
-
return theme.status.error;
|
|
1610
|
-
}
|
|
1611
|
-
__name(getSuccessColor, "getSuccessColor");
|
|
1612
|
-
function getCacheColor(rate) {
|
|
1613
|
-
if (rate >= 85) return theme.status.success;
|
|
1614
|
-
if (rate >= 70) return theme.status.warning;
|
|
1615
|
-
return theme.status.error;
|
|
1616
|
-
}
|
|
1617
|
-
__name(getCacheColor, "getCacheColor");
|
|
1618
|
-
var TableRow = /* @__PURE__ */ __name(({ cells }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Box_default, { children: cells.map((cell, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Box_default, { width: cell.width, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { color: cell.color, bold: cell.bold, children: cell.text }) }, i)) }), "TableRow");
|
|
1619
|
-
|
|
1620
2011
|
// packages/cli/src/ui/auth/useProviderSetupFlow.ts
|
|
1621
2012
|
init_esbuild_shims();
|
|
1622
|
-
var
|
|
2013
|
+
var import_react8 = __toESM(require_react(), 1);
|
|
1623
2014
|
var STEP_ORDER = [
|
|
1624
2015
|
"protocol",
|
|
1625
2016
|
"baseUrl",
|
|
@@ -1636,28 +2027,28 @@ function getVisibleSteps(config) {
|
|
|
1636
2027
|
}
|
|
1637
2028
|
__name(getVisibleSteps, "getVisibleSteps");
|
|
1638
2029
|
function useProviderSetupFlow(onSubmit) {
|
|
1639
|
-
const [provider, setProvider] = (0,
|
|
1640
|
-
const [visibleSteps, setVisibleSteps] = (0,
|
|
1641
|
-
const [stepIndex, setStepIndex] = (0,
|
|
1642
|
-
const [protocol, setProtocol] = (0,
|
|
1643
|
-
const [baseUrl, setBaseUrl] = (0,
|
|
1644
|
-
const [baseUrlPlaceholder, setBaseUrlPlaceholder] = (0,
|
|
1645
|
-
const [baseUrlOptionIndex, setBaseUrlOptionIndex] = (0,
|
|
1646
|
-
const [baseUrlError, setBaseUrlError] = (0,
|
|
1647
|
-
const [apiKey, setApiKey] = (0,
|
|
1648
|
-
const [apiKeyError, setApiKeyError] = (0,
|
|
1649
|
-
const [modelIds, setModelIds] = (0,
|
|
1650
|
-
const [modelIdsError, setModelIdsError] = (0,
|
|
1651
|
-
const [thinkingEnabled, setThinkingEnabled] = (0,
|
|
1652
|
-
const [modalityEnabled, setModalityEnabled] = (0,
|
|
1653
|
-
const [modalityImage, setModalityImage] = (0,
|
|
1654
|
-
const [modalityVideo, setModalityVideo] = (0,
|
|
1655
|
-
const [modalityAudio, setModalityAudio] = (0,
|
|
1656
|
-
const [modalityPdf, setModalityPdf] = (0,
|
|
1657
|
-
const [contextWindowSize, setContextWindowSize] = (0,
|
|
1658
|
-
const [focusedConfigIndex, setFocusedConfigIndex] = (0,
|
|
2030
|
+
const [provider, setProvider] = (0, import_react8.useState)(null);
|
|
2031
|
+
const [visibleSteps, setVisibleSteps] = (0, import_react8.useState)([]);
|
|
2032
|
+
const [stepIndex, setStepIndex] = (0, import_react8.useState)(0);
|
|
2033
|
+
const [protocol, setProtocol] = (0, import_react8.useState)("openai" /* USE_OPENAI */);
|
|
2034
|
+
const [baseUrl, setBaseUrl] = (0, import_react8.useState)("");
|
|
2035
|
+
const [baseUrlPlaceholder, setBaseUrlPlaceholder] = (0, import_react8.useState)("");
|
|
2036
|
+
const [baseUrlOptionIndex, setBaseUrlOptionIndex] = (0, import_react8.useState)(0);
|
|
2037
|
+
const [baseUrlError, setBaseUrlError] = (0, import_react8.useState)(null);
|
|
2038
|
+
const [apiKey, setApiKey] = (0, import_react8.useState)("");
|
|
2039
|
+
const [apiKeyError, setApiKeyError] = (0, import_react8.useState)(null);
|
|
2040
|
+
const [modelIds, setModelIds] = (0, import_react8.useState)("");
|
|
2041
|
+
const [modelIdsError, setModelIdsError] = (0, import_react8.useState)(null);
|
|
2042
|
+
const [thinkingEnabled, setThinkingEnabled] = (0, import_react8.useState)(false);
|
|
2043
|
+
const [modalityEnabled, setModalityEnabled] = (0, import_react8.useState)(false);
|
|
2044
|
+
const [modalityImage, setModalityImage] = (0, import_react8.useState)(true);
|
|
2045
|
+
const [modalityVideo, setModalityVideo] = (0, import_react8.useState)(true);
|
|
2046
|
+
const [modalityAudio, setModalityAudio] = (0, import_react8.useState)(false);
|
|
2047
|
+
const [modalityPdf, setModalityPdf] = (0, import_react8.useState)(false);
|
|
2048
|
+
const [contextWindowSize, setContextWindowSize] = (0, import_react8.useState)("");
|
|
2049
|
+
const [focusedConfigIndex, setFocusedConfigIndex] = (0, import_react8.useState)(0);
|
|
1659
2050
|
const currentStep = visibleSteps[stepIndex] ?? null;
|
|
1660
|
-
const start = (0,
|
|
2051
|
+
const start = (0, import_react8.useCallback)(
|
|
1661
2052
|
(config, initialProtocol, existingEnv, existingModelIds) => {
|
|
1662
2053
|
setProvider(config);
|
|
1663
2054
|
const steps = getVisibleSteps(config);
|
|
@@ -1694,12 +2085,12 @@ function useProviderSetupFlow(onSubmit) {
|
|
|
1694
2085
|
},
|
|
1695
2086
|
[]
|
|
1696
2087
|
);
|
|
1697
|
-
const reset = (0,
|
|
2088
|
+
const reset = (0, import_react8.useCallback)(() => {
|
|
1698
2089
|
setProvider(null);
|
|
1699
2090
|
setVisibleSteps([]);
|
|
1700
2091
|
setStepIndex(0);
|
|
1701
2092
|
}, []);
|
|
1702
|
-
const goBack = (0,
|
|
2093
|
+
const goBack = (0, import_react8.useCallback)(() => {
|
|
1703
2094
|
if (stepIndex > 0) {
|
|
1704
2095
|
setStepIndex((i) => i - 1);
|
|
1705
2096
|
return true;
|
|
@@ -1707,10 +2098,10 @@ function useProviderSetupFlow(onSubmit) {
|
|
|
1707
2098
|
reset();
|
|
1708
2099
|
return false;
|
|
1709
2100
|
}, [stepIndex, reset]);
|
|
1710
|
-
const goNext = (0,
|
|
2101
|
+
const goNext = (0, import_react8.useCallback)(() => {
|
|
1711
2102
|
setStepIndex((i) => Math.min(i + 1, visibleSteps.length - 1));
|
|
1712
2103
|
}, [visibleSteps]);
|
|
1713
|
-
const selectProtocol = (0,
|
|
2104
|
+
const selectProtocol = (0, import_react8.useCallback)(
|
|
1714
2105
|
(selectedProtocol) => {
|
|
1715
2106
|
setProtocol(selectedProtocol);
|
|
1716
2107
|
setBaseUrl("");
|
|
@@ -1721,7 +2112,7 @@ function useProviderSetupFlow(onSubmit) {
|
|
|
1721
2112
|
},
|
|
1722
2113
|
[goNext]
|
|
1723
2114
|
);
|
|
1724
|
-
const selectBaseUrl = (0,
|
|
2115
|
+
const selectBaseUrl = (0, import_react8.useCallback)(
|
|
1725
2116
|
(selectedUrl) => {
|
|
1726
2117
|
setBaseUrl(selectedUrl);
|
|
1727
2118
|
setBaseUrlError(null);
|
|
@@ -1729,7 +2120,7 @@ function useProviderSetupFlow(onSubmit) {
|
|
|
1729
2120
|
},
|
|
1730
2121
|
[goNext]
|
|
1731
2122
|
);
|
|
1732
|
-
const submitBaseUrl = (0,
|
|
2123
|
+
const submitBaseUrl = (0, import_react8.useCallback)(() => {
|
|
1733
2124
|
const effective = baseUrl.trim() || baseUrlPlaceholder.trim();
|
|
1734
2125
|
if (!effective) {
|
|
1735
2126
|
setBaseUrlError(t("Base URL cannot be empty."));
|
|
@@ -1746,15 +2137,15 @@ function useProviderSetupFlow(onSubmit) {
|
|
|
1746
2137
|
goNext();
|
|
1747
2138
|
return true;
|
|
1748
2139
|
}, [baseUrl, baseUrlPlaceholder, goNext]);
|
|
1749
|
-
const changeBaseUrl = (0,
|
|
2140
|
+
const changeBaseUrl = (0, import_react8.useCallback)((value) => {
|
|
1750
2141
|
setBaseUrl(value);
|
|
1751
2142
|
setBaseUrlError(null);
|
|
1752
2143
|
}, []);
|
|
1753
|
-
const changeApiKey = (0,
|
|
2144
|
+
const changeApiKey = (0, import_react8.useCallback)((value) => {
|
|
1754
2145
|
setApiKey(value);
|
|
1755
2146
|
setApiKeyError(null);
|
|
1756
2147
|
}, []);
|
|
1757
|
-
const buildCurrentInputs = (0,
|
|
2148
|
+
const buildCurrentInputs = (0, import_react8.useCallback)(
|
|
1758
2149
|
(overrides) => ({
|
|
1759
2150
|
protocol: provider?.protocolOptions ? protocol : void 0,
|
|
1760
2151
|
baseUrl: baseUrl.trim(),
|
|
@@ -1764,7 +2155,7 @@ function useProviderSetupFlow(onSubmit) {
|
|
|
1764
2155
|
}),
|
|
1765
2156
|
[provider, protocol, baseUrl, apiKey, modelIds]
|
|
1766
2157
|
);
|
|
1767
|
-
const submitOrNext = (0,
|
|
2158
|
+
const submitOrNext = (0, import_react8.useCallback)(
|
|
1768
2159
|
(overrides) => {
|
|
1769
2160
|
if (stepIndex >= visibleSteps.length - 1) {
|
|
1770
2161
|
if (provider) void onSubmit(provider, buildCurrentInputs(overrides));
|
|
@@ -1774,7 +2165,7 @@ function useProviderSetupFlow(onSubmit) {
|
|
|
1774
2165
|
},
|
|
1775
2166
|
[stepIndex, visibleSteps, provider, onSubmit, buildCurrentInputs, goNext]
|
|
1776
2167
|
);
|
|
1777
|
-
const submitApiKey = (0,
|
|
2168
|
+
const submitApiKey = (0, import_react8.useCallback)(
|
|
1778
2169
|
(keyOverride) => {
|
|
1779
2170
|
const trimmed = (keyOverride ?? apiKey).trim();
|
|
1780
2171
|
if (!trimmed) {
|
|
@@ -1795,7 +2186,7 @@ function useProviderSetupFlow(onSubmit) {
|
|
|
1795
2186
|
},
|
|
1796
2187
|
[apiKey, provider, baseUrl, submitOrNext]
|
|
1797
2188
|
);
|
|
1798
|
-
const highlightBaseUrl = (0,
|
|
2189
|
+
const highlightBaseUrl = (0, import_react8.useCallback)(
|
|
1799
2190
|
(url) => {
|
|
1800
2191
|
if (provider && Array.isArray(provider.baseUrl)) {
|
|
1801
2192
|
const idx = provider.baseUrl.findIndex((o) => o.url === url);
|
|
@@ -1804,14 +2195,14 @@ function useProviderSetupFlow(onSubmit) {
|
|
|
1804
2195
|
},
|
|
1805
2196
|
[provider]
|
|
1806
2197
|
);
|
|
1807
|
-
const changeModelIds = (0,
|
|
2198
|
+
const changeModelIds = (0, import_react8.useCallback)((value) => {
|
|
1808
2199
|
setModelIds(value);
|
|
1809
2200
|
setModelIdsError(null);
|
|
1810
2201
|
}, []);
|
|
1811
|
-
const clearModelIdsError = (0,
|
|
2202
|
+
const clearModelIdsError = (0, import_react8.useCallback)(() => {
|
|
1812
2203
|
setModelIdsError(null);
|
|
1813
2204
|
}, []);
|
|
1814
|
-
const submitModelIds = (0,
|
|
2205
|
+
const submitModelIds = (0, import_react8.useCallback)(
|
|
1815
2206
|
(overrides) => {
|
|
1816
2207
|
const normalized = overrides?.modelIds ?? normalizeModelIds(modelIds);
|
|
1817
2208
|
if (normalized.length === 0) {
|
|
@@ -1826,13 +2217,13 @@ function useProviderSetupFlow(onSubmit) {
|
|
|
1826
2217
|
[modelIds, submitOrNext]
|
|
1827
2218
|
);
|
|
1828
2219
|
const advancedOptionCount = modalityEnabled ? 7 : 3;
|
|
1829
|
-
const moveAdvancedFocusUp = (0,
|
|
2220
|
+
const moveAdvancedFocusUp = (0, import_react8.useCallback)(() => {
|
|
1830
2221
|
setFocusedConfigIndex((v) => v <= 0 ? advancedOptionCount - 1 : v - 1);
|
|
1831
2222
|
}, [advancedOptionCount]);
|
|
1832
|
-
const moveAdvancedFocusDown = (0,
|
|
2223
|
+
const moveAdvancedFocusDown = (0, import_react8.useCallback)(() => {
|
|
1833
2224
|
setFocusedConfigIndex((v) => v >= advancedOptionCount - 1 ? 0 : v + 1);
|
|
1834
2225
|
}, [advancedOptionCount]);
|
|
1835
|
-
const toggleFocusedAdvancedOption = (0,
|
|
2226
|
+
const toggleFocusedAdvancedOption = (0, import_react8.useCallback)(() => {
|
|
1836
2227
|
switch (focusedConfigIndex) {
|
|
1837
2228
|
case 0:
|
|
1838
2229
|
setThinkingEnabled((v) => !v);
|
|
@@ -1856,13 +2247,13 @@ function useProviderSetupFlow(onSubmit) {
|
|
|
1856
2247
|
break;
|
|
1857
2248
|
}
|
|
1858
2249
|
}, [focusedConfigIndex]);
|
|
1859
|
-
const submitAdvancedConfig = (0,
|
|
2250
|
+
const submitAdvancedConfig = (0, import_react8.useCallback)(() => {
|
|
1860
2251
|
goNext();
|
|
1861
2252
|
}, [goNext]);
|
|
1862
|
-
const changeContextWindowSize = (0,
|
|
2253
|
+
const changeContextWindowSize = (0, import_react8.useCallback)((value) => {
|
|
1863
2254
|
setContextWindowSize(value.replace(/[^0-9]/g, ""));
|
|
1864
2255
|
}, []);
|
|
1865
|
-
const submit = (0,
|
|
2256
|
+
const submit = (0, import_react8.useCallback)(() => {
|
|
1866
2257
|
if (!provider) return;
|
|
1867
2258
|
const multimodal = modalityEnabled ? {
|
|
1868
2259
|
image: modalityImage || void 0,
|
|
@@ -1890,13 +2281,19 @@ function useProviderSetupFlow(onSubmit) {
|
|
|
1890
2281
|
onSubmit,
|
|
1891
2282
|
buildCurrentInputs
|
|
1892
2283
|
]);
|
|
1893
|
-
const getPreviewJson = (0,
|
|
2284
|
+
const getPreviewJson = (0, import_react8.useCallback)(() => {
|
|
1894
2285
|
if (!provider) return "";
|
|
1895
2286
|
const envKey = typeof provider.envKey === "function" ? provider.envKey(protocol, baseUrl.trim()) : provider.envKey;
|
|
1896
2287
|
const normalizedIds = normalizeModelIds(modelIds);
|
|
1897
2288
|
const masked = maskApiKey(apiKey);
|
|
1898
2289
|
const genConfig = {};
|
|
1899
|
-
if (thinkingEnabled)
|
|
2290
|
+
if (thinkingEnabled) {
|
|
2291
|
+
if (protocol === "openai-responses" /* USE_OPENAI_RESPONSES */) {
|
|
2292
|
+
genConfig["reasoning"] = { effort: "medium" };
|
|
2293
|
+
} else {
|
|
2294
|
+
genConfig["extra_body"] = { enable_thinking: true };
|
|
2295
|
+
}
|
|
2296
|
+
}
|
|
1900
2297
|
if (modalityEnabled) {
|
|
1901
2298
|
const mod = {};
|
|
1902
2299
|
if (modalityImage) mod["image"] = true;
|
|
@@ -2075,6 +2472,11 @@ export {
|
|
|
2075
2472
|
EDITOR_DISPLAY_NAMES,
|
|
2076
2473
|
editorSettingsManager,
|
|
2077
2474
|
useFollowupSuggestionsCLI,
|
|
2475
|
+
shortAsciiLogo,
|
|
2476
|
+
resolveCustomBanner,
|
|
2477
|
+
pickAsciiArtTier,
|
|
2478
|
+
usePhraseCycler,
|
|
2479
|
+
useGitBranchName,
|
|
2078
2480
|
DualOutputBridge,
|
|
2079
2481
|
RemoteInputWatcher
|
|
2080
2482
|
};
|
|
@@ -2102,6 +2504,11 @@ export {
|
|
|
2102
2504
|
*
|
|
2103
2505
|
* Thin React wrapper around the framework-agnostic controller from core.
|
|
2104
2506
|
*/
|
|
2507
|
+
/**
|
|
2508
|
+
* @license
|
|
2509
|
+
* Copyright 2025 Qwen Code
|
|
2510
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
2511
|
+
*/
|
|
2105
2512
|
/**
|
|
2106
2513
|
* @license
|
|
2107
2514
|
* Copyright 2026 Qwen Team
|