@qwen-code/qwen-code 0.21.12 → 0.21.14-preview.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled/qc-helper/docs/configuration/settings.md +13 -5
- package/bundled/qc-helper/docs/features/code-review.md +18 -13
- package/bundled/qc-helper/docs/features/commands.md +120 -8
- package/bundled/qc-helper/docs/features/sub-agents.md +2 -2
- package/bundled/qc-helper/docs/qwen-serve-deploy-local.md +1 -1
- package/bundled/qc-helper/docs/qwen-serve.md +20 -3
- package/bundled/review/SKILL.md +130 -82
- package/chunks/{MaxSizedBox-ZSJJ2D5S.js → MaxSizedBox-3PZITE2Y.js} +46 -45
- package/chunks/{StandaloneSessionPicker-WHUHQXSA.js → StandaloneSessionPicker-2C34PNGO.js} +68 -67
- package/chunks/{acp-startup-profiler-SVPUHLXV.js → acp-startup-profiler-HUYGO57H.js} +2 -2
- package/chunks/{acpAgent-7JOAESF5.js → acpAgent-3J4NHAYT.js} +1098 -366
- package/chunks/{agent-E6V3VXQR.js → agent-VFX4RPP5.js} +42 -41
- package/chunks/agent-headless-6WCF4J6N.js +88 -0
- package/chunks/{anthropicContentGenerator-YDT4EOKO.js → anthropicContentGenerator-M7XRJMSK.js} +8 -8
- package/chunks/{artifact-tool-4GCQQDZI.js → artifact-tool-GEXTOPVO.js} +2 -2
- package/chunks/{askUserQuestion-HZJJLR3Z.js → askUserQuestion-B33XRSB7.js} +2 -2
- package/chunks/{bridge-NPBV53UA.js → bridge-XR5ZSR7U.js} +46 -45
- package/chunks/{ca-4CQ6MYNQ.js → ca-SLZJD6QH.js} +8 -0
- package/chunks/{channel-management-service-OADNGQM3.js → channel-management-service-X6LCQUAD.js} +1 -1
- package/chunks/{channel-settings-store-4ODLJ4X2.js → channel-settings-store-Z7BUEUJE.js} +50 -49
- package/chunks/{channel-worker-group-IHBIHQ45.js → channel-worker-group-TJ35JDPE.js} +4 -4
- package/chunks/{channel-worker-manager-GEHYJ5AE.js → channel-worker-manager-G5LKWGOG.js} +4 -4
- package/chunks/{channel-worker-supervisor-ZJIIWM4I.js → channel-worker-supervisor-OEVWBHGT.js} +2 -2
- package/chunks/{chunk-47BGDLJG.js → chunk-25GHLMQQ.js} +42 -20
- package/chunks/{chunk-2ZWH53I4.js → chunk-2B2BF7P7.js} +3 -3
- package/chunks/chunk-2C6HJMG3.js +757 -0
- package/chunks/{chunk-WM3LUQLO.js → chunk-2JXDFSVE.js} +6 -6
- package/chunks/{chunk-OYWVIXHT.js → chunk-2M55OBEB.js} +1 -1
- package/chunks/{chunk-B4VN3VDH.js → chunk-2OA3JMRD.js} +5 -5
- package/chunks/{chunk-GZDWTBT3.js → chunk-3EZLLVDF.js} +2 -2
- package/chunks/chunk-3PWCMXIR.js +9169 -0
- package/chunks/{chunk-XAFIL4BD.js → chunk-4KQ2TI2K.js} +5 -5
- package/chunks/{chunk-OPVF453Q.js → chunk-4V4DFJBS.js} +3 -3
- package/chunks/{chunk-DPTMKFIH.js → chunk-4ZMS3JCR.js} +43 -12
- package/chunks/{chunk-6JEIRPLN.js → chunk-55PIFSP2.js} +2 -2
- package/chunks/{chunk-V6OBVAST.js → chunk-57KOJ2KZ.js} +1 -1
- package/chunks/{chunk-QLTATTPS.js → chunk-5CVO7YES.js} +1 -1
- package/chunks/{chunk-OK47XBYH.js → chunk-5IYS4WWR.js} +1 -1
- package/chunks/chunk-5MK45KZ3.js +492 -0
- package/chunks/{chunk-OWXFBIB6.js → chunk-6DFPR7CS.js} +1 -1
- package/chunks/{chunk-YIGGWOJE.js → chunk-6HY6IF3Z.js} +1 -1
- package/chunks/{chunk-XDRXOSAD.js → chunk-6LAPGPVA.js} +7 -5
- package/chunks/{chunk-Q4ZPYNIZ.js → chunk-6PDOHRN6.js} +4 -4
- package/chunks/{chunk-OWGRUU7F.js → chunk-6QFDQMQX.js} +1 -1
- package/chunks/{chunk-MUNA4QDC.js → chunk-6VDPDHIP.js} +29 -8
- package/chunks/{chunk-MDNUCDKZ.js → chunk-73G3Z7QS.js} +3 -3
- package/chunks/{chunk-VIFA5VJD.js → chunk-7OCSX7FC.js} +1 -1
- package/chunks/{chunk-D2RNVVH6.js → chunk-AKBOLMUF.js} +96 -18
- package/chunks/{chunk-S6TCTH4Z.js → chunk-AQBHJ2IG.js} +12 -12
- package/chunks/{chunk-WCEI6J56.js → chunk-BOJNAPUE.js} +2 -2
- package/chunks/{chunk-DAV4QFD5.js → chunk-BQWNIPTE.js} +44 -3
- package/chunks/{chunk-HOSVOUDK.js → chunk-BUQDLC2G.js} +3 -0
- package/chunks/{chunk-LUISTZXI.js → chunk-CH5OFRV7.js} +2 -2
- package/chunks/{chunk-G6MUFRNI.js → chunk-CHHABXPE.js} +1 -1
- package/chunks/{chunk-4AOVQPJU.js → chunk-CPHEPGAO.js} +1 -1
- package/chunks/{chunk-MS7GNABG.js → chunk-CXJHQVEK.js} +8 -0
- package/chunks/{chunk-K5IDV3PC.js → chunk-D34RDOLP.js} +12 -2
- package/chunks/{chunk-3GM5DLBI.js → chunk-DGJ7O55J.js} +3 -3
- package/chunks/{chunk-7KJPO7YH.js → chunk-DRKYT2TR.js} +2 -2
- package/chunks/{chunk-PZW46OTB.js → chunk-DVR7XKO5.js} +2 -2
- package/chunks/{chunk-CQ6IPDQW.js → chunk-DZCV3ZYU.js} +3 -3
- package/chunks/{chunk-ULNWG62W.js → chunk-E3DYKPYZ.js} +3 -3
- package/chunks/{chunk-YCHNAKC5.js → chunk-E5RS7LF4.js} +44 -13
- package/chunks/{chunk-4NFY2S7N.js → chunk-E7REAOTN.js} +15 -0
- package/chunks/chunk-EOCQCNV4.js +3887 -0
- package/chunks/{chunk-D7QGE3RT.js → chunk-FAAUPSY2.js} +1 -1
- package/chunks/{chunk-2IVYL3IF.js → chunk-FCTLOVYW.js} +1 -1
- package/chunks/{chunk-QPBFRWCP.js → chunk-FS5NGKWC.js} +3 -3
- package/chunks/{chunk-RQJA2YYO.js → chunk-G6FFFICU.js} +4 -4
- package/chunks/{chunk-36XKGB7E.js → chunk-GV3OIADZ.js} +3 -3
- package/chunks/{chunk-3AEKDXKT.js → chunk-H4A72DE5.js} +1 -1
- package/chunks/{chunk-IH4Z54RJ.js → chunk-HGPMOXLZ.js} +5 -5
- package/chunks/{chunk-DG4IQ6JG.js → chunk-I3N2Z25H.js} +3 -3
- package/chunks/{chunk-WI6GIM2M.js → chunk-I7NTHW4C.js} +2 -2
- package/chunks/{chunk-ZBB5EZZV.js → chunk-IA2K2HJE.js} +2 -2
- package/chunks/{chunk-IRSLAS4M.js → chunk-IOTPI425.js} +19 -11
- package/chunks/{chunk-ROIJYS5K.js → chunk-ISRHAMNL.js} +3 -3
- package/chunks/{chunk-CGM3E75C.js → chunk-J63PKMYA.js} +3 -3
- package/chunks/{chunk-PTSEETCO.js → chunk-J6YS7Z25.js} +107 -13
- package/chunks/{chunk-ZQUY3ZJU.js → chunk-K3CECR5C.js} +4 -4
- package/chunks/{chunk-QBJYSIQ4.js → chunk-K3LPAED5.js} +53 -12
- package/chunks/{chunk-FRHQQC2Z.js → chunk-KBXKR5R2.js} +1 -1
- package/chunks/{chunk-4KM2SYK5.js → chunk-KC4WMLZO.js} +1491 -10579
- package/chunks/{chunk-IX4PWUDU.js → chunk-KSGWAYNE.js} +14350 -8679
- package/chunks/{chunk-CPFFU46D.js → chunk-KV27IEHM.js} +1 -1
- package/chunks/{chunk-OR64CU46.js → chunk-L6CCLB3G.js} +1 -1
- package/chunks/{chunk-M6NDLY2T.js → chunk-LD5VIJ7S.js} +1 -1
- package/chunks/{chunk-GXTMEATA.js → chunk-LLR424CQ.js} +18 -15
- package/chunks/{chunk-RDVNSJQU.js → chunk-LRDB2OLB.js} +3 -3
- package/chunks/{chunk-LSRI3ND3.js → chunk-MA2HEDVP.js} +1 -1
- package/chunks/{chunk-DFVXU5YM.js → chunk-MCG53LWC.js} +1 -1
- package/chunks/{chunk-YBVVOSOH.js → chunk-MIPFDQAF.js} +1 -1
- package/chunks/{chunk-KRXPRVGL.js → chunk-MLXTMF7H.js} +0 -1
- package/chunks/{chunk-BSR5AXZR.js → chunk-NRPXRNN4.js} +1 -1
- package/chunks/{chunk-X5SLJOMF.js → chunk-NV6LW6FT.js} +4 -4
- package/chunks/{chunk-YILJKX2T.js → chunk-NVRMCWTP.js} +10 -6
- package/chunks/chunk-NYWWQ437.js +24 -0
- package/chunks/{chunk-AKBFSOC5.js → chunk-OBJYN4MX.js} +2 -2
- package/chunks/{chunk-NX4A23LY.js → chunk-OJOP26ET.js} +3 -3
- package/chunks/{chunk-3GDBZJD6.js → chunk-OLZSWUZR.js} +7 -7
- package/chunks/{chunk-K34GJQOZ.js → chunk-OO4FKHLO.js} +4 -4
- package/chunks/{chunk-BSSLSQEW.js → chunk-OSAFWBNR.js} +3 -3
- package/chunks/{chunk-TMFWI4RC.js → chunk-OVY67CYC.js} +1 -1
- package/chunks/{chunk-6ZKSO6K7.js → chunk-P425IVUK.js} +7 -7
- package/chunks/{chunk-4XA4QIUA.js → chunk-PMS7O6SA.js} +1 -1
- package/chunks/{chunk-LCX5B364.js → chunk-PPTM4O4R.js} +3 -3
- package/chunks/{chunk-VPV7WBVT.js → chunk-PT4I7NBA.js} +1 -1
- package/chunks/{chunk-3LDGOQXZ.js → chunk-QECSDJET.js} +6 -6
- package/chunks/{chunk-FMIH5KMQ.js → chunk-QEJZUXSK.js} +1 -1
- package/chunks/{chunk-NLFLYSS4.js → chunk-QFJ5JHQR.js} +1 -1
- package/chunks/{chunk-KWX56CHZ.js → chunk-QIHHJKXT.js} +7 -7
- package/chunks/{chunk-TDESMS7M.js → chunk-RAQBBGS6.js} +50 -70
- package/chunks/{chunk-KEC5FHLM.js → chunk-ROIYNTHJ.js} +3 -3
- package/chunks/{chunk-63FNZTWG.js → chunk-RWDNJBWN.js} +2 -2
- package/chunks/{chunk-56HVDG3M.js → chunk-RXHBTKMG.js} +6 -6
- package/chunks/{chunk-MAKIANMX.js → chunk-S6CXQKDD.js} +3 -3
- package/chunks/{chunk-CIDQISGM.js → chunk-SA7GBPEA.js} +5 -5
- package/chunks/{chunk-YX2RDGAL.js → chunk-SBRIBTYN.js} +1 -1
- package/chunks/{chunk-TTRH3RTQ.js → chunk-SG7ZP5PG.js} +4 -4
- package/chunks/{chunk-XH3KAV2G.js → chunk-SGLPDKRT.js} +3 -3
- package/chunks/{chunk-JRIVMPD2.js → chunk-SLILKYV2.js} +4 -4
- package/chunks/{chunk-NW2GIPG3.js → chunk-SNQZZ765.js} +2 -2
- package/chunks/{chunk-I7BT2MME.js → chunk-SR2LYSMT.js} +1 -1
- package/chunks/{chunk-TXP5NGG3.js → chunk-SXCOEJO4.js} +1 -1
- package/chunks/{chunk-MELQSJOU.js → chunk-TNPWODIZ.js} +1 -1
- package/chunks/{chunk-VLHR7F4E.js → chunk-U6RZRKNM.js} +247 -198
- package/chunks/{chunk-HTYND72J.js → chunk-UC67T4SF.js} +3 -1
- package/chunks/{chunk-HG3UBTJ4.js → chunk-UYDGFWIJ.js} +609 -23
- package/chunks/{chunk-6P5EXEBL.js → chunk-VGAAAMRD.js} +1126 -232
- package/chunks/{chunk-WDVDVWJ3.js → chunk-VHPMDDPT.js} +6 -6
- package/chunks/{chunk-H7TMVHKE.js → chunk-WGHHA7ZH.js} +1 -1
- package/chunks/{chunk-FQDCO3CJ.js → chunk-WP4WIUOJ.js} +7 -0
- package/chunks/{chunk-5RUCD4ED.js → chunk-WPVUOVYX.js} +3 -3
- package/chunks/{chunk-EJOGLSNJ.js → chunk-WSSH2BNO.js} +2 -2
- package/chunks/{chunk-5AFGJNY6.js → chunk-WVIABDXV.js} +4 -4
- package/chunks/chunk-WZAD4ZNJ.js +59 -0
- package/chunks/{chunk-62X3CM7Q.js → chunk-X3YA3YGG.js} +8 -5
- package/chunks/{chunk-EBPLKY6U.js → chunk-XC377TLN.js} +5483 -3168
- package/chunks/{chunk-KLOMACIR.js → chunk-XLLKYULU.js} +2 -2
- package/chunks/{chunk-QSD4UH74.js → chunk-XO24LIZC.js} +254 -56
- package/chunks/{chunk-N4SVADAV.js → chunk-XT4RKHVE.js} +5 -4
- package/chunks/{chunk-PVXEJB66.js → chunk-XUJNK7Y6.js} +1 -1
- package/chunks/{chunk-YBHUXEC6.js → chunk-YECDICIO.js} +3 -3
- package/chunks/{chunk-FA5K6YI2.js → chunk-YFPZ3NNC.js} +36 -4
- package/chunks/{chunk-46UV252V.js → chunk-YHC2EYYG.js} +35 -38
- package/chunks/{chunk-6SPD4Z7F.js → chunk-YIWH3MKK.js} +8 -3
- package/chunks/{chunk-ZMY2P4L3.js → chunk-YXC7JYUI.js} +4 -4
- package/chunks/{chunk-TB4YFWXG.js → chunk-YZHRN3CF.js} +2 -2
- package/chunks/{chunk-TQDFSQQF.js → chunk-YZOSNW4R.js} +1 -1
- package/chunks/{chunk-DD6O3ZRD.js → chunk-ZIGC3MUS.js} +3 -5
- package/chunks/{chunk-CZ4OWGQQ.js → chunk-ZXEAEZFN.js} +63 -19
- package/chunks/{computer-use-F4URV4TU.js → computer-use-ABECHPS5.js} +42 -41
- package/chunks/{config-utils-Z3OW3IQG.js → config-utils-NJQA5YLJ.js} +2 -2
- package/chunks/{contextCommand-IGSS2U5J.js → contextCommand-4CD5HZQQ.js} +44 -43
- package/chunks/{core-runtime-H5CZDN3A.js → core-runtime-2MOVQ4VX.js} +42 -41
- package/chunks/{create-sub-session-XT6DLYOE.js → create-sub-session-KRQULJE6.js} +2 -2
- package/chunks/{create-sub-session-PA7MFTHK.js → create-sub-session-L6NNHG5N.js} +46 -44
- package/chunks/{cron-create-2JZ2TWTF.js → cron-create-NFRZEOQX.js} +4 -4
- package/chunks/{cron-delete-CTPD2P26.js → cron-delete-GFVSVO7C.js} +4 -4
- package/chunks/{cron-list-V44KHAF6.js → cron-list-NRW34CLU.js} +4 -4
- package/chunks/{daemon-GED37WOX.js → daemon-XH76IXOC.js} +436 -29
- package/chunks/{daemon-git-worktree-guard-LZDCNJGV.js → daemon-git-worktree-guard-BLXFEG4Q.js} +44 -43
- package/chunks/daemon-status-provider-XGD3TPTO.js +103 -0
- package/chunks/daemon-trust-policy-THEGCWPO.js +100 -0
- package/chunks/{daemon-trust-policy-monitor-2K2YETMT.js → daemon-trust-policy-monitor-L7L4ACWQ.js} +49 -48
- package/chunks/{de-UBEBKG6V.js → de-AH4LGCF5.js} +8 -0
- package/chunks/{deferred-core-runtime-FKJ3OYE7.js → deferred-core-runtime-YQLHDUGE.js} +42 -41
- package/chunks/discovery-X2NV535U.js +27 -0
- package/chunks/{display-image-M2ELAVN4.js → display-image-ON3EYFRD.js} +4 -4
- package/chunks/{dist-WJ4BHIEW.js → dist-ESS34DHC.js} +72 -0
- package/chunks/{earlyInputCapture-WJBSJQUF.js → earlyInputCapture-PCTXNW7N.js} +43 -42
- package/chunks/{edit-X73LA4YO.js → edit-QX2EGWYW.js} +45 -43
- package/chunks/{en-X6YV7GME.js → en-MD3GP5YL.js} +8 -0
- package/chunks/{enter-worktree-CLRQTIVN.js → enter-worktree-EM3ZZ2SB.js} +42 -41
- package/chunks/{enterPlanMode-6BDYUQ5T.js → enterPlanMode-ESCMVAKB.js} +42 -41
- package/chunks/{environment-WOAJXJDJ.js → environment-TOJI56YV.js} +45 -44
- package/chunks/{errors-7OY5MXYY.js → errors-DZ5FWWEM.js} +44 -43
- package/chunks/{exit-worktree-TFFJXCRT.js → exit-worktree-KUIJ36XA.js} +42 -41
- package/chunks/exitPlanMode-NFVY54FV.js +86 -0
- package/chunks/{fast-path-QQLGC37M.js → fast-path-JLQXJSH6.js} +3 -3
- package/chunks/{fast-path-settings-LNOFM2YP.js → fast-path-settings-WHX3J3ZI.js} +2 -2
- package/chunks/{fr-VENTC2BS.js → fr-ZEML2JWS.js} +8 -0
- package/chunks/{gemini-VHE62IJL.js → gemini-I7OT4FWL.js} +92 -91
- package/chunks/{geminiContentGenerator-VSHIEGAQ.js → geminiContentGenerator-GRIS77NJ.js} +6 -6
- package/chunks/{glob-VMEEDDLO.js → glob-7TBUUV6R.js} +42 -41
- package/chunks/{goal-tools-M4UDAZXP.js → goal-tools-K5OHOJ6B.js} +56 -12
- package/chunks/{grep-F4UAR7KX.js → grep-743SYWCZ.js} +42 -41
- package/chunks/handleAutoUpdate-GAOYUYOD.js +95 -0
- package/chunks/{i18n-ETW24DHW.js → i18n-2ITURYX6.js} +43 -42
- package/chunks/{image-gen-YPK2AZT4.js → image-gen-4OIWDZD6.js} +10 -10
- package/chunks/initializer-OC7LWA6X.js +101 -0
- package/chunks/{installationInfo-P7OTIR4P.js → installationInfo-CO47QX3Q.js} +43 -42
- package/chunks/{ja-QHT4EQTO.js → ja-UM5B2HMD.js} +8 -0
- package/chunks/{keychain-token-storage-NKKCUHI2.js → keychain-token-storage-3XFJ5ZB2.js} +2 -2
- package/chunks/list-ATR2SFWT.js +104 -0
- package/chunks/{list-agents-O6WSY4CT.js → list-agents-OSVDFI6S.js} +2 -2
- package/chunks/loadedSettingsAdapter-NK4B7AGK.js +98 -0
- package/chunks/{loggingContentGenerator-J2J2AANS.js → loggingContentGenerator-3WXBU5TQ.js} +67 -41
- package/chunks/{loop-wakeup-GVQRMUKS.js → loop-wakeup-HWVUU5CF.js} +5 -5
- package/chunks/{ls-6W2D7TKU.js → ls-D3HUFHDP.js} +4 -4
- package/chunks/{lsp-NJ4KFBI2.js → lsp-3QDDJTCS.js} +2 -2
- package/chunks/{managed-npm-update-WMV5ITKU.js → managed-npm-update-4SSBWI2D.js} +43 -42
- package/chunks/mcp-C62AE2QI.js +98 -0
- package/chunks/{monitor-2MM23VDV.js → monitor-FEYEGASA.js} +42 -41
- package/chunks/nonInteractiveCli-AJEV5ZWO.js +165 -0
- package/chunks/{notebook-edit-QD4TRKLY.js → notebook-edit-SLLTEY4O.js} +46 -44
- package/chunks/{openaiContentGenerator-KLHSPVN2.js → openaiContentGenerator-WLUGIAPX.js} +27 -26
- package/chunks/{pidfile-RQGZBNXT.js → pidfile-TV2VWUMB.js} +43 -42
- package/chunks/{processUtils-HZZDA2VV.js → processUtils-3IN2ZR55.js} +2 -2
- package/chunks/proper-lockfile-3LHWIM44.js +8 -0
- package/chunks/{pt-VL3I5RNY.js → pt-5BMJ3XYH.js} +8 -0
- package/chunks/{qwenContentGenerator-T75M2Z3B.js → qwenContentGenerator-GSGRFPJE.js} +47 -46
- package/chunks/{qwenOAuth2-5QZU444W.js → qwenOAuth2-JLSTIS4Z.js} +9 -9
- package/chunks/{read-file-LOVUSBJC.js → read-file-6PZZRGZZ.js} +15 -13
- package/chunks/{read-mcp-resource-GWCP23WG.js → read-mcp-resource-XD54ZQMC.js} +2 -2
- package/chunks/{record-artifact-IYQDEYMV.js → record-artifact-GLU3UWBV.js} +5 -3
- package/chunks/{resumeHistoryUtils-LVKSSQII.js → resumeHistoryUtils-5GEWKOOO.js} +49 -48
- package/chunks/ripGrep-FX7GBGFN.js +86 -0
- package/chunks/{ru-4RCKL4PY.js → ru-6GL66ORV.js} +8 -0
- package/chunks/{run-qwen-serve-GZW7B4WK.js → run-qwen-serve-7RHU3NSV.js} +423 -212
- package/chunks/{runtime-MYRXEO2E.js → runtime-EPOXAMLP.js} +52 -51
- package/chunks/{scheduler-DPTPI6FW.js → scheduler-F4Y7ENVV.js} +44 -43
- package/chunks/{sdk-exporters-http-NHBYB5FZ.js → sdk-exporters-http-NC746HLT.js} +3 -3
- package/chunks/{sdk-impl-SK4P5WON.js → sdk-impl-YVL7BP6Y.js} +3 -3
- package/chunks/{send-message-O7FO63UK.js → send-message-TNBG5EVA.js} +7 -7
- package/chunks/{serve-XCG4XCDA.js → serve-LQV4TN5A.js} +49 -50
- package/chunks/{server-AWQHKXLG.js → server-IZCKLIYQ.js} +5042 -1725
- package/chunks/{session-P5FKNCNR.js → session-52ZGTDVB.js} +87 -85
- package/chunks/{settings-CSYVIP2R.js → settings-WCVB34HW.js} +48 -47
- package/chunks/{shell-EGTSUO2P.js → shell-33BIUBLH.js} +42 -41
- package/chunks/{skill-IFUD72GF.js → skill-IYVQ2QNK.js} +20 -18
- package/chunks/{skill-settings-YOE7LBHE.js → skill-settings-YG4ZS4OZ.js} +48 -47
- package/chunks/{spawnChannel-PQSZIOLY.js → spawnChannel-BLA4YT4W.js} +44 -43
- package/chunks/{standalone-update-RB2EGUSF.js → standalone-update-ALRIPWSM.js} +44 -43
- package/chunks/{startInteractiveUI-KMYUJ2MU.js → startInteractiveUI-PISBXWKA.js} +614 -294
- package/chunks/{syntheticOutput-DVHJMUGV.js → syntheticOutput-7GWFIDXT.js} +3 -3
- package/chunks/{task-create-4NC7PDI4.js → task-create-EILHJJB7.js} +11 -11
- package/chunks/{task-list-LBSRMOC7.js → task-list-WGJR6YL5.js} +21 -7
- package/chunks/{task-stop-YFNATTIM.js → task-stop-X37KYTKB.js} +2 -2
- package/chunks/{task-update-BPLM52GD.js → task-update-XZAHVXJ5.js} +86 -15
- package/chunks/{team-create-B6A6MJBT.js → team-create-CIQDCC6A.js} +43 -43
- package/chunks/{team-delete-MKYMYBFM.js → team-delete-UEP4QOOT.js} +6 -6
- package/chunks/{team-plan-approval-5WO3CXXU.js → team-plan-approval-664XCRB4.js} +42 -41
- package/chunks/{terminal-image-renderer-BTRE2GEU.js → terminal-image-renderer-TEBO6ONY.js} +44 -43
- package/chunks/theme-manager-3CIFH2JV.js +90 -0
- package/chunks/{todoWrite-K5K7NRE5.js → todoWrite-ATS62CAP.js} +4 -4
- package/chunks/{tool-search-QNBLXUGR.js → tool-search-IJX5JHJB.js} +19 -17
- package/chunks/{total-session-admission-N4E5SFBO.js → total-session-admission-XBK2NVRV.js} +46 -45
- package/chunks/{trustedFolders-MQS46LIU.js → trustedFolders-OOFNLRWK.js} +43 -42
- package/chunks/{update-relaunch-536KRL33.js → update-relaunch-EIG7EYAQ.js} +5 -5
- package/chunks/{updateCheck-QJI2SYWF.js → updateCheck-KYDCBLSF.js} +46 -45
- package/chunks/{useAutoAcceptIndicator-7QASHD46.js → useAutoAcceptIndicator-RFX3KNBN.js} +52 -51
- package/chunks/{validateNonInterActiveAuth-ZNRGWBLV.js → validateNonInterActiveAuth-MZXSAITU.js} +83 -81
- package/chunks/{version-DBEQAFRW.js → version-PJC6ZNXV.js} +1 -1
- package/chunks/{web-fetch-MBIVXKPE.js → web-fetch-XXICVGKQ.js} +21 -18
- package/chunks/{web-search-4LBIN6VF.js → web-search-LHPM6QWC.js} +9 -9
- package/chunks/{workflow-LNMA55HY.js → workflow-4CUO2BV7.js} +159 -57
- package/chunks/workspace-providers-status-G4MUGH3X.js +101 -0
- package/chunks/{workspace-registration-store-BGRKKIYR.js → workspace-registration-store-QMDMFWBE.js} +2 -2
- package/chunks/{workspace-registry-L4NCJ34K.js → workspace-registry-FKBB4MZK.js} +48 -46
- package/chunks/{workspace-service-LOXYKYTR.js → workspace-service-TIDTTA65.js} +55 -54
- package/chunks/workspace-skills-status-LBC2TZKM.js +101 -0
- package/chunks/{workspace-trust-reconciler-H36TCR2S.js → workspace-trust-reconciler-4KJ567XP.js} +58 -56
- package/chunks/{write-file-JJAY7JSP.js → write-file-R6LAEER5.js} +42 -41
- package/chunks/{zh-TW-SQ4HTSCW.js → zh-TW-LVLBK4KF.js} +8 -0
- package/chunks/{zh-LMSTK4WD.js → zh-UBMWS2BJ.js} +8 -0
- package/chunks/{zoom-image-4MVVVM7E.js → zoom-image-XLCK6DDK.js} +20 -17
- package/cli.js +13 -13
- package/locales/ca.js +13 -0
- package/locales/de.js +12 -0
- package/locales/en.js +11 -0
- package/locales/fr.js +13 -0
- package/locales/ja.js +13 -0
- package/locales/pt.js +12 -0
- package/locales/ru.js +12 -0
- package/locales/zh-TW.js +11 -0
- package/locales/zh.js +11 -0
- package/package.json +3 -3
- package/web-shell/assets/{arc-B-89zHN4.js → arc-DItbX0DI.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-BkcOncHk.js → architectureDiagram-3BPJPVTR-CmnIlH8y.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-DQ4yboaF.js → blockDiagram-GPEHLZMM-pObnB9kw.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-C_8ZjPDI.js → c4Diagram-AAUBKEIU-BNBmMS0Y.js} +1 -1
- package/web-shell/assets/channel-hZnMfWA9.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-naKVe1Bm.js → chunk-2J33WTMH-Dz4JBOO6.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-DdoViKT2.js → chunk-4BX2VUAB-Cz2GnvAR.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-DUDQZEwU.js → chunk-55IACEB6-CC6kOQYx.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-BqpDTR5s.js → chunk-727SXJPM-Z4lY4gbh.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-CdmEknkT.js → chunk-AQP2D5EJ-Yz0hZr3D.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-CH7fFTLB.js → chunk-FMBD7UC4-nKmTWTv9.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-ObgSuFKF.js → chunk-ND2GUHAM-CjZz0f6Y.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-D9fKdv_s.js → chunk-QZHKN3VN-Bab3FpuS.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-BRnxm8DX.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BRnxm8DX.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-CvzATMx9.js → cose-bilkent-S5V4N54A-BuSAGFox.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-M_xU21QW.js → dagre-BM42HDAG-CRZXTg3g.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-CNrl9sW1.js → diagram-2AECGRRQ-BFx1Ayrz.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-CUweVT6T.js → diagram-5GNKFQAL-B2hMZ3gS.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-D3n6Lxjo.js → diagram-KO2AKTUF-DKxAQLmc.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-0SeFPK4t.js → diagram-LMA3HP47-Bo1xGqVY.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-DAgyEwge.js → diagram-OG6HWLK6-B9NG78d-.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-CzxBBDIK.js → erDiagram-TEJ5UH35-DltQKiqQ.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-B0uj0jyo.js → flowDiagram-I6XJVG4X-5xXGmS4I.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-DFzcj5km.js → ganttDiagram-6RSMTGT7-bhGL5n0l.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-DylJ_Fc9.js → gitGraphDiagram-PVQCEYII-ZYnz9hgh.js} +1 -1
- package/web-shell/assets/{index-BKSAnXU9.js → index-CBBeUArD.js} +1 -1
- package/web-shell/assets/index-CbgU-jUo.css +5 -0
- package/web-shell/assets/index-_nhzXqab.js +1750 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-BYMcJVMI.js → infoDiagram-5YYISTIA-Cg-jamQf.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-t1quI1S3.js → ishikawaDiagram-YF4QCWOH-CcmvKlyq.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-YM_QVUJm.js → journeyDiagram-JHISSGLW-BRsOQZp1.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-jw8OddK1.js → kanban-definition-UN3LZRKU-xW-dmEHK.js} +1 -1
- package/web-shell/assets/{linear-Dlr3RVuP.js → linear-ClBfEZH2.js} +1 -1
- package/web-shell/assets/{mermaid.core-CqGKzNzd.js → mermaid.core-D65NDkzc.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-BqureoOS.js → mindmap-definition-RKZ34NQL-CyvFslYa.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-Da20HkK1.js → pieDiagram-4H26LBE5-BwSefMyG.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-BsNlMvJy.js → quadrantDiagram-W4KKPZXB-GqBJspFS.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-DzVCQCse.js → requirementDiagram-4Y6WPE33-B137PlTJ.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-BMo16voT.js → sankeyDiagram-5OEKKPKP-maHkkt8i.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-Bgi-pdHk.js → sequenceDiagram-3UESZ5HK-DJ1mRaG3.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-xaPQXwGk.js → stateDiagram-AJRCARHV-aRmP7Q4i.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-Db39gvZ_.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-C_9RuvKG.js → timeline-definition-PNZ67QCA-CIQ3BRPA.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-Bgu6vdla.js → vennDiagram-CIIHVFJN-DR9VPd5h.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-CFTZ8IrX.js → wardley-L42UT6IY-ZcfIbT4D.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-BASW9Vmt.js → wardleyDiagram-YWT4CUSO-D0jgPi4T.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6--Nh-CD3F.js → xychartDiagram-2RQKCTM6-BGWU4s5o.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/agent-headless-OEQNFOMH.js +0 -87
- package/chunks/chunk-DEDESZDL.js +0 -358
- package/chunks/chunk-MPHPFVKK.js +0 -48
- package/chunks/chunk-UI5UGEF4.js +0 -3576
- package/chunks/daemon-status-provider-QYM57Z44.js +0 -102
- package/chunks/daemon-trust-policy-TSRVEYZR.js +0 -99
- package/chunks/discovery-XLHITE74.js +0 -220
- package/chunks/exitPlanMode-WDURQMIU.js +0 -85
- package/chunks/handleAutoUpdate-GN7Z6QAC.js +0 -94
- package/chunks/initializer-UA6KQ7MS.js +0 -100
- package/chunks/list-GRAMIQOT.js +0 -103
- package/chunks/loadedSettingsAdapter-5O2TDS3I.js +0 -97
- package/chunks/mcp-XLP33CAI.js +0 -97
- package/chunks/nonInteractiveCli-KTA5K6FS.js +0 -163
- package/chunks/ripGrep-ZJSHKB6H.js +0 -85
- package/chunks/theme-manager-XL2N5SBY.js +0 -89
- package/chunks/workspace-providers-status-PDDMI6ST.js +0 -100
- package/chunks/workspace-skills-status-IJ5FOQI6.js +0 -100
- package/web-shell/assets/channel-Du2WFns8.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-Zw0HafH6.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-Zw0HafH6.js +0 -1
- package/web-shell/assets/index-BIGQygTL.css +0 -5
- package/web-shell/assets/index-J7OMTqAN.js +0 -1789
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-D5RqimXD.js +0 -1
- package/chunks/{chunk-SYHXR6WM.js → chunk-4W5U2TUT.js} +3 -3
- /package/chunks/{chunk-NTTBXH7U.js → chunk-UGK4K2N2.js} +0 -0
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
import {
|
|
11
11
|
TUI_CHAT_RECORDING_FAILURE_MESSAGE,
|
|
12
12
|
reportChatRecordingFailureToAdapter
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-I7NTHW4C.js";
|
|
14
14
|
import {
|
|
15
15
|
MAX_SUGGESTIONS_TO_SHOW,
|
|
16
16
|
SESSION_MENTION_PREFIX,
|
|
@@ -22,10 +22,10 @@ import {
|
|
|
22
22
|
matchMcpServerPrefix,
|
|
23
23
|
resolveAtCommandQuery,
|
|
24
24
|
sanitizeDisplayText
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-NV6LW6FT.js";
|
|
26
26
|
import {
|
|
27
27
|
StreamJsonOutputAdapter
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-6VDPDHIP.js";
|
|
29
29
|
import {
|
|
30
30
|
BuiltinCommandLoader,
|
|
31
31
|
BundledSkillLoader,
|
|
@@ -34,6 +34,7 @@ import {
|
|
|
34
34
|
FileCommandLoader,
|
|
35
35
|
MAX_STACKED_SKILLS,
|
|
36
36
|
McpPromptLoader,
|
|
37
|
+
SLASH_COMMANDS_SKIP_RECORDING,
|
|
37
38
|
SavedWorkflowLoader,
|
|
38
39
|
SkillCommandLoader,
|
|
39
40
|
addConfigToMatcherGroup,
|
|
@@ -69,17 +70,18 @@ import {
|
|
|
69
70
|
resetBackgroundStateForSessionSwitch,
|
|
70
71
|
serializeUserPromptExpansionPrompt,
|
|
71
72
|
supportsMatchers
|
|
72
|
-
} from "./chunk-
|
|
73
|
+
} from "./chunk-XO24LIZC.js";
|
|
74
|
+
import "./chunk-X3YA3YGG.js";
|
|
73
75
|
import {
|
|
74
76
|
startPostRenderPrefetches
|
|
75
|
-
} from "./chunk-
|
|
77
|
+
} from "./chunk-AQBHJ2IG.js";
|
|
76
78
|
import {
|
|
77
79
|
EXTENSION_RELOAD_FAILED_REASON,
|
|
78
80
|
ExtensionRefreshState,
|
|
79
81
|
appEvents,
|
|
80
82
|
cleanupReviewWorktreeLeases,
|
|
81
83
|
loadHierarchicalGeminiMemory
|
|
82
|
-
} from "./chunk-
|
|
84
|
+
} from "./chunk-KSGWAYNE.js";
|
|
83
85
|
import {
|
|
84
86
|
AboutBox,
|
|
85
87
|
BaseSelectionList,
|
|
@@ -157,20 +159,21 @@ import {
|
|
|
157
159
|
useUIActions,
|
|
158
160
|
useUIState,
|
|
159
161
|
useVirtualViewport
|
|
160
|
-
} from "./chunk-
|
|
162
|
+
} from "./chunk-U6RZRKNM.js";
|
|
161
163
|
import {
|
|
162
164
|
getCommandDisplayName,
|
|
163
165
|
getCommandSourceBadge
|
|
164
|
-
} from "./chunk-
|
|
166
|
+
} from "./chunk-PMS7O6SA.js";
|
|
165
167
|
import {
|
|
166
168
|
computeSessionStats,
|
|
167
169
|
levelLabel
|
|
168
|
-
} from "./chunk-
|
|
170
|
+
} from "./chunk-73G3Z7QS.js";
|
|
171
|
+
import "./chunk-4WGODMVR.js";
|
|
169
172
|
import {
|
|
170
173
|
MaxSizedBox,
|
|
171
174
|
OverflowProvider,
|
|
172
175
|
useOverflowState
|
|
173
|
-
} from "./chunk-
|
|
176
|
+
} from "./chunk-J63PKMYA.js";
|
|
174
177
|
import {
|
|
175
178
|
GeminiRespondingSpinner,
|
|
176
179
|
GeminiSpinner,
|
|
@@ -187,7 +190,7 @@ import {
|
|
|
187
190
|
useStreamingContext,
|
|
188
191
|
waitForGoalRuntime,
|
|
189
192
|
wrapAnsi
|
|
190
|
-
} from "./chunk-
|
|
193
|
+
} from "./chunk-LLR424CQ.js";
|
|
191
194
|
import {
|
|
192
195
|
formatDuration,
|
|
193
196
|
formatRelativeTime,
|
|
@@ -195,10 +198,10 @@ import {
|
|
|
195
198
|
} from "./chunk-3SH53ANB.js";
|
|
196
199
|
import {
|
|
197
200
|
theme
|
|
198
|
-
} from "./chunk-
|
|
201
|
+
} from "./chunk-6QFDQMQX.js";
|
|
199
202
|
import {
|
|
200
203
|
stopAndGetCapturedInput
|
|
201
|
-
} from "./chunk-
|
|
204
|
+
} from "./chunk-YZOSNW4R.js";
|
|
202
205
|
import {
|
|
203
206
|
disableKittyProtocol,
|
|
204
207
|
isKittyProtocolEnabled,
|
|
@@ -207,13 +210,13 @@ import {
|
|
|
207
210
|
} from "./chunk-NYX53SV4.js";
|
|
208
211
|
import {
|
|
209
212
|
useAutoAcceptIndicator
|
|
210
|
-
} from "./chunk-
|
|
213
|
+
} from "./chunk-DZCV3ZYU.js";
|
|
211
214
|
import {
|
|
212
215
|
KeypressProvider,
|
|
213
216
|
useFocus,
|
|
214
217
|
useKeypress,
|
|
215
218
|
useKeypressContext
|
|
216
|
-
} from "./chunk-
|
|
219
|
+
} from "./chunk-RXHBTKMG.js";
|
|
217
220
|
import {
|
|
218
221
|
BEL,
|
|
219
222
|
OSC_PREFIX,
|
|
@@ -226,25 +229,10 @@ import {
|
|
|
226
229
|
oscKittyNotify,
|
|
227
230
|
saveClipboardImage,
|
|
228
231
|
writeOsc52
|
|
229
|
-
} from "./chunk-
|
|
232
|
+
} from "./chunk-SNQZZ765.js";
|
|
230
233
|
import {
|
|
231
234
|
require_jsx_runtime
|
|
232
235
|
} from "./chunk-SV5PQVQE.js";
|
|
233
|
-
import "./chunk-62X3CM7Q.js";
|
|
234
|
-
import "./chunk-4WGODMVR.js";
|
|
235
|
-
import {
|
|
236
|
-
setUpdateHandler
|
|
237
|
-
} from "./chunk-WDVDVWJ3.js";
|
|
238
|
-
import {
|
|
239
|
-
isHistoryItemVisibleAfterRestore
|
|
240
|
-
} from "./chunk-EKTCKZV5.js";
|
|
241
|
-
import "./chunk-B4VN3VDH.js";
|
|
242
|
-
import {
|
|
243
|
-
AUTO_THEME_NAME,
|
|
244
|
-
DEFAULT_THEME,
|
|
245
|
-
themeManager
|
|
246
|
-
} from "./chunk-OYWVIXHT.js";
|
|
247
|
-
import "./chunk-KW7NOTN6.js";
|
|
248
236
|
import {
|
|
249
237
|
Box_default,
|
|
250
238
|
Static,
|
|
@@ -259,34 +247,47 @@ import {
|
|
|
259
247
|
use_stdin_default,
|
|
260
248
|
use_stdout_default
|
|
261
249
|
} from "./chunk-2IIJTXYF.js";
|
|
250
|
+
import {
|
|
251
|
+
relaunchApp
|
|
252
|
+
} from "./chunk-MCG53LWC.js";
|
|
253
|
+
import {
|
|
254
|
+
setUpdateHandler
|
|
255
|
+
} from "./chunk-VHPMDDPT.js";
|
|
256
|
+
import {
|
|
257
|
+
isHistoryItemVisibleAfterRestore
|
|
258
|
+
} from "./chunk-EKTCKZV5.js";
|
|
259
|
+
import "./chunk-2OA3JMRD.js";
|
|
260
|
+
import {
|
|
261
|
+
AUTO_THEME_NAME,
|
|
262
|
+
DEFAULT_THEME,
|
|
263
|
+
themeManager
|
|
264
|
+
} from "./chunk-2M55OBEB.js";
|
|
265
|
+
import "./chunk-KW7NOTN6.js";
|
|
262
266
|
import {
|
|
263
267
|
require_react
|
|
264
268
|
} from "./chunk-5QWWOFGG.js";
|
|
265
|
-
import "./chunk-
|
|
269
|
+
import "./chunk-K3CECR5C.js";
|
|
266
270
|
import {
|
|
267
271
|
getErrorMessage as getErrorMessage2
|
|
268
|
-
} from "./chunk-
|
|
269
|
-
import "./chunk-
|
|
270
|
-
import "./chunk-
|
|
272
|
+
} from "./chunk-LRDB2OLB.js";
|
|
273
|
+
import "./chunk-4KQ2TI2K.js";
|
|
274
|
+
import "./chunk-4V4DFJBS.js";
|
|
271
275
|
import "./chunk-YAF2MQZ6.js";
|
|
272
|
-
import "./chunk-
|
|
276
|
+
import "./chunk-IA2K2HJE.js";
|
|
273
277
|
import {
|
|
274
278
|
MAX_INLINE_IMAGES_PER_ITEM,
|
|
275
279
|
collectInlineImages,
|
|
276
280
|
getInlineImageData
|
|
277
|
-
} from "./chunk-
|
|
278
|
-
import
|
|
279
|
-
relaunchApp
|
|
280
|
-
} from "./chunk-DFVXU5YM.js";
|
|
281
|
-
import "./chunk-TDESMS7M.js";
|
|
281
|
+
} from "./chunk-SXCOEJO4.js";
|
|
282
|
+
import "./chunk-RAQBBGS6.js";
|
|
282
283
|
import "./chunk-6H67XLET.js";
|
|
283
284
|
import {
|
|
284
285
|
openQwenAsrRealtimeStream,
|
|
285
286
|
openVoiceStream,
|
|
286
287
|
openVoiceStreamWithRetry
|
|
287
|
-
} from "./chunk-
|
|
288
|
-
import "./chunk-
|
|
289
|
-
import "./chunk-
|
|
288
|
+
} from "./chunk-WSSH2BNO.js";
|
|
289
|
+
import "./chunk-EOCQCNV4.js";
|
|
290
|
+
import "./chunk-OVY67CYC.js";
|
|
290
291
|
import {
|
|
291
292
|
cpLen,
|
|
292
293
|
cpSlice,
|
|
@@ -298,8 +299,8 @@ import {
|
|
|
298
299
|
sanitizeTerminalText,
|
|
299
300
|
stripUnsafeCharacters,
|
|
300
301
|
toCodePoints
|
|
301
|
-
} from "./chunk-
|
|
302
|
-
import "./chunk-
|
|
302
|
+
} from "./chunk-E7REAOTN.js";
|
|
303
|
+
import "./chunk-57KOJ2KZ.js";
|
|
303
304
|
import {
|
|
304
305
|
stringWidth
|
|
305
306
|
} from "./chunk-2MIN6GRR.js";
|
|
@@ -315,40 +316,42 @@ import {
|
|
|
315
316
|
isStreamingVoiceModel,
|
|
316
317
|
resolveVoiceStreamConfig,
|
|
317
318
|
transcribeVoiceAudio
|
|
318
|
-
} from "./chunk-
|
|
319
|
+
} from "./chunk-PPTM4O4R.js";
|
|
319
320
|
import {
|
|
320
321
|
formatUnsupportedVoiceModelMessage,
|
|
321
322
|
isSelectableVoiceModel
|
|
322
|
-
} from "./chunk-
|
|
323
|
-
import "./chunk-
|
|
323
|
+
} from "./chunk-7OCSX7FC.js";
|
|
324
|
+
import "./chunk-WGHHA7ZH.js";
|
|
324
325
|
import {
|
|
325
326
|
getExtendedSystemInfo
|
|
326
|
-
} from "./chunk-
|
|
327
|
+
} from "./chunk-G6FFFICU.js";
|
|
328
|
+
import "./chunk-7U5G6JXI.js";
|
|
329
|
+
import "./chunk-WCCLLK7X.js";
|
|
327
330
|
import {
|
|
328
331
|
isInlineModelOverrideAllowed
|
|
329
|
-
} from "./chunk-
|
|
332
|
+
} from "./chunk-ISRHAMNL.js";
|
|
330
333
|
import {
|
|
331
334
|
computeWorkspaceSkillListUpdates,
|
|
332
335
|
resolveSkillSettings,
|
|
333
336
|
skillSettingStrings
|
|
334
337
|
} from "./chunk-Z4X5MTRT.js";
|
|
335
|
-
import "./chunk-
|
|
338
|
+
import "./chunk-2JXDFSVE.js";
|
|
336
339
|
import {
|
|
337
340
|
requestConsentInteractive,
|
|
338
341
|
requestConsentOrFail
|
|
339
|
-
} from "./chunk-
|
|
342
|
+
} from "./chunk-HGPMOXLZ.js";
|
|
340
343
|
import "./chunk-57OAHC2Y.js";
|
|
341
|
-
import "./chunk-
|
|
344
|
+
import "./chunk-NRPXRNN4.js";
|
|
342
345
|
import "./chunk-45NQKMYB.js";
|
|
343
|
-
import "./chunk-
|
|
346
|
+
import "./chunk-5IYS4WWR.js";
|
|
347
|
+
import "./chunk-V6WHFGST.js";
|
|
344
348
|
import {
|
|
345
349
|
createLoadedSettingsAdapter
|
|
346
|
-
} from "./chunk-
|
|
347
|
-
import "./chunk-7U5G6JXI.js";
|
|
348
|
-
import "./chunk-WCCLLK7X.js";
|
|
350
|
+
} from "./chunk-FCTLOVYW.js";
|
|
349
351
|
import "./chunk-ZLCT4C5A.js";
|
|
350
|
-
import "./chunk-V6WHFGST.js";
|
|
351
352
|
import "./chunk-2AUM35J5.js";
|
|
353
|
+
import "./chunk-DRKYT2TR.js";
|
|
354
|
+
import "./chunk-WP4WIUOJ.js";
|
|
352
355
|
import "./chunk-6PLDPT2C.js";
|
|
353
356
|
import "./chunk-FYJ7W2PI.js";
|
|
354
357
|
import "./chunk-YP5KH5Y7.js";
|
|
@@ -357,12 +360,12 @@ import "./chunk-ALMR3E6Q.js";
|
|
|
357
360
|
import "./chunk-HIBNSEJE.js";
|
|
358
361
|
import "./chunk-M5GB774H.js";
|
|
359
362
|
import "./chunk-3VUENPWF.js";
|
|
360
|
-
import "./chunk-3AEKDXKT.js";
|
|
361
363
|
import "./chunk-AW27A43Y.js";
|
|
362
364
|
import "./chunk-IW6RQPQB.js";
|
|
365
|
+
import "./chunk-H4A72DE5.js";
|
|
363
366
|
import {
|
|
364
367
|
loadMcpApprovals
|
|
365
|
-
} from "./chunk-
|
|
368
|
+
} from "./chunk-QECSDJET.js";
|
|
366
369
|
import {
|
|
367
370
|
CORRUPTED_SUFFIX,
|
|
368
371
|
SettingScope,
|
|
@@ -384,11 +387,11 @@ import {
|
|
|
384
387
|
settingExistsInScope,
|
|
385
388
|
validateSettingValue,
|
|
386
389
|
writeOutputLanguageAndRegisterPath
|
|
387
|
-
} from "./chunk-
|
|
390
|
+
} from "./chunk-OLZSWUZR.js";
|
|
388
391
|
import "./chunk-RKUWKYED.js";
|
|
389
392
|
import {
|
|
390
393
|
TOGGLE_TYPES
|
|
391
|
-
} from "./chunk-
|
|
394
|
+
} from "./chunk-YFPZ3NNC.js";
|
|
392
395
|
import "./chunk-GOXKNSDZ.js";
|
|
393
396
|
import "./chunk-IDS7MSUP.js";
|
|
394
397
|
import {
|
|
@@ -396,25 +399,24 @@ import {
|
|
|
396
399
|
localizeToolDisplayName,
|
|
397
400
|
t,
|
|
398
401
|
ta
|
|
399
|
-
} from "./chunk-
|
|
402
|
+
} from "./chunk-IOTPI425.js";
|
|
400
403
|
import "./chunk-5EJZE3FP.js";
|
|
401
|
-
import "./chunk-
|
|
402
|
-
import "./chunk-
|
|
403
|
-
import "./chunk-
|
|
404
|
+
import "./chunk-SGLPDKRT.js";
|
|
405
|
+
import "./chunk-CXJHQVEK.js";
|
|
406
|
+
import "./chunk-NF5J2WFA.js";
|
|
404
407
|
import {
|
|
405
408
|
getCliVersion
|
|
406
|
-
} from "./chunk-
|
|
409
|
+
} from "./chunk-6DFPR7CS.js";
|
|
407
410
|
import "./chunk-WZMH7II3.js";
|
|
408
411
|
import {
|
|
409
412
|
isWorkspaceTrusted,
|
|
410
413
|
loadTrustedFolders
|
|
411
|
-
} from "./chunk-
|
|
414
|
+
} from "./chunk-YXC7JYUI.js";
|
|
412
415
|
import {
|
|
413
416
|
require_strip_json_comments
|
|
414
417
|
} from "./chunk-NPQ5ZKRP.js";
|
|
415
418
|
import "./chunk-MR3PXB6E.js";
|
|
416
419
|
import "./chunk-XFSFZCM5.js";
|
|
417
|
-
import "./chunk-NF5J2WFA.js";
|
|
418
420
|
import {
|
|
419
421
|
ALIBABA_PROVIDERS,
|
|
420
422
|
AsyncFzf,
|
|
@@ -507,6 +509,7 @@ import {
|
|
|
507
509
|
readWorktreeSessionMarker,
|
|
508
510
|
refreshMemoryAfterManagedWrite,
|
|
509
511
|
refreshMemoryInstruction,
|
|
512
|
+
registerSession,
|
|
510
513
|
resolveBaseUrl,
|
|
511
514
|
resolveBranchName,
|
|
512
515
|
resolveMetadataKey,
|
|
@@ -520,88 +523,84 @@ import {
|
|
|
520
523
|
validateWorkflowName,
|
|
521
524
|
watchRepoBranch,
|
|
522
525
|
writeRuntimeStatus
|
|
523
|
-
} from "./chunk-
|
|
526
|
+
} from "./chunk-XC377TLN.js";
|
|
524
527
|
import "./chunk-GOFAQQZA.js";
|
|
525
528
|
import "./chunk-5M6IDOMF.js";
|
|
526
529
|
import {
|
|
527
530
|
stripAnsi
|
|
528
531
|
} from "./chunk-TWPJO254.js";
|
|
529
532
|
import "./chunk-CQ35AJ4Z.js";
|
|
530
|
-
import "./chunk-
|
|
531
|
-
import "./chunk-
|
|
532
|
-
import "./chunk-
|
|
533
|
-
import "./chunk-
|
|
533
|
+
import "./chunk-FS5NGKWC.js";
|
|
534
|
+
import "./chunk-SLILKYV2.js";
|
|
535
|
+
import "./chunk-NVRMCWTP.js";
|
|
536
|
+
import "./chunk-AKBOLMUF.js";
|
|
534
537
|
import "./chunk-6PVPNMXU.js";
|
|
535
538
|
import {
|
|
536
539
|
resolveModelId
|
|
537
|
-
} from "./chunk-
|
|
540
|
+
} from "./chunk-SR2LYSMT.js";
|
|
538
541
|
import "./chunk-IRH27ZC2.js";
|
|
539
542
|
import "./chunk-QHWCP53L.js";
|
|
540
|
-
import "./chunk-
|
|
541
|
-
import "./chunk-
|
|
543
|
+
import "./chunk-OBJYN4MX.js";
|
|
544
|
+
import "./chunk-2C6HJMG3.js";
|
|
542
545
|
import {
|
|
543
546
|
promptIdContext
|
|
544
547
|
} from "./chunk-O6GEWCJA.js";
|
|
545
548
|
import "./chunk-T26EAKDL.js";
|
|
546
549
|
import "./chunk-ZPJWUGCS.js";
|
|
547
550
|
import "./chunk-CPBF7KYF.js";
|
|
548
|
-
import
|
|
549
|
-
|
|
551
|
+
import {
|
|
552
|
+
APPROVAL_MODES
|
|
553
|
+
} from "./chunk-RWDNJBWN.js";
|
|
554
|
+
import "./chunk-WPVUOVYX.js";
|
|
550
555
|
import {
|
|
551
556
|
HOOKS_CONFIG_FIELDS
|
|
552
|
-
} from "./chunk-
|
|
553
|
-
import "./chunk-
|
|
554
|
-
import "./chunk-
|
|
557
|
+
} from "./chunk-MIPFDQAF.js";
|
|
558
|
+
import "./chunk-MLXTMF7H.js";
|
|
559
|
+
import "./chunk-KV27IEHM.js";
|
|
560
|
+
import "./chunk-E3DYKPYZ.js";
|
|
555
561
|
import {
|
|
556
562
|
elapsedActiveTime,
|
|
557
563
|
goalRequiresExactPermit
|
|
558
|
-
} from "./chunk-
|
|
559
|
-
import
|
|
560
|
-
|
|
561
|
-
} from "./chunk-63FNZTWG.js";
|
|
562
|
-
import "./chunk-3GM5DLBI.js";
|
|
563
|
-
import "./chunk-K34GJQOZ.js";
|
|
564
|
+
} from "./chunk-4ZMS3JCR.js";
|
|
565
|
+
import "./chunk-DGJ7O55J.js";
|
|
566
|
+
import "./chunk-OO4FKHLO.js";
|
|
564
567
|
import "./chunk-SAH4BD2J.js";
|
|
565
|
-
import "./chunk-
|
|
568
|
+
import "./chunk-XLLKYULU.js";
|
|
566
569
|
import {
|
|
567
570
|
runOutsideAgentContext
|
|
568
|
-
} from "./chunk-
|
|
571
|
+
} from "./chunk-PT4I7NBA.js";
|
|
569
572
|
import "./chunk-S6LOFUVP.js";
|
|
570
573
|
import "./chunk-2J3OJGTL.js";
|
|
571
574
|
import {
|
|
572
575
|
getStartupContextLength,
|
|
573
576
|
isSystemReminderContent
|
|
574
|
-
} from "./chunk-
|
|
577
|
+
} from "./chunk-SG7ZP5PG.js";
|
|
575
578
|
import "./chunk-K623ENWT.js";
|
|
576
579
|
import "./chunk-AQ37AY7B.js";
|
|
577
580
|
import {
|
|
578
581
|
isPathWithinRoot
|
|
579
|
-
} from "./chunk-
|
|
582
|
+
} from "./chunk-KBXKR5R2.js";
|
|
580
583
|
import {
|
|
581
584
|
osc8Hyperlink,
|
|
582
585
|
qwenOAuth2Events,
|
|
583
586
|
sanitizeForOsc,
|
|
584
587
|
supportsHyperlinks,
|
|
585
588
|
wrapForMultiplexer
|
|
586
|
-
} from "./chunk-
|
|
589
|
+
} from "./chunk-I3N2Z25H.js";
|
|
587
590
|
import "./chunk-NAVJD2PQ.js";
|
|
588
|
-
import "./chunk-
|
|
589
|
-
import "./chunk-
|
|
591
|
+
import "./chunk-ROIYNTHJ.js";
|
|
592
|
+
import "./chunk-2B2BF7P7.js";
|
|
590
593
|
import "./chunk-P3QQPMQA.js";
|
|
591
|
-
import "./chunk-
|
|
592
|
-
import "./chunk-
|
|
594
|
+
import "./chunk-YZHRN3CF.js";
|
|
595
|
+
import "./chunk-FAAUPSY2.js";
|
|
593
596
|
import {
|
|
594
597
|
REASONING_EFFORT_TIERS,
|
|
595
598
|
applyReasoningEffort
|
|
596
599
|
} from "./chunk-KM73TBQ4.js";
|
|
597
|
-
import {
|
|
598
|
-
getUnsupportedImageFormatWarning,
|
|
599
|
-
isSupportedImageMimeType
|
|
600
|
-
} from "./chunk-MPHPFVKK.js";
|
|
601
600
|
import "./chunk-AXMWHKXA.js";
|
|
602
601
|
import "./chunk-GLCZKT5V.js";
|
|
603
602
|
import "./chunk-DJ2GSRLV.js";
|
|
604
|
-
import "./chunk-
|
|
603
|
+
import "./chunk-QFJ5JHQR.js";
|
|
605
604
|
import {
|
|
606
605
|
ApiCancelEvent,
|
|
607
606
|
AuthEvent,
|
|
@@ -617,7 +616,6 @@ import {
|
|
|
617
616
|
addMCPStatusChangeListener,
|
|
618
617
|
formatFullTurnVisionNotice,
|
|
619
618
|
formatVisionBridgeNotice,
|
|
620
|
-
getAllGeminiMdFilenames,
|
|
621
619
|
getAllMCPServerStatuses,
|
|
622
620
|
getFullTurnVisionModelSelector,
|
|
623
621
|
getMCPServerStatus,
|
|
@@ -641,45 +639,52 @@ import {
|
|
|
641
639
|
runVisionBridge,
|
|
642
640
|
shouldRunVisionBridge,
|
|
643
641
|
splitImageParts
|
|
644
|
-
} from "./chunk-
|
|
642
|
+
} from "./chunk-KC4WMLZO.js";
|
|
645
643
|
import "./chunk-YRLW2MSX.js";
|
|
646
644
|
import "./chunk-VGC4I5JJ.js";
|
|
645
|
+
import {
|
|
646
|
+
getAllGeminiMdFilenames
|
|
647
|
+
} from "./chunk-3PWCMXIR.js";
|
|
647
648
|
import {
|
|
648
649
|
AUTO_MEMORY_INDEX_FILENAME,
|
|
649
650
|
getAutoMemoryProjectStateDir,
|
|
650
651
|
getAutoMemoryRoot,
|
|
651
652
|
getUserAutoMemoryRoot,
|
|
652
653
|
isAnyAutoMemPath
|
|
653
|
-
} from "./chunk-
|
|
654
|
+
} from "./chunk-CHHABXPE.js";
|
|
654
655
|
import {
|
|
655
656
|
runSideQuery
|
|
656
|
-
} from "./chunk-
|
|
657
|
-
import "./chunk-
|
|
657
|
+
} from "./chunk-MA2HEDVP.js";
|
|
658
|
+
import "./chunk-XUJNK7Y6.js";
|
|
658
659
|
import {
|
|
659
660
|
ToolNames,
|
|
660
661
|
isShellProgressData
|
|
661
|
-
} from "./chunk-
|
|
662
|
-
import "./chunk-
|
|
662
|
+
} from "./chunk-6HY6IF3Z.js";
|
|
663
|
+
import "./chunk-QIHHJKXT.js";
|
|
663
664
|
import {
|
|
664
665
|
MAINLINE_CODER_MODEL
|
|
665
666
|
} from "./chunk-F6WFNA7U.js";
|
|
666
|
-
import "./chunk-
|
|
667
|
+
import "./chunk-WZAD4ZNJ.js";
|
|
667
668
|
import {
|
|
668
669
|
DEFAULT_TOKEN_LIMIT
|
|
669
670
|
} from "./chunk-FPGTNKCP.js";
|
|
670
|
-
import
|
|
671
|
-
|
|
671
|
+
import {
|
|
672
|
+
getUnsupportedImageFormatWarning,
|
|
673
|
+
isSupportedImageMimeType
|
|
674
|
+
} from "./chunk-YHC2EYYG.js";
|
|
675
|
+
import "./chunk-CPHEPGAO.js";
|
|
676
|
+
import "./chunk-DVR7XKO5.js";
|
|
672
677
|
import {
|
|
673
678
|
atomicWriteFileSync
|
|
674
|
-
} from "./chunk-
|
|
679
|
+
} from "./chunk-YECDICIO.js";
|
|
675
680
|
import {
|
|
676
681
|
endInteractionSpan,
|
|
677
682
|
getActiveInteractionSpan,
|
|
678
683
|
isBinary,
|
|
679
684
|
redactUrlCredentials
|
|
680
|
-
} from "./chunk-
|
|
685
|
+
} from "./chunk-XT4RKHVE.js";
|
|
681
686
|
import "./chunk-HHJLM3WQ.js";
|
|
682
|
-
import "./chunk-
|
|
687
|
+
import "./chunk-D34RDOLP.js";
|
|
683
688
|
import {
|
|
684
689
|
Storage,
|
|
685
690
|
UnauthorizedError,
|
|
@@ -691,13 +696,13 @@ import {
|
|
|
691
696
|
isNodeError,
|
|
692
697
|
shortenPath,
|
|
693
698
|
tildeifyPath
|
|
694
|
-
} from "./chunk-
|
|
699
|
+
} from "./chunk-BUQDLC2G.js";
|
|
695
700
|
import "./chunk-VOQXFAY5.js";
|
|
696
|
-
import "./chunk-
|
|
701
|
+
import "./chunk-TNPWODIZ.js";
|
|
697
702
|
import {
|
|
698
703
|
registerCleanup,
|
|
699
704
|
runExitCleanup
|
|
700
|
-
} from "./chunk-
|
|
705
|
+
} from "./chunk-L6CCLB3G.js";
|
|
701
706
|
import {
|
|
702
707
|
finalizeStartupProfile,
|
|
703
708
|
profileCheckpoint
|
|
@@ -2376,6 +2381,7 @@ function isSyntheticHistoryItem(item) {
|
|
|
2376
2381
|
case "gemini_content":
|
|
2377
2382
|
case "tool_group":
|
|
2378
2383
|
case "btw":
|
|
2384
|
+
case "advisor":
|
|
2379
2385
|
case "memory_saved":
|
|
2380
2386
|
case "about":
|
|
2381
2387
|
case "help":
|
|
@@ -27867,6 +27873,7 @@ function AgentViewProvider({
|
|
|
27867
27873
|
const switchToAgent = (0, import_react94.useCallback)(
|
|
27868
27874
|
(agentId) => {
|
|
27869
27875
|
if (agents.has(agentId)) {
|
|
27876
|
+
setAgentShellFocused(false);
|
|
27870
27877
|
setActiveView(agentId);
|
|
27871
27878
|
}
|
|
27872
27879
|
},
|
|
@@ -27876,14 +27883,24 @@ function AgentViewProvider({
|
|
|
27876
27883
|
const ids = ["main", ...agents.keys()];
|
|
27877
27884
|
const currentIndex = ids.indexOf(activeView);
|
|
27878
27885
|
const nextIndex = (currentIndex + 1) % ids.length;
|
|
27886
|
+
setAgentShellFocused(false);
|
|
27879
27887
|
setActiveView(ids[nextIndex]);
|
|
27880
27888
|
}, [agents, activeView]);
|
|
27881
27889
|
const switchToPrevious = (0, import_react94.useCallback)(() => {
|
|
27882
27890
|
const ids = ["main", ...agents.keys()];
|
|
27883
27891
|
const currentIndex = ids.indexOf(activeView);
|
|
27884
27892
|
const prevIndex = (currentIndex - 1 + ids.length) % ids.length;
|
|
27893
|
+
setAgentShellFocused(false);
|
|
27885
27894
|
setActiveView(ids[prevIndex]);
|
|
27886
27895
|
}, [agents, activeView]);
|
|
27896
|
+
const initialViewRef = (0, import_react94.useRef)(true);
|
|
27897
|
+
(0, import_react94.useEffect)(() => {
|
|
27898
|
+
if (initialViewRef.current) {
|
|
27899
|
+
initialViewRef.current = false;
|
|
27900
|
+
return;
|
|
27901
|
+
}
|
|
27902
|
+
setAgentShellFocused(false);
|
|
27903
|
+
}, [activeView]);
|
|
27887
27904
|
const registerAgent = (0, import_react94.useCallback)(
|
|
27888
27905
|
(agentId, interactiveAgent, modelId, color, modelName) => {
|
|
27889
27906
|
setAgents((prev) => {
|
|
@@ -33015,22 +33032,54 @@ var AgentChatMissing = /* @__PURE__ */ __name(({ label }) => /* @__PURE__ */ (0,
|
|
|
33015
33032
|
|
|
33016
33033
|
// packages/cli/src/ui/components/agent-view/AgentChatView.tsx
|
|
33017
33034
|
var import_jsx_runtime126 = __toESM(require_jsx_runtime(), 1);
|
|
33035
|
+
var debugLogger31 = createDebugLogger("AGENT_TAB_RENDER");
|
|
33018
33036
|
var AgentChatView = /* @__PURE__ */ __name(({ agentId }) => {
|
|
33019
33037
|
const { agents } = useAgentViewState();
|
|
33038
|
+
const { setAgentShellFocused } = useAgentViewActions();
|
|
33020
33039
|
const agent = agents.get(agentId);
|
|
33021
33040
|
const interactiveAgent = agent?.interactiveAgent;
|
|
33022
33041
|
const core = interactiveAgent?.getCore();
|
|
33023
33042
|
if (!agent || !interactiveAgent || !core) {
|
|
33024
33043
|
return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(AgentChatMissing, { label: `Agent "${agentId}" not found.` });
|
|
33025
33044
|
}
|
|
33026
|
-
return
|
|
33027
|
-
|
|
33028
|
-
|
|
33029
|
-
|
|
33030
|
-
|
|
33031
|
-
|
|
33032
|
-
|
|
33033
|
-
|
|
33045
|
+
return (
|
|
33046
|
+
// Non-fatal per-tab containment (#9290): the app-level boundary is
|
|
33047
|
+
// FATAL — a render error that reaches it logs [FATAL_RENDER_ERROR]
|
|
33048
|
+
// and exits the whole session. An errored or incomplete teammate
|
|
33049
|
+
// whose transcript throws during render must degrade THIS tab only,
|
|
33050
|
+
// keeping the session and the other tabs alive. Keyed by agentId so
|
|
33051
|
+
// switching tabs starts from fresh boundary state: one crashed tab
|
|
33052
|
+
// must not strand every later tab in its fallback.
|
|
33053
|
+
/* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
|
|
33054
|
+
ErrorBoundary,
|
|
33055
|
+
{
|
|
33056
|
+
fallback: (error) => /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(Box_default, { flexDirection: "column", paddingX: 1, children: [
|
|
33057
|
+
/* @__PURE__ */ (0, import_jsx_runtime126.jsx)(Text, { color: theme.status.error, bold: true, children: "Something went wrong while rendering this agent tab." }),
|
|
33058
|
+
/* @__PURE__ */ (0, import_jsx_runtime126.jsx)(Text, { color: theme.text.secondary, children: sanitizeTerminalText(error.message) }),
|
|
33059
|
+
/* @__PURE__ */ (0, import_jsx_runtime126.jsx)(Text, { color: theme.text.secondary, dimColor: true, children: "The session is still running; other tabs are unaffected." }),
|
|
33060
|
+
/* @__PURE__ */ (0, import_jsx_runtime126.jsx)(Text, { color: theme.text.secondary, dimColor: true, children: "Switch to another tab and back to retry rendering this tab." }),
|
|
33061
|
+
/* @__PURE__ */ (0, import_jsx_runtime126.jsx)(Text, { color: theme.text.secondary, dimColor: true, children: "Set QWEN_DEBUG_LOG_FILE=1 and reproduce for a full log." })
|
|
33062
|
+
] }),
|
|
33063
|
+
onError: (error, info) => {
|
|
33064
|
+
setAgentShellFocused(false);
|
|
33065
|
+
debugLogger31.error(
|
|
33066
|
+
`[AGENT_TAB_RENDER_ERROR] agentId=${agentId} ${error.message}
|
|
33067
|
+
${info.componentStack ?? ""}
|
|
33068
|
+
${error.stack ?? ""}`
|
|
33069
|
+
);
|
|
33070
|
+
},
|
|
33071
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
|
|
33072
|
+
AgentChatContent,
|
|
33073
|
+
{
|
|
33074
|
+
core,
|
|
33075
|
+
interactiveAgent,
|
|
33076
|
+
instanceKey: agentId,
|
|
33077
|
+
modelName: agent.modelName
|
|
33078
|
+
}
|
|
33079
|
+
)
|
|
33080
|
+
},
|
|
33081
|
+
agentId
|
|
33082
|
+
)
|
|
33034
33083
|
);
|
|
33035
33084
|
}, "AgentChatView");
|
|
33036
33085
|
|
|
@@ -33857,7 +33906,7 @@ function installTerminalRedrawOptimizer(stdout) {
|
|
|
33857
33906
|
__name(installTerminalRedrawOptimizer, "installTerminalRedrawOptimizer");
|
|
33858
33907
|
|
|
33859
33908
|
// packages/cli/src/ui/utils/terminal-resize-reflow.ts
|
|
33860
|
-
var
|
|
33909
|
+
var debugLogger32 = createDebugLogger("RESIZE_REFLOW");
|
|
33861
33910
|
var CLEAR_VIEWPORT = base_exports.clearViewport;
|
|
33862
33911
|
var ESC2 = "\x1B[";
|
|
33863
33912
|
var CLEAR_TERMINAL = base_exports.clearTerminal;
|
|
@@ -33935,7 +33984,7 @@ function installTerminalResizeReflow(stdout, options = {}) {
|
|
|
33935
33984
|
let barePrintableCount = 0;
|
|
33936
33985
|
let handoffUntil = 0;
|
|
33937
33986
|
let clearUntil = 0;
|
|
33938
|
-
|
|
33987
|
+
debugLogger32.debug("installed", { width: lastWidth, isVP });
|
|
33939
33988
|
const modelFrame = /* @__PURE__ */ __name((content, bypassMin = false) => {
|
|
33940
33989
|
if (!bypassMin && content.split("\n").length < MIN_FRAME_LINES) return;
|
|
33941
33990
|
model.content = content;
|
|
@@ -33944,7 +33993,7 @@ function installTerminalResizeReflow(stdout, options = {}) {
|
|
|
33944
33993
|
}, "modelFrame");
|
|
33945
33994
|
const onResize = /* @__PURE__ */ __name(() => {
|
|
33946
33995
|
const width = stdout.columns ?? lastWidth;
|
|
33947
|
-
|
|
33996
|
+
debugLogger32.debug("resize-event", {
|
|
33948
33997
|
width,
|
|
33949
33998
|
lastWidth,
|
|
33950
33999
|
modeled: model.content.length > 0
|
|
@@ -33955,7 +34004,7 @@ function installTerminalResizeReflow(stdout, options = {}) {
|
|
|
33955
34004
|
} else {
|
|
33956
34005
|
pendingAmplify = reflowModel(model, width);
|
|
33957
34006
|
}
|
|
33958
|
-
|
|
34007
|
+
debugLogger32.debug("shrink", {
|
|
33959
34008
|
from: lastWidth,
|
|
33960
34009
|
to: width,
|
|
33961
34010
|
pendingAmplify,
|
|
@@ -33983,9 +34032,9 @@ function installTerminalResizeReflow(stdout, options = {}) {
|
|
|
33983
34032
|
barePrintableCount = 0;
|
|
33984
34033
|
handoffUntil = Date.now() + HANDOFF_WINDOW_MS;
|
|
33985
34034
|
}
|
|
33986
|
-
|
|
34035
|
+
debugLogger32.debug("match", { printable });
|
|
33987
34036
|
if (isVP && Date.now() < clearUntil) {
|
|
33988
|
-
|
|
34037
|
+
debugLogger32.debug("clear-viewport");
|
|
33989
34038
|
chunk = chunk.slice(0, match.index) + CLEAR_VIEWPORT + chunk.slice(match.index + match[0].length);
|
|
33990
34039
|
} else if (pendingAmplify > 0) {
|
|
33991
34040
|
const count = countOccurrences(match[0], ERASE_LINE);
|
|
@@ -33997,7 +34046,7 @@ function installTerminalResizeReflow(stdout, options = {}) {
|
|
|
33997
34046
|
CURSOR_DOWN_PATTERN,
|
|
33998
34047
|
(_m, n) => `${ESC2}${Number(n) + delta}B`
|
|
33999
34048
|
);
|
|
34000
|
-
|
|
34049
|
+
debugLogger32.debug("amplify", { original: count, target });
|
|
34001
34050
|
chunk = prefix + base_exports.eraseLines(target) + chunk.slice(match.index + match[0].length);
|
|
34002
34051
|
}
|
|
34003
34052
|
}
|
|
@@ -34050,7 +34099,7 @@ var import_react117 = __toESM(require_react(), 1);
|
|
|
34050
34099
|
import process12 from "node:process";
|
|
34051
34100
|
import os4 from "node:os";
|
|
34052
34101
|
import v8 from "v8";
|
|
34053
|
-
var
|
|
34102
|
+
var debugLogger33 = createDebugLogger("MEMORY_MONITOR");
|
|
34054
34103
|
var MEMORY_WARNING_THRESHOLD = Math.min(
|
|
34055
34104
|
7 * 1024 * 1024 * 1024,
|
|
34056
34105
|
Math.floor(os4.totalmem() * 0.85)
|
|
@@ -34072,23 +34121,23 @@ var useMemoryMonitor = /* @__PURE__ */ __name(({
|
|
|
34072
34121
|
const rss = memUsage.rss / 1024 / 1024;
|
|
34073
34122
|
const external = memUsage.external / 1024 / 1024;
|
|
34074
34123
|
const arrayBuffers = memUsage.arrayBuffers / 1024 / 1024;
|
|
34075
|
-
if (
|
|
34076
|
-
|
|
34124
|
+
if (debugLogger33.isEnabled()) {
|
|
34125
|
+
debugLogger33.debug(
|
|
34077
34126
|
`[MEMORY_USAGE] heapUsed=${heapUsed.toFixed(1)}MB, heapTotal=${heapTotal.toFixed(1)}MB, rss=${rss.toFixed(1)}MB, external=${external.toFixed(1)}MB, arrayBuffers=${arrayBuffers.toFixed(1)}MB, heapUtilization=${(heapUsed / heapTotal * 100).toFixed(1)}%`
|
|
34078
34127
|
);
|
|
34079
34128
|
}
|
|
34080
34129
|
const now = Date.now();
|
|
34081
34130
|
if (compactOldItems && memUsage.heapUsed > MEMORY_UI_COMPACT_THRESHOLD() && now - lastCompactRef.current > UI_COMPACT_COOLDOWN_MS) {
|
|
34082
34131
|
lastCompactRef.current = now;
|
|
34083
|
-
if (
|
|
34084
|
-
|
|
34132
|
+
if (debugLogger33.isEnabled()) {
|
|
34133
|
+
debugLogger33.debug(
|
|
34085
34134
|
`[UI_COMPACT] heapUsed=${heapUsed.toFixed(1)}MB exceeds ${(MEMORY_UI_COMPACT_THRESHOLD() / 1024 / 1024).toFixed(0)}MB threshold, compacting UI history`
|
|
34086
34135
|
);
|
|
34087
34136
|
}
|
|
34088
34137
|
try {
|
|
34089
34138
|
compactOldItems();
|
|
34090
34139
|
} catch (err) {
|
|
34091
|
-
|
|
34140
|
+
debugLogger33.error(
|
|
34092
34141
|
`[UI_COMPACT] compactOldItems failed: ${err instanceof Error ? err.message : String(err)}`
|
|
34093
34142
|
);
|
|
34094
34143
|
}
|
|
@@ -34097,7 +34146,7 @@ var useMemoryMonitor = /* @__PURE__ */ __name(({
|
|
|
34097
34146
|
const warningIntervalId = setInterval(() => {
|
|
34098
34147
|
const usage = process12.memoryUsage();
|
|
34099
34148
|
if (usage.rss > MEMORY_WARNING_THRESHOLD) {
|
|
34100
|
-
|
|
34149
|
+
debugLogger33.warn(
|
|
34101
34150
|
`[MEMORY_WARNING] High memory usage detected: ${(usage.rss / (1024 * 1024 * 1024)).toFixed(2)} GB`
|
|
34102
34151
|
);
|
|
34103
34152
|
addItem(
|
|
@@ -34250,7 +34299,7 @@ var FEEDBACK_SHOW_PROBABILITY = 0.25;
|
|
|
34250
34299
|
var MIN_TOOL_CALLS = 10;
|
|
34251
34300
|
var MIN_USER_MESSAGES = 5;
|
|
34252
34301
|
var FEEDBACK_COOLDOWN_HOURS = 24;
|
|
34253
|
-
var
|
|
34302
|
+
var debugLogger34 = createDebugLogger("FEEDBACK_DIALOG");
|
|
34254
34303
|
var lastMessageIsAIResponse = /* @__PURE__ */ __name((history) => history.length > 0 && history[history.length - 1].type === "gemini" /* GEMINI */, "lastMessageIsAIResponse");
|
|
34255
34304
|
var getFeedbackLastShownTimestampFromFile = /* @__PURE__ */ __name(() => {
|
|
34256
34305
|
try {
|
|
@@ -34262,7 +34311,7 @@ var getFeedbackLastShownTimestampFromFile = /* @__PURE__ */ __name(() => {
|
|
|
34262
34311
|
}
|
|
34263
34312
|
} catch (error) {
|
|
34264
34313
|
if (isNodeError(error) && error.code !== "ENOENT") {
|
|
34265
|
-
|
|
34314
|
+
debugLogger34.warn(
|
|
34266
34315
|
"Failed to read feedbackLastShownTimestamp from settings file:",
|
|
34267
34316
|
error
|
|
34268
34317
|
);
|
|
@@ -35111,7 +35160,7 @@ __name(useDeleteCommand, "useDeleteCommand");
|
|
|
35111
35160
|
init_esbuild_shims();
|
|
35112
35161
|
var import_react129 = __toESM(require_react(), 1);
|
|
35113
35162
|
import process15 from "node:process";
|
|
35114
|
-
var
|
|
35163
|
+
var debugLogger35 = createDebugLogger("SLASH_COMMAND_PROCESSOR");
|
|
35115
35164
|
function hasUserPromptExpansionHooks(config) {
|
|
35116
35165
|
return !!config && !config.getDisableAllHooks?.() && (config.hasHooksForEvent?.("UserPromptExpansion") ?? false);
|
|
35117
35166
|
}
|
|
@@ -35124,18 +35173,6 @@ function serializeHistoryItemForRecording(item) {
|
|
|
35124
35173
|
return clone;
|
|
35125
35174
|
}
|
|
35126
35175
|
__name(serializeHistoryItemForRecording, "serializeHistoryItemForRecording");
|
|
35127
|
-
var SLASH_COMMANDS_SKIP_RECORDING = /* @__PURE__ */ new Set([
|
|
35128
|
-
"quit",
|
|
35129
|
-
"exit",
|
|
35130
|
-
"clear",
|
|
35131
|
-
"reset",
|
|
35132
|
-
"new",
|
|
35133
|
-
"resume",
|
|
35134
|
-
"delete",
|
|
35135
|
-
"branch",
|
|
35136
|
-
"btw",
|
|
35137
|
-
"history"
|
|
35138
|
-
]);
|
|
35139
35176
|
var SLASH_COMMAND_ROOTS_HIDE_INVOCATION = /* @__PURE__ */ new Set([
|
|
35140
35177
|
"auth",
|
|
35141
35178
|
"diff",
|
|
@@ -35694,7 +35731,7 @@ var useSlashCommandProcessor = /* @__PURE__ */ __name((config, settings, history
|
|
|
35694
35731
|
}
|
|
35695
35732
|
setCommands(commandService.getCommandsForMode("interactive"));
|
|
35696
35733
|
} catch (error) {
|
|
35697
|
-
|
|
35734
|
+
debugLogger35.error("Failed to load slash commands:", error);
|
|
35698
35735
|
} finally {
|
|
35699
35736
|
if (!controller.signal.aborted) {
|
|
35700
35737
|
resolveCommandReloads(reloadTrigger);
|
|
@@ -36126,7 +36163,7 @@ var useSlashCommandProcessor = /* @__PURE__ */ __name((config, settings, history
|
|
|
36126
36163
|
}
|
|
36127
36164
|
invocationSentToModel = true;
|
|
36128
36165
|
if (invocationItemId !== void 0) {
|
|
36129
|
-
|
|
36166
|
+
debugLogger35.debug(
|
|
36130
36167
|
`Marked slash command invocation as model-sent: /${resolvedCommandPath.join(
|
|
36131
36168
|
" "
|
|
36132
36169
|
)}`
|
|
@@ -36258,7 +36295,8 @@ ${commandToExecute.subCommands.map((sc) => ` - ${sc.name}: ${sc.description ||
|
|
|
36258
36295
|
if (config?.getChatRecordingService) {
|
|
36259
36296
|
const chatRecorder = config.getChatRecordingService();
|
|
36260
36297
|
const primaryCommand = resolvedCommandPath[0] || trimmed.replace(/^[/?]/, "").split(/\s+/u)[0] || trimmed;
|
|
36261
|
-
const
|
|
36298
|
+
const isBuiltInAdvisor = primaryCommand === "advisor" && commandToExecute?.kind === "built-in" /* BUILT_IN */;
|
|
36299
|
+
const shouldRecord = !delegatedToRecursiveInvocation && !isBuiltInAdvisor && !SLASH_COMMANDS_SKIP_RECORDING.has(primaryCommand);
|
|
36262
36300
|
try {
|
|
36263
36301
|
if (shouldRecord) {
|
|
36264
36302
|
chatRecorder?.recordSlashCommand({
|
|
@@ -36275,7 +36313,7 @@ ${commandToExecute.subCommands.map((sc) => ` - ${sc.name}: ${sc.description ||
|
|
|
36275
36313
|
});
|
|
36276
36314
|
}
|
|
36277
36315
|
} catch (recordError) {
|
|
36278
|
-
|
|
36316
|
+
debugLogger35.error(
|
|
36279
36317
|
"[slashCommand] Failed to record slash command:",
|
|
36280
36318
|
recordError
|
|
36281
36319
|
);
|
|
@@ -36452,7 +36490,7 @@ import os5 from "node:os";
|
|
|
36452
36490
|
import fs16 from "node:fs";
|
|
36453
36491
|
var OUTPUT_UPDATE_INTERVAL_MS = 1e3;
|
|
36454
36492
|
var MAX_OUTPUT_LENGTH = 1e4;
|
|
36455
|
-
var
|
|
36493
|
+
var debugLogger36 = createDebugLogger("SHELL_COMMAND_PROCESSOR");
|
|
36456
36494
|
function copyString(value) {
|
|
36457
36495
|
return value.split("").join("");
|
|
36458
36496
|
}
|
|
@@ -36603,7 +36641,7 @@ var useShellCommandProcessor = /* @__PURE__ */ __name((addItemToHistory, setPend
|
|
|
36603
36641
|
config.getShouldUseNodePtyShell(),
|
|
36604
36642
|
shellExecutionConfig
|
|
36605
36643
|
);
|
|
36606
|
-
|
|
36644
|
+
debugLogger36.debug(terminalHeight, terminalWidth);
|
|
36607
36645
|
executionPid = pid;
|
|
36608
36646
|
if (pid) {
|
|
36609
36647
|
setActiveShellPtyId(pid);
|
|
@@ -36757,7 +36795,7 @@ var useStateAndRef = /* @__PURE__ */ __name((initialValue) => {
|
|
|
36757
36795
|
init_esbuild_shims();
|
|
36758
36796
|
var import_react134 = __toESM(require_react(), 1);
|
|
36759
36797
|
import * as path11 from "node:path";
|
|
36760
|
-
var
|
|
36798
|
+
var debugLogger37 = createDebugLogger("REACT_TOOL_SCHEDULER");
|
|
36761
36799
|
function useReactToolScheduler(onComplete, config, getPreferredEditor, onEditorClose, onToolResultFullTurnModel) {
|
|
36762
36800
|
const [toolCallsForDisplay, setToolCallsForDisplay] = (0, import_react134.useState)([]);
|
|
36763
36801
|
const outputUpdateHandler = (0, import_react134.useCallback)(
|
|
@@ -36834,7 +36872,12 @@ function useReactToolScheduler(onComplete, config, getPreferredEditor, onEditorC
|
|
|
36834
36872
|
const schedule = (0, import_react134.useCallback)(
|
|
36835
36873
|
(request, signal, modelOverride) => {
|
|
36836
36874
|
if (!modelOverride?.endsWith("\0")) {
|
|
36837
|
-
void scheduler.schedule(request, signal)
|
|
36875
|
+
void scheduler.schedule(request, signal).catch((error) => {
|
|
36876
|
+
if (signal.aborted) return;
|
|
36877
|
+
debugLogger37.error(
|
|
36878
|
+
`Tool scheduling failed: ${error instanceof Error ? error.message : String(error)}`
|
|
36879
|
+
);
|
|
36880
|
+
});
|
|
36838
36881
|
return;
|
|
36839
36882
|
}
|
|
36840
36883
|
void (async () => {
|
|
@@ -36844,7 +36887,7 @@ function useReactToolScheduler(onComplete, config, getPreferredEditor, onEditorC
|
|
|
36844
36887
|
});
|
|
36845
36888
|
await scheduler.schedule(request, signal, runtimeView);
|
|
36846
36889
|
} catch (error) {
|
|
36847
|
-
|
|
36890
|
+
debugLogger37.error(
|
|
36848
36891
|
`Full-turn tool scheduling failed: ${error instanceof Error ? error.message : String(error)}`
|
|
36849
36892
|
);
|
|
36850
36893
|
const message = "Full-turn tool scheduling failed. The tool was not executed.";
|
|
@@ -36912,7 +36955,7 @@ function mapCoreStatusToDisplayStatus(coreStatus) {
|
|
|
36912
36955
|
return "Pending" /* Pending */;
|
|
36913
36956
|
default: {
|
|
36914
36957
|
const exhaustiveCheck = coreStatus;
|
|
36915
|
-
|
|
36958
|
+
debugLogger37.warn(`Unknown core status encountered: ${exhaustiveCheck}`);
|
|
36916
36959
|
return "Error" /* Error */;
|
|
36917
36960
|
}
|
|
36918
36961
|
}
|
|
@@ -37260,11 +37303,11 @@ function useMessageQueue() {
|
|
|
37260
37303
|
__name(useMessageQueue, "useMessageQueue");
|
|
37261
37304
|
|
|
37262
37305
|
// packages/cli/src/ui/hooks/useGeminiStream.ts
|
|
37263
|
-
var
|
|
37306
|
+
var debugLogger38 = createDebugLogger("GEMINI_STREAM");
|
|
37264
37307
|
function applyModelOverride(modelOverrideRef, inlineActiveRef, value, isInline) {
|
|
37265
37308
|
modelOverrideRef.current = value;
|
|
37266
37309
|
inlineActiveRef.current = isInline;
|
|
37267
|
-
|
|
37310
|
+
debugLogger38.debug(
|
|
37268
37311
|
`model override ${value === void 0 ? "cleared" : `set to ${value}`} (inline=${isInline})`
|
|
37269
37312
|
);
|
|
37270
37313
|
}
|
|
@@ -37473,20 +37516,20 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
37473
37516
|
expectedRevision: binding.permit.revision
|
|
37474
37517
|
});
|
|
37475
37518
|
} catch (error) {
|
|
37476
|
-
|
|
37519
|
+
debugLogger38.warn("Failed to pause invalid Goal tool batch", error);
|
|
37477
37520
|
}
|
|
37478
37521
|
}
|
|
37479
37522
|
try {
|
|
37480
37523
|
await config.getChatRecordingService()?.flush();
|
|
37481
37524
|
} catch (error) {
|
|
37482
|
-
|
|
37525
|
+
debugLogger38.warn("Failed to flush invalid Goal tool batch", error);
|
|
37483
37526
|
}
|
|
37484
37527
|
const currentPermit = runtime.permitForTurn(binding.turnKey);
|
|
37485
37528
|
if (currentPermit && sameGoalPermit(currentPermit, binding.permit)) {
|
|
37486
37529
|
await runtime.finishTurn(binding.permit);
|
|
37487
37530
|
}
|
|
37488
37531
|
} catch (error) {
|
|
37489
|
-
|
|
37532
|
+
debugLogger38.warn("Failed to close invalid Goal tool batch", error);
|
|
37490
37533
|
} finally {
|
|
37491
37534
|
releaseGoalTurn(binding);
|
|
37492
37535
|
}
|
|
@@ -37500,7 +37543,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
37500
37543
|
const runtime = await config.getGoalRuntimeReady();
|
|
37501
37544
|
await runtime.releaseTurn(turnKey);
|
|
37502
37545
|
} catch (error) {
|
|
37503
|
-
|
|
37546
|
+
debugLogger38.warn(
|
|
37504
37547
|
`Failed to release undelivered Goal turn ${turnKey}`,
|
|
37505
37548
|
error
|
|
37506
37549
|
);
|
|
@@ -37542,6 +37585,38 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
37542
37585
|
const dualOutput = useDualOutput();
|
|
37543
37586
|
const [isResponding, setIsResponding] = (0, import_react136.useState)(false);
|
|
37544
37587
|
const activeModelStreamsRef = (0, import_react136.useRef)(0);
|
|
37588
|
+
const submissionActivitiesByGenerationRef = (0, import_react136.useRef)(/* @__PURE__ */ new Map());
|
|
37589
|
+
const settleSubmissionStateIfIdle = (0, import_react136.useCallback)(() => {
|
|
37590
|
+
const currentGeneration = submissionLeaseGenerationRef.current;
|
|
37591
|
+
if ((submissionActivitiesByGenerationRef.current.get(currentGeneration) ?? 0) === 0 && activeModelStreamsRef.current === 0) {
|
|
37592
|
+
setIsResponding(false);
|
|
37593
|
+
setSubmissionInFlight(false);
|
|
37594
|
+
}
|
|
37595
|
+
}, [setSubmissionInFlight]);
|
|
37596
|
+
const retainSubmissionActivity = (0, import_react136.useCallback)(
|
|
37597
|
+
(generation) => {
|
|
37598
|
+
submissionActivitiesByGenerationRef.current.set(
|
|
37599
|
+
generation,
|
|
37600
|
+
(submissionActivitiesByGenerationRef.current.get(generation) ?? 0) + 1
|
|
37601
|
+
);
|
|
37602
|
+
return () => {
|
|
37603
|
+
const remainingActivities = Math.max(
|
|
37604
|
+
0,
|
|
37605
|
+
(submissionActivitiesByGenerationRef.current.get(generation) ?? 1) - 1
|
|
37606
|
+
);
|
|
37607
|
+
if (remainingActivities === 0) {
|
|
37608
|
+
submissionActivitiesByGenerationRef.current.delete(generation);
|
|
37609
|
+
} else {
|
|
37610
|
+
submissionActivitiesByGenerationRef.current.set(
|
|
37611
|
+
generation,
|
|
37612
|
+
remainingActivities
|
|
37613
|
+
);
|
|
37614
|
+
}
|
|
37615
|
+
settleSubmissionStateIfIdle();
|
|
37616
|
+
};
|
|
37617
|
+
},
|
|
37618
|
+
[settleSubmissionStateIfIdle]
|
|
37619
|
+
);
|
|
37545
37620
|
const [thought, setThought] = (0, import_react136.useState)(null);
|
|
37546
37621
|
const historyRef = (0, import_react136.useRef)(history);
|
|
37547
37622
|
(0, import_react136.useLayoutEffect)(() => {
|
|
@@ -37624,6 +37699,15 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
37624
37699
|
const interactionOwnersByToolCallIdRef = (0, import_react136.useRef)(
|
|
37625
37700
|
/* @__PURE__ */ new Map()
|
|
37626
37701
|
);
|
|
37702
|
+
const continuationOwnersByToolCallIdRef = (0, import_react136.useRef)(
|
|
37703
|
+
/* @__PURE__ */ new Map()
|
|
37704
|
+
);
|
|
37705
|
+
const detachedToolContinuationAbortControllersRef = (0, import_react136.useRef)(
|
|
37706
|
+
/* @__PURE__ */ new Set()
|
|
37707
|
+
);
|
|
37708
|
+
const pendingCompletedToolBatchesRef = (0, import_react136.useRef)([]);
|
|
37709
|
+
const handleCompletedToolsRef = (0, import_react136.useRef)(async () => {
|
|
37710
|
+
});
|
|
37627
37711
|
const immediateDuplicateToolResponsesRef = (0, import_react136.useRef)(null);
|
|
37628
37712
|
const streamingResponseLengthRef = (0, import_react136.useRef)(0);
|
|
37629
37713
|
const [isReceivingContent, setIsReceivingContent] = (0, import_react136.useState)(false);
|
|
@@ -37636,15 +37720,20 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
37636
37720
|
const [toolCalls, scheduleToolCalls, markToolsAsSubmitted] = useReactToolScheduler(
|
|
37637
37721
|
async (completedToolCallsFromScheduler) => {
|
|
37638
37722
|
if (completedToolCallsFromScheduler.length > 0) {
|
|
37639
|
-
const
|
|
37640
|
-
|
|
37641
|
-
|
|
37642
|
-
|
|
37643
|
-
|
|
37644
|
-
|
|
37645
|
-
|
|
37646
|
-
|
|
37647
|
-
|
|
37723
|
+
const releaseToolCompletionActivity = isSubmittingQueryRef.current ? retainSubmissionActivity(submissionLeaseGenerationRef.current) : void 0;
|
|
37724
|
+
try {
|
|
37725
|
+
const projectRoot = config.getProjectRoot();
|
|
37726
|
+
const toolGroupDisplay = mapToDisplay(
|
|
37727
|
+
completedToolCallsFromScheduler,
|
|
37728
|
+
projectRoot
|
|
37729
|
+
);
|
|
37730
|
+
addItem(toolGroupDisplay, Date.now());
|
|
37731
|
+
await handleCompletedTools(
|
|
37732
|
+
completedToolCallsFromScheduler
|
|
37733
|
+
);
|
|
37734
|
+
} finally {
|
|
37735
|
+
releaseToolCompletionActivity?.();
|
|
37736
|
+
}
|
|
37648
37737
|
}
|
|
37649
37738
|
},
|
|
37650
37739
|
config,
|
|
@@ -37782,10 +37871,14 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
37782
37871
|
}
|
|
37783
37872
|
}, [streamingState, config, history]);
|
|
37784
37873
|
const cancelOngoingRequest = (0, import_react136.useCallback)(() => {
|
|
37785
|
-
if (
|
|
37874
|
+
if (turnCancelledRef.current) {
|
|
37875
|
+
for (const controller of detachedToolContinuationAbortControllersRef.current) {
|
|
37876
|
+
controller.abort();
|
|
37877
|
+
}
|
|
37878
|
+
detachedToolContinuationAbortControllersRef.current.clear();
|
|
37786
37879
|
return;
|
|
37787
37880
|
}
|
|
37788
|
-
if (
|
|
37881
|
+
if (streamingState !== "responding" /* Responding */) {
|
|
37789
37882
|
return;
|
|
37790
37883
|
}
|
|
37791
37884
|
for (const flushBufferedStreamEvents of flushBufferedStreamEventsRef.current) {
|
|
@@ -37795,7 +37888,15 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
37795
37888
|
turnCancelledRef.current = true;
|
|
37796
37889
|
submissionLeaseGenerationRef.current += 1;
|
|
37797
37890
|
setSubmissionInFlight(false);
|
|
37798
|
-
abortControllerRef.current
|
|
37891
|
+
const foregroundAbortController = abortControllerRef.current;
|
|
37892
|
+
if (foregroundAbortController && !foregroundAbortController.signal.aborted) {
|
|
37893
|
+
foregroundAbortController.abort();
|
|
37894
|
+
} else {
|
|
37895
|
+
for (const controller of detachedToolContinuationAbortControllersRef.current) {
|
|
37896
|
+
controller.abort();
|
|
37897
|
+
}
|
|
37898
|
+
detachedToolContinuationAbortControllersRef.current.clear();
|
|
37899
|
+
}
|
|
37799
37900
|
const activeInteractionPromptId = activeInteractionPromptIdRef.current;
|
|
37800
37901
|
const activeInteractionOwner = activeInteractionOwnerRef.current;
|
|
37801
37902
|
if (activeInteractionPromptId && activeInteractionOwner && getActiveInteractionSpan(activeInteractionPromptId) === activeInteractionOwner) {
|
|
@@ -37881,7 +37982,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
37881
37982
|
if (signal.aborted) {
|
|
37882
37983
|
return { parts: null, shouldProceed: false };
|
|
37883
37984
|
}
|
|
37884
|
-
|
|
37985
|
+
debugLogger38.debug("vision bridge: gate matched, running conversion");
|
|
37885
37986
|
const fullTurnModel = config.getDefaultVisionBridgeModel();
|
|
37886
37987
|
if (fullTurnModel?.agentCapable) {
|
|
37887
37988
|
const fullTurnParts = (Array.isArray(parts) ? parts : [parts]).map(
|
|
@@ -37906,7 +38007,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
37906
38007
|
return { parts: fullTurnParts, shouldProceed: true };
|
|
37907
38008
|
}
|
|
37908
38009
|
const bridgeResult = await runVisionBridge({ config, parts, signal });
|
|
37909
|
-
|
|
38010
|
+
debugLogger38.debug(
|
|
37910
38011
|
`vision bridge: status=${bridgeResult.status} applied=${bridgeResult.applied} model=${bridgeResult.modelId ?? "(none)"}`
|
|
37911
38012
|
);
|
|
37912
38013
|
if (bridgeResult.status !== "skipped" || bridgeResult.egressOccurred) {
|
|
@@ -37931,7 +38032,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
37931
38032
|
);
|
|
37932
38033
|
const prepareQueryForGemini = (0, import_react136.useCallback)(
|
|
37933
38034
|
async (query, userMessageTimestamp, abortSignal, prompt_id, submitType, submittedPrompt, preserveTurnOwnership) => {
|
|
37934
|
-
if (turnCancelledRef.current) {
|
|
38035
|
+
if (turnCancelledRef.current && !preserveTurnOwnership) {
|
|
37935
38036
|
return { queryToSend: null, shouldProceed: false };
|
|
37936
38037
|
}
|
|
37937
38038
|
if (typeof query === "string" && query.trim().length === 0) {
|
|
@@ -37971,7 +38072,11 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
37971
38072
|
prompt_id
|
|
37972
38073
|
};
|
|
37973
38074
|
scheduleToolCalls([toolCallRequest], abortSignal);
|
|
37974
|
-
return {
|
|
38075
|
+
return {
|
|
38076
|
+
queryToSend: null,
|
|
38077
|
+
shouldProceed: false,
|
|
38078
|
+
scheduledToolCallId: toolCallRequest.callId
|
|
38079
|
+
};
|
|
37975
38080
|
}
|
|
37976
38081
|
case "submit_prompt": {
|
|
37977
38082
|
localQueryToSendToGemini = slashCommandResult.content;
|
|
@@ -37991,7 +38096,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
37991
38096
|
true
|
|
37992
38097
|
);
|
|
37993
38098
|
} else {
|
|
37994
|
-
|
|
38099
|
+
debugLogger38.warn(
|
|
37995
38100
|
`ignoring model override '${slashCommandResult.modelOverride}': not a model on the active provider`
|
|
37996
38101
|
);
|
|
37997
38102
|
}
|
|
@@ -38228,8 +38333,8 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
38228
38333
|
setThought((prev) => {
|
|
38229
38334
|
const incomingDescription = incoming.description ? clampLoadingThoughtDescription(incoming.description) : incoming.description;
|
|
38230
38335
|
if (!prev) {
|
|
38231
|
-
if (
|
|
38232
|
-
|
|
38336
|
+
if (debugLogger38.isEnabled()) {
|
|
38337
|
+
debugLogger38.debug(
|
|
38233
38338
|
`[THOUGHT_MERGE] New thought: subjectLength=${incoming.subject?.length ?? 0}, description length=${incomingDescription?.length ?? 0}`
|
|
38234
38339
|
);
|
|
38235
38340
|
}
|
|
@@ -38242,8 +38347,8 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
38242
38347
|
const description = clampLoadingThoughtDescription(
|
|
38243
38348
|
`${prev.description ?? ""}${incomingDescription ?? ""}`
|
|
38244
38349
|
);
|
|
38245
|
-
if (
|
|
38246
|
-
|
|
38350
|
+
if (debugLogger38.isEnabled()) {
|
|
38351
|
+
debugLogger38.debug(
|
|
38247
38352
|
`[THOUGHT_MERGE] Accumulating thought: prev length=${prev.description?.length ?? 0}, incoming length=${incomingDescription?.length ?? 0}, total length=${description.length}`
|
|
38248
38353
|
);
|
|
38249
38354
|
}
|
|
@@ -38404,7 +38509,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
38404
38509
|
eventValue.error.message,
|
|
38405
38510
|
formattedErrorText
|
|
38406
38511
|
).catch((err) => {
|
|
38407
|
-
|
|
38512
|
+
debugLogger38.warn(`StopFailure hook failed: ${err}`);
|
|
38408
38513
|
});
|
|
38409
38514
|
},
|
|
38410
38515
|
[
|
|
@@ -38596,7 +38701,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
38596
38701
|
[addItem, commitItemInOrder, pendingHistoryItemRef, setPendingHistoryItem]
|
|
38597
38702
|
);
|
|
38598
38703
|
const processGeminiStreamEvents = (0, import_react136.useCallback)(
|
|
38599
|
-
async (stream, userMessageTimestamp, signal, submitType, turnAdmission, promptId, trackInteractionOwner = true) => {
|
|
38704
|
+
async (stream, userMessageTimestamp, signal, submitType, turnAdmission, promptId, trackInteractionOwner = true, toolContinuationOwner) => {
|
|
38600
38705
|
let geminiMessageBuffer = "";
|
|
38601
38706
|
let thoughtBuffer = "";
|
|
38602
38707
|
let scheduledToolContinuation = false;
|
|
@@ -38609,6 +38714,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
38609
38714
|
0
|
|
38610
38715
|
);
|
|
38611
38716
|
const toolCallRequests = [];
|
|
38717
|
+
let streamInteractionOwner = trackInteractionOwner ? activeInteractionOwnerRef.current : void 0;
|
|
38612
38718
|
const bufferedEvents = [];
|
|
38613
38719
|
let flushTimer = null;
|
|
38614
38720
|
const discardBufferedStreamEvents = /* @__PURE__ */ __name(() => {
|
|
@@ -38732,8 +38838,11 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
38732
38838
|
dualOutput?.startAssistantMessage();
|
|
38733
38839
|
try {
|
|
38734
38840
|
for await (const event of stream) {
|
|
38735
|
-
if (
|
|
38736
|
-
|
|
38841
|
+
if (!streamInteractionOwner && promptId) {
|
|
38842
|
+
streamInteractionOwner = getActiveInteractionSpan(promptId);
|
|
38843
|
+
if (trackInteractionOwner && streamInteractionOwner) {
|
|
38844
|
+
activeInteractionOwnerRef.current ??= streamInteractionOwner;
|
|
38845
|
+
}
|
|
38737
38846
|
}
|
|
38738
38847
|
dualOutput?.processEvent(event);
|
|
38739
38848
|
switch (event.type) {
|
|
@@ -39006,7 +39115,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
39006
39115
|
duplicateProviderToolCallResponseIdsRef.current
|
|
39007
39116
|
);
|
|
39008
39117
|
if (repeatedDuplicateRequest?.providerCallId) {
|
|
39009
|
-
|
|
39118
|
+
debugLogger38.debug(
|
|
39010
39119
|
`[processGeminiStreamEvents] Dropping batch after repeated duplicate provider tool-call id: ${repeatedDuplicateRequest.providerCallId} (tool: ${repeatedDuplicateRequest.name})`
|
|
39011
39120
|
);
|
|
39012
39121
|
loopDetectedRef.current = true;
|
|
@@ -39027,7 +39136,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
39027
39136
|
duplicateProviderToolCallResponseIdsRef.current
|
|
39028
39137
|
);
|
|
39029
39138
|
const response = createDuplicateProviderToolCallResponse(request);
|
|
39030
|
-
|
|
39139
|
+
debugLogger38.debug(
|
|
39031
39140
|
`[processGeminiStreamEvents] Suppressing duplicate provider tool-call id: ${providerCallId} (tool: ${request.name})`
|
|
39032
39141
|
);
|
|
39033
39142
|
dualOutput?.emitToolResult(request, response);
|
|
@@ -39056,12 +39165,19 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
39056
39165
|
}
|
|
39057
39166
|
}
|
|
39058
39167
|
if (executableToolCallRequests.length > 0) {
|
|
39059
|
-
|
|
39060
|
-
|
|
39168
|
+
if (toolContinuationOwner) {
|
|
39169
|
+
for (const request of executableToolCallRequests) {
|
|
39170
|
+
continuationOwnersByToolCallIdRef.current.set(
|
|
39171
|
+
request.callId,
|
|
39172
|
+
toolContinuationOwner
|
|
39173
|
+
);
|
|
39174
|
+
}
|
|
39175
|
+
}
|
|
39176
|
+
if (streamInteractionOwner) {
|
|
39061
39177
|
for (const request of executableToolCallRequests) {
|
|
39062
39178
|
interactionOwnersByToolCallIdRef.current.set(
|
|
39063
39179
|
request.callId,
|
|
39064
|
-
|
|
39180
|
+
streamInteractionOwner
|
|
39065
39181
|
);
|
|
39066
39182
|
}
|
|
39067
39183
|
}
|
|
@@ -39319,7 +39435,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
39319
39435
|
);
|
|
39320
39436
|
const submitQuery = (0, import_react136.useCallback)(
|
|
39321
39437
|
async (query, submitType = "userQuery" /* UserQuery */, prompt_id, metadata) => {
|
|
39322
|
-
const allowConcurrentBtwDuringResponse = submitType === "userQuery" /* UserQuery */ && streamingState === "responding" /* Responding */ && typeof query === "string" && isBtwCommand(query) && !activeGoalAdmissionRef.current;
|
|
39438
|
+
const allowConcurrentBtwDuringResponse = submitType === "userQuery" /* UserQuery */ && streamingState === "responding" /* Responding */ && activeModelStreamsRef.current > 0 && typeof query === "string" && isBtwCommand(query) && !activeGoalAdmissionRef.current;
|
|
39323
39439
|
let ownsSubmissionLease = false;
|
|
39324
39440
|
let submissionLeaseGeneration;
|
|
39325
39441
|
const acquireSubmissionLease = /* @__PURE__ */ __name(() => {
|
|
@@ -39352,6 +39468,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
39352
39468
|
return;
|
|
39353
39469
|
}
|
|
39354
39470
|
acquireSubmissionLease();
|
|
39471
|
+
const submissionGeneration = submissionLeaseGenerationRef.current;
|
|
39355
39472
|
loopDetectedRef.current = false;
|
|
39356
39473
|
if (!isTurnContinuation && !allowConcurrentBtwDuringResponse) {
|
|
39357
39474
|
lastTurnUserItemRef.current = null;
|
|
@@ -39407,7 +39524,17 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
39407
39524
|
}
|
|
39408
39525
|
const abortController = new AbortController();
|
|
39409
39526
|
const abortSignal = abortController.signal;
|
|
39410
|
-
|
|
39527
|
+
const inheritedToolContinuationOwner = metadata?.toolContinuationOwner;
|
|
39528
|
+
const isDetachedToolContinuation = inheritedToolContinuationOwner?.survivesGenerationChange === true;
|
|
39529
|
+
const detachedAbortController = inheritedToolContinuationOwner?.detachedAbortController ?? (allowConcurrentBtwDuringResponse ? abortController : void 0);
|
|
39530
|
+
const foregroundAbortController = allowConcurrentBtwDuringResponse || isDetachedToolContinuation ? void 0 : abortController;
|
|
39531
|
+
let keepToolContinuationAbortController = false;
|
|
39532
|
+
if (detachedAbortController) {
|
|
39533
|
+
detachedToolContinuationAbortControllersRef.current.add(
|
|
39534
|
+
detachedAbortController
|
|
39535
|
+
);
|
|
39536
|
+
}
|
|
39537
|
+
if (!allowConcurrentBtwDuringResponse && !isDetachedToolContinuation) {
|
|
39411
39538
|
abortControllerRef.current = abortController;
|
|
39412
39539
|
turnCancelledRef.current = false;
|
|
39413
39540
|
}
|
|
@@ -39420,7 +39547,8 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
39420
39547
|
activeInteractionOwnerRef.current = void 0;
|
|
39421
39548
|
}
|
|
39422
39549
|
}
|
|
39423
|
-
|
|
39550
|
+
const releaseSubmissionActivity = retainSubmissionActivity(submissionGeneration);
|
|
39551
|
+
const submission = promptIdContext.run(prompt_id, async () => {
|
|
39424
39552
|
let queuedGoal = metadata?.goal;
|
|
39425
39553
|
let preparedQuery;
|
|
39426
39554
|
try {
|
|
@@ -39442,7 +39570,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
39442
39570
|
prompt_id,
|
|
39443
39571
|
submitType,
|
|
39444
39572
|
submittedPrompt,
|
|
39445
|
-
allowConcurrentBtwDuringResponse
|
|
39573
|
+
allowConcurrentBtwDuringResponse || isDetachedToolContinuation
|
|
39446
39574
|
);
|
|
39447
39575
|
} catch (error) {
|
|
39448
39576
|
await releaseUndeliveredGoalTurn(metadata?.userAdmission?.turnKey);
|
|
@@ -39450,7 +39578,16 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
39450
39578
|
metadata?.onAdmissionFailed?.();
|
|
39451
39579
|
throw error;
|
|
39452
39580
|
}
|
|
39453
|
-
const { queryToSend, shouldProceed } = preparedQuery;
|
|
39581
|
+
const { queryToSend, shouldProceed, scheduledToolCallId } = preparedQuery;
|
|
39582
|
+
if (scheduledToolCallId && foregroundAbortController) {
|
|
39583
|
+
keepToolContinuationAbortController = true;
|
|
39584
|
+
continuationOwnersByToolCallIdRef.current.set(scheduledToolCallId, {
|
|
39585
|
+
promptId: prompt_id,
|
|
39586
|
+
signal: abortSignal,
|
|
39587
|
+
survivesGenerationChange: false,
|
|
39588
|
+
foregroundAbortController
|
|
39589
|
+
});
|
|
39590
|
+
}
|
|
39454
39591
|
if (!shouldProceed || queryToSend === null) {
|
|
39455
39592
|
await releaseUndeliveredGoalTurn(metadata?.userAdmission?.turnKey);
|
|
39456
39593
|
releaseSubmissionLease();
|
|
@@ -39488,7 +39625,21 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
39488
39625
|
) : void 0);
|
|
39489
39626
|
const turnKey = goalBinding?.turnKey ?? userAdmission?.turnKey;
|
|
39490
39627
|
const turnController = goalBinding?.controller ?? (turnKey ? new AbortController() : void 0);
|
|
39491
|
-
const
|
|
39628
|
+
const processingSignals = [abortSignal];
|
|
39629
|
+
if (turnController) {
|
|
39630
|
+
processingSignals.push(turnController.signal);
|
|
39631
|
+
}
|
|
39632
|
+
if (inheritedToolContinuationOwner) {
|
|
39633
|
+
processingSignals.push(inheritedToolContinuationOwner.signal);
|
|
39634
|
+
}
|
|
39635
|
+
const processingSignal = processingSignals.length > 1 ? AbortSignal.any(processingSignals) : abortSignal;
|
|
39636
|
+
const toolContinuationOwner = {
|
|
39637
|
+
promptId: prompt_id,
|
|
39638
|
+
signal: processingSignal,
|
|
39639
|
+
survivesGenerationChange: allowConcurrentBtwDuringResponse || inheritedToolContinuationOwner?.survivesGenerationChange === true,
|
|
39640
|
+
detachedAbortController,
|
|
39641
|
+
foregroundAbortController
|
|
39642
|
+
};
|
|
39492
39643
|
const turnAdmission = turnKey && turnController ? {
|
|
39493
39644
|
turnKey,
|
|
39494
39645
|
controller: turnController,
|
|
@@ -39564,11 +39715,12 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
39564
39715
|
modelOverride: modelOverrideRef.current,
|
|
39565
39716
|
steerInput: metadata?.steerInput,
|
|
39566
39717
|
...submittedPrompt !== void 0 ? { submittedPrompt } : {},
|
|
39567
|
-
...!allowConcurrentBtwDuringResponse && midTurnDrainRef ? { getSteerInput: drainSteerAtBoundary } : {}
|
|
39718
|
+
...!allowConcurrentBtwDuringResponse && !isDetachedToolContinuation && midTurnDrainRef ? { getSteerInput: drainSteerAtBoundary } : {}
|
|
39568
39719
|
};
|
|
39720
|
+
const providerSignal = inheritedToolContinuationOwner ? processingSignal : abortSignal;
|
|
39569
39721
|
const stream = geminiClient.sendMessageStream(
|
|
39570
39722
|
finalQueryToSend,
|
|
39571
|
-
|
|
39723
|
+
providerSignal,
|
|
39572
39724
|
prompt_id,
|
|
39573
39725
|
{
|
|
39574
39726
|
...sendOptions,
|
|
@@ -39593,12 +39745,14 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
39593
39745
|
submitType,
|
|
39594
39746
|
turnAdmission,
|
|
39595
39747
|
prompt_id,
|
|
39596
|
-
!allowConcurrentBtwDuringResponse
|
|
39748
|
+
!allowConcurrentBtwDuringResponse,
|
|
39749
|
+
toolContinuationOwner
|
|
39597
39750
|
);
|
|
39598
39751
|
if (!goalBinding && turnAdmission && activeGoalTurnRef.current?.controller === turnAdmission.controller && activeGoalTurnRef.current.turnKey === turnAdmission.turnKey) {
|
|
39599
39752
|
goalBinding = activeGoalTurnRef.current;
|
|
39600
39753
|
}
|
|
39601
39754
|
keepGoalBinding = processingResult.scheduledToolContinuation;
|
|
39755
|
+
keepToolContinuationAbortController = processingResult.scheduledToolContinuation;
|
|
39602
39756
|
if (processingResult.status === 1 /* UserCancelled */) {
|
|
39603
39757
|
cleanupReviewLease = true;
|
|
39604
39758
|
submitPromptOnCompleteRef.current = null;
|
|
@@ -39622,8 +39776,17 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
39622
39776
|
callId: request.callId,
|
|
39623
39777
|
toolName: request.name,
|
|
39624
39778
|
responseParts: response.responseParts,
|
|
39625
|
-
persistedOutputFiles: response.persistedOutputFiles
|
|
39779
|
+
persistedOutputFiles: response.persistedOutputFiles,
|
|
39780
|
+
artifacts: response.artifacts
|
|
39626
39781
|
})
|
|
39782
|
+
),
|
|
39783
|
+
new Map(
|
|
39784
|
+
immediateDuplicateToolResponses.responses.flatMap(
|
|
39785
|
+
({ request }) => {
|
|
39786
|
+
const promptId = request.prompt_id ?? immediateDuplicateToolResponses.promptId;
|
|
39787
|
+
return promptId ? [[request.callId, promptId]] : [];
|
|
39788
|
+
}
|
|
39789
|
+
)
|
|
39627
39790
|
)
|
|
39628
39791
|
);
|
|
39629
39792
|
const responseParts = finalized.flatMap(
|
|
@@ -39638,6 +39801,8 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
39638
39801
|
callId: request.callId,
|
|
39639
39802
|
status: response.error ? "error" : "success",
|
|
39640
39803
|
resultDisplay: response.resultDisplay,
|
|
39804
|
+
persistedOutputFiles: finalized[index].persistedOutputFiles,
|
|
39805
|
+
artifacts: finalized[index].artifacts,
|
|
39641
39806
|
error: response.error,
|
|
39642
39807
|
errorType: response.errorType,
|
|
39643
39808
|
executionStatus: response.executionStatus
|
|
@@ -39679,7 +39844,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
39679
39844
|
if (onComplete) {
|
|
39680
39845
|
submitPromptOnCompleteRef.current = null;
|
|
39681
39846
|
void onComplete().catch((err) => {
|
|
39682
|
-
|
|
39847
|
+
debugLogger38.error("onComplete callback failed:", err);
|
|
39683
39848
|
});
|
|
39684
39849
|
}
|
|
39685
39850
|
if (geminiClient) {
|
|
@@ -39731,9 +39896,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
39731
39896
|
0,
|
|
39732
39897
|
activeModelStreamsRef.current - 1
|
|
39733
39898
|
);
|
|
39734
|
-
|
|
39735
|
-
setIsResponding(false);
|
|
39736
|
-
}
|
|
39899
|
+
const shouldDrainCompletedToolBatches = activeModelStreamsRef.current === 0;
|
|
39737
39900
|
if (goalBinding) {
|
|
39738
39901
|
let retainGoalBinding = keepGoalBinding && !goalBinding.controller.signal.aborted;
|
|
39739
39902
|
if (retainGoalBinding) {
|
|
@@ -39753,7 +39916,31 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
39753
39916
|
if (turnAdmission && !goalBinding && activeGoalAdmissionRef.current?.controller === turnAdmission.controller && activeGoalAdmissionRef.current.turnKey === turnAdmission.turnKey) {
|
|
39754
39917
|
activeGoalAdmissionRef.current = null;
|
|
39755
39918
|
}
|
|
39756
|
-
|
|
39919
|
+
if (shouldDrainCompletedToolBatches) {
|
|
39920
|
+
const pendingCompletedToolBatches = pendingCompletedToolBatchesRef.current.splice(0);
|
|
39921
|
+
const pendingCompletedTools = /* @__PURE__ */ new Map();
|
|
39922
|
+
for (const pendingBatch of pendingCompletedToolBatches) {
|
|
39923
|
+
for (const toolCall of pendingBatch) {
|
|
39924
|
+
pendingCompletedTools.set(toolCall.request.callId, toolCall);
|
|
39925
|
+
}
|
|
39926
|
+
}
|
|
39927
|
+
if (pendingCompletedTools.size > 0) {
|
|
39928
|
+
await handleCompletedToolsRef.current([
|
|
39929
|
+
...pendingCompletedTools.values()
|
|
39930
|
+
]);
|
|
39931
|
+
}
|
|
39932
|
+
}
|
|
39933
|
+
}
|
|
39934
|
+
});
|
|
39935
|
+
return submission.finally(() => {
|
|
39936
|
+
releaseSubmissionActivity();
|
|
39937
|
+
if (detachedAbortController && !keepToolContinuationAbortController) {
|
|
39938
|
+
detachedToolContinuationAbortControllersRef.current.delete(
|
|
39939
|
+
detachedAbortController
|
|
39940
|
+
);
|
|
39941
|
+
}
|
|
39942
|
+
if (foregroundAbortController && !keepToolContinuationAbortController && abortControllerRef.current === foregroundAbortController) {
|
|
39943
|
+
abortControllerRef.current = null;
|
|
39757
39944
|
}
|
|
39758
39945
|
});
|
|
39759
39946
|
},
|
|
@@ -39787,6 +39974,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
39787
39974
|
bindGoalTurn,
|
|
39788
39975
|
failClosedGoalTurn,
|
|
39789
39976
|
releaseUndeliveredGoalTurn,
|
|
39977
|
+
retainSubmissionActivity,
|
|
39790
39978
|
setSubmissionInFlight
|
|
39791
39979
|
]
|
|
39792
39980
|
);
|
|
@@ -39843,7 +40031,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
39843
40031
|
"proceed_once" /* ProceedOnce */
|
|
39844
40032
|
);
|
|
39845
40033
|
} catch (error) {
|
|
39846
|
-
|
|
40034
|
+
debugLogger38.error(
|
|
39847
40035
|
`Failed to auto-approve tool call ${call.request.callId}:`,
|
|
39848
40036
|
error
|
|
39849
40037
|
);
|
|
@@ -39872,7 +40060,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
39872
40060
|
);
|
|
39873
40061
|
const dedupedCallIds = dedupedTools.map((tc) => tc.request.callId);
|
|
39874
40062
|
if (dedupedCallIds.length > 0) {
|
|
39875
|
-
|
|
40063
|
+
debugLogger38.warn(
|
|
39876
40064
|
`[REPAIR] Dropping ${dedupedCallIds.length} late tool result(s) whose callId already has a functionResponse in history: ${dedupedCallIds.join(", ")}`
|
|
39877
40065
|
);
|
|
39878
40066
|
for (const tc of dedupedTools) {
|
|
@@ -39884,10 +40072,59 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
39884
40072
|
);
|
|
39885
40073
|
}
|
|
39886
40074
|
markToolsAsSubmitted(dedupedCallIds);
|
|
40075
|
+
const detachedAbortControllers = /* @__PURE__ */ new Set();
|
|
40076
|
+
const foregroundAbortControllers = /* @__PURE__ */ new Set();
|
|
40077
|
+
for (const callId of dedupedCallIds) {
|
|
40078
|
+
const continuationOwner2 = continuationOwnersByToolCallIdRef.current.get(callId);
|
|
40079
|
+
if (continuationOwner2?.detachedAbortController) {
|
|
40080
|
+
detachedAbortControllers.add(
|
|
40081
|
+
continuationOwner2.detachedAbortController
|
|
40082
|
+
);
|
|
40083
|
+
}
|
|
40084
|
+
if (continuationOwner2?.foregroundAbortController) {
|
|
40085
|
+
foregroundAbortControllers.add(
|
|
40086
|
+
continuationOwner2.foregroundAbortController
|
|
40087
|
+
);
|
|
40088
|
+
}
|
|
40089
|
+
interactionOwnersByToolCallIdRef.current.delete(callId);
|
|
40090
|
+
continuationOwnersByToolCallIdRef.current.delete(callId);
|
|
40091
|
+
}
|
|
40092
|
+
for (const controller of detachedAbortControllers) {
|
|
40093
|
+
const isStillOwned = [
|
|
40094
|
+
...continuationOwnersByToolCallIdRef.current.values()
|
|
40095
|
+
].some((owner) => owner.detachedAbortController === controller);
|
|
40096
|
+
if (!isStillOwned) {
|
|
40097
|
+
detachedToolContinuationAbortControllersRef.current.delete(
|
|
40098
|
+
controller
|
|
40099
|
+
);
|
|
40100
|
+
}
|
|
40101
|
+
}
|
|
40102
|
+
for (const controller of foregroundAbortControllers) {
|
|
40103
|
+
const isStillOwned = [
|
|
40104
|
+
...continuationOwnersByToolCallIdRef.current.values()
|
|
40105
|
+
].some((owner) => owner.foregroundAbortController === controller);
|
|
40106
|
+
if (!isStillOwned && abortControllerRef.current === controller) {
|
|
40107
|
+
abortControllerRef.current = null;
|
|
40108
|
+
}
|
|
40109
|
+
}
|
|
39887
40110
|
}
|
|
39888
40111
|
if (activeModelStreamsRef.current > 0) {
|
|
40112
|
+
const deferredTools = completedAndReadyToSubmitTools.filter(
|
|
40113
|
+
(toolCall) => !historyCallIdsWithResponse.has(toolCall.request.callId)
|
|
40114
|
+
);
|
|
40115
|
+
if (deferredTools.length > 0) {
|
|
40116
|
+
pendingCompletedToolBatchesRef.current.push(deferredTools);
|
|
40117
|
+
}
|
|
39889
40118
|
return;
|
|
39890
40119
|
}
|
|
40120
|
+
const continuationOwner = completedAndReadyToSubmitTools.filter(
|
|
40121
|
+
(toolCall) => !historyCallIdsWithResponse.has(toolCall.request.callId)
|
|
40122
|
+
).map(
|
|
40123
|
+
(toolCall) => continuationOwnersByToolCallIdRef.current.get(
|
|
40124
|
+
toolCall.request.callId
|
|
40125
|
+
)
|
|
40126
|
+
).find((owner) => owner !== void 0);
|
|
40127
|
+
const continuationWasCancelled = /* @__PURE__ */ __name(() => continuationOwner ? continuationOwner.signal.aborted : turnCancelledRef.current || abortControllerRef.current?.signal.aborted === true, "continuationWasCancelled");
|
|
39891
40128
|
const clientTools = completedAndReadyToSubmitTools.filter(
|
|
39892
40129
|
(t2) => t2.request.isClientInitiated && !historyCallIdsWithResponse.has(t2.request.callId)
|
|
39893
40130
|
);
|
|
@@ -39897,25 +40134,77 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
39897
40134
|
const newSuccessfulMemorySaves = completedAndReadyToSubmitTools.filter(
|
|
39898
40135
|
(t2) => t2.request.name === "save_memory" && t2.status === "success" && !processedMemoryToolsRef.current.has(t2.request.callId)
|
|
39899
40136
|
);
|
|
39900
|
-
|
|
40137
|
+
let geminiTools = completedAndReadyToSubmitTools.filter(
|
|
39901
40138
|
(t2) => !t2.request.isClientInitiated && !historyCallIdsWithResponse.has(t2.request.callId)
|
|
39902
40139
|
);
|
|
39903
40140
|
const terminalPromptId = completedAndReadyToSubmitTools.find(
|
|
39904
40141
|
(toolCall) => !toolCall.request.isClientInitiated
|
|
39905
40142
|
)?.request.prompt_id;
|
|
39906
|
-
const
|
|
40143
|
+
const ownerForToolCall = /* @__PURE__ */ __name((toolCall) => interactionOwnersByToolCallIdRef.current.get(toolCall.request.callId) ?? (activeInteractionPromptIdRef.current === toolCall.request.prompt_id ? activeInteractionOwnerRef.current : void 0), "ownerForToolCall");
|
|
40144
|
+
const liveOwnerForToolCall = /* @__PURE__ */ __name((toolCall) => {
|
|
40145
|
+
const owner = ownerForToolCall(toolCall);
|
|
40146
|
+
const ownerPromptId = toolCall.request.prompt_id;
|
|
40147
|
+
return owner && ownerPromptId && getActiveInteractionSpan(ownerPromptId) === owner ? owner : void 0;
|
|
40148
|
+
}, "liveOwnerForToolCall");
|
|
40149
|
+
const liveActiveInteractionOwner = activeInteractionPromptIdRef.current && activeInteractionOwnerRef.current && getActiveInteractionSpan(activeInteractionPromptIdRef.current) === activeInteractionOwnerRef.current ? activeInteractionOwnerRef.current : void 0;
|
|
40150
|
+
const ownerToolCall = (liveActiveInteractionOwner ? geminiTools.find(
|
|
40151
|
+
(toolCall) => liveOwnerForToolCall(toolCall) === liveActiveInteractionOwner
|
|
40152
|
+
) : void 0) ?? geminiTools.find((toolCall) => liveOwnerForToolCall(toolCall)) ?? geminiTools[0] ?? completedAndReadyToSubmitTools.find(
|
|
39907
40153
|
(toolCall) => !toolCall.request.isClientInitiated
|
|
39908
40154
|
);
|
|
39909
|
-
const interactionOwner = ownerToolCall ?
|
|
39910
|
-
|
|
39911
|
-
|
|
40155
|
+
const interactionOwner = ownerToolCall ? liveOwnerForToolCall(ownerToolCall) : void 0;
|
|
40156
|
+
const secondaryInteractionOwners = /* @__PURE__ */ new Map();
|
|
40157
|
+
const secondaryTools = interactionOwner ? geminiTools.filter(
|
|
40158
|
+
(toolCall) => ownerForToolCall(toolCall) !== interactionOwner
|
|
40159
|
+
) : [];
|
|
40160
|
+
for (const toolCall of secondaryTools) {
|
|
40161
|
+
const secondaryOwner = ownerForToolCall(toolCall);
|
|
40162
|
+
if (secondaryOwner && toolCall.request.prompt_id) {
|
|
40163
|
+
secondaryInteractionOwners.set(
|
|
40164
|
+
secondaryOwner,
|
|
40165
|
+
toolCall.request.prompt_id
|
|
40166
|
+
);
|
|
40167
|
+
}
|
|
40168
|
+
if (toolCall.status !== "cancelled") {
|
|
40169
|
+
geminiClient?.recordCompletedToolCall(
|
|
40170
|
+
toolCall.request.name,
|
|
40171
|
+
toolCall.request.args
|
|
40172
|
+
);
|
|
40173
|
+
}
|
|
40174
|
+
dualOutput?.emitToolResult(toolCall.request, toolCall.response);
|
|
40175
|
+
}
|
|
40176
|
+
if (secondaryTools.length > 0) {
|
|
40177
|
+
const secondaryCallIds2 = new Set(
|
|
40178
|
+
secondaryTools.map((toolCall) => toolCall.request.callId)
|
|
40179
|
+
);
|
|
40180
|
+
markToolsAsSubmitted([...secondaryCallIds2]);
|
|
40181
|
+
geminiTools = geminiTools.filter(
|
|
40182
|
+
(toolCall) => !secondaryCallIds2.has(toolCall.request.callId)
|
|
40183
|
+
);
|
|
40184
|
+
}
|
|
39912
40185
|
for (const toolCall of completedAndReadyToSubmitTools) {
|
|
39913
40186
|
interactionOwnersByToolCallIdRef.current.delete(
|
|
39914
40187
|
toolCall.request.callId
|
|
39915
40188
|
);
|
|
40189
|
+
continuationOwnersByToolCallIdRef.current.delete(
|
|
40190
|
+
toolCall.request.callId
|
|
40191
|
+
);
|
|
39916
40192
|
}
|
|
39917
|
-
|
|
40193
|
+
for (const [owner, ownerPromptId] of secondaryInteractionOwners) {
|
|
40194
|
+
if (getActiveInteractionSpan(ownerPromptId) === owner) {
|
|
40195
|
+
endInteractionSpan("cancelled", { promptId: ownerPromptId });
|
|
40196
|
+
}
|
|
40197
|
+
}
|
|
40198
|
+
let promptId = ownerToolCall?.request.prompt_id ?? continuationOwner?.promptId;
|
|
39918
40199
|
const endToolInteraction = /* @__PURE__ */ __name((status, errorMessage, errorType) => {
|
|
40200
|
+
if (continuationOwner?.detachedAbortController) {
|
|
40201
|
+
detachedToolContinuationAbortControllersRef.current.delete(
|
|
40202
|
+
continuationOwner.detachedAbortController
|
|
40203
|
+
);
|
|
40204
|
+
}
|
|
40205
|
+
if (continuationOwner?.foregroundAbortController && abortControllerRef.current === continuationOwner.foregroundAbortController) {
|
|
40206
|
+
abortControllerRef.current = null;
|
|
40207
|
+
}
|
|
39919
40208
|
if (!promptId || !interactionOwner || getActiveInteractionSpan(promptId) !== interactionOwner) {
|
|
39920
40209
|
return;
|
|
39921
40210
|
}
|
|
@@ -40049,11 +40338,11 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
40049
40338
|
memoryWriteCandidates,
|
|
40050
40339
|
config.getProjectRoot()
|
|
40051
40340
|
);
|
|
40052
|
-
|
|
40341
|
+
debugLogger38.debug(
|
|
40053
40342
|
`Checked marked context-file memory tool batch; matched=${matchedContextFileWrite}`
|
|
40054
40343
|
);
|
|
40055
40344
|
if (matchedContextFileWrite) {
|
|
40056
|
-
|
|
40345
|
+
debugLogger38.debug(
|
|
40057
40346
|
"Refreshing memory after context-file memory write"
|
|
40058
40347
|
);
|
|
40059
40348
|
await refreshMemoryInstruction(config, {
|
|
@@ -40064,7 +40353,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
40064
40353
|
if (newSuccessfulMemorySaves.length > 0) {
|
|
40065
40354
|
if (!didRefreshManagedMemory) {
|
|
40066
40355
|
void performMemoryRefresh().catch((err) => {
|
|
40067
|
-
|
|
40356
|
+
debugLogger38.warn(`save_memory refresh failed: ${err}`);
|
|
40068
40357
|
});
|
|
40069
40358
|
}
|
|
40070
40359
|
newSuccessfulMemorySaves.forEach(
|
|
@@ -40072,9 +40361,10 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
40072
40361
|
);
|
|
40073
40362
|
}
|
|
40074
40363
|
const completedCallIds = new Set(
|
|
40075
|
-
|
|
40076
|
-
|
|
40077
|
-
|
|
40364
|
+
geminiTools.map((toolCall) => toolCall.request.callId)
|
|
40365
|
+
);
|
|
40366
|
+
const secondaryCallIds = new Set(
|
|
40367
|
+
secondaryTools.map((toolCall) => toolCall.request.callId)
|
|
40078
40368
|
);
|
|
40079
40369
|
const readyDuplicateBatches = [];
|
|
40080
40370
|
pendingDuplicateToolResponsesRef.current = pendingDuplicateToolResponsesRef.current.filter((batch) => {
|
|
@@ -40084,10 +40374,13 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
40084
40374
|
if (isReady) {
|
|
40085
40375
|
readyDuplicateBatches.push(batch);
|
|
40086
40376
|
}
|
|
40087
|
-
|
|
40377
|
+
const belongsToSecondaryOwner = [...batch.executableCallIds].some(
|
|
40378
|
+
(callId) => secondaryCallIds.has(callId)
|
|
40379
|
+
);
|
|
40380
|
+
return !isReady && !belongsToSecondaryOwner;
|
|
40088
40381
|
});
|
|
40089
|
-
const pendingDuplicateResponses = readyDuplicateBatches.flatMap(
|
|
40090
|
-
(
|
|
40382
|
+
const pendingDuplicateResponses = readyDuplicateBatches.flatMap((batch) => batch.duplicateResponses).filter(
|
|
40383
|
+
({ request }) => !interactionOwner || !request.prompt_id || request.prompt_id === promptId
|
|
40091
40384
|
);
|
|
40092
40385
|
const pendingDuplicatePromptId = readyDuplicateBatches[0]?.promptId;
|
|
40093
40386
|
if (!promptId && pendingDuplicatePromptId) {
|
|
@@ -40169,8 +40462,14 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
40169
40462
|
callId: request.callId,
|
|
40170
40463
|
toolName: request.name,
|
|
40171
40464
|
responseParts: response.responseParts,
|
|
40172
|
-
persistedOutputFiles: response.persistedOutputFiles
|
|
40173
|
-
|
|
40465
|
+
persistedOutputFiles: response.persistedOutputFiles,
|
|
40466
|
+
artifacts: response.artifacts
|
|
40467
|
+
})),
|
|
40468
|
+
new Map(
|
|
40469
|
+
orderedResponses.flatMap(
|
|
40470
|
+
({ request }) => request.prompt_id ? [[request.callId, request.prompt_id]] : []
|
|
40471
|
+
)
|
|
40472
|
+
)
|
|
40174
40473
|
);
|
|
40175
40474
|
const responsesToSend = finalizedResponses.flatMap(
|
|
40176
40475
|
(entry) => entry.responseParts
|
|
@@ -40183,6 +40482,8 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
40183
40482
|
callId: request.callId,
|
|
40184
40483
|
status,
|
|
40185
40484
|
resultDisplay: response.resultDisplay,
|
|
40485
|
+
persistedOutputFiles: finalizedResponses[index].persistedOutputFiles,
|
|
40486
|
+
artifacts: finalizedResponses[index].artifacts,
|
|
40186
40487
|
error: response.error,
|
|
40187
40488
|
errorType: response.errorType,
|
|
40188
40489
|
executionStatus: response.executionStatus
|
|
@@ -40193,7 +40494,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
40193
40494
|
} : { goalContext: { ...goalContext } } : void 0
|
|
40194
40495
|
);
|
|
40195
40496
|
});
|
|
40196
|
-
if (
|
|
40497
|
+
if (continuationWasCancelled()) {
|
|
40197
40498
|
markToolsAsSubmitted(
|
|
40198
40499
|
geminiTools.map((toolCall) => toolCall.request.callId)
|
|
40199
40500
|
);
|
|
@@ -40236,7 +40537,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
40236
40537
|
for (const toolCall of geminiTools) {
|
|
40237
40538
|
if ("modelOverride" in toolCall.response) {
|
|
40238
40539
|
if (inlineModelOverrideActiveRef.current || modelOverrideRef.current?.endsWith("\0")) {
|
|
40239
|
-
|
|
40540
|
+
debugLogger38.debug(
|
|
40240
40541
|
`skill-tool model override (${String(
|
|
40241
40542
|
toolCall.response.modelOverride
|
|
40242
40543
|
)}) blocked: ${inlineModelOverrideActiveRef.current ? "inline override active" : "full-turn override active"}`
|
|
@@ -40283,10 +40584,11 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
40283
40584
|
}
|
|
40284
40585
|
}
|
|
40285
40586
|
} catch (error) {
|
|
40587
|
+
const errorMessage = getErrorMessage(error);
|
|
40286
40588
|
goalFinishFailed = true;
|
|
40287
40589
|
await failClosedGoalTurn(
|
|
40288
40590
|
toolGoalBinding,
|
|
40289
|
-
`Goal turn could not finish: ${
|
|
40591
|
+
`Goal turn could not finish: ${errorMessage}`
|
|
40290
40592
|
);
|
|
40291
40593
|
} finally {
|
|
40292
40594
|
releaseGoalTurn(toolGoalBinding);
|
|
@@ -40380,7 +40682,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
40380
40682
|
);
|
|
40381
40683
|
return;
|
|
40382
40684
|
}
|
|
40383
|
-
const drained =
|
|
40685
|
+
const drained = continuationOwner?.survivesGenerationChange || continuationWasCancelled() ? [] : midTurnDrainRef?.current?.(
|
|
40384
40686
|
false,
|
|
40385
40687
|
Boolean(activeGoalAdmissionRef.current)
|
|
40386
40688
|
) ?? [];
|
|
@@ -40406,7 +40708,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
40406
40708
|
}
|
|
40407
40709
|
}
|
|
40408
40710
|
}
|
|
40409
|
-
if (
|
|
40711
|
+
if (continuationWasCancelled()) {
|
|
40410
40712
|
drainedSteer?.restore();
|
|
40411
40713
|
if (toolGoalBinding) {
|
|
40412
40714
|
await failClosedGoalTurn(
|
|
@@ -40426,7 +40728,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
40426
40728
|
endToolInteraction("cancelled");
|
|
40427
40729
|
return;
|
|
40428
40730
|
}
|
|
40429
|
-
|
|
40731
|
+
await submitQuery(responsesToSend, "toolResult" /* ToolResult */, promptId, {
|
|
40430
40732
|
steerInput: drainedSteer,
|
|
40431
40733
|
onDelivered: drainedSteer?.accept,
|
|
40432
40734
|
onAdmissionFailed: /* @__PURE__ */ __name(() => {
|
|
@@ -40444,7 +40746,8 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
40444
40746
|
"continuation_delivery_failed"
|
|
40445
40747
|
);
|
|
40446
40748
|
}, "onDeliveryFailed"),
|
|
40447
|
-
goalBinding: toolGoalBinding
|
|
40749
|
+
goalBinding: toolGoalBinding,
|
|
40750
|
+
toolContinuationOwner: continuationOwner
|
|
40448
40751
|
});
|
|
40449
40752
|
},
|
|
40450
40753
|
[
|
|
@@ -40463,6 +40766,9 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
40463
40766
|
releaseGoalTurn
|
|
40464
40767
|
]
|
|
40465
40768
|
);
|
|
40769
|
+
(0, import_react136.useLayoutEffect)(() => {
|
|
40770
|
+
handleCompletedToolsRef.current = handleCompletedTools;
|
|
40771
|
+
}, [handleCompletedTools]);
|
|
40466
40772
|
const pendingHistoryItems = (0, import_react136.useMemo)(
|
|
40467
40773
|
() => [
|
|
40468
40774
|
// Reasoning renders above the streaming answer.
|
|
@@ -40604,7 +40910,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
40604
40910
|
try {
|
|
40605
40911
|
await scheduler.enableDurable(cronSessionIdRef.current);
|
|
40606
40912
|
} catch (err) {
|
|
40607
|
-
|
|
40913
|
+
debugLogger38.warn(
|
|
40608
40914
|
`Durable cron init failed \u2014 persistent tasks will not fire in this session: ${err}`
|
|
40609
40915
|
);
|
|
40610
40916
|
}
|
|
@@ -40755,7 +41061,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
40755
41061
|
setNotificationTrigger((n) => n + 1);
|
|
40756
41062
|
}, "onGoalClaimDeferred")
|
|
40757
41063
|
}).catch((error) => {
|
|
40758
|
-
|
|
41064
|
+
debugLogger38.warn("Failed to admit cron notification", error);
|
|
40759
41065
|
});
|
|
40760
41066
|
return;
|
|
40761
41067
|
}
|
|
@@ -40788,7 +41094,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
40788
41094
|
setNotificationTrigger((n) => n + 1);
|
|
40789
41095
|
}, "onGoalClaimDeferred")
|
|
40790
41096
|
}).catch((error) => {
|
|
40791
|
-
|
|
41097
|
+
debugLogger38.warn("Failed to admit background notification", error);
|
|
40792
41098
|
});
|
|
40793
41099
|
});
|
|
40794
41100
|
}
|
|
@@ -40861,7 +41167,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
40861
41167
|
setTeammateTrigger((n) => n + 1);
|
|
40862
41168
|
}, "onGoalClaimDeferred")
|
|
40863
41169
|
}).catch((error) => {
|
|
40864
|
-
|
|
41170
|
+
debugLogger38.warn("Failed to admit teammate notification", error);
|
|
40865
41171
|
});
|
|
40866
41172
|
});
|
|
40867
41173
|
}
|
|
@@ -40900,7 +41206,7 @@ var DIGIT_MULTIPLIER = 10;
|
|
|
40900
41206
|
var DEFAULT_COUNT = 1;
|
|
40901
41207
|
var MAX_COUNT = 9999;
|
|
40902
41208
|
var DIGIT_1_TO_9 = /^[1-9]$/;
|
|
40903
|
-
var
|
|
41209
|
+
var debugLogger39 = createDebugLogger("VIM_MODE");
|
|
40904
41210
|
var CMD_TYPES = {
|
|
40905
41211
|
DELETE_WORD_FORWARD: "dw",
|
|
40906
41212
|
DELETE_WORD_BACKWARD: "db",
|
|
@@ -41043,7 +41349,7 @@ function readClipboard() {
|
|
|
41043
41349
|
}
|
|
41044
41350
|
return "";
|
|
41045
41351
|
} catch (e) {
|
|
41046
|
-
|
|
41352
|
+
debugLogger39.warn("readClipboard failed:", e);
|
|
41047
41353
|
return "";
|
|
41048
41354
|
}
|
|
41049
41355
|
}
|
|
@@ -41089,7 +41395,7 @@ function writeClipboard(text) {
|
|
|
41089
41395
|
const [bin, ...args] = linuxWriteCmd;
|
|
41090
41396
|
const child = execFile7(bin, args, { timeout: 500 }, (err) => {
|
|
41091
41397
|
if (err && !writeOsc52(text)) {
|
|
41092
|
-
|
|
41398
|
+
debugLogger39.warn(
|
|
41093
41399
|
"writeClipboard: cached tool and OSC 52 both failed"
|
|
41094
41400
|
);
|
|
41095
41401
|
}
|
|
@@ -41098,11 +41404,11 @@ function writeClipboard(text) {
|
|
|
41098
41404
|
child.unref();
|
|
41099
41405
|
} else {
|
|
41100
41406
|
if (!writeOsc52(text)) {
|
|
41101
|
-
|
|
41407
|
+
debugLogger39.warn("OSC 52 clipboard write failed - no TTY available");
|
|
41102
41408
|
}
|
|
41103
41409
|
}
|
|
41104
41410
|
} catch (e) {
|
|
41105
|
-
|
|
41411
|
+
debugLogger39.warn("writeClipboard failed:", e);
|
|
41106
41412
|
}
|
|
41107
41413
|
}
|
|
41108
41414
|
__name(writeClipboard, "writeClipboard");
|
|
@@ -41817,7 +42123,7 @@ function useVim(buffer, onSubmit) {
|
|
|
41817
42123
|
try {
|
|
41818
42124
|
normalizedKey = normalizeKey(key);
|
|
41819
42125
|
} catch (error) {
|
|
41820
|
-
|
|
42126
|
+
debugLogger39.warn("Malformed key input in vim mode:", key, error);
|
|
41821
42127
|
return false;
|
|
41822
42128
|
}
|
|
41823
42129
|
const s = stateRef.current;
|
|
@@ -43150,7 +43456,7 @@ __name(useCommandMigration, "useCommandMigration");
|
|
|
43150
43456
|
|
|
43151
43457
|
// packages/cli/src/services/notificationService.ts
|
|
43152
43458
|
init_esbuild_shims();
|
|
43153
|
-
var
|
|
43459
|
+
var debugLogger40 = createDebugLogger("NOTIFICATION_SERVICE");
|
|
43154
43460
|
var DEFAULT_TITLE = "Qwen Code";
|
|
43155
43461
|
function sendNotification(opts, terminal, enabled) {
|
|
43156
43462
|
if (!enabled) {
|
|
@@ -43178,7 +43484,7 @@ function sendNotification(opts, terminal, enabled) {
|
|
|
43178
43484
|
return "terminal_bell";
|
|
43179
43485
|
}
|
|
43180
43486
|
} catch (error) {
|
|
43181
|
-
|
|
43487
|
+
debugLogger40.warn("Failed to send notification:", error);
|
|
43182
43488
|
return "error";
|
|
43183
43489
|
}
|
|
43184
43490
|
}
|
|
@@ -44130,7 +44436,7 @@ var import_jsx_runtime132 = __toESM(require_jsx_runtime(), 1);
|
|
|
44130
44436
|
var MCP_BATCH_FLUSH_MS = 16;
|
|
44131
44437
|
var STARTUP_PROFILE_FINALIZE_CAP_MS = 35e3;
|
|
44132
44438
|
var CTRL_EXIT_PROMPT_DURATION_MS = 1e3;
|
|
44133
|
-
var
|
|
44439
|
+
var debugLogger41 = createDebugLogger("APP_CONTAINER");
|
|
44134
44440
|
function isRenderModeToggleKey(key) {
|
|
44135
44441
|
return keyMatchers["toggleRenderMode" /* TOGGLE_RENDER_MODE */](key) || key.name === "m" && key.meta && !key.ctrl && !key.paste;
|
|
44136
44442
|
}
|
|
@@ -44282,7 +44588,7 @@ function useQueuedSubmissionDrain({
|
|
|
44282
44588
|
}
|
|
44283
44589
|
);
|
|
44284
44590
|
void Promise.resolve(request).catch((error) => {
|
|
44285
|
-
|
|
44591
|
+
debugLogger41.warn("Queued submission failed during admission", error);
|
|
44286
44592
|
}).finally(() => {
|
|
44287
44593
|
queueDrainingRef.current = false;
|
|
44288
44594
|
if (!admissionFailed) {
|
|
@@ -44524,7 +44830,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
44524
44830
|
const staticExtraHeight = 3;
|
|
44525
44831
|
(0, import_react162.useEffect)(() => {
|
|
44526
44832
|
void loadLowlight().catch((err) => {
|
|
44527
|
-
|
|
44833
|
+
debugLogger41.warn(
|
|
44528
44834
|
`Failed to load lowlight chunk; code blocks will render as plain text: ${err instanceof Error ? err.message : String(err)}`
|
|
44529
44835
|
);
|
|
44530
44836
|
});
|
|
@@ -44606,9 +44912,9 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
44606
44912
|
registerCleanup(async () => {
|
|
44607
44913
|
try {
|
|
44608
44914
|
await config.getHookSystem()?.fireSessionEndEvent("prompt_input_exit" /* PromptInputExit */);
|
|
44609
|
-
|
|
44915
|
+
debugLogger41.debug("SessionEnd event completed successfully!!!");
|
|
44610
44916
|
} catch (err) {
|
|
44611
|
-
|
|
44917
|
+
debugLogger41.error(`SessionEnd hook failed: ${err}`);
|
|
44612
44918
|
}
|
|
44613
44919
|
});
|
|
44614
44920
|
registerCleanup(async () => {
|
|
@@ -44634,7 +44940,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
44634
44940
|
flushTimer = null;
|
|
44635
44941
|
}
|
|
44636
44942
|
return geminiClient2.setTools().catch((err) => {
|
|
44637
|
-
|
|
44943
|
+
debugLogger41.error(
|
|
44638
44944
|
`setTools() batch-flush failed: ${err instanceof Error ? err.message : String(err)}`
|
|
44639
44945
|
);
|
|
44640
44946
|
});
|
|
@@ -44652,7 +44958,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
44652
44958
|
failureSurfaced = true;
|
|
44653
44959
|
const failedNames = typeof config.getFailedMcpServerNames === "function" ? config.getFailedMcpServerNames() : [];
|
|
44654
44960
|
if (failedNames.length > 0) {
|
|
44655
|
-
|
|
44961
|
+
debugLogger41.warn(
|
|
44656
44962
|
`MCP server(s) failed to start: ${failedNames.join(", ")}. Continuing with built-in tools and any servers that did connect.`
|
|
44657
44963
|
);
|
|
44658
44964
|
}
|
|
@@ -45110,7 +45416,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
45110
45416
|
try {
|
|
45111
45417
|
cancelOngoingRequestRef.current();
|
|
45112
45418
|
} catch (error) {
|
|
45113
|
-
|
|
45419
|
+
debugLogger41.debug("Failed to cancel request while quitting:", error);
|
|
45114
45420
|
}
|
|
45115
45421
|
setQuittingMessages(messages);
|
|
45116
45422
|
config.getGeminiClient()?.requestShutdown();
|
|
@@ -45328,7 +45634,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
45328
45634
|
},
|
|
45329
45635
|
Date.now()
|
|
45330
45636
|
);
|
|
45331
|
-
|
|
45637
|
+
debugLogger41.debug(
|
|
45332
45638
|
`[DEBUG] Refreshed memory content in config: ${memoryContent.substring(
|
|
45333
45639
|
0,
|
|
45334
45640
|
200
|
|
@@ -45343,7 +45649,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
45343
45649
|
},
|
|
45344
45650
|
Date.now()
|
|
45345
45651
|
);
|
|
45346
|
-
|
|
45652
|
+
debugLogger41.error("Error refreshing memory:", error);
|
|
45347
45653
|
}
|
|
45348
45654
|
}, [config, historyManager, settings.merged]);
|
|
45349
45655
|
const cancelHandlerRef = (0, import_react162.useRef)(() => {
|
|
@@ -45513,7 +45819,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
45513
45819
|
);
|
|
45514
45820
|
});
|
|
45515
45821
|
goalReservationSettlementRef.current = settlement.catch((error) => {
|
|
45516
|
-
|
|
45822
|
+
debugLogger41.warn(
|
|
45517
45823
|
`Failed to release queued Goal turns: ${getErrorMessage(error)}`
|
|
45518
45824
|
);
|
|
45519
45825
|
});
|
|
@@ -45704,14 +46010,14 @@ ${buildWorkflowSteeringNotice()}
|
|
|
45704
46010
|
}
|
|
45705
46011
|
if (streamingState === "responding" /* Responding */ && isBtwCommand(submittedValue)) {
|
|
45706
46012
|
void Promise.resolve(
|
|
45707
|
-
submitQuery(
|
|
45708
|
-
|
|
45709
|
-
|
|
45710
|
-
|
|
45711
|
-
|
|
45712
|
-
)
|
|
46013
|
+
submitQuery(submittedValue, "userQuery" /* UserQuery */, void 0, {
|
|
46014
|
+
...submittedPrompt === void 0 ? {} : { submittedPrompt },
|
|
46015
|
+
onAdmissionFailed: /* @__PURE__ */ __name(() => {
|
|
46016
|
+
addMessage(submittedValue, true, submittedPrompt);
|
|
46017
|
+
}, "onAdmissionFailed")
|
|
46018
|
+
})
|
|
45713
46019
|
).catch((error) => {
|
|
45714
|
-
|
|
46020
|
+
debugLogger41.warn("Failed to admit /btw submission", error);
|
|
45715
46021
|
});
|
|
45716
46022
|
return;
|
|
45717
46023
|
}
|
|
@@ -45805,7 +46111,7 @@ ${buildWorkflowSteeringNotice()}
|
|
|
45805
46111
|
submittedPrompt === void 0 ? void 0 : { submittedPrompt }
|
|
45806
46112
|
)
|
|
45807
46113
|
).catch((error) => {
|
|
45808
|
-
|
|
46114
|
+
debugLogger41.warn("Failed to admit slash command", error);
|
|
45809
46115
|
});
|
|
45810
46116
|
return;
|
|
45811
46117
|
}
|
|
@@ -45882,18 +46188,18 @@ ${currentText}` : popped.modelText
|
|
|
45882
46188
|
geminiClient?.stripOrphanedUserEntriesFromHistory?.();
|
|
45883
46189
|
}
|
|
45884
46190
|
if (!draftWasEmpty) {
|
|
45885
|
-
|
|
46191
|
+
debugLogger41.debug("auto-restore bail: buffer was non-empty");
|
|
45886
46192
|
return;
|
|
45887
46193
|
}
|
|
45888
46194
|
if (popped !== null) {
|
|
45889
|
-
|
|
46195
|
+
debugLogger41.debug(
|
|
45890
46196
|
"auto-restore bail: queue had items (drained to buffer)"
|
|
45891
46197
|
);
|
|
45892
46198
|
return;
|
|
45893
46199
|
}
|
|
45894
46200
|
const cancelledTurnUserItem = info?.lastTurnUserItem;
|
|
45895
46201
|
if (cancelledTurnUserItem == null) {
|
|
45896
|
-
|
|
46202
|
+
debugLogger41.debug(
|
|
45897
46203
|
"auto-restore bail: cancelled turn did not add a user history item"
|
|
45898
46204
|
);
|
|
45899
46205
|
return;
|
|
@@ -45907,20 +46213,20 @@ ${currentText}` : popped.modelText
|
|
|
45907
46213
|
buffer.setText(cancelledTurnUserItem.text);
|
|
45908
46214
|
}, "restoreCancelledPrompt");
|
|
45909
46215
|
if (pendingHistoryItems2.some((item) => item.type === "tool_group")) {
|
|
45910
|
-
|
|
46216
|
+
debugLogger41.debug(
|
|
45911
46217
|
"auto-restore bail: tool execution is pending or committed"
|
|
45912
46218
|
);
|
|
45913
46219
|
return;
|
|
45914
46220
|
}
|
|
45915
46221
|
if (info?.turnProducedMeaningfulContent) {
|
|
45916
|
-
|
|
46222
|
+
debugLogger41.debug(
|
|
45917
46223
|
"auto-restore: preserving streamed output and restoring prompt text"
|
|
45918
46224
|
);
|
|
45919
46225
|
restoreCancelledPrompt();
|
|
45920
46226
|
return;
|
|
45921
46227
|
}
|
|
45922
46228
|
if (pendingHistoryItems2.some((item) => !isSyntheticHistoryItem(item))) {
|
|
45923
|
-
|
|
46229
|
+
debugLogger41.debug(
|
|
45924
46230
|
"auto-restore bail: pending stream item has meaningful content"
|
|
45925
46231
|
);
|
|
45926
46232
|
return;
|
|
@@ -45928,11 +46234,11 @@ ${currentText}` : popped.modelText
|
|
|
45928
46234
|
const history = historyRef.current;
|
|
45929
46235
|
const lastUserIdx = findLastUserItemIndex(history);
|
|
45930
46236
|
if (lastUserIdx === -1) {
|
|
45931
|
-
|
|
46237
|
+
debugLogger41.debug("auto-restore bail: no user item in history");
|
|
45932
46238
|
return;
|
|
45933
46239
|
}
|
|
45934
46240
|
if (!itemsAfterAreOnlySynthetic(history, lastUserIdx)) {
|
|
45935
|
-
|
|
46241
|
+
debugLogger41.debug(
|
|
45936
46242
|
"auto-restore: preserving committed output and restoring prompt text"
|
|
45937
46243
|
);
|
|
45938
46244
|
restoreCancelledPrompt();
|
|
@@ -45940,18 +46246,18 @@ ${currentText}` : popped.modelText
|
|
|
45940
46246
|
}
|
|
45941
46247
|
const lastUserItem = history[lastUserIdx];
|
|
45942
46248
|
if (lastUserItem.type !== "user") {
|
|
45943
|
-
|
|
46249
|
+
debugLogger41.debug(
|
|
45944
46250
|
"auto-restore bail: lastUserItem type narrowing failed (unexpected)"
|
|
45945
46251
|
);
|
|
45946
46252
|
return;
|
|
45947
46253
|
}
|
|
45948
46254
|
if (lastUserItem.id !== cancelledTurnUserItem.id || lastUserItem.text !== cancelledTurnUserItem.text) {
|
|
45949
|
-
|
|
46255
|
+
debugLogger41.debug(
|
|
45950
46256
|
"auto-restore bail: lastUserItem identity does not match cancelled-turn user item"
|
|
45951
46257
|
);
|
|
45952
46258
|
return;
|
|
45953
46259
|
}
|
|
45954
|
-
|
|
46260
|
+
debugLogger41.debug(
|
|
45955
46261
|
"auto-restore: rewinding cancelled turn and restoring prompt"
|
|
45956
46262
|
);
|
|
45957
46263
|
historyManager.truncateToItem(lastUserItem.id);
|
|
@@ -45960,7 +46266,7 @@ ${currentText}` : popped.modelText
|
|
|
45960
46266
|
geminiClient?.stripOrphanedUserEntriesFromHistory?.();
|
|
45961
46267
|
if (info?.canUndoLastLoggedUserMessage) {
|
|
45962
46268
|
void logger?.removeLastUserMessage().catch((err) => {
|
|
45963
|
-
|
|
46269
|
+
debugLogger41.debug("Failed to undo cancelled prompt from log:", err);
|
|
45964
46270
|
});
|
|
45965
46271
|
}
|
|
45966
46272
|
},
|
|
@@ -46051,7 +46357,13 @@ ${currentText}` : popped.modelText
|
|
|
46051
46357
|
suggestionAbortRef.current = ac;
|
|
46052
46358
|
const conversationHistory = geminiClient.getHistoryTail(40, true);
|
|
46053
46359
|
generatePromptSuggestion(config, conversationHistory, ac.signal, {
|
|
46054
|
-
|
|
46360
|
+
// On by default: the schema declares `default: true`, but
|
|
46361
|
+
// `mergeSettings` doesn't apply schema defaults, so an unset value is
|
|
46362
|
+
// `undefined` and a `=== true` gate left the cache-aware fork as dead
|
|
46363
|
+
// code unless the flag was explicitly set (#9230). Same treatment as
|
|
46364
|
+
// `enableFollowupSuggestions` above — only an explicit `false` opts
|
|
46365
|
+
// out.
|
|
46366
|
+
enableCacheSharing: settings.merged.ui?.enableCacheSharing !== false
|
|
46055
46367
|
}).then((result) => {
|
|
46056
46368
|
if (ac.signal.aborted) return;
|
|
46057
46369
|
if (result.suggestion) {
|
|
@@ -46676,7 +46988,7 @@ ${migrationResult.failedFiles.map((f) => ` \u2022 ${f.file}: ${f.error}`).join(
|
|
|
46676
46988
|
const handleGlobalKeypress = (0, import_react162.useCallback)(
|
|
46677
46989
|
(key) => {
|
|
46678
46990
|
if (settings.merged.general?.debugKeystrokeLogging) {
|
|
46679
|
-
|
|
46991
|
+
debugLogger41.debug("[DEBUG] Keystroke:", JSON.stringify(key));
|
|
46680
46992
|
}
|
|
46681
46993
|
if (keyMatchers["toggleThinkingExpanded" /* TOGGLE_THINKING_EXPANDED */](key)) {
|
|
46682
46994
|
setThoughtExpanded((prev) => !prev);
|
|
@@ -46794,7 +47106,7 @@ ${migrationResult.failedFiles.map((f) => ` \u2022 ${f.file}: ${f.error}`).join(
|
|
|
46794
47106
|
);
|
|
46795
47107
|
if (promotableShells.length === 1) {
|
|
46796
47108
|
const executingShell = promotableShells[0];
|
|
46797
|
-
|
|
47109
|
+
debugLogger41.debug(
|
|
46798
47110
|
`Ctrl+B promote: matched executing shell tool call ${executingShell.request.callId}`
|
|
46799
47111
|
);
|
|
46800
47112
|
executingShell.promoteAbortController.abort({
|
|
@@ -46802,7 +47114,7 @@ ${migrationResult.failedFiles.map((f) => ` \u2022 ${f.file}: ${f.error}`).join(
|
|
|
46802
47114
|
});
|
|
46803
47115
|
return;
|
|
46804
47116
|
}
|
|
46805
|
-
|
|
47117
|
+
debugLogger41.debug(
|
|
46806
47118
|
`Ctrl+B promote: expected exactly one executing shell tool call; falling through (streamingState=${streamingState}, pendingToolCalls=${pendingToolCallsRef.current.length}, promotableShells=${promotableShells.length})`
|
|
46807
47119
|
);
|
|
46808
47120
|
}
|
|
@@ -47493,7 +47805,7 @@ __name(installSynchronizedOutput, "installSynchronizedOutput");
|
|
|
47493
47805
|
|
|
47494
47806
|
// packages/cli/src/ui/startInteractiveUI.tsx
|
|
47495
47807
|
var import_jsx_runtime133 = __toESM(require_jsx_runtime(), 1);
|
|
47496
|
-
var
|
|
47808
|
+
var debugLogger42 = createDebugLogger("STARTUP");
|
|
47497
47809
|
var PRESSURE_CHECK_INTERVAL_MS = 3e4;
|
|
47498
47810
|
async function startInteractiveUI(config, settings, startupWarnings, workspaceRoot = process.cwd(), initializationResult, options = {}) {
|
|
47499
47811
|
const version = await getCliVersion();
|
|
@@ -47531,7 +47843,7 @@ async function startInteractiveUI(config, settings, startupWarnings, workspaceRo
|
|
|
47531
47843
|
);
|
|
47532
47844
|
}
|
|
47533
47845
|
} catch (err) {
|
|
47534
|
-
|
|
47846
|
+
debugLogger42.error("Failed to initialize dual output bridge:", err);
|
|
47535
47847
|
writeStderrLine(
|
|
47536
47848
|
`Warning: dual output disabled \u2014 ${err instanceof Error ? err.message : String(err)}`
|
|
47537
47849
|
);
|
|
@@ -47542,7 +47854,7 @@ async function startInteractiveUI(config, settings, startupWarnings, workspaceRo
|
|
|
47542
47854
|
try {
|
|
47543
47855
|
remoteInputWatcher = new RemoteInputWatcher(inputFile);
|
|
47544
47856
|
} catch (err) {
|
|
47545
|
-
|
|
47857
|
+
debugLogger42.error("Failed to initialize remote input watcher:", err);
|
|
47546
47858
|
writeStderrLine(
|
|
47547
47859
|
`Warning: remote input disabled \u2014 ${err instanceof Error ? err.message : String(err)}`
|
|
47548
47860
|
);
|
|
@@ -47593,7 +47905,7 @@ async function startInteractiveUI(config, settings, startupWarnings, workspaceRo
|
|
|
47593
47905
|
{
|
|
47594
47906
|
recordForExitEcho: true,
|
|
47595
47907
|
onError: (error, info) => {
|
|
47596
|
-
|
|
47908
|
+
debugLogger42.error(
|
|
47597
47909
|
`[FATAL_RENDER_ERROR] ${error.message}
|
|
47598
47910
|
${info.componentStack ?? ""}
|
|
47599
47911
|
${error.stack ?? ""}`
|
|
@@ -47671,6 +47983,14 @@ qwen --resume ${sessionId}`
|
|
|
47671
47983
|
} catch {
|
|
47672
47984
|
}
|
|
47673
47985
|
});
|
|
47986
|
+
config.trackSessionRegistration(
|
|
47987
|
+
registerSession({
|
|
47988
|
+
sessionId: config.getSessionId(),
|
|
47989
|
+
cwd: config.getTargetDir(),
|
|
47990
|
+
qwenVersion: version
|
|
47991
|
+
})
|
|
47992
|
+
);
|
|
47993
|
+
registerCleanup(() => config.unregisterSessionRegistry());
|
|
47674
47994
|
}
|
|
47675
47995
|
__name(startInteractiveUI, "startInteractiveUI");
|
|
47676
47996
|
function setWindowTitle(settings, folderName) {
|