@qwen-code/qwen-code 0.23.0 → 0.23.1-preview.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled/new-app/SKILL.md +1 -1
- package/bundled/qc-helper/docs/configuration/auth.md +84 -12
- package/bundled/qc-helper/docs/configuration/settings.md +76 -74
- package/bundled/qc-helper/docs/features/arena.md +15 -20
- package/bundled/qc-helper/docs/features/channels/overview.md +7 -2
- package/bundled/qc-helper/docs/features/code-review.md +22 -19
- package/bundled/qc-helper/docs/features/commands.md +51 -10
- package/bundled/qc-helper/docs/features/followup-suggestions.md +1 -1
- package/bundled/qc-helper/docs/features/goals.md +8 -0
- package/bundled/qc-helper/docs/features/headless.md +2 -2
- package/bundled/qc-helper/docs/features/hooks.md +19 -19
- package/bundled/qc-helper/docs/features/output-styles.md +35 -2
- package/bundled/qc-helper/docs/qwen-serve.md +67 -52
- package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +3 -1
- package/bundled/qc-helper/docs/support/troubleshooting.md +3 -3
- package/bundled/review/SKILL.md +45 -41
- package/bundled/review/references/aone.md +1 -1
- package/bundled/review/references/posting.md +1 -1
- package/bundled/workflow-creator/SKILL.md +48 -0
- package/bundled/zvec-grep-install/SKILL.md +57 -0
- package/chunks/MaxSizedBox-5ARLO5PR.js +116 -0
- package/chunks/{StandaloneSessionPicker-QUMO4LLQ.js → StandaloneSessionPicker-T6B322CB.js} +87 -82
- package/chunks/{acp-startup-profiler-M4X5F3VK.js → acp-startup-profiler-6ULXXQMS.js} +2 -2
- package/chunks/{acpAgent-2GTFCIEP.js → acpAgent-WTDEY5KD.js} +1041 -364
- package/chunks/{agent-XKF5SZWU.js → agent-NXPUXEVZ.js} +46 -43
- package/chunks/agent-headless-QQZTWOKO.js +88 -0
- package/chunks/{anthropicContentGenerator-L76MR5OR.js → anthropicContentGenerator-6XDHXIII.js} +16 -9
- package/chunks/{artifact-tool-MYCL2QCS.js → artifact-tool-DFVVJXL2.js} +3 -3
- package/chunks/askUserQuestion-GF7VQ44M.js +14 -0
- package/chunks/bridge-OHY5OGOZ.js +123 -0
- package/chunks/{ca-BNU7YNDE.js → ca-KC2AISNS.js} +1 -0
- package/chunks/{channel-management-service-4MTCEGJB.js → channel-management-service-ZDDG3G5S.js} +4 -4
- package/chunks/channel-settings-store-7BJAS2SU.js +126 -0
- package/chunks/{channel-worker-group-47F4ISUZ.js → channel-worker-group-2ISMRENV.js} +6 -6
- package/chunks/{channel-worker-manager-I5Y44GYR.js → channel-worker-manager-VSRPVPRH.js} +6 -6
- package/chunks/{channel-worker-supervisor-6VCLUXFE.js → channel-worker-supervisor-SRJBK72Z.js} +4 -4
- package/chunks/{chunk-5RTTI4GE.js → chunk-2RYWGYB3.js} +4 -3
- package/chunks/{chunk-FUO5V5KI.js → chunk-2UWQX4FP.js} +2 -2
- package/chunks/{chunk-L26ONV2Y.js → chunk-2WGJG2KW.js} +9 -8
- package/chunks/{chunk-JHN7UIDW.js → chunk-2XRE4KE4.js} +1 -1
- package/chunks/chunk-32CM56LO.js +20 -0
- package/chunks/{chunk-SI7WDR3U.js → chunk-32YDNYXP.js} +129 -14
- package/chunks/{chunk-ZHO2CW6D.js → chunk-3CZ2BQV6.js} +1 -1
- package/chunks/{chunk-FD5SJOWT.js → chunk-3K456UJF.js} +9 -4
- package/chunks/{chunk-5M6IDOMF.js → chunk-3K65MUKD.js} +105 -0
- package/chunks/chunk-3UMWOKJC.js +78 -0
- package/chunks/{chunk-UM2FFKXN.js → chunk-43JNQAHO.js} +3 -3
- package/chunks/{chunk-KM3XVTMO.js → chunk-43NOB5NM.js} +112 -12
- package/chunks/{chunk-G5PBOQWI.js → chunk-47BZVBTE.js} +3 -3
- package/chunks/{chunk-32LU3APX.js → chunk-4F2QRVW6.js} +1 -1
- package/chunks/{chunk-KMU3ZHH4.js → chunk-4HC4DYKN.js} +2 -2
- package/chunks/{chunk-22UH7VTP.js → chunk-4HOEU2OR.js} +1 -1
- package/chunks/{chunk-NXKOVOM5.js → chunk-4IQKBLTQ.js} +15 -9
- package/chunks/{chunk-M4KFODIP.js → chunk-4JAGXZR3.js} +1 -1
- package/chunks/{chunk-PDAKFU7M.js → chunk-4LIPOIXS.js} +1 -1
- package/chunks/{chunk-LEPCWS5A.js → chunk-4MCY33Y2.js} +3 -3
- package/chunks/{chunk-U6D2PPMN.js → chunk-4VUVBN3Y.js} +1 -1
- package/chunks/{chunk-37JFWFCD.js → chunk-4VZCORNT.js} +1 -1
- package/chunks/{daemon-RKDGBFLK.js → chunk-537SQ2AI.js} +2216 -1721
- package/chunks/{chunk-VNAYZAFX.js → chunk-54TF2ZIQ.js} +4 -4
- package/chunks/{chunk-OKTNXDVO.js → chunk-565U2ANU.js} +1 -1
- package/chunks/chunk-5ETULJLP.js +74 -0
- package/chunks/{chunk-ADYN7P2Y.js → chunk-5JLQWQK6.js} +8 -6
- package/chunks/{chunk-BFY33IB4.js → chunk-5MTARK4Y.js} +7 -7
- package/chunks/{chunk-BJXCYUGM.js → chunk-5YY5MZT6.js} +1 -1
- package/chunks/{chunk-4PSDSCW3.js → chunk-64MQTIX7.js} +3 -3
- package/chunks/{chunk-54C6PIGT.js → chunk-6UIACMGH.js} +3 -3
- package/chunks/{chunk-ALUYNJPM.js → chunk-7BZS4ZDV.js} +1362 -1140
- package/chunks/{chunk-LB3WQQJK.js → chunk-7OCIQNKX.js} +2 -2
- package/chunks/{chunk-QKDNS6FU.js → chunk-7VEYUF3N.js} +13 -2
- package/chunks/{chunk-AZJLY2XZ.js → chunk-AHBLRVD5.js} +5 -5
- package/chunks/{chunk-VWTSRH6C.js → chunk-AQ5NAGWI.js} +89 -17
- package/chunks/{chunk-MOF6VZN2.js → chunk-AXPOOQAW.js} +2 -2
- package/chunks/{chunk-CVX63TFJ.js → chunk-B44JBZBB.js} +3 -3
- package/chunks/{chunk-AI35S34R.js → chunk-B54PFQS5.js} +3 -3
- package/chunks/{chunk-373DQUVA.js → chunk-BF3RUIVP.js} +5 -4
- package/chunks/{chunk-RJUVTJEZ.js → chunk-BKNY7PDI.js} +1 -1
- package/chunks/{chunk-UKYXYWI2.js → chunk-BUQN5LTI.js} +2 -2
- package/chunks/{chunk-O5CD7T4T.js → chunk-BW4333PP.js} +0 -95
- package/chunks/{chunk-UPFRILIL.js → chunk-CWNC7M73.js} +2 -2
- package/chunks/{chunk-3L724BJ5.js → chunk-CZACBHAW.js} +6 -6
- package/chunks/{chunk-EBDGRBZX.js → chunk-D4CU6DKR.js} +6 -6
- package/chunks/{chunk-G7HBEEX7.js → chunk-D6PIMKY3.js} +9 -9
- package/chunks/{chunk-ENYUKMFK.js → chunk-DJXSOEFB.js} +1 -1
- package/chunks/{chunk-C2VWOXHS.js → chunk-DNPHKA72.js} +8 -8
- package/chunks/{chunk-UUASLXHW.js → chunk-E4L5BM2B.js} +5 -5
- package/chunks/{chunk-HT5S5TRQ.js → chunk-EDIDYZBT.js} +4 -11
- package/chunks/{chunk-5H5S4UY5.js → chunk-EFT7OMDN.js} +1 -1
- package/chunks/{chunk-GB4UKWY5.js → chunk-EJNYBDYC.js} +2 -2
- package/chunks/{chunk-NQ4L2CMD.js → chunk-ER273QE6.js} +53 -9
- package/chunks/{chunk-RKW36UWC.js → chunk-EWNKP4V4.js} +1 -1
- package/chunks/{chunk-UJ4DUYIH.js → chunk-F53KKZUD.js} +2 -2
- package/chunks/{chunk-EFTPIZIC.js → chunk-FDOGGKAA.js} +21 -0
- package/chunks/{chunk-AQ37AY7B.js → chunk-FKJM6JKY.js} +5 -0
- package/chunks/{chunk-KEVYJSI4.js → chunk-G34YLYCS.js} +13 -13
- package/chunks/{chunk-P6UIF2OW.js → chunk-GCFZ2LAX.js} +195 -10
- package/chunks/{chunk-VGHZT6JR.js → chunk-GELRJXE2.js} +1 -1
- package/chunks/{chunk-ZDFQGHZH.js → chunk-GMNLYQOS.js} +1 -1
- package/chunks/{chunk-KOGW3YWJ.js → chunk-GVVCLL2P.js} +12 -12
- package/chunks/{chunk-OSSTATJF.js → chunk-GXZHYPHZ.js} +428 -30
- package/chunks/{chunk-IPATA3T2.js → chunk-GZWW2QWR.js} +2 -2
- package/chunks/{chunk-C4TIXFDZ.js → chunk-H3UDNQLO.js} +6 -4
- package/chunks/chunk-HD7O6WLV.js +18 -0
- package/chunks/{chunk-4UANMABT.js → chunk-HFTB354P.js} +259 -49
- package/chunks/{chunk-LOBDDFYK.js → chunk-HJ34U5J4.js} +5 -5
- package/chunks/{chunk-M4LBBSVP.js → chunk-HY3DXYZK.js} +2 -2
- package/chunks/{chunk-4F7GQGXB.js → chunk-I72PHOKL.js} +1451 -415
- package/chunks/{chunk-YPWZTR7F.js → chunk-IFD3BTEA.js} +3 -3
- package/chunks/{chunk-EWRW2WQC.js → chunk-IKLFS6SC.js} +5 -5
- package/chunks/{chunk-VPSIC437.js → chunk-IQN2CCIE.js} +66 -6
- package/chunks/{chunk-F7NF2IOE.js → chunk-IXSGOSEG.js} +7 -7
- package/chunks/{chunk-ODZF64DM.js → chunk-IZ2U57NY.js} +1 -1
- package/chunks/{chunk-4BGDFKQE.js → chunk-J3O5I5ZD.js} +24 -7
- package/chunks/{chunk-DYTW3QVG.js → chunk-J6MB5ZHZ.js} +1 -1
- package/chunks/{chunk-HJBHMANB.js → chunk-JBTZUFR4.js} +11 -8
- package/chunks/{chunk-SRF4KTAG.js → chunk-JLWFGYXU.js} +4 -4
- package/chunks/{chunk-SX2QIMJV.js → chunk-JOPC3FND.js} +5 -5
- package/chunks/chunk-JPEAQJNS.js +2142 -0
- package/chunks/{chunk-ZTPGUFQV.js → chunk-JRYL3T2O.js} +24 -5
- package/chunks/{chunk-GXUTFQXK.js → chunk-KE3Q4JMY.js} +4 -4
- package/chunks/{chunk-LKODFJRD.js → chunk-KFFCDLKV.js} +1 -1
- package/chunks/{chunk-4M24B5J5.js → chunk-KJJPJYHI.js} +79 -30
- package/chunks/chunk-KK2GZGBK.js +21080 -0
- package/chunks/{chunk-64QH2UC6.js → chunk-KPXRFTT7.js} +12 -1
- package/chunks/{chunk-JZWOCUZ3.js → chunk-L4R7BCVV.js} +1 -1
- package/chunks/{chunk-IG4W5SJR.js → chunk-LDS57224.js} +3 -3
- package/chunks/{chunk-UAKRDON5.js → chunk-LK7S2D6V.js} +4 -4
- package/chunks/{chunk-4HVH57J3.js → chunk-LMJQSPWB.js} +21 -6
- package/chunks/{chunk-ANVG3BVV.js → chunk-LNYV4GXX.js} +13 -3
- package/chunks/{chunk-RM4WT2XB.js → chunk-LPBQODMR.js} +4 -4
- package/chunks/{chunk-XEAAO654.js → chunk-M3JGHRMQ.js} +1 -1
- package/chunks/{chunk-AMDSOFFV.js → chunk-MATEIJZF.js} +1 -0
- package/chunks/{chunk-LHBNR6EU.js → chunk-MNEYUNOE.js} +2 -2
- package/chunks/{chunk-I4NRYS6A.js → chunk-MUZCSTOO.js} +11 -11
- package/chunks/{chunk-I5N4EAS6.js → chunk-MWHY26G3.js} +1 -1
- package/chunks/{chunk-7XL4WRXM.js → chunk-N6VQ37ZZ.js} +2 -2
- package/chunks/{chunk-AHYTURFB.js → chunk-N7EYO2E7.js} +1 -1
- package/chunks/{chunk-LU77UT4D.js → chunk-N7VURC4O.js} +24 -26
- package/chunks/{chunk-DSX7KQPM.js → chunk-NAKALAL4.js} +227 -29
- package/chunks/{chunk-QQD2GART.js → chunk-NGX4NUNP.js} +3 -3
- package/chunks/{chunk-2M3EWQNG.js → chunk-NUQFUXOG.js} +17 -1
- package/chunks/{chunk-E4JNFXNI.js → chunk-NXWYCSPL.js} +3 -3
- package/chunks/{chunk-6A2D4QSO.js → chunk-O2GG7H4C.js} +4 -4
- package/chunks/{chunk-ZKFTS3OV.js → chunk-O45WBTNS.js} +6 -6
- package/chunks/{chunk-KGV55H53.js → chunk-OECNP26L.js} +1 -1
- package/chunks/{chunk-S6H3ELPG.js → chunk-P4RUUG64.js} +1 -1
- package/chunks/{chunk-GH2S4GD5.js → chunk-P5LDR7FI.js} +21 -68
- package/chunks/{chunk-RN3YGDCA.js → chunk-P6LATTDG.js} +4 -4
- package/chunks/{chunk-WP4AX3XD.js → chunk-PTFFWTTO.js} +3 -3
- package/chunks/{chunk-DTVQSSNM.js → chunk-PZUOHCWI.js} +3 -3
- package/chunks/{chunk-VYIUNFEA.js → chunk-PZV2FASB.js} +3 -3
- package/chunks/{chunk-XLXAZLDR.js → chunk-Q2SAQTEJ.js} +1 -1
- package/chunks/{chunk-47RYEQW5.js → chunk-QMFOYPGV.js} +2 -2
- package/chunks/{chunk-SULZPKTA.js → chunk-QSC5YOEC.js} +3 -3
- package/chunks/{chunk-F33GFWPR.js → chunk-QWZOOIR3.js} +58 -18
- package/chunks/{chunk-H43PSPYS.js → chunk-R355CUNQ.js} +4 -4
- package/chunks/{chunk-DQCKVAF5.js → chunk-RDKXZ2LS.js} +3 -3
- package/chunks/{chunk-7JMGTOH7.js → chunk-RPBMP6BN.js} +21 -1
- package/chunks/{chunk-5Q5RC2WE.js → chunk-RVNS7NWN.js} +2 -2
- package/chunks/{chunk-7RB56BRJ.js → chunk-SAZS4IWW.js} +6 -4
- package/chunks/{chunk-5EIOJGCR.js → chunk-SFMCYMVF.js} +4 -4
- package/chunks/{chunk-TMKTOTMQ.js → chunk-SN5FV4FY.js} +5 -5
- package/chunks/{chunk-QJGYU5PG.js → chunk-TDP7UULF.js} +1 -1
- package/chunks/{chunk-EIJT2PQ6.js → chunk-TIGXX4PA.js} +2 -2
- package/chunks/{chunk-PCRBLMIN.js → chunk-TMWB67LS.js} +21 -3
- package/chunks/{chunk-JUARRUMA.js → chunk-UEZOXZNI.js} +1358 -646
- package/chunks/{chunk-KFN2IZYR.js → chunk-UKADFFL2.js} +3 -3
- package/chunks/{chunk-TJYRTS4S.js → chunk-UKKYOIVT.js} +2 -2
- package/chunks/{chunk-EVFDRBUM.js → chunk-URSCX7S7.js} +12 -7
- package/chunks/{chunk-U4DJ5XB3.js → chunk-VDXYYVCD.js} +269 -70
- package/chunks/{chunk-4LIFGNI4.js → chunk-VEFRT7NX.js} +1 -1
- package/chunks/chunk-VFFQAOPR.js +18 -0
- package/chunks/{chunk-3AKCBZVW.js → chunk-VU7O7CGQ.js} +3 -3
- package/chunks/{chunk-RAFQIHN2.js → chunk-VUSSAGKI.js} +76 -5
- package/chunks/{chunk-TQHPVKO6.js → chunk-VY6UVU7G.js} +6 -6
- package/chunks/{chunk-S2T7H5MI.js → chunk-W4LL5RZO.js} +1 -1
- package/chunks/{chunk-ZGCKTAL5.js → chunk-WEXA2DNG.js} +2 -0
- package/chunks/{chunk-NVVJTUSL.js → chunk-WR3SH3EY.js} +136 -85
- package/chunks/{chunk-JR42V4UY.js → chunk-WTW36TJ3.js} +1 -1
- package/chunks/{chunk-TSZSGQ3N.js → chunk-WXC6OAWD.js} +1 -1
- package/chunks/{chunk-ZVP4PWBU.js → chunk-X35VIWWJ.js} +1 -1
- package/chunks/{chunk-KHP66DFN.js → chunk-XFFRI3WM.js} +1 -1
- package/chunks/{chunk-EIY7SUPZ.js → chunk-XHGGYCTA.js} +1 -1
- package/chunks/{chunk-BA4WJC4L.js → chunk-XOVVCGZX.js} +1 -1
- package/chunks/{chunk-VBWD6C27.js → chunk-XUSOYE2I.js} +1 -1
- package/chunks/{chunk-NUHOLAQ6.js → chunk-XWJFDJZK.js} +1 -1
- package/chunks/{chunk-65HWLGA7.js → chunk-XY3USGFE.js} +3 -3
- package/chunks/{chunk-STCVJXQB.js → chunk-Y3ZKI4RQ.js} +56 -26
- package/chunks/{chunk-QAK5475D.js → chunk-Y53DG2HA.js} +1 -1
- package/chunks/{chunk-3JQZVCBI.js → chunk-YCDL2SAS.js} +2 -2
- package/chunks/{chunk-NSUKQ4DN.js → chunk-YHDGABDC.js} +3 -3
- package/chunks/{chunk-FRICLXCZ.js → chunk-Z6WZPXQH.js} +3 -3
- package/chunks/{chunk-EAHOJF6V.js → chunk-ZAFYHRVY.js} +12 -0
- package/chunks/{chunk-MP6YZ4RK.js → chunk-ZAZ3NFL6.js} +852 -309
- package/chunks/{chunk-7TBU7PU2.js → chunk-ZSTCM3MX.js} +1 -1
- package/chunks/{chunk-NRL5CUZT.js → chunk-ZTAVGFKA.js} +1 -1
- package/chunks/config-utils-QXDOTXEQ.js +119 -0
- package/chunks/contextCommand-RN4KARWC.js +112 -0
- package/chunks/{core-runtime-B4UKKIAQ.js → core-runtime-NAZCOKHB.js} +63 -58
- package/chunks/{create-sub-session-NJ24B4US.js → create-sub-session-BCSM4WKB.js} +61 -56
- package/chunks/{create-sub-session-LUPWEUHR.js → create-sub-session-BQ3SE4TX.js} +3 -3
- package/chunks/{cron-create-CRSPET3H.js → cron-create-D6HQ7I7I.js} +4 -4
- package/chunks/{cron-delete-DB77SZTU.js → cron-delete-KK3D2SQV.js} +4 -4
- package/chunks/{cron-list-U2JNYWV6.js → cron-list-VBF3IZMF.js} +4 -4
- package/chunks/daemon-LCUELM6E.js +191 -0
- package/chunks/{daemon-git-worktree-guard-O2HPOBAB.js → daemon-git-worktree-guard-3K5CAU36.js} +62 -57
- package/chunks/daemon-status-provider-4X3ZZQTZ.js +122 -0
- package/chunks/daemon-trust-policy-R45CFUJA.js +118 -0
- package/chunks/{daemon-trust-policy-monitor-JL7F4Y4Q.js → daemon-trust-policy-monitor-DSSFCO3K.js} +69 -64
- package/chunks/{de-T4BLOKEC.js → de-UU2YTO37.js} +1 -0
- package/chunks/deferred-core-runtime-UO2M6WYI.js +120 -0
- package/chunks/{display-image-73C7XNRK.js → display-image-EVVTBVYE.js} +6 -6
- package/chunks/{dist-EDHQIBYD.js → dist-3T5MDUHP.js} +62 -20
- package/chunks/{dist-ZCJLKQSP.js → dist-AFH3BMZZ.js} +18 -10
- package/chunks/{dist-LXFYIJNG.js → dist-MK5PPBRF.js} +40 -9
- package/chunks/{dist-GT64AAUR.js → dist-PH5RSTEA.js} +56 -20
- package/chunks/{dist-62OZ7QXB.js → dist-QUU7TVE3.js} +35 -12
- package/chunks/{dist-JVXT4VUJ.js → dist-R5Y34V6T.js} +11 -2
- package/chunks/{dist-L6URO6CK.js → dist-SB2XRXZA.js} +5 -1
- package/chunks/{dist-QAF5DO3Y.js → dist-SIHF5MU2.js} +326 -131
- package/chunks/{dist-PDGNRVPY.js → dist-UVHW2U56.js} +20 -1
- package/chunks/earlyInputCapture-BXP7V2P3.js +22 -0
- package/chunks/{edit-SUGXY63Y.js → edit-VNBCTRWP.js} +48 -44
- package/chunks/{en-2RATMNX7.js → en-JMR535HP.js} +3 -1
- package/chunks/{enter-worktree-B6USKSIK.js → enter-worktree-CEVK7MQ2.js} +7 -7
- package/chunks/{enterPlanMode-MDX4RVVL.js → enterPlanMode-4KMZMUIA.js} +48 -45
- package/chunks/environment-S2HYQDON.js +135 -0
- package/chunks/errors-DAAN5TL7.js +119 -0
- package/chunks/{exit-worktree-DLQ73SJH.js → exit-worktree-D3YE6MUN.js} +7 -7
- package/chunks/exitPlanMode-HR36HG3D.js +86 -0
- package/chunks/{fast-path-Y73R42LV.js → fast-path-4IWSW3UV.js} +3 -3
- package/chunks/{fast-path-settings-MFUR3IWK.js → fast-path-settings-ISEJPRYE.js} +6 -4
- package/chunks/{fr-BGHGYX6A.js → fr-HKNWVXRJ.js} +1 -0
- package/chunks/{glob-DMGH7EZN.js → glob-IZYB2XH2.js} +46 -43
- package/chunks/{goal-tools-3RF3PXCL.js → goal-tools-VGUPKQDJ.js} +46 -43
- package/chunks/{grep-AJVLCVXC.js → grep-OUVLNXG7.js} +9 -8
- package/chunks/handleAutoUpdate-D56FMDTW.js +115 -0
- package/chunks/i18n-BKE5WO6T.js +130 -0
- package/chunks/{image-gen-VOIDOHOB.js → image-gen-SHVQ3XID.js} +8 -8
- package/chunks/initializer-MS4SGEHF.js +119 -0
- package/chunks/installationInfo-542MGC4S.js +113 -0
- package/chunks/{ja-G3FTD5XE.js → ja-GJS5RZGU.js} +1 -0
- package/chunks/{keychain-token-storage-REZVMJA6.js → keychain-token-storage-NQ5XWIPX.js} +2 -2
- package/chunks/list-H6XTKUWL.js +122 -0
- package/chunks/{list-agents-SBMONIUK.js → list-agents-ULYBGJXC.js} +6 -6
- package/chunks/{llm-K26SUDVK.js → llm-3NUC4EJY.js} +132 -113
- package/chunks/{llm-content-generator-TT6EAUD4.js → llm-content-generator-R4NL3OQN.js} +40 -13
- package/chunks/loadedSettingsAdapter-3XLKYDVT.js +116 -0
- package/chunks/{loggingContentGenerator-EYQBA4M4.js → loggingContentGenerator-ZYSWVNEO.js} +55 -52
- package/chunks/{loop-wakeup-QA6SHCZT.js → loop-wakeup-B27BEYRL.js} +5 -5
- package/chunks/{lowlight-J2OZNPCA.js → lowlight-BTE423KL.js} +3 -6
- package/chunks/{ls-HEJNCEYO.js → ls-3IIMMVKF.js} +5 -4
- package/chunks/{lsp-WOQKNZP6.js → lsp-VJAT7XKS.js} +2 -2
- package/chunks/{managed-npm-update-HIJTODQT.js → managed-npm-update-L2I53ZAI.js} +62 -57
- package/chunks/mcp-4PIXQASW.js +116 -0
- package/chunks/{monitor-DKNZQAB2.js → monitor-O2YQTOZZ.js} +50 -46
- package/chunks/{node-UETAYMMO.js → node-ISQAFKIS.js} +2 -2
- package/chunks/nonInteractiveCli-LV7CDBA2.js +198 -0
- package/chunks/{notebook-edit-MGHTRL2D.js → notebook-edit-4RE2ALH4.js} +48 -44
- package/chunks/{openaiContentGenerator-ZJIEQ3ZJ.js → openaiContentGenerator-7ND7K5CP.js} +30 -25
- package/chunks/pidfile-UFTLQ7NP.js +117 -0
- package/chunks/{processUtils-UY3SAJJZ.js → processUtils-3XBB4FYV.js} +2 -2
- package/chunks/prompt-terminal-ledger-2QASOGMM.js +111 -0
- package/chunks/{pt-D73IFYT7.js → pt-FXMYXEUV.js} +1 -0
- package/chunks/{qwenContentGenerator-VI4KATRY.js → qwenContentGenerator-AELTUTH6.js} +52 -49
- package/chunks/{qwenOAuth2-7AOCKSOQ.js → qwenOAuth2-BS5D2LYV.js} +7 -7
- package/chunks/{read-file-P7F4P7LV.js → read-file-PDWHZPHX.js} +13 -11
- package/chunks/{read-mcp-resource-GLAGB6R7.js → read-mcp-resource-YXJZ75UB.js} +2 -2
- package/chunks/{record-artifact-SWVR7NSU.js → record-artifact-WJDOV6XU.js} +4 -4
- package/chunks/{report-findings-AL5YW3KI.js → report-findings-Q4UACKWR.js} +5 -5
- package/chunks/{request-shutdown-5YK4IZ54.js → request-shutdown-2YZ3E3GH.js} +8 -8
- package/chunks/resumeHistoryUtils-QRXZEEBA.js +124 -0
- package/chunks/ripGrep-KSOOLE6H.js +39 -0
- package/chunks/{ru-QMISLKRH.js → ru-RMHURE5U.js} +1 -0
- package/chunks/{run-qwen-serve-OGTEEUR2.js → run-qwen-serve-RTAREPT6.js} +84 -70
- package/chunks/runtime-ESFSCJRZ.js +154 -0
- package/chunks/scheduled-tasks-6ZHRNBH6.js +133 -0
- package/chunks/{scheduler-73YXGUGW.js → scheduler-DQI6KV7T.js} +63 -58
- package/chunks/{sdk-exporters-http-3JO5TJNU.js → sdk-exporters-http-7R2ARBPV.js} +2 -2
- package/chunks/{sdk-impl-HZAUUTHJ.js → sdk-impl-YOLO7LV4.js} +4 -4
- package/chunks/{send-message-JC7NJTY6.js → send-message-PQCVSVMN.js} +24 -24
- package/chunks/serve-FY7ZEW52.js +124 -0
- package/chunks/{server-AOYZVVOM.js → server-KNDY6K5F.js} +1594 -273
- package/chunks/{session-UAWFNFGI.js → session-MCEPXAZP.js} +113 -105
- package/chunks/session-attachments-root-OLNAE6GF.js +109 -0
- package/chunks/{session-pr-refresh-CT2INROL.js → session-pr-refresh-HKJHQQQK.js} +67 -62
- package/chunks/{settings-BHRGDASJ.js → settings-VXO4WBMK.js} +68 -63
- package/chunks/shell-U263OTES.js +96 -0
- package/chunks/{skill-ZGBKNCHQ.js → skill-SDODGBKL.js} +19 -17
- package/chunks/skill-settings-YEIA22QJ.js +124 -0
- package/chunks/spawnChannel-4WJZVFPP.js +117 -0
- package/chunks/standalone-update-ZWVQUO64.js +124 -0
- package/chunks/{start-opentui-ui-FZ4USOU7.js → start-opentui-ui-BFYCJQRZ.js} +1199 -190
- package/chunks/{startInteractiveUI-E2WQJUOA.js → startInteractiveUI-JYAFCMHL.js} +2977 -2319
- package/chunks/{syntheticOutput-HJNZSEHN.js → syntheticOutput-AUAJBNXR.js} +3 -3
- package/chunks/{task-create-6RSD54S5.js → task-create-LD5ISM3E.js} +12 -12
- package/chunks/{task-list-IQSACPOM.js → task-list-YISJ4RJA.js} +5 -5
- package/chunks/{task-stop-HE2LRQNW.js → task-stop-65ZOVATJ.js} +2 -2
- package/chunks/{task-update-XAJ2NYOA.js → task-update-AAN4ZVEY.js} +15 -15
- package/chunks/{team-create-SOKMYSQU.js → team-create-KU7MABNO.js} +47 -44
- package/chunks/{team-delete-NGNNKGMG.js → team-delete-XFRRTJTT.js} +5 -5
- package/chunks/{team-plan-approval-U7ZWXYAY.js → team-plan-approval-DPB377A3.js} +46 -43
- package/chunks/terminal-image-renderer-WGWRENOF.js +124 -0
- package/chunks/theme-manager-GBUFULSO.js +108 -0
- package/chunks/{todoWrite-5UTVUXHA.js → todoWrite-G7NT4IFP.js} +5 -5
- package/chunks/{tool-search-IAI2RVWT.js → tool-search-6YUXHBPT.js} +19 -17
- package/chunks/total-session-admission-54R2JQ5L.js +118 -0
- package/chunks/trustedFolders-KAJIDJTH.js +128 -0
- package/chunks/{update-relaunch-5RWKZAL3.js → update-relaunch-XM4IWBFD.js} +5 -5
- package/chunks/updateCheck-W6UZFURI.js +124 -0
- package/chunks/useAutoAcceptIndicator-LAWYHY3U.js +126 -0
- package/chunks/{validateNonInterActiveAuth-QPFEKATS.js → validateNonInterActiveAuth-7WCKHRN2.js} +109 -101
- package/chunks/{version-JKNG7YDH.js → version-3ZU43RJ6.js} +1 -1
- package/chunks/{web-fetch-X3AHIIHW.js → web-fetch-QHI2SQL4.js} +16 -14
- package/chunks/{web-search-K2FMOGS5.js → web-search-3KZZKWNY.js} +9 -8
- package/chunks/{workflow-TOLPAK5G.js → workflow-HRW7Y2X4.js} +330 -1667
- package/chunks/workspace-providers-status-KTGCWCPC.js +120 -0
- package/chunks/{workspace-registration-store-KQWVVW4Y.js → workspace-registration-store-LHLPPWNE.js} +1 -1
- package/chunks/workspace-registry-X34MLN52.js +127 -0
- package/chunks/workspace-runtime-coordinator-U4PW4P7K.js +128 -0
- package/chunks/workspace-service-KD7BCGYL.js +132 -0
- package/chunks/workspace-skills-status-YJGO6Y3T.js +119 -0
- package/chunks/{workspace-trust-reconciler-IBDFQBQS.js → workspace-trust-reconciler-EUYHISCH.js} +74 -69
- package/chunks/write-file-EBSB34NJ.js +91 -0
- package/chunks/{zh-25DF7OGK.js → zh-DVFYHRK5.js} +3 -1
- package/chunks/{zh-TW-5EDMZVGK.js → zh-TW-W2GNP2IU.js} +3 -1
- package/chunks/{zoom-image-IFXSN74N.js → zoom-image-UJ5VKWKP.js} +13 -11
- package/cli.js +13 -13
- package/export-transcript-document.js +617 -0
- package/locales/ca.js +1 -0
- package/locales/de.js +1 -0
- package/locales/en.js +5 -2
- package/locales/fr.js +1 -0
- package/locales/ja.js +1 -0
- package/locales/pt.js +1 -0
- package/locales/ru.js +1 -0
- package/locales/zh-TW.js +5 -2
- package/locales/zh.js +5 -2
- package/package.json +5 -4
- package/web-shell/assets/{abnfDiagram-VCTEODGH-Cxf7xE_Z.js → abnfDiagram-VCTEODGH-Dur--luQ.js} +1 -1
- package/web-shell/assets/{arc-ESi1eNkE.js → arc-tYLobxFi.js} +1 -1
- package/web-shell/assets/{architectureDiagram-5GKGNRK7-D9l7-bDo.js → architectureDiagram-5GKGNRK7-IG6aXD03.js} +1 -1
- package/web-shell/assets/{blockDiagram-NRAW4CY4-Bc8DEasw.js → blockDiagram-NRAW4CY4-C6eBSkfA.js} +1 -1
- package/web-shell/assets/{c4Diagram-UCG6FXSJ-Dimb2Hmh.js → c4Diagram-UCG6FXSJ-BrX3HJqB.js} +1 -1
- package/web-shell/assets/channel-uEkvKckd.js +1 -0
- package/web-shell/assets/{chunk-2Q5K7J3B-jVDmOpAQ.js → chunk-2Q5K7J3B-B3fcJ8ee.js} +1 -1
- package/web-shell/assets/{chunk-5VM5RSS4-DbG_SwdB.js → chunk-5VM5RSS4-CeC90yKM.js} +1 -1
- package/web-shell/assets/{chunk-F27PBJKO-QEc4cY1v.js → chunk-F27PBJKO-CW44RVki.js} +1 -1
- package/web-shell/assets/{chunk-G27WJ6UU-iJ36lQ3X.js → chunk-G27WJ6UU-D1PAMukD.js} +1 -1
- package/web-shell/assets/{chunk-JWPE2WC7-DuArnVtF.js → chunk-JWPE2WC7-Dt3Y2Fvx.js} +1 -1
- package/web-shell/assets/{chunk-LCL6LL3I-DxOf1zwL.js → chunk-LCL6LL3I-CZHw2lLI.js} +1 -1
- package/web-shell/assets/{chunk-POPQ4Y6H-lVLu9Ild.js → chunk-POPQ4Y6H-ysNAdTGx.js} +1 -1
- package/web-shell/assets/{chunk-SVP7TREG-C6XYlIer.js → chunk-SVP7TREG-BdNXW6YQ.js} +1 -1
- package/web-shell/assets/{chunk-XXDRQBXY-CiG2j2Ji.js → chunk-XXDRQBXY-DgqQ9UA8.js} +1 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-DuPsnhWS.js +1 -0
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-DuPsnhWS.js +1 -0
- package/web-shell/assets/{cose-bilkent-JH36ORCC-DGVHMMVm.js → cose-bilkent-JH36ORCC-BILImXzJ.js} +1 -1
- package/web-shell/assets/{cynefin-OW5HDTMX-D6cgpCnH.js → cynefin-OW5HDTMX-DR88Pund.js} +1 -1
- package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-BKv4Z-UX.js → cynefinDiagram-5FMLGOSQ-BYFbfkA6.js} +1 -1
- package/web-shell/assets/{dagre-3AP2YEHR-B4ABMIG-.js → dagre-3AP2YEHR-rfpyc6sX.js} +1 -1
- package/web-shell/assets/{diagram-S7CK7UJ4-DgCkp_Lm.js → diagram-S7CK7UJ4-BJxLmEwH.js} +1 -1
- package/web-shell/assets/{diagram-UQ7AKVKN-FG0FNokz.js → diagram-UQ7AKVKN-H34xm7k3.js} +1 -1
- package/web-shell/assets/{diagram-VSXAHHWV-JgkP9qg-.js → diagram-VSXAHHWV-HYxhwNLx.js} +1 -1
- package/web-shell/assets/{diagram-VX7I27RA-ADh2x83l.js → diagram-VX7I27RA-BJazso8F.js} +1 -1
- package/web-shell/assets/{diagram-Z3DM3KII-yXqoYF1J.js → diagram-Z3DM3KII-Clje1aNy.js} +1 -1
- package/web-shell/assets/{ebnfDiagram-PWID7BFC-Duk83Ek_.js → ebnfDiagram-PWID7BFC-M93YBkFh.js} +1 -1
- package/web-shell/assets/{erDiagram-SSCWMZ5O-DMdvxySG.js → erDiagram-SSCWMZ5O-DY8XzSHU.js} +1 -1
- package/web-shell/assets/{flowDiagram-A5DVABFB-DHjVgSji.js → flowDiagram-A5DVABFB-CE6Aylcq.js} +1 -1
- package/web-shell/assets/{ganttDiagram-EL5Y4UJY-DMM9DkCE.js → ganttDiagram-EL5Y4UJY-DI-5LL22.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-t_ug9vO8.js → gitGraphDiagram-WWUBYQGX-C7BZWElk.js} +1 -1
- package/web-shell/assets/index-CVyqwW7y.js +2142 -0
- package/web-shell/assets/{index-zqvnpGHv.js → index-DclFHns9.js} +1 -1
- package/web-shell/assets/index-FO7JXPnH.css +36 -0
- package/web-shell/assets/{infoDiagram-RXCK75RN-eT1fANNm.js → infoDiagram-RXCK75RN-CGUSy4Pc.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-5VMMS53U-k3evzZNn.js → ishikawaDiagram-5VMMS53U-B5BVks9q.js} +1 -1
- package/web-shell/assets/{journeyDiagram-EYS64GPL-CGim3EAi.js → journeyDiagram-EYS64GPL-CFh6Tf7h.js} +1 -1
- package/web-shell/assets/{kanban-definition-3QL26DDD-WHfJo-22.js → kanban-definition-3QL26DDD-B7TlxP7c.js} +1 -1
- package/web-shell/assets/{layout-DkqIaFlJ.js → layout-Br_pZq2Q.js} +1 -1
- package/web-shell/assets/{linear-Bdkd3mCz.js → linear-BVlP6fte.js} +1 -1
- package/web-shell/assets/{mermaid.core-CGw0LkT_.js → mermaid.core-TrcYWoiF.js} +6 -6
- package/web-shell/assets/{mindmap-definition-FBJOCRG2-C9V4rBvo.js → mindmap-definition-FBJOCRG2-BJ4LzqjZ.js} +1 -1
- package/web-shell/assets/{pegDiagram-XKGWAZYB-CwoI2T5G.js → pegDiagram-XKGWAZYB-1b_MxlOl.js} +1 -1
- package/web-shell/assets/{pieDiagram-E7YTZNPT-DaTmBmPG.js → pieDiagram-E7YTZNPT-B8zl0YhY.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-AXDQQJYC-plh6MyGI.js → quadrantDiagram-AXDQQJYC-CIZO8ukl.js} +1 -1
- package/web-shell/assets/{railroadDiagram-O6MQD6OU-D_b-S0iK.js → railroadDiagram-O6MQD6OU-CepHSbCj.js} +1 -1
- package/web-shell/assets/{requirementDiagram-EFPCY7ZU-zUzTN7VE.js → requirementDiagram-EFPCY7ZU-BCgxkcSW.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-P5KCCOFB-m6AhoD0l.js → sankeyDiagram-P5KCCOFB-CE5CcoMM.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-Cwhzsine.js → sequenceDiagram-WJ2MYXX4-DvgHi-d5.js} +1 -1
- package/web-shell/assets/{sizeCapture-X5ZJPWSS-CcZuKIae.js → sizeCapture-X5ZJPWSS-T-fAsCPX.js} +1 -1
- package/web-shell/assets/{stateDiagram-HBIQ2CUA-CFoiJwD_.js → stateDiagram-HBIQ2CUA-DYHaul-5.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-BcYho9a4.js +1 -0
- package/web-shell/assets/{swimlanes-XN3QIQJK-CgS9hcaV.js → swimlanes-XN3QIQJK-Dbz3Qiej.js} +1 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-D6HsOIgX.js +8 -0
- package/web-shell/assets/{timeline-definition-24CTP7MA-Dzzc05t9.js → timeline-definition-24CTP7MA-9NVRts3N.js} +1 -1
- package/web-shell/assets/{vennDiagram-4TSXK5OY-DemK0f7Y.js → vennDiagram-4TSXK5OY-C7cb7vnH.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-VM6X3IG4-CquLxtMr.js → wardleyDiagram-VM6X3IG4-CG-8Ddjm.js} +1 -1
- package/web-shell/assets/{xychartDiagram-S5SC5T6Z-BTBKTM5g.js → xychartDiagram-S5SC5T6Z-iGeYAcP4.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/MaxSizedBox-B3D7545A.js +0 -111
- package/chunks/agent-headless-OC2IB55D.js +0 -85
- package/chunks/askUserQuestion-THQZMG44.js +0 -322
- package/chunks/bridge-IHSBI2YJ.js +0 -118
- package/chunks/channel-settings-store-BVKWAI2T.js +0 -121
- package/chunks/chunk-I2TMJPCV.js +0 -448
- package/chunks/chunk-QI27MKNQ.js +0 -4008
- package/chunks/config-utils-LVSYDLHZ.js +0 -114
- package/chunks/contextCommand-TZD7UAJK.js +0 -107
- package/chunks/daemon-status-provider-GRRVCJFW.js +0 -117
- package/chunks/daemon-trust-policy-YJL442BK.js +0 -113
- package/chunks/deferred-core-runtime-S32AYVZI.js +0 -115
- package/chunks/earlyInputCapture-BBPCIVZG.js +0 -108
- package/chunks/environment-VN6RXDVN.js +0 -130
- package/chunks/errors-UEY36PIT.js +0 -114
- package/chunks/exitPlanMode-EPHIEDAA.js +0 -83
- package/chunks/handleAutoUpdate-HVWQT2AU.js +0 -110
- package/chunks/i18n-5OR7NTRZ.js +0 -125
- package/chunks/initializer-JE5RQSOE.js +0 -114
- package/chunks/installationInfo-KO3CCSCK.js +0 -108
- package/chunks/list-3IORSFIY.js +0 -117
- package/chunks/loadedSettingsAdapter-KLLFZF3M.js +0 -111
- package/chunks/mcp-A2UEHETW.js +0 -111
- package/chunks/nonInteractiveCli-YA47F2F4.js +0 -190
- package/chunks/pidfile-ETHAZNMY.js +0 -112
- package/chunks/prompt-terminal-ledger-GZ747VYE.js +0 -106
- package/chunks/resumeHistoryUtils-DPZKFW24.js +0 -119
- package/chunks/ripGrep-C7LJKUPZ.js +0 -37
- package/chunks/runtime-LNBLEMZS.js +0 -149
- package/chunks/scheduled-tasks-FLDYZQOF.js +0 -128
- package/chunks/serve-3UR2H4CV.js +0 -119
- package/chunks/session-attachments-root-ZCGXQQTR.js +0 -104
- package/chunks/shell-YHOGC7TO.js +0 -93
- package/chunks/skill-settings-AKSP665O.js +0 -119
- package/chunks/spawnChannel-N25MBB6F.js +0 -112
- package/chunks/standalone-update-XGPWJDRN.js +0 -119
- package/chunks/terminal-image-renderer-KKM4OBLO.js +0 -117
- package/chunks/theme-manager-GQHF3A7T.js +0 -103
- package/chunks/total-session-admission-G4CGCSTG.js +0 -113
- package/chunks/trustedFolders-D2I3FDPB.js +0 -123
- package/chunks/updateCheck-ZXOQDFEI.js +0 -119
- package/chunks/useAutoAcceptIndicator-6EK4QGAH.js +0 -121
- package/chunks/workspace-providers-status-PCJK3RC7.js +0 -115
- package/chunks/workspace-registry-YNIOB6HJ.js +0 -122
- package/chunks/workspace-runtime-coordinator-WG2RNEN7.js +0 -123
- package/chunks/workspace-service-G4ZNBOFH.js +0 -127
- package/chunks/workspace-skills-status-FMTPPMWC.js +0 -114
- package/chunks/write-file-YTLFY2S5.js +0 -88
- package/web-shell/assets/channel-B7ohGDil.js +0 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-DdFpqpfD.js +0 -1
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-DdFpqpfD.js +0 -1
- package/web-shell/assets/index-BGZRqbRo.css +0 -36
- package/web-shell/assets/index-DRri_6_x.js +0 -2067
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V--H8HdEmk.js +0 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-ShE9OIgf.js +0 -8
|
@@ -18,22 +18,23 @@ import {
|
|
|
18
18
|
useLogger,
|
|
19
19
|
useProviderSetupFlow,
|
|
20
20
|
writeTerminalTitle
|
|
21
|
-
} from "./chunk-
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-
|
|
21
|
+
} from "./chunk-GVVCLL2P.js";
|
|
22
|
+
import "./chunk-RVNS7NWN.js";
|
|
23
|
+
import "./chunk-LK7S2D6V.js";
|
|
24
24
|
import {
|
|
25
25
|
startPostRenderPrefetches
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-G34YLYCS.js";
|
|
27
27
|
import {
|
|
28
28
|
SessionStatsProvider,
|
|
29
29
|
TOOL_DISPLAY_BY_NAME,
|
|
30
30
|
TOOL_SUCCESS_RATE_HIGH,
|
|
31
31
|
TOOL_SUCCESS_RATE_MEDIUM,
|
|
32
|
+
flattenModelsBySource,
|
|
32
33
|
getArenaStatusLabel,
|
|
33
34
|
getStatusColor,
|
|
34
35
|
keyMatchers,
|
|
35
36
|
useSessionStats
|
|
36
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-IQN2CCIE.js";
|
|
37
38
|
import {
|
|
38
39
|
ICON,
|
|
39
40
|
applyCollapsePolicyAndSummary,
|
|
@@ -42,10 +43,10 @@ import {
|
|
|
42
43
|
isFindingsListDisplay,
|
|
43
44
|
shouldDisplayGoalStateCause,
|
|
44
45
|
waitForGoalRuntime
|
|
45
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-JBTZUFR4.js";
|
|
46
47
|
import {
|
|
47
48
|
stopAndGetCapturedInput
|
|
48
|
-
} from "./chunk-
|
|
49
|
+
} from "./chunk-EWNKP4V4.js";
|
|
49
50
|
import {
|
|
50
51
|
fireSessionDeleteHook
|
|
51
52
|
} from "./chunk-L34XSHIZ.js";
|
|
@@ -53,7 +54,7 @@ import {
|
|
|
53
54
|
MAX_SUGGESTIONS_TO_SHOW,
|
|
54
55
|
handleAtCommand,
|
|
55
56
|
sanitizeDisplayText
|
|
56
|
-
} from "./chunk-
|
|
57
|
+
} from "./chunk-HJ34U5J4.js";
|
|
57
58
|
import {
|
|
58
59
|
BuiltinCommandLoader,
|
|
59
60
|
BundledSkillLoader,
|
|
@@ -78,29 +79,33 @@ import {
|
|
|
78
79
|
isSlashCommand,
|
|
79
80
|
isStackedSkillCompletableCommand,
|
|
80
81
|
isValidStackedSkillPrefix,
|
|
82
|
+
loadSessionOutputStyles,
|
|
81
83
|
parseSlashCommand,
|
|
82
84
|
parseStackedSlashCommands,
|
|
83
85
|
recordAutoSkillCommandUsage,
|
|
84
86
|
refreshExtensionContentRuntime,
|
|
85
87
|
resetBackgroundStateForSessionSwitch,
|
|
86
88
|
serializeUserPromptExpansionPrompt
|
|
87
|
-
} from "./chunk-
|
|
89
|
+
} from "./chunk-WR3SH3EY.js";
|
|
88
90
|
import {
|
|
89
91
|
EXTENSION_RELOAD_FAILED_REASON,
|
|
90
92
|
ExtensionRefreshState
|
|
91
|
-
} from "./chunk-
|
|
93
|
+
} from "./chunk-ZAZ3NFL6.js";
|
|
92
94
|
import {
|
|
93
95
|
formatSupportedModes,
|
|
94
96
|
getCommandDisplayName,
|
|
95
97
|
getCommandSourceBadge,
|
|
96
98
|
getCommandSourceGroup,
|
|
97
99
|
getCommandSubcommandNames
|
|
98
|
-
} from "./chunk-
|
|
100
|
+
} from "./chunk-XHGGYCTA.js";
|
|
99
101
|
import {
|
|
102
|
+
calculateCost,
|
|
100
103
|
computeSessionStats,
|
|
101
104
|
getCompressionStatusText,
|
|
102
|
-
getSystemInfoFields
|
|
103
|
-
|
|
105
|
+
getSystemInfoFields,
|
|
106
|
+
levelLabel,
|
|
107
|
+
redactProxy
|
|
108
|
+
} from "./chunk-2RYWGYB3.js";
|
|
104
109
|
import {
|
|
105
110
|
formatDuration
|
|
106
111
|
} from "./chunk-3SH53ANB.js";
|
|
@@ -110,17 +115,17 @@ import {
|
|
|
110
115
|
cleanupOldClipboardImages,
|
|
111
116
|
clipboardHasImage,
|
|
112
117
|
saveClipboardImage
|
|
113
|
-
} from "./chunk-
|
|
114
|
-
import "./chunk-
|
|
118
|
+
} from "./chunk-HY3DXYZK.js";
|
|
119
|
+
import "./chunk-JOPC3FND.js";
|
|
115
120
|
import "./chunk-4WGODMVR.js";
|
|
116
|
-
import "./chunk-
|
|
121
|
+
import "./chunk-4LIPOIXS.js";
|
|
117
122
|
import {
|
|
118
123
|
require_jsx_runtime
|
|
119
124
|
} from "./chunk-SV5PQVQE.js";
|
|
120
125
|
import {
|
|
121
126
|
AUTO_THEME_NAME,
|
|
122
127
|
themeManager
|
|
123
|
-
} from "./chunk-
|
|
128
|
+
} from "./chunk-2XRE4KE4.js";
|
|
124
129
|
import {
|
|
125
130
|
require_constants,
|
|
126
131
|
require_react_reconciler
|
|
@@ -128,24 +133,25 @@ import {
|
|
|
128
133
|
import {
|
|
129
134
|
require_react
|
|
130
135
|
} from "./chunk-5QWWOFGG.js";
|
|
131
|
-
import "./chunk-
|
|
132
|
-
import
|
|
133
|
-
|
|
136
|
+
import "./chunk-SFMCYMVF.js";
|
|
137
|
+
import {
|
|
138
|
+
getErrorMessage as getErrorMessage2
|
|
139
|
+
} from "./chunk-54TF2ZIQ.js";
|
|
140
|
+
import "./chunk-4VZCORNT.js";
|
|
141
|
+
import "./chunk-N7EYO2E7.js";
|
|
134
142
|
import {
|
|
135
143
|
setUpdateHandler
|
|
136
|
-
} from "./chunk-
|
|
144
|
+
} from "./chunk-JLWFGYXU.js";
|
|
137
145
|
import "./chunk-EKTCKZV5.js";
|
|
138
|
-
import "./chunk-
|
|
146
|
+
import "./chunk-43JNQAHO.js";
|
|
139
147
|
import "./chunk-YAF2MQZ6.js";
|
|
140
148
|
import "./chunk-24FVUD5P.js";
|
|
141
|
-
import "./chunk-
|
|
149
|
+
import "./chunk-IKLFS6SC.js";
|
|
142
150
|
import "./chunk-6H67XLET.js";
|
|
143
|
-
import
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
import "./chunk-
|
|
147
|
-
import "./chunk-XEAAO654.js";
|
|
148
|
-
import "./chunk-NRL5CUZT.js";
|
|
151
|
+
import "./chunk-KK2GZGBK.js";
|
|
152
|
+
import "./chunk-M3JGHRMQ.js";
|
|
153
|
+
import "./chunk-VFFQAOPR.js";
|
|
154
|
+
import "./chunk-ZTAVGFKA.js";
|
|
149
155
|
import {
|
|
150
156
|
cpLen,
|
|
151
157
|
escapeAnsiCtrlCodes,
|
|
@@ -161,53 +167,55 @@ import "./chunk-TXASDT2M.js";
|
|
|
161
167
|
import "./chunk-PB7JBAHF.js";
|
|
162
168
|
import "./chunk-UXEO7E3V.js";
|
|
163
169
|
import "./chunk-4VQBQLIZ.js";
|
|
170
|
+
import "./chunk-DMEUXLSS.js";
|
|
164
171
|
import {
|
|
165
172
|
isValidSessionId
|
|
166
173
|
} from "./chunk-ZEZKIS2K.js";
|
|
167
174
|
import {
|
|
168
175
|
formatUnsupportedVoiceModelMessage,
|
|
169
176
|
isSelectableVoiceModel
|
|
170
|
-
} from "./chunk-
|
|
171
|
-
import "./chunk-
|
|
177
|
+
} from "./chunk-XOVVCGZX.js";
|
|
178
|
+
import "./chunk-Y53DG2HA.js";
|
|
172
179
|
import {
|
|
173
180
|
getExtendedSystemInfo
|
|
174
|
-
} from "./chunk-
|
|
175
|
-
import "./chunk-
|
|
181
|
+
} from "./chunk-P6LATTDG.js";
|
|
182
|
+
import "./chunk-YCDL2SAS.js";
|
|
176
183
|
import "./chunk-7U5G6JXI.js";
|
|
177
184
|
import "./chunk-WCCLLK7X.js";
|
|
178
|
-
import "./chunk-
|
|
185
|
+
import "./chunk-O2GG7H4C.js";
|
|
179
186
|
import "./chunk-HWVUSYSN.js";
|
|
180
|
-
import "./chunk-
|
|
181
|
-
import "./chunk-
|
|
182
|
-
import "./chunk-
|
|
187
|
+
import "./chunk-537SQ2AI.js";
|
|
188
|
+
import "./chunk-IXSGOSEG.js";
|
|
189
|
+
import "./chunk-AHBLRVD5.js";
|
|
183
190
|
import "./chunk-57OAHC2Y.js";
|
|
184
|
-
import "./chunk-
|
|
185
|
-
import "./chunk-
|
|
186
|
-
import "./chunk-
|
|
191
|
+
import "./chunk-TMWB67LS.js";
|
|
192
|
+
import "./chunk-4IQKBLTQ.js";
|
|
193
|
+
import "./chunk-WXC6OAWD.js";
|
|
187
194
|
import "./chunk-V6WHFGST.js";
|
|
188
195
|
import {
|
|
189
196
|
createLoadedSettingsAdapter
|
|
190
|
-
} from "./chunk-
|
|
191
|
-
import "./chunk-
|
|
197
|
+
} from "./chunk-4F2QRVW6.js";
|
|
198
|
+
import "./chunk-P4RUUG64.js";
|
|
192
199
|
import "./chunk-2AUM35J5.js";
|
|
193
|
-
import "./chunk-
|
|
194
|
-
import "./chunk-
|
|
200
|
+
import "./chunk-N6VQ37ZZ.js";
|
|
201
|
+
import "./chunk-WEXA2DNG.js";
|
|
195
202
|
import "./chunk-6PLDPT2C.js";
|
|
196
203
|
import "./chunk-FYJ7W2PI.js";
|
|
197
204
|
import "./chunk-STUJ7IMZ.js";
|
|
205
|
+
import "./chunk-4JAGXZR3.js";
|
|
198
206
|
import "./chunk-GYTKQYDB.js";
|
|
199
|
-
import "./chunk-M4KFODIP.js";
|
|
200
207
|
import "./chunk-ALMR3E6Q.js";
|
|
201
208
|
import "./chunk-RKFGE7JH.js";
|
|
202
209
|
import "./chunk-UDG5EZJI.js";
|
|
203
|
-
import "./chunk-3VUENPWF.js";
|
|
204
210
|
import "./chunk-M5GB774H.js";
|
|
205
|
-
import "./chunk-
|
|
211
|
+
import "./chunk-3VUENPWF.js";
|
|
212
|
+
import "./chunk-VDXYYVCD.js";
|
|
206
213
|
import "./chunk-IW6RQPQB.js";
|
|
207
|
-
import "./chunk-
|
|
214
|
+
import "./chunk-5HBA2Z7V.js";
|
|
215
|
+
import "./chunk-X35VIWWJ.js";
|
|
208
216
|
import {
|
|
209
217
|
loadMcpApprovals
|
|
210
|
-
} from "./chunk-
|
|
218
|
+
} from "./chunk-DNPHKA72.js";
|
|
211
219
|
import {
|
|
212
220
|
getDefaultValue,
|
|
213
221
|
getDialogSettingKeys,
|
|
@@ -223,26 +231,26 @@ import {
|
|
|
223
231
|
saveModifiedSettings,
|
|
224
232
|
setPendingSettingValueAny,
|
|
225
233
|
validateSettingValue
|
|
226
|
-
} from "./chunk-
|
|
234
|
+
} from "./chunk-AQ5NAGWI.js";
|
|
227
235
|
import {
|
|
228
236
|
TOGGLE_TYPES
|
|
229
|
-
} from "./chunk-
|
|
237
|
+
} from "./chunk-ER273QE6.js";
|
|
230
238
|
import "./chunk-RKUWKYED.js";
|
|
231
|
-
import "./chunk-
|
|
239
|
+
import "./chunk-BW4333PP.js";
|
|
232
240
|
import "./chunk-IDS7MSUP.js";
|
|
233
241
|
import {
|
|
234
242
|
t
|
|
235
|
-
} from "./chunk-
|
|
243
|
+
} from "./chunk-MUZCSTOO.js";
|
|
236
244
|
import "./chunk-5EJZE3FP.js";
|
|
237
|
-
import "./chunk-
|
|
238
|
-
import "./chunk-
|
|
245
|
+
import "./chunk-H3UDNQLO.js";
|
|
246
|
+
import "./chunk-NUQFUXOG.js";
|
|
239
247
|
import "./chunk-2EAZ43JQ.js";
|
|
240
248
|
import "./chunk-NF5J2WFA.js";
|
|
241
249
|
import {
|
|
242
250
|
getCliVersion
|
|
243
|
-
} from "./chunk-
|
|
251
|
+
} from "./chunk-XUSOYE2I.js";
|
|
244
252
|
import "./chunk-W3N5XAZ6.js";
|
|
245
|
-
import "./chunk-
|
|
253
|
+
import "./chunk-XY3USGFE.js";
|
|
246
254
|
import "./chunk-NPQ5ZKRP.js";
|
|
247
255
|
import "./chunk-MR3PXB6E.js";
|
|
248
256
|
import {
|
|
@@ -257,23 +265,26 @@ import {
|
|
|
257
265
|
findExistingProviderModels,
|
|
258
266
|
findProviderByCredentials,
|
|
259
267
|
findProviderById,
|
|
260
|
-
getDefaultModelIds
|
|
261
|
-
|
|
262
|
-
|
|
268
|
+
getDefaultModelIds,
|
|
269
|
+
resolveMetadataKey
|
|
270
|
+
} from "./chunk-UEZOXZNI.js";
|
|
271
|
+
import "./chunk-GELRJXE2.js";
|
|
272
|
+
import "./chunk-32CM56LO.js";
|
|
273
|
+
import "./chunk-JPEAQJNS.js";
|
|
263
274
|
import "./chunk-XFSFZCM5.js";
|
|
264
|
-
import "./chunk-
|
|
275
|
+
import "./chunk-WTW36TJ3.js";
|
|
265
276
|
import "./chunk-LJZSMWOH.js";
|
|
266
|
-
import "./chunk-
|
|
267
|
-
import "./chunk-
|
|
268
|
-
import "./chunk-
|
|
269
|
-
import "./chunk-
|
|
277
|
+
import "./chunk-VUSSAGKI.js";
|
|
278
|
+
import "./chunk-O45WBTNS.js";
|
|
279
|
+
import "./chunk-DJXSOEFB.js";
|
|
280
|
+
import "./chunk-2WGJG2KW.js";
|
|
281
|
+
import "./chunk-QMFOYPGV.js";
|
|
282
|
+
import "./chunk-LDS57224.js";
|
|
270
283
|
import "./chunk-ZPJWUGCS.js";
|
|
271
|
-
import "./chunk-
|
|
272
|
-
import "./chunk-
|
|
273
|
-
import "./chunk-
|
|
274
|
-
import "./chunk-
|
|
275
|
-
import "./chunk-3AKCBZVW.js";
|
|
276
|
-
import "./chunk-SULZPKTA.js";
|
|
284
|
+
import "./chunk-HFTB354P.js";
|
|
285
|
+
import "./chunk-BUQN5LTI.js";
|
|
286
|
+
import "./chunk-VU7O7CGQ.js";
|
|
287
|
+
import "./chunk-QSC5YOEC.js";
|
|
277
288
|
import "./chunk-VNOVK4I7.js";
|
|
278
289
|
import {
|
|
279
290
|
CoreToolScheduler,
|
|
@@ -290,6 +301,7 @@ import {
|
|
|
290
301
|
compactToolResultDisplayForHistory,
|
|
291
302
|
computeUniqueBranchTitle,
|
|
292
303
|
didWriteProjectContextFile,
|
|
304
|
+
getExtensionDisplayName,
|
|
293
305
|
isEditorAvailable,
|
|
294
306
|
isGatedMcpScope,
|
|
295
307
|
isImageGenerationCapable,
|
|
@@ -301,59 +313,57 @@ import {
|
|
|
301
313
|
parseRule,
|
|
302
314
|
parseVisionModelSetting,
|
|
303
315
|
refreshMemoryInstruction
|
|
304
|
-
} from "./chunk-
|
|
316
|
+
} from "./chunk-I72PHOKL.js";
|
|
305
317
|
import "./chunk-GOFAQQZA.js";
|
|
306
|
-
import "./chunk-
|
|
318
|
+
import "./chunk-3K65MUKD.js";
|
|
307
319
|
import "./chunk-6HUXPLB5.js";
|
|
308
320
|
import "./chunk-TWPJO254.js";
|
|
309
321
|
import "./chunk-CQ35AJ4Z.js";
|
|
310
|
-
import "./chunk-
|
|
311
|
-
import "./chunk-
|
|
312
|
-
import "./chunk-
|
|
322
|
+
import "./chunk-YHDGABDC.js";
|
|
323
|
+
import "./chunk-RDKXZ2LS.js";
|
|
324
|
+
import "./chunk-B54PFQS5.js";
|
|
313
325
|
import {
|
|
314
326
|
writeRuntimeStatus
|
|
315
|
-
} from "./chunk-
|
|
327
|
+
} from "./chunk-43NOB5NM.js";
|
|
316
328
|
import "./chunk-6PVPNMXU.js";
|
|
317
329
|
import {
|
|
318
330
|
resolveModelId
|
|
319
|
-
} from "./chunk-
|
|
320
|
-
import "./chunk-
|
|
331
|
+
} from "./chunk-565U2ANU.js";
|
|
332
|
+
import "./chunk-FDOGGKAA.js";
|
|
321
333
|
import "./chunk-IRH27ZC2.js";
|
|
322
334
|
import "./chunk-QHWCP53L.js";
|
|
323
|
-
import "./chunk-
|
|
324
|
-
import "./chunk-QJNDUTOL.js";
|
|
325
|
-
import "./chunk-O6GEWCJA.js";
|
|
326
|
-
import {
|
|
327
|
-
BUILT_IN_OUTPUT_STYLES
|
|
328
|
-
} from "./chunk-OSSTATJF.js";
|
|
329
|
-
import "./chunk-ZHO2CW6D.js";
|
|
330
|
-
import {
|
|
331
|
-
registerSession
|
|
332
|
-
} from "./chunk-CVX63TFJ.js";
|
|
333
|
-
import "./chunk-373DQUVA.js";
|
|
334
|
-
import "./chunk-H43PSPYS.js";
|
|
335
|
-
import "./chunk-U6D2PPMN.js";
|
|
335
|
+
import "./chunk-F53KKZUD.js";
|
|
336
336
|
import {
|
|
337
337
|
resolveBundleDir
|
|
338
|
-
} from "./chunk-
|
|
339
|
-
import "./chunk-
|
|
340
|
-
import "./chunk-
|
|
341
|
-
import "./chunk-
|
|
338
|
+
} from "./chunk-PZV2FASB.js";
|
|
339
|
+
import "./chunk-QJNDUTOL.js";
|
|
340
|
+
import "./chunk-OECNP26L.js";
|
|
341
|
+
import "./chunk-O6GEWCJA.js";
|
|
342
342
|
import {
|
|
343
343
|
formatMemoryUsage
|
|
344
344
|
} from "./chunk-CHEIIBT3.js";
|
|
345
|
-
import "./chunk-
|
|
345
|
+
import "./chunk-UKKYOIVT.js";
|
|
346
|
+
import {
|
|
347
|
+
registerSession
|
|
348
|
+
} from "./chunk-B44JBZBB.js";
|
|
349
|
+
import "./chunk-BF3RUIVP.js";
|
|
346
350
|
import {
|
|
347
351
|
APPROVAL_MODES
|
|
348
352
|
} from "./chunk-JX6XHPTX.js";
|
|
353
|
+
import "./chunk-R355CUNQ.js";
|
|
354
|
+
import "./chunk-4VUVBN3Y.js";
|
|
355
|
+
import "./chunk-ZSTCM3MX.js";
|
|
356
|
+
import "./chunk-NXWYCSPL.js";
|
|
349
357
|
import "./chunk-MLXTMF7H.js";
|
|
358
|
+
import "./chunk-GXZHYPHZ.js";
|
|
359
|
+
import "./chunk-3CZ2BQV6.js";
|
|
350
360
|
import "./chunk-PQEISIKS.js";
|
|
351
|
-
import "./chunk-
|
|
352
|
-
import "./chunk-
|
|
361
|
+
import "./chunk-3K456UJF.js";
|
|
362
|
+
import "./chunk-VEFRT7NX.js";
|
|
353
363
|
import "./chunk-S6LOFUVP.js";
|
|
354
364
|
import "./chunk-NAVJD2PQ.js";
|
|
355
|
-
import "./chunk-
|
|
356
|
-
import "./chunk-
|
|
365
|
+
import "./chunk-UKADFFL2.js";
|
|
366
|
+
import "./chunk-EJNYBDYC.js";
|
|
357
367
|
import "./chunk-QHMLYMMS.js";
|
|
358
368
|
import "./chunk-CFKIH3D3.js";
|
|
359
369
|
import {
|
|
@@ -361,9 +371,10 @@ import {
|
|
|
361
371
|
applyReasoningEffort
|
|
362
372
|
} from "./chunk-2LD5U7Q3.js";
|
|
363
373
|
import "./chunk-DJ2GSRLV.js";
|
|
364
|
-
import "./chunk-
|
|
365
|
-
import "./chunk-
|
|
366
|
-
import "./chunk-
|
|
374
|
+
import "./chunk-W4LL5RZO.js";
|
|
375
|
+
import "./chunk-3UMWOKJC.js";
|
|
376
|
+
import "./chunk-KFFCDLKV.js";
|
|
377
|
+
import "./chunk-7OCIQNKX.js";
|
|
367
378
|
import {
|
|
368
379
|
AuthEvent,
|
|
369
380
|
ModelSlashCommandEvent,
|
|
@@ -385,52 +396,56 @@ import {
|
|
|
385
396
|
shouldRunVisionBridge,
|
|
386
397
|
splitImageParts,
|
|
387
398
|
uiTelemetryService
|
|
388
|
-
} from "./chunk-
|
|
399
|
+
} from "./chunk-P5LDR7FI.js";
|
|
400
|
+
import "./chunk-5ETULJLP.js";
|
|
389
401
|
import "./chunk-XBVNNDPK.js";
|
|
390
402
|
import "./chunk-VGC4I5JJ.js";
|
|
391
403
|
import {
|
|
392
|
-
getAllGeminiMdFilenames
|
|
393
|
-
|
|
394
|
-
|
|
404
|
+
getAllGeminiMdFilenames,
|
|
405
|
+
getUnsupportedImageFormatWarning,
|
|
406
|
+
isSupportedImageMimeType
|
|
407
|
+
} from "./chunk-J6MB5ZHZ.js";
|
|
408
|
+
import "./chunk-EDIDYZBT.js";
|
|
409
|
+
import "./chunk-HD7O6WLV.js";
|
|
395
410
|
import "./chunk-WZAD4ZNJ.js";
|
|
396
411
|
import "./chunk-FPGTNKCP.js";
|
|
397
|
-
import "./chunk-
|
|
398
|
-
import "./chunk-
|
|
399
|
-
import "./chunk-
|
|
400
|
-
import "./chunk-
|
|
412
|
+
import "./chunk-TIGXX4PA.js";
|
|
413
|
+
import "./chunk-5MTARK4Y.js";
|
|
414
|
+
import "./chunk-XFFRI3WM.js";
|
|
415
|
+
import "./chunk-4HOEU2OR.js";
|
|
401
416
|
import "./chunk-HHJLM3WQ.js";
|
|
402
417
|
import {
|
|
403
418
|
redactUrlCredentials
|
|
404
|
-
} from "./chunk-
|
|
419
|
+
} from "./chunk-7VEYUF3N.js";
|
|
405
420
|
import "./chunk-74TONY4F.js";
|
|
406
|
-
import "./chunk-
|
|
407
|
-
import "./chunk-
|
|
408
|
-
import "./chunk-
|
|
409
|
-
import "./chunk-
|
|
421
|
+
import "./chunk-GMNLYQOS.js";
|
|
422
|
+
import "./chunk-D6PIMKY3.js";
|
|
423
|
+
import "./chunk-NGX4NUNP.js";
|
|
424
|
+
import "./chunk-FKJM6JKY.js";
|
|
410
425
|
import {
|
|
411
426
|
isPathWithinRoot
|
|
412
|
-
} from "./chunk-
|
|
427
|
+
} from "./chunk-IZ2U57NY.js";
|
|
413
428
|
import {
|
|
414
429
|
ToolNames,
|
|
415
430
|
isShellProgressData
|
|
416
|
-
} from "./chunk-
|
|
431
|
+
} from "./chunk-RPBMP6BN.js";
|
|
417
432
|
import {
|
|
418
433
|
Storage,
|
|
419
434
|
createDebugLogger,
|
|
420
435
|
escapePath,
|
|
421
436
|
getErrorMessage,
|
|
422
437
|
isDebugLogFileEnabled
|
|
423
|
-
} from "./chunk-
|
|
424
|
-
import "./chunk-
|
|
438
|
+
} from "./chunk-ZAFYHRVY.js";
|
|
439
|
+
import "./chunk-TDP7UULF.js";
|
|
425
440
|
import "./chunk-HRPFBHW7.js";
|
|
441
|
+
import {
|
|
442
|
+
registerCleanup,
|
|
443
|
+
runExitCleanup
|
|
444
|
+
} from "./chunk-BKNY7PDI.js";
|
|
426
445
|
import {
|
|
427
446
|
profileCheckpoint
|
|
428
447
|
} from "./chunk-QILD6R27.js";
|
|
429
448
|
import "./chunk-JVEGA3MM.js";
|
|
430
|
-
import {
|
|
431
|
-
registerCleanup,
|
|
432
|
-
runExitCleanup
|
|
433
|
-
} from "./chunk-RJUVTJEZ.js";
|
|
434
449
|
import {
|
|
435
450
|
writeStderrLine,
|
|
436
451
|
writeStdoutLine
|
|
@@ -438,7 +453,7 @@ import {
|
|
|
438
453
|
import "./chunk-75DOP5OR.js";
|
|
439
454
|
import "./chunk-DMTGGOSA.js";
|
|
440
455
|
import "./chunk-YQ3U5MUC.js";
|
|
441
|
-
import "./chunk-
|
|
456
|
+
import "./chunk-MATEIJZF.js";
|
|
442
457
|
import "./chunk-TBWQLLFO.js";
|
|
443
458
|
import {
|
|
444
459
|
init_esbuild_shims
|
|
@@ -40982,18 +40997,23 @@ var import_react49 = __toESM(require_react(), 1);
|
|
|
40982
40997
|
// packages/cli/src/ui/opentui/opentui-host.ts
|
|
40983
40998
|
init_esbuild_shims();
|
|
40984
40999
|
|
|
40985
|
-
// packages/cli/src/ui/opentui/
|
|
40986
|
-
init_esbuild_shims();
|
|
40987
|
-
import { randomUUID } from "node:crypto";
|
|
40988
|
-
|
|
40989
|
-
// packages/cli/src/ui/opentui/resume-session.ts
|
|
40990
|
-
init_esbuild_shims();
|
|
40991
|
-
|
|
40992
|
-
// packages/cli/src/ui/opentui/transcript-adapter.ts
|
|
41000
|
+
// packages/cli/src/ui/opentui/item-projection.ts
|
|
40993
41001
|
init_esbuild_shims();
|
|
40994
41002
|
|
|
40995
41003
|
// packages/cli/src/ui/opentui/event-adapter.ts
|
|
40996
41004
|
init_esbuild_shims();
|
|
41005
|
+
function formatStopHookLoopText(stopHookCount, reasons) {
|
|
41006
|
+
return `Ran ${stopHookCount} stop hooks
|
|
41007
|
+
\u23BF Stop hook error: ${reasons[reasons.length - 1] ?? ""}`;
|
|
41008
|
+
}
|
|
41009
|
+
__name(formatStopHookLoopText, "formatStopHookLoopText");
|
|
41010
|
+
function formatUserPromptSubmitBlocked(reason, originalPrompt) {
|
|
41011
|
+
return `\u2715 UserPromptSubmit operation blocked by hook:
|
|
41012
|
+
${reason}
|
|
41013
|
+
|
|
41014
|
+
Original prompt: ${sanitizeSensitiveText(originalPrompt)}`;
|
|
41015
|
+
}
|
|
41016
|
+
__name(formatUserPromptSubmitBlocked, "formatUserPromptSubmitBlocked");
|
|
40997
41017
|
function formatToolArgs(args) {
|
|
40998
41018
|
if (!args || Object.keys(args).length === 0) return void 0;
|
|
40999
41019
|
return JSON.stringify(args);
|
|
@@ -41346,10 +41366,9 @@ function createEventMapper(context) {
|
|
|
41346
41366
|
const v3 = ev.value;
|
|
41347
41367
|
out.push({
|
|
41348
41368
|
type: "warning",
|
|
41349
|
-
|
|
41350
|
-
|
|
41351
|
-
|
|
41352
|
-
Original prompt: ${sanitizeSensitiveText(v3.originalPrompt)}`
|
|
41369
|
+
// ink redacts the echoed prompt (HistoryItemDisplay): sensitive
|
|
41370
|
+
// patterns masked and the text capped at 200 chars.
|
|
41371
|
+
text: formatUserPromptSubmitBlocked(v3.reason, v3.originalPrompt)
|
|
41353
41372
|
});
|
|
41354
41373
|
break;
|
|
41355
41374
|
}
|
|
@@ -41358,8 +41377,7 @@ Original prompt: ${sanitizeSensitiveText(v3.originalPrompt)}`
|
|
|
41358
41377
|
const v3 = ev.value;
|
|
41359
41378
|
out.push({
|
|
41360
41379
|
type: "info",
|
|
41361
|
-
text:
|
|
41362
|
-
\u23BF Stop hook error: ${v3.reasons[v3.reasons.length - 1] ?? ""}`
|
|
41380
|
+
text: formatStopHookLoopText(v3.stopHookCount, v3.reasons)
|
|
41363
41381
|
});
|
|
41364
41382
|
break;
|
|
41365
41383
|
}
|
|
@@ -41392,7 +41410,893 @@ Original prompt: ${sanitizeSensitiveText(v3.originalPrompt)}`
|
|
|
41392
41410
|
}
|
|
41393
41411
|
__name(createEventMapper, "createEventMapper");
|
|
41394
41412
|
|
|
41413
|
+
// packages/cli/src/ui/opentui/item-projection.ts
|
|
41414
|
+
function fmtTokensShort(n) {
|
|
41415
|
+
return n >= 1e3 ? `${(n / 1e3).toFixed(1)}k` : String(n);
|
|
41416
|
+
}
|
|
41417
|
+
__name(fmtTokensShort, "fmtTokensShort");
|
|
41418
|
+
function pct(part, whole) {
|
|
41419
|
+
if (whole <= 0) return "0.0";
|
|
41420
|
+
const p2 = part / whole * 100;
|
|
41421
|
+
return p2 > 100 ? ">100" : p2.toFixed(1);
|
|
41422
|
+
}
|
|
41423
|
+
__name(pct, "pct");
|
|
41424
|
+
function projectAbout(systemInfo) {
|
|
41425
|
+
const lines = ["Status"];
|
|
41426
|
+
const addField = /* @__PURE__ */ __name((label, value) => {
|
|
41427
|
+
if (value) lines.push(`${label}: ${value}`);
|
|
41428
|
+
}, "addField");
|
|
41429
|
+
const cliVersion = String(systemInfo["cliVersion"] ?? "");
|
|
41430
|
+
const gitCommit = systemInfo["gitCommit"];
|
|
41431
|
+
addField(
|
|
41432
|
+
"Qwen Code",
|
|
41433
|
+
cliVersion + (gitCommit ? ` (${String(gitCommit)})` : "")
|
|
41434
|
+
);
|
|
41435
|
+
const nodeVersion = String(systemInfo["nodeVersion"] ?? "");
|
|
41436
|
+
const npmVersion = String(systemInfo["npmVersion"] ?? "");
|
|
41437
|
+
addField(
|
|
41438
|
+
"Runtime",
|
|
41439
|
+
[
|
|
41440
|
+
nodeVersion ? `Node.js ${nodeVersion}` : "",
|
|
41441
|
+
npmVersion ? `npm ${npmVersion}` : ""
|
|
41442
|
+
].filter(Boolean).join(" / ")
|
|
41443
|
+
);
|
|
41444
|
+
addField("IDE Client", String(systemInfo["ideClient"] ?? ""));
|
|
41445
|
+
const lspStatus = systemInfo["lspStatus"];
|
|
41446
|
+
if (lspStatus !== void 0) addField("LSP", String(lspStatus));
|
|
41447
|
+
addField(
|
|
41448
|
+
"OS",
|
|
41449
|
+
[
|
|
41450
|
+
String(systemInfo["osPlatform"] ?? ""),
|
|
41451
|
+
String(systemInfo["osArch"] ?? ""),
|
|
41452
|
+
systemInfo["osRelease"] ? `(${String(systemInfo["osRelease"])})` : ""
|
|
41453
|
+
].filter(Boolean).join(" ")
|
|
41454
|
+
);
|
|
41455
|
+
const selectedAuthType = String(systemInfo["selectedAuthType"] ?? "");
|
|
41456
|
+
const baseUrl = systemInfo["baseUrl"];
|
|
41457
|
+
const apiKeyEnvKey = systemInfo["apiKeyEnvKey"];
|
|
41458
|
+
let authLabel = "";
|
|
41459
|
+
if (selectedAuthType) {
|
|
41460
|
+
const matched = findProviderByCredentials(baseUrl, apiKeyEnvKey);
|
|
41461
|
+
if (matched && resolveMetadataKey(matched) && matched.label) {
|
|
41462
|
+
authLabel = matched.label;
|
|
41463
|
+
} else if (selectedAuthType.startsWith("oauth") || selectedAuthType === "qwen-oauth") {
|
|
41464
|
+
authLabel = "Qwen OAuth";
|
|
41465
|
+
} else {
|
|
41466
|
+
authLabel = `API Key - ${selectedAuthType}`;
|
|
41467
|
+
}
|
|
41468
|
+
}
|
|
41469
|
+
addField("Auth", authLabel);
|
|
41470
|
+
const isOAuth = authLabel === "Qwen OAuth" || authLabel.startsWith("Qwen OAuth");
|
|
41471
|
+
if (!isOAuth && selectedAuthType && baseUrl) {
|
|
41472
|
+
addField("Base URL", baseUrl);
|
|
41473
|
+
}
|
|
41474
|
+
const modelVersion = String(systemInfo["modelVersion"] ?? "");
|
|
41475
|
+
addField("Model", modelVersion);
|
|
41476
|
+
addField("Fast Model", String(systemInfo["fastModel"] ?? "") || modelVersion);
|
|
41477
|
+
addField("Session ID", String(systemInfo["sessionId"] ?? ""));
|
|
41478
|
+
addField("Sandbox", String(systemInfo["sandboxEnv"] ?? ""));
|
|
41479
|
+
const proxy = systemInfo["proxy"];
|
|
41480
|
+
if (proxy) {
|
|
41481
|
+
addField("Proxy", redactProxy(proxy));
|
|
41482
|
+
} else {
|
|
41483
|
+
addField("Proxy", "no proxy");
|
|
41484
|
+
}
|
|
41485
|
+
addField("Memory Usage", String(systemInfo["memoryUsage"] ?? ""));
|
|
41486
|
+
return lines.join("\n");
|
|
41487
|
+
}
|
|
41488
|
+
__name(projectAbout, "projectAbout");
|
|
41489
|
+
function projectToolsList(tools, showDescriptions) {
|
|
41490
|
+
const lines = ["Available Qwen Code CLI tools:", ""];
|
|
41491
|
+
if (tools.length === 0) {
|
|
41492
|
+
lines.push(" No tools available");
|
|
41493
|
+
return lines.join("\n");
|
|
41494
|
+
}
|
|
41495
|
+
for (const tool of tools) {
|
|
41496
|
+
lines.push(
|
|
41497
|
+
` - ${tool.displayName ?? tool.name}${showDescriptions ? ` (${tool.name})` : ""}`
|
|
41498
|
+
);
|
|
41499
|
+
if (showDescriptions && tool.description?.trim()) {
|
|
41500
|
+
lines.push(` ${tool.description.trim()}`);
|
|
41501
|
+
}
|
|
41502
|
+
}
|
|
41503
|
+
return lines.join("\n");
|
|
41504
|
+
}
|
|
41505
|
+
__name(projectToolsList, "projectToolsList");
|
|
41506
|
+
function projectSkillsList(skills) {
|
|
41507
|
+
const lines = ["Available skills:", ""];
|
|
41508
|
+
if (skills.length === 0) {
|
|
41509
|
+
lines.push(" No skills available");
|
|
41510
|
+
return lines.join("\n");
|
|
41511
|
+
}
|
|
41512
|
+
const truncate2 = /* @__PURE__ */ __name((s, n) => s.length > n ? `${s.slice(0, Math.max(0, n - 1))}\u2026` : s, "truncate");
|
|
41513
|
+
for (const skill of skills) {
|
|
41514
|
+
if (skill.description) {
|
|
41515
|
+
const name = truncate2(skill.name, 24).padEnd(24);
|
|
41516
|
+
lines.push(
|
|
41517
|
+
` - ${name} ${truncate2(skill.description, 80)}${skill.level ? ` (${levelLabel(skill.level)})` : ""}`
|
|
41518
|
+
);
|
|
41519
|
+
} else {
|
|
41520
|
+
lines.push(` - ${skill.name}`);
|
|
41521
|
+
}
|
|
41522
|
+
}
|
|
41523
|
+
return lines.join("\n");
|
|
41524
|
+
}
|
|
41525
|
+
__name(projectSkillsList, "projectSkillsList");
|
|
41526
|
+
function flattenActiveModels(metrics) {
|
|
41527
|
+
return flattenModelsBySource(metrics.models).map((entry) => ({
|
|
41528
|
+
key: entry.key,
|
|
41529
|
+
label: entry.label,
|
|
41530
|
+
metrics: entry.metrics
|
|
41531
|
+
}));
|
|
41532
|
+
}
|
|
41533
|
+
__name(flattenActiveModels, "flattenActiveModels");
|
|
41534
|
+
function entryCost(entry, modelPricing) {
|
|
41535
|
+
return calculateCost({
|
|
41536
|
+
inputTokens: entry.metrics.tokens.prompt,
|
|
41537
|
+
outputTokens: entry.metrics.tokens.candidates + entry.metrics.tokens.thoughts,
|
|
41538
|
+
pricing: (modelPricing ?? {})[entry.key.split("::")[0]]
|
|
41539
|
+
});
|
|
41540
|
+
}
|
|
41541
|
+
__name(entryCost, "entryCost");
|
|
41542
|
+
function projectModelStats(metrics, modelPricing) {
|
|
41543
|
+
const entries = flattenActiveModels(metrics);
|
|
41544
|
+
if (entries.length === 0) {
|
|
41545
|
+
return "No API calls have been made in this session.";
|
|
41546
|
+
}
|
|
41547
|
+
const hasPricing = entries.some(
|
|
41548
|
+
(entry) => entryCost(entry, modelPricing) != null
|
|
41549
|
+
);
|
|
41550
|
+
const lines = ["Model Stats For Nerds", ""];
|
|
41551
|
+
for (const entry of entries) {
|
|
41552
|
+
const m3 = entry.metrics;
|
|
41553
|
+
lines.push(entry.label);
|
|
41554
|
+
lines.push("API");
|
|
41555
|
+
lines.push(`Requests ${m3.api.totalRequests.toLocaleString()}`);
|
|
41556
|
+
lines.push(
|
|
41557
|
+
`Errors ${m3.api.totalErrors.toLocaleString()} (${m3.api.totalRequests > 0 ? (m3.api.totalErrors / m3.api.totalRequests * 100).toFixed(1) : "0.0"}%)`
|
|
41558
|
+
);
|
|
41559
|
+
lines.push(
|
|
41560
|
+
`Avg Latency ${m3.api.totalRequests > 0 ? formatDuration(m3.api.totalLatencyMs / m3.api.totalRequests) : "0s"}`
|
|
41561
|
+
);
|
|
41562
|
+
lines.push("Tokens");
|
|
41563
|
+
lines.push(`Total ${m3.tokens.total.toLocaleString()}`);
|
|
41564
|
+
lines.push(` \u21B3 Prompt ${m3.tokens.prompt.toLocaleString()}`);
|
|
41565
|
+
if (m3.tokens.cached > 0) {
|
|
41566
|
+
lines.push(
|
|
41567
|
+
` \u21B3 Cached ${m3.tokens.cached.toLocaleString()} (${pct(m3.tokens.cached, m3.tokens.prompt)}%)`
|
|
41568
|
+
);
|
|
41569
|
+
}
|
|
41570
|
+
if (m3.tokens.thoughts > 0) {
|
|
41571
|
+
lines.push(` \u21B3 Thoughts ${m3.tokens.thoughts.toLocaleString()}`);
|
|
41572
|
+
}
|
|
41573
|
+
lines.push(` \u21B3 Output ${m3.tokens.candidates.toLocaleString()}`);
|
|
41574
|
+
if (hasPricing) {
|
|
41575
|
+
const cost = entryCost(entry, modelPricing);
|
|
41576
|
+
lines.push("Cost");
|
|
41577
|
+
lines.push(`Estimated ${cost != null ? `$${cost.toFixed(4)}` : "N/A"}`);
|
|
41578
|
+
}
|
|
41579
|
+
lines.push("");
|
|
41580
|
+
}
|
|
41581
|
+
return lines.join("\n").trimEnd();
|
|
41582
|
+
}
|
|
41583
|
+
__name(projectModelStats, "projectModelStats");
|
|
41584
|
+
function projectToolStats(metrics) {
|
|
41585
|
+
const byName = metrics.tools?.byName ?? {};
|
|
41586
|
+
const active = Object.entries(byName).filter(
|
|
41587
|
+
([, stats]) => stats.count > 0
|
|
41588
|
+
);
|
|
41589
|
+
if (active.length === 0) {
|
|
41590
|
+
return "No tool calls have been made in this session.";
|
|
41591
|
+
}
|
|
41592
|
+
const lines = [
|
|
41593
|
+
"Tool Stats For Nerds",
|
|
41594
|
+
"",
|
|
41595
|
+
"Tool Name Calls Success Rate Avg Duration",
|
|
41596
|
+
"---------------------------------------------------------------"
|
|
41597
|
+
];
|
|
41598
|
+
for (const [name, raw] of active) {
|
|
41599
|
+
const stats = raw;
|
|
41600
|
+
lines.push(
|
|
41601
|
+
`${name} ${stats.count} ${(stats.success / stats.count * 100).toFixed(1)}% ${formatDuration(stats.durationMs / stats.count)}`
|
|
41602
|
+
);
|
|
41603
|
+
}
|
|
41604
|
+
let accept = 0;
|
|
41605
|
+
let reject = 0;
|
|
41606
|
+
let modify = 0;
|
|
41607
|
+
for (const raw of Object.values(byName)) {
|
|
41608
|
+
const decisions = raw.decisions;
|
|
41609
|
+
accept += decisions?.["accept"] ?? 0;
|
|
41610
|
+
reject += decisions?.["reject"] ?? 0;
|
|
41611
|
+
modify += decisions?.["modify"] ?? 0;
|
|
41612
|
+
}
|
|
41613
|
+
const totalReviewed = accept + reject + modify;
|
|
41614
|
+
lines.push("");
|
|
41615
|
+
lines.push("User Decision Summary");
|
|
41616
|
+
lines.push(`Total Reviewed Suggestions: ${totalReviewed}`);
|
|
41617
|
+
lines.push(` \xBB Accepted: ${accept}`);
|
|
41618
|
+
lines.push(` \xBB Rejected: ${reject}`);
|
|
41619
|
+
lines.push(` \xBB Modified: ${modify}`);
|
|
41620
|
+
lines.push("");
|
|
41621
|
+
lines.push(
|
|
41622
|
+
` Overall Agreement Rate: ${totalReviewed > 0 ? `${(accept / totalReviewed * 100).toFixed(1)}%` : "--"}`
|
|
41623
|
+
);
|
|
41624
|
+
return lines.join("\n");
|
|
41625
|
+
}
|
|
41626
|
+
__name(projectToolStats, "projectToolStats");
|
|
41627
|
+
function projectSkillStats(metrics) {
|
|
41628
|
+
const skills = metrics.skills ?? { byName: {} };
|
|
41629
|
+
const byName = skills.byName ?? {};
|
|
41630
|
+
const active = Object.entries(byName).filter(([, stats]) => stats.count > 0).sort(
|
|
41631
|
+
(a, b3) => b3[1].count - a[1].count
|
|
41632
|
+
);
|
|
41633
|
+
if (active.length === 0) {
|
|
41634
|
+
return "No skill calls have been made in this session.";
|
|
41635
|
+
}
|
|
41636
|
+
const lines = [
|
|
41637
|
+
"Skill Stats For Nerds",
|
|
41638
|
+
"",
|
|
41639
|
+
"Skill Name Calls OK Fail Success Rate",
|
|
41640
|
+
"-----------------------------------------------------------------------"
|
|
41641
|
+
];
|
|
41642
|
+
for (const [name, raw] of active) {
|
|
41643
|
+
const stats = raw;
|
|
41644
|
+
lines.push(
|
|
41645
|
+
`${name} ${stats.count} ${stats.success} ${stats.fail} ${(stats.success / stats.count * 100).toFixed(1)}%`
|
|
41646
|
+
);
|
|
41647
|
+
}
|
|
41648
|
+
return lines.join("\n");
|
|
41649
|
+
}
|
|
41650
|
+
__name(projectSkillStats, "projectSkillStats");
|
|
41651
|
+
function projectSummary(summary) {
|
|
41652
|
+
if (summary.isPending) {
|
|
41653
|
+
switch (summary.stage) {
|
|
41654
|
+
case "generating":
|
|
41655
|
+
return "Generating project summary...";
|
|
41656
|
+
case "saving":
|
|
41657
|
+
return "Saving project summary...";
|
|
41658
|
+
default:
|
|
41659
|
+
return "Processing summary...";
|
|
41660
|
+
}
|
|
41661
|
+
}
|
|
41662
|
+
return `Project summary generated and saved successfully!${summary.filePath ? ` Saved to: ${summary.filePath}` : ""}`;
|
|
41663
|
+
}
|
|
41664
|
+
__name(projectSummary, "projectSummary");
|
|
41665
|
+
function projectInsightProgress(progress) {
|
|
41666
|
+
if (progress.error) {
|
|
41667
|
+
return `\u2715 ${progress.stage}
|
|
41668
|
+
${progress.error}`;
|
|
41669
|
+
}
|
|
41670
|
+
if (progress.isComplete) return `\u2713 ${progress.stage}`;
|
|
41671
|
+
const filled = Math.round(progress.progress / 100 * 30);
|
|
41672
|
+
const bar = "\u2588".repeat(filled) + "\u2591".repeat(Math.max(0, 30 - filled));
|
|
41673
|
+
return `${bar} ${progress.stage}${progress.detail ? ` (${progress.detail})` : ""}`;
|
|
41674
|
+
}
|
|
41675
|
+
__name(projectInsightProgress, "projectInsightProgress");
|
|
41676
|
+
function projectContextUsage(item) {
|
|
41677
|
+
const modelName = String(item["modelName"] ?? "");
|
|
41678
|
+
const totalTokens = Number(item["totalTokens"] ?? 0);
|
|
41679
|
+
const windowSize = Number(item["contextWindowSize"] ?? 0);
|
|
41680
|
+
const breakdown = item["breakdown"] ?? {};
|
|
41681
|
+
const isEstimated = Boolean(item["isEstimated"]);
|
|
41682
|
+
const showDetails = Boolean(item["showDetails"]);
|
|
41683
|
+
const lines = ["Context Usage", ""];
|
|
41684
|
+
if (totalTokens <= 0) {
|
|
41685
|
+
lines.push("No API response yet. Send a message to see actual usage.");
|
|
41686
|
+
lines.push("Estimated pre-conversation overhead");
|
|
41687
|
+
}
|
|
41688
|
+
lines.push(
|
|
41689
|
+
`Model: ${modelName} Context window: ${fmtTokensShort(windowSize)} tokens`
|
|
41690
|
+
);
|
|
41691
|
+
if (totalTokens > 0) {
|
|
41692
|
+
if (isEstimated) {
|
|
41693
|
+
lines.push("Token usage is estimated until provider usage is received.");
|
|
41694
|
+
}
|
|
41695
|
+
const free = Number(breakdown["freeSpace"] ?? 0);
|
|
41696
|
+
const buffer = Number(breakdown["autocompactBuffer"] ?? 0);
|
|
41697
|
+
lines.push("");
|
|
41698
|
+
lines.push(
|
|
41699
|
+
`\u2588 Used ${fmtTokensShort(totalTokens)} tokens (${pct(totalTokens, windowSize)}%)`
|
|
41700
|
+
);
|
|
41701
|
+
lines.push(
|
|
41702
|
+
`\u2591 Free ${fmtTokensShort(free)} tokens (${pct(free, windowSize)}%)`
|
|
41703
|
+
);
|
|
41704
|
+
lines.push(
|
|
41705
|
+
`\u2592 Autocompact buffer ${fmtTokensShort(buffer)} tokens (${pct(buffer, windowSize)}%)`
|
|
41706
|
+
);
|
|
41707
|
+
}
|
|
41708
|
+
lines.push("");
|
|
41709
|
+
lines.push("Usage by category");
|
|
41710
|
+
const categories = [
|
|
41711
|
+
["System prompt", "systemPrompt"],
|
|
41712
|
+
["Built-in tools", "builtinTools"],
|
|
41713
|
+
["MCP tools", "mcpTools"],
|
|
41714
|
+
["Memory files", "memoryFiles"],
|
|
41715
|
+
["Skills", "skills"]
|
|
41716
|
+
];
|
|
41717
|
+
for (const [label, key] of categories) {
|
|
41718
|
+
const value = Number(breakdown[key] ?? 0);
|
|
41719
|
+
if (key === "mcpTools" && value <= 0) continue;
|
|
41720
|
+
lines.push(
|
|
41721
|
+
`\u2588 ${label} ${fmtTokensShort(value)} tokens (${pct(value, windowSize)}%)`
|
|
41722
|
+
);
|
|
41723
|
+
}
|
|
41724
|
+
if (totalTokens > 0) {
|
|
41725
|
+
const messages = Number(breakdown["messages"] ?? 0);
|
|
41726
|
+
lines.push(
|
|
41727
|
+
`\u2588 Messages ${fmtTokensShort(messages)} tokens (${pct(messages, windowSize)}%)`
|
|
41728
|
+
);
|
|
41729
|
+
}
|
|
41730
|
+
const thresholds = breakdown["thresholds"];
|
|
41731
|
+
const currentTier = breakdown["currentTier"];
|
|
41732
|
+
if (thresholds && currentTier) {
|
|
41733
|
+
lines.push("");
|
|
41734
|
+
lines.push("Compaction thresholds");
|
|
41735
|
+
const tierRows = [
|
|
41736
|
+
["Effective window", thresholds.effectiveWindow, ""],
|
|
41737
|
+
["Warn threshold", thresholds.warn, "warn"],
|
|
41738
|
+
["Auto threshold", thresholds.auto, "auto"],
|
|
41739
|
+
["Hard threshold", thresholds.hard, "hard"]
|
|
41740
|
+
];
|
|
41741
|
+
for (const [label, tokens, tier] of tierRows) {
|
|
41742
|
+
const marker = tier && currentTier === tier ? "\u25B6" : " ";
|
|
41743
|
+
lines.push(`${marker} ${label} ${fmtTokensShort(tokens)} tokens`);
|
|
41744
|
+
}
|
|
41745
|
+
lines.push(` Current tier ${currentTier}`);
|
|
41746
|
+
}
|
|
41747
|
+
if (showDetails) {
|
|
41748
|
+
const byTokens = /* @__PURE__ */ __name((a, b3) => b3.tokens - a.tokens, "byTokens");
|
|
41749
|
+
const detail = /* @__PURE__ */ __name((title, entries) => {
|
|
41750
|
+
if (entries.length === 0) return;
|
|
41751
|
+
lines.push("");
|
|
41752
|
+
lines.push(title);
|
|
41753
|
+
for (const entry of entries) {
|
|
41754
|
+
const name = entry.name.length > 30 ? `${entry.name.slice(0, 29)}\u2026` : entry.name;
|
|
41755
|
+
lines.push(
|
|
41756
|
+
` \u2514 ${name.padEnd(30)} ${fmtTokensShort(entry.tokens)} tokens`
|
|
41757
|
+
);
|
|
41758
|
+
}
|
|
41759
|
+
}, "detail");
|
|
41760
|
+
detail(
|
|
41761
|
+
"Built-in tools",
|
|
41762
|
+
[
|
|
41763
|
+
...item["builtinTools"] ?? []
|
|
41764
|
+
].sort(byTokens)
|
|
41765
|
+
);
|
|
41766
|
+
detail(
|
|
41767
|
+
"MCP tools",
|
|
41768
|
+
[
|
|
41769
|
+
...item["mcpTools"] ?? []
|
|
41770
|
+
].sort(byTokens)
|
|
41771
|
+
);
|
|
41772
|
+
detail(
|
|
41773
|
+
"Memory files",
|
|
41774
|
+
// The producer emits ContextMemoryDetail ({ path, tokens }); map to
|
|
41775
|
+
// the name field detail() renders.
|
|
41776
|
+
[
|
|
41777
|
+
...item["memoryFiles"] ?? []
|
|
41778
|
+
].map((file) => ({ name: file.path, tokens: file.tokens })).sort(byTokens)
|
|
41779
|
+
);
|
|
41780
|
+
const skills = [
|
|
41781
|
+
...item["skills"] ?? []
|
|
41782
|
+
];
|
|
41783
|
+
skills.sort((a, b3) => {
|
|
41784
|
+
if (a.loaded !== b3.loaded) return a.loaded ? -1 : 1;
|
|
41785
|
+
const aTotal = a.tokens + (a.bodyTokens ?? 0);
|
|
41786
|
+
const bTotal = b3.tokens + (b3.bodyTokens ?? 0);
|
|
41787
|
+
return bTotal - aTotal;
|
|
41788
|
+
});
|
|
41789
|
+
if (skills.length > 0) {
|
|
41790
|
+
lines.push("");
|
|
41791
|
+
lines.push("Skills");
|
|
41792
|
+
for (const skill of skills) {
|
|
41793
|
+
const name = skill.name.length > 30 ? `${skill.name.slice(0, 29)}\u2026` : skill.name;
|
|
41794
|
+
const suffix2 = skill.loaded ? ` (+${fmtTokensShort(skill.bodyTokens ?? 0)} body)` : "";
|
|
41795
|
+
lines.push(
|
|
41796
|
+
` ${skill.loaded ? "*" : " "} ${name.padEnd(28)} ${fmtTokensShort(skill.tokens)} tokens${suffix2}`
|
|
41797
|
+
);
|
|
41798
|
+
}
|
|
41799
|
+
}
|
|
41800
|
+
} else {
|
|
41801
|
+
lines.push("");
|
|
41802
|
+
lines.push("Run /context detail for per-item breakdown.");
|
|
41803
|
+
}
|
|
41804
|
+
return lines.join("\n");
|
|
41805
|
+
}
|
|
41806
|
+
__name(projectContextUsage, "projectContextUsage");
|
|
41807
|
+
function projectDoctor(checks, summary) {
|
|
41808
|
+
const lines = ["Doctor Report", ""];
|
|
41809
|
+
const categories = [];
|
|
41810
|
+
for (const check of checks) {
|
|
41811
|
+
if (!categories.includes(check.category)) categories.push(check.category);
|
|
41812
|
+
}
|
|
41813
|
+
const icon = /* @__PURE__ */ __name((status) => status === "pass" ? "\u2713" : status === "warn" ? "\u26A0" : "\u2717", "icon");
|
|
41814
|
+
for (const category of categories) {
|
|
41815
|
+
lines.push(category);
|
|
41816
|
+
for (const check of checks.filter((c2) => c2.category === category)) {
|
|
41817
|
+
lines.push(` ${icon(check.status)} ${check.name}: ${check.message}`);
|
|
41818
|
+
if (check.detail) lines.push(` -> ${check.detail}`);
|
|
41819
|
+
}
|
|
41820
|
+
lines.push("");
|
|
41821
|
+
}
|
|
41822
|
+
lines.push(
|
|
41823
|
+
`-- ${summary.pass} passed, ${summary.warn} warnings, ${summary.fail} failures`
|
|
41824
|
+
);
|
|
41825
|
+
return lines.join("\n");
|
|
41826
|
+
}
|
|
41827
|
+
__name(projectDoctor, "projectDoctor");
|
|
41828
|
+
function projectMcpStatus(item) {
|
|
41829
|
+
const servers = item["servers"] ?? {};
|
|
41830
|
+
const tools = item["tools"] ?? [];
|
|
41831
|
+
const prompts = item["prompts"] ?? [];
|
|
41832
|
+
const authStatus = item["authStatus"] ?? {};
|
|
41833
|
+
const blocked = item["blockedServers"] ?? [];
|
|
41834
|
+
const showDescriptions = Boolean(item["showDescriptions"]);
|
|
41835
|
+
const showSchema = Boolean(item["showSchema"]);
|
|
41836
|
+
const showTips = Boolean(item["showTips"]);
|
|
41837
|
+
const discoveryInProgress = Boolean(item["discoveryInProgress"]);
|
|
41838
|
+
const connecting = item["connectingServers"] ?? [];
|
|
41839
|
+
if (Object.keys(servers).length === 0 && blocked.length === 0) {
|
|
41840
|
+
return "No MCP servers configured.";
|
|
41841
|
+
}
|
|
41842
|
+
const lines = [];
|
|
41843
|
+
if (discoveryInProgress) {
|
|
41844
|
+
lines.push(
|
|
41845
|
+
`\u25CC MCP servers are starting up (${connecting.length} initializing)...`
|
|
41846
|
+
);
|
|
41847
|
+
lines.push(
|
|
41848
|
+
"Note: First startup may take longer. Tool availability will update automatically."
|
|
41849
|
+
);
|
|
41850
|
+
lines.push("");
|
|
41851
|
+
}
|
|
41852
|
+
lines.push("Configured MCP servers:");
|
|
41853
|
+
lines.push("");
|
|
41854
|
+
const authSuffix = /* @__PURE__ */ __name((name) => {
|
|
41855
|
+
switch (authStatus[name]) {
|
|
41856
|
+
case "authenticated":
|
|
41857
|
+
return " (OAuth)";
|
|
41858
|
+
case "expired":
|
|
41859
|
+
return " (OAuth expired)";
|
|
41860
|
+
case "unauthenticated":
|
|
41861
|
+
return " (OAuth not authenticated)";
|
|
41862
|
+
default:
|
|
41863
|
+
return "";
|
|
41864
|
+
}
|
|
41865
|
+
}, "authSuffix");
|
|
41866
|
+
for (const [name, serverConfig] of Object.entries(servers)) {
|
|
41867
|
+
const serverTools = tools.filter((tool) => tool.serverName === name);
|
|
41868
|
+
const serverPrompts = prompts.filter((p2) => p2.serverName === name);
|
|
41869
|
+
const from = serverConfig.extensionName ? ` (from ${serverConfig.extensionName})` : "";
|
|
41870
|
+
let status = getMCPServerStatus(name);
|
|
41871
|
+
if (status === "disconnected" /* DISCONNECTED */ && // ink upgrades on cached tools OR cached prompts (hasCachedItems):
|
|
41872
|
+
// saved transcripts replay these, so reachability must not flip them
|
|
41873
|
+
// to Disconnected.
|
|
41874
|
+
(serverTools.length > 0 || serverPrompts.length > 0)) {
|
|
41875
|
+
status = "connected" /* CONNECTED */;
|
|
41876
|
+
}
|
|
41877
|
+
if (status === "connecting" /* CONNECTING */) {
|
|
41878
|
+
lines.push(
|
|
41879
|
+
`\u25D0 ${name}${from} - Starting... (first startup may take longer)${authSuffix(name)}`
|
|
41880
|
+
);
|
|
41881
|
+
lines.push(" (tools and prompts will appear when ready)");
|
|
41882
|
+
} else if (status === "connected" /* CONNECTED */) {
|
|
41883
|
+
const parts = [];
|
|
41884
|
+
if (serverTools.length > 0) {
|
|
41885
|
+
parts.push(
|
|
41886
|
+
`${serverTools.length} ${serverTools.length === 1 ? "tool" : "tools"}`
|
|
41887
|
+
);
|
|
41888
|
+
}
|
|
41889
|
+
if (serverPrompts.length > 0) {
|
|
41890
|
+
parts.push(
|
|
41891
|
+
`${serverPrompts.length} ${serverPrompts.length === 1 ? "prompt" : "prompts"}`
|
|
41892
|
+
);
|
|
41893
|
+
}
|
|
41894
|
+
lines.push(
|
|
41895
|
+
`\u25CF ${name}${from} - Ready${parts.length > 0 ? ` (${parts.join(", ")})` : ""}${authSuffix(name)}`
|
|
41896
|
+
);
|
|
41897
|
+
} else {
|
|
41898
|
+
lines.push(`\u25CF ${name}${from} - Disconnected${authSuffix(name)}`);
|
|
41899
|
+
if (serverTools.length > 0) {
|
|
41900
|
+
lines.push(`(${serverTools.length} tools cached)`);
|
|
41901
|
+
}
|
|
41902
|
+
}
|
|
41903
|
+
if (showDescriptions && serverConfig.description) {
|
|
41904
|
+
lines.push(serverConfig.description.trim());
|
|
41905
|
+
}
|
|
41906
|
+
if (serverTools.length > 0) {
|
|
41907
|
+
lines.push(" Tools:");
|
|
41908
|
+
for (const tool of serverTools) {
|
|
41909
|
+
lines.push(` - ${tool.name}`);
|
|
41910
|
+
if (showDescriptions && tool.description) {
|
|
41911
|
+
lines.push(` ${tool.description.trim()}`);
|
|
41912
|
+
}
|
|
41913
|
+
const schemaContent = showSchema && tool.schema && (tool.schema.parametersJsonSchema || tool.schema.parameters) ? JSON.stringify(
|
|
41914
|
+
tool.schema.parametersJsonSchema ?? tool.schema.parameters,
|
|
41915
|
+
null,
|
|
41916
|
+
2
|
|
41917
|
+
) : null;
|
|
41918
|
+
if (schemaContent) {
|
|
41919
|
+
lines.push(" Parameters:");
|
|
41920
|
+
for (const line of schemaContent.split("\n")) {
|
|
41921
|
+
lines.push(` ${line}`);
|
|
41922
|
+
}
|
|
41923
|
+
}
|
|
41924
|
+
}
|
|
41925
|
+
}
|
|
41926
|
+
if (serverPrompts.length > 0) {
|
|
41927
|
+
lines.push(" Prompts:");
|
|
41928
|
+
for (const prompt of serverPrompts) {
|
|
41929
|
+
lines.push(` - ${prompt.name}`);
|
|
41930
|
+
}
|
|
41931
|
+
}
|
|
41932
|
+
lines.push("");
|
|
41933
|
+
}
|
|
41934
|
+
for (const server of blocked) {
|
|
41935
|
+
const from = server.extensionName ? ` (from ${server.extensionName})` : "";
|
|
41936
|
+
lines.push(`\u25CF ${server.name}${from} - Blocked`);
|
|
41937
|
+
}
|
|
41938
|
+
if (showTips) {
|
|
41939
|
+
lines.push("");
|
|
41940
|
+
lines.push("\u2605 Tips:");
|
|
41941
|
+
lines.push(" - Use /mcp desc to show server and tool descriptions");
|
|
41942
|
+
lines.push(" - Use /mcp schema to show tool parameter schemas");
|
|
41943
|
+
lines.push(" - Use /mcp nodesc to hide descriptions");
|
|
41944
|
+
lines.push(" - Use /mcp to authenticate with OAuth-enabled servers");
|
|
41945
|
+
lines.push(" - Press Ctrl+T to toggle tool descriptions on/off");
|
|
41946
|
+
}
|
|
41947
|
+
return lines.join("\n").trimEnd();
|
|
41948
|
+
}
|
|
41949
|
+
__name(projectMcpStatus, "projectMcpStatus");
|
|
41950
|
+
function projectExtensionsList(config, extensionsUpdateState) {
|
|
41951
|
+
const extensions = config?.getExtensions?.() ?? [];
|
|
41952
|
+
if (extensions.length === 0) return "No extensions installed.";
|
|
41953
|
+
const lines = ["Installed extensions:", ""];
|
|
41954
|
+
for (const extension of extensions) {
|
|
41955
|
+
const displayName = getExtensionDisplayName(
|
|
41956
|
+
extension,
|
|
41957
|
+
// getCurrentLanguage is i18n-internal; the list itself is hardcoded
|
|
41958
|
+
// English in ink, so the default locale resolution is fine here.
|
|
41959
|
+
"en"
|
|
41960
|
+
);
|
|
41961
|
+
const stateText = extensionsUpdateState?.get(extension.name) ?? "unknown state";
|
|
41962
|
+
lines.push(
|
|
41963
|
+
` ${displayName} (v${extension.version}) - ${extension.isActive ? "active" : "disabled"} (${stateText})`
|
|
41964
|
+
);
|
|
41965
|
+
if (extension.resolvedSettings && extension.resolvedSettings.length > 0) {
|
|
41966
|
+
lines.push(" settings:");
|
|
41967
|
+
for (const setting of extension.resolvedSettings) {
|
|
41968
|
+
lines.push(` - ${setting.name}: ${setting.value}`);
|
|
41969
|
+
}
|
|
41970
|
+
}
|
|
41971
|
+
}
|
|
41972
|
+
return lines.join("\n");
|
|
41973
|
+
}
|
|
41974
|
+
__name(projectExtensionsList, "projectExtensionsList");
|
|
41975
|
+
function projectMemorySaved(writtenCount, verb) {
|
|
41976
|
+
return `${verb ?? "Saved"} ${writtenCount} ${writtenCount === 1 ? "memory" : "memories"}`;
|
|
41977
|
+
}
|
|
41978
|
+
__name(projectMemorySaved, "projectMemorySaved");
|
|
41979
|
+
function projectCompression(compression) {
|
|
41980
|
+
if (compression.isPending) {
|
|
41981
|
+
return "Compressing chat history";
|
|
41982
|
+
}
|
|
41983
|
+
const formatTokens = /* @__PURE__ */ __name((count, isEstimated) => isEstimated ? `~${count}` : String(count), "formatTokens");
|
|
41984
|
+
const original = compression.originalTokenCount ?? 0;
|
|
41985
|
+
const next = compression.newTokenCount ?? 0;
|
|
41986
|
+
switch (compression.compressionStatus) {
|
|
41987
|
+
case 1 /* COMPRESSED */:
|
|
41988
|
+
return `Chat history compressed from ${formatTokens(
|
|
41989
|
+
original,
|
|
41990
|
+
compression.originalTokenCountIsEstimated
|
|
41991
|
+
)} to ${formatTokens(
|
|
41992
|
+
next,
|
|
41993
|
+
compression.newTokenCountIsEstimated
|
|
41994
|
+
)} tokens.`;
|
|
41995
|
+
case 2 /* COMPRESSION_FAILED_INFLATED_TOKEN_COUNT */:
|
|
41996
|
+
return original < 5e4 ? "Compression was not beneficial for this history size." : "Chat history compression did not reduce size. This may indicate issues with the compression prompt.";
|
|
41997
|
+
case 3 /* COMPRESSION_FAILED_TOKEN_COUNT_ERROR */:
|
|
41998
|
+
return "Could not compress chat history due to a token counting error.";
|
|
41999
|
+
case 5 /* NOOP */:
|
|
42000
|
+
return "Nothing to compress.";
|
|
42001
|
+
default:
|
|
42002
|
+
return "";
|
|
42003
|
+
}
|
|
42004
|
+
}
|
|
42005
|
+
__name(projectCompression, "projectCompression");
|
|
42006
|
+
function renderStatsSections(duration, stats) {
|
|
42007
|
+
const lines = [];
|
|
42008
|
+
const metrics = stats.metrics;
|
|
42009
|
+
const computed = computeSessionStats(metrics);
|
|
42010
|
+
lines.push("Interaction Summary");
|
|
42011
|
+
lines.push(`Session ID: ${stats.sessionId}`);
|
|
42012
|
+
const tools = metrics.tools;
|
|
42013
|
+
lines.push(
|
|
42014
|
+
`Tool Calls: ${tools.totalCalls} ( \u2713 ${tools.totalSuccess} x ${tools.totalFail} )`
|
|
42015
|
+
);
|
|
42016
|
+
lines.push(`Success Rate: ${computed.successRate.toFixed(1)}%`);
|
|
42017
|
+
if (computed.totalDecisions > 0) {
|
|
42018
|
+
lines.push(
|
|
42019
|
+
`User Agreement: ${computed.agreementRate.toFixed(1)}% (${computed.totalDecisions} reviewed)`
|
|
42020
|
+
);
|
|
42021
|
+
}
|
|
42022
|
+
if (computed.totalLinesAdded > 0 || computed.totalLinesRemoved > 0) {
|
|
42023
|
+
lines.push(
|
|
42024
|
+
`Code Changes: +${computed.totalLinesAdded} -${computed.totalLinesRemoved}`
|
|
42025
|
+
);
|
|
42026
|
+
}
|
|
42027
|
+
lines.push("");
|
|
42028
|
+
lines.push("Performance");
|
|
42029
|
+
lines.push(`Wall Time: ${duration}`);
|
|
42030
|
+
lines.push(`Agent Active: ${formatDuration(computed.agentActiveTime)}`);
|
|
42031
|
+
lines.push(
|
|
42032
|
+
`\xBB API Time: ${formatDuration(computed.totalApiTime)} (${computed.apiTimePercent.toFixed(1)}%)`
|
|
42033
|
+
);
|
|
42034
|
+
lines.push(
|
|
42035
|
+
`\xBB Tool Time: ${formatDuration(computed.totalToolTime)} (${computed.toolTimePercent.toFixed(1)}%)`
|
|
42036
|
+
);
|
|
42037
|
+
const entries = flattenActiveModels(metrics);
|
|
42038
|
+
if (entries.length > 0) {
|
|
42039
|
+
lines.push("");
|
|
42040
|
+
lines.push("Model Usage");
|
|
42041
|
+
for (const entry of entries) {
|
|
42042
|
+
lines.push(
|
|
42043
|
+
`${entry.label}: ${entry.metrics.api.totalRequests} requests, ${entry.metrics.tokens.prompt.toLocaleString()} input tokens, ${entry.metrics.tokens.candidates.toLocaleString()} output tokens`
|
|
42044
|
+
);
|
|
42045
|
+
}
|
|
42046
|
+
if (computed.cacheEfficiency > 0) {
|
|
42047
|
+
lines.push("");
|
|
42048
|
+
lines.push(
|
|
42049
|
+
`Savings Highlight: ${computed.totalCachedTokens.toLocaleString()} (${computed.cacheEfficiency.toFixed(1)}%) of input tokens were served from the cache, reducing costs.`
|
|
42050
|
+
);
|
|
42051
|
+
lines.push("");
|
|
42052
|
+
lines.push("\xBB Tip: For a full token breakdown, run `/stats model`.");
|
|
42053
|
+
}
|
|
42054
|
+
}
|
|
42055
|
+
return lines;
|
|
42056
|
+
}
|
|
42057
|
+
__name(renderStatsSections, "renderStatsSections");
|
|
42058
|
+
function projectQuit(duration, stats, config) {
|
|
42059
|
+
const lines = ["Agent powering down. Goodbye!", ""];
|
|
42060
|
+
if (stats) {
|
|
42061
|
+
lines.push(...renderStatsSections(duration, stats));
|
|
42062
|
+
} else {
|
|
42063
|
+
lines.push(`Session duration: ${duration}`);
|
|
42064
|
+
}
|
|
42065
|
+
if (stats && stats.promptCount > 0 && config?.getChatRecordingService?.()) {
|
|
42066
|
+
lines.push("");
|
|
42067
|
+
lines.push(
|
|
42068
|
+
`To continue this session, run qwen --resume ${stats.sessionId}`
|
|
42069
|
+
);
|
|
42070
|
+
}
|
|
42071
|
+
return lines.join("\n");
|
|
42072
|
+
}
|
|
42073
|
+
__name(projectQuit, "projectQuit");
|
|
42074
|
+
function projectStats(duration, stats) {
|
|
42075
|
+
const lines = ["Session Stats", ""];
|
|
42076
|
+
if (stats) {
|
|
42077
|
+
lines.push(...renderStatsSections(duration, stats));
|
|
42078
|
+
} else {
|
|
42079
|
+
lines.push(`Session duration: ${duration}`);
|
|
42080
|
+
}
|
|
42081
|
+
return lines.join("\n");
|
|
42082
|
+
}
|
|
42083
|
+
__name(projectStats, "projectStats");
|
|
42084
|
+
function projectBtw(btw) {
|
|
42085
|
+
const lines = [`/btw ${btw.question}`, ""];
|
|
42086
|
+
if (btw.isPending) {
|
|
42087
|
+
lines.push("+ Answering...");
|
|
42088
|
+
} else {
|
|
42089
|
+
lines.push(btw.answer);
|
|
42090
|
+
}
|
|
42091
|
+
return lines.join("\n");
|
|
42092
|
+
}
|
|
42093
|
+
__name(projectBtw, "projectBtw");
|
|
42094
|
+
function projectSpecialItemText(item, ctx) {
|
|
42095
|
+
const record = item;
|
|
42096
|
+
switch (item.type) {
|
|
42097
|
+
case "about":
|
|
42098
|
+
return projectAbout(
|
|
42099
|
+
record["systemInfo"] ?? {}
|
|
42100
|
+
);
|
|
42101
|
+
case "tools_list":
|
|
42102
|
+
return projectToolsList(
|
|
42103
|
+
record["tools"] ?? [] ?? [],
|
|
42104
|
+
Boolean(record["showDescriptions"])
|
|
42105
|
+
);
|
|
42106
|
+
case "model_stats": {
|
|
42107
|
+
const metrics = ctx.stats?.metrics ?? uiTelemetryService.getMetrics();
|
|
42108
|
+
const modelPricing = ctx.settings?.merged?.modelPricing;
|
|
42109
|
+
return projectModelStats(metrics, modelPricing);
|
|
42110
|
+
}
|
|
42111
|
+
case "tool_stats":
|
|
42112
|
+
return projectToolStats(
|
|
42113
|
+
ctx.stats?.metrics ?? uiTelemetryService.getMetrics()
|
|
42114
|
+
);
|
|
42115
|
+
case "skill_stats":
|
|
42116
|
+
return projectSkillStats(
|
|
42117
|
+
ctx.stats?.metrics ?? uiTelemetryService.getMetrics()
|
|
42118
|
+
);
|
|
42119
|
+
case "summary":
|
|
42120
|
+
return projectSummary(
|
|
42121
|
+
record["summary"] ?? {}
|
|
42122
|
+
);
|
|
42123
|
+
case "insight_progress":
|
|
42124
|
+
return projectInsightProgress(
|
|
42125
|
+
record["progress"] ?? {}
|
|
42126
|
+
);
|
|
42127
|
+
case "context_usage":
|
|
42128
|
+
return projectContextUsage(record);
|
|
42129
|
+
case "doctor":
|
|
42130
|
+
return projectDoctor(
|
|
42131
|
+
record["checks"] ?? [],
|
|
42132
|
+
record["summary"] ?? { pass: 0, warn: 0, fail: 0 }
|
|
42133
|
+
);
|
|
42134
|
+
case "mcp_status":
|
|
42135
|
+
return projectMcpStatus(record);
|
|
42136
|
+
case "extensions_list":
|
|
42137
|
+
return projectExtensionsList(ctx.config, ctx.extensionsUpdateState);
|
|
42138
|
+
case "skills_list":
|
|
42139
|
+
return projectSkillsList(
|
|
42140
|
+
record["skills"] ?? []
|
|
42141
|
+
);
|
|
42142
|
+
case "memory_saved":
|
|
42143
|
+
return projectMemorySaved(
|
|
42144
|
+
Number(record["writtenCount"] ?? 0),
|
|
42145
|
+
record["verb"]
|
|
42146
|
+
);
|
|
42147
|
+
case "quit":
|
|
42148
|
+
return projectQuit(
|
|
42149
|
+
String(record["duration"] ?? ""),
|
|
42150
|
+
ctx.stats,
|
|
42151
|
+
ctx.config
|
|
42152
|
+
);
|
|
42153
|
+
case "compression":
|
|
42154
|
+
return projectCompression(
|
|
42155
|
+
record["compression"] ?? {}
|
|
42156
|
+
);
|
|
42157
|
+
case "stats":
|
|
42158
|
+
return projectStats(String(record["duration"] ?? ""), ctx.stats);
|
|
42159
|
+
case "btw": {
|
|
42160
|
+
const btw = record["btw"];
|
|
42161
|
+
return btw ? projectBtw(btw) : null;
|
|
42162
|
+
}
|
|
42163
|
+
case "info": {
|
|
42164
|
+
const text = typeof record["text"] === "string" ? record["text"] : null;
|
|
42165
|
+
const linkUrl = typeof record["linkUrl"] === "string" ? record["linkUrl"] : null;
|
|
42166
|
+
if (!text) return null;
|
|
42167
|
+
if (!linkUrl) return text;
|
|
42168
|
+
const linkText = typeof record["linkText"] === "string" && record["linkText"] ? `${record["linkText"]}: ` : "";
|
|
42169
|
+
return `${text}
|
|
42170
|
+
${linkText}${linkUrl}`;
|
|
42171
|
+
}
|
|
42172
|
+
case "warning":
|
|
42173
|
+
case "success":
|
|
42174
|
+
return typeof record["text"] === "string" ? record["text"] : null;
|
|
42175
|
+
case "error": {
|
|
42176
|
+
const hint = typeof record["hint"] === "string" && record["hint"] ? `
|
|
42177
|
+
${record["hint"]}` : "";
|
|
42178
|
+
return typeof record["text"] === "string" ? record["text"] + hint : null;
|
|
42179
|
+
}
|
|
42180
|
+
default:
|
|
42181
|
+
return null;
|
|
42182
|
+
}
|
|
42183
|
+
}
|
|
42184
|
+
__name(projectSpecialItemText, "projectSpecialItemText");
|
|
42185
|
+
function projectItemToStreamEvent(item, ctx) {
|
|
42186
|
+
const viaSpecialText = /* @__PURE__ */ __name(() => {
|
|
42187
|
+
const text = projectSpecialItemText(item, ctx);
|
|
42188
|
+
return text === null ? null : { type: "info", text };
|
|
42189
|
+
}, "viaSpecialText");
|
|
42190
|
+
switch (item.type) {
|
|
42191
|
+
case "user":
|
|
42192
|
+
return {
|
|
42193
|
+
type: "user",
|
|
42194
|
+
text: item.text,
|
|
42195
|
+
sentToModel: item.sentToModel ?? false,
|
|
42196
|
+
...item.promptId ? { promptId: item.promptId } : {}
|
|
42197
|
+
};
|
|
42198
|
+
case "info":
|
|
42199
|
+
return viaSpecialText();
|
|
42200
|
+
case "warning":
|
|
42201
|
+
return { type: "warning", text: item.text };
|
|
42202
|
+
// No success row in the live model yet; ink's green SuccessMessage
|
|
42203
|
+
// renders as the info row. Reachable here only through /arena.
|
|
42204
|
+
case "success":
|
|
42205
|
+
return { type: "info", text: item.text };
|
|
42206
|
+
case "error":
|
|
42207
|
+
return {
|
|
42208
|
+
type: "error",
|
|
42209
|
+
text: item.text,
|
|
42210
|
+
...item.hint ? { hint: item.hint } : {}
|
|
42211
|
+
};
|
|
42212
|
+
case "goal_state":
|
|
42213
|
+
return { type: "goal", snapshot: item.snapshot, cause: item.cause };
|
|
42214
|
+
case "goal_status":
|
|
42215
|
+
return {
|
|
42216
|
+
type: "goal-legacy",
|
|
42217
|
+
kind: item.kind,
|
|
42218
|
+
condition: item.condition,
|
|
42219
|
+
iterations: item.iterations,
|
|
42220
|
+
durationMs: item.durationMs,
|
|
42221
|
+
lastReason: item.lastReason
|
|
42222
|
+
};
|
|
42223
|
+
case "stop_hook_system_message":
|
|
42224
|
+
return { type: "stop-hook-message", message: item.message };
|
|
42225
|
+
case "stop_hook_loop":
|
|
42226
|
+
return {
|
|
42227
|
+
type: "info",
|
|
42228
|
+
text: formatStopHookLoopText(item.stopHookCount, item.reasons)
|
|
42229
|
+
};
|
|
42230
|
+
case "user_prompt_submit_blocked":
|
|
42231
|
+
return {
|
|
42232
|
+
type: "warning",
|
|
42233
|
+
text: formatUserPromptSubmitBlocked(item.reason, item.originalPrompt)
|
|
42234
|
+
};
|
|
42235
|
+
case "about":
|
|
42236
|
+
case "tools_list":
|
|
42237
|
+
case "model_stats":
|
|
42238
|
+
case "tool_stats":
|
|
42239
|
+
case "skill_stats":
|
|
42240
|
+
case "summary":
|
|
42241
|
+
case "insight_progress":
|
|
42242
|
+
case "context_usage":
|
|
42243
|
+
case "doctor":
|
|
42244
|
+
case "mcp_status":
|
|
42245
|
+
case "extensions_list":
|
|
42246
|
+
case "skills_list":
|
|
42247
|
+
case "memory_saved":
|
|
42248
|
+
case "quit":
|
|
42249
|
+
case "compression":
|
|
42250
|
+
case "stats":
|
|
42251
|
+
case "btw":
|
|
42252
|
+
return viaSpecialText();
|
|
42253
|
+
// Explicit no-ops, each a decision rather than an accident:
|
|
42254
|
+
// - `tool_group`: tool cards come from the live stream's own events; a
|
|
42255
|
+
// dispatcher-written group would duplicate them.
|
|
42256
|
+
// - `retry_countdown`, `vision_notice`, `gemini*`: the live stream folds
|
|
42257
|
+
// these from events already; a history copy would render the row twice.
|
|
42258
|
+
// - `help`: `/help` resolves to a dialog and the overlay renders from
|
|
42259
|
+
// help-content.ts; no command returns a HELP message, so nothing writes
|
|
42260
|
+
// this item in either renderer.
|
|
42261
|
+
// - the rest: ink renders these through dedicated components and this
|
|
42262
|
+
// renderer has no row shape for them yet. `/advisor`, `/arena` and
|
|
42263
|
+
// `/recap` are registered here and do write four of these kinds, so
|
|
42264
|
+
// their output stays invisible — a registered gap (U-34), not an
|
|
42265
|
+
// accident of the switch.
|
|
42266
|
+
case "tool_group":
|
|
42267
|
+
case "retry_countdown":
|
|
42268
|
+
case "vision_notice":
|
|
42269
|
+
case "gemini":
|
|
42270
|
+
case "gemini_content":
|
|
42271
|
+
case "gemini_thought":
|
|
42272
|
+
case "gemini_thought_content":
|
|
42273
|
+
case "help":
|
|
42274
|
+
case "notification":
|
|
42275
|
+
case "user_shell":
|
|
42276
|
+
case "advisor":
|
|
42277
|
+
case "arena_agent_complete":
|
|
42278
|
+
case "arena_session_complete":
|
|
42279
|
+
case "away_recap":
|
|
42280
|
+
case "tool_use_summary":
|
|
42281
|
+
case "diff_stats":
|
|
42282
|
+
return null;
|
|
42283
|
+
default: {
|
|
42284
|
+
const exhaustive = item;
|
|
42285
|
+
return exhaustive;
|
|
42286
|
+
}
|
|
42287
|
+
}
|
|
42288
|
+
}
|
|
42289
|
+
__name(projectItemToStreamEvent, "projectItemToStreamEvent");
|
|
42290
|
+
|
|
42291
|
+
// packages/cli/src/ui/opentui/session-switch.ts
|
|
42292
|
+
init_esbuild_shims();
|
|
42293
|
+
import { randomUUID } from "node:crypto";
|
|
42294
|
+
|
|
42295
|
+
// packages/cli/src/ui/opentui/resume-session.ts
|
|
42296
|
+
init_esbuild_shims();
|
|
42297
|
+
|
|
41395
42298
|
// packages/cli/src/ui/opentui/transcript-adapter.ts
|
|
42299
|
+
init_esbuild_shims();
|
|
41396
42300
|
function transcribeSession(jsonl, opts = {}) {
|
|
41397
42301
|
const events = [];
|
|
41398
42302
|
const prompts = [];
|
|
@@ -41836,6 +42740,13 @@ var OpenTuiAppHost = class {
|
|
|
41836
42740
|
if (!(prev.length > 0 && prev[prev.length - 1].type === "user" && newItem.type === "user" && prev[prev.length - 1].text === newItem.text)) {
|
|
41837
42741
|
const next = [...prev, newItem];
|
|
41838
42742
|
this.history = newItem.type === "tool_group" && newItem.tools.some((tool) => isFindingsListDisplay(tool.resultDisplay)) ? coalesceFindingsHistoryItems(next) : next;
|
|
42743
|
+
const event = projectItemToStreamEvent(newItem, {
|
|
42744
|
+
config: this.config,
|
|
42745
|
+
stats: this.sessionStats,
|
|
42746
|
+
settings: this.settings,
|
|
42747
|
+
extensionsUpdateState: this.extensionsUpdateState
|
|
42748
|
+
});
|
|
42749
|
+
if (event) this.transcript.append(event);
|
|
41839
42750
|
}
|
|
41840
42751
|
this.notify();
|
|
41841
42752
|
return id;
|
|
@@ -41851,6 +42762,7 @@ var OpenTuiAppHost = class {
|
|
|
41851
42762
|
clearItems = /* @__PURE__ */ __name(() => {
|
|
41852
42763
|
this.history = [];
|
|
41853
42764
|
this.messageIdCounter = 0;
|
|
42765
|
+
this.transcript.clear();
|
|
41854
42766
|
this.notify();
|
|
41855
42767
|
}, "clearItems");
|
|
41856
42768
|
loadHistory = /* @__PURE__ */ __name((newHistory) => {
|
|
@@ -42204,7 +43116,10 @@ function createOpenTuiCommandContext(host, services) {
|
|
|
42204
43116
|
session: {
|
|
42205
43117
|
stats: host.sessionStats,
|
|
42206
43118
|
sessionShellAllowlist: host.sessionShellAllowlist,
|
|
42207
|
-
|
|
43119
|
+
// Bound: the host's method reads `this.deps`, and `/clear` calls this
|
|
43120
|
+
// before `ui.clear()` — a bare reference threw and left the transcript
|
|
43121
|
+
// standing.
|
|
43122
|
+
startNewSession: host.startNewSession?.bind(host)
|
|
42208
43123
|
}
|
|
42209
43124
|
};
|
|
42210
43125
|
}
|
|
@@ -42570,14 +43485,14 @@ var OpenTuiSlashDispatcher = class {
|
|
|
42570
43485
|
);
|
|
42571
43486
|
}
|
|
42572
43487
|
/**
|
|
42573
|
-
* Startup-window self-heal: the
|
|
42574
|
-
*
|
|
42575
|
-
*
|
|
42576
|
-
*
|
|
42577
|
-
*
|
|
42578
|
-
*
|
|
42579
|
-
*
|
|
42580
|
-
*
|
|
43488
|
+
* Startup-window self-heal: the dispatcher can be attached with a registry
|
|
43489
|
+
* snapshot taken before config.initialize() finished — the skill manager
|
|
43490
|
+
* does not exist yet, so builtin commands resolve but every skill (e.g.
|
|
43491
|
+
* /qc-helper) reports "Unknown command". A concurrent initialize() call
|
|
43492
|
+
* now joins the in-flight run instead of throwing, so only a failed first
|
|
43493
|
+
* flight still lands the loader in its partial-commands catch. One bounded
|
|
43494
|
+
* retry per dispatcher lifetime: wait for the skill manager, then reload
|
|
43495
|
+
* the registry so the re-parse sees the complete list.
|
|
42581
43496
|
*/
|
|
42582
43497
|
async ensureCommandsLoaded() {
|
|
42583
43498
|
if (this.startupRetryUsed || !this.services.config) {
|
|
@@ -48098,6 +49013,16 @@ function isPerfectSlashMatch(parsed) {
|
|
|
48098
49013
|
return false;
|
|
48099
49014
|
}
|
|
48100
49015
|
__name(isPerfectSlashMatch, "isPerfectSlashMatch");
|
|
49016
|
+
function isPerfectMatchForTarget(target, slashCommands) {
|
|
49017
|
+
if (target.mode !== "SLASH" /* SLASH */) return false;
|
|
49018
|
+
return isPerfectSlashMatch(
|
|
49019
|
+
parseSlashCommandQuery(
|
|
49020
|
+
target.query,
|
|
49021
|
+
slashCommandPool(target, slashCommands)
|
|
49022
|
+
)
|
|
49023
|
+
);
|
|
49024
|
+
}
|
|
49025
|
+
__name(isPerfectMatchForTarget, "isPerfectMatchForTarget");
|
|
48101
49026
|
function subcommandSuggestions(parsed, recentCommands) {
|
|
48102
49027
|
const level = parsed.currentLevel ?? [];
|
|
48103
49028
|
const visible = level.filter((cmd) => cmd.description && !cmd.hidden);
|
|
@@ -50477,29 +51402,61 @@ function OpenTuiEffortDialog(props) {
|
|
|
50477
51402
|
}
|
|
50478
51403
|
__name(OpenTuiEffortDialog, "OpenTuiEffortDialog");
|
|
50479
51404
|
var DEFAULT_STYLE_DESC = "The standard prompt, with no extra style";
|
|
51405
|
+
function containsStyle(styles, name) {
|
|
51406
|
+
const wanted = name.toLowerCase();
|
|
51407
|
+
return styles.some((style) => style.name.toLowerCase() === wanted);
|
|
51408
|
+
}
|
|
51409
|
+
__name(containsStyle, "containsStyle");
|
|
50480
51410
|
function OpenTuiOutputStyleDialog(props) {
|
|
50481
51411
|
const { config, settings, onClose, notify } = props;
|
|
50482
|
-
const
|
|
51412
|
+
const [styles, setStyles] = (0, import_react41.useState)();
|
|
51413
|
+
const onCloseRef = (0, import_react41.useRef)(onClose);
|
|
51414
|
+
onCloseRef.current = onClose;
|
|
51415
|
+
const notifyRef = (0, import_react41.useRef)(notify);
|
|
51416
|
+
notifyRef.current = notify;
|
|
51417
|
+
(0, import_react41.useEffect)(() => {
|
|
51418
|
+
let cancelled = false;
|
|
51419
|
+
void loadSessionOutputStyles(config).then(
|
|
51420
|
+
(loaded) => {
|
|
51421
|
+
if (!cancelled) setStyles(loaded);
|
|
51422
|
+
},
|
|
51423
|
+
(error) => {
|
|
51424
|
+
if (!cancelled) {
|
|
51425
|
+
notifyRef.current(
|
|
51426
|
+
`Failed to load output styles: ${error instanceof Error ? error.message : String(error)}`
|
|
51427
|
+
);
|
|
51428
|
+
onCloseRef.current();
|
|
51429
|
+
}
|
|
51430
|
+
}
|
|
51431
|
+
);
|
|
51432
|
+
return () => {
|
|
51433
|
+
cancelled = true;
|
|
51434
|
+
};
|
|
51435
|
+
}, [config]);
|
|
51436
|
+
const currentStyle = config.getOutputStyle();
|
|
51437
|
+
const current = currentStyle?.name;
|
|
51438
|
+
const catalog = styles && currentStyle && !containsStyle(styles, currentStyle.name) ? [...styles, currentStyle] : styles;
|
|
51439
|
+
const items = catalog ? [
|
|
50483
51440
|
{
|
|
50484
51441
|
key: "default",
|
|
50485
51442
|
label: "default",
|
|
50486
51443
|
desc: DEFAULT_STYLE_DESC,
|
|
50487
51444
|
style: void 0
|
|
50488
51445
|
},
|
|
50489
|
-
...
|
|
51446
|
+
...catalog.map((style) => ({
|
|
50490
51447
|
key: style.name,
|
|
50491
51448
|
label: style.name,
|
|
50492
|
-
desc: style.description
|
|
51449
|
+
desc: style.source === "built-in" ? style.description : `${style.description} (${style.source})`,
|
|
50493
51450
|
style
|
|
50494
51451
|
}))
|
|
50495
|
-
];
|
|
50496
|
-
const
|
|
50497
|
-
|
|
50498
|
-
|
|
50499
|
-
|
|
50500
|
-
|
|
50501
|
-
)
|
|
50502
|
-
);
|
|
51452
|
+
] : [];
|
|
51453
|
+
const [sel, setSel] = (0, import_react41.useState)(0);
|
|
51454
|
+
(0, import_react41.useEffect)(() => {
|
|
51455
|
+
if (!styles) return;
|
|
51456
|
+
const wanted = current?.toLowerCase();
|
|
51457
|
+
const index = items.findIndex((item) => item.key.toLowerCase() === wanted);
|
|
51458
|
+
setSel(index >= 0 ? index : 0);
|
|
51459
|
+
}, [styles, current]);
|
|
50503
51460
|
useEsc3(onClose);
|
|
50504
51461
|
const pick = /* @__PURE__ */ __name(() => {
|
|
50505
51462
|
const item = items[sel];
|
|
@@ -50510,7 +51467,7 @@ function OpenTuiOutputStyleDialog(props) {
|
|
|
50510
51467
|
(error) => notify(error instanceof Error ? error.message : String(error))
|
|
50511
51468
|
);
|
|
50512
51469
|
}, "pick");
|
|
50513
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Shell3, { title: "Output Style", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
51470
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Shell3, { title: "Output Style", children: styles ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
50514
51471
|
RadioList2,
|
|
50515
51472
|
{
|
|
50516
51473
|
items,
|
|
@@ -50518,7 +51475,7 @@ function OpenTuiOutputStyleDialog(props) {
|
|
|
50518
51475
|
onMove: (d3) => setSel((s) => Math.min(items.length - 1, Math.max(0, s + d3))),
|
|
50519
51476
|
onPick: pick
|
|
50520
51477
|
}
|
|
50521
|
-
) });
|
|
51478
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.dim, children: "Loading output styles\u2026" }) });
|
|
50522
51479
|
}
|
|
50523
51480
|
__name(OpenTuiOutputStyleDialog, "OpenTuiOutputStyleDialog");
|
|
50524
51481
|
|
|
@@ -51124,7 +52081,7 @@ function OpenTuiInputPrompt(props) {
|
|
|
51124
52081
|
const fileSearchReadyRef = (0, import_react45.useRef)(null);
|
|
51125
52082
|
const atSearchSeqRef = (0, import_react45.useRef)(0);
|
|
51126
52083
|
const commandsRef = (0, import_react45.useRef)([]);
|
|
51127
|
-
const
|
|
52084
|
+
const slashRangeRef = (0, import_react45.useRef)(null);
|
|
51128
52085
|
const slashSearchSeqRef = (0, import_react45.useRef)(0);
|
|
51129
52086
|
const suggestionNavigatedRef = (0, import_react45.useRef)(false);
|
|
51130
52087
|
const pendingPastesRef = (0, import_react45.useRef)(/* @__PURE__ */ new Map());
|
|
@@ -51170,13 +52127,13 @@ function OpenTuiInputPrompt(props) {
|
|
|
51170
52127
|
},
|
|
51171
52128
|
[]
|
|
51172
52129
|
);
|
|
51173
|
-
const
|
|
52130
|
+
const currentCompletionTarget = (0, import_react45.useCallback)(() => {
|
|
51174
52131
|
const el = editorRef.current;
|
|
51175
|
-
if (!el) return;
|
|
52132
|
+
if (!el) return null;
|
|
51176
52133
|
const text = el.plainText;
|
|
51177
52134
|
const cursor = el.logicalCursor;
|
|
51178
52135
|
const lines = text.split("\n");
|
|
51179
|
-
|
|
52136
|
+
return detectCompletionTarget(
|
|
51180
52137
|
lines,
|
|
51181
52138
|
cursor.row,
|
|
51182
52139
|
displayColToCodePointIndex(lines[cursor.row] ?? "", cursor.col),
|
|
@@ -51184,12 +52141,18 @@ function OpenTuiInputPrompt(props) {
|
|
|
51184
52141
|
displayOffsetToCodePointIndex(text, cursor.offset),
|
|
51185
52142
|
commandsRef.current
|
|
51186
52143
|
);
|
|
52144
|
+
}, []);
|
|
52145
|
+
const refreshCompletion = (0, import_react45.useCallback)(() => {
|
|
52146
|
+
const el = editorRef.current;
|
|
52147
|
+
if (!el) return;
|
|
52148
|
+
const text = el.plainText;
|
|
52149
|
+
const target = currentCompletionTarget();
|
|
51187
52150
|
const restored = historyRestoredTextRef.current;
|
|
51188
52151
|
const suppressedByHistory = restored !== null && text === restored;
|
|
51189
52152
|
const dismissed = dismissedUntilChangeRef.current !== null && dismissedUntilChangeRef.current === text;
|
|
51190
52153
|
if (!target || suppressedByHistory || dismissed) {
|
|
51191
52154
|
completionModeRef.current = "IDLE" /* IDLE */;
|
|
51192
|
-
|
|
52155
|
+
slashRangeRef.current = null;
|
|
51193
52156
|
suggestionNavigatedRef.current = false;
|
|
51194
52157
|
setSuggestions([]);
|
|
51195
52158
|
setActiveIndex(0);
|
|
@@ -51201,10 +52164,7 @@ function OpenTuiInputPrompt(props) {
|
|
|
51201
52164
|
if (target.mode === "SLASH" /* SLASH */) {
|
|
51202
52165
|
const pool = slashCommandPool(target, commandsRef.current);
|
|
51203
52166
|
const parsed = parseSlashCommandQuery(target.query, pool);
|
|
51204
|
-
|
|
51205
|
-
range: slashCompletionPositions(target.query, parsed),
|
|
51206
|
-
perfect: isPerfectSlashMatch(parsed)
|
|
51207
|
-
};
|
|
52167
|
+
slashRangeRef.current = slashCompletionPositions(target.query, parsed);
|
|
51208
52168
|
const leaf = parsed.leafCommand;
|
|
51209
52169
|
const complete = leaf?.completion;
|
|
51210
52170
|
if (parsed.isArgumentCompletion && leaf && complete) {
|
|
@@ -51256,7 +52216,7 @@ function OpenTuiInputPrompt(props) {
|
|
|
51256
52216
|
if (atSearchSeqRef.current === seq) setLoadingSuggestions(false);
|
|
51257
52217
|
}
|
|
51258
52218
|
});
|
|
51259
|
-
}, [ensureFileSearch, config]);
|
|
52219
|
+
}, [ensureFileSearch, config, currentCompletionTarget]);
|
|
51260
52220
|
(0, import_react45.useEffect)(() => {
|
|
51261
52221
|
const el = editorRef.current;
|
|
51262
52222
|
if (!el || textVersion === 0) return;
|
|
@@ -51287,25 +52247,17 @@ function OpenTuiInputPrompt(props) {
|
|
|
51287
52247
|
const el = editorRef.current;
|
|
51288
52248
|
const suggestion = suggestions[index];
|
|
51289
52249
|
if (!el || !suggestion) return;
|
|
51290
|
-
const
|
|
51291
|
-
const cursor = el.logicalCursor;
|
|
51292
|
-
const lines = text.split("\n");
|
|
51293
|
-
const target = detectCompletionTarget(
|
|
51294
|
-
lines,
|
|
51295
|
-
cursor.row,
|
|
51296
|
-
displayColToCodePointIndex(lines[cursor.row] ?? "", cursor.col),
|
|
51297
|
-
text,
|
|
51298
|
-
displayOffsetToCodePointIndex(text, cursor.offset),
|
|
51299
|
-
commandsRef.current
|
|
51300
|
-
);
|
|
52250
|
+
const target = currentCompletionTarget();
|
|
51301
52251
|
if (!target) return;
|
|
52252
|
+
const cursor = el.logicalCursor;
|
|
52253
|
+
const lines = el.plainText.split("\n");
|
|
51302
52254
|
suggestionNavigatedRef.current = false;
|
|
51303
52255
|
const applied = applyCompletion(
|
|
51304
52256
|
lines[cursor.row] ?? "",
|
|
51305
52257
|
target,
|
|
51306
52258
|
suggestion,
|
|
51307
52259
|
viaEnter,
|
|
51308
|
-
target.mode === "SLASH" /* SLASH */ ?
|
|
52260
|
+
target.mode === "SLASH" /* SLASH */ ? slashRangeRef.current ?? void 0 : void 0
|
|
51309
52261
|
);
|
|
51310
52262
|
if (applied.submitNow) {
|
|
51311
52263
|
let finalText = applied.submitNow;
|
|
@@ -51335,7 +52287,13 @@ function OpenTuiInputPrompt(props) {
|
|
|
51335
52287
|
}, "apply");
|
|
51336
52288
|
apply();
|
|
51337
52289
|
},
|
|
51338
|
-
[
|
|
52290
|
+
[
|
|
52291
|
+
suggestions,
|
|
52292
|
+
applyTextToEditor,
|
|
52293
|
+
onSubmit,
|
|
52294
|
+
attachments,
|
|
52295
|
+
currentCompletionTarget
|
|
52296
|
+
]
|
|
51339
52297
|
);
|
|
51340
52298
|
const handleClipboardImage = (0, import_react45.useCallback)(async () => {
|
|
51341
52299
|
try {
|
|
@@ -51445,7 +52403,8 @@ function OpenTuiInputPrompt(props) {
|
|
|
51445
52403
|
return;
|
|
51446
52404
|
}
|
|
51447
52405
|
const showing2 = suggestions.length > 0;
|
|
51448
|
-
const
|
|
52406
|
+
const liveTarget = currentCompletionTarget();
|
|
52407
|
+
const isPerfectMatch = liveTarget !== null && isPerfectMatchForTarget(liveTarget, commandsRef.current);
|
|
51449
52408
|
if (showing2 && (!isPerfectMatch || suggestionNavigatedRef.current)) {
|
|
51450
52409
|
key.preventDefault();
|
|
51451
52410
|
acceptSuggestion(activeIndex, true);
|
|
@@ -52527,6 +53486,7 @@ function OpenTuiApp(props) {
|
|
|
52527
53486
|
onSubmitPrompt,
|
|
52528
53487
|
onQuit,
|
|
52529
53488
|
onTranscriptReset,
|
|
53489
|
+
onTranscriptEvent,
|
|
52530
53490
|
onStartNewSession,
|
|
52531
53491
|
onToggleVim,
|
|
52532
53492
|
updateNotice,
|
|
@@ -52589,9 +53549,13 @@ function OpenTuiApp(props) {
|
|
|
52589
53549
|
const activeToolCall = waitingToolCalls?.[0] ?? null;
|
|
52590
53550
|
const transcript = (0, import_react49.useMemo)(
|
|
52591
53551
|
() => ({
|
|
52592
|
-
reset: /* @__PURE__ */ __name((events) => onTranscriptReset?.(events), "reset")
|
|
53552
|
+
reset: /* @__PURE__ */ __name((events) => onTranscriptReset?.(events), "reset"),
|
|
53553
|
+
// /clear semantics: a fresh transcript — the live turn's reset with an
|
|
53554
|
+
// empty batch (it also drops a stray steering queue).
|
|
53555
|
+
clear: /* @__PURE__ */ __name(() => onTranscriptReset?.([]), "clear"),
|
|
53556
|
+
append: /* @__PURE__ */ __name((event) => onTranscriptEvent?.(event), "append")
|
|
52593
53557
|
}),
|
|
52594
|
-
[onTranscriptReset]
|
|
53558
|
+
[onTranscriptReset, onTranscriptEvent]
|
|
52595
53559
|
);
|
|
52596
53560
|
const host = (0, import_react49.useMemo)(
|
|
52597
53561
|
() => new OpenTuiAppHost({
|
|
@@ -52681,7 +53645,8 @@ function OpenTuiApp(props) {
|
|
|
52681
53645
|
onSubmitPrompt(outcome.content, void 0, {
|
|
52682
53646
|
modelOverride: outcome.modelOverride,
|
|
52683
53647
|
refreshContextFilesOnWrite: outcome.refreshContextFilesOnWrite,
|
|
52684
|
-
onComplete: outcome.onComplete
|
|
53648
|
+
onComplete: outcome.onComplete,
|
|
53649
|
+
invocationEchoed: true
|
|
52685
53650
|
});
|
|
52686
53651
|
else notify("The live prompt turn is not wired in this shell.");
|
|
52687
53652
|
return;
|
|
@@ -52984,6 +53949,7 @@ function foldLiveEvent(prev, ev) {
|
|
|
52984
53949
|
const last = items[items.length - 1];
|
|
52985
53950
|
switch (ev.type) {
|
|
52986
53951
|
case "user": {
|
|
53952
|
+
if (last?.kind === "user" && last.text === ev.text) return prev;
|
|
52987
53953
|
if (last?.kind === "assistant" && last.streaming)
|
|
52988
53954
|
items[items.length - 1] = { ...last, streaming: false };
|
|
52989
53955
|
items.push({
|
|
@@ -54407,6 +55373,26 @@ async function expandAtMentions(config, query, signal) {
|
|
|
54407
55373
|
return { parts: result.processedQuery, events, declined: false };
|
|
54408
55374
|
}
|
|
54409
55375
|
__name(expandAtMentions, "expandAtMentions");
|
|
55376
|
+
function hasUnsupportedImageFormat(parts) {
|
|
55377
|
+
if (typeof parts === "string") return false;
|
|
55378
|
+
for (const part of Array.isArray(parts) ? parts : [parts]) {
|
|
55379
|
+
if (typeof part === "string") continue;
|
|
55380
|
+
let mimeType;
|
|
55381
|
+
if ("inlineData" in part && part.inlineData?.mimeType?.startsWith("image/")) {
|
|
55382
|
+
mimeType = part.inlineData.mimeType;
|
|
55383
|
+
}
|
|
55384
|
+
if ("fileData" in part && part.fileData?.mimeType?.startsWith("image/")) {
|
|
55385
|
+
mimeType = part.fileData.mimeType;
|
|
55386
|
+
}
|
|
55387
|
+
if (mimeType && !isSupportedImageMimeType(mimeType)) return true;
|
|
55388
|
+
}
|
|
55389
|
+
return false;
|
|
55390
|
+
}
|
|
55391
|
+
__name(hasUnsupportedImageFormat, "hasUnsupportedImageFormat");
|
|
55392
|
+
function imageFormatWarningEvent() {
|
|
55393
|
+
return { type: "info", text: getUnsupportedImageFormatWarning() };
|
|
55394
|
+
}
|
|
55395
|
+
__name(imageFormatWarningEvent, "imageFormatWarningEvent");
|
|
54410
55396
|
async function applyPromptVisionBridge(config, parts, signal, turnModel) {
|
|
54411
55397
|
const events = [];
|
|
54412
55398
|
if (!hasImageParts(parts)) return { parts, events };
|
|
@@ -54508,7 +55494,11 @@ async function resolveSteeredPromptParts(config, texts, signal, turnModel) {
|
|
|
54508
55494
|
continue;
|
|
54509
55495
|
}
|
|
54510
55496
|
const messageParts = normalizeParts(bridged.parts);
|
|
55497
|
+
if (hasUnsupportedImageFormat(messageParts)) {
|
|
55498
|
+
events.push(imageFormatWarningEvent());
|
|
55499
|
+
}
|
|
54511
55500
|
if (messageParts.length > 0) segments.push(messageParts);
|
|
55501
|
+
events.push({ type: "user", text: message, sentToModel: false });
|
|
54512
55502
|
}
|
|
54513
55503
|
const parts = [];
|
|
54514
55504
|
for (const segment of segments) {
|
|
@@ -54518,12 +55508,25 @@ async function resolveSteeredPromptParts(config, texts, signal, turnModel) {
|
|
|
54518
55508
|
return { parts, events, restore: [] };
|
|
54519
55509
|
}
|
|
54520
55510
|
__name(resolveSteeredPromptParts, "resolveSteeredPromptParts");
|
|
55511
|
+
var STARTUP_CHAT_WAIT_MS = 15e3;
|
|
55512
|
+
var STARTUP_CHAT_POLL_MS = 100;
|
|
54521
55513
|
async function* livePromptEvents(config, prompt, signal, options) {
|
|
54522
55514
|
try {
|
|
54523
55515
|
await config.initialize();
|
|
54524
55516
|
} catch {
|
|
54525
55517
|
}
|
|
54526
55518
|
const client = config.getGeminiClient();
|
|
55519
|
+
const chatDeadline = Date.now() + STARTUP_CHAT_WAIT_MS;
|
|
55520
|
+
const chatReady = /* @__PURE__ */ __name(() => client.isInitialized() && client.getChat().getGenerationConfig().tools !== void 0, "chatReady");
|
|
55521
|
+
while (!chatReady() && Date.now() < chatDeadline && !signal?.aborted) {
|
|
55522
|
+
await new Promise((resolve4) => setTimeout(resolve4, STARTUP_CHAT_POLL_MS));
|
|
55523
|
+
}
|
|
55524
|
+
signal?.throwIfAborted();
|
|
55525
|
+
if (client.isInitialized() && !chatReady()) {
|
|
55526
|
+
throw new Error(
|
|
55527
|
+
`Timed out after ${STARTUP_CHAT_WAIT_MS}ms waiting for the startup chat to become ready`
|
|
55528
|
+
);
|
|
55529
|
+
}
|
|
54527
55530
|
const promptId = options?.promptId ?? nextLivePromptId(config);
|
|
54528
55531
|
const abort = signal ?? new AbortController().signal;
|
|
54529
55532
|
const turnModel = {
|
|
@@ -54564,6 +55567,9 @@ async function* livePromptEvents(config, prompt, signal, options) {
|
|
|
54564
55567
|
for (const ev of bridged.events) yield ev;
|
|
54565
55568
|
if (bridged.parts === null) return;
|
|
54566
55569
|
nextPrompt = bridged.parts;
|
|
55570
|
+
if (hasUnsupportedImageFormat(nextPrompt)) {
|
|
55571
|
+
yield imageFormatWarningEvent();
|
|
55572
|
+
}
|
|
54567
55573
|
let first = true;
|
|
54568
55574
|
const waitingSeen = /* @__PURE__ */ new Set();
|
|
54569
55575
|
for (; ; ) {
|
|
@@ -54910,7 +55916,9 @@ function useOpenTuiLiveTurn(options) {
|
|
|
54910
55916
|
for (const notice of notices) apply({ type: "warning", text: notice });
|
|
54911
55917
|
const prompt = parts.length > 0 ? [{ text }, ...parts] : content;
|
|
54912
55918
|
const promptId = nextLivePromptId(config);
|
|
54913
|
-
|
|
55919
|
+
if (!options2?.invocationEchoed) {
|
|
55920
|
+
apply({ type: "user", text, promptId, sentToModel: true });
|
|
55921
|
+
}
|
|
54914
55922
|
void runTurn(prompt, promptId, options2);
|
|
54915
55923
|
},
|
|
54916
55924
|
[config, apply, pushQueue, runTurn]
|
|
@@ -55196,6 +56204,7 @@ ${error.stack ?? ""}`
|
|
|
55196
56204
|
onSubmitPrompt: handleSubmitPrompt,
|
|
55197
56205
|
onQuit: handleQuit,
|
|
55198
56206
|
onTranscriptReset: resetTranscript,
|
|
56207
|
+
onTranscriptEvent: applyEvent,
|
|
55199
56208
|
onStartNewSession: handleStartNewSession,
|
|
55200
56209
|
updateNotice,
|
|
55201
56210
|
availableTerminalHeight: height,
|