@qwen-code/qwen-code 0.21.7 → 0.21.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/bundled/qc-helper/docs/configuration/settings.md +43 -30
- package/bundled/qc-helper/docs/features/channels/dingtalk.md +40 -2
- package/bundled/qc-helper/docs/features/channels/feishu.md +13 -2
- package/bundled/qc-helper/docs/features/channels/github.md +13 -11
- package/bundled/qc-helper/docs/features/channels/gitlab.md +13 -11
- package/bundled/qc-helper/docs/features/channels/overview.md +49 -31
- package/bundled/qc-helper/docs/features/channels/plugins.md +2 -2
- package/bundled/qc-helper/docs/features/channels/qqbot.md +4 -2
- package/bundled/qc-helper/docs/features/channels/telegram.md +4 -2
- package/bundled/qc-helper/docs/features/channels/wecom.md +1 -1
- package/bundled/qc-helper/docs/features/code-review.md +4 -0
- package/bundled/qc-helper/docs/features/commands.md +1 -1
- package/bundled/qc-helper/docs/features/hooks.md +52 -0
- package/bundled/qc-helper/docs/integration-jetbrains.md +1 -0
- package/bundled/qc-helper/docs/qwen-serve.md +4 -1
- package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +50 -36
- package/bundled/review/SKILL.md +28 -5
- package/chunks/{MaxSizedBox-ANWZBPTS.js → MaxSizedBox-7PM6BGJ5.js} +26 -22
- package/chunks/{StandaloneSessionPicker-XKS3VU3A.js → StandaloneSessionPicker-3UQHM7GV.js} +44 -40
- package/chunks/{acp-startup-profiler-ORIQ2CCQ.js → acp-startup-profiler-B5BYAMYQ.js} +2 -2
- package/chunks/{acpAgent-KUAZ3GCZ.js → acpAgent-5UWLFV6V.js} +534 -262
- package/chunks/{agent-T6PTGX5R.js → agent-624T2BLO.js} +26 -22
- package/chunks/{agent-headless-PR7YCB7S.js → agent-headless-2EE5J2KX.js} +26 -22
- package/chunks/{artifact-tool-U4VOZIK5.js → artifact-tool-N652YE4L.js} +1 -1
- package/chunks/{askUserQuestion-XOBQLPFA.js → askUserQuestion-ONW74PKJ.js} +1 -1
- package/chunks/{bridge-NU6YEEHK.js → bridge-JENKGFFP.js} +29 -25
- package/chunks/{ca-NYKNH222.js → ca-ZLKAB4K3.js} +6 -0
- package/chunks/{channel-management-service-FSQ7SHYI.js → channel-management-service-DDWUPHMU.js} +19 -10
- package/chunks/{channel-settings-store-35VQVUVV.js → channel-settings-store-SA6JZSPH.js} +34 -30
- package/chunks/{channel-worker-group-JWQK224X.js → channel-worker-group-E67EN3RV.js} +5 -5
- package/chunks/{channel-worker-manager-77E3OXRQ.js → channel-worker-manager-SW4C45CF.js} +5 -5
- package/chunks/{channel-worker-supervisor-62YWUGP2.js → channel-worker-supervisor-5SRD24FG.js} +3 -3
- package/chunks/{chunk-CJXIIILK.js → chunk-2FRY5CRX.js} +1 -1
- package/chunks/{chunk-ZJ3VGYHK.js → chunk-2ILAOM2I.js} +34 -17
- package/chunks/{chunk-6XJMFJ4D.js → chunk-2M4K4KYS.js} +177 -120
- package/chunks/{chunk-CNIID3TV.js → chunk-2UUMVNYT.js} +1 -1
- package/chunks/{chunk-22NBYCPD.js → chunk-3P2LV43B.js} +1 -1
- package/chunks/{chunk-2U3WZGZG.js → chunk-3PY4LPJF.js} +19 -131
- package/chunks/{chunk-SPMY6CX6.js → chunk-3SE7J4DR.js} +3 -3
- package/chunks/{chunk-6UWFTUQL.js → chunk-3WNQOYHQ.js} +66 -22
- package/chunks/{chunk-KXSDEOFU.js → chunk-4ALIARFY.js} +1 -1
- package/chunks/{chunk-D3UEZIQH.js → chunk-4DU3NCHG.js} +48 -55
- package/chunks/{chunk-BGG4MBYD.js → chunk-4PYCZH2V.js} +4 -187
- package/chunks/{chunk-H2UQ2M5Z.js → chunk-4WU6NY7F.js} +96 -22
- package/chunks/{chunk-TLV2IMHR.js → chunk-5ZGR6RKJ.js} +3 -3
- package/chunks/{chunk-3K7FH2KQ.js → chunk-67N6HB5H.js} +1310 -171
- package/chunks/{chunk-EORNAQDT.js → chunk-6TR7CFXH.js} +1 -1
- package/chunks/{chunk-NG2R4N5O.js → chunk-6ZRFAKXK.js} +1 -1
- package/chunks/{chunk-P2AJ7FTI.js → chunk-757GB46F.js} +1 -1
- package/chunks/{chunk-72LNFGUY.js → chunk-77QVBFCU.js} +3 -3
- package/chunks/{chunk-OH2VKQXH.js → chunk-7DVT4LVV.js} +37 -30
- package/chunks/{chunk-KKJJB5X6.js → chunk-7VUERJHS.js} +1503 -815
- package/chunks/{chunk-VOARQPTA.js → chunk-B52AWKBB.js} +65 -21
- package/chunks/{chunk-Y4EWSQF7.js → chunk-BF224XHL.js} +2 -2
- package/chunks/{chunk-PJOBIWUG.js → chunk-BF52U4XJ.js} +1 -1
- package/chunks/{chunk-55LYDVPU.js → chunk-C5VWPTGT.js} +1 -1
- package/chunks/{chunk-W7U4ESW2.js → chunk-CG3WBKJK.js} +1 -1
- package/chunks/chunk-COBO5EBO.js +135 -0
- package/chunks/chunk-CPG6P4GG.js +82 -0
- package/chunks/{chunk-DIEFUBV6.js → chunk-DIWZNWZT.js} +205 -35
- package/chunks/{chunk-AE77C5ZU.js → chunk-DQSDACD2.js} +1 -1
- package/chunks/{chunk-P3LEG54R.js → chunk-DX5W5AON.js} +2 -2
- package/chunks/{chunk-EUQTXRKZ.js → chunk-E4ZBKMSF.js} +5 -5
- package/chunks/{chunk-FPM27XN4.js → chunk-EIVICVHM.js} +4 -4
- package/chunks/{chunk-YHEEE624.js → chunk-EN2TKTFH.js} +1 -1
- package/chunks/chunk-F6WFNA7U.js +22 -0
- package/chunks/{chunk-FZBZSYKU.js → chunk-FN6YXJOP.js} +1 -1
- package/chunks/{chunk-KR4ZSC7K.js → chunk-FWBXMANW.js} +3 -3
- package/chunks/{chunk-LA7YLSR6.js → chunk-FYAXKJK7.js} +327 -67
- package/chunks/{chunk-CSZEXZBE.js → chunk-GBDINRIL.js} +3 -3
- package/chunks/{chunk-SCI7K3GM.js → chunk-GOEVOFQI.js} +19 -10
- package/chunks/{chunk-LEMXGVEP.js → chunk-GQCEQPYQ.js} +3 -3
- package/chunks/{chunk-Y7E5LNLO.js → chunk-GXSNGY5M.js} +1027 -876
- package/chunks/{chunk-6XU3PH66.js → chunk-HA3SAB64.js} +22 -69
- package/chunks/{chunk-Y4NGLFGJ.js → chunk-HUWENAHO.js} +1 -1
- package/chunks/{chunk-3ULCB3NE.js → chunk-HV76SFIA.js} +1 -1
- package/chunks/{chunk-CB2464BK.js → chunk-HWX5HPUG.js} +14 -4
- package/chunks/{chunk-LZC3B5N2.js → chunk-IA7TGCN2.js} +2 -2
- package/chunks/{chunk-RERATVSK.js → chunk-IBYULW65.js} +6 -6
- package/chunks/{chunk-HYRDKNUY.js → chunk-IUQ52YJK.js} +1 -1
- package/chunks/{chunk-TDXGKHDN.js → chunk-IYES5WOT.js} +2 -2
- package/chunks/{chunk-RGSBTHSU.js → chunk-KAQCJO6Y.js} +131 -4
- package/chunks/{chunk-VWOVHOTT.js → chunk-KJZ26VBX.js} +1 -1
- package/chunks/{chunk-6GONZVLS.js → chunk-KKDVZLGL.js} +1 -1
- package/chunks/{chunk-MKVZE4ZJ.js → chunk-KTJFU7RT.js} +3 -2
- package/chunks/{chunk-R574ATRM.js → chunk-M2PNLYGY.js} +41 -0
- package/chunks/{chunk-6EOI4HOK.js → chunk-M3STHEMM.js} +12 -17
- package/chunks/chunk-NGYI5EF5.js +244 -0
- package/chunks/{chunk-ALGGS7UH.js → chunk-NPQ5ZKRP.js} +82 -1
- package/chunks/{chunk-HQB2KUAN.js → chunk-NPUXXRJI.js} +1 -1
- package/chunks/{chunk-QETYKPMG.js → chunk-NVRDQFCX.js} +1 -1
- package/chunks/{chunk-PQBHU2IA.js → chunk-OHKJVAKG.js} +10 -10
- package/chunks/{chunk-CYR3HI5X.js → chunk-OQTXYMKW.js} +2 -2
- package/chunks/{chunk-DBOFL3LQ.js → chunk-PG62DFWD.js} +10 -10
- package/chunks/{chunk-2VSTGY6M.js → chunk-PJRW65JO.js} +1 -1
- package/chunks/{chunk-33ACCIIY.js → chunk-PLFATELK.js} +1 -1
- package/chunks/{chunk-IC4Z6LX6.js → chunk-PYQADEFD.js} +5 -0
- package/chunks/{chunk-MAJS7AT4.js → chunk-QGHSP65Z.js} +2 -2
- package/chunks/{chunk-OHJLEW5J.js → chunk-QQWD7LZV.js} +4 -4
- package/chunks/{chunk-ZXU5UHMI.js → chunk-QXVSWG66.js} +2 -2
- package/chunks/{chunk-E33LOKRA.js → chunk-RPWVIXDB.js} +18 -1
- package/chunks/{chunk-TYKC75AX.js → chunk-S3Y3GBFD.js} +1 -1
- package/chunks/{chunk-7UFKAV7Y.js → chunk-S6HYI3MF.js} +2 -2
- package/chunks/chunk-SAH4BD2J.js +92 -0
- package/chunks/{chunk-OMKQH5C5.js → chunk-SNRT2TJJ.js} +6 -23
- package/chunks/chunk-SR7RZ4MS.js +202 -0
- package/chunks/{chunk-CXE7E23H.js → chunk-TE3ZAJE7.js} +45 -17
- package/chunks/{chunk-S7CV4KO6.js → chunk-TKSZJ5BV.js} +3 -3
- package/chunks/{chunk-3NB7TSE2.js → chunk-U5SLIG7E.js} +1 -1
- package/chunks/chunk-UA5H3DS2.js +203 -0
- package/chunks/{chunk-24ER7UV4.js → chunk-UFALT4LK.js} +1 -1
- package/chunks/{chunk-YJQCUTT2.js → chunk-VWMUDKLC.js} +3 -3
- package/chunks/{chunk-RMH5OWLD.js → chunk-VXZ5HAOV.js} +1 -1
- package/chunks/{chunk-BVWVWGLE.js → chunk-WAUGQKUU.js} +4 -64
- package/chunks/{chunk-SHZYHGQH.js → chunk-WG6542MA.js} +1 -1
- package/chunks/{chunk-5KH532V7.js → chunk-WV5J6Q6N.js} +1 -1
- package/chunks/{chunk-RNVQB725.js → chunk-XHD7CRP2.js} +2 -2
- package/chunks/{chunk-W4B7UBUS.js → chunk-XZKQT2B2.js} +5 -5
- package/chunks/{chunk-6HVUFDS2.js → chunk-Y4TETC74.js} +22 -13
- package/chunks/{chunk-RZHU3ILK.js → chunk-YEF7XEO2.js} +4 -4
- package/chunks/{chunk-RUL4S3K3.js → chunk-YHJFF7KH.js} +146 -45
- package/chunks/{chunk-23RZCH76.js → chunk-YOM7DEGB.js} +3 -3
- package/chunks/{chunk-OFI7IGST.js → chunk-ZCLLJARV.js} +9 -9
- package/chunks/{chunk-GSS34377.js → chunk-ZHA242R4.js} +2 -2
- package/chunks/{chunk-TRLYP7OF.js → chunk-ZPLALRXZ.js} +17 -9
- package/chunks/{chunk-WUC6ZFXO.js → chunk-ZWBUH5UP.js} +1 -1
- package/chunks/{computer-use-KEAPATUY.js → computer-use-ESQYJ3JY.js} +26 -22
- package/chunks/{config-utils-K7SCOWHD.js → config-utils-XQHBJP7G.js} +4 -4
- package/chunks/{contextCommand-ZJA6A5K5.js → contextCommand-CX3YF4ZE.js} +28 -24
- package/chunks/{core-runtime-QMJPWHCI.js → core-runtime-DIAU7JMG.js} +30 -26
- package/chunks/{create-sub-session-DJE6XICH.js → create-sub-session-HDPD6HOA.js} +26 -22
- package/chunks/{create-sub-session-E4PBYXV5.js → create-sub-session-QIDZUOPU.js} +1 -1
- package/chunks/{cron-create-GRBWYMIJ.js → cron-create-VONA5JYY.js} +1 -1
- package/chunks/{cron-delete-4CMKBR2M.js → cron-delete-5JXSP2MI.js} +1 -1
- package/chunks/{cron-list-W7K4ASOA.js → cron-list-KE4F2CIR.js} +1 -1
- package/chunks/{daemon-SCTQMM7Z.js → daemon-VZBGJUNL.js} +30 -0
- package/chunks/{daemon-status-provider-FSWDPE2G.js → daemon-status-provider-H6O4UQ4F.js} +33 -29
- package/chunks/{daemon-trust-policy-P5L5VFAY.js → daemon-trust-policy-BNUXG6MT.js} +33 -29
- package/chunks/{daemon-trust-policy-monitor-73JYN6ET.js → daemon-trust-policy-monitor-E4EQ7GF4.js} +33 -29
- package/chunks/{de-VL76CPLV.js → de-LIW4XVLN.js} +5 -0
- package/chunks/{deferred-core-runtime-BWRCCFTE.js → deferred-core-runtime-CBMSHPAU.js} +26 -22
- package/chunks/{display-image-O2XFPQTC.js → display-image-NQRSIBXM.js} +2 -2
- package/chunks/{dist-DPPHJAVL.js → dist-EEEQGCZA.js} +918 -142
- package/chunks/{dist-K4WWQBHS.js → dist-HIACTZEK.js} +55 -15
- package/chunks/{dist-3BMEUGTG.js → dist-IRL7WA5Z.js} +1 -1
- package/chunks/{dist-HVBMEYWK.js → dist-KVISB2O2.js} +1 -1
- package/chunks/{dist-KS4O2NKE.js → dist-MBF3I5MX.js} +14 -8
- package/chunks/{dist-SFQ34F4M.js → dist-MKX5OSFF.js} +5 -4
- package/chunks/{dist-7JGAAQSC.js → dist-RCH3I7SS.js} +2 -2
- package/chunks/{dist-C5U4LJKW.js → dist-TUSWNE2I.js} +5 -4
- package/chunks/{earlyInputCapture-L5ST23A6.js → earlyInputCapture-UIOP7OIN.js} +26 -22
- package/chunks/{edit-LHHRFNFK.js → edit-ITMZYFKA.js} +26 -22
- package/chunks/{en-IRJ2WN5T.js → en-SY5GTIGX.js} +6 -0
- package/chunks/{enter-worktree-6NXCRZPF.js → enter-worktree-S4PL5UV6.js} +26 -22
- package/chunks/{enterPlanMode-ZVQT4U7D.js → enterPlanMode-YV52NNJT.js} +26 -22
- package/chunks/{environment-GJ2HWJOS.js → environment-NGOWPRZV.js} +30 -26
- package/chunks/{errors-6RLH3XXC.js → errors-BU26DTDX.js} +28 -24
- package/chunks/{exit-worktree-I2YLUHHY.js → exit-worktree-XRM6LH5F.js} +26 -22
- package/chunks/{exitPlanMode-7CCWKO7I.js → exitPlanMode-ZLI5F7KR.js} +26 -22
- package/chunks/{fast-path-DVFD4HQD.js → fast-path-UJWORIED.js} +23 -3
- package/chunks/{fast-path-settings-WQJU2LAT.js → fast-path-settings-37WQD5B2.js} +6 -3
- package/chunks/{fr-GK3HQYVB.js → fr-RQFO7U4P.js} +5 -0
- package/chunks/{gemini-7FWGOYD4.js → gemini-ZSKNDUMU.js} +77 -65
- package/chunks/{geminiContentGenerator-V2WVLIXU.js → geminiContentGenerator-YGEXOEKD.js} +1 -1
- package/chunks/{glob-3N6GGI75.js → glob-7KZG44BR.js} +26 -22
- package/chunks/{goal-tools-APOW6UXL.js → goal-tools-PXWN5VK3.js} +4 -2
- package/chunks/{grep-V43ILZVX.js → grep-6ZFC7RJ5.js} +26 -22
- package/chunks/{handleAutoUpdate-A5WFVWIA.js → handleAutoUpdate-KSEL3TQS.js} +30 -26
- package/chunks/{i18n-PLVQ4FBZ.js → i18n-ZIUXBW5V.js} +27 -23
- package/chunks/{image-gen-7C6IK6DC.js → image-gen-AUIZJJNK.js} +7 -5
- package/chunks/{initializer-CVAIKZYL.js → initializer-7AHY3N6Q.js} +33 -29
- package/chunks/{installationInfo-J6QDHNTK.js → installationInfo-VGBXMYLY.js} +27 -23
- package/chunks/{ja-3FA46IKD.js → ja-KOZKHJHZ.js} +5 -0
- package/chunks/{list-ZZ4OUUWV.js → list-PSFKQHLB.js} +36 -32
- package/chunks/{list-agents-KFFIIS2G.js → list-agents-Z4WABFDZ.js} +1 -1
- package/chunks/{loadedSettingsAdapter-QRYRJSWL.js → loadedSettingsAdapter-FTMRCTOF.js} +33 -29
- package/chunks/{loggingContentGenerator-OJCO75HM.js → loggingContentGenerator-MZAN52UV.js} +7 -5
- package/chunks/{loop-wakeup-TLMJPMMP.js → loop-wakeup-UZ5RL5Y2.js} +2 -2
- package/chunks/{ls-UVVE2XGE.js → ls-TVHDGIES.js} +1 -1
- package/chunks/{lsp-QMEA2VLB.js → lsp-CVN6OQPI.js} +1 -1
- package/chunks/{managed-npm-update-PCOSCP2N.js → managed-npm-update-O4NHK45X.js} +27 -23
- package/chunks/{mcp-M3WKKWKY.js → mcp-6CFP2AYQ.js} +33 -29
- package/chunks/{monitor-GN24FH6C.js → monitor-DAKD6OU4.js} +26 -22
- package/chunks/{nonInteractiveCli-KPTU3VSQ.js → nonInteractiveCli-RC7VIUZL.js} +66 -60
- package/chunks/{notebook-edit-4YM65BBO.js → notebook-edit-474DPMRL.js} +34 -22
- package/chunks/{openaiContentGenerator-EDQT6GTV.js → openaiContentGenerator-2NFY2MWO.js} +19 -9
- package/chunks/{pidfile-JOIIRN2C.js → pidfile-KBFVDNQP.js} +26 -22
- package/chunks/{process-registry-2CHQBXH5.js → process-registry-PMJOA5CO.js} +15 -0
- package/chunks/{processUtils-5SV4MX3Q.js → processUtils-6GRYH4Y3.js} +2 -2
- package/chunks/{pt-3AOBKPIJ.js → pt-U6AOCTMF.js} +5 -0
- package/chunks/{qwenContentGenerator-ODRJSUGR.js → qwenContentGenerator-KAHU6IZY.js} +33 -28
- package/chunks/{qwenOAuth2-NESCMZ47.js → qwenOAuth2-RRQTCP4W.js} +7 -5
- package/chunks/{read-file-HPSODLPK.js → read-file-3M6WXDXP.js} +6 -4
- package/chunks/{read-mcp-resource-2TNSJTC3.js → read-mcp-resource-PZ4ZF6YL.js} +1 -1
- package/chunks/{record-artifact-RAON52FC.js → record-artifact-P4HFMS7X.js} +2 -2
- package/chunks/{resumeHistoryUtils-TXCOFFMQ.js → resumeHistoryUtils-D6TAY3HX.js} +30 -26
- package/chunks/{ripGrep-ZKQGTQAO.js → ripGrep-PLPENT3E.js} +26 -22
- package/chunks/{ru-VJRAMC4W.js → ru-CMX4UMYP.js} +5 -0
- package/chunks/{run-qwen-serve-ZPKPKECF.js → run-qwen-serve-ZAFIJKJC.js} +168 -54
- package/chunks/{runtime-2FLNNM36.js → runtime-ZED7CYOZ.js} +38 -34
- package/chunks/{scheduler-365PJHNR.js → scheduler-MD3AL2W5.js} +26 -22
- package/chunks/{send-message-ZM7MRUGP.js → send-message-CAMSLG2L.js} +4 -3
- package/chunks/{serve-QD2RNLKJ.js → serve-E3VUDRZN.js} +33 -29
- package/chunks/{server-XLJVLTYM.js → server-OWMEMAKR.js} +450 -231
- package/chunks/{session-3VTUHH4Q.js → session-HZ57QK7K.js} +158 -97
- package/chunks/{settings-KULVPCQC.js → settings-V7BR3RKP.js} +32 -28
- package/chunks/{shell-3SWW22MH.js → shell-23OMNMW6.js} +26 -22
- package/chunks/{skill-KDHWYS7W.js → skill-6HBDYZRS.js} +7 -5
- package/chunks/{skill-settings-NMY4JEJC.js → skill-settings-HWJLTU7M.js} +32 -28
- package/chunks/{spawnChannel-ZKS4Q5OU.js → spawnChannel-N6KKUW5B.js} +27 -23
- package/chunks/{standalone-update-7CXPGAQ4.js → standalone-update-QGIKHATD.js} +28 -24
- package/chunks/{startInteractiveUI-2QQLEKM6.js → startInteractiveUI-GX2CRL42.js} +365 -155
- package/chunks/{syntheticOutput-ZLCUTKO2.js → syntheticOutput-PEBJQYJV.js} +2 -2
- package/chunks/{task-create-CQP5UEA3.js → task-create-5NWCQSJF.js} +5 -4
- package/chunks/{task-list-XLEZOJXP.js → task-list-53265TRZ.js} +1 -1
- package/chunks/{task-stop-7ZQM5CFF.js → task-stop-FPCOIRYX.js} +1 -1
- package/chunks/{task-update-JA75U2SN.js → task-update-5HN577LS.js} +5 -4
- package/chunks/{team-create-2WTNGAOX.js → team-create-CFFKU7KL.js} +26 -22
- package/chunks/{team-delete-MHY3UZGY.js → team-delete-MMQB4OSC.js} +1 -1
- package/chunks/{team-plan-approval-LZTYLEG4.js → team-plan-approval-6EFOKR6A.js} +26 -22
- package/chunks/{terminal-image-renderer-R5HHAFJN.js → terminal-image-renderer-TLDNACQY.js} +28 -24
- package/chunks/{theme-manager-PAUCSJFF.js → theme-manager-5LJ3H7VO.js} +26 -22
- package/chunks/{todoWrite-UPVOHYGD.js → todoWrite-JGV6VLOX.js} +1 -1
- package/chunks/{tool-search-2BFCGLI6.js → tool-search-UJV3A24H.js} +9 -6
- package/chunks/{total-session-admission-MK4SINFK.js → total-session-admission-D63QYXGO.js} +29 -25
- package/chunks/{trustedFolders-TJ5S26N7.js → trustedFolders-KZCOB53W.js} +30 -24
- package/chunks/{update-relaunch-N7AYLARF.js → update-relaunch-IFILM3SA.js} +5 -5
- package/chunks/{updateCheck-QRZ3DVT5.js → updateCheck-YZ2CRCFC.js} +29 -25
- package/chunks/{useAutoAcceptIndicator-DBJ7Y5AF.js → useAutoAcceptIndicator-AXEVNA3Q.js} +35 -31
- package/chunks/{validateNonInterActiveAuth-6ZQWUDS3.js → validateNonInterActiveAuth-3WTOJFWA.js} +61 -57
- package/chunks/{version-AJQGQWXC.js → version-GXK7OHZY.js} +1 -1
- package/chunks/{web-fetch-QWJYRXFL.js → web-fetch-ILB4GAVR.js} +12 -8
- package/chunks/{web-search-2AOXJGHU.js → web-search-HKRPGPZZ.js} +8 -6
- package/chunks/{workflow-ERH3SJG2.js → workflow-FXIPRQQA.js} +750 -147
- package/chunks/{workspace-providers-status-HZ474RA4.js → workspace-providers-status-NYHC7HSR.js} +35 -31
- package/chunks/{workspace-registration-store-6EUP4JXG.js → workspace-registration-store-AKEB7OMW.js} +1 -1
- package/chunks/{workspace-registry-R4APRRNC.js → workspace-registry-CDAS5TVZ.js} +29 -25
- package/chunks/{workspace-service-HFIFDMU7.js → workspace-service-PAMUKMAV.js} +36 -32
- package/chunks/{workspace-skills-status-HAHEIHGK.js → workspace-skills-status-YQSHCCMS.js} +33 -29
- package/chunks/{workspace-trust-reconciler-65GTAGDK.js → workspace-trust-reconciler-RPTXOIY2.js} +36 -32
- package/chunks/{write-file-B34CDELV.js → write-file-CGS57TS4.js} +26 -22
- package/chunks/{zh-ARWDLDLR.js → zh-AGL2FVBI.js} +6 -0
- package/chunks/{zh-TW-Y4RGI3P7.js → zh-TW-KI66MHQY.js} +6 -0
- package/chunks/{zoom-image-HPRBZHSS.js → zoom-image-E7D72GYV.js} +6 -4
- package/cli.js +13 -13
- package/locales/ca.js +10 -0
- package/locales/de.js +9 -0
- package/locales/en.js +10 -0
- package/locales/fr.js +9 -0
- package/locales/ja.js +9 -0
- package/locales/pt.js +9 -0
- package/locales/ru.js +9 -0
- package/locales/zh-TW.js +10 -0
- package/locales/zh.js +10 -0
- package/package.json +3 -3
- package/web-shell/assets/{arc-Ip-FFDJ0.js → arc-DybZaz32.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-CChqgwIb.js → architectureDiagram-3BPJPVTR-jN3qBd19.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-BHN-Tfss.js → blockDiagram-GPEHLZMM-Ct5DZPrj.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-BhyjzDjN.js → c4Diagram-AAUBKEIU-CUAFMlUG.js} +1 -1
- package/web-shell/assets/channel-BMwLrwLW.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-BB9eyHrx.js → chunk-2J33WTMH-CuV8n90B.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-BeV7ce_J.js → chunk-4BX2VUAB-BUzl_kls.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-DO7kXDiV.js → chunk-55IACEB6-BnDBLX6A.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-B27MPznD.js → chunk-727SXJPM-B83uTOjm.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-DHIjqjD_.js → chunk-AQP2D5EJ-DM3HLgpT.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-DabMqyN2.js → chunk-FMBD7UC4-CSQ5hgyb.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-Dw7Nnnxc.js → chunk-ND2GUHAM-BWOF4SxX.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-DdaZew1Q.js → chunk-QZHKN3VN-BsOH9LMi.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-BGDv98jY.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BGDv98jY.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-CgBpCYH5.js → cose-bilkent-S5V4N54A-IENqH2iJ.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-BB4IU8G0.js → dagre-BM42HDAG--dyzDTGo.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-BcUTHU37.js → diagram-2AECGRRQ-BE7Dcqof.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-B6Lyihyv.js → diagram-5GNKFQAL-Cr8-5OTj.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-CRIJOjpG.js → diagram-KO2AKTUF-Bzey3uAY.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-DdNiwWWT.js → diagram-LMA3HP47-sErl28Xb.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-Dz4b32Do.js → diagram-OG6HWLK6-Dq30ATIo.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-D-8NGw77.js → erDiagram-TEJ5UH35-BkCoEfVW.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-Dun26LyM.js → flowDiagram-I6XJVG4X-DHwO0rrI.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-F10Hu1Gc.js → ganttDiagram-6RSMTGT7-s7vAPxWq.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-Bf8Ez6-D.js → gitGraphDiagram-PVQCEYII-CQxhwPOU.js} +1 -1
- package/web-shell/assets/index-Bckpjr-I.css +5 -0
- package/web-shell/assets/{index-BXqw-nGq.js → index-CF4wApWp.js} +1 -1
- package/web-shell/assets/index-DwEr9HEW.js +1768 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-DVgTMLvj.js → infoDiagram-5YYISTIA-BnFrD0bq.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-uT-KepvK.js → ishikawaDiagram-YF4QCWOH-Bf9zK5NK.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-Vg_XadQf.js → journeyDiagram-JHISSGLW-CyGAhsxi.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-Dyv1ESBE.js → kanban-definition-UN3LZRKU-CbsK5akB.js} +1 -1
- package/web-shell/assets/{linear-BMIepYX3.js → linear-cQsF4P8D.js} +1 -1
- package/web-shell/assets/{mermaid.core-zA8pJ9ag.js → mermaid.core-Z4HVqrKY.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-BCW_BZ_5.js → mindmap-definition-RKZ34NQL-CYnrBo_f.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-DseNEGp2.js → pieDiagram-4H26LBE5-CBzOfhrs.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-6Z7wr1Fi.js → quadrantDiagram-W4KKPZXB-D4LK1Ebn.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-CVOlCRPf.js → requirementDiagram-4Y6WPE33-Bzti2Lcj.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-CGhgrUJZ.js → sankeyDiagram-5OEKKPKP-yTBw5Z2s.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-dlqmpLuQ.js → sequenceDiagram-3UESZ5HK-D07UVRiZ.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-B9EW10Xb.js → stateDiagram-AJRCARHV-UE_lHsTn.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DC6xgXjX.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-BBRh0mgZ.js → timeline-definition-PNZ67QCA-DRvYdiTs.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-B8Gs-REP.js → vennDiagram-CIIHVFJN-CQLIXs0u.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-D_y80Ur7.js → wardley-L42UT6IY-JZz_Xqse.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-D-CNfHJ-.js → wardleyDiagram-YWT4CUSO--i7BiJwB.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-DQ5CvELo.js → xychartDiagram-2RQKCTM6-Bkc-bW0S.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/chunk-6PEXNQTX.js +0 -68
- package/chunks/chunk-IUFV6FYU.js +0 -81
- package/web-shell/assets/channel-Cu8qd6OB.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-BI3KrXhq.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BI3KrXhq.js +0 -1
- package/web-shell/assets/index-QQlUCJGg.css +0 -5
- package/web-shell/assets/index-hcgjV7vS.js +0 -1768
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-CJTZJJ5X.js +0 -1
- package/chunks/{anthropicContentGenerator-DTMVEL5M.js → anthropicContentGenerator-SSFE2753.js} +9 -9
|
@@ -6,13 +6,13 @@ import {
|
|
|
6
6
|
import {
|
|
7
7
|
TUI_CHAT_RECORDING_FAILURE_MESSAGE,
|
|
8
8
|
reportChatRecordingFailureToAdapter
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-U5SLIG7E.js";
|
|
10
10
|
import {
|
|
11
11
|
StreamJsonOutputAdapter
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-77QVBFCU.js";
|
|
13
13
|
import {
|
|
14
14
|
startPostRenderPrefetches
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-ZCLLJARV.js";
|
|
16
16
|
import {
|
|
17
17
|
AboutBox,
|
|
18
18
|
BaseSelectionList,
|
|
@@ -90,7 +90,7 @@ import {
|
|
|
90
90
|
useUIActions,
|
|
91
91
|
useUIState,
|
|
92
92
|
useVirtualViewport
|
|
93
|
-
} from "./chunk-
|
|
93
|
+
} from "./chunk-3WNQOYHQ.js";
|
|
94
94
|
import {
|
|
95
95
|
GeminiRespondingSpinner,
|
|
96
96
|
GeminiSpinner,
|
|
@@ -106,19 +106,19 @@ import {
|
|
|
106
106
|
shouldDisplayGoalStateCause,
|
|
107
107
|
useStreamingContext,
|
|
108
108
|
waitForGoalRuntime
|
|
109
|
-
} from "./chunk-
|
|
109
|
+
} from "./chunk-7DVT4LVV.js";
|
|
110
110
|
import {
|
|
111
111
|
stopAndGetCapturedInput
|
|
112
112
|
} from "./chunk-TZEZYNYD.js";
|
|
113
113
|
import {
|
|
114
114
|
useAutoAcceptIndicator
|
|
115
|
-
} from "./chunk-
|
|
115
|
+
} from "./chunk-YOM7DEGB.js";
|
|
116
116
|
import {
|
|
117
117
|
KeypressProvider,
|
|
118
118
|
useFocus,
|
|
119
119
|
useKeypress,
|
|
120
120
|
useKeypressContext
|
|
121
|
-
} from "./chunk-
|
|
121
|
+
} from "./chunk-QGHSP65Z.js";
|
|
122
122
|
import {
|
|
123
123
|
classifyApiError,
|
|
124
124
|
fireSessionDeleteHook
|
|
@@ -134,7 +134,7 @@ import {
|
|
|
134
134
|
matchMcpServerPrefix,
|
|
135
135
|
resolveAtCommandQuery,
|
|
136
136
|
sanitizeDisplayText
|
|
137
|
-
} from "./chunk-
|
|
137
|
+
} from "./chunk-FWBXMANW.js";
|
|
138
138
|
import {
|
|
139
139
|
BuiltinCommandLoader,
|
|
140
140
|
BundledSkillLoader,
|
|
@@ -175,22 +175,23 @@ import {
|
|
|
175
175
|
resetBackgroundStateForSessionSwitch,
|
|
176
176
|
serializeUserPromptExpansionPrompt,
|
|
177
177
|
supportsMatchers
|
|
178
|
-
} from "./chunk-
|
|
178
|
+
} from "./chunk-YHJFF7KH.js";
|
|
179
179
|
import {
|
|
180
180
|
EXTENSION_RELOAD_FAILED_REASON,
|
|
181
181
|
ExtensionRefreshState,
|
|
182
182
|
appEvents,
|
|
183
183
|
cleanupReviewWorktreeLeases,
|
|
184
|
+
isValidSessionId,
|
|
184
185
|
loadHierarchicalGeminiMemory
|
|
185
|
-
} from "./chunk-
|
|
186
|
+
} from "./chunk-7VUERJHS.js";
|
|
186
187
|
import {
|
|
187
188
|
getCommandDisplayName,
|
|
188
189
|
getCommandSourceBadge
|
|
189
|
-
} from "./chunk-
|
|
190
|
+
} from "./chunk-NVRDQFCX.js";
|
|
190
191
|
import {
|
|
191
192
|
computeSessionStats,
|
|
192
193
|
levelLabel
|
|
193
|
-
} from "./chunk-
|
|
194
|
+
} from "./chunk-XHD7CRP2.js";
|
|
194
195
|
import {
|
|
195
196
|
disableKittyProtocol,
|
|
196
197
|
isKittyProtocolEnabled,
|
|
@@ -209,10 +210,10 @@ import {
|
|
|
209
210
|
oscKittyNotify,
|
|
210
211
|
saveClipboardImage,
|
|
211
212
|
writeOsc52
|
|
212
|
-
} from "./chunk-
|
|
213
|
-
import "./chunk-
|
|
213
|
+
} from "./chunk-EN2TKTFH.js";
|
|
214
|
+
import "./chunk-GOEVOFQI.js";
|
|
214
215
|
import "./chunk-4WGODMVR.js";
|
|
215
|
-
import "./chunk-
|
|
216
|
+
import "./chunk-5ZGR6RKJ.js";
|
|
216
217
|
import "./chunk-KW7NOTN6.js";
|
|
217
218
|
import {
|
|
218
219
|
MaxSizedBox,
|
|
@@ -242,40 +243,40 @@ import {
|
|
|
242
243
|
import {
|
|
243
244
|
require_react
|
|
244
245
|
} from "./chunk-5QWWOFGG.js";
|
|
245
|
-
import "./chunk-
|
|
246
|
-
import "./chunk-
|
|
246
|
+
import "./chunk-BF224XHL.js";
|
|
247
|
+
import "./chunk-S6HYI3MF.js";
|
|
247
248
|
import {
|
|
248
249
|
MAX_INLINE_IMAGES_PER_ITEM,
|
|
249
250
|
collectInlineImages,
|
|
250
251
|
getInlineImageData
|
|
251
|
-
} from "./chunk-
|
|
252
|
+
} from "./chunk-PJRW65JO.js";
|
|
252
253
|
import {
|
|
253
254
|
relaunchApp
|
|
254
|
-
} from "./chunk-
|
|
255
|
+
} from "./chunk-NPUXXRJI.js";
|
|
255
256
|
import {
|
|
256
257
|
setUpdateHandler
|
|
257
|
-
} from "./chunk-
|
|
258
|
-
import "./chunk-
|
|
258
|
+
} from "./chunk-GQCEQPYQ.js";
|
|
259
|
+
import "./chunk-ZHA242R4.js";
|
|
259
260
|
import "./chunk-YAF2MQZ6.js";
|
|
260
261
|
import {
|
|
261
262
|
AUTO_THEME_NAME,
|
|
262
263
|
DEFAULT_THEME,
|
|
263
264
|
themeManager
|
|
264
265
|
} from "./chunk-CTJLZLB5.js";
|
|
265
|
-
import "./chunk-
|
|
266
|
+
import "./chunk-HWX5HPUG.js";
|
|
266
267
|
import "./chunk-6H67XLET.js";
|
|
267
|
-
import "./chunk-
|
|
268
|
+
import "./chunk-EIVICVHM.js";
|
|
268
269
|
import {
|
|
269
270
|
getErrorMessage as getErrorMessage2
|
|
270
|
-
} from "./chunk-
|
|
271
|
+
} from "./chunk-IYES5WOT.js";
|
|
271
272
|
import {
|
|
272
273
|
openQwenAsrRealtimeStream,
|
|
273
274
|
openVoiceStream,
|
|
274
275
|
openVoiceStreamWithRetry
|
|
275
276
|
} from "./chunk-Q3JQ7OSU.js";
|
|
276
|
-
import "./chunk-
|
|
277
|
+
import "./chunk-2M4K4KYS.js";
|
|
277
278
|
import "./chunk-OWMAZHIX.js";
|
|
278
|
-
import "./chunk-
|
|
279
|
+
import "./chunk-4ALIARFY.js";
|
|
279
280
|
import {
|
|
280
281
|
cpLen,
|
|
281
282
|
cpSlice,
|
|
@@ -300,36 +301,36 @@ import "./chunk-RXFQM6FQ.js";
|
|
|
300
301
|
import "./chunk-HGCQ5SE7.js";
|
|
301
302
|
import {
|
|
302
303
|
isInlineModelOverrideAllowed
|
|
303
|
-
} from "./chunk-
|
|
304
|
+
} from "./chunk-GBDINRIL.js";
|
|
304
305
|
import {
|
|
305
306
|
assertVoiceBaseUrlNetworkAllowed,
|
|
306
307
|
isKeytermEcho,
|
|
307
308
|
isStreamingVoiceModel,
|
|
308
309
|
resolveVoiceStreamConfig,
|
|
309
310
|
transcribeVoiceAudio
|
|
310
|
-
} from "./chunk-
|
|
311
|
+
} from "./chunk-DQSDACD2.js";
|
|
311
312
|
import {
|
|
312
313
|
formatUnsupportedVoiceModelMessage,
|
|
313
314
|
isSelectableVoiceModel
|
|
314
|
-
} from "./chunk-
|
|
315
|
+
} from "./chunk-C5VWPTGT.js";
|
|
315
316
|
import "./chunk-AOHJKPKL.js";
|
|
316
317
|
import {
|
|
317
318
|
computeWorkspaceSkillListUpdates,
|
|
318
319
|
resolveSkillSettings,
|
|
319
320
|
skillSettingStrings
|
|
320
321
|
} from "./chunk-Z4X5MTRT.js";
|
|
321
|
-
import "./chunk-
|
|
322
|
+
import "./chunk-E4ZBKMSF.js";
|
|
322
323
|
import {
|
|
323
324
|
requestConsentInteractive,
|
|
324
325
|
requestConsentOrFail
|
|
325
|
-
} from "./chunk-
|
|
326
|
+
} from "./chunk-QQWD7LZV.js";
|
|
326
327
|
import "./chunk-57OAHC2Y.js";
|
|
327
328
|
import {
|
|
328
329
|
createLoadedSettingsAdapter
|
|
329
|
-
} from "./chunk-
|
|
330
|
+
} from "./chunk-WV5J6Q6N.js";
|
|
330
331
|
import {
|
|
331
332
|
getExtendedSystemInfo
|
|
332
|
-
} from "./chunk-
|
|
333
|
+
} from "./chunk-3SE7J4DR.js";
|
|
333
334
|
import {
|
|
334
335
|
formatDuration,
|
|
335
336
|
formatRelativeTime,
|
|
@@ -337,26 +338,26 @@ import {
|
|
|
337
338
|
} from "./chunk-3SH53ANB.js";
|
|
338
339
|
import "./chunk-MZSJ43WV.js";
|
|
339
340
|
import "./chunk-XCGIMOLN.js";
|
|
340
|
-
import "./chunk-
|
|
341
|
-
import "./chunk-
|
|
342
|
-
import "./chunk-
|
|
341
|
+
import "./chunk-QXVSWG66.js";
|
|
342
|
+
import "./chunk-KJZ26VBX.js";
|
|
343
|
+
import "./chunk-NGYI5EF5.js";
|
|
343
344
|
import "./chunk-V6WHFGST.js";
|
|
344
345
|
import "./chunk-DP3IHZGG.js";
|
|
345
346
|
import "./chunk-6PLDPT2C.js";
|
|
346
347
|
import "./chunk-FYJ7W2PI.js";
|
|
347
348
|
import "./chunk-YP5KH5Y7.js";
|
|
348
|
-
import "./chunk-
|
|
349
|
+
import "./chunk-UFALT4LK.js";
|
|
349
350
|
import "./chunk-ALMR3E6Q.js";
|
|
350
351
|
import "./chunk-HIBNSEJE.js";
|
|
351
352
|
import "./chunk-BKHCW2BI.js";
|
|
352
353
|
import "./chunk-M5GB774H.js";
|
|
353
354
|
import "./chunk-UVX4Y6IN.js";
|
|
354
|
-
import "./chunk-
|
|
355
|
-
import "./chunk-
|
|
355
|
+
import "./chunk-ZWBUH5UP.js";
|
|
356
|
+
import "./chunk-DIWZNWZT.js";
|
|
356
357
|
import "./chunk-UDXSXLER.js";
|
|
357
358
|
import {
|
|
358
359
|
loadMcpApprovals
|
|
359
|
-
} from "./chunk-
|
|
360
|
+
} from "./chunk-Y4TETC74.js";
|
|
360
361
|
import {
|
|
361
362
|
CORRUPTED_SUFFIX,
|
|
362
363
|
SettingScope,
|
|
@@ -379,7 +380,7 @@ import {
|
|
|
379
380
|
settingExistsInScope,
|
|
380
381
|
validateSettingValue,
|
|
381
382
|
writeOutputLanguageAndRegisterPath
|
|
382
|
-
} from "./chunk-
|
|
383
|
+
} from "./chunk-OHKJVAKG.js";
|
|
383
384
|
import "./chunk-RKUWKYED.js";
|
|
384
385
|
import "./chunk-GOXKNSDZ.js";
|
|
385
386
|
import "./chunk-IDS7MSUP.js";
|
|
@@ -388,21 +389,21 @@ import {
|
|
|
388
389
|
localizeToolDisplayName,
|
|
389
390
|
t,
|
|
390
391
|
ta
|
|
391
|
-
} from "./chunk-
|
|
392
|
-
import "./chunk-
|
|
393
|
-
import "./chunk-
|
|
394
|
-
import "./chunk-
|
|
392
|
+
} from "./chunk-PG62DFWD.js";
|
|
393
|
+
import "./chunk-B52AWKBB.js";
|
|
394
|
+
import "./chunk-UA5H3DS2.js";
|
|
395
|
+
import "./chunk-IUQ52YJK.js";
|
|
395
396
|
import {
|
|
396
397
|
getCliVersion
|
|
397
|
-
} from "./chunk-
|
|
398
|
+
} from "./chunk-FN6YXJOP.js";
|
|
398
399
|
import "./chunk-VJNBRRZG.js";
|
|
399
400
|
import {
|
|
400
401
|
isWorkspaceTrusted,
|
|
401
402
|
loadTrustedFolders
|
|
402
|
-
} from "./chunk-
|
|
403
|
+
} from "./chunk-HA3SAB64.js";
|
|
403
404
|
import {
|
|
404
405
|
require_strip_json_comments
|
|
405
|
-
} from "./chunk-
|
|
406
|
+
} from "./chunk-NPQ5ZKRP.js";
|
|
406
407
|
import "./chunk-MR3PXB6E.js";
|
|
407
408
|
import "./chunk-XFSFZCM5.js";
|
|
408
409
|
import "./chunk-URK542T4.js";
|
|
@@ -452,6 +453,7 @@ import {
|
|
|
452
453
|
createInstructionsLoadedCallback,
|
|
453
454
|
customProvider,
|
|
454
455
|
detectAutonomousSentinel,
|
|
456
|
+
didWriteProjectContextFile,
|
|
455
457
|
fetchGitDiff,
|
|
456
458
|
fetchGitDiffHunks,
|
|
457
459
|
finalizeToolResponses,
|
|
@@ -474,14 +476,17 @@ import {
|
|
|
474
476
|
getWelcomeBackState,
|
|
475
477
|
glob,
|
|
476
478
|
ideContextStore,
|
|
479
|
+
isActiveWorkflowStatus,
|
|
477
480
|
isBinary,
|
|
478
481
|
isEditorAvailable,
|
|
479
482
|
isExtensionCommittedWithWarningsError,
|
|
480
483
|
isGatedMcpScope,
|
|
481
484
|
isSessionRuntimeActive,
|
|
482
485
|
isSettledStatus,
|
|
486
|
+
isSignalTermination,
|
|
483
487
|
isSuccessStatus,
|
|
484
488
|
isTerminalStatus,
|
|
489
|
+
isTerminalWorkflowStatus,
|
|
485
490
|
loadUsageHistory,
|
|
486
491
|
markDuplicateProviderToolCallResponseSent,
|
|
487
492
|
matchesAnyServerPattern,
|
|
@@ -495,6 +500,7 @@ import {
|
|
|
495
500
|
readWorktreeSessionMarker,
|
|
496
501
|
redactUrlCredentials,
|
|
497
502
|
refreshMemoryAfterManagedWrite,
|
|
503
|
+
refreshMemoryInstruction,
|
|
498
504
|
resolveBaseUrl,
|
|
499
505
|
resolveBranchName,
|
|
500
506
|
resolveMetadataKey,
|
|
@@ -508,23 +514,23 @@ import {
|
|
|
508
514
|
validateWorkflowName,
|
|
509
515
|
watchRepoBranch,
|
|
510
516
|
writeRuntimeStatus
|
|
511
|
-
} from "./chunk-
|
|
517
|
+
} from "./chunk-GXSNGY5M.js";
|
|
512
518
|
import "./chunk-GOFAQQZA.js";
|
|
513
519
|
import "./chunk-5M6IDOMF.js";
|
|
514
520
|
import "./chunk-TWPJO254.js";
|
|
515
521
|
import "./chunk-H6XPXXMH.js";
|
|
516
|
-
import "./chunk-
|
|
522
|
+
import "./chunk-2UUMVNYT.js";
|
|
517
523
|
import "./chunk-MVUQRLOH.js";
|
|
518
524
|
import "./chunk-XCWO3SMQ.js";
|
|
519
525
|
import "./chunk-7MH4J33A.js";
|
|
520
526
|
import "./chunk-6PVPNMXU.js";
|
|
521
527
|
import {
|
|
522
528
|
resolveModelId
|
|
523
|
-
} from "./chunk-
|
|
529
|
+
} from "./chunk-VXZ5HAOV.js";
|
|
524
530
|
import "./chunk-IRH27ZC2.js";
|
|
525
531
|
import "./chunk-QHWCP53L.js";
|
|
526
532
|
import "./chunk-GNPNYXJB.js";
|
|
527
|
-
import "./chunk-
|
|
533
|
+
import "./chunk-HUWENAHO.js";
|
|
528
534
|
import {
|
|
529
535
|
promptIdContext
|
|
530
536
|
} from "./chunk-O6GEWCJA.js";
|
|
@@ -537,36 +543,44 @@ import {
|
|
|
537
543
|
HOOKS_CONFIG_FIELDS
|
|
538
544
|
} from "./chunk-GM463R2B.js";
|
|
539
545
|
import "./chunk-SEZ556DZ.js";
|
|
540
|
-
import "./chunk-
|
|
546
|
+
import "./chunk-2FRY5CRX.js";
|
|
541
547
|
import {
|
|
542
548
|
elapsedActiveTime,
|
|
543
549
|
goalRequiresExactPermit
|
|
544
|
-
} from "./chunk-
|
|
550
|
+
} from "./chunk-67N6HB5H.js";
|
|
551
|
+
import {
|
|
552
|
+
APPROVAL_MODES
|
|
553
|
+
} from "./chunk-WAUGQKUU.js";
|
|
554
|
+
import "./chunk-PLFATELK.js";
|
|
555
|
+
import "./chunk-L4N6TIP7.js";
|
|
556
|
+
import "./chunk-SAH4BD2J.js";
|
|
545
557
|
import {
|
|
546
|
-
APPROVAL_MODES,
|
|
547
558
|
runOutsideAgentContext
|
|
548
|
-
} from "./chunk-
|
|
559
|
+
} from "./chunk-CPG6P4GG.js";
|
|
549
560
|
import "./chunk-S6LOFUVP.js";
|
|
561
|
+
import "./chunk-2J3OJGTL.js";
|
|
550
562
|
import {
|
|
551
563
|
getStartupContextLength,
|
|
552
564
|
isSystemReminderContent
|
|
553
|
-
} from "./chunk-
|
|
565
|
+
} from "./chunk-IA7TGCN2.js";
|
|
554
566
|
import "./chunk-K623ENWT.js";
|
|
555
567
|
import "./chunk-AQ37AY7B.js";
|
|
556
568
|
import {
|
|
557
569
|
isPathWithinRoot
|
|
558
570
|
} from "./chunk-EQL65XGA.js";
|
|
559
|
-
import "./chunk-IIJEYBNH.js";
|
|
560
571
|
import {
|
|
561
572
|
osc8Hyperlink,
|
|
562
573
|
qwenOAuth2Events,
|
|
563
574
|
sanitizeForOsc,
|
|
564
575
|
supportsHyperlinks,
|
|
565
576
|
wrapForMultiplexer
|
|
566
|
-
} from "./chunk-
|
|
577
|
+
} from "./chunk-3P2LV43B.js";
|
|
567
578
|
import "./chunk-NAVJD2PQ.js";
|
|
568
|
-
import "./chunk-
|
|
569
|
-
import "./chunk-
|
|
579
|
+
import "./chunk-HV76SFIA.js";
|
|
580
|
+
import "./chunk-4PYCZH2V.js";
|
|
581
|
+
import "./chunk-P3QQPMQA.js";
|
|
582
|
+
import "./chunk-SR7RZ4MS.js";
|
|
583
|
+
import "./chunk-M6HMMKVG.js";
|
|
570
584
|
import {
|
|
571
585
|
REASONING_EFFORT_TIERS
|
|
572
586
|
} from "./chunk-DGEIYUC3.js";
|
|
@@ -575,13 +589,8 @@ import {
|
|
|
575
589
|
isSupportedImageMimeType
|
|
576
590
|
} from "./chunk-MPHPFVKK.js";
|
|
577
591
|
import "./chunk-AXMWHKXA.js";
|
|
578
|
-
import "./chunk-DJ2GSRLV.js";
|
|
579
|
-
import "./chunk-33ACCIIY.js";
|
|
580
|
-
import "./chunk-L4N6TIP7.js";
|
|
581
|
-
import "./chunk-2J3OJGTL.js";
|
|
582
|
-
import "./chunk-P3QQPMQA.js";
|
|
583
|
-
import "./chunk-M6HMMKVG.js";
|
|
584
592
|
import "./chunk-GLCZKT5V.js";
|
|
593
|
+
import "./chunk-DJ2GSRLV.js";
|
|
585
594
|
import "./chunk-EI3HZX6C.js";
|
|
586
595
|
import {
|
|
587
596
|
ApiCancelEvent,
|
|
@@ -619,11 +628,10 @@ import {
|
|
|
619
628
|
recordSkillInvocation,
|
|
620
629
|
removeMCPServerStatus,
|
|
621
630
|
removeMCPStatusChangeListener,
|
|
622
|
-
runSideQuery,
|
|
623
631
|
runVisionBridge,
|
|
624
632
|
shouldRunVisionBridge,
|
|
625
633
|
splitImageParts
|
|
626
|
-
} from "./chunk-
|
|
634
|
+
} from "./chunk-3PY4LPJF.js";
|
|
627
635
|
import "./chunk-WOJZWRAZ.js";
|
|
628
636
|
import "./chunk-VGC4I5JJ.js";
|
|
629
637
|
import {
|
|
@@ -633,14 +641,18 @@ import {
|
|
|
633
641
|
getUserAutoMemoryRoot,
|
|
634
642
|
isAnyAutoMemPath
|
|
635
643
|
} from "./chunk-FVKHVJZQ.js";
|
|
636
|
-
import
|
|
644
|
+
import {
|
|
645
|
+
runSideQuery
|
|
646
|
+
} from "./chunk-COBO5EBO.js";
|
|
647
|
+
import "./chunk-6ZRFAKXK.js";
|
|
637
648
|
import {
|
|
638
649
|
ToolNames,
|
|
639
650
|
isShellProgressData
|
|
640
|
-
} from "./chunk-
|
|
651
|
+
} from "./chunk-PYQADEFD.js";
|
|
652
|
+
import "./chunk-M3STHEMM.js";
|
|
641
653
|
import {
|
|
642
654
|
MAINLINE_CODER_MODEL
|
|
643
|
-
} from "./chunk-
|
|
655
|
+
} from "./chunk-F6WFNA7U.js";
|
|
644
656
|
import "./chunk-46UV252V.js";
|
|
645
657
|
import {
|
|
646
658
|
DEFAULT_TOKEN_LIMIT
|
|
@@ -666,7 +678,7 @@ import {
|
|
|
666
678
|
tildeifyPath
|
|
667
679
|
} from "./chunk-OIVKILPI.js";
|
|
668
680
|
import "./chunk-VOQXFAY5.js";
|
|
669
|
-
import "./chunk-
|
|
681
|
+
import "./chunk-BF52U4XJ.js";
|
|
670
682
|
import {
|
|
671
683
|
finalizeStartupProfile,
|
|
672
684
|
profileCheckpoint
|
|
@@ -675,11 +687,12 @@ import "./chunk-Q7YDKOGY.js";
|
|
|
675
687
|
import {
|
|
676
688
|
registerCleanup,
|
|
677
689
|
runExitCleanup
|
|
678
|
-
} from "./chunk-
|
|
690
|
+
} from "./chunk-6TR7CFXH.js";
|
|
679
691
|
import {
|
|
680
692
|
clearScreen,
|
|
681
693
|
writeStderrLine,
|
|
682
|
-
writeStderrLineSafe
|
|
694
|
+
writeStderrLineSafe,
|
|
695
|
+
writeStdoutLine
|
|
683
696
|
} from "./chunk-KGJGEEVR.js";
|
|
684
697
|
import "./chunk-75DOP5OR.js";
|
|
685
698
|
import "./chunk-DMTGGOSA.js";
|
|
@@ -701,6 +714,7 @@ import {
|
|
|
701
714
|
|
|
702
715
|
// packages/cli/src/ui/startInteractiveUI.tsx
|
|
703
716
|
init_esbuild_shims();
|
|
717
|
+
import { stat as stat2 } from "node:fs/promises";
|
|
704
718
|
import { basename as basename4 } from "node:path";
|
|
705
719
|
var import_react163 = __toESM(require_react(), 1);
|
|
706
720
|
|
|
@@ -1081,8 +1095,8 @@ var RemoteInputWatcher = class {
|
|
|
1081
1095
|
}
|
|
1082
1096
|
startWatching() {
|
|
1083
1097
|
try {
|
|
1084
|
-
const
|
|
1085
|
-
this.bytesRead =
|
|
1098
|
+
const stat3 = statSync(this.filePath);
|
|
1099
|
+
this.bytesRead = stat3.size;
|
|
1086
1100
|
this.consumedPrefixHash = this.hashFilePrefix(this.bytesRead);
|
|
1087
1101
|
} catch {
|
|
1088
1102
|
this.bytesRead = 0;
|
|
@@ -1107,8 +1121,8 @@ var RemoteInputWatcher = class {
|
|
|
1107
1121
|
if (!this.active || this.reading) return Promise.resolve();
|
|
1108
1122
|
let currentSize;
|
|
1109
1123
|
try {
|
|
1110
|
-
const
|
|
1111
|
-
currentSize =
|
|
1124
|
+
const stat3 = statSync(this.filePath);
|
|
1125
|
+
currentSize = stat3.size;
|
|
1112
1126
|
} catch {
|
|
1113
1127
|
return Promise.resolve();
|
|
1114
1128
|
}
|
|
@@ -1692,19 +1706,19 @@ function readArtFile(absolutePath) {
|
|
|
1692
1706
|
}
|
|
1693
1707
|
const flags = typeof fs.constants.O_NOFOLLOW === "number" ? fs.constants.O_RDONLY | fs.constants.O_NOFOLLOW : fs.constants.O_RDONLY;
|
|
1694
1708
|
fd = fs.openSync(absolutePath, flags);
|
|
1695
|
-
const
|
|
1696
|
-
if (!
|
|
1709
|
+
const stat3 = fs.fstatSync(fd);
|
|
1710
|
+
if (!stat3.isFile()) {
|
|
1697
1711
|
debugLogger3.warn(
|
|
1698
1712
|
`Ignoring ui.customAsciiArt: ${absolutePath} is not a regular file.`
|
|
1699
1713
|
);
|
|
1700
1714
|
return void 0;
|
|
1701
1715
|
}
|
|
1702
|
-
const size = Math.min(
|
|
1716
|
+
const size = Math.min(stat3.size, MAX_FILE_BYTES);
|
|
1703
1717
|
const buffer = Buffer.alloc(size);
|
|
1704
1718
|
fs.readSync(fd, buffer, 0, size, 0);
|
|
1705
|
-
if (
|
|
1719
|
+
if (stat3.size > MAX_FILE_BYTES) {
|
|
1706
1720
|
debugLogger3.warn(
|
|
1707
|
-
`Truncated ui.customAsciiArt at ${absolutePath}: file is ${
|
|
1721
|
+
`Truncated ui.customAsciiArt at ${absolutePath}: file is ${stat3.size} bytes, capped at ${MAX_FILE_BYTES}.`
|
|
1708
1722
|
);
|
|
1709
1723
|
}
|
|
1710
1724
|
return buffer.toString("utf8");
|
|
@@ -2507,6 +2521,14 @@ function findLastLE(arr, target) {
|
|
|
2507
2521
|
return upperBound(arr, target) - 1;
|
|
2508
2522
|
}
|
|
2509
2523
|
__name(findLastLE, "findLastLE");
|
|
2524
|
+
function firstIndexOfOffsetRun(offsets, index) {
|
|
2525
|
+
let i = index;
|
|
2526
|
+
while (i > 0 && offsets[i - 1] === offsets[i]) {
|
|
2527
|
+
i--;
|
|
2528
|
+
}
|
|
2529
|
+
return i;
|
|
2530
|
+
}
|
|
2531
|
+
__name(firstIndexOfOffsetRun, "firstIndexOfOffsetRun");
|
|
2510
2532
|
var VirtualizedListItem = (0, import_react10.memo)(
|
|
2511
2533
|
({
|
|
2512
2534
|
content,
|
|
@@ -2523,10 +2545,11 @@ var VirtualizedListItem = (0, import_react10.memo)(
|
|
|
2523
2545
|
const onHeightChangeRef = (0, import_react10.useRef)(onHeightChange);
|
|
2524
2546
|
onHeightChangeRef.current = onHeightChange;
|
|
2525
2547
|
(0, import_react10.useLayoutEffect)(() => {
|
|
2526
|
-
|
|
2527
|
-
|
|
2548
|
+
const measuredHeight = itemRef.current?.yogaNode?.getComputedHeight() ?? height;
|
|
2549
|
+
if (hasMeasured) {
|
|
2550
|
+
onHeightChangeRef.current(itemKey, measuredHeight);
|
|
2528
2551
|
}
|
|
2529
|
-
}, [itemKey, height, hasMeasured]);
|
|
2552
|
+
}, [itemKey, height, hasMeasured, content]);
|
|
2530
2553
|
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Box_default, { width: "100%", flexDirection: "column", flexShrink: 0, ref: itemRef, children: shouldBeStatic ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
2531
2554
|
StaticRender,
|
|
2532
2555
|
{
|
|
@@ -2582,12 +2605,28 @@ function VirtualizedList(props, ref) {
|
|
|
2582
2605
|
const containerHeight = props.containerHeight ?? measuredContainerHeight;
|
|
2583
2606
|
const containerWidth = measuredContainerWidth;
|
|
2584
2607
|
const [heights, setHeights] = (0, import_react10.useState)({});
|
|
2608
|
+
const measureAtFullHeight = props.measureAtFullHeight === true;
|
|
2609
|
+
const [fullHeightMeasurementPending, setFullHeightMeasurementPending] = (0, import_react10.useState)(measureAtFullHeight);
|
|
2610
|
+
const [previousMeasurementInputs, setPreviousMeasurementInputs] = (0, import_react10.useState)({
|
|
2611
|
+
enabled: measureAtFullHeight,
|
|
2612
|
+
data,
|
|
2613
|
+
renderItem
|
|
2614
|
+
});
|
|
2615
|
+
if (previousMeasurementInputs.enabled !== measureAtFullHeight || measureAtFullHeight && (previousMeasurementInputs.data !== data || previousMeasurementInputs.renderItem !== renderItem)) {
|
|
2616
|
+
setPreviousMeasurementInputs({
|
|
2617
|
+
enabled: measureAtFullHeight,
|
|
2618
|
+
data,
|
|
2619
|
+
renderItem
|
|
2620
|
+
});
|
|
2621
|
+
setFullHeightMeasurementPending(measureAtFullHeight);
|
|
2622
|
+
}
|
|
2585
2623
|
const isInitialScrollSet = (0, import_react10.useRef)(false);
|
|
2586
2624
|
const onHeightChange = (0, import_react10.useCallback)((key, height) => {
|
|
2587
2625
|
setHeights((prev) => {
|
|
2588
2626
|
if (prev[key] === height) return prev;
|
|
2589
2627
|
return { ...prev, [key]: height };
|
|
2590
2628
|
});
|
|
2629
|
+
setFullHeightMeasurementPending(false);
|
|
2591
2630
|
}, []);
|
|
2592
2631
|
(0, import_react10.useLayoutEffect)(() => {
|
|
2593
2632
|
setHeights((prev) => {
|
|
@@ -2627,10 +2666,11 @@ function VirtualizedList(props, ref) {
|
|
|
2627
2666
|
const scrollableContainerHeight = containerHeight;
|
|
2628
2667
|
const getAnchorForScrollTop = (0, import_react10.useCallback)(
|
|
2629
2668
|
(scrollTop2, offsets2) => {
|
|
2630
|
-
const
|
|
2631
|
-
if (
|
|
2669
|
+
const found = findLastLE(offsets2, scrollTop2);
|
|
2670
|
+
if (found === -1) {
|
|
2632
2671
|
return { index: 0, offset: 0 };
|
|
2633
2672
|
}
|
|
2673
|
+
const index = firstIndexOfOffsetRun(offsets2, found);
|
|
2634
2674
|
return { index, offset: scrollTop2 - offsets2[index] };
|
|
2635
2675
|
},
|
|
2636
2676
|
[]
|
|
@@ -2638,7 +2678,7 @@ function VirtualizedList(props, ref) {
|
|
|
2638
2678
|
const [prevTargetScrollIndex, setPrevTargetScrollIndex] = (0, import_react10.useState)(
|
|
2639
2679
|
props.targetScrollIndex
|
|
2640
2680
|
);
|
|
2641
|
-
const prevOffsetsLength = (0, import_react10.useRef)(
|
|
2681
|
+
const prevOffsetsLength = (0, import_react10.useRef)(1);
|
|
2642
2682
|
const target = props.targetScrollIndex;
|
|
2643
2683
|
if (target !== void 0 && offsets.length > 1) {
|
|
2644
2684
|
const targetChanged = target !== prevTargetScrollIndex;
|
|
@@ -2650,8 +2690,12 @@ function VirtualizedList(props, ref) {
|
|
|
2650
2690
|
if (isStickingToBottom) {
|
|
2651
2691
|
setIsStickingToBottom(false);
|
|
2652
2692
|
}
|
|
2653
|
-
|
|
2654
|
-
|
|
2693
|
+
const anchoredIndex = firstIndexOfOffsetRun(
|
|
2694
|
+
offsets,
|
|
2695
|
+
Math.max(0, Math.min(data.length - 1, target))
|
|
2696
|
+
);
|
|
2697
|
+
if (scrollAnchor.index !== anchoredIndex || scrollAnchor.offset !== 0) {
|
|
2698
|
+
setScrollAnchor({ index: anchoredIndex, offset: 0 });
|
|
2655
2699
|
}
|
|
2656
2700
|
}
|
|
2657
2701
|
}
|
|
@@ -2771,11 +2815,19 @@ function VirtualizedList(props, ref) {
|
|
|
2771
2815
|
heights,
|
|
2772
2816
|
props.targetScrollIndex
|
|
2773
2817
|
]);
|
|
2774
|
-
const
|
|
2818
|
+
const maxScroll = Math.max(0, totalHeight - scrollableContainerHeight);
|
|
2819
|
+
const clampedScrollTop = Math.min(
|
|
2820
|
+
Math.max(0, isStickingToBottom ? maxScroll : actualScrollTop),
|
|
2821
|
+
maxScroll
|
|
2822
|
+
);
|
|
2823
|
+
const startIndex = firstIndexOfOffsetRun(
|
|
2824
|
+
offsets,
|
|
2825
|
+
Math.max(0, findLastLE(offsets, clampedScrollTop) - 1)
|
|
2826
|
+
);
|
|
2775
2827
|
const viewHeightForEndIndex = scrollableContainerHeight > 0 ? scrollableContainerHeight : 50;
|
|
2776
2828
|
const endIndexOffsetRaw = upperBound(
|
|
2777
2829
|
offsets,
|
|
2778
|
-
|
|
2830
|
+
clampedScrollTop + viewHeightForEndIndex
|
|
2779
2831
|
);
|
|
2780
2832
|
const endIndex = endIndexOffsetRaw >= offsets.length ? data.length - 1 : Math.min(data.length - 1, endIndexOffsetRaw);
|
|
2781
2833
|
const topSpacerHeight = renderStatic === true ? 0 : offsets[startIndex] ?? 0;
|
|
@@ -2839,11 +2891,6 @@ function VirtualizedList(props, ref) {
|
|
|
2839
2891
|
onHeightChange
|
|
2840
2892
|
]);
|
|
2841
2893
|
const { getScrollTop, setPendingScrollTop } = useBatchedScroll(scrollTop);
|
|
2842
|
-
const maxScroll = Math.max(0, totalHeight - scrollableContainerHeight);
|
|
2843
|
-
const clampedScrollTop = Math.min(
|
|
2844
|
-
Math.max(0, isStickingToBottom ? maxScroll : actualScrollTop),
|
|
2845
|
-
maxScroll
|
|
2846
|
-
);
|
|
2847
2894
|
const getScrollbarGeometry = (0, import_react10.useCallback)(() => {
|
|
2848
2895
|
const shouldShowScrollbar = (props.showScrollbar ?? true) && maxScroll > 0;
|
|
2849
2896
|
if (!shouldShowScrollbar || !rootRef.current || scrollableContainerHeight <= 0) {
|
|
@@ -3065,7 +3112,7 @@ function VirtualizedList(props, ref) {
|
|
|
3065
3112
|
maxScroll,
|
|
3066
3113
|
scrollbarThumbActive
|
|
3067
3114
|
]);
|
|
3068
|
-
const rootHeight = props.containerHeight !== void 0 ? Math.min(props.containerHeight, totalHeight) : "100%";
|
|
3115
|
+
const rootHeight = props.containerHeight !== void 0 ? fullHeightMeasurementPending ? props.containerHeight : Math.min(props.containerHeight, totalHeight) : "100%";
|
|
3069
3116
|
return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Box_default, { ref: rootRef, width: "100%", height: rootHeight, flexDirection: "row", children: [
|
|
3070
3117
|
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
3071
3118
|
Box_default,
|
|
@@ -3863,17 +3910,19 @@ var MainContent = /* @__PURE__ */ __name(() => {
|
|
|
3863
3910
|
const pendingStateRef = (0, import_react14.useRef)({
|
|
3864
3911
|
activePtyId: uiState.activePtyId,
|
|
3865
3912
|
embeddedShellFocused: uiState.embeddedShellFocused,
|
|
3866
|
-
isEditorDialogOpen: uiState.isEditorDialogOpen
|
|
3867
|
-
constrainHeight: uiState.constrainHeight,
|
|
3868
|
-
availableTerminalHeight
|
|
3913
|
+
isEditorDialogOpen: uiState.isEditorDialogOpen
|
|
3869
3914
|
});
|
|
3870
3915
|
pendingStateRef.current = {
|
|
3871
3916
|
activePtyId: uiState.activePtyId,
|
|
3872
3917
|
embeddedShellFocused: uiState.embeddedShellFocused,
|
|
3873
|
-
isEditorDialogOpen: uiState.isEditorDialogOpen
|
|
3874
|
-
constrainHeight: uiState.constrainHeight,
|
|
3875
|
-
availableTerminalHeight
|
|
3918
|
+
isEditorDialogOpen: uiState.isEditorDialogOpen
|
|
3876
3919
|
};
|
|
3920
|
+
const pendingAvailableTerminalHeight = pendingHistoryItems.length > 0 && uiState.constrainHeight ? availableTerminalHeight : void 0;
|
|
3921
|
+
const hasPendingPlainTextConfirmation = pendingHistoryItems.some(
|
|
3922
|
+
(item) => item.type === "tool_group" && item.tools.some(
|
|
3923
|
+
(tool) => tool.status === "Confirming" /* Confirming */ && tool.confirmationDetails?.type === "info" && tool.confirmationDetails.renderPromptAsPlainText === true
|
|
3924
|
+
)
|
|
3925
|
+
);
|
|
3877
3926
|
const pendingSourceCopyOffsetsRef = (0, import_react14.useRef)(pendingSourceCopyOffsetsByIndex);
|
|
3878
3927
|
pendingSourceCopyOffsetsRef.current = pendingSourceCopyOffsetsByIndex;
|
|
3879
3928
|
const renderVirtualItem = (0, import_react14.useCallback)(
|
|
@@ -3894,7 +3943,7 @@ var MainContent = /* @__PURE__ */ __name(() => {
|
|
|
3894
3943
|
{
|
|
3895
3944
|
terminalWidth,
|
|
3896
3945
|
mainAreaWidth,
|
|
3897
|
-
availableTerminalHeight:
|
|
3946
|
+
availableTerminalHeight: pendingAvailableTerminalHeight,
|
|
3898
3947
|
item: { ...item, id: 0 },
|
|
3899
3948
|
isPending: true,
|
|
3900
3949
|
isFocused: !ps.isEditorDialogOpen,
|
|
@@ -3929,7 +3978,8 @@ var MainContent = /* @__PURE__ */ __name(() => {
|
|
|
3929
3978
|
staticAreaMaxItemHeight,
|
|
3930
3979
|
uiState.slashCommands,
|
|
3931
3980
|
sourceCopyOffsetsByHistoryItem,
|
|
3932
|
-
fullDetail
|
|
3981
|
+
fullDetail,
|
|
3982
|
+
pendingAvailableTerminalHeight
|
|
3933
3983
|
]
|
|
3934
3984
|
);
|
|
3935
3985
|
if (useVirtualScroll) {
|
|
@@ -3950,6 +4000,7 @@ var MainContent = /* @__PURE__ */ __name(() => {
|
|
|
3950
4000
|
initialScrollIndex: allVirtualItems.length <= 1 ? 0 : SCROLL_TO_ITEM_END,
|
|
3951
4001
|
isStaticItem: virtualIsStaticItem,
|
|
3952
4002
|
containerHeight: scrollContainerHeight,
|
|
4003
|
+
measureAtFullHeight: hasPendingPlainTextConfirmation,
|
|
3953
4004
|
showScrollbar
|
|
3954
4005
|
}
|
|
3955
4006
|
),
|
|
@@ -10159,7 +10210,7 @@ function TrustDialog({
|
|
|
10159
10210
|
"Current Level: ",
|
|
10160
10211
|
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Text, { bold: true, children: currentTrustLevel || "Not Set" })
|
|
10161
10212
|
] }),
|
|
10162
|
-
isInheritedTrustFromParent && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Text, { color: theme.text.secondary, children: "Note: This folder
|
|
10213
|
+
isInheritedTrustFromParent && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Text, { color: theme.text.secondary, children: "Note: This folder currently inherits trust from a parent folder. A more-specific trust rule here can override that decision." }),
|
|
10163
10214
|
isInheritedTrustFromIde && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Text, { color: theme.text.secondary, children: "Note: This folder behaves as a trusted folder because the connected IDE workspace is trusted. It will remain trusted even if you set a different trust level here." })
|
|
10164
10215
|
] }),
|
|
10165
10216
|
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
@@ -22866,8 +22917,8 @@ __name(statusGlyph, "statusGlyph");
|
|
|
22866
22917
|
// packages/cli/src/ui/hooks/useBackgroundTaskView.ts
|
|
22867
22918
|
var MAX_RETAINED_TERMINAL_DREAMS = 3;
|
|
22868
22919
|
function compareActiveThenTerminal(a, b) {
|
|
22869
|
-
const aActive = a.status === "running" || a.status === "paused";
|
|
22870
|
-
const bActive = b.status === "running" || b.status === "paused";
|
|
22920
|
+
const aActive = a.status === "running" || a.status === "pausing" || a.status === "paused";
|
|
22921
|
+
const bActive = b.status === "running" || b.status === "pausing" || b.status === "paused";
|
|
22871
22922
|
if (aActive !== bActive) return aActive ? -1 : 1;
|
|
22872
22923
|
if (aActive) return b.startTime - a.startTime;
|
|
22873
22924
|
return (b.endTime ?? b.startTime) - (a.endTime ?? a.startTime);
|
|
@@ -23007,6 +23058,7 @@ var DEFAULT_ACTIONS = {
|
|
|
23007
23058
|
cancelSelected: noop,
|
|
23008
23059
|
resumeSelected: /* @__PURE__ */ __name(async () => {
|
|
23009
23060
|
}, "resumeSelected"),
|
|
23061
|
+
toggleSelectedWorkflowPause: /* @__PURE__ */ __name(() => null, "toggleSelectedWorkflowPause"),
|
|
23010
23062
|
setPillFocused: noop,
|
|
23011
23063
|
setLivePanelFocused: noop,
|
|
23012
23064
|
setLivePanelSelectedIndex: noop,
|
|
@@ -23124,6 +23176,18 @@ function BackgroundTaskViewProvider({
|
|
|
23124
23176
|
}
|
|
23125
23177
|
await config.resumeBackgroundAgent(target.agentId);
|
|
23126
23178
|
}, [config, entries, selectedIndex]);
|
|
23179
|
+
const toggleSelectedWorkflowPause = (0, import_react75.useCallback)(() => {
|
|
23180
|
+
if (!config) return null;
|
|
23181
|
+
const target = entries[selectedIndex];
|
|
23182
|
+
if (!target || target.kind !== "workflow" || !target.isBackgrounded) {
|
|
23183
|
+
return null;
|
|
23184
|
+
}
|
|
23185
|
+
const registry = config.getWorkflowRunRegistry();
|
|
23186
|
+
if (target.status === "running") return registry.pause(target.runId);
|
|
23187
|
+
if (target.status === "paused") return registry.resume(target.runId);
|
|
23188
|
+
if (target.status === "pausing") return registry.pause(target.runId);
|
|
23189
|
+
return null;
|
|
23190
|
+
}, [config, entries, selectedIndex]);
|
|
23127
23191
|
const state = (0, import_react75.useMemo)(
|
|
23128
23192
|
() => ({
|
|
23129
23193
|
entries,
|
|
@@ -23155,6 +23219,7 @@ function BackgroundTaskViewProvider({
|
|
|
23155
23219
|
exitDetail,
|
|
23156
23220
|
cancelSelected,
|
|
23157
23221
|
resumeSelected,
|
|
23222
|
+
toggleSelectedWorkflowPause,
|
|
23158
23223
|
setPillFocused,
|
|
23159
23224
|
setLivePanelFocused,
|
|
23160
23225
|
setLivePanelSelectedIndex,
|
|
@@ -23170,6 +23235,7 @@ function BackgroundTaskViewProvider({
|
|
|
23170
23235
|
exitDetail,
|
|
23171
23236
|
cancelSelected,
|
|
23172
23237
|
resumeSelected,
|
|
23238
|
+
toggleSelectedWorkflowPause,
|
|
23173
23239
|
setPillFocused,
|
|
23174
23240
|
setLivePanelFocused,
|
|
23175
23241
|
setLivePanelSelectedIndex,
|
|
@@ -23343,6 +23409,8 @@ function statusVerb(status) {
|
|
|
23343
23409
|
switch (status) {
|
|
23344
23410
|
case "running":
|
|
23345
23411
|
return t("Running");
|
|
23412
|
+
case "pausing":
|
|
23413
|
+
return t("Pausing");
|
|
23346
23414
|
case "paused":
|
|
23347
23415
|
return t("Paused");
|
|
23348
23416
|
case "completed":
|
|
@@ -23385,8 +23453,14 @@ function formatDreamRowLabel(entry) {
|
|
|
23385
23453
|
});
|
|
23386
23454
|
}
|
|
23387
23455
|
__name(formatDreamRowLabel, "formatDreamRowLabel");
|
|
23388
|
-
function
|
|
23456
|
+
function statusPresentation(status) {
|
|
23389
23457
|
switch (status) {
|
|
23458
|
+
case "pausing":
|
|
23459
|
+
return {
|
|
23460
|
+
icon: "\u2026",
|
|
23461
|
+
color: theme.status.warning,
|
|
23462
|
+
labelColor: theme.status.warningDim
|
|
23463
|
+
};
|
|
23390
23464
|
case "paused":
|
|
23391
23465
|
return {
|
|
23392
23466
|
icon: "\u23F8",
|
|
@@ -23415,7 +23489,23 @@ function terminalStatusPresentation(status) {
|
|
|
23415
23489
|
return null;
|
|
23416
23490
|
}
|
|
23417
23491
|
}
|
|
23418
|
-
__name(
|
|
23492
|
+
__name(statusPresentation, "statusPresentation");
|
|
23493
|
+
function isStoppableEntry(entry) {
|
|
23494
|
+
return entry.status === "running" || entry.kind === "workflow" && isActiveWorkflowStatus(entry.status);
|
|
23495
|
+
}
|
|
23496
|
+
__name(isStoppableEntry, "isStoppableEntry");
|
|
23497
|
+
function workflowPauseHint(entry) {
|
|
23498
|
+
if (entry?.kind !== "workflow" || !entry.isBackgrounded) return void 0;
|
|
23499
|
+
switch (entry.status) {
|
|
23500
|
+
case "running":
|
|
23501
|
+
return "p pause (cooperative)";
|
|
23502
|
+
case "paused":
|
|
23503
|
+
return "p resume (cooperative)";
|
|
23504
|
+
default:
|
|
23505
|
+
return void 0;
|
|
23506
|
+
}
|
|
23507
|
+
}
|
|
23508
|
+
__name(workflowPauseHint, "workflowPauseHint");
|
|
23419
23509
|
var FOREGROUND_ROW_PREFIX = "[blocking]";
|
|
23420
23510
|
var SHELL_ROW_PREFIX = "[shell]";
|
|
23421
23511
|
function rowLabel(entry, userBlocking) {
|
|
@@ -23528,8 +23618,8 @@ var ListBody = /* @__PURE__ */ __name(({ entries, selectedIndex, maxRows }) => {
|
|
|
23528
23618
|
visible.map((entry, visibleIdx) => {
|
|
23529
23619
|
const idx = windowStart + visibleIdx;
|
|
23530
23620
|
const isSelected = idx === selectedIndex;
|
|
23531
|
-
const
|
|
23532
|
-
const labelColor = isSelected ? theme.text.accent :
|
|
23621
|
+
const presentation2 = statusPresentation(entry.status);
|
|
23622
|
+
const labelColor = isSelected ? theme.text.accent : presentation2 ? presentation2.labelColor : theme.text.primary;
|
|
23533
23623
|
const treePrefix = entry.kind === "agent" ? treeRowPrefix(entry, treeInfo.get(entry.agentId)) : "";
|
|
23534
23624
|
return /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Box_default, { flexDirection: "row", paddingX: 1, children: [
|
|
23535
23625
|
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: isSelected ? theme.text.accent : void 0, children: isSelected ? "> " : " " }),
|
|
@@ -23603,7 +23693,7 @@ var DetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) => {
|
|
|
23603
23693
|
}, "DetailBody");
|
|
23604
23694
|
var DreamDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) => {
|
|
23605
23695
|
const title = t("Dream");
|
|
23606
|
-
const
|
|
23696
|
+
const presentation2 = statusPresentation(entry.status);
|
|
23607
23697
|
const dimSubtitleParts = [elapsedFor(entry)];
|
|
23608
23698
|
if (entry.sessionCount !== void 0) {
|
|
23609
23699
|
dimSubtitleParts.push(formatSessionCount(entry.sessionCount));
|
|
@@ -23625,7 +23715,7 @@ var DreamDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) =>
|
|
|
23625
23715
|
children: [
|
|
23626
23716
|
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { bold: true, color: theme.text.accent, children: title }) }),
|
|
23627
23717
|
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Box_default, { children: [
|
|
23628
|
-
|
|
23718
|
+
presentation2 && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: presentation2.color, children: `${presentation2.icon} ${statusVerb(entry.status)} \xB7 ` }),
|
|
23629
23719
|
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: theme.text.secondary, children: dimSubtitleParts.join(" \xB7 ") })
|
|
23630
23720
|
] }),
|
|
23631
23721
|
entry.sessionCount !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_react77.Fragment, { children: [
|
|
@@ -23682,7 +23772,7 @@ var AgentDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) =>
|
|
|
23682
23772
|
const title = escapeAnsiCtrlCodes(
|
|
23683
23773
|
`${entry.subagentType ?? "Agent"} \u203A ${buildBackgroundEntryLabel(entry, { includePrefix: false })}`
|
|
23684
23774
|
);
|
|
23685
|
-
const
|
|
23775
|
+
const presentation2 = statusPresentation(entry.status);
|
|
23686
23776
|
const dimSubtitleParts = [elapsedFor(entry)];
|
|
23687
23777
|
if (entry.stats?.outputTokens) {
|
|
23688
23778
|
dimSubtitleParts.push(
|
|
@@ -23754,7 +23844,7 @@ var AgentDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) =>
|
|
|
23754
23844
|
children: [
|
|
23755
23845
|
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { bold: true, color: theme.text.accent, children: title }) }),
|
|
23756
23846
|
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Box_default, { children: [
|
|
23757
|
-
|
|
23847
|
+
presentation2 && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: presentation2.color, children: `${presentation2.icon} ${statusVerb(entry.status)} \xB7 ` }),
|
|
23758
23848
|
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: theme.text.secondary, children: dimSubtitleParts.join(" \xB7 ") })
|
|
23759
23849
|
] }),
|
|
23760
23850
|
parentLine !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_react77.Fragment, { children: [
|
|
@@ -23831,7 +23921,7 @@ var AgentDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) =>
|
|
|
23831
23921
|
}, "AgentDetailBody");
|
|
23832
23922
|
var ShellDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) => {
|
|
23833
23923
|
const title = `${t("Shell")} \u203A ${entry.command}`;
|
|
23834
|
-
const
|
|
23924
|
+
const presentation2 = statusPresentation(entry.status);
|
|
23835
23925
|
const dimSubtitleParts = [elapsedFor(entry)];
|
|
23836
23926
|
if (entry.pid !== void 0) {
|
|
23837
23927
|
dimSubtitleParts.push(t("pid {{pid}}", { pid: String(entry.pid) }));
|
|
@@ -23851,7 +23941,7 @@ var ShellDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) =>
|
|
|
23851
23941
|
children: [
|
|
23852
23942
|
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { bold: true, color: theme.text.accent, children: title }) }),
|
|
23853
23943
|
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Box_default, { children: [
|
|
23854
|
-
|
|
23944
|
+
presentation2 && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: presentation2.color, children: `${presentation2.icon} ${statusVerb(entry.status)} \xB7 ` }),
|
|
23855
23945
|
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: theme.text.secondary, children: dimSubtitleParts.join(" \xB7 ") })
|
|
23856
23946
|
] }),
|
|
23857
23947
|
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, {}),
|
|
@@ -23871,7 +23961,7 @@ var ShellDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) =>
|
|
|
23871
23961
|
}, "ShellDetailBody");
|
|
23872
23962
|
var MonitorDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) => {
|
|
23873
23963
|
const title = `${t("Monitor")} \u203A ${entry.description}`;
|
|
23874
|
-
const
|
|
23964
|
+
const presentation2 = statusPresentation(entry.status);
|
|
23875
23965
|
const dimSubtitleParts = [elapsedFor(entry)];
|
|
23876
23966
|
if (entry.pid !== void 0) {
|
|
23877
23967
|
dimSubtitleParts.push(t("pid {{pid}}", { pid: String(entry.pid) }));
|
|
@@ -23899,7 +23989,7 @@ var MonitorDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth })
|
|
|
23899
23989
|
children: [
|
|
23900
23990
|
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { bold: true, color: theme.text.accent, children: title }) }),
|
|
23901
23991
|
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Box_default, { children: [
|
|
23902
|
-
|
|
23992
|
+
presentation2 && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: presentation2.color, children: `${presentation2.icon} ${statusVerb(entry.status)} \xB7 ` }),
|
|
23903
23993
|
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: theme.text.secondary, children: dimSubtitleParts.join(" \xB7 ") })
|
|
23904
23994
|
] }),
|
|
23905
23995
|
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, {}),
|
|
@@ -23918,7 +24008,7 @@ var MAX_VISIBLE_PHASES = 20;
|
|
|
23918
24008
|
var MAX_VISIBLE_LOG_LINES = 10;
|
|
23919
24009
|
var WorkflowDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) => {
|
|
23920
24010
|
const title = `${t("Workflow")} \u203A ${entry.meta?.name ?? entry.runId}`;
|
|
23921
|
-
const
|
|
24011
|
+
const presentation2 = statusPresentation(entry.status);
|
|
23922
24012
|
const dimSubtitleParts = [elapsedFor(entry)];
|
|
23923
24013
|
if (entry.agentsDispatched > 0) {
|
|
23924
24014
|
dimSubtitleParts.push(
|
|
@@ -23950,19 +24040,27 @@ var WorkflowDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth })
|
|
|
23950
24040
|
children: [
|
|
23951
24041
|
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { bold: true, color: theme.text.accent, children: title }) }),
|
|
23952
24042
|
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Box_default, { children: [
|
|
23953
|
-
|
|
24043
|
+
presentation2 && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: presentation2.color, children: `${presentation2.icon} ${statusVerb(entry.status)} \xB7 ` }),
|
|
23954
24044
|
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: theme.text.secondary, children: dimSubtitleParts.join(" \xB7 ") })
|
|
23955
24045
|
] }),
|
|
23956
24046
|
entry.meta?.description && /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_react77.Fragment, { children: [
|
|
23957
24047
|
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, {}),
|
|
23958
24048
|
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { wrap: "wrap", children: entry.meta.description }) })
|
|
23959
24049
|
] }),
|
|
24050
|
+
(entry.status === "pausing" || entry.status === "paused") && /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_react77.Fragment, { children: [
|
|
24051
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, {}),
|
|
24052
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: theme.status.warning, children: entry.status === "pausing" ? t(
|
|
24053
|
+
"Pause is cooperative; in-flight work may finish before the workflow is paused. An agent call waiting on a tool approval keeps the run in this state and still counts against the active-time limit until the approval is answered."
|
|
24054
|
+
) : t(
|
|
24055
|
+
"Paused: no new agents will start; script code between agent calls keeps running. Press p to resume. /clear, /branch, and switching sessions cancel paused runs."
|
|
24056
|
+
) }) })
|
|
24057
|
+
] }),
|
|
23960
24058
|
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, {}),
|
|
23961
24059
|
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { bold: true, dimColor: true, children: t("Phases") }) }),
|
|
23962
24060
|
entry.phases.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { dimColor: true, children: t("(no phase recorded yet)") }) }) : /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_react77.Fragment, { children: [
|
|
23963
24061
|
phaseOverflow > 0 && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { dimColor: true, children: `+${phaseOverflow} ${t("more above")}` }) }),
|
|
23964
24062
|
visiblePhases.map((phaseTitle, i) => {
|
|
23965
|
-
const isCurrent = entry.status
|
|
24063
|
+
const isCurrent = isActiveWorkflowStatus(entry.status) && i === visiblePhases.length - 1 && entry.currentPhase === phaseTitle;
|
|
23966
24064
|
const marker = isCurrent ? "\u25B8" : "\xB7";
|
|
23967
24065
|
const phaseTokens = entry.perPhaseTokens.get(phaseTitle) ?? 0;
|
|
23968
24066
|
const tokenChip = phaseTokens > 0 ? ` \xB7 ${formatTokenCount(phaseTokens)}t` : "";
|
|
@@ -24000,7 +24098,9 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
|
|
|
24000
24098
|
enterDetail,
|
|
24001
24099
|
exitDetail,
|
|
24002
24100
|
cancelSelected,
|
|
24003
|
-
resumeSelected
|
|
24101
|
+
resumeSelected,
|
|
24102
|
+
toggleSelectedWorkflowPause,
|
|
24103
|
+
setSelectedIndex
|
|
24004
24104
|
} = useBackgroundTaskViewActions();
|
|
24005
24105
|
const config = useConfig();
|
|
24006
24106
|
const detailContentHeight = Math.max(10, availableTerminalHeight - 6);
|
|
@@ -24012,6 +24112,21 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
|
|
|
24012
24112
|
(0, import_react77.useEffect)(() => {
|
|
24013
24113
|
if (!isDetailMode) setSaveActive(false);
|
|
24014
24114
|
}, [isDetailMode]);
|
|
24115
|
+
const [pauseRejected, setPauseRejected] = (0, import_react77.useState)(null);
|
|
24116
|
+
(0, import_react77.useEffect)(() => {
|
|
24117
|
+
if (!pauseRejected) return;
|
|
24118
|
+
const timer = setTimeout(() => setPauseRejected(null), 3e3);
|
|
24119
|
+
return () => clearTimeout(timer);
|
|
24120
|
+
}, [pauseRejected]);
|
|
24121
|
+
const toggleWorkflowPauseWithFeedback = (0, import_react77.useCallback)(() => {
|
|
24122
|
+
const target = entries[selectedIndex];
|
|
24123
|
+
const verdict = toggleSelectedWorkflowPause();
|
|
24124
|
+
if (verdict === false && target) {
|
|
24125
|
+
setPauseRejected({ entryKey: entryId(target) });
|
|
24126
|
+
} else if (verdict === true) {
|
|
24127
|
+
setPauseRejected(null);
|
|
24128
|
+
}
|
|
24129
|
+
}, [entries, selectedIndex, toggleSelectedWorkflowPause]);
|
|
24015
24130
|
const selectedEntry = (0, import_react77.useMemo)(() => {
|
|
24016
24131
|
const fromSnapshot = entries[selectedIndex] ?? null;
|
|
24017
24132
|
if (!fromSnapshot) return fromSnapshot;
|
|
@@ -24081,12 +24196,19 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
|
|
|
24081
24196
|
selectedAgentIdForActivity
|
|
24082
24197
|
]);
|
|
24083
24198
|
const selectedStatus = selectedEntry?.status;
|
|
24199
|
+
const selectedShouldTick = selectedEntry?.kind === "workflow" ? isActiveWorkflowStatus(selectedEntry.status) : selectedStatus === "running";
|
|
24084
24200
|
(0, import_react77.useEffect)(() => {
|
|
24085
|
-
if (!dialogOpen || !isDetailMode || !selectedEntryId ||
|
|
24201
|
+
if (!dialogOpen || !isDetailMode || !selectedEntryId || !selectedShouldTick)
|
|
24086
24202
|
return;
|
|
24087
24203
|
const id = setInterval(() => setActivityTick((n) => n + 1), 1e3);
|
|
24088
24204
|
return () => clearInterval(id);
|
|
24089
|
-
}, [
|
|
24205
|
+
}, [
|
|
24206
|
+
dialogOpen,
|
|
24207
|
+
dialogMode,
|
|
24208
|
+
isDetailMode,
|
|
24209
|
+
selectedEntryId,
|
|
24210
|
+
selectedShouldTick
|
|
24211
|
+
]);
|
|
24090
24212
|
const initialDetailStatusRef = (0, import_react77.useRef)(null);
|
|
24091
24213
|
(0, import_react77.useEffect)(() => {
|
|
24092
24214
|
if (!dialogOpen || !isDetailMode) {
|
|
@@ -24095,11 +24217,25 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
|
|
|
24095
24217
|
}
|
|
24096
24218
|
if (!selectedEntryId) {
|
|
24097
24219
|
initialDetailStatusRef.current = null;
|
|
24220
|
+
setPendingCancelEntryId(null);
|
|
24098
24221
|
exitDetail();
|
|
24099
24222
|
return;
|
|
24100
24223
|
}
|
|
24101
24224
|
const seen = initialDetailStatusRef.current;
|
|
24102
|
-
if (
|
|
24225
|
+
if (seen && seen.entryId !== selectedEntryId) {
|
|
24226
|
+
const driftedIndex = entries.findIndex(
|
|
24227
|
+
(candidate) => entryId(candidate) === seen.entryId
|
|
24228
|
+
);
|
|
24229
|
+
if (driftedIndex >= 0) {
|
|
24230
|
+
setSelectedIndex(driftedIndex);
|
|
24231
|
+
return;
|
|
24232
|
+
}
|
|
24233
|
+
initialDetailStatusRef.current = null;
|
|
24234
|
+
setPendingCancelEntryId(null);
|
|
24235
|
+
exitDetail();
|
|
24236
|
+
return;
|
|
24237
|
+
}
|
|
24238
|
+
if (!seen) {
|
|
24103
24239
|
if (selectedStatus) {
|
|
24104
24240
|
initialDetailStatusRef.current = {
|
|
24105
24241
|
entryId: selectedEntryId,
|
|
@@ -24108,7 +24244,10 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
|
|
|
24108
24244
|
}
|
|
24109
24245
|
return;
|
|
24110
24246
|
}
|
|
24111
|
-
|
|
24247
|
+
const seenWasActive = seen.status === "running" || seen.status === "pausing" || seen.status === "paused";
|
|
24248
|
+
const selectedIsTerminal = selectedStatus === "completed" || selectedStatus === "failed" || selectedStatus === "cancelled";
|
|
24249
|
+
if (seenWasActive && selectedIsTerminal) {
|
|
24250
|
+
setPendingCancelEntryId(null);
|
|
24112
24251
|
exitDetail();
|
|
24113
24252
|
}
|
|
24114
24253
|
}, [
|
|
@@ -24117,11 +24256,13 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
|
|
|
24117
24256
|
isDetailMode,
|
|
24118
24257
|
selectedEntryId,
|
|
24119
24258
|
selectedStatus,
|
|
24120
|
-
exitDetail
|
|
24259
|
+
exitDetail,
|
|
24260
|
+
entries,
|
|
24261
|
+
setSelectedIndex
|
|
24121
24262
|
]);
|
|
24122
24263
|
const handleCancelKey = /* @__PURE__ */ __name(() => {
|
|
24123
24264
|
if (!selectedEntry) return;
|
|
24124
|
-
const isCancelable = selectedEntry
|
|
24265
|
+
const isCancelable = isStoppableEntry(selectedEntry);
|
|
24125
24266
|
const isAbandonable = selectedEntry.kind === "agent" && selectedEntry.status === "paused";
|
|
24126
24267
|
if (!isCancelable && !isAbandonable) return;
|
|
24127
24268
|
const entryKey = entryId(selectedEntry);
|
|
@@ -24178,13 +24319,17 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
|
|
|
24178
24319
|
void resumeSelected();
|
|
24179
24320
|
return;
|
|
24180
24321
|
}
|
|
24322
|
+
if (key.sequence === "p" && !key.ctrl && !key.meta) {
|
|
24323
|
+
toggleWorkflowPauseWithFeedback();
|
|
24324
|
+
return;
|
|
24325
|
+
}
|
|
24181
24326
|
if (key.sequence === "x" && !key.ctrl && !key.meta) {
|
|
24182
24327
|
handleCancelKey();
|
|
24183
24328
|
return;
|
|
24184
24329
|
}
|
|
24185
24330
|
return;
|
|
24186
24331
|
}
|
|
24187
|
-
if (key.sequence === "s" && !key.ctrl && !key.meta && config && selectedEntry?.kind === "workflow" && selectedEntry.status
|
|
24332
|
+
if (key.sequence === "s" && !key.ctrl && !key.meta && config && selectedEntry?.kind === "workflow" && isTerminalWorkflowStatus(selectedEntry.status) && !!selectedEntry.script) {
|
|
24188
24333
|
setSaveActive(true);
|
|
24189
24334
|
return;
|
|
24190
24335
|
}
|
|
@@ -24205,6 +24350,10 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
|
|
|
24205
24350
|
void resumeSelected();
|
|
24206
24351
|
return;
|
|
24207
24352
|
}
|
|
24353
|
+
if (key.sequence === "p" && !key.ctrl && !key.meta) {
|
|
24354
|
+
toggleWorkflowPauseWithFeedback();
|
|
24355
|
+
return;
|
|
24356
|
+
}
|
|
24208
24357
|
if (key.sequence === "x" && !key.ctrl && !key.meta) {
|
|
24209
24358
|
handleCancelKey();
|
|
24210
24359
|
return;
|
|
@@ -24214,8 +24363,9 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
|
|
|
24214
24363
|
);
|
|
24215
24364
|
if (!dialogOpen) return null;
|
|
24216
24365
|
const selectedEntryAllowsResume = selectedEntry?.kind === "agent" && selectedEntry.status === "paused" && !selectedEntry.resumeBlockedReason;
|
|
24217
|
-
const workflowSaveTarget = config && selectedEntry?.kind === "workflow" && selectedEntry.status
|
|
24366
|
+
const workflowSaveTarget = config && selectedEntry?.kind === "workflow" && isTerminalWorkflowStatus(selectedEntry.status) && selectedEntry.script ? selectedEntry : null;
|
|
24218
24367
|
const selectedEntryKey = selectedEntry ? entryId(selectedEntry) : null;
|
|
24368
|
+
const selectedWorkflowPauseHint = workflowPauseHint(selectedEntry);
|
|
24219
24369
|
const showCancelConfirmHint = pendingCancelEntryId !== null && pendingCancelEntryId === selectedEntryKey;
|
|
24220
24370
|
const hints = [];
|
|
24221
24371
|
if (approvalActive) {
|
|
@@ -24230,7 +24380,10 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
|
|
|
24230
24380
|
);
|
|
24231
24381
|
} else if (dialogMode === "list") {
|
|
24232
24382
|
hints.push("\u2191/\u2193 select", "Enter view");
|
|
24233
|
-
if (selectedEntry
|
|
24383
|
+
if (selectedEntry && isStoppableEntry(selectedEntry)) {
|
|
24384
|
+
hints.push("x stop");
|
|
24385
|
+
}
|
|
24386
|
+
if (selectedWorkflowPauseHint) hints.push(selectedWorkflowPauseHint);
|
|
24234
24387
|
if (selectedEntryAllowsResume) hints.push("r resume");
|
|
24235
24388
|
if (selectedEntry?.kind === "agent" && selectedEntry.status === "paused") {
|
|
24236
24389
|
hints.push("x abandon");
|
|
@@ -24238,7 +24391,10 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
|
|
|
24238
24391
|
hints.push("\u2190/Esc close");
|
|
24239
24392
|
} else {
|
|
24240
24393
|
hints.push("\u2190 back", "Esc close");
|
|
24241
|
-
if (selectedEntry
|
|
24394
|
+
if (selectedEntry && isStoppableEntry(selectedEntry)) {
|
|
24395
|
+
hints.push("x stop");
|
|
24396
|
+
}
|
|
24397
|
+
if (selectedWorkflowPauseHint) hints.push(selectedWorkflowPauseHint);
|
|
24242
24398
|
if (selectedEntryAllowsResume) hints.push("r resume");
|
|
24243
24399
|
if (selectedEntry?.kind === "agent" && selectedEntry.status === "paused") {
|
|
24244
24400
|
hints.push("x abandon");
|
|
@@ -24298,7 +24454,9 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
|
|
|
24298
24454
|
isActive: saveActive,
|
|
24299
24455
|
onClose: () => setSaveActive(false)
|
|
24300
24456
|
}
|
|
24301
|
-
) : /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { marginTop: 1, paddingX: 1, children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: theme.
|
|
24457
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { marginTop: 1, paddingX: 1, children: pauseRejected && pauseRejected.entryKey === selectedEntryKey ? /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: theme.status.warning, children: t(
|
|
24458
|
+
"Pause/resume was rejected; the workflow state changed. Try again."
|
|
24459
|
+
) }) : /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: theme.text.secondary, children: hints.join(" \xB7 ") }) })
|
|
24302
24460
|
]
|
|
24303
24461
|
}
|
|
24304
24462
|
);
|
|
@@ -25160,7 +25318,7 @@ function SuggestionsDisplay({
|
|
|
25160
25318
|
{
|
|
25161
25319
|
...mode === "slash" || suggestion.description ? { width: labelColumnWidth, flexShrink: 0 } : { flexShrink: 1 },
|
|
25162
25320
|
children: /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(Box_default, { children: [
|
|
25163
|
-
labelElement,
|
|
25321
|
+
/* @__PURE__ */ (0, import_jsx_runtime103.jsx)(Box_default, { flexShrink: 0, children: labelElement }),
|
|
25164
25322
|
suggestion.argumentHint && /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(Text, { color: theme.text.secondary, children: [
|
|
25165
25323
|
" ",
|
|
25166
25324
|
suggestion.argumentHint
|
|
@@ -29927,7 +30085,7 @@ ${currentText}`);
|
|
|
29927
30085
|
resetEscapeState();
|
|
29928
30086
|
return true;
|
|
29929
30087
|
}
|
|
29930
|
-
if (!isAttachmentMode && uiState.messageQueue.length > 0) {
|
|
30088
|
+
if (!isAttachmentMode && uiState.messageQueue.length > 0 && uiState.streamingState !== "responding" /* Responding */) {
|
|
29931
30089
|
if (popQueueIntoInput()) {
|
|
29932
30090
|
resetEscapeState();
|
|
29933
30091
|
return true;
|
|
@@ -30731,9 +30889,11 @@ function hasPendingApproval(entries) {
|
|
|
30731
30889
|
__name(hasPendingApproval, "hasPendingApproval");
|
|
30732
30890
|
function getPillLabel(entries) {
|
|
30733
30891
|
if (entries.length === 0) return "";
|
|
30734
|
-
const
|
|
30735
|
-
|
|
30736
|
-
|
|
30892
|
+
const live = entries.filter(
|
|
30893
|
+
(e) => e.status === "running" || e.kind === "workflow" && (e.status === "pausing" || e.status === "paused")
|
|
30894
|
+
);
|
|
30895
|
+
if (live.length > 0) {
|
|
30896
|
+
return groupAndFormat(live);
|
|
30737
30897
|
}
|
|
30738
30898
|
const pausedAgents = entries.filter(
|
|
30739
30899
|
(e) => e.kind === "agent" && e.status === "paused"
|
|
@@ -30781,9 +30941,9 @@ var BackgroundTasksPill = /* @__PURE__ */ __name(() => {
|
|
|
30781
30941
|
const label = getPillLabel(entries);
|
|
30782
30942
|
const needsApproval = hasPendingApproval(entries);
|
|
30783
30943
|
return /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)(import_jsx_runtime112.Fragment, { children: [
|
|
30784
|
-
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Text, { color: theme.text.secondary, children: " \xB7 " }),
|
|
30785
|
-
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Text, { inverse: pillFocused, children: label }),
|
|
30786
|
-
needsApproval && /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Text, { color: theme.status.warning, children: ` \u26A0 ${t("needs approval")}` })
|
|
30944
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Text, { color: theme.text.secondary, wrap: "truncate", children: " \xB7 " }),
|
|
30945
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Text, { inverse: pillFocused, wrap: "truncate", children: label }),
|
|
30946
|
+
needsApproval && /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Text, { color: theme.status.warning, wrap: "truncate", children: ` \u26A0 ${t("needs approval")}` })
|
|
30787
30947
|
] });
|
|
30788
30948
|
}, "BackgroundTasksPill");
|
|
30789
30949
|
|
|
@@ -30843,8 +31003,8 @@ var MCPHealthPill = /* @__PURE__ */ __name(() => {
|
|
|
30843
31003
|
const label = getPillLabel2(snapshot);
|
|
30844
31004
|
if (!label) return null;
|
|
30845
31005
|
return /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(import_jsx_runtime113.Fragment, { children: [
|
|
30846
|
-
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)(Text, { color: theme.text.secondary, children: " \xB7 " }),
|
|
30847
|
-
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)(Text, { color: theme.status.warning, children: label })
|
|
31006
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)(Text, { color: theme.text.secondary, wrap: "truncate", children: " \xB7 " }),
|
|
31007
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)(Text, { color: theme.status.warning, wrap: "truncate", children: label })
|
|
30848
31008
|
] });
|
|
30849
31009
|
}, "MCPHealthPill");
|
|
30850
31010
|
|
|
@@ -31620,7 +31780,10 @@ var Footer = /* @__PURE__ */ __name(() => {
|
|
|
31620
31780
|
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Text, { wrap: "truncate", children: leftBottomContent }),
|
|
31621
31781
|
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(BackgroundTasksPill, {}),
|
|
31622
31782
|
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(MCPHealthPill, {}),
|
|
31623
|
-
|
|
31783
|
+
uiState.messageQueue.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Text, { color: theme.text.secondary, wrap: "truncate", children: ` \u23F3 ${t("{{count}} queued", {
|
|
31784
|
+
count: String(uiState.messageQueue.length)
|
|
31785
|
+
})}` }),
|
|
31786
|
+
!uiState.isSkillReviewDialogOpen && (uiState.skillReviewPending?.skills.length ?? 0) > 0 && /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Text, { color: theme.status.warning, wrap: "truncate", children: ` \u26A0 ${t("{{count}} skill(s) pending review", {
|
|
31624
31787
|
count: String(uiState.skillReviewPending.skills.length)
|
|
31625
31788
|
})}` })
|
|
31626
31789
|
] })
|
|
@@ -35023,6 +35186,7 @@ var useSlashCommandProcessor = /* @__PURE__ */ __name((config, settings, history
|
|
|
35023
35186
|
const combinedContent = [];
|
|
35024
35187
|
let firstModelOverride;
|
|
35025
35188
|
const onCompleteCallbacks = [];
|
|
35189
|
+
let refreshContextFilesOnWrite = false;
|
|
35026
35190
|
for (const skill of stackedResult.skills) {
|
|
35027
35191
|
if (!skill.action) continue;
|
|
35028
35192
|
const skillContext = {
|
|
@@ -35037,6 +35201,9 @@ var useSlashCommandProcessor = /* @__PURE__ */ __name((config, settings, history
|
|
|
35037
35201
|
if (skillResult?.type === "submit_prompt") {
|
|
35038
35202
|
combinedContent.push(skillResult.content);
|
|
35039
35203
|
firstModelOverride ??= skillResult.modelOverride;
|
|
35204
|
+
refreshContextFilesOnWrite ||= Boolean(
|
|
35205
|
+
skillResult.refreshContextFilesOnWrite
|
|
35206
|
+
);
|
|
35040
35207
|
if (skillResult.onComplete) {
|
|
35041
35208
|
onCompleteCallbacks.push(skillResult.onComplete);
|
|
35042
35209
|
}
|
|
@@ -35077,6 +35244,7 @@ var useSlashCommandProcessor = /* @__PURE__ */ __name((config, settings, history
|
|
|
35077
35244
|
type: "submit_prompt",
|
|
35078
35245
|
content: mergedContent,
|
|
35079
35246
|
...firstModelOverride ? { modelOverride: firstModelOverride } : {},
|
|
35247
|
+
...refreshContextFilesOnWrite ? { refreshContextFilesOnWrite: true } : {},
|
|
35080
35248
|
...onCompleteCallbacks.length ? {
|
|
35081
35249
|
onComplete: /* @__PURE__ */ __name(async () => {
|
|
35082
35250
|
for (const cb of onCompleteCallbacks) await cb();
|
|
@@ -35374,7 +35542,8 @@ var useSlashCommandProcessor = /* @__PURE__ */ __name((config, settings, history
|
|
|
35374
35542
|
type: "submit_prompt",
|
|
35375
35543
|
content,
|
|
35376
35544
|
onComplete: result.onComplete,
|
|
35377
|
-
modelOverride: result.modelOverride
|
|
35545
|
+
modelOverride: result.modelOverride,
|
|
35546
|
+
refreshContextFilesOnWrite: result.refreshContextFilesOnWrite
|
|
35378
35547
|
};
|
|
35379
35548
|
}
|
|
35380
35549
|
case "confirm_shell_commands": {
|
|
@@ -35858,7 +36027,7 @@ ${finalOutput}`;
|
|
|
35858
36027
|
finalStatus = "Canceled" /* Canceled */;
|
|
35859
36028
|
finalOutput = `Command was cancelled.
|
|
35860
36029
|
${finalOutput}`;
|
|
35861
|
-
} else if (result2.signal) {
|
|
36030
|
+
} else if (isSignalTermination(result2.signal)) {
|
|
35862
36031
|
finalStatus = "Error" /* Error */;
|
|
35863
36032
|
finalOutput = `Command terminated by signal: ${result2.signal}.
|
|
35864
36033
|
${finalOutput}`;
|
|
@@ -36828,6 +36997,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
36828
36997
|
);
|
|
36829
36998
|
const processedMemoryToolsRef = (0, import_react135.useRef)(/* @__PURE__ */ new Set());
|
|
36830
36999
|
const submitPromptOnCompleteRef = (0, import_react135.useRef)(null);
|
|
37000
|
+
const refreshContextFilesOnWriteRef = (0, import_react135.useRef)(false);
|
|
36831
37001
|
const modelOverrideRef = (0, import_react135.useRef)(void 0);
|
|
36832
37002
|
const inlineModelOverrideActiveRef = (0, import_react135.useRef)(false);
|
|
36833
37003
|
const canUseToolResultFullTurnModel = (0, import_react135.useCallback)((model) => {
|
|
@@ -37183,6 +37353,9 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
37183
37353
|
case "submit_prompt": {
|
|
37184
37354
|
localQueryToSendToGemini = slashCommandResult.content;
|
|
37185
37355
|
submitPromptOnCompleteRef.current = slashCommandResult.onComplete ?? null;
|
|
37356
|
+
refreshContextFilesOnWriteRef.current = Boolean(
|
|
37357
|
+
slashCommandResult.refreshContextFilesOnWrite
|
|
37358
|
+
);
|
|
37186
37359
|
if (slashCommandResult.modelOverride) {
|
|
37187
37360
|
if (isInlineModelOverrideAllowed(
|
|
37188
37361
|
config,
|
|
@@ -38553,6 +38726,9 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
38553
38726
|
duplicateProviderToolCallResponseIdsRef.current.clear();
|
|
38554
38727
|
pendingDuplicateToolResponsesRef.current = [];
|
|
38555
38728
|
immediateDuplicateToolResponsesRef.current = null;
|
|
38729
|
+
if (submitType !== "retry" /* Retry */ && submitType !== "notification" /* Notification */ && submitType !== "goal" /* Goal */) {
|
|
38730
|
+
refreshContextFilesOnWriteRef.current = false;
|
|
38731
|
+
}
|
|
38556
38732
|
}
|
|
38557
38733
|
const userMessageTimestamp = Date.now();
|
|
38558
38734
|
if (submitType === "retry" /* Retry */) {
|
|
@@ -39170,15 +39346,35 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
39170
39346
|
"runtime"
|
|
39171
39347
|
);
|
|
39172
39348
|
}
|
|
39173
|
-
const
|
|
39174
|
-
|
|
39175
|
-
completedAndReadyToSubmitTools.map((toolCall) => ({
|
|
39349
|
+
const memoryWriteCandidates = completedAndReadyToSubmitTools.map(
|
|
39350
|
+
(toolCall) => ({
|
|
39176
39351
|
toolName: toolCall.request.name,
|
|
39177
39352
|
args: toolCall.request.args,
|
|
39178
39353
|
status: toolCall.status
|
|
39179
|
-
})
|
|
39354
|
+
})
|
|
39355
|
+
);
|
|
39356
|
+
const didRefreshManagedMemory = await refreshMemoryAfterManagedWrite(
|
|
39357
|
+
config,
|
|
39358
|
+
memoryWriteCandidates,
|
|
39180
39359
|
{ logContext: "interactive memory tool batch" }
|
|
39181
39360
|
);
|
|
39361
|
+
if (refreshContextFilesOnWriteRef.current) {
|
|
39362
|
+
const matchedContextFileWrite = didWriteProjectContextFile(
|
|
39363
|
+
memoryWriteCandidates,
|
|
39364
|
+
config.getProjectRoot()
|
|
39365
|
+
);
|
|
39366
|
+
debugLogger36.debug(
|
|
39367
|
+
`Checked marked context-file memory tool batch; matched=${matchedContextFileWrite}`
|
|
39368
|
+
);
|
|
39369
|
+
if (matchedContextFileWrite) {
|
|
39370
|
+
debugLogger36.debug(
|
|
39371
|
+
"Refreshing memory after context-file memory write"
|
|
39372
|
+
);
|
|
39373
|
+
await refreshMemoryInstruction(config, {
|
|
39374
|
+
logContext: "interactive context-file memory tool batch"
|
|
39375
|
+
});
|
|
39376
|
+
}
|
|
39377
|
+
}
|
|
39182
39378
|
if (newSuccessfulMemorySaves.length > 0) {
|
|
39183
39379
|
if (!didRefreshManagedMemory) {
|
|
39184
39380
|
void performMemoryRefresh().catch((err) => {
|
|
@@ -46774,6 +46970,20 @@ ${error.stack ?? ""}`
|
|
|
46774
46970
|
Rendering error${loggedHint}: ${sanitizeTerminalText(renderError.message)}`
|
|
46775
46971
|
);
|
|
46776
46972
|
}
|
|
46973
|
+
try {
|
|
46974
|
+
if (process.stdout.isTTY && config.getChatRecordingService()) {
|
|
46975
|
+
const sessionId = config.getSessionId();
|
|
46976
|
+
const sessionFile = config.getTranscriptPath();
|
|
46977
|
+
if (isValidSessionId(sessionId) && (await stat2(sessionFile)).size > 0) {
|
|
46978
|
+
writeStdoutLine(
|
|
46979
|
+
`
|
|
46980
|
+
${t("To continue this session, run")}
|
|
46981
|
+
qwen --resume ${sessionId}`
|
|
46982
|
+
);
|
|
46983
|
+
}
|
|
46984
|
+
}
|
|
46985
|
+
} catch {
|
|
46986
|
+
}
|
|
46777
46987
|
});
|
|
46778
46988
|
}
|
|
46779
46989
|
__name(startInteractiveUI, "startInteractiveUI");
|