nolo-cli 0.213.0 → 0.222.0-alpha.2

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 (262) hide show
  1. package/README.md +3 -2
  2. package/{_executeModel-CUJLCFWR.js → _executeModel-4GGQQHOB.js} +111 -82
  3. package/{accountResolver-4LKIHEKL.js → accountResolver-EK2S4PWF.js} +6 -6
  4. package/{action-DF5UYSJF.js → action-CK64LS6S.js} +12 -11
  5. package/{addContentAction-WERAONNY.js → addContentAction-GDHDOF4U.js} +18 -17
  6. package/{addDialogAgentAction-7VI7YRML.js → addDialogAgentAction-CAKRU3ZT.js} +21 -20
  7. package/{agentDeleteCommand-XJORXPGU.js → agentDeleteCommand-BPV2XZL7.js} +128 -119
  8. package/{agentEmailCommands-XTYYFR6Z.js → agentEmailCommands-EJOS75YL.js} +132 -124
  9. package/{agentFavoriteCommands-EDK743YA.js → agentFavoriteCommands-2LKGKSUD.js} +7 -8
  10. package/{agentGrantCommands-RQWK2TEV.js → agentGrantCommands-QQV4N4JW.js} +5 -5
  11. package/{agentListCommands-OBLRBLHS.js → agentListCommands-HIZODBF3.js} +155 -92
  12. package/{agentMachineCommands-5FMT3OT5.js → agentMachineCommands-ZMQ2CY7Y.js} +62 -54
  13. package/{agentProviderCommands-Q5O33MED.js → agentProviderCommands-WKJOAWBP.js} +5 -5
  14. package/{agentPullCommand-6EM3URVK.js → agentPullCommand-XN6ZPBUW.js} +7 -7
  15. package/agentRecordCommands-OMXVDLDX.js +176 -0
  16. package/agentRunCommand-CB34YWMV.js +206 -0
  17. package/{agentRunControl-TAMHJQSR.js → agentRunControl-JNONH3RP.js} +30 -15
  18. package/{agentRuntimeLocal-SOO2OPJG.js → agentRuntimeLocal-QZPFWMLG.js} +52 -45
  19. package/{agentSlice-CHR6KOZN.js → agentSlice-RD2CDU7T.js} +20 -19
  20. package/{appDeleteCommands-GUP6P5YE.js → appDeleteCommands-QCCFDIEQ.js} +61 -53
  21. package/{appDeployCommands-MH2FX4O5.js → appDeployCommands-V2T7TNMQ.js} +61 -53
  22. package/{appDeployStatusCommands-SUHN3HPJ.js → appDeployStatusCommands-6PGH7ZCG.js} +61 -53
  23. package/{appGetCommands-YWDEX6Z4.js → appGetCommands-3L7WWJA6.js} +61 -53
  24. package/{appListCommands-ZQVMLPAY.js → appListCommands-ENJCK4PO.js} +61 -53
  25. package/{authCommand-PWX2ZNUP.js → authCommand-6V47SYGK.js} +29 -28
  26. package/{authCommands-HV3EAU3V.js → authCommands-GAJ3NIXO.js} +14 -13
  27. package/{builtinSkillRegistry-2QETTQPM.js → builtinSkillRegistry-2ECA42FC.js} +11 -13
  28. package/{chromeCommands-REEAH4SX.js → chromeCommands-G5UDKVSV.js} +3 -3
  29. package/{chromeOpsCommands-DIVM2K3T.js → chromeOpsCommands-YKX2QX3A.js} +20 -10
  30. package/{chunk-CRHOO2ZR.js → chunk-27PCUMJI.js} +2 -2
  31. package/chunk-2CI3ZFWD.js +97 -0
  32. package/{chunk-NSAPDIN2.js → chunk-2GJKRKI6.js} +541 -31
  33. package/{chunk-SM3NSZJV.js → chunk-2UCBGYO4.js} +20 -1
  34. package/{chunk-PYRUW7XN.js → chunk-2VUZSVAS.js} +136 -54
  35. package/{chunk-YB3YZK56.js → chunk-2WZXXAQD.js} +1 -67
  36. package/chunk-2YGBI2XB.js +30 -0
  37. package/chunk-2ZKFCIJJ.js +13 -0
  38. package/{chunk-QG4AOSON.js → chunk-34J5K2YA.js} +13 -32
  39. package/{chunk-LOEO7LRC.js → chunk-3IK6ILVW.js} +4 -1
  40. package/{chunk-CTPXME7U.js → chunk-3LMUPOHG.js} +29 -6
  41. package/chunk-44X52WOJ.js +1621 -0
  42. package/{chunk-6VLJ6YA7.js → chunk-4DESLZTK.js} +9 -9
  43. package/{chunk-MYOH447Z.js → chunk-4JVNURX4.js} +1 -1
  44. package/chunk-5CHGAKRT.js +364 -0
  45. package/{chunk-YDH3FDFQ.js → chunk-5FUN7EG4.js} +1 -1
  46. package/{chunk-INUFILG6.js → chunk-5RKUPJYL.js} +1 -1
  47. package/{chunk-ZC3CMUKU.js → chunk-6OVNSQHN.js} +84 -2
  48. package/{chunk-MOIJOHA5.js → chunk-6WU5572L.js} +36 -25
  49. package/{chunk-IXNGOHV5.js → chunk-7EEZJ6BS.js} +11 -152
  50. package/{chunk-Y6ORVLSS.js → chunk-7ET2U67U.js} +1 -1
  51. package/{chunk-G7MLNNEX.js → chunk-7JLY4WYF.js} +5 -5
  52. package/{chunk-P5L7CXOC.js → chunk-7Z6EW7AH.js} +3 -2
  53. package/{chunk-NJLL224W.js → chunk-AD5EWDFD.js} +2 -2
  54. package/{chunk-J2NHJ7WX.js → chunk-AIHYNKGV.js} +4 -4
  55. package/{chunk-HPFCI4SK.js → chunk-AK5O76CC.js} +3 -3
  56. package/{chunk-Y63ZSOR6.js → chunk-AL3TYDIF.js} +1 -1
  57. package/{chunk-ALQ3657A.js → chunk-AMEOV5VZ.js} +32 -12
  58. package/chunk-AN74ON4G.js +675 -0
  59. package/{chunk-HRMJUN5J.js → chunk-AQZ6BMRK.js} +1 -1
  60. package/{chunk-XHQC4PXX.js → chunk-B4GOW4MT.js} +424 -194
  61. package/{chunk-4KB6WQUL.js → chunk-BGP2EDFG.js} +1 -1
  62. package/{chunk-NBTY7YJF.js → chunk-BR3GT6MR.js} +1 -0
  63. package/{chunk-7RFNTILS.js → chunk-BUDVRYES.js} +2 -2
  64. package/{chunk-SVYO6AO7.js → chunk-BV3FLP2L.js} +41 -1
  65. package/{chunk-RZOV7OMV.js → chunk-C4VAR65S.js} +83 -141
  66. package/{chunk-COFEN36Z.js → chunk-C4WTX5TU.js} +2 -2
  67. package/{chunk-ZL5RAEEB.js → chunk-CIRB724Q.js} +1 -1
  68. package/{chunk-F6UUQOG6.js → chunk-CKT6QUE2.js} +4 -4
  69. package/{chunk-X7SDOJUM.js → chunk-CMZ3Z5PT.js} +14 -14
  70. package/{secretCommands-LXDWOLZ6.js → chunk-D726I5AZ.js} +191 -16
  71. package/{chunk-TAKB25RM.js → chunk-DNKTQ3IN.js} +4 -4
  72. package/chunk-DVQH4BTR.js +1137 -0
  73. package/{chunk-WYDI6TGM.js → chunk-DWX2HEVC.js} +91 -132
  74. package/{chunk-5MQRBSMW.js → chunk-EIAI3PPH.js} +111 -113
  75. package/chunk-EUCFKKDM.js +247 -0
  76. package/chunk-EWQ3HGNZ.js +90 -0
  77. package/{chunk-RPQXPZZF.js → chunk-F3GRJO4Z.js} +908 -13
  78. package/{chunk-YTF4WH7J.js → chunk-FIYSMXHY.js} +1 -1
  79. package/{chunk-75XIDFBW.js → chunk-FJ23FZXF.js} +72 -28
  80. package/{chunk-INN4LTAJ.js → chunk-FJK526XH.js} +2 -2
  81. package/chunk-FS2XP5D7.js +142 -0
  82. package/{chunk-FUGMREBO.js → chunk-FYF2TONJ.js} +5 -5
  83. package/{chunk-PCLE46CE.js → chunk-GBWGPTA7.js} +2 -1
  84. package/{chunk-TX5EYMGT.js → chunk-GYVCJABP.js} +30 -254
  85. package/{chunk-3UKL3HPD.js → chunk-HOCHUZQ7.js} +8 -78
  86. package/{chunk-EHSZD5OI.js → chunk-HXER7YJF.js} +4 -4
  87. package/chunk-HYIETXA6.js +99 -0
  88. package/{chunk-H2TJUNCH.js → chunk-I4EADJ4P.js} +6 -6
  89. package/{chunk-TCZHTTUU.js → chunk-I7WBYGBP.js} +8 -8
  90. package/{chunk-6DWMYIUY.js → chunk-IILMY4W4.js} +14 -9
  91. package/chunk-JA3ICVJY.js +271 -0
  92. package/{chunk-ZRSNONOB.js → chunk-JWXITTQB.js} +8 -3
  93. package/{chunk-H4UOTUOX.js → chunk-KEN3N2TN.js} +148 -18
  94. package/{chunk-LEC5ALIN.js → chunk-KEPOVMF4.js} +1 -1
  95. package/{chunk-UHJGXRJ4.js → chunk-KQSYAIZR.js} +3 -3
  96. package/{chunk-4VJAC32I.js → chunk-L5I543VB.js} +3 -2
  97. package/chunk-LKA64WH4.js +227 -0
  98. package/{chunk-QHPRUL4O.js → chunk-LVL6GFCM.js} +4 -4
  99. package/{chunk-H5HF7TJA.js → chunk-MAIITKBT.js} +2 -2
  100. package/chunk-MBG66ZBH.js +226 -0
  101. package/{chunk-YUA6OAH5.js → chunk-MDLS23JK.js} +2 -2
  102. package/{chunk-VL5KOY2C.js → chunk-MK2Q7ZJD.js} +67 -5
  103. package/{chunk-MDB67IWP.js → chunk-MS4NZNKI.js} +10 -10
  104. package/{chunk-VO4WSAVP.js → chunk-MYHNBEXD.js} +3 -3
  105. package/{chunk-ZXOUUDCG.js → chunk-MZLE5HQ3.js} +3654 -231
  106. package/{chunk-AZMYUSVF.js → chunk-N5Z2V73W.js} +1 -1
  107. package/{chunk-V5Y3R6BT.js → chunk-NIZ2BXFD.js} +213 -210
  108. package/{chunk-KFLT5KAD.js → chunk-NWP2OYOX.js} +20 -20
  109. package/{chunk-G2BQWAVT.js → chunk-O6J3OTOP.js} +4 -4
  110. package/{chunk-VNYYOX3V.js → chunk-OB6DVWPF.js} +141 -48
  111. package/{chunk-YWSEPJ7C.js → chunk-OBWT45ZU.js} +3 -3
  112. package/{chunk-ZNWI6OVT.js → chunk-ODJ7BVSI.js} +80 -11
  113. package/{chunk-XJWWBO34.js → chunk-OJKUU3LP.js} +5 -7
  114. package/{chunk-HUBHAQK2.js → chunk-ON37YXGX.js} +29 -29
  115. package/{chunk-UYD5HQ6T.js → chunk-P5ZJRTCH.js} +5429 -1752
  116. package/{chunk-6XIE5ZGI.js → chunk-PDCV7P5W.js} +1 -1
  117. package/{chunk-WRYQ35LQ.js → chunk-PJCIP64Z.js} +859 -57
  118. package/{chunk-7QTZCMKL.js → chunk-PJVKMGPZ.js} +1089 -1639
  119. package/{chunk-A7TFUNZO.js → chunk-PPJYZRSQ.js} +6 -2
  120. package/chunk-QHEN7NZ7.js +46 -0
  121. package/{chunk-OQPKUBPB.js → chunk-QNWG52I4.js} +19 -7
  122. package/{chunk-YGILMZ7N.js → chunk-QVBXJNZ2.js} +1 -1
  123. package/{chunk-7BT37FK3.js → chunk-RDH5CQ4T.js} +648 -131
  124. package/{chunk-C6KNNXWU.js → chunk-RGQ4UUWZ.js} +25 -2
  125. package/{chunk-OWYYDMGJ.js → chunk-S2NTVGA2.js} +4 -2
  126. package/{chunk-KC4XDTT3.js → chunk-SOF4OWDM.js} +6 -4
  127. package/{chunk-RLBNLZVC.js → chunk-SQYIK6HO.js} +1 -1
  128. package/{chunk-YJAFKXMU.js → chunk-SVT62ULE.js} +50 -48
  129. package/{chunk-KIM6CLW5.js → chunk-SY3C4SQ7.js} +42 -15
  130. package/{chunk-JY5NGFFH.js → chunk-SYTHYBMI.js} +5 -5
  131. package/{chunk-WMTBPBMP.js → chunk-T6DXNI6Z.js} +52 -50
  132. package/chunk-TLE77UJ5.js +230 -0
  133. package/{chunk-4VNS5WPM.js → chunk-U67V476Y.js} +1 -8
  134. package/{chunk-F7CI2ZC5.js → chunk-UAIHKQIA.js} +2 -1
  135. package/{chunk-R5O4QAWG.js → chunk-UB3D4TRQ.js} +11 -77
  136. package/{chunk-WPORQFYN.js → chunk-UVLYNWIE.js} +2 -2
  137. package/{chunk-NOKUNJON.js → chunk-UYOICCYG.js} +29 -19
  138. package/{chunk-4I7ERB7F.js → chunk-VREDDN25.js} +1 -1
  139. package/{chunk-O2TZF4AI.js → chunk-WAE3GFCJ.js} +3 -3
  140. package/{chunk-H7PPIYWP.js → chunk-WI67URFP.js} +20 -20
  141. package/{chunk-7OCO4TDT.js → chunk-WJVYAO6P.js} +1 -1
  142. package/{chunk-T43B7LB2.js → chunk-WKGQSYTB.js} +1 -1
  143. package/{chunk-BBJ22CLB.js → chunk-WUUH4LWZ.js} +60 -30
  144. package/{chunk-4T2WNOY7.js → chunk-X7UF53VA.js} +33 -22
  145. package/{chunk-TY3TIUJK.js → chunk-XI2BWJM5.js} +65 -0
  146. package/{chunk-LLRPJECG.js → chunk-XWVCYUUU.js} +16 -159
  147. package/{chunk-J5JTMQIA.js → chunk-YFLVRVYK.js} +1 -1
  148. package/{chunk-EYLGAEB4.js → chunk-YGMBIXCF.js} +132 -0
  149. package/chunk-YL3EFYL3.js +199 -0
  150. package/{chunk-MMA3LZ3W.js → chunk-YNIYE47Z.js} +1 -1
  151. package/{chunk-W4S457LU.js → chunk-YU4ZPWVF.js} +41 -5
  152. package/{chunk-7Y4YTDQF.js → chunk-YWWDC3O7.js} +281 -159
  153. package/chunk-YZMNK53S.js +68 -0
  154. package/{chunk-RSHTSUEG.js → chunk-Z2PITYZN.js} +2060 -602
  155. package/{chunk-FY7F4Q6X.js → chunk-Z4PCXPUE.js} +2 -2
  156. package/{cliAgentConfigHelpers-WJBZQTLW.js → cliAgentConfigHelpers-TKYL43MT.js} +15 -16
  157. package/{cliAuthorityBrokerClient-PM3U6Q6J.js → cliAuthorityBrokerClient-XHH7MH2P.js} +1 -1
  158. package/{cliAuthorityStoreDriver-TKLXNNTG.js → cliAuthorityStoreDriver-6FE3BJNB.js} +1 -1
  159. package/{cliEnvHelpers-BVYTMUPJ.js → cliEnvHelpers-VPSJ4XWC.js} +3 -3
  160. package/{cliExecutor-BWBF2MTI.js → cliExecutor-4MAX3PZL.js} +2 -2
  161. package/cliLocalAgentRecordReader-MHHD4T7R.js +90 -0
  162. package/{commandRegistry-W63CYRZJ.js → commandRegistry-5DA5UP7S.js} +105 -97
  163. package/{contentThunks-U7PL5MQD.js → contentThunks-5GUQ7FWJ.js} +47 -43
  164. package/{cooldownCommands-TIGUHXTD.js → cooldownCommands-X7P5M2V5.js} +5 -4
  165. package/{createAgentAutomationAction-OLBQDD6R.js → createAgentAutomationAction-UCLTHQRI.js} +51 -49
  166. package/{createDialogAction-SVH6B3SB.js → createDialogAction-UPN774AF.js} +46 -48
  167. package/{createPageAction-F4DIWZ2Z.js → createPageAction-JRQ2TA4O.js} +50 -48
  168. package/{cursorProvider-YGGNMVWX.js → cursorProvider-2RACMEMF.js} +1 -1
  169. package/{db-HUCI5R4G.js → db-CS4ZJQKV.js} +1 -1
  170. package/{dbSlice-BVH2YZPQ.js → dbSlice-WNON7TOL.js} +17 -16
  171. package/{deleteFile-5YOEKV4U.js → deleteFile-Q3YDB4ML.js} +9 -9
  172. package/{desktopFolderProjects-SFY5EZS3.js → desktopFolderProjects-4POAMVJN.js} +2 -2
  173. package/{dialogCommands-KHIEPY3M.js → dialogCommands-VRI7VCXH.js} +64 -57
  174. package/dialogNotifyCommand-6TMCX4D2.js +36 -0
  175. package/{dialogSlice-ZCTDV2PZ.js → dialogSlice-LFNVUSAN.js} +42 -40
  176. package/{dialogUsageCommand-7KCPYGHG.js → dialogUsageCommand-HTVPR2CX.js} +11 -10
  177. package/{docCreateCommands-DPMZI7G5.js → docCreateCommands-AMPXMOX3.js} +61 -55
  178. package/{docDeleteCommands-IRQQLUBT.js → docDeleteCommands-I5WFAEHP.js} +63 -57
  179. package/{docReadCommands-LK37XH6L.js → docReadCommands-X53ELNIE.js} +61 -55
  180. package/{docStore-V2KECILA.js → docStore-2VAWVLWH.js} +21 -20
  181. package/{docUpdateCommands-O6T3HJHH.js → docUpdateCommands-6QPNDC7M.js} +64 -58
  182. package/{fetchMessages-NR4KNQLO.js → fetchMessages-TQEUZD7H.js} +8 -7
  183. package/{getPricing-2MNMXEVG.js → getPricing-MB2GBXOK.js} +6 -6
  184. package/{handleSendMessageAction-2PE25WM3.js → handleSendMessageAction-AAJOHXOB.js} +194 -302
  185. package/{hostCredentialCreate-S233UMAP.js → hostCredentialCreate-GLMJ22M6.js} +123 -114
  186. package/index.js +29 -29
  187. package/{keys-BEGDOTRL.js → keys-RWF7UCB4.js} +5 -4
  188. package/legacyMigration-TF4SYJCZ.js +19 -0
  189. package/{lib-5KKIBFIT.js → lib-OT5OTXRU.js} +7087 -6664
  190. package/{localDialogRead-7NNDVVF7.js → localDialogRead-SVTPA5GY.js} +3 -3
  191. package/{localFirstLog-DHNOY2NA.js → localFirstLog-OIETGK66.js} +1 -1
  192. package/localRecall-2J6QPOK2.js +15 -0
  193. package/{localRuntimeAdapter-KY6WXNBR.js → localRuntimeAdapter-BMP57P42.js} +119 -110
  194. package/{localRuntimeAuthority-OYH4AE4G.js → localRuntimeAuthority-IBJAT62G.js} +1 -1
  195. package/{localRuntimeDb-VBIMCWUC.js → localRuntimeDb-N7KHDXS2.js} +2 -2
  196. package/{machineCommands-Q6HA3IXF.js → machineCommands-3MLIAK5Q.js} +128 -119
  197. package/{machineInfo-UKPTZO5Y.js → machineInfo-LWHTEBHJ.js} +1 -1
  198. package/machineWsRunDispatch-FKIGROQF.js +191 -0
  199. package/{memberThunks-7EDJADWU.js → memberThunks-ZGLZ36PK.js} +29 -28
  200. package/{memoryCommands-ASCE5STX.js → memoryCommands-5WC3T66U.js} +4 -4
  201. package/models-ULVWLSQ6.js +9 -0
  202. package/{oauthTokenStore-OEERZFUC.js → oauthTokenStore-RUYNYALS.js} +1 -1
  203. package/{offlineMarxistsAgentCommand-2QTHJCHV.js → offlineMarxistsAgentCommand-4IC3Y4C6.js} +4 -4
  204. package/overlay-THLKYIWY.js +11 -0
  205. package/package.json +2 -2
  206. package/{pdf-U6KSUEZZ.js → pdf-KE3QI2V7.js} +1 -1
  207. package/{processSpawn-ZU5QFM43.js → processSpawn-6GEO77KV.js} +1 -1
  208. package/{profileConfig-KN3N2BLF.js → profileConfig-KOWK4HOG.js} +1 -1
  209. package/{projectArchive-DRTDIMEV.js → projectArchive-HK63GMF4.js} +52 -50
  210. package/{providerPresetApply-YXGV6NXB.js → providerPresetApply-OIFQ73LH.js} +19 -12
  211. package/{providerRegistry-S6UL6UNA.js → providerRegistry-KZ3SDZ3D.js} +10 -10
  212. package/{read-4V2RMG7N.js → read-MRQHJMJ2.js} +10 -10
  213. package/{readDocTool-BH6ATGQO.js → readDocTool-4BGTXTXA.js} +2 -2
  214. package/{readlineWorkspace-2W4WRCOU.js → readlineWorkspace-AKAHSCNY.js} +7982 -6274
  215. package/{removeDialogAgentAction-LYAZGNKW.js → removeDialogAgentAction-B6H7DXFM.js} +23 -22
  216. package/{runAgentClientLoop-J2VQBS2Z.js → runAgentClientLoop-UVAWGEON.js} +81 -79
  217. package/{runtimeDoctorCommands-QAI3MBKQ.js → runtimeDoctorCommands-FW6XKDUG.js} +12 -12
  218. package/{runtimeModeArgs-2Y7BALTO.js → runtimeModeArgs-X7DL7PUN.js} +1 -1
  219. package/secretCommands-LJXOOYA7.js +24 -0
  220. package/{setDialogExtraReferencesAction-OCRPGPYH.js → setDialogExtraReferencesAction-EVCY3TRW.js} +22 -21
  221. package/{setPrimaryDialogAgentAction-HFJDQIBU.js → setPrimaryDialogAgentAction-KPFVPHCJ.js} +23 -22
  222. package/{settingThunks-RAMHMTGM.js → settingThunks-ENOAK2WV.js} +97 -88
  223. package/{skillDiscovery-XKHROSH2.js → skillDiscovery-B5V23AXP.js} +4 -4
  224. package/{skillSummaryMarker-42HKSXYY.js → skillSummaryMarker-62UW7HI7.js} +1 -1
  225. package/{slateToRenderMarkdown-Y5IYN73U.js → slateToRenderMarkdown-R3X74MCX.js} +1 -1
  226. package/{slateUtils-NGV2NMKM.js → slateUtils-ESQAJ6RN.js} +1 -1
  227. package/{spaceCommands-KVJZVKVO.js → spaceCommands-DTTNAS2L.js} +61 -53
  228. package/store-JRVN62NM.js +46 -0
  229. package/{streamAgentChatTurn-GHBMJJ6S.js → streamAgentChatTurn-R5UY25VB.js} +875 -618
  230. package/{switchDialogAgentAction-EBRMW3RA.js → switchDialogAgentAction-SZ44XDRY.js} +21 -20
  231. package/{tableCommands-MP6VFSVT.js → tableCommands-HITDSLHS.js} +10 -10
  232. package/tombstones-FQQMEDOW.js +32 -0
  233. package/{toolApiClient-HGNO53TC.js → toolApiClient-OGQEBQVX.js} +4 -4
  234. package/{tools-EWKCPKMS.js → tools-HWFG6GMJ.js} +75 -74
  235. package/tuiSummaryLlmCaller-HQQZAMYF.js +44 -0
  236. package/{updateCommands-ZQYU6SCI.js → updateCommands-RJVCRSBP.js} +10 -8
  237. package/{updateDialogTitleAction-5GGMBTDF.js → updateDialogTitleAction-KNPOAMVS.js} +48 -46
  238. package/{usageCommand-F4IPVMIZ.js → usageCommand-FWZCB7AM.js} +11 -10
  239. package/{usageRebuildCommand-HAW2AD5N.js → usageRebuildCommand-SP2BLNJU.js} +12 -11
  240. package/userDataMerge-HT2ZVHBJ.js +13 -0
  241. package/{windowsSelfUpdate-257DV2T6.js → windowsSelfUpdate-KERHIAB4.js} +3 -3
  242. package/{workloadLifecycle-4C42SVBD.js → workloadLifecycle-DYNEYHV5.js} +6 -6
  243. package/agentRecordCommands-ZQ7SVYGG.js +0 -167
  244. package/agentRunCommand-WS7IGO2W.js +0 -196
  245. package/chunk-3CGG2PAL.js +0 -594
  246. package/chunk-5XBUWM6I.js +0 -89
  247. package/chunk-CJEIOP3E.js +0 -0
  248. package/chunk-EHGEOAHI.js +0 -636
  249. package/chunk-FW6YHHLI.js +0 -842
  250. package/chunk-GPVRUGGY.js +0 -115
  251. package/chunk-HSVBJRF4.js +0 -339
  252. package/chunk-WJZOQR2J.js +0 -151
  253. package/chunk-ZCWRMUWT.js +0 -89
  254. package/dist-M676ULYG.js +0 -7314
  255. package/machineWsRunDispatch-WWJQ6WR3.js +0 -182
  256. package/models-PJBE6JDV.js +0 -9
  257. package/tuiSummaryLlmCaller-ALQYUUWB.js +0 -189
  258. package/{chunk-WACI5I6V.js → chunk-2THCNKE4.js} +3 -3
  259. package/{chunk-2QHFH3DR.js → chunk-47ITIXO7.js} +6 -6
  260. package/{chunk-GOO6G4PY.js → chunk-CKG3PRZ7.js} +0 -0
  261. package/{chunk-OQHIVPG4.js → chunk-SNBZZPYH.js} +3 -3
  262. package/{chunk-AETZ7AD6.js → chunk-W6RFEDN4.js} +3 -3
