@qwen-code/qwen-code 0.19.12 → 0.20.0-nightly.20260721.cda0e0348

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.
Files changed (280) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +1 -1
  2. package/bundled/qc-helper/docs/features/commands.md +54 -0
  3. package/bundled/qc-helper/docs/integration-github-action.md +1 -1
  4. package/bundled/qc-helper/docs/qwen-serve.md +44 -6
  5. package/bundled/review/DESIGN.md +2 -2
  6. package/bundled/review/SKILL.md +13 -9
  7. package/chunks/{MaxSizedBox-QOXLJGAF.js → MaxSizedBox-EE76OHAP.js} +30 -27
  8. package/chunks/{StandaloneSessionPicker-FLV6CGYJ.js → StandaloneSessionPicker-WZH4PC3K.js} +50 -45
  9. package/chunks/{acpAgent-OB2CTF3P.js → acpAgent-2ATF4LMP.js} +437 -156
  10. package/chunks/{agent-CKSI7BTR.js → agent-KTOOFWMV.js} +22 -22
  11. package/chunks/{agent-headless-U36LIYTU.js → agent-headless-WVJCQ27D.js} +22 -22
  12. package/chunks/{anthropicContentGenerator-ZZRGFEES.js → anthropicContentGenerator-W4JLNYWQ.js} +6 -5
  13. package/chunks/{artifact-tool-PHO5XEGZ.js → artifact-tool-WBCAMD3O.js} +2 -2
  14. package/chunks/{askUserQuestion-CEPBT47X.js → askUserQuestion-6DZC4UV5.js} +2 -2
  15. package/chunks/{bridge-AIKTINJG.js → bridge-T4TLAZSJ.js} +25 -25
  16. package/chunks/build-SSCNEHZZ.js +62 -0
  17. package/chunks/{ca-2SL2BXTK.js → ca-ISKASTR5.js} +606 -200
  18. package/chunks/{channel-worker-group-NEUVTPB2.js → channel-worker-group-QZV2SP5U.js} +4 -4
  19. package/chunks/{channel-worker-manager-7CQVOVWV.js → channel-worker-manager-3GMAU45H.js} +4 -4
  20. package/chunks/{channel-worker-supervisor-3BU2KNCZ.js → channel-worker-supervisor-QCXSXCRY.js} +3 -3
  21. package/chunks/{chunk-6ETOSWAO.js → chunk-246TW4IX.js} +3 -3
  22. package/chunks/{chunk-2CCDMJM7.js → chunk-25Y6JSH2.js} +3 -3
  23. package/chunks/{chunk-XSEWNUMZ.js → chunk-2CWOJ2FA.js} +8 -8
  24. package/chunks/{chunk-UZC5VPOJ.js → chunk-2GFRA3MN.js} +3 -3
  25. package/chunks/chunk-2GOPPEHK.js +442 -0
  26. package/chunks/{chunk-MRE77ST5.js → chunk-2ITGJJE2.js} +69 -2216
  27. package/chunks/{chunk-BABX5XRO.js → chunk-2LI23QA6.js} +1 -1
  28. package/chunks/{chunk-EFAXBOQO.js → chunk-32F7BZSK.js} +7 -7
  29. package/chunks/chunk-43T5WDQ7.js +127 -0
  30. package/chunks/{chunk-DJ4VHAFJ.js → chunk-4CWPMWCD.js} +7 -3
  31. package/chunks/{chunk-GMUPIMHF.js → chunk-4RA7PWIY.js} +3 -3
  32. package/chunks/{chunk-6IITZE7O.js → chunk-5JX5EWR5.js} +7 -7
  33. package/chunks/{chunk-OBSLEYCD.js → chunk-5PZ6R37W.js} +29 -2
  34. package/chunks/{chunk-HTHUX2T5.js → chunk-5QWWOFGG.js} +0 -1
  35. package/chunks/{chunk-3DJY4IFO.js → chunk-5SCI6E3E.js} +1 -1
  36. package/chunks/{chunk-GSPWDTYY.js → chunk-5WG2K5RH.js} +53 -16
  37. package/chunks/{chunk-NPMVLWYL.js → chunk-5YVZ2XLV.js} +6 -6
  38. package/chunks/{chunk-TKASNYDS.js → chunk-6DHWO5ZF.js} +3 -3
  39. package/chunks/{chunk-4CHDYDG3.js → chunk-6EFTQYW7.js} +1 -1
  40. package/chunks/{chunk-RKUMFUFM.js → chunk-6MC5ASQK.js} +4 -4
  41. package/chunks/{chunk-HZ4M2UQD.js → chunk-6RVJRVQR.js} +1 -1
  42. package/chunks/{chunk-W6CQPLWM.js → chunk-6ZBPS62S.js} +1 -1
  43. package/chunks/chunk-7KGXAXF7.js +114 -0
  44. package/chunks/{chunk-PK7COE5O.js → chunk-ABIL4ZQU.js} +1 -1
  45. package/chunks/{chunk-OEHCAWUA.js → chunk-ACW3VNUE.js} +2 -2
  46. package/chunks/{chunk-APOFULHK.js → chunk-AWVS63WA.js} +7 -6
  47. package/chunks/{chunk-KGWA7XYL.js → chunk-AY3CSB6F.js} +6 -226
  48. package/chunks/{chunk-XAAEDML2.js → chunk-AYCDXHZB.js} +1 -1
  49. package/chunks/{chunk-42VIHAYT.js → chunk-B452RETY.js} +1 -1
  50. package/chunks/{chunk-VAJS2E2D.js → chunk-BDBMYST4.js} +1 -1
  51. package/chunks/{chunk-5N7M4XYN.js → chunk-BUKOHGBE.js} +5 -5
  52. package/chunks/{chunk-F2RR4HO2.js → chunk-BVLROR2T.js} +1 -1
  53. package/chunks/{chunk-WIYV7CSF.js → chunk-BWK3FX3K.js} +3 -3
  54. package/chunks/{chunk-UE5TZ55T.js → chunk-C27BYUX6.js} +29 -2
  55. package/chunks/{chunk-KRMARA3A.js → chunk-CG2HPAVD.js} +29 -13
  56. package/chunks/{chunk-UOA2IHRI.js → chunk-CPCVCKKF.js} +1 -1
  57. package/chunks/{chunk-HD6EGS5K.js → chunk-CUJX3F4X.js} +31 -6
  58. package/chunks/{chunk-4RPARQ5D.js → chunk-D2VIDMVM.js} +2 -2
  59. package/chunks/{chunk-PUKUUASO.js → chunk-DMRO4GU2.js} +1 -1
  60. package/chunks/{chunk-64GC5EMF.js → chunk-DZZIOIVF.js} +1 -1
  61. package/chunks/{chunk-FUSMC3SZ.js → chunk-E5QFCC4X.js} +13 -8
  62. package/chunks/{chunk-LKR7QQ63.js → chunk-EAUYY7SS.js} +3 -3
  63. package/chunks/{chunk-NE6HHLL3.js → chunk-EDMGFJ3E.js} +2 -2
  64. package/chunks/{chunk-J2MKYJKZ.js → chunk-EIAK6Q2B.js} +2 -2
  65. package/chunks/{chunk-WEPXQKGP.js → chunk-EZVDJFZ7.js} +1 -1
  66. package/chunks/{chunk-NALRQ3SG.js → chunk-FCUUJKZF.js} +394 -128
  67. package/chunks/{chunk-4XCVGEEX.js → chunk-FSL5W5TI.js} +3 -3
  68. package/chunks/{chunk-CHPQFLW6.js → chunk-FYA3Y5JR.js} +5 -5
  69. package/chunks/{chunk-V4PCIS25.js → chunk-FZVSFBNW.js} +69 -7
  70. package/chunks/{chunk-4MPYGENG.js → chunk-G45NOBV7.js} +6 -6
  71. package/chunks/{chunk-OSSDHJDU.js → chunk-G45X5TRN.js} +1 -1
  72. package/chunks/{chunk-3B6PSWHE.js → chunk-GH7OEOYU.js} +4 -4
  73. package/chunks/{chunk-KANTXY7B.js → chunk-GKY2OJ7R.js} +2 -2
  74. package/chunks/chunk-GMGDLUC7.js +37 -0
  75. package/chunks/{chunk-2476XGOU.js → chunk-GPILFVPY.js} +1 -1
  76. package/chunks/{chunk-EISVEV45.js → chunk-H24SOJIQ.js} +2 -2
  77. package/chunks/{chunk-J6NT5YTN.js → chunk-H2XVO6NE.js} +1 -289
  78. package/chunks/{chunk-QIFTJDBY.js → chunk-IM2A6YO3.js} +1 -1
  79. package/chunks/{chunk-R3EDIMYZ.js → chunk-IYZENXFW.js} +1 -1
  80. package/chunks/{chunk-LPHGXXZX.js → chunk-JD3MKVKL.js} +1 -1
  81. package/chunks/{chunk-NUHSLBJZ.js → chunk-JNWZQ27S.js} +15 -9
  82. package/chunks/{chunk-ETN2G32U.js → chunk-JPRLCXAO.js} +4 -4
  83. package/chunks/{chunk-WHQNBBWW.js → chunk-JQMBPGOU.js} +2 -2
  84. package/chunks/{chunk-5QSVANRT.js → chunk-JR6UJ24K.js} +2 -2
  85. package/chunks/{chunk-VLHQMOZK.js → chunk-JRW46GQX.js} +3 -3
  86. package/chunks/{chunk-DUR7BZYK.js → chunk-KRI4VCHX.js} +53 -28
  87. package/chunks/{chunk-PR5XQ73G.js → chunk-KTNIZG2C.js} +2 -2
  88. package/chunks/{chunk-QSG4ZFG4.js → chunk-KTUQMDEP.js} +1 -1
  89. package/chunks/{chunk-HVGJWOR6.js → chunk-L4YSPHR4.js} +2 -2
  90. package/chunks/{chunk-BEZPRKD3.js → chunk-LC5CAVMS.js} +160 -2
  91. package/chunks/{chunk-67Q33DQY.js → chunk-LLDGOZMJ.js} +4 -4
  92. package/chunks/{chunk-UCTCDLDS.js → chunk-LWQ4IAOJ.js} +136 -4
  93. package/chunks/{chunk-GEHSF7MS.js → chunk-NEEB7UEN.js} +2545 -1974
  94. package/chunks/{chunk-GCY7QTCE.js → chunk-NO6XTCYT.js} +1822 -424
  95. package/chunks/{chunk-JCJPZMJV.js → chunk-OOCI5VVU.js} +1 -1
  96. package/chunks/{chunk-XSPFQQRE.js → chunk-OONJNQ42.js} +3 -3
  97. package/chunks/{chunk-ANRANWVE.js → chunk-OP4MOGXF.js} +1 -1
  98. package/chunks/{chunk-GW7BONBU.js → chunk-OV2KB55J.js} +5 -5
  99. package/chunks/{chunk-CPU6I5YV.js → chunk-P64HXIC5.js} +115 -32
  100. package/chunks/{chunk-SGPFJMRP.js → chunk-PBATSWUQ.js} +1 -1
  101. package/chunks/{chunk-GXFYV7MP.js → chunk-PFKNXN67.js} +1106 -592
  102. package/chunks/{chunk-KNGZ5EYL.js → chunk-PYNCSQSI.js} +198 -120
  103. package/chunks/{chunk-I7RRHHYG.js → chunk-QKTHJXCS.js} +1 -1
  104. package/chunks/chunk-QKYTTBYW.js +624 -0
  105. package/chunks/{chunk-76BFY7AF.js → chunk-QTERJVPZ.js} +1 -6
  106. package/chunks/{chunk-W4UN42YP.js → chunk-R3VZNHRX.js} +85 -21
  107. package/chunks/chunk-R5N7NF5D.js +1187 -0
  108. package/chunks/{chunk-ZSDFNE6Y.js → chunk-RF34V75B.js} +3 -3
  109. package/chunks/{chunk-HCCR43AY.js → chunk-RFIAR4YL.js} +1 -1
  110. package/chunks/chunk-RS7MT2QG.js +305 -0
  111. package/chunks/{chunk-BKNPMEN6.js → chunk-RVLZCXEE.js} +162 -17
  112. package/chunks/chunk-SV5PQVQE.js +71 -0
  113. package/chunks/{chunk-3ESL7JXA.js → chunk-U4VGYZN7.js} +3 -3
  114. package/chunks/{chunk-4CA4WUMS.js → chunk-UEY4AYUL.js} +2 -2
  115. package/chunks/{chunk-ZGT623SG.js → chunk-USTF7LPI.js} +12 -12
  116. package/chunks/chunk-V7RNNPGC.js +44 -0
  117. package/chunks/{chunk-VEFR4XJQ.js → chunk-W3BKN3LO.js} +1 -1
  118. package/chunks/{chunk-4SJJT466.js → chunk-WQQDJE2P.js} +94 -177
  119. package/chunks/{chunk-KMJOMWHE.js → chunk-WRRF6TEQ.js} +1 -1
  120. package/chunks/{chunk-GLH2NTPB.js → chunk-XCHUDLER.js} +1 -1
  121. package/chunks/{chunk-7SX6WZNO.js → chunk-XVVH63JG.js} +3 -3
  122. package/chunks/{chunk-N47VAEAJ.js → chunk-XZOBDSDG.js} +2379 -1291
  123. package/chunks/chunk-YGIUIIIF.js +125 -0
  124. package/chunks/{chunk-335ECZTA.js → chunk-ZEOZL37W.js} +1 -1
  125. package/chunks/{computer-use-4PUGCUQK.js → computer-use-M6MGRJF2.js} +22 -22
  126. package/chunks/{config-utils-6PJUXHLI.js → config-utils-MOGE4EVB.js} +3 -3
  127. package/chunks/{contextCommand-C57KTWFV.js → contextCommand-HTRJJYNE.js} +25 -26
  128. package/chunks/{create-sub-session-5Q42XR6I.js → create-sub-session-MB35IHCR.js} +22 -22
  129. package/chunks/{create-sub-session-DIJOV6HV.js → create-sub-session-P26FE5GG.js} +2 -2
  130. package/chunks/{cron-create-X462ERYA.js → cron-create-JWFHBDRQ.js} +4 -4
  131. package/chunks/{cron-delete-SL5UJUM3.js → cron-delete-GDX4E26G.js} +4 -4
  132. package/chunks/{cron-list-3MD6SVXI.js → cron-list-USMAIWPT.js} +4 -4
  133. package/chunks/{daemon-ZW6LHOXT.js → daemon-KLPTQIE4.js} +287 -143
  134. package/chunks/{daemon-status-provider-YPV3UXHT.js → daemon-status-provider-67EKK6S3.js} +29 -29
  135. package/chunks/{dist-NUXRQHC5.js → dist-OAV7LJGJ.js} +1 -1
  136. package/chunks/{dist-XLE6ODMB.js → dist-OMW6WDEO.js} +1 -1
  137. package/chunks/{dist-J2H4KTLB.js → dist-PJLG2XYX.js} +1 -1
  138. package/chunks/{dist-IEQSDXS7.js → dist-UIFWIFRO.js} +2 -2
  139. package/chunks/{dist-IGZMVS5R.js → dist-VGJTZL4E.js} +33 -22
  140. package/chunks/{dist-3DQNQJ6H.js → dist-XBJVSWS2.js} +1 -1
  141. package/chunks/{earlyInputCapture-5VDWSYAM.js → earlyInputCapture-7QJX25AC.js} +23 -23
  142. package/chunks/{edit-GORZTX2U.js → edit-BTPQWGAA.js} +23 -23
  143. package/chunks/{enter-worktree-LJB2AW4L.js → enter-worktree-N3SEYKOO.js} +22 -22
  144. package/chunks/{enterPlanMode-LIIPP37T.js → enterPlanMode-TN2JV5MY.js} +28 -23
  145. package/chunks/{environment-HQ2UHJ35.js → environment-HP6RK262.js} +24 -24
  146. package/chunks/{errors-6JD5VMVQ.js → errors-VHGRDDOQ.js} +24 -24
  147. package/chunks/{exit-worktree-IEP2WHOV.js → exit-worktree-FI3SQY3U.js} +22 -22
  148. package/chunks/{exitPlanMode-U5Z6XBLO.js → exitPlanMode-NZWRVIIY.js} +22 -22
  149. package/chunks/{fast-path-HFKNMP23.js → fast-path-EGP7AXNR.js} +3 -2
  150. package/chunks/{gemini-C2SCJH3N.js → gemini-AN5YMD5O.js} +70 -68
  151. package/chunks/{geminiContentGenerator-ADZTXEKV.js → geminiContentGenerator-ABTMU4FE.js} +4 -4
  152. package/chunks/{glob-GOAPGD6G.js → glob-5YABOPJB.js} +22 -22
  153. package/chunks/{grep-HZLSTX7D.js → grep-U67FKUJT.js} +22 -22
  154. package/chunks/{handleAutoUpdate-UF74WGFE.js → handleAutoUpdate-OOKBP5VD.js} +27 -28
  155. package/chunks/{i18n-FMXIYUOC.js → i18n-GMQV324P.js} +23 -23
  156. package/chunks/{initializer-ERDBM3DU.js → initializer-NWALZGQ5.js} +28 -28
  157. package/chunks/{installationInfo-LROMXYLX.js → installationInfo-Y3M433E7.js} +25 -23
  158. package/chunks/{keychain-token-storage-K23CFKGN.js → keychain-token-storage-DWRJMNH3.js} +2 -2
  159. package/chunks/{list-6JPJROU5.js → list-CQDDWHTS.js} +30 -30
  160. package/chunks/{loadedSettingsAdapter-QCWYUBBF.js → loadedSettingsAdapter-I5KG37EI.js} +27 -27
  161. package/chunks/{loop-wakeup-6H7OENTB.js → loop-wakeup-5GLTUBHA.js} +5 -5
  162. package/chunks/{ls-APTSOOS5.js → ls-FHBY3Y7I.js} +4 -4
  163. package/chunks/{lsp-HPACPJAN.js → lsp-B6VMEW6Y.js} +2 -2
  164. package/chunks/{mcp-3P3KWYWO.js → mcp-24HHCBSP.js} +27 -27
  165. package/chunks/{monitor-LMYKCF6R.js → monitor-Z7NZNNRC.js} +22 -22
  166. package/chunks/nonInteractiveCli-GVF2XDJT.js +126 -0
  167. package/chunks/{notebook-edit-IBEOVZ6A.js → notebook-edit-GFOYAQAZ.js} +23 -23
  168. package/chunks/{openaiContentGenerator-42PZKET5.js → openaiContentGenerator-XAAYV6WR.js} +11 -11
  169. package/chunks/{pidfile-VTBDIGOH.js → pidfile-ILI37KRQ.js} +23 -23
  170. package/chunks/{processUtils-L7ZKOGDG.js → processUtils-LIPJMLVZ.js} +2 -2
  171. package/chunks/{qwenContentGenerator-VR2CNFGI.js → qwenContentGenerator-DLJ3KKGZ.js} +24 -24
  172. package/chunks/{qwenOAuth2-6LS2T3Q6.js → qwenOAuth2-J47FU5PW.js} +11 -11
  173. package/chunks/react-SG7JAQSZ.js +8 -0
  174. package/chunks/{read-file-VSKOE22I.js → read-file-LCQ2KNNP.js} +8 -8
  175. package/chunks/{read-mcp-resource-C6NT52T6.js → read-mcp-resource-AKCL7I43.js} +2 -2
  176. package/chunks/{record-artifact-ENCU7QCL.js → record-artifact-PEUB7727.js} +2 -2
  177. package/chunks/resumeHistoryUtils-PSCSAKA6.js +78 -0
  178. package/chunks/{ripGrep-5V5FLW2A.js → ripGrep-Y2XW4EFC.js} +22 -22
  179. package/chunks/{run-qwen-serve-LSOPP4R2.js → run-qwen-serve-DQ5ZIR36.js} +1459 -148
  180. package/chunks/{runtime-LT7R4CS5.js → runtime-6MQFF2A6.js} +33 -31
  181. package/chunks/{scheduler-YOWQ7KZP.js → scheduler-K4S7NY3G.js} +22 -22
  182. package/chunks/{send-message-5GZ4FX2V.js → send-message-3RHE7HSM.js} +3 -3
  183. package/chunks/{serve-VWLBXKGK.js → serve-JFAAPC5J.js} +27 -27
  184. package/chunks/{server-3RW3FYOH.js → server-QB6CHRZN.js} +866 -271
  185. package/chunks/{session-ZONXFOBQ.js → session-FKPVXAAB.js} +79 -163
  186. package/chunks/{settings-JC3VC53L.js → settings-CADELKSU.js} +26 -26
  187. package/chunks/{shell-2NGEMAVM.js → shell-EON6WVVH.js} +22 -22
  188. package/chunks/{skill-3U2T6H3E.js → skill-FKSYXJ5U.js} +10 -10
  189. package/chunks/{spawnChannel-QEAUPARQ.js → spawnChannel-VM5IHLJO.js} +24 -24
  190. package/chunks/{src-75ZPXO7B.js → src-Q4XB6SVD.js} +66 -22
  191. package/chunks/{standalone-update-UUJWJWYY.js → standalone-update-KGZHPBMA.js} +24 -24
  192. package/chunks/{startInteractiveUI-V7XISPQ6.js → startInteractiveUI-EYDJIIIZ.js} +5484 -2045
  193. package/chunks/{syntheticOutput-ULOVVLY4.js → syntheticOutput-FG5PQKIR.js} +3 -3
  194. package/chunks/{task-create-DUE2PMNI.js → task-create-HX32YXO7.js} +7 -7
  195. package/chunks/{task-list-WVPNX7BZ.js → task-list-QWSY4ZIU.js} +5 -5
  196. package/chunks/{task-stop-CPEQWOT6.js → task-stop-GWC6UWAL.js} +2 -2
  197. package/chunks/{task-update-HY2LNFFB.js → task-update-NCTAB73Q.js} +7 -7
  198. package/chunks/{team-create-R6AXDYPG.js → team-create-CYP3YKYT.js} +22 -22
  199. package/chunks/{team-delete-JJV6IUOA.js → team-delete-KK37HTOG.js} +5 -5
  200. package/chunks/{team-plan-approval-O2ZPPT64.js → team-plan-approval-5LXIFKNV.js} +22 -22
  201. package/chunks/{theme-manager-YIX2IC2D.js → theme-manager-QOUMDWMP.js} +23 -23
  202. package/chunks/{todoWrite-JHHIDOIV.js → todoWrite-ERCAMLFS.js} +4 -4
  203. package/chunks/{tool-search-5IE2VO7X.js → tool-search-Q27QHQU3.js} +9 -9
  204. package/chunks/{total-session-admission-K6APQYEF.js → total-session-admission-HWVCZ2WR.js} +25 -25
  205. package/chunks/{trustedFolders-GPSSPVBF.js → trustedFolders-C6664IQC.js} +23 -23
  206. package/chunks/{update-relaunch-4BVAPX6Y.js → update-relaunch-QC3E4FZW.js} +9 -9
  207. package/chunks/{updateCheck-AHTHWLAM.js → updateCheck-MVUKJMBX.js} +33 -26
  208. package/chunks/useAutoAcceptIndicator-J234IFIS.js +80 -0
  209. package/chunks/{validateNonInterActiveAuth-UKAPCWDM.js → validateNonInterActiveAuth-YPPEKX4N.js} +61 -63
  210. package/chunks/{version-EXGWKKQE.js → version-5IXFQ4PT.js} +1 -1
  211. package/chunks/{web-fetch-ZDNE6FF2.js → web-fetch-L62NQVKN.js} +10 -10
  212. package/chunks/{workflow-G7U6OQWS.js → workflow-6MHBBFQU.js} +23 -23
  213. package/chunks/{workspace-providers-status-W6CEA6YM.js → workspace-providers-status-ZTW2B5QU.js} +30 -30
  214. package/chunks/{workspace-registration-store-OGBMWCLC.js → workspace-registration-store-P6QHCSMU.js} +7 -1
  215. package/chunks/{workspace-registry-ZUWQM44P.js → workspace-registry-R54M5O3W.js} +25 -25
  216. package/chunks/{workspace-service-UXX5P7GU.js → workspace-service-WYLRGM4A.js} +32 -32
  217. package/chunks/{workspace-skills-status-635B5R7N.js → workspace-skills-status-NN5QFU3A.js} +28 -28
  218. package/chunks/{write-file-DR3HN7IH.js → write-file-EAT3CHUK.js} +23 -23
  219. package/cli.js +11 -11
  220. package/locales/ca.js +763 -201
  221. package/package.json +3 -3
  222. package/web-shell/assets/{arc-_dVIKMdB.js → arc-B0iTWRo2.js} +1 -1
  223. package/web-shell/assets/{architectureDiagram-3BPJPVTR-MuN3nKpL.js → architectureDiagram-3BPJPVTR-DSQP4-9D.js} +1 -1
  224. package/web-shell/assets/{blockDiagram-GPEHLZMM-BtmvJjzx.js → blockDiagram-GPEHLZMM-BNPVXVT3.js} +1 -1
  225. package/web-shell/assets/{c4Diagram-AAUBKEIU-Dvi58_BU.js → c4Diagram-AAUBKEIU-DEHfJFiD.js} +1 -1
  226. package/web-shell/assets/channel-tVz-qNSq.js +1 -0
  227. package/web-shell/assets/{chunk-2J33WTMH-YqxOVhS1.js → chunk-2J33WTMH-VZ0uL1p9.js} +1 -1
  228. package/web-shell/assets/{chunk-4BX2VUAB-DoBgbC9z.js → chunk-4BX2VUAB-D5TKmvwG.js} +1 -1
  229. package/web-shell/assets/{chunk-55IACEB6-3NEQrBAr.js → chunk-55IACEB6-BDW1Lcq-.js} +1 -1
  230. package/web-shell/assets/{chunk-727SXJPM-DrCZQxp0.js → chunk-727SXJPM-Cj4h85iM.js} +1 -1
  231. package/web-shell/assets/{chunk-AQP2D5EJ-m_g3zjgv.js → chunk-AQP2D5EJ-5LeqiOhZ.js} +1 -1
  232. package/web-shell/assets/{chunk-FMBD7UC4-D1_crABJ.js → chunk-FMBD7UC4-BaTgsco7.js} +1 -1
  233. package/web-shell/assets/{chunk-ND2GUHAM-BdhgVtBx.js → chunk-ND2GUHAM-t3uGlIUk.js} +1 -1
  234. package/web-shell/assets/{chunk-QZHKN3VN-BlmThhm-.js → chunk-QZHKN3VN-rOnNXL2Q.js} +1 -1
  235. package/web-shell/assets/classDiagram-4FO5ZUOK-CWuaBxYV.js +1 -0
  236. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CWuaBxYV.js +1 -0
  237. package/web-shell/assets/{cose-bilkent-S5V4N54A-Cbjm_00Z.js → cose-bilkent-S5V4N54A-CcqXykgA.js} +1 -1
  238. package/web-shell/assets/{dagre-BM42HDAG-C39QNVgC.js → dagre-BM42HDAG-Dkjrchoy.js} +1 -1
  239. package/web-shell/assets/{diagram-2AECGRRQ-DNXSAixC.js → diagram-2AECGRRQ-B6lcra9M.js} +1 -1
  240. package/web-shell/assets/{diagram-5GNKFQAL-BCbGUPEA.js → diagram-5GNKFQAL-bAIzq3PT.js} +1 -1
  241. package/web-shell/assets/{diagram-KO2AKTUF-1eujKSDC.js → diagram-KO2AKTUF-G9MAZDNW.js} +1 -1
  242. package/web-shell/assets/{diagram-LMA3HP47-DUMKXgql.js → diagram-LMA3HP47-DVLF1uWZ.js} +1 -1
  243. package/web-shell/assets/{diagram-OG6HWLK6-BFktU3_u.js → diagram-OG6HWLK6-Cf7y20Tc.js} +1 -1
  244. package/web-shell/assets/{erDiagram-TEJ5UH35-BvJC7DLk.js → erDiagram-TEJ5UH35-C7ETZB3o.js} +1 -1
  245. package/web-shell/assets/{flowDiagram-I6XJVG4X-Cgu3PlOt.js → flowDiagram-I6XJVG4X-Cl2xgL6J.js} +1 -1
  246. package/web-shell/assets/{ganttDiagram-6RSMTGT7-DLNXN5Xh.js → ganttDiagram-6RSMTGT7-BgjbMs3q.js} +1 -1
  247. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-BQFRDv6R.js → gitGraphDiagram-PVQCEYII-JVX34Omm.js} +1 -1
  248. package/web-shell/assets/index-48bIcdqF.js +1197 -0
  249. package/web-shell/assets/{index-CdC3pjP3.js → index-BG7Zc4f_.js} +1 -1
  250. package/web-shell/assets/index-BI-JAO07.css +5 -0
  251. package/web-shell/assets/{infoDiagram-5YYISTIA-DT2mOSvp.js → infoDiagram-5YYISTIA-3NYyMeZU.js} +1 -1
  252. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-9fy_K4bd.js → ishikawaDiagram-YF4QCWOH-C03VCu-U.js} +1 -1
  253. package/web-shell/assets/{journeyDiagram-JHISSGLW-CoGSEuhE.js → journeyDiagram-JHISSGLW-C9PuBRZW.js} +1 -1
  254. package/web-shell/assets/{kanban-definition-UN3LZRKU-BP9hHYIj.js → kanban-definition-UN3LZRKU-C3LvioWR.js} +1 -1
  255. package/web-shell/assets/{linear-uIroDsmp.js → linear-Du6Yw8N_.js} +1 -1
  256. package/web-shell/assets/{mermaid.core-BUwoStsA.js → mermaid.core-BXY5D2-X.js} +5 -5
  257. package/web-shell/assets/{mindmap-definition-RKZ34NQL-DZB-FWim.js → mindmap-definition-RKZ34NQL-2UrHLaDp.js} +1 -1
  258. package/web-shell/assets/{pieDiagram-4H26LBE5-YPptloKl.js → pieDiagram-4H26LBE5-dC03ml45.js} +1 -1
  259. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-dgk3DSzm.js → quadrantDiagram-W4KKPZXB-CD6jARrp.js} +1 -1
  260. package/web-shell/assets/{requirementDiagram-4Y6WPE33-BH2En2i9.js → requirementDiagram-4Y6WPE33-BrK8aXfv.js} +1 -1
  261. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-BB98feeI.js → sankeyDiagram-5OEKKPKP-B5Vitki_.js} +1 -1
  262. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-CunAIGh8.js → sequenceDiagram-3UESZ5HK-CBy2t6Bo.js} +1 -1
  263. package/web-shell/assets/{stateDiagram-AJRCARHV-DTJs_-I2.js → stateDiagram-AJRCARHV-Enrka6T2.js} +1 -1
  264. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DUtYfXpW.js +1 -0
  265. package/web-shell/assets/{timeline-definition-PNZ67QCA-Cd4AN7O0.js → timeline-definition-PNZ67QCA-CwFq78ss.js} +1 -1
  266. package/web-shell/assets/{vennDiagram-CIIHVFJN-xIG-rUU9.js → vennDiagram-CIIHVFJN-BkOidM0g.js} +1 -1
  267. package/web-shell/assets/{wardley-L42UT6IY-D1UyjIcG.js → wardley-L42UT6IY-D_j13hQW.js} +1 -1
  268. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-BVM0Mb99.js → wardleyDiagram-YWT4CUSO-7EveB1w6.js} +1 -1
  269. package/web-shell/assets/{xychartDiagram-2RQKCTM6-BX31JDSz.js → xychartDiagram-2RQKCTM6-DRkBhMXr.js} +1 -1
  270. package/web-shell/index.html +2 -2
  271. package/chunks/chunk-EDFD7VOX.js +0 -368
  272. package/chunks/chunk-GFYFLDEG.js +0 -709
  273. package/chunks/chunk-LUJQUNKY.js +0 -3288
  274. package/chunks/nonInteractiveCli-YURFHZV5.js +0 -129
  275. package/web-shell/assets/channel-Bi5TehaT.js +0 -1
  276. package/web-shell/assets/classDiagram-4FO5ZUOK-BKhhRdd1.js +0 -1
  277. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BKhhRdd1.js +0 -1
  278. package/web-shell/assets/index-C_ouplMQ.js +0 -1187
  279. package/web-shell/assets/index-XGDFJE-X.css +0 -5
  280. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DrfFMYta.js +0 -1
@@ -0,0 +1,1187 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ BACKSLASH_ENTER_DETECTION_WINDOW_MS,
5
+ CHAR_CODE_ESC,
6
+ KITTY_CTRL_C,
7
+ KITTY_KEYCODE_BACKSPACE,
8
+ KITTY_KEYCODE_ENTER,
9
+ KITTY_KEYCODE_NUMPAD_ENTER,
10
+ KITTY_KEYCODE_TAB,
11
+ KITTY_MODIFIER_BASE,
12
+ KITTY_MODIFIER_EVENT_TYPES_OFFSET,
13
+ MAX_KITTY_SEQUENCE_LENGTH,
14
+ MODIFIER_ALT_BIT,
15
+ MODIFIER_CTRL_BIT,
16
+ MODIFIER_SHIFT_BIT,
17
+ clipboardHasImage
18
+ } from "./chunk-QKYTTBYW.js";
19
+ import {
20
+ noteInteraction
21
+ } from "./chunk-KW7NOTN6.js";
22
+ import {
23
+ require_jsx_runtime
24
+ } from "./chunk-SV5PQVQE.js";
25
+ import {
26
+ use_stdin_default,
27
+ use_stdout_default
28
+ } from "./chunk-NEEB7UEN.js";
29
+ import {
30
+ require_react
31
+ } from "./chunk-5QWWOFGG.js";
32
+ import {
33
+ KittySequenceOverflowEvent,
34
+ logKittySequenceOverflow
35
+ } from "./chunk-P64HXIC5.js";
36
+ import {
37
+ createDebugLogger
38
+ } from "./chunk-C27BYUX6.js";
39
+ import {
40
+ init_esbuild_shims
41
+ } from "./chunk-5O2XNYP6.js";
42
+ import {
43
+ __name,
44
+ __toESM
45
+ } from "./chunk-J2S4EL5Y.js";
46
+
47
+ // packages/cli/src/ui/hooks/useKeypress.ts
48
+ init_esbuild_shims();
49
+ var import_react3 = __toESM(require_react(), 1);
50
+
51
+ // packages/cli/src/ui/contexts/KeypressContext.tsx
52
+ init_esbuild_shims();
53
+ var import_react2 = __toESM(require_react(), 1);
54
+ import readline from "node:readline";
55
+ import { PassThrough } from "node:stream";
56
+
57
+ // packages/cli/src/ui/utils/mouse.ts
58
+ init_esbuild_shims();
59
+ var ESC = "\x1B";
60
+ var SGR_EVENT_PREFIX = `${ESC}[<`;
61
+ var X11_EVENT_PREFIX = `${ESC}[M`;
62
+ var MAX_SGR_MOUSE_SEQUENCE_LENGTH = 50;
63
+ var SGR_MOUSE_REGEX = /^\x1b\[<(\d+);(\d+);(\d+)([mM])/;
64
+ function getEventName(buttonCode, isRelease) {
65
+ const isMove = (buttonCode & 32) !== 0;
66
+ if (buttonCode === 66) return "scroll-left";
67
+ if (buttonCode === 67) return "scroll-right";
68
+ if ((buttonCode & 64) === 64) {
69
+ return (buttonCode & 1) === 0 ? "scroll-up" : "scroll-down";
70
+ }
71
+ if (isMove) return "move";
72
+ const button = buttonCode & 3;
73
+ const type = isRelease ? "release" : "press";
74
+ switch (button) {
75
+ case 0:
76
+ return `left-${type}`;
77
+ case 1:
78
+ return `middle-${type}`;
79
+ case 2:
80
+ return `right-${type}`;
81
+ default:
82
+ return null;
83
+ }
84
+ }
85
+ __name(getEventName, "getEventName");
86
+ function buttonFromCode(code) {
87
+ switch (code & 3) {
88
+ case 0:
89
+ return "left";
90
+ case 1:
91
+ return "middle";
92
+ case 2:
93
+ return "right";
94
+ default:
95
+ return "none";
96
+ }
97
+ }
98
+ __name(buttonFromCode, "buttonFromCode");
99
+ function parseSGRMouseEvent(buffer) {
100
+ const match = buffer.match(SGR_MOUSE_REGEX);
101
+ if (!match) return null;
102
+ const buttonCode = parseInt(match[1], 10);
103
+ const col = parseInt(match[2], 10);
104
+ const row = parseInt(match[3], 10);
105
+ const isRelease = match[4] === "m";
106
+ const name = getEventName(buttonCode, isRelease);
107
+ if (!name) return null;
108
+ return {
109
+ event: {
110
+ name,
111
+ col,
112
+ row,
113
+ shift: (buttonCode & 4) !== 0,
114
+ meta: (buttonCode & 8) !== 0,
115
+ ctrl: (buttonCode & 16) !== 0,
116
+ button: buttonFromCode(buttonCode)
117
+ },
118
+ length: match[0].length
119
+ };
120
+ }
121
+ __name(parseSGRMouseEvent, "parseSGRMouseEvent");
122
+ var ENABLE_SGR_MOUSE = {
123
+ button: "\x1B[?1002h\x1B[?1006h",
124
+ any: "\x1B[?1003h\x1B[?1006h"
125
+ };
126
+ var DISABLE_SGR_MOUSE = {
127
+ button: "\x1B[?1006l\x1B[?1002l",
128
+ any: "\x1B[?1006l\x1B[?1003l"
129
+ };
130
+ function enableMouseEvents(stdout, tracking = "button") {
131
+ stdout.write(ENABLE_SGR_MOUSE[tracking]);
132
+ }
133
+ __name(enableMouseEvents, "enableMouseEvents");
134
+ function disableMouseEvents(stdout, tracking = "button") {
135
+ stdout.write(DISABLE_SGR_MOUSE[tracking]);
136
+ }
137
+ __name(disableMouseEvents, "disableMouseEvents");
138
+
139
+ // packages/cli/src/ui/hooks/useFocus.ts
140
+ init_esbuild_shims();
141
+ var import_react = __toESM(require_react(), 1);
142
+ var ENABLE_FOCUS_REPORTING = "\x1B[?1004h";
143
+ var DISABLE_FOCUS_REPORTING = "\x1B[?1004l";
144
+ var FOCUS_IN = "\x1B[I";
145
+ var FOCUS_OUT = "\x1B[O";
146
+ var useFocus = /* @__PURE__ */ __name(() => {
147
+ const { stdin } = use_stdin_default();
148
+ const { stdout } = use_stdout_default();
149
+ const [isFocused, setIsFocused] = (0, import_react.useState)(true);
150
+ (0, import_react.useEffect)(() => {
151
+ const handleData = /* @__PURE__ */ __name((data) => {
152
+ const sequence = data.toString();
153
+ const lastFocusIn = sequence.lastIndexOf(FOCUS_IN);
154
+ const lastFocusOut = sequence.lastIndexOf(FOCUS_OUT);
155
+ if (lastFocusIn > lastFocusOut) {
156
+ setIsFocused(true);
157
+ } else if (lastFocusOut > lastFocusIn) {
158
+ setIsFocused(false);
159
+ }
160
+ }, "handleData");
161
+ stdout?.write(ENABLE_FOCUS_REPORTING);
162
+ stdin?.on("data", handleData);
163
+ return () => {
164
+ stdout?.write(DISABLE_FOCUS_REPORTING);
165
+ stdin?.removeListener("data", handleData);
166
+ };
167
+ }, [stdin, stdout]);
168
+ useKeypress(
169
+ (_) => {
170
+ if (!isFocused) {
171
+ setIsFocused(true);
172
+ }
173
+ },
174
+ { isActive: true }
175
+ );
176
+ return isFocused;
177
+ }, "useFocus");
178
+
179
+ // packages/cli/src/ui/contexts/KeypressContext.tsx
180
+ var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
181
+ var ESC2 = "\x1B";
182
+ var OPTION_T_COMPOSED_GLYPH = "\u2020";
183
+ var PASTE_MODE_PREFIX = `${ESC2}[200~`;
184
+ var PASTE_MODE_SUFFIX = `${ESC2}[201~`;
185
+ var KITTY_SEQUENCE_TIMEOUT_MS = 200;
186
+ var PASTE_IDLE_TIMEOUT_MS = 1e3;
187
+ var KITTY_KEYPAD_PRINTABLE_KEYCODE_TO_CHAR = {
188
+ 57399: "0",
189
+ 57400: "1",
190
+ 57401: "2",
191
+ 57402: "3",
192
+ 57403: "4",
193
+ 57404: "5",
194
+ 57405: "6",
195
+ 57406: "7",
196
+ 57407: "8",
197
+ 57408: "9",
198
+ 57409: ".",
199
+ 57410: "/",
200
+ 57411: "*",
201
+ 57412: "-",
202
+ 57413: "+",
203
+ // 57414 is keypad Enter - handled separately via CSI~ sequence
204
+ 57415: "=",
205
+ 57416: ","
206
+ };
207
+ var KITTY_KEYPAD_FUNCTIONAL_KEYCODE_TO_NAME = {
208
+ 57417: "left",
209
+ 57418: "right",
210
+ 57419: "up",
211
+ 57420: "down",
212
+ 57421: "pageup",
213
+ 57422: "pagedown",
214
+ 57423: "home",
215
+ 57424: "end",
216
+ 57425: "insert",
217
+ 57426: "delete"
218
+ };
219
+ var KeypressContext = (0, import_react2.createContext)(
220
+ void 0
221
+ );
222
+ var debugLogger = createDebugLogger("KEYPRESS");
223
+ function useKeypressContext() {
224
+ const context = (0, import_react2.useContext)(KeypressContext);
225
+ if (!context) {
226
+ throw new Error(
227
+ "useKeypressContext must be used within a KeypressProvider"
228
+ );
229
+ }
230
+ return context;
231
+ }
232
+ __name(useKeypressContext, "useKeypressContext");
233
+ function KeypressProvider({
234
+ children,
235
+ kittyProtocolEnabled,
236
+ pasteWorkaround = false,
237
+ config,
238
+ debugKeystrokeLogging,
239
+ initialCapturedInput
240
+ }) {
241
+ const { stdin, setRawMode } = use_stdin_default();
242
+ const subscribers = (0, import_react2.useRef)(/* @__PURE__ */ new Set()).current;
243
+ const mouseSubscribers = (0, import_react2.useRef)(/* @__PURE__ */ new Set()).current;
244
+ const subscribe = (0, import_react2.useCallback)(
245
+ (handler) => {
246
+ subscribers.add(handler);
247
+ },
248
+ [subscribers]
249
+ );
250
+ const unsubscribe = (0, import_react2.useCallback)(
251
+ (handler) => {
252
+ subscribers.delete(handler);
253
+ },
254
+ [subscribers]
255
+ );
256
+ const subscribeMouse = (0, import_react2.useCallback)(
257
+ (handler) => {
258
+ mouseSubscribers.add(handler);
259
+ },
260
+ [mouseSubscribers]
261
+ );
262
+ const unsubscribeMouse = (0, import_react2.useCallback)(
263
+ (handler) => {
264
+ mouseSubscribers.delete(handler);
265
+ },
266
+ [mouseSubscribers]
267
+ );
268
+ (0, import_react2.useEffect)(() => {
269
+ setRawMode(true);
270
+ const capturedInput = initialCapturedInput ?? Buffer.alloc(0);
271
+ const keypressStream = new PassThrough();
272
+ let usePassthrough = false;
273
+ if (pasteWorkaround) {
274
+ usePassthrough = true;
275
+ }
276
+ let isPaste = false;
277
+ let pasteBuffer = Buffer.alloc(0);
278
+ let pasteAlreadyFlushed = false;
279
+ let pasteIdleTimeout = null;
280
+ const kittySequenceBufferRef = { current: "" };
281
+ let kittySequenceTimeout = null;
282
+ let backslashTimeout = null;
283
+ let waitingForEnterAfterBackslash = false;
284
+ let rawDataBuffer = Buffer.alloc(0);
285
+ let rawFlushTimeout = null;
286
+ let swallowingSgrMouse = false;
287
+ let sgrMouseBuffer = "";
288
+ let sgrMouseTimeout = null;
289
+ const resetSgrMouse = /* @__PURE__ */ __name(() => {
290
+ swallowingSgrMouse = false;
291
+ sgrMouseBuffer = "";
292
+ if (sgrMouseTimeout) {
293
+ clearTimeout(sgrMouseTimeout);
294
+ sgrMouseTimeout = null;
295
+ }
296
+ }, "resetSgrMouse");
297
+ const updateKittyBuffer = /* @__PURE__ */ __name((value) => {
298
+ kittySequenceBufferRef.current = value;
299
+ }, "updateKittyBuffer");
300
+ const clearKittyTimeout = /* @__PURE__ */ __name(() => {
301
+ if (kittySequenceTimeout) {
302
+ clearTimeout(kittySequenceTimeout);
303
+ kittySequenceTimeout = null;
304
+ }
305
+ }, "clearKittyTimeout");
306
+ const startKittyTimeout = /* @__PURE__ */ __name(() => {
307
+ clearKittyTimeout();
308
+ kittySequenceTimeout = setTimeout(() => {
309
+ if (kittySequenceBufferRef.current) {
310
+ while (kittySequenceBufferRef.current) {
311
+ const parsed = parseKittyPrefix(kittySequenceBufferRef.current);
312
+ if (parsed) {
313
+ kittySequenceBufferRef.current = kittySequenceBufferRef.current.slice(parsed.length);
314
+ broadcast(parsed.key);
315
+ continue;
316
+ }
317
+ const plain = parsePlainTextPrefix(kittySequenceBufferRef.current);
318
+ if (plain) {
319
+ kittySequenceBufferRef.current = kittySequenceBufferRef.current.slice(plain.length);
320
+ broadcast(plain.key);
321
+ continue;
322
+ }
323
+ break;
324
+ }
325
+ if (kittySequenceBufferRef.current) {
326
+ if (debugKeystrokeLogging) {
327
+ debugLogger.debug(
328
+ "[DEBUG] Kitty buffer timeout, clearing:",
329
+ kittySequenceBufferRef.current
330
+ );
331
+ }
332
+ kittySequenceBufferRef.current = "";
333
+ }
334
+ }
335
+ }, KITTY_SEQUENCE_TIMEOUT_MS);
336
+ }, "startKittyTimeout");
337
+ const clearKittyBufferAndTimeout = /* @__PURE__ */ __name(() => {
338
+ clearKittyTimeout();
339
+ kittySequenceBufferRef.current = "";
340
+ }, "clearKittyBufferAndTimeout");
341
+ const clearPasteIdleTimeout = /* @__PURE__ */ __name(() => {
342
+ if (pasteIdleTimeout) {
343
+ clearTimeout(pasteIdleTimeout);
344
+ pasteIdleTimeout = null;
345
+ }
346
+ }, "clearPasteIdleTimeout");
347
+ const forceFlushStuckPaste = /* @__PURE__ */ __name(() => {
348
+ clearPasteIdleTimeout();
349
+ if (!isPaste && pasteBuffer.length === 0) return;
350
+ const buffered = pasteBuffer.toString();
351
+ isPaste = false;
352
+ pasteBuffer = Buffer.alloc(0);
353
+ pasteAlreadyFlushed = true;
354
+ if (buffered.length > 0) {
355
+ broadcast({
356
+ name: "",
357
+ ctrl: false,
358
+ meta: false,
359
+ shift: false,
360
+ paste: true,
361
+ sequence: buffered
362
+ });
363
+ }
364
+ }, "forceFlushStuckPaste");
365
+ const startPasteIdleTimeout = /* @__PURE__ */ __name(() => {
366
+ clearPasteIdleTimeout();
367
+ pasteIdleTimeout = setTimeout(
368
+ forceFlushStuckPaste,
369
+ PASTE_IDLE_TIMEOUT_MS
370
+ );
371
+ }, "startPasteIdleTimeout");
372
+ const createPrintableKey = /* @__PURE__ */ __name((char) => {
373
+ const printableName = char === " " ? "space" : /^[A-Za-z]$/.test(char) ? char.toLowerCase() : char;
374
+ return {
375
+ name: printableName,
376
+ ctrl: false,
377
+ meta: false,
378
+ shift: false,
379
+ paste: false,
380
+ sequence: char,
381
+ kittyProtocol: true
382
+ };
383
+ }, "createPrintableKey");
384
+ const parseKittyPrefix = /* @__PURE__ */ __name((buffer) => {
385
+ const revTabLegacy = new RegExp(`^${ESC2}\\[Z`);
386
+ let m = buffer.match(revTabLegacy);
387
+ if (m) {
388
+ return {
389
+ key: {
390
+ name: "tab",
391
+ ctrl: false,
392
+ meta: false,
393
+ shift: true,
394
+ paste: false,
395
+ sequence: buffer.slice(0, m[0].length),
396
+ kittyProtocol: true
397
+ },
398
+ length: m[0].length
399
+ };
400
+ }
401
+ const revTabParam = new RegExp(`^${ESC2}\\[1;(\\d+)Z`);
402
+ m = buffer.match(revTabParam);
403
+ if (m) {
404
+ let mods = parseInt(m[1], 10);
405
+ if (mods >= KITTY_MODIFIER_EVENT_TYPES_OFFSET) {
406
+ mods -= KITTY_MODIFIER_EVENT_TYPES_OFFSET;
407
+ }
408
+ const bits = mods - KITTY_MODIFIER_BASE;
409
+ const alt = (bits & MODIFIER_ALT_BIT) === MODIFIER_ALT_BIT;
410
+ const ctrl = (bits & MODIFIER_CTRL_BIT) === MODIFIER_CTRL_BIT;
411
+ return {
412
+ key: {
413
+ name: "tab",
414
+ ctrl,
415
+ meta: alt,
416
+ // Reverse tab implies Shift behavior; force shift regardless of mods
417
+ shift: true,
418
+ paste: false,
419
+ sequence: buffer.slice(0, m[0].length),
420
+ kittyProtocol: true
421
+ },
422
+ length: m[0].length
423
+ };
424
+ }
425
+ const arrowPrefix = new RegExp(`^${ESC2}\\[1;(\\d+)([ABCDHFPQSR])`);
426
+ m = buffer.match(arrowPrefix);
427
+ if (m) {
428
+ let mods = parseInt(m[1], 10);
429
+ if (mods >= KITTY_MODIFIER_EVENT_TYPES_OFFSET) {
430
+ mods -= KITTY_MODIFIER_EVENT_TYPES_OFFSET;
431
+ }
432
+ const bits = mods - KITTY_MODIFIER_BASE;
433
+ const shift = (bits & MODIFIER_SHIFT_BIT) === MODIFIER_SHIFT_BIT;
434
+ const alt = (bits & MODIFIER_ALT_BIT) === MODIFIER_ALT_BIT;
435
+ const ctrl = (bits & MODIFIER_CTRL_BIT) === MODIFIER_CTRL_BIT;
436
+ const sym = m[2];
437
+ const symbolToName = {
438
+ A: "up",
439
+ B: "down",
440
+ C: "right",
441
+ D: "left",
442
+ H: "home",
443
+ F: "end",
444
+ P: "f1",
445
+ Q: "f2",
446
+ R: "f3",
447
+ S: "f4"
448
+ };
449
+ const name = symbolToName[sym] || "";
450
+ if (!name) return null;
451
+ return {
452
+ key: {
453
+ name,
454
+ ctrl,
455
+ meta: alt,
456
+ shift,
457
+ paste: false,
458
+ sequence: buffer.slice(0, m[0].length),
459
+ kittyProtocol: true
460
+ },
461
+ length: m[0].length
462
+ };
463
+ }
464
+ const csiUPrefix = new RegExp(
465
+ `^${ESC2}\\[(\\d+)(?::\\d+)*(?:;(\\d+)(?::\\d+)*)?(?:;\\d+)?([u~])`
466
+ );
467
+ m = buffer.match(csiUPrefix);
468
+ if (m) {
469
+ const keyCode = parseInt(m[1], 10);
470
+ let modifiers = m[2] ? parseInt(m[2], 10) : KITTY_MODIFIER_BASE;
471
+ if (modifiers >= KITTY_MODIFIER_EVENT_TYPES_OFFSET) {
472
+ modifiers -= KITTY_MODIFIER_EVENT_TYPES_OFFSET;
473
+ }
474
+ const modifierBits = modifiers - KITTY_MODIFIER_BASE;
475
+ const shift = (modifierBits & MODIFIER_SHIFT_BIT) === MODIFIER_SHIFT_BIT;
476
+ const alt = (modifierBits & MODIFIER_ALT_BIT) === MODIFIER_ALT_BIT;
477
+ const ctrl = (modifierBits & MODIFIER_CTRL_BIT) === MODIFIER_CTRL_BIT;
478
+ const terminator = m[3];
479
+ if (terminator === "~") {
480
+ let name2 = null;
481
+ switch (keyCode) {
482
+ case 1:
483
+ name2 = "home";
484
+ break;
485
+ case 2:
486
+ name2 = "insert";
487
+ break;
488
+ case 3:
489
+ name2 = "delete";
490
+ break;
491
+ case 4:
492
+ name2 = "end";
493
+ break;
494
+ case 5:
495
+ name2 = "pageup";
496
+ break;
497
+ case 6:
498
+ name2 = "pagedown";
499
+ break;
500
+ default:
501
+ break;
502
+ }
503
+ if (name2) {
504
+ return {
505
+ key: {
506
+ name: name2,
507
+ ctrl,
508
+ meta: alt,
509
+ shift,
510
+ paste: false,
511
+ sequence: buffer.slice(0, m[0].length),
512
+ kittyProtocol: true
513
+ },
514
+ length: m[0].length
515
+ };
516
+ }
517
+ }
518
+ const kittyKeyCodeToName = {
519
+ [CHAR_CODE_ESC]: "escape",
520
+ [KITTY_KEYCODE_TAB]: "tab",
521
+ [KITTY_KEYCODE_BACKSPACE]: "backspace",
522
+ [KITTY_KEYCODE_ENTER]: "return",
523
+ [KITTY_KEYCODE_NUMPAD_ENTER]: "return"
524
+ };
525
+ const name = kittyKeyCodeToName[keyCode];
526
+ if (name) {
527
+ return {
528
+ key: {
529
+ name,
530
+ ctrl,
531
+ meta: alt,
532
+ shift,
533
+ paste: false,
534
+ sequence: buffer.slice(0, m[0].length),
535
+ kittyProtocol: true
536
+ },
537
+ length: m[0].length
538
+ };
539
+ }
540
+ if (!ctrl) {
541
+ const keypadChar = KITTY_KEYPAD_PRINTABLE_KEYCODE_TO_CHAR[keyCode];
542
+ if (keypadChar) {
543
+ return {
544
+ key: {
545
+ name: keypadChar,
546
+ ctrl: false,
547
+ meta: alt,
548
+ shift,
549
+ paste: false,
550
+ sequence: keypadChar,
551
+ kittyProtocol: true
552
+ },
553
+ length: m[0].length
554
+ };
555
+ }
556
+ }
557
+ const keypadName = KITTY_KEYPAD_FUNCTIONAL_KEYCODE_TO_NAME[keyCode];
558
+ if (keypadName) {
559
+ return {
560
+ key: {
561
+ name: keypadName,
562
+ ctrl,
563
+ meta: alt,
564
+ shift,
565
+ paste: false,
566
+ sequence: buffer.slice(0, m[0].length),
567
+ kittyProtocol: true
568
+ },
569
+ length: m[0].length
570
+ };
571
+ }
572
+ if (terminator === "u" && !ctrl && keyCode >= 32 && keyCode !== 127 && keyCode <= 1114111 && !(keyCode >= 57344 && keyCode <= 63743)) {
573
+ return {
574
+ key: {
575
+ ...createPrintableKey(String.fromCodePoint(keyCode)),
576
+ meta: alt,
577
+ shift
578
+ },
579
+ length: m[0].length
580
+ };
581
+ }
582
+ if (ctrl && keyCode >= "a".charCodeAt(0) && keyCode <= "z".charCodeAt(0)) {
583
+ const letter = String.fromCharCode(keyCode);
584
+ return {
585
+ key: {
586
+ name: letter,
587
+ ctrl: true,
588
+ meta: alt,
589
+ shift,
590
+ paste: false,
591
+ sequence: buffer.slice(0, m[0].length),
592
+ kittyProtocol: true
593
+ },
594
+ length: m[0].length
595
+ };
596
+ }
597
+ }
598
+ const legacyFuncKey = new RegExp(`^${ESC2}\\[([ABCDHF])`);
599
+ m = buffer.match(legacyFuncKey);
600
+ if (m) {
601
+ const sym = m[1];
602
+ const nameMap = {
603
+ A: "up",
604
+ B: "down",
605
+ C: "right",
606
+ D: "left",
607
+ H: "home",
608
+ F: "end"
609
+ };
610
+ const name = nameMap[sym];
611
+ return {
612
+ key: {
613
+ name,
614
+ ctrl: false,
615
+ meta: false,
616
+ shift: false,
617
+ paste: false,
618
+ sequence: buffer.slice(0, m[0].length),
619
+ kittyProtocol: true
620
+ },
621
+ length: m[0].length
622
+ };
623
+ }
624
+ return null;
625
+ }, "parseKittyPrefix");
626
+ const getCompleteCsiSequenceLength = /* @__PURE__ */ __name((buffer) => {
627
+ if (!buffer.startsWith(`${ESC2}[`)) {
628
+ return null;
629
+ }
630
+ for (let i = 2; i < buffer.length; i++) {
631
+ const code = buffer.charCodeAt(i);
632
+ if (code >= 64 && code <= 126) {
633
+ return i + 1;
634
+ }
635
+ if (code < 32 || code > 63) {
636
+ return 0;
637
+ }
638
+ }
639
+ return null;
640
+ }, "getCompleteCsiSequenceLength");
641
+ const parsePlainTextPrefix = /* @__PURE__ */ __name((buffer) => {
642
+ if (!buffer || buffer.startsWith(ESC2)) {
643
+ return null;
644
+ }
645
+ const [char] = Array.from(buffer);
646
+ if (!char) {
647
+ return null;
648
+ }
649
+ return {
650
+ key: createPrintableKey(char),
651
+ length: char.length
652
+ };
653
+ }, "parsePlainTextPrefix");
654
+ const broadcast = /* @__PURE__ */ __name((key) => {
655
+ noteInteraction();
656
+ for (const handler of subscribers) {
657
+ handler(key);
658
+ }
659
+ }, "broadcast");
660
+ const TERMINAL_RESPONSE_RE = /^\x1b\[[?>][\d;]*[uc]$/;
661
+ const handleKeypress = /* @__PURE__ */ __name(async (_, key) => {
662
+ if (TERMINAL_RESPONSE_RE.test(key.sequence)) {
663
+ return;
664
+ }
665
+ if (key.sequence === FOCUS_IN || key.sequence === FOCUS_OUT) {
666
+ return;
667
+ }
668
+ if (isPaste) {
669
+ resetSgrMouse();
670
+ } else if (swallowingSgrMouse) {
671
+ if (key.ctrl && key.name === "c") {
672
+ resetSgrMouse();
673
+ } else if (key.name === "paste-start") {
674
+ resetSgrMouse();
675
+ } else {
676
+ sgrMouseBuffer += key.sequence;
677
+ if (key.name === "m" || key.sequence === "M") {
678
+ swallowingSgrMouse = false;
679
+ if (sgrMouseTimeout) {
680
+ clearTimeout(sgrMouseTimeout);
681
+ sgrMouseTimeout = null;
682
+ }
683
+ const parsed = parseSGRMouseEvent(sgrMouseBuffer);
684
+ if (parsed) {
685
+ for (const handler of mouseSubscribers) {
686
+ handler(parsed.event);
687
+ }
688
+ }
689
+ sgrMouseBuffer = "";
690
+ } else if (sgrMouseBuffer.length >= MAX_SGR_MOUSE_SEQUENCE_LENGTH) {
691
+ resetSgrMouse();
692
+ }
693
+ return;
694
+ }
695
+ }
696
+ if (!isPaste && key.sequence === `${ESC2}[<`) {
697
+ swallowingSgrMouse = true;
698
+ sgrMouseBuffer = `${ESC2}[<`;
699
+ if (sgrMouseTimeout) {
700
+ clearTimeout(sgrMouseTimeout);
701
+ }
702
+ sgrMouseTimeout = setTimeout(() => {
703
+ swallowingSgrMouse = false;
704
+ sgrMouseBuffer = "";
705
+ sgrMouseTimeout = null;
706
+ }, KITTY_SEQUENCE_TIMEOUT_MS);
707
+ return;
708
+ }
709
+ const isCtrlCKey = key.ctrl && key.name === "c" || key.sequence === `${ESC2}${KITTY_CTRL_C}`;
710
+ if (isCtrlCKey) {
711
+ if (isPaste || pasteBuffer.length > 0) {
712
+ isPaste = false;
713
+ pasteBuffer = Buffer.alloc(0);
714
+ pasteAlreadyFlushed = true;
715
+ clearPasteIdleTimeout();
716
+ }
717
+ if (kittySequenceBufferRef.current && debugKeystrokeLogging) {
718
+ debugLogger.debug(
719
+ "[DEBUG] Kitty buffer cleared on Ctrl+C:",
720
+ kittySequenceBufferRef.current
721
+ );
722
+ }
723
+ clearKittyBufferAndTimeout();
724
+ if (key.sequence === `${ESC2}${KITTY_CTRL_C}`) {
725
+ broadcast({
726
+ name: "c",
727
+ ctrl: true,
728
+ meta: false,
729
+ shift: false,
730
+ paste: false,
731
+ sequence: key.sequence,
732
+ kittyProtocol: true
733
+ });
734
+ } else {
735
+ broadcast(key);
736
+ }
737
+ return;
738
+ }
739
+ if (key.name === "paste-start") {
740
+ isPaste = true;
741
+ pasteAlreadyFlushed = false;
742
+ startPasteIdleTimeout();
743
+ return;
744
+ }
745
+ if (key.name === "paste-end") {
746
+ clearPasteIdleTimeout();
747
+ if (pasteAlreadyFlushed) {
748
+ pasteAlreadyFlushed = false;
749
+ isPaste = false;
750
+ pasteBuffer = Buffer.alloc(0);
751
+ return;
752
+ }
753
+ isPaste = false;
754
+ if (pasteBuffer.toString().length > 0) {
755
+ broadcast({
756
+ name: "",
757
+ ctrl: false,
758
+ meta: false,
759
+ shift: false,
760
+ paste: true,
761
+ sequence: pasteBuffer.toString()
762
+ });
763
+ } else {
764
+ let clipboardImageUnavailable = false;
765
+ const hasImage = await clipboardHasImage(() => {
766
+ clipboardImageUnavailable = true;
767
+ });
768
+ broadcast({
769
+ name: "",
770
+ ctrl: false,
771
+ meta: false,
772
+ shift: false,
773
+ paste: true,
774
+ pasteImage: hasImage,
775
+ clipboardImageUnavailable,
776
+ sequence: pasteBuffer.toString()
777
+ });
778
+ }
779
+ pasteBuffer = Buffer.alloc(0);
780
+ return;
781
+ }
782
+ if (isPaste) {
783
+ pasteBuffer = Buffer.concat([pasteBuffer, Buffer.from(key.sequence)]);
784
+ startPasteIdleTimeout();
785
+ return;
786
+ }
787
+ if (key.name === "return" && waitingForEnterAfterBackslash) {
788
+ if (backslashTimeout) {
789
+ clearTimeout(backslashTimeout);
790
+ backslashTimeout = null;
791
+ }
792
+ waitingForEnterAfterBackslash = false;
793
+ broadcast({
794
+ ...key,
795
+ shift: true,
796
+ sequence: "\r"
797
+ // Corrected escaping for newline
798
+ });
799
+ return;
800
+ }
801
+ if (key.sequence === "\\" && !key.name) {
802
+ waitingForEnterAfterBackslash = true;
803
+ backslashTimeout = setTimeout(() => {
804
+ waitingForEnterAfterBackslash = false;
805
+ backslashTimeout = null;
806
+ broadcast(key);
807
+ }, BACKSLASH_ENTER_DETECTION_WINDOW_MS);
808
+ return;
809
+ }
810
+ if (waitingForEnterAfterBackslash && key.name !== "return") {
811
+ if (backslashTimeout) {
812
+ clearTimeout(backslashTimeout);
813
+ backslashTimeout = null;
814
+ }
815
+ waitingForEnterAfterBackslash = false;
816
+ broadcast({
817
+ name: "",
818
+ sequence: "\\",
819
+ ctrl: false,
820
+ meta: false,
821
+ shift: false,
822
+ paste: false
823
+ });
824
+ }
825
+ if (["up", "down", "left", "right"].includes(key.name)) {
826
+ broadcast(key);
827
+ return;
828
+ }
829
+ if (kittyProtocolEnabled) {
830
+ if (kittySequenceBufferRef.current || key.sequence.startsWith(`${ESC2}[`) && !key.sequence.startsWith(PASTE_MODE_PREFIX) && !key.sequence.startsWith(PASTE_MODE_SUFFIX) && !key.sequence.startsWith(FOCUS_IN) && !key.sequence.startsWith(FOCUS_OUT)) {
831
+ updateKittyBuffer(kittySequenceBufferRef.current + key.sequence);
832
+ startKittyTimeout();
833
+ if (debugKeystrokeLogging) {
834
+ debugLogger.debug(
835
+ "[DEBUG] Kitty buffer accumulating:",
836
+ kittySequenceBufferRef.current
837
+ );
838
+ }
839
+ let bufferedInputHandled = false;
840
+ while (kittySequenceBufferRef.current) {
841
+ const parsed = parseKittyPrefix(kittySequenceBufferRef.current);
842
+ if (parsed) {
843
+ if (debugKeystrokeLogging) {
844
+ const parsedSequence = kittySequenceBufferRef.current.slice(
845
+ 0,
846
+ parsed.length
847
+ );
848
+ if (kittySequenceBufferRef.current.length > parsed.length) {
849
+ debugLogger.debug(
850
+ "[DEBUG] Kitty sequence parsed successfully (prefix):",
851
+ parsedSequence
852
+ );
853
+ } else {
854
+ debugLogger.debug(
855
+ "[DEBUG] Kitty sequence parsed successfully:",
856
+ parsedSequence
857
+ );
858
+ }
859
+ }
860
+ updateKittyBuffer(
861
+ kittySequenceBufferRef.current.slice(parsed.length)
862
+ );
863
+ if (!kittySequenceBufferRef.current) {
864
+ clearKittyTimeout();
865
+ }
866
+ broadcast(parsed.key);
867
+ bufferedInputHandled = true;
868
+ continue;
869
+ }
870
+ const completeUnsupportedCsiLength = getCompleteCsiSequenceLength(
871
+ kittySequenceBufferRef.current
872
+ );
873
+ if (completeUnsupportedCsiLength) {
874
+ if (debugKeystrokeLogging) {
875
+ debugLogger.debug(
876
+ "[DEBUG] Dropping unsupported complete CSI sequence:",
877
+ kittySequenceBufferRef.current.slice(
878
+ 0,
879
+ completeUnsupportedCsiLength
880
+ )
881
+ );
882
+ }
883
+ updateKittyBuffer(
884
+ kittySequenceBufferRef.current.slice(
885
+ completeUnsupportedCsiLength
886
+ )
887
+ );
888
+ if (!kittySequenceBufferRef.current) {
889
+ clearKittyTimeout();
890
+ }
891
+ bufferedInputHandled = true;
892
+ continue;
893
+ }
894
+ const plainTextPrefix = parsePlainTextPrefix(
895
+ kittySequenceBufferRef.current
896
+ );
897
+ if (plainTextPrefix) {
898
+ if (debugKeystrokeLogging) {
899
+ debugLogger.debug(
900
+ "[DEBUG] Recovered plain text after kitty sequence:",
901
+ plainTextPrefix.key.sequence
902
+ );
903
+ }
904
+ updateKittyBuffer(
905
+ kittySequenceBufferRef.current.slice(plainTextPrefix.length)
906
+ );
907
+ if (!kittySequenceBufferRef.current) {
908
+ clearKittyTimeout();
909
+ }
910
+ broadcast(plainTextPrefix.key);
911
+ bufferedInputHandled = true;
912
+ continue;
913
+ }
914
+ const nextStart = kittySequenceBufferRef.current.indexOf(
915
+ `${ESC2}[`,
916
+ 1
917
+ );
918
+ if (nextStart > 0) {
919
+ if (debugKeystrokeLogging) {
920
+ debugLogger.debug(
921
+ "[DEBUG] Skipping incomplete/invalid CSI prefix:",
922
+ kittySequenceBufferRef.current.slice(0, nextStart)
923
+ );
924
+ }
925
+ updateKittyBuffer(
926
+ kittySequenceBufferRef.current.slice(nextStart)
927
+ );
928
+ if (!kittySequenceBufferRef.current) {
929
+ clearKittyTimeout();
930
+ }
931
+ bufferedInputHandled = true;
932
+ continue;
933
+ }
934
+ break;
935
+ }
936
+ if (bufferedInputHandled) return;
937
+ if (config?.getDebugMode() || debugKeystrokeLogging) {
938
+ const codes = Array.from(kittySequenceBufferRef.current).map(
939
+ (ch) => ch.charCodeAt(0)
940
+ );
941
+ debugLogger.warn("Kitty sequence buffer has char codes:", codes);
942
+ }
943
+ if (kittySequenceBufferRef.current.length > MAX_KITTY_SEQUENCE_LENGTH) {
944
+ if (debugKeystrokeLogging) {
945
+ debugLogger.debug(
946
+ "[DEBUG] Kitty buffer overflow, clearing:",
947
+ kittySequenceBufferRef.current
948
+ );
949
+ }
950
+ if (config) {
951
+ const event = new KittySequenceOverflowEvent(
952
+ kittySequenceBufferRef.current.length,
953
+ kittySequenceBufferRef.current
954
+ );
955
+ logKittySequenceOverflow(config, event);
956
+ }
957
+ clearKittyBufferAndTimeout();
958
+ } else {
959
+ return;
960
+ }
961
+ }
962
+ }
963
+ if (key.name === "return" && key.sequence === `${ESC2}\r`) {
964
+ key.meta = true;
965
+ }
966
+ if (process.platform === "darwin" && !isPaste && key.sequence === OPTION_T_COMPOSED_GLYPH) {
967
+ key.name = "t";
968
+ key.meta = true;
969
+ }
970
+ broadcast({ ...key, paste: isPaste });
971
+ }, "handleKeypress");
972
+ const clearRawFlushTimeout = /* @__PURE__ */ __name(() => {
973
+ if (rawFlushTimeout) {
974
+ clearTimeout(rawFlushTimeout);
975
+ rawFlushTimeout = null;
976
+ }
977
+ }, "clearRawFlushTimeout");
978
+ const createPasteKeyEvent = /* @__PURE__ */ __name((name = "", sequence = "") => ({
979
+ name,
980
+ ctrl: false,
981
+ meta: false,
982
+ shift: false,
983
+ paste: false,
984
+ sequence
985
+ }), "createPasteKeyEvent");
986
+ const shouldFlushRawDataAsPaste = /* @__PURE__ */ __name((data) => {
987
+ const hasReturn = data.includes(13);
988
+ const hasEmbeddedTab = data.length > 1 && data.includes(9);
989
+ const isSingleReturn = data.length <= 2 && hasReturn;
990
+ return !isSingleReturn && (hasReturn || hasEmbeddedTab);
991
+ }, "shouldFlushRawDataAsPaste");
992
+ const flushRawBuffer = /* @__PURE__ */ __name(() => {
993
+ if (!rawDataBuffer.length) {
994
+ return;
995
+ }
996
+ const pasteModePrefixBuffer = Buffer.from(PASTE_MODE_PREFIX);
997
+ const pasteModeSuffixBuffer = Buffer.from(PASTE_MODE_SUFFIX);
998
+ const data = rawDataBuffer;
999
+ let cursor = 0;
1000
+ while (cursor < data.length) {
1001
+ const prefixPos = data.indexOf(pasteModePrefixBuffer, cursor);
1002
+ const suffixPos = data.indexOf(pasteModeSuffixBuffer, cursor);
1003
+ const hasPrefix = prefixPos !== -1 && prefixPos + pasteModePrefixBuffer.length <= data.length;
1004
+ const hasSuffix = suffixPos !== -1 && suffixPos + pasteModeSuffixBuffer.length <= data.length;
1005
+ let markerPos = -1;
1006
+ let markerLength = 0;
1007
+ let markerType = null;
1008
+ if (hasPrefix && (!hasSuffix || prefixPos < suffixPos)) {
1009
+ markerPos = prefixPos;
1010
+ markerLength = pasteModePrefixBuffer.length;
1011
+ markerType = "prefix";
1012
+ } else if (hasSuffix) {
1013
+ markerPos = suffixPos;
1014
+ markerLength = pasteModeSuffixBuffer.length;
1015
+ markerType = "suffix";
1016
+ }
1017
+ if (markerPos === -1) {
1018
+ break;
1019
+ }
1020
+ const nextData = data.slice(cursor, markerPos);
1021
+ if (nextData.length > 0) {
1022
+ keypressStream.write(nextData);
1023
+ }
1024
+ if (markerType === "prefix") {
1025
+ handleKeypress(void 0, createPasteKeyEvent("paste-start"));
1026
+ } else if (markerType === "suffix") {
1027
+ handleKeypress(void 0, createPasteKeyEvent("paste-end"));
1028
+ }
1029
+ cursor = markerPos + markerLength;
1030
+ }
1031
+ rawDataBuffer = data.slice(cursor);
1032
+ if (rawDataBuffer.length === 0) {
1033
+ return;
1034
+ }
1035
+ if (isPaste || !shouldFlushRawDataAsPaste(rawDataBuffer)) {
1036
+ keypressStream.write(rawDataBuffer);
1037
+ } else {
1038
+ handleKeypress(void 0, createPasteKeyEvent("paste-start"));
1039
+ keypressStream.write(rawDataBuffer);
1040
+ handleKeypress(void 0, createPasteKeyEvent("paste-end"));
1041
+ }
1042
+ rawDataBuffer = Buffer.alloc(0);
1043
+ clearRawFlushTimeout();
1044
+ }, "flushRawBuffer");
1045
+ const handleRawKeypress = /* @__PURE__ */ __name((_data) => {
1046
+ const data = Buffer.isBuffer(_data) ? _data : Buffer.from(_data, "utf8");
1047
+ rawDataBuffer = Buffer.concat([rawDataBuffer, data]);
1048
+ clearRawFlushTimeout();
1049
+ const isReturnChar = rawDataBuffer.length <= 2 && rawDataBuffer.includes(13);
1050
+ if (isReturnChar) {
1051
+ rawFlushTimeout = setTimeout(flushRawBuffer, 100);
1052
+ } else {
1053
+ flushRawBuffer();
1054
+ }
1055
+ }, "handleRawKeypress");
1056
+ let rl;
1057
+ if (usePassthrough) {
1058
+ rl = readline.createInterface({
1059
+ input: keypressStream,
1060
+ escapeCodeTimeout: 0
1061
+ });
1062
+ readline.emitKeypressEvents(keypressStream, rl);
1063
+ keypressStream.on("keypress", handleKeypress);
1064
+ stdin.on("data", handleRawKeypress);
1065
+ } else {
1066
+ rl = readline.createInterface({ input: stdin, escapeCodeTimeout: 0 });
1067
+ readline.emitKeypressEvents(stdin, rl);
1068
+ stdin.on("keypress", handleKeypress);
1069
+ }
1070
+ let replayPending = false;
1071
+ if (capturedInput.length > 0) {
1072
+ debugLogger.debug(
1073
+ `Replaying ${capturedInput.length} bytes of captured input`
1074
+ );
1075
+ replayPending = true;
1076
+ setImmediate(() => {
1077
+ if (!replayPending) return;
1078
+ try {
1079
+ stdin.emit("data", capturedInput);
1080
+ } catch (err) {
1081
+ debugLogger.error("Failed to replay captured input:", err);
1082
+ }
1083
+ });
1084
+ }
1085
+ return () => {
1086
+ replayPending = false;
1087
+ if (usePassthrough) {
1088
+ keypressStream.removeListener("keypress", handleKeypress);
1089
+ stdin.removeListener("data", handleRawKeypress);
1090
+ } else {
1091
+ stdin.removeListener("keypress", handleKeypress);
1092
+ }
1093
+ rl.close();
1094
+ setRawMode(false);
1095
+ if (backslashTimeout) {
1096
+ clearTimeout(backslashTimeout);
1097
+ backslashTimeout = null;
1098
+ }
1099
+ clearKittyBufferAndTimeout();
1100
+ clearPasteIdleTimeout();
1101
+ resetSgrMouse();
1102
+ if (rawFlushTimeout) {
1103
+ clearTimeout(rawFlushTimeout);
1104
+ rawFlushTimeout = null;
1105
+ }
1106
+ if (isPaste) {
1107
+ broadcast({
1108
+ name: "",
1109
+ ctrl: false,
1110
+ meta: false,
1111
+ shift: false,
1112
+ paste: true,
1113
+ sequence: pasteBuffer.toString()
1114
+ });
1115
+ pasteBuffer = Buffer.alloc(0);
1116
+ }
1117
+ };
1118
+ }, [
1119
+ stdin,
1120
+ setRawMode,
1121
+ kittyProtocolEnabled,
1122
+ debugKeystrokeLogging,
1123
+ pasteWorkaround,
1124
+ config,
1125
+ subscribers,
1126
+ mouseSubscribers,
1127
+ initialCapturedInput
1128
+ ]);
1129
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
1130
+ KeypressContext.Provider,
1131
+ {
1132
+ value: {
1133
+ subscribe,
1134
+ unsubscribe,
1135
+ subscribeMouse,
1136
+ unsubscribeMouse,
1137
+ pasteWorkaround
1138
+ },
1139
+ children
1140
+ }
1141
+ );
1142
+ }
1143
+ __name(KeypressProvider, "KeypressProvider");
1144
+
1145
+ // packages/cli/src/ui/hooks/useKeypress.ts
1146
+ function useKeypress(onKeypress, { isActive }) {
1147
+ const { subscribe, unsubscribe } = useKeypressContext();
1148
+ const onKeypressRef = (0, import_react3.useRef)(onKeypress);
1149
+ onKeypressRef.current = onKeypress;
1150
+ const handleKeypress = (0, import_react3.useCallback)((key) => {
1151
+ onKeypressRef.current(key);
1152
+ }, []);
1153
+ (0, import_react3.useEffect)(() => {
1154
+ if (!isActive) {
1155
+ return;
1156
+ }
1157
+ subscribe(handleKeypress);
1158
+ return () => {
1159
+ unsubscribe(handleKeypress);
1160
+ };
1161
+ }, [isActive, handleKeypress, subscribe, unsubscribe]);
1162
+ }
1163
+ __name(useKeypress, "useKeypress");
1164
+
1165
+ export {
1166
+ enableMouseEvents,
1167
+ disableMouseEvents,
1168
+ useKeypress,
1169
+ useFocus,
1170
+ useKeypressContext,
1171
+ KeypressProvider
1172
+ };
1173
+ /**
1174
+ * @license
1175
+ * Copyright 2025 Qwen
1176
+ * SPDX-License-Identifier: Apache-2.0
1177
+ *
1178
+ * Adapted from gemini-cli (Google LLC, Apache-2.0):
1179
+ * packages/cli/src/ui/utils/mouse.ts + utils/input.ts. Trimmed to the
1180
+ * subset the virtual-viewport scroll path needs (SGR + X11 parsing,
1181
+ * incomplete-sequence detection, enable/disable helpers).
1182
+ */
1183
+ /**
1184
+ * @license
1185
+ * Copyright 2025 Google LLC
1186
+ * SPDX-License-Identifier: Apache-2.0
1187
+ */