@@ -11,26 +11,902 @@ import {
11
11
  getAntigravityUserAgent,
12
12
  normalizeAntigravityTokenPayload,
13
13
  refreshAntigravityToken
14
- } from "./chunk-KIM6CLW5.js";
14
+ } from "./chunk-SY3C4SQ7.js";
15
+ import {
16
+ buildEnvFromProfile,
17
+ loadProfileConfig
18
+ } from "./chunk-R5GO3YZP.js";
19
+ import {
20
+ getCliLocale
21
+ } from "./chunk-OB6DVWPF.js";
15
22
  import {
16
23
  toErrorMessage
17
24
  } from "./chunk-HNMXYYJR.js";
25
+ import {
26
+ asTrimmedString
27
+ } from "./chunk-3EUW3WEO.js";
18
28
  import {
19
29
  isRecord
20
30
  } from "./chunk-KUG52IAP.js";
21
- import {
22
- buildEnvFromProfile,
23
- loadProfileConfig
24
- } from "./chunk-R5GO3YZP.js";
25
- import {
26
- writeOAuthCredential
27
- } from "./chunk-G7Y4GXTY.js";
28
31
  import {
29
32
  asOptionalFiniteNumber
30
33
  } from "./chunk-WWC7I6TA.js";
31
34
  import {
32
- asTrimmedString
33
- } from "./chunk-3EUW3WEO.js";
35
+ writeOAuthCredential
36
+ } from "./chunk-G7Y4GXTY.js";
37
+
38
+ // packages/cli/tui/wtAmbiguousWidth.ts
39
+ import fs from "node:fs";
40
+ import path from "node:path";
41
+ var WT_PACKAGE_NAMES = [
42
+ "Microsoft.WindowsTerminal_8wekyb3d8bbwe",
43
+ "Microsoft.WindowsTerminalPreview_8wekyb3d8bbwe"
44
+ ];
45
+ function wtSettingsCandidates(env = process.env) {
46
+ const localAppData = env.LOCALAPPDATA;
47
+ if (typeof localAppData !== "string" || localAppData.trim() === "") return [];
48
+ return WT_PACKAGE_NAMES.map(
49
+ (name) => path.join(localAppData, "Packages", name, "LocalState", "settings.json")
50
+ );
51
+ }
52
+ function stripJsonComments(text) {
53
+ let out = "";
54
+ let inString = false;
55
+ let inLineComment = false;
56
+ let inBlockComment = false;
57
+ for (let i = 0; i < text.length; i += 1) {
58
+ const ch = text[i];
59
+ const next = text[i + 1];
60
+ if (inLineComment) {
61
+ if (ch === "\n") {
62
+ inLineComment = false;
63
+ out += ch;
64
+ }
65
+ continue;
66
+ }
67
+ if (inBlockComment) {
68
+ if (ch === "*" && next === "/") {
69
+ inBlockComment = false;
70
+ i += 1;
71
+ }
72
+ continue;
73
+ }
74
+ if (inString) {
75
+ out += ch;
76
+ if (ch === "\\") {
77
+ out += next ?? "";
78
+ i += 1;
79
+ continue;
80
+ }
81
+ if (ch === '"') inString = false;
82
+ continue;
83
+ }
84
+ if (ch === '"') {
85
+ inString = true;
86
+ out += ch;
87
+ continue;
88
+ }
89
+ if (ch === "/" && next === "/") {
90
+ inLineComment = true;
91
+ i += 1;
92
+ continue;
93
+ }
94
+ if (ch === "/" && next === "*") {
95
+ inBlockComment = true;
96
+ i += 1;
97
+ continue;
98
+ }
99
+ out += ch;
100
+ }
101
+ return out;
102
+ }
103
+ function parseAmbiguousWidthSetting(text) {
104
+ const active = stripJsonComments(text);
105
+ const match = active.match(/"(?:[A-Za-z0-9_]+\.)?ambiguousWidth"\s*:\s*"([A-Za-z]+)"/);
106
+ if (!match) return null;
107
+ const value = match[1].toLowerCase();
108
+ if (value === "wide") return "wide";
109
+ if (value === "narrow") return "narrow";
110
+ return null;
111
+ }
112
+ function detectWindowsTerminalAmbiguousWidth(deps = {}) {
113
+ const platform = deps.platform ?? process.platform;
114
+ if (platform !== "win32") return null;
115
+ const env = deps.env ?? process.env;
116
+ const readFile = deps.readFile ?? ((filePath) => {
117
+ try {
118
+ return fs.readFileSync(filePath, "utf8");
119
+ } catch {
120
+ return null;
121
+ }
122
+ });
123
+ for (const candidate of wtSettingsCandidates(env)) {
124
+ const text = readFile(candidate);
125
+ if (text === null) continue;
126
+ const parsed = parseAmbiguousWidthSetting(text);
127
+ return parsed ?? "narrow";
128
+ }
129
+ return null;
130
+ }
131
+
132
+ // node_modules/ansi-regex/index.js
133
+ function ansiRegex({ onlyFirst = false } = {}) {
134
+ const ST = "(?:\\u0007|\\u001B\\u005C|\\u009C)";
135
+ const osc = `(?:\\u001B\\][^\\u0007\\u001B\\u009C]*${ST})`;
136
+ const csi = "[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]";
137
+ const pattern = `${osc}|${csi}`;
138
+ return new RegExp(pattern, onlyFirst ? void 0 : "g");
139
+ }
140
+
141
+ // node_modules/strip-ansi/index.js
142
+ var regex = ansiRegex();
143
+ function stripAnsi(string) {
144
+ if (typeof string !== "string") {
145
+ throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);
146
+ }
147
+ if (!string.includes("\x1B") && !string.includes("\x9B")) {
148
+ return string;
149
+ }
150
+ return string.replace(regex, "");
151
+ }
152
+
153
+ // node_modules/get-east-asian-width/lookup-data.js
154
+ var ambiguousMinimalCodePoint = 161;
155
+ var ambiguousMaximumCodePoint = 1114109;
156
+ var ambiguousRanges = [161, 161, 164, 164, 167, 168, 170, 170, 173, 174, 176, 180, 182, 186, 188, 191, 198, 198, 208, 208, 215, 216, 222, 225, 230, 230, 232, 234, 236, 237, 240, 240, 242, 243, 247, 250, 252, 252, 254, 254, 257, 257, 273, 273, 275, 275, 283, 283, 294, 295, 299, 299, 305, 307, 312, 312, 319, 322, 324, 324, 328, 331, 333, 333, 338, 339, 358, 359, 363, 363, 462, 462, 464, 464, 466, 466, 468, 468, 470, 470, 472, 472, 474, 474, 476, 476, 593, 593, 609, 609, 708, 708, 711, 711, 713, 715, 717, 717, 720, 720, 728, 731, 733, 733, 735, 735, 768, 879, 913, 929, 931, 937, 945, 961, 963, 969, 1025, 1025, 1040, 1103, 1105, 1105, 8208, 8208, 8211, 8214, 8216, 8217, 8220, 8221, 8224, 8226, 8228, 8231, 8240, 8240, 8242, 8243, 8245, 8245, 8251, 8251, 8254, 8254, 8308, 8308, 8319, 8319, 8321, 8324, 8364, 8364, 8451, 8451, 8453, 8453, 8457, 8457, 8467, 8467, 8470, 8470, 8481, 8482, 8486, 8486, 8491, 8491, 8531, 8532, 8539, 8542, 8544, 8555, 8560, 8569, 8585, 8585, 8592, 8601, 8632, 8633, 8658, 8658, 8660, 8660, 8679, 8679, 8704, 8704, 8706, 8707, 8711, 8712, 8715, 8715, 8719, 8719, 8721, 8721, 8725, 8725, 8730, 8730, 8733, 8736, 8739, 8739, 8741, 8741, 8743, 8748, 8750, 8750, 8756, 8759, 8764, 8765, 8776, 8776, 8780, 8780, 8786, 8786, 8800, 8801, 8804, 8807, 8810, 8811, 8814, 8815, 8834, 8835, 8838, 8839, 8853, 8853, 8857, 8857, 8869, 8869, 8895, 8895, 8978, 8978, 9312, 9449, 9451, 9547, 9552, 9587, 9600, 9615, 9618, 9621, 9632, 9633, 9635, 9641, 9650, 9651, 9654, 9655, 9660, 9661, 9664, 9665, 9670, 9672, 9675, 9675, 9678, 9681, 9698, 9701, 9711, 9711, 9733, 9734, 9737, 9737, 9742, 9743, 9756, 9756, 9758, 9758, 9792, 9792, 9794, 9794, 9824, 9825, 9827, 9829, 9831, 9834, 9836, 9837, 9839, 9839, 9886, 9887, 9919, 9919, 9926, 9933, 9935, 9939, 9941, 9953, 9955, 9955, 9960, 9961, 9963, 9969, 9972, 9972, 9974, 9977, 9979, 9980, 9982, 9983, 10045, 10045, 10102, 10111, 11094, 11097, 12872, 12879, 57344, 63743, 65024, 65039, 65533, 65533, 127232, 127242, 127248, 127277, 127280, 127337, 127344, 127373, 127375, 127376, 127387, 127404, 917760, 917999, 983040, 1048573, 1048576, 1114109];
157
+ var fullwidthMinimalCodePoint = 12288;
158
+ var fullwidthMaximumCodePoint = 65510;
159
+ var fullwidthRanges = [12288, 12288, 65281, 65376, 65504, 65510];
160
+ var wideMinimalCodePoint = 4352;
161
+ var wideMaximumCodePoint = 262141;
162
+ var wideRanges = [4352, 4447, 8986, 8987, 9001, 9002, 9193, 9196, 9200, 9200, 9203, 9203, 9725, 9726, 9748, 9749, 9776, 9783, 9800, 9811, 9855, 9855, 9866, 9871, 9875, 9875, 9889, 9889, 9898, 9899, 9917, 9918, 9924, 9925, 9934, 9934, 9940, 9940, 9962, 9962, 9970, 9971, 9973, 9973, 9978, 9978, 9981, 9981, 9989, 9989, 9994, 9995, 10024, 10024, 10060, 10060, 10062, 10062, 10067, 10069, 10071, 10071, 10133, 10135, 10160, 10160, 10175, 10175, 11035, 11036, 11088, 11088, 11093, 11093, 11904, 11929, 11931, 12019, 12032, 12245, 12272, 12287, 12289, 12350, 12353, 12438, 12441, 12543, 12549, 12591, 12593, 12686, 12688, 12773, 12783, 12830, 12832, 12871, 12880, 42124, 42128, 42182, 43360, 43388, 44032, 55203, 63744, 64255, 65040, 65049, 65072, 65106, 65108, 65126, 65128, 65131, 94176, 94180, 94192, 94198, 94208, 101594, 101631, 101664, 101760, 101874, 101888, 102801, 102816, 102866, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110888, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110952, 110960, 111355, 119552, 119638, 119648, 119670, 126980, 126980, 127183, 127183, 127374, 127374, 127377, 127386, 127406, 127406, 127488, 127490, 127504, 127547, 127552, 127560, 127568, 127569, 127584, 127589, 127744, 127776, 127789, 127797, 127799, 127868, 127870, 127891, 127904, 127946, 127951, 127955, 127968, 127984, 127988, 127988, 127992, 128062, 128064, 128064, 128066, 128252, 128255, 128317, 128331, 128334, 128336, 128359, 128378, 128378, 128405, 128406, 128420, 128420, 128507, 128591, 128640, 128709, 128716, 128716, 128720, 128722, 128725, 128729, 128732, 128735, 128747, 128748, 128756, 128764, 128986, 128986, 128992, 129003, 129008, 129008, 129292, 129338, 129340, 129349, 129351, 129535, 129648, 129660, 129664, 129734, 129736, 129736, 129740, 129757, 129759, 129771, 129775, 129786, 131072, 196605, 196608, 262141];
163
+
164
+ // node_modules/get-east-asian-width/utilities.js
165
+ var isInRange = (ranges, codePoint) => {
166
+ let low = 0;
167
+ let high = Math.floor(ranges.length / 2) - 1;
168
+ while (low <= high) {
169
+ const mid = Math.floor((low + high) / 2);
170
+ const i = mid * 2;
171
+ if (codePoint < ranges[i]) {
172
+ high = mid - 1;
173
+ } else if (codePoint > ranges[i + 1]) {
174
+ low = mid + 1;
175
+ } else {
176
+ return true;
177
+ }
178
+ }
179
+ return false;
180
+ };
181
+
182
+ // node_modules/get-east-asian-width/lookup.js
183
+ var commonCjkCodePoint = 19968;
184
+ var [wideFastPathStart, wideFastPathEnd] = /* @__PURE__ */ findWideFastPathRange(wideRanges);
185
+ function findWideFastPathRange(ranges) {
186
+ let fastPathStart = ranges[0];
187
+ let fastPathEnd = ranges[1];
188
+ for (let index = 0; index < ranges.length; index += 2) {
189
+ const start = ranges[index];
190
+ const end = ranges[index + 1];
191
+ if (commonCjkCodePoint >= start && commonCjkCodePoint <= end) {
192
+ return [start, end];
193
+ }
194
+ if (end - start > fastPathEnd - fastPathStart) {
195
+ fastPathStart = start;
196
+ fastPathEnd = end;
197
+ }
198
+ }
199
+ return [fastPathStart, fastPathEnd];
200
+ }
201
+ var isAmbiguous = (codePoint) => {
202
+ if (codePoint < ambiguousMinimalCodePoint || codePoint > ambiguousMaximumCodePoint) {
203
+ return false;
204
+ }
205
+ return isInRange(ambiguousRanges, codePoint);
206
+ };
207
+ var isFullwidth = (codePoint) => {
208
+ if (codePoint < fullwidthMinimalCodePoint || codePoint > fullwidthMaximumCodePoint) {
209
+ return false;
210
+ }
211
+ return isInRange(fullwidthRanges, codePoint);
212
+ };
213
+ var isWide = (codePoint) => {
214
+ if (codePoint >= wideFastPathStart && codePoint <= wideFastPathEnd) {
215
+ return true;
216
+ }
217
+ if (codePoint < wideMinimalCodePoint || codePoint > wideMaximumCodePoint) {
218
+ return false;
219
+ }
220
+ return isInRange(wideRanges, codePoint);
221
+ };
222
+
223
+ // node_modules/get-east-asian-width/index.js
224
+ function validate(codePoint) {
225
+ if (!Number.isSafeInteger(codePoint)) {
226
+ throw new TypeError(`Expected a code point, got \`${typeof codePoint}\`.`);
227
+ }
228
+ }
229
+ function eastAsianWidth(codePoint, { ambiguousAsWide = false } = {}) {
230
+ validate(codePoint);
231
+ if (isFullwidth(codePoint) || isWide(codePoint) || ambiguousAsWide && isAmbiguous(codePoint)) {
232
+ return 2;
233
+ }
234
+ return 1;
235
+ }
236
+
237
+ // node_modules/string-width/index.js
238
+ var segmenter = new Intl.Segmenter();
239
+ var zeroWidthClusterRegex = new RegExp("^(?:\\p{Default_Ignorable_Code_Point}|\\p{Control}|\\p{Format}|\\p{Nonspacing_Mark}|\\p{Enclosing_Mark}|\\p{Surrogate})+$", "v");
240
+ var leadingNonPrintingRegex = new RegExp("^[\\p{Default_Ignorable_Code_Point}\\p{Control}\\p{Format}\\p{Nonspacing_Mark}\\p{Enclosing_Mark}\\p{Surrogate}]+", "v");
241
+ var spacingMarkRegex = new RegExp("\\p{Spacing_Mark}", "v");
242
+ var rgiEmojiRegex = new RegExp("^\\p{RGI_Emoji}$", "v");
243
+ var unqualifiedKeycapRegex = /^[\d#*]\u20E3$/;
244
+ var extendedPictographicRegex = new RegExp("\\p{Extended_Pictographic}", "gu");
245
+ function isDoubleWidthNonRgiEmojiSequence(segment) {
246
+ if (segment.length > 50) {
247
+ return false;
248
+ }
249
+ if (unqualifiedKeycapRegex.test(segment)) {
250
+ return true;
251
+ }
252
+ if (segment.includes("\u200D")) {
253
+ const pictographics = segment.match(extendedPictographicRegex);
254
+ return pictographics !== null && pictographics.length >= 2;
255
+ }
256
+ return false;
257
+ }
258
+ function baseVisible(segment) {
259
+ return segment.replace(leadingNonPrintingRegex, "");
260
+ }
261
+ function isZeroWidthCluster(segment) {
262
+ return zeroWidthClusterRegex.test(segment);
263
+ }
264
+ function isHangulLeadingJamo(codePoint) {
265
+ return codePoint >= 4352 && codePoint <= 4447 || codePoint >= 43360 && codePoint <= 43388;
266
+ }
267
+ function isHangulVowelJamo(codePoint) {
268
+ return codePoint >= 4448 && codePoint <= 4519 || codePoint >= 55216 && codePoint <= 55238;
269
+ }
270
+ function isHangulTrailingJamo(codePoint) {
271
+ return codePoint >= 4520 && codePoint <= 4607 || codePoint >= 55243 && codePoint <= 55291;
272
+ }
273
+ function isHangulJamo(codePoint) {
274
+ return isHangulLeadingJamo(codePoint) || isHangulVowelJamo(codePoint) || isHangulTrailingJamo(codePoint);
275
+ }
276
+ function hangulClusterWidth(visibleSegment, eastAsianWidthOptions) {
277
+ const codePoints = [];
278
+ for (const character of visibleSegment) {
279
+ if (zeroWidthClusterRegex.test(character)) {
280
+ continue;
281
+ }
282
+ codePoints.push(character.codePointAt(0));
283
+ }
284
+ if (codePoints.length === 0) {
285
+ return void 0;
286
+ }
287
+ let width = 0;
288
+ for (let index = 0; index < codePoints.length; index++) {
289
+ const codePoint = codePoints[index];
290
+ if (!isHangulJamo(codePoint)) {
291
+ if (width === 0) {
292
+ return void 0;
293
+ }
294
+ for (let remaining = index; remaining < codePoints.length; remaining++) {
295
+ width += eastAsianWidth(codePoints[remaining], eastAsianWidthOptions);
296
+ }
297
+ return width;
298
+ }
299
+ if (isHangulLeadingJamo(codePoint) && isHangulVowelJamo(codePoints[index + 1])) {
300
+ width += 2;
301
+ index += isHangulTrailingJamo(codePoints[index + 2]) ? 2 : 1;
302
+ continue;
303
+ }
304
+ width += eastAsianWidth(codePoint, eastAsianWidthOptions);
305
+ }
306
+ return width;
307
+ }
308
+ function trailingWidth(visibleSegment, eastAsianWidthOptions) {
309
+ let extra = 0;
310
+ let first = true;
311
+ for (const character of visibleSegment) {
312
+ if (first) {
313
+ first = false;
314
+ continue;
315
+ }
316
+ if (spacingMarkRegex.test(character) || character >= "\uFF00" && character <= "\uFFEF") {
317
+ extra += eastAsianWidth(character.codePointAt(0), eastAsianWidthOptions);
318
+ }
319
+ }
320
+ return extra;
321
+ }
322
+ function stringWidth(input, options = {}) {
323
+ if (typeof input !== "string" || input.length === 0) {
324
+ return 0;
325
+ }
326
+ const {
327
+ ambiguousIsNarrow = true,
328
+ countAnsiEscapeCodes = false
329
+ } = options;
330
+ let string = input;
331
+ if (!countAnsiEscapeCodes && (string.includes("\x1B") || string.includes("\x9B"))) {
332
+ string = stripAnsi(string);
333
+ }
334
+ if (string.length === 0) {
335
+ return 0;
336
+ }
337
+ if (/^[\u0020-\u007E]*$/.test(string)) {
338
+ return string.length;
339
+ }
340
+ let width = 0;
341
+ const eastAsianWidthOptions = { ambiguousAsWide: !ambiguousIsNarrow };
342
+ for (const { segment } of segmenter.segment(string)) {
343
+ if (isZeroWidthCluster(segment)) {
344
+ continue;
345
+ }
346
+ if (rgiEmojiRegex.test(segment) || isDoubleWidthNonRgiEmojiSequence(segment)) {
347
+ width += 2;
348
+ continue;
349
+ }
350
+ const visibleSegment = baseVisible(segment);
351
+ const hangulWidth = hangulClusterWidth(visibleSegment, eastAsianWidthOptions);
352
+ if (hangulWidth !== void 0) {
353
+ width += hangulWidth;
354
+ continue;
355
+ }
356
+ const codePoint = visibleSegment.codePointAt(0);
357
+ width += eastAsianWidth(codePoint, eastAsianWidthOptions);
358
+ width += trailingWidth(visibleSegment, eastAsianWidthOptions);
359
+ }
360
+ return width;
361
+ }
362
+
363
+ // packages/cli/tui/tuiAnsi.ts
364
+ var ANSI_ESCAPE_REGEX = /\x1b\[[\x30-\x3f]*[\x20-\x2f]*[\x40-\x7e]/g;
365
+ var OSC8_HYPERLINK_REGEX = /\x1b\]8;;[^\x1b]*\x1b\\/g;
366
+ var ALL_ANSI_ESCAPE_REGEX = ansiRegex();
367
+ var FIRST_ANSI_ESCAPE_REGEX = ansiRegex({ onlyFirst: true });
368
+ function stripOsc8Hyperlinks(text) {
369
+ return text.replace(OSC8_HYPERLINK_REGEX, "");
370
+ }
371
+ function stripAnsi2(text) {
372
+ return text.replace(ANSI_ESCAPE_REGEX, "").replace(ALL_ANSI_ESCAPE_REGEX, "");
373
+ }
374
+ var SGR_SEQUENCE_REGEX = /^\x1b\[[0-9;]*m/;
375
+ var TRAILING_SGR_REGEX = /(?:\x1b\[[0-9;]*m)+$/;
376
+ function applyTerminalOutputToText(existing, chunk) {
377
+ if (!chunk) return existing;
378
+ let text = existing;
379
+ let index = 0;
380
+ while (index < chunk.length) {
381
+ if (chunk[index] === "\x1B") {
382
+ const sgr = SGR_SEQUENCE_REGEX.exec(chunk.slice(index));
383
+ if (sgr) {
384
+ text += sgr[0];
385
+ index += sgr[0].length;
386
+ continue;
387
+ }
388
+ const osc = chunk.slice(index).match(/^\x1b\]8;;[^\x07\x1b]*(?:\x07|\x1b\\)/);
389
+ if (osc) {
390
+ index += osc[0].length;
391
+ continue;
392
+ }
393
+ const csi = chunk.slice(index).match(/^\x1b\[[\x30-\x3f]*[\x20-\x2f]*[\x40-\x7e]/);
394
+ if (csi) {
395
+ index += csi[0].length;
396
+ continue;
397
+ }
398
+ index += 1;
399
+ continue;
400
+ }
401
+ const ch = chunk[index];
402
+ if (ch === "\r") {
403
+ const lastNl = text.lastIndexOf("\n");
404
+ text = lastNl === -1 ? "" : text.slice(0, lastNl + 1);
405
+ index += 1;
406
+ continue;
407
+ }
408
+ if (ch === "\n") {
409
+ text += "\n";
410
+ index += 1;
411
+ continue;
412
+ }
413
+ if (ch === "\b") {
414
+ const trailing = TRAILING_SGR_REGEX.exec(text);
415
+ const sgrTail = trailing ? trailing[0] : "";
416
+ const head = sgrTail ? text.slice(0, -sgrTail.length) : text;
417
+ if (head.length > 0 && head[head.length - 1] !== "\n") {
418
+ text = head.slice(0, -1) + sgrTail;
419
+ }
420
+ index += 1;
421
+ continue;
422
+ }
423
+ const code = ch.charCodeAt(0);
424
+ if (code < 32 && ch !== " " || code === 127) {
425
+ index += 1;
426
+ continue;
427
+ }
428
+ text += ch;
429
+ index += 1;
430
+ }
431
+ return text;
432
+ }
433
+ function resolveAmbiguousWidth(explicit, env = process.env) {
434
+ if (explicit === "wide" || explicit === "narrow") return explicit;
435
+ const raw = env.NOLO_TUI_AMBIGUOUS_WIDTH;
436
+ if (typeof raw === "string") {
437
+ const trimmed = raw.trim().toLowerCase();
438
+ if (trimmed === "wide") return "wide";
439
+ if (trimmed === "narrow") return "narrow";
440
+ }
441
+ return detectedWindowsTerminalAmbiguousWidth() ?? "narrow";
442
+ }
443
+ var wtAmbiguousWidthCache;
444
+ function detectedWindowsTerminalAmbiguousWidth() {
445
+ if (wtAmbiguousWidthCache === void 0) {
446
+ wtAmbiguousWidthCache = detectWindowsTerminalAmbiguousWidth();
447
+ }
448
+ return wtAmbiguousWidthCache;
449
+ }
450
+ function isCjkFontWideSymbolCode(code) {
451
+ return code >= 9728 && code <= 10175 && !(code >= 10088 && code <= 10101) || code >= 11008 && code <= 11263 || code >= 127744 && code <= 129791 || code >= 8986 && code <= 8987 || // ⌚ ⌛
452
+ code >= 9193 && code <= 9210;
453
+ }
454
+ function isCjkQuoteCode(code) {
455
+ return code === 8220 || code === 8221 || code === 8216 || code === 8217;
456
+ }
457
+ var UNICODE_BOX_GLYPHS = {
458
+ h: "\u2500",
459
+ v: "\u2502",
460
+ tl: "\u250C",
461
+ tm: "\u252C",
462
+ tr: "\u2510",
463
+ ml: "\u251C",
464
+ mm: "\u253C",
465
+ mr: "\u2524",
466
+ bl: "\u2514",
467
+ bm: "\u2534",
468
+ br: "\u2518"
469
+ };
470
+ var ASCII_BOX_GLYPHS = {
471
+ h: "-",
472
+ v: "|",
473
+ tl: "+",
474
+ tm: "+",
475
+ tr: "+",
476
+ ml: "+",
477
+ mm: "+",
478
+ mr: "+",
479
+ bl: "+",
480
+ bm: "+",
481
+ br: "+"
482
+ };
483
+ function resolveBoxCharset(ambiguousWidth = resolveAmbiguousWidth(), env = process.env) {
484
+ const raw = env.NOLO_TUI_BOX;
485
+ if (typeof raw === "string") {
486
+ const trimmed = raw.trim().toLowerCase();
487
+ if (trimmed === "ascii") return "ascii";
488
+ if (trimmed === "unicode") return "unicode";
489
+ }
490
+ return ambiguousWidth === "wide" ? "ascii" : "unicode";
491
+ }
492
+ function boxGlyphs(charset) {
493
+ return charset === "ascii" ? ASCII_BOX_GLYPHS : UNICODE_BOX_GLYPHS;
494
+ }
495
+ function scanWidthNeeds(plain, locale, ambiguousWidth) {
496
+ let hasNonAscii = false;
497
+ const isWideMode = ambiguousWidth === "wide";
498
+ for (let i = 0; i < plain.length; i++) {
499
+ const cc = plain.charCodeAt(i);
500
+ if (cc < 8192) {
501
+ if (cc >= 128) hasNonAscii = true;
502
+ continue;
503
+ }
504
+ hasNonAscii = true;
505
+ let code = cc;
506
+ if (cc >= 55296 && cc <= 56319 && i + 1 < plain.length) {
507
+ const lo = plain.charCodeAt(i + 1);
508
+ if (lo >= 56320 && lo <= 57343) {
509
+ code = (cc - 55296) * 1024 + (lo - 56320) + 65536;
510
+ i += 1;
511
+ }
512
+ }
513
+ const isSymbolCandidate = isWideMode && isCjkFontWideSymbolCode(code);
514
+ const isQuoteCandidate = locale === "zh" && isCjkQuoteCode(code);
515
+ if (isSymbolCandidate || isQuoteCandidate) {
516
+ return { hasNonAscii: true, hasCandidate: true };
517
+ }
518
+ }
519
+ return { hasNonAscii, hasCandidate: false };
520
+ }
521
+ var displayWidthCache = /* @__PURE__ */ new Map();
522
+ var DISPLAY_WIDTH_CACHE_MAX = 4096;
523
+ function displayWidth(str, ambiguousWidth = resolveAmbiguousWidth()) {
524
+ const plain = stripAnsi2(str);
525
+ const locale = getCliLocale();
526
+ const widthOptions = { ambiguousIsNarrow: ambiguousWidth !== "wide" };
527
+ const needs = scanWidthNeeds(plain, locale, ambiguousWidth);
528
+ if (!needs.hasNonAscii) {
529
+ return stringWidth(plain, widthOptions);
530
+ }
531
+ const key = locale + "\0" + ambiguousWidth + "\0" + plain;
532
+ const cached = displayWidthCache.get(key);
533
+ if (cached !== void 0) return cached;
534
+ const remember = (width2) => {
535
+ if (displayWidthCache.size >= DISPLAY_WIDTH_CACHE_MAX) {
536
+ const eldest = displayWidthCache.keys().next().value;
537
+ if (eldest !== void 0) displayWidthCache.delete(eldest);
538
+ }
539
+ displayWidthCache.set(key, width2);
540
+ return width2;
541
+ };
542
+ const base = stringWidth(plain, widthOptions);
543
+ if (!needs.hasCandidate) {
544
+ return remember(base);
545
+ }
546
+ let width = base;
547
+ const isWideMode = ambiguousWidth === "wide";
548
+ for (const { segment } of graphemeSegmenter.segment(plain)) {
549
+ const code = segment.codePointAt(0) ?? 0;
550
+ const isSymbol = isWideMode && isCjkFontWideSymbolCode(code);
551
+ const isQuote = locale === "zh" && isCjkQuoteCode(code);
552
+ if (isSymbol || isQuote) {
553
+ if (stringWidth(segment, widthOptions) === 1) width += 1;
554
+ }
555
+ }
556
+ return remember(width);
557
+ }
558
+ function visibleWidth(str) {
559
+ return displayWidth(stripAnsi2(str));
560
+ }
561
+ function truncateAnsi(text, maxWidth) {
562
+ if (maxWidth <= 0) return "";
563
+ text = stripOsc8Hyperlinks(text);
564
+ if (visibleWidth(text) <= maxWidth) return text;
565
+ let width = 0;
566
+ let out = "";
567
+ let i = 0;
568
+ let sawAnsi = false;
569
+ while (i < text.length) {
570
+ if (text[i] === "\x1B" && text[i + 1] === "[") {
571
+ sawAnsi = true;
572
+ let j = i + 2;
573
+ while (j < text.length) {
574
+ const code = text.charCodeAt(j);
575
+ j += 1;
576
+ if (code >= 64 && code <= 126) break;
577
+ }
578
+ out += text.slice(i, j);
579
+ i = j;
580
+ continue;
581
+ }
582
+ const codePoint = text.codePointAt(i) ?? 0;
583
+ const char = String.fromCodePoint(codePoint);
584
+ const charWidth = displayWidth(char);
585
+ if (width + charWidth > maxWidth) break;
586
+ out += char;
587
+ width += charWidth;
588
+ i += char.length;
589
+ }
590
+ return sawAnsi ? `${out}\x1B[0m` : out;
591
+ }
592
+ function fitAnsiLine(text, width, ellipsis = "\u2026") {
593
+ if (width <= 0) return "";
594
+ if (visibleWidth(text) <= width) return text;
595
+ const ellipsisWidth = displayWidth(ellipsis);
596
+ if (width < ellipsisWidth) return truncateAnsi(text, width);
597
+ if (width === ellipsisWidth) return truncateAnsi(ellipsis, width) || truncateAnsi(text, width);
598
+ return `${truncateAnsi(text, width - ellipsisWidth)}${ellipsis}`;
599
+ }
600
+ function countPhysicalLines(text, columns) {
601
+ const lines = text.split("\n");
602
+ let total = 0;
603
+ for (const line of lines) {
604
+ const width = visibleWidth(stripOsc8Hyperlinks(line));
605
+ total += Math.max(1, Math.ceil(width / columns));
606
+ }
607
+ return Math.max(total, 1);
608
+ }
609
+ function takeDisplayWidth(text, width) {
610
+ let used = 0;
611
+ let index = 0;
612
+ for (const char of text) {
613
+ const charWidth = displayWidth(char);
614
+ if (used + charWidth > width && used > 0) break;
615
+ used += charWidth;
616
+ index += char.length;
617
+ }
618
+ return { prefix: text.slice(0, index), rest: text.slice(index) };
619
+ }
620
+ function padOrTruncateToWidth(text, width) {
621
+ const textWidth = visibleWidth(text);
622
+ if (textWidth > width) {
623
+ return truncateAnsi(text, width);
624
+ }
625
+ return `${text}${" ".repeat(width - textWidth)}`;
626
+ }
627
+ var SGR_RESET_REGEX = /^\x1b\[0?m$/;
628
+ var graphemeSegmenter = new Intl.Segmenter(void 0, { granularity: "grapheme" });
629
+ function tokenizeAnsiLine(line) {
630
+ const tokens = [];
631
+ let index = 0;
632
+ while (index < line.length) {
633
+ if (line[index] === "\x1B") {
634
+ const osc = line.slice(index).match(/^\x1b\]8;;[^\x07\x1b]*(?:\x07|\x1b\\)/);
635
+ if (osc) {
636
+ tokens.push({ kind: "sgr", value: osc[0], width: 0, charIndex: index });
637
+ index += osc[0].length;
638
+ continue;
639
+ }
640
+ const sgr = SGR_SEQUENCE_REGEX.exec(line.slice(index));
641
+ if (sgr) {
642
+ tokens.push({ kind: "sgr", value: sgr[0], width: 0, charIndex: index });
643
+ index += sgr[0].length;
644
+ continue;
645
+ }
646
+ const csi = line.slice(index).match(/^\x1b\[[\x30-\x3f]*[\x20-\x2f]*[\x40-\x7e]/);
647
+ if (csi) {
648
+ index += csi[0].length;
649
+ continue;
650
+ }
651
+ const escape = FIRST_ANSI_ESCAPE_REGEX.exec(line.slice(index));
652
+ if (escape?.index === 0) {
653
+ index += escape[0].length;
654
+ continue;
655
+ }
656
+ index += 1;
657
+ continue;
658
+ }
659
+ let nextEsc = line.indexOf("\x1B", index);
660
+ if (nextEsc === -1) nextEsc = line.length;
661
+ const chunk = line.slice(index, nextEsc);
662
+ for (const item of graphemeSegmenter.segment(chunk)) {
663
+ tokens.push({
664
+ kind: "char",
665
+ value: item.segment,
666
+ width: displayWidth(item.segment),
667
+ charIndex: index + item.index
668
+ });
669
+ }
670
+ index = nextEsc;
671
+ }
672
+ return tokens;
673
+ }
674
+ function buildSourceMapping(rawLine, styledLine, prefixCharCount) {
675
+ let contentStart = 0;
676
+ const headingMatch = rawLine.match(/^(#{1,3})\s+(.+)$/);
677
+ let lineToParse = rawLine;
678
+ if (headingMatch) {
679
+ contentStart = headingMatch[1].length + 1;
680
+ while (contentStart < rawLine.length && rawLine[contentStart] === " ") contentStart++;
681
+ lineToParse = rawLine.slice(contentStart);
682
+ }
683
+ const INLINE_RE = /(\[([^\]]+)\]\(([^)\s]+)\)|`([^`]+)`|\*\*(.+?)\*\*|(?<!\*)\*([^*]+?)\*(?!\*)|~~([^~]+?)~~)/g;
684
+ const mapping = [];
685
+ let lastIdx = 0;
686
+ let match;
687
+ while ((match = INLINE_RE.exec(lineToParse)) !== null) {
688
+ const plainBefore = lineToParse.slice(lastIdx, match.index);
689
+ for (let c = 0; c < plainBefore.length; c++) {
690
+ mapping.push(contentStart + lastIdx + c);
691
+ }
692
+ const fullMatch = match[0];
693
+ if (match[2] !== void 0 && match[3] !== void 0) {
694
+ const linkText = match[2];
695
+ const linkUrl = match[3];
696
+ const textOffset = contentStart + match.index + 1;
697
+ for (let c = 0; c < linkText.length; c++) {
698
+ mapping.push(textOffset + c);
699
+ }
700
+ const parenOffset = textOffset + linkText.length;
701
+ mapping.push(parenOffset);
702
+ mapping.push(parenOffset + 1);
703
+ const urlOffset = parenOffset + 2;
704
+ for (let c = 0; c < linkUrl.length; c++) {
705
+ mapping.push(urlOffset + c);
706
+ }
707
+ mapping.push(urlOffset + linkUrl.length);
708
+ } else if (match[4] !== void 0) {
709
+ const codeText = match[4];
710
+ const codeOffset = contentStart + match.index + 1;
711
+ for (let c = 0; c < codeText.length; c++) {
712
+ mapping.push(codeOffset + c);
713
+ }
714
+ } else if (match[5] !== void 0) {
715
+ const boldText = match[5];
716
+ const boldOffset = contentStart + match.index + 2;
717
+ for (let c = 0; c < boldText.length; c++) {
718
+ mapping.push(boldOffset + c);
719
+ }
720
+ } else if (match[6] !== void 0) {
721
+ const italicText = match[6];
722
+ const italicOffset = contentStart + match.index + 1;
723
+ for (let c = 0; c < italicText.length; c++) {
724
+ mapping.push(italicOffset + c);
725
+ }
726
+ } else if (match[7] !== void 0) {
727
+ const strikeText = match[7];
728
+ const strikeOffset = contentStart + match.index + 2;
729
+ for (let c = 0; c < strikeText.length; c++) {
730
+ mapping.push(strikeOffset + c);
731
+ }
732
+ }
733
+ lastIdx = match.index + fullMatch.length;
734
+ }
735
+ const plainRest = lineToParse.slice(lastIdx);
736
+ for (let c = 0; c < plainRest.length; c++) {
737
+ mapping.push(contentStart + lastIdx + c);
738
+ }
739
+ return mapping;
740
+ }
741
+ function wrapTranscriptLineWithLayout(line, columns, hangingIndent = "", lineSourceStart = 0, prefixWidth = 0, prefixCharCount = 0, sourceMapping, rawLineLength) {
742
+ if (line === "") {
743
+ const rawLen = rawLineLength ?? 0;
744
+ return [
745
+ {
746
+ rendered: "",
747
+ sourceStart: lineSourceStart,
748
+ sourceEnd: lineSourceStart + rawLen,
749
+ prefixWidth
750
+ }
751
+ ];
752
+ }
753
+ const tokens = tokenizeAnsiLine(line);
754
+ const rows = [];
755
+ let activeStyles = [];
756
+ const applyStyleToken = (value) => {
757
+ if (SGR_RESET_REGEX.test(value)) {
758
+ activeStyles = [];
759
+ } else {
760
+ activeStyles.push(value);
761
+ }
762
+ };
763
+ let lastContentTokenIndex = -1;
764
+ for (let i = tokens.length - 1; i >= 0; i -= 1) {
765
+ if (tokens[i].kind !== "sgr") {
766
+ lastContentTokenIndex = i;
767
+ break;
768
+ }
769
+ }
770
+ let plainCharIndexAtStart = 0;
771
+ let start = 0;
772
+ while (start < tokens.length) {
773
+ if (start > lastContentTokenIndex && rows.length > 0) break;
774
+ const openingStyles = [...activeStyles];
775
+ const isContinuation = rows.length > 0;
776
+ const currentPrefixWidth = isContinuation ? visibleWidth(hangingIndent) : prefixWidth;
777
+ const indentWidth = isContinuation ? visibleWidth(hangingIndent) : 0;
778
+ const maxSegmentWidth = Math.max(1, columns - indentWidth);
779
+ let width = 0;
780
+ let end = start;
781
+ let lastBreak = -1;
782
+ while (end < tokens.length) {
783
+ const token = tokens[end];
784
+ if (token.kind === "sgr") {
785
+ end += 1;
786
+ continue;
787
+ }
788
+ if (width + token.width > maxSegmentWidth && width > 0) break;
789
+ width += token.width;
790
+ end += 1;
791
+ if ((token.value === " " || token.value === " ") && token.charIndex >= prefixCharCount) {
792
+ lastBreak = end;
793
+ }
794
+ }
795
+ let segmentEnd = end;
796
+ if (end < tokens.length && lastBreak > start) {
797
+ const overflowToken = tokens[end];
798
+ if (overflowToken.kind === "char" && overflowToken.value !== " " && overflowToken.width === 1) {
799
+ segmentEnd = lastBreak;
800
+ }
801
+ }
802
+ if (segmentEnd === start) segmentEnd = start + 1;
803
+ let segment = "";
804
+ let sawStyle = openingStyles.length > 0;
805
+ for (let i = start; i < segmentEnd; i += 1) {
806
+ const token = tokens[i];
807
+ segment += token.value;
808
+ if (token.kind === "sgr") {
809
+ sawStyle = true;
810
+ applyStyleToken(token.value);
811
+ }
812
+ }
813
+ const prefix = openingStyles.join("");
814
+ const needsReset = (sawStyle || activeStyles.length > 0) && !segment.endsWith("\x1B[0m");
815
+ const lineContent = `${prefix}${segment}${needsReset ? "\x1B[0m" : ""}`;
816
+ const rowRendered = isContinuation && hangingIndent.length > 0 ? `${hangingIndent}${lineContent}` : lineContent;
817
+ let segSourceStart = lineSourceStart;
818
+ let segSourceEnd = lineSourceStart;
819
+ let foundFirst = false;
820
+ const rowMapping = [];
821
+ let plainCharIndex = plainCharIndexAtStart;
822
+ for (let i = start; i < segmentEnd; i++) {
823
+ const tok = tokens[i];
824
+ if (tok.kind === "char" && tok.charIndex >= prefixCharCount) {
825
+ const mappedOffset = sourceMapping && sourceMapping[plainCharIndex] !== void 0 ? sourceMapping[plainCharIndex] : plainCharIndex;
826
+ if (!foundFirst) {
827
+ segSourceStart = lineSourceStart + mappedOffset;
828
+ foundFirst = true;
829
+ }
830
+ for (let c = 0; c < tok.value.length; c++) {
831
+ const idx = plainCharIndex + c;
832
+ const mapped = sourceMapping && sourceMapping[idx] !== void 0 ? sourceMapping[idx] : idx;
833
+ rowMapping.push(lineSourceStart + mapped);
834
+ }
835
+ const lastCharIdx = plainCharIndex + tok.value.length - 1;
836
+ const mappedEndOffset = sourceMapping && sourceMapping[lastCharIdx] !== void 0 ? sourceMapping[lastCharIdx] + 1 : plainCharIndex + tok.value.length;
837
+ segSourceEnd = lineSourceStart + mappedEndOffset;
838
+ plainCharIndex += tok.value.length;
839
+ }
840
+ }
841
+ start = segmentEnd;
842
+ let softWrapJoiner = "";
843
+ while (start < tokens.length) {
844
+ const token = tokens[start];
845
+ if (token.kind === "char" && token.value === " " && token.charIndex >= prefixCharCount) {
846
+ softWrapJoiner += token.value;
847
+ const mappedOffset = sourceMapping && sourceMapping[plainCharIndex] !== void 0 ? sourceMapping[plainCharIndex] + 1 : plainCharIndex + 1;
848
+ segSourceEnd = lineSourceStart + mappedOffset;
849
+ plainCharIndex += token.value.length;
850
+ start += 1;
851
+ continue;
852
+ }
853
+ break;
854
+ }
855
+ if (start >= tokens.length && rawLineLength !== void 0) {
856
+ segSourceEnd = lineSourceStart + rawLineLength;
857
+ }
858
+ plainCharIndexAtStart = plainCharIndex;
859
+ rows.push({
860
+ rendered: rowRendered,
861
+ sourceStart: segSourceStart,
862
+ sourceEnd: segSourceEnd,
863
+ prefixWidth: currentPrefixWidth,
864
+ sourceMapping: rowMapping.length > 0 ? rowMapping : void 0,
865
+ softWrapped: start < tokens.length,
866
+ softWrapJoiner
867
+ });
868
+ }
869
+ return rows.length > 0 ? rows : [
870
+ {
871
+ rendered: "",
872
+ sourceStart: lineSourceStart,
873
+ sourceEnd: lineSourceStart + (rawLineLength ?? 0),
874
+ prefixWidth
875
+ }
876
+ ];
877
+ }
878
+ function wrapTranscriptLine(line, columns, hangingIndent = "") {
879
+ return wrapTranscriptLineWithLayout(line, columns, hangingIndent).map((r) => r.rendered);
880
+ }
881
+ function buildWindowTitle(title) {
882
+ const plain = stripAnsi2(title).replace(/[\x00-\x1f\x7f]+/g, " ");
883
+ let truncated = "";
884
+ let width = 0;
885
+ const maxCols = 80;
886
+ for (const char of plain) {
887
+ const charWidth = displayWidth(char);
888
+ if (width + charWidth > maxCols) break;
889
+ truncated += char;
890
+ width += charWidth;
891
+ }
892
+ return `\x1B]0;${truncated}\x07\x1B]2;${truncated}\x07`;
893
+ }
894
+ function wrapTextToLines(text, columns) {
895
+ const result = [];
896
+ for (const logicalLine of text.split("\n")) {
897
+ if (logicalLine === "") {
898
+ result.push("");
899
+ continue;
900
+ }
901
+ let remaining = logicalLine;
902
+ while (remaining.length > 0) {
903
+ const { prefix, rest } = takeDisplayWidth(remaining, columns);
904
+ result.push(prefix);
905
+ remaining = rest;
906
+ }
907
+ }
908
+ return result;
909
+ }
34
910
 
35
911
  // packages/cli/oauth/callback-server.ts
36
912
  import { createServer } from "node:http";
@@ -575,13 +1451,14 @@ function renderDeviceCodeDisplay(args) {
575
1451
  plain: ` Code: ${userCode} `
576
1452
  });
577
1453
  const innerWidth = Math.max(...rows.map((row) => row.plain.length));
578
- const top = `\u250C${"\u2500".repeat(innerWidth)}\u2510`;
579
- const bottom = `\u2514${"\u2500".repeat(innerWidth)}\u2518`;
1454
+ const g = boxGlyphs(resolveBoxCharset());
1455
+ const top = `${g.tl}${g.h.repeat(innerWidth)}${g.tr}`;
1456
+ const bottom = `${g.bl}${g.h.repeat(innerWidth)}${g.br}`;
580
1457
  return [
581
1458
  `Authorize nolo-cli for ${provider} (device code / headless):`,
582
1459
  top,
583
1460
  ...rows.map(
584
- (row) => `\u2502${row.rendered}${" ".repeat(innerWidth - row.plain.length)}\u2502`
1461
+ (row) => `${g.v}${row.rendered}${" ".repeat(innerWidth - row.plain.length)}${g.v}`
585
1462
  ),
586
1463
  bottom,
587
1464
  ...notes
@@ -1468,6 +2345,24 @@ async function refreshCursorToken(credential, deps = {}) {
1468
2345
  var cursorRefresh = refreshCursorToken;
1469
2346
 
1470
2347
  export {
2348
+ ANSI_ESCAPE_REGEX,
2349
+ stripAnsi2 as stripAnsi,
2350
+ applyTerminalOutputToText,
2351
+ resolveBoxCharset,
2352
+ boxGlyphs,
2353
+ displayWidth,
2354
+ visibleWidth,
2355
+ truncateAnsi,
2356
+ fitAnsiLine,
2357
+ countPhysicalLines,
2358
+ takeDisplayWidth,
2359
+ padOrTruncateToWidth,
2360
+ tokenizeAnsiLine,
2361
+ buildSourceMapping,
2362
+ wrapTranscriptLineWithLayout,
2363
+ wrapTranscriptLine,
2364
+ buildWindowTitle,
2365
+ wrapTextToLines,
1471
2366
  resolveClaudeCodeVersion,
1472
2367
  getClaudeCodeUserAgent,
1473
2368
  adoptRequiredClaudeCodeVersion,