nolo-cli 0.80.0-alpha.1 → 0.80.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/README.md +2 -2
  2. package/{_executeModel-T3FPYFVF.js → _executeModel-UXVEB3GO.js} +46 -46
  3. package/{action-D22U6CTH.js → action-YVYQEAAV.js} +11 -11
  4. package/{addContentAction-XAPUTGL4.js → addContentAction-O7R66HEX.js} +9 -9
  5. package/{addDialogAgentAction-M7VLLBZM.js → addDialogAgentAction-74OA7KYP.js} +8 -8
  6. package/{agentDeleteCommand-2TYFURBN.js → agentDeleteCommand-OODHSL4K.js} +30 -28
  7. package/{agentEmailCommands-7P35ZMUA.js → agentEmailCommands-3R73WSCD.js} +64 -60
  8. package/{agentGrantCommands-R3VQEZJR.js → agentGrantCommands-M3XFO6EN.js} +2 -2
  9. package/{agentListCommands-IFUOWXP3.js → agentListCommands-TBTEXV2E.js} +38 -30
  10. package/{agentMachineCommands-G46ZZ2ZQ.js → agentMachineCommands-3GKE6ZHG.js} +30 -28
  11. package/{agentProviderCommands-65ZC2WB4.js → agentProviderCommands-GNPTL5XR.js} +87 -0
  12. package/{agentPullCommand-N7L2CT7L.js → agentPullCommand-O5MPVJ5E.js} +3 -3
  13. package/{agentRecordCommands-R74LTQEQ.js → agentRecordCommands-3664GLRE.js} +61 -57
  14. package/{agentRunCommand-UKJAECQ6.js → agentRunCommand-YNSEOBTR.js} +62 -58
  15. package/{agentRunControl-T44MESII.js → agentRunControl-XLGD3UZ5.js} +1 -1
  16. package/{agentRuntimeLocal-PUZINLWJ.js → agentRuntimeLocal-5BX6PI4X.js} +28 -26
  17. package/{agentSlice-EACXUOWW.js → agentSlice-KTVOEUDX.js} +10 -10
  18. package/{appDeleteCommands-U4NTEJYQ.js → appDeleteCommands-UNTBD55Y.js} +30 -28
  19. package/{appDeployCommands-FXF45Q7F.js → appDeployCommands-LOF4JNBZ.js} +30 -28
  20. package/{appDeployStatusCommands-KONVRM53.js → appDeployStatusCommands-MMLE6BDW.js} +30 -28
  21. package/{appGetCommands-3VOGIZ7T.js → appGetCommands-WFJAJK6B.js} +30 -28
  22. package/{appListCommands-A6ROBW7P.js → appListCommands-NC265RGX.js} +30 -28
  23. package/{authCommand-EVGFLAHO.js → authCommand-F4EFRRX6.js} +164 -24
  24. package/{authCommands-ILTBI6JV.js → authCommands-RGOGCPP6.js} +4 -5
  25. package/builtinSkillRegistry-FUAVTRVZ.js +33 -0
  26. package/{chatQueueReduxAdapter-XEIJO5WR.js → chatQueueReduxAdapter-4YQF4NHY.js} +24 -24
  27. package/{chromeCommands-VOIRNJBL.js → chromeCommands-FZYAU75D.js} +1 -1
  28. package/{chromeOpsCommands-M7DPCX2T.js → chromeOpsCommands-62P2Q2YB.js} +31 -1
  29. package/{chunk-C3FZR5EC.js → chunk-2F7RJC6L.js} +1 -1
  30. package/{chunk-MGU5ADIQ.js → chunk-35EWBHJO.js} +10 -10
  31. package/{chunk-HQUORJTM.js → chunk-3BMYXEUW.js} +1 -1
  32. package/{chunk-3QPYFHAH.js → chunk-3DII57IT.js} +1 -1
  33. package/{chunk-KIS76A2P.js → chunk-3IIEFNGY.js} +38 -4
  34. package/{chunk-MEVSATIF.js → chunk-4OZYL5FG.js} +66 -792
  35. package/{chunk-GBPZKFYK.js → chunk-53HEEOTT.js} +4 -4
  36. package/{chunk-5XTOKQLW.js → chunk-5UTFL4QJ.js} +6 -2
  37. package/chunk-5ZUL4CUO.js +10 -0
  38. package/{chunk-E6RGHPDR.js → chunk-6D6VBVEW.js} +4 -6
  39. package/{chunk-CMH2SYHX.js → chunk-6OZ36FXI.js} +2 -2
  40. package/{chunk-QA6YKM3H.js → chunk-76WEAXJB.js} +49 -10
  41. package/{chunk-BYEJ7K2Z.js → chunk-7S4YWN7P.js} +1 -1
  42. package/{chunk-SREASRV5.js → chunk-ABQYVJBJ.js} +1 -1
  43. package/chunk-ACTMNVHM.js +93 -0
  44. package/{chunk-XWNRAIUL.js → chunk-AFUORTY4.js} +6 -16
  45. package/{chunk-AFIWC5NH.js → chunk-BLJWCTRL.js} +1 -1
  46. package/chunk-BNGW5ASC.js +344 -0
  47. package/{chunk-SZLVDREM.js → chunk-BP4XNZRM.js} +3 -3
  48. package/{chunk-2KDR4CWE.js → chunk-BYMV6QZG.js} +24 -1
  49. package/{chunk-HH65VA5U.js → chunk-CPH3W5A7.js} +15 -3
  50. package/{chunk-U6LKJRJB.js → chunk-D2P6UDPQ.js} +42 -26
  51. package/{chunk-L2Y24GRM.js → chunk-DEUUPHOO.js} +16 -12
  52. package/{chunk-MYU3MJCF.js → chunk-DHDMC6FO.js} +175 -7
  53. package/{chunk-CDVGNZDA.js → chunk-EFVDQUCT.js} +11 -173
  54. package/{chunk-EXMHJN7C.js → chunk-EYAQT56M.js} +4 -3
  55. package/{chunk-733J6D44.js → chunk-FLLFOP5L.js} +6 -6
  56. package/{chunk-H7UKKEIS.js → chunk-GFD4ALW3.js} +1 -1
  57. package/{chunk-PYXL2CJL.js → chunk-GPCZ7UXG.js} +1 -1
  58. package/{chunk-K7AG465Q.js → chunk-GQBOR3G6.js} +4 -2
  59. package/{chunk-QUH3XHL5.js → chunk-H3PIH2EO.js} +7 -7
  60. package/{chunk-YFADVSZE.js → chunk-H62HCIUP.js} +6 -6
  61. package/{chunk-PZM3EENV.js → chunk-HJUYAD4A.js} +1 -1
  62. package/{chunk-ALGK6TIE.js → chunk-HMPEO3ZE.js} +3 -3
  63. package/{chunk-3JQ2NRYU.js → chunk-HVURBGF3.js} +4 -4
  64. package/{chunk-FPTQQSS6.js → chunk-IAO6JBYW.js} +26 -5
  65. package/{chunk-V3ZKNK5D.js → chunk-IIVGDG4I.js} +11 -10
  66. package/{chunk-UDQWGU7F.js → chunk-J4MOO56S.js} +1 -1
  67. package/{chunk-DSRXPQWA.js → chunk-JAXOVNM4.js} +43 -43
  68. package/{chunk-KC5FAHVS.js → chunk-JEDZAO7L.js} +1 -1
  69. package/{chunk-6XIE5ZGI.js → chunk-JPGCXHNM.js} +1 -1
  70. package/chunk-JRQFUXY7.js +1625 -0
  71. package/chunk-KQ4ONNQD.js +677 -0
  72. package/{chunk-D74EWXL4.js → chunk-LBEDNSMY.js} +419 -72
  73. package/{chunk-X7Z7U4Z6.js → chunk-LIIKM7DD.js} +15 -15
  74. package/{chunk-RXX4GDIH.js → chunk-LS2ZANRJ.js} +1 -1
  75. package/{chunk-BJIRLHJR.js → chunk-M2EJHDJP.js} +4 -0
  76. package/{chunk-EVBFYPDC.js → chunk-MC4XLIJ7.js} +6 -2
  77. package/{chunk-G3NT6BM3.js → chunk-MPV6E6WR.js} +608 -60
  78. package/{chunk-ZY4K4CZR.js → chunk-MWAO7TZZ.js} +909 -304
  79. package/{chunk-QRBAZ5PW.js → chunk-NKRYKK7T.js} +3 -3
  80. package/{chunk-ZLPA7K55.js → chunk-OA6Q2A4I.js} +29 -10
  81. package/{chunk-QC5LGHYP.js → chunk-OF7AQZUG.js} +10 -5
  82. package/{chunk-UJ63UXGE.js → chunk-OIVSQH2O.js} +1006 -801
  83. package/{chunk-AETZ7AD6.js → chunk-Q554LLSI.js} +1 -1
  84. package/chunk-Q5FJJ6XI.js +103 -0
  85. package/{chunk-AJHEFRGJ.js → chunk-Q67DOFOO.js} +214 -5
  86. package/{chunk-UZ6XXCVR.js → chunk-QDSINZM3.js} +15 -2
  87. package/{chunk-AFIKMMGC.js → chunk-QIAVMDHY.js} +1 -1
  88. package/{chunk-QCZX4FTW.js → chunk-SH43IESU.js} +173 -15
  89. package/{chunk-FSFQ3A7S.js → chunk-SNPMM7H3.js} +137 -12
  90. package/{chunk-P7FA2HMM.js → chunk-SQZDZXP5.js} +13 -15
  91. package/{chunk-SPAQ4PVV.js → chunk-SV5IJK6K.js} +1 -1
  92. package/{chunk-BJCWNHVU.js → chunk-TOP2VXOR.js} +2 -2
  93. package/{chunk-EOU7ZSTU.js → chunk-TRCMIJA7.js} +1198 -50
  94. package/{chunk-4EJ5QYB5.js → chunk-UKZDAFYT.js} +1 -1
  95. package/{chunk-PGSKWZCB.js → chunk-UZGQNTVW.js} +1 -1
  96. package/{chunk-ZZCJUXUI.js → chunk-V4MJDUSR.js} +2 -2
  97. package/{chunk-JYYZCK2Z.js → chunk-V7E4PXQD.js} +1 -1
  98. package/{chunk-OZX2IPKM.js → chunk-VLTIYV3X.js} +1 -1
  99. package/{chunk-NHRQCXIQ.js → chunk-VMFTFOWF.js} +13 -3
  100. package/{chunk-E36HZARC.js → chunk-WADCY6G6.js} +3 -3
  101. package/{chunk-5J7W2VWW.js → chunk-WV42OMV7.js} +6 -265
  102. package/{chunk-DWPNOYMB.js → chunk-YQTQQX2H.js} +1 -1
  103. package/{chunk-Q6FF2MCK.js → chunk-Z77CRGTW.js} +1 -1
  104. package/{contentThunks-3SPROFG5.js → contentThunks-2USKJBI4.js} +25 -25
  105. package/{createAgentAutomationAction-EIP2EG3O.js → createAgentAutomationAction-NTLU42X2.js} +25 -25
  106. package/{createDialogAction-RLUSTN4D.js → createDialogAction-UCYF4BUN.js} +28 -28
  107. package/{createPageAction-4Y52G7WG.js → createPageAction-QFGUGZ5M.js} +26 -26
  108. package/{dbSlice-GKGGFNOB.js → dbSlice-XVWBAGYN.js} +8 -8
  109. package/{deleteFile-LWSR674W.js → deleteFile-YG6QMJLU.js} +3 -3
  110. package/{dialogCommands-G223U5WU.js → dialogCommands-X4OB6SC6.js} +34 -30
  111. package/{dialogSlice-THY45JWM.js → dialogSlice-HQFQIQDZ.js} +24 -24
  112. package/{docCreateCommands-2P47IJDK.js → docCreateCommands-DFST4PFR.js} +31 -29
  113. package/{docDeleteCommands-N3EGDOIC.js → docDeleteCommands-V37JZOSP.js} +32 -30
  114. package/{docReadCommands-6BFV2HI7.js → docReadCommands-Z64VDPDQ.js} +31 -29
  115. package/{docStore-ZQ3ECOPY.js → docStore-GVWEDN5E.js} +9 -9
  116. package/{docUpdateCommands-ZTMPXHC5.js → docUpdateCommands-I6FB6ENK.js} +31 -29
  117. package/{fetchMessages-DRABNDPZ.js → fetchMessages-EIU7UFFK.js} +3 -4
  118. package/{getPricing-HRMSOF3E.js → getPricing-LUSEABA6.js} +4 -4
  119. package/{handleSendMessageAction-CE4M5XIE.js → handleSendMessageAction-TLB2SAU4.js} +24 -24
  120. package/index.js +101 -84
  121. package/{localDialogRead-PUQKFI73.js → localDialogRead-BTFJ4V2I.js} +2 -2
  122. package/{localRuntimeDb-P37ZTX55.js → localRuntimeDb-SYQGUF4U.js} +1 -1
  123. package/{machineCommands-4OT7KVCD.js → machineCommands-PV5XA7UF.js} +61 -57
  124. package/{machineWsRunDispatch-TR3EYESP.js → machineWsRunDispatch-W2DPC7TZ.js} +59 -55
  125. package/{memberThunks-KATHH3F4.js → memberThunks-QGFLFVCI.js} +9 -9
  126. package/{models-GS72DVJS.js → models-T3SG6MJ5.js} +2 -2
  127. package/{offlineMarxistsAgentCommand-GEH6SNNA.js → offlineMarxistsAgentCommand-HGXZV4XJ.js} +1 -1
  128. package/package.json +1 -1
  129. package/providerPresetApply-FG6NZ57W.js +214 -0
  130. package/providerRegistry-757OWH3O.js +31 -0
  131. package/{read-LC6HVYBN.js → read-COE3ZYR6.js} +5 -4
  132. package/{readDocTool-N3ERJHHF.js → readDocTool-5USN4A6V.js} +1 -1
  133. package/{readlineWorkspace-RE3P324X.js → readlineWorkspace-PHZXJKJM.js} +194 -109
  134. package/{removeDialogAgentAction-F5GPTALR.js → removeDialogAgentAction-IX3MN2ZO.js} +11 -11
  135. package/{runAgentClientLoop-NE5EHXSS.js → runAgentClientLoop-26DG6ZEY.js} +45 -45
  136. package/{runtimeDoctorCommands-CROTMULY.js → runtimeDoctorCommands-X6WDBEQX.js} +2 -2
  137. package/{setDialogExtraReferencesAction-AY4ZCF3A.js → setDialogExtraReferencesAction-X4HCPNZL.js} +9 -9
  138. package/{setPrimaryDialogAgentAction-HPMG7V3R.js → setPrimaryDialogAgentAction-4GMIQLOD.js} +11 -11
  139. package/{settingSlice-OEJA4NQO.js → settingSlice-ZQZVUPKK.js} +10 -10
  140. package/{spaceCommands-MRP5U3C3.js → spaceCommands-3QH2QFNW.js} +29 -27
  141. package/{streamAgentChatTurn-A6L6O22P.js → streamAgentChatTurn-BY7IPY5C.js} +57 -56
  142. package/{switchDialogAgentAction-HMDZTZ4I.js → switchDialogAgentAction-N52LRPA3.js} +8 -8
  143. package/{tableCommands-SUNTHAYX.js → tableCommands-O6NWHFKV.js} +1 -1
  144. package/{toolApiClient-VGYUB4P5.js → toolApiClient-QVJ6HDNN.js} +2 -2
  145. package/{tools-JS475NYO.js → tools-4Y2EYH5D.js} +41 -39
  146. package/tuiSummaryLlmCaller-T2SHYMDZ.js +127 -0
  147. package/{updateCommands-Y363MC3L.js → updateCommands-2M74UL7P.js} +2 -2
  148. package/{updateDialogTitleAction-GMZUT6RP.js → updateDialogTitleAction-2S4DCP35.js} +45 -28
  149. package/chunk-3IT2PFHL.js +0 -611
  150. package/chunk-I42VC5KR.js +0 -15
  151. package/chunk-NG4UT4K4.js +0 -79
  152. package/codingSkills-E6KSDNSJ.js +0 -48
  153. package/tuiSummaryLlmCaller-3Z24VUWM.js +0 -116
  154. package/{chunk-3RAG2NAD.js → chunk-UKWGR5SS.js} +3 -3
  155. package/{db-VQSAOWAO.js → db-WK5MDZVN.js} +1 -1
  156. package/{localRuntimeAuthority-R5UBODT3.js → localRuntimeAuthority-6IR6BBXE.js} +3 -3
@@ -0,0 +1,31 @@
1
+ import {
2
+ ALL_PROVIDER_REGISTRY,
3
+ CUSTOM_API_KEY_TEMPLATES,
4
+ SUBSCRIPTION_OAUTH_PROVIDERS,
5
+ findProviderById,
6
+ isCustomApiKeyTemplate,
7
+ isSubscriptionOAuthProvider
8
+ } from "./chunk-KQ4ONNQD.js";
9
+ import "./chunk-UZGQNTVW.js";
10
+ import "./chunk-6OZ36FXI.js";
11
+ import "./chunk-GQBOR3G6.js";
12
+ import "./chunk-OIVSQH2O.js";
13
+ import "./chunk-W7XHHYWM.js";
14
+ import "./chunk-HNMXYYJR.js";
15
+ import "./chunk-Q67DOFOO.js";
16
+ import "./chunk-WWC7I6TA.js";
17
+ import "./chunk-QSJ3HFEF.js";
18
+ import "./chunk-KUG52IAP.js";
19
+ import "./chunk-3EUW3WEO.js";
20
+ import "./chunk-4SN6J65J.js";
21
+ import "./chunk-CF7PE763.js";
22
+ import "./chunk-G3SUCT4W.js";
23
+ import "./chunk-4VNS5WPM.js";
24
+ export {
25
+ ALL_PROVIDER_REGISTRY,
26
+ CUSTOM_API_KEY_TEMPLATES,
27
+ SUBSCRIPTION_OAUTH_PROVIDERS,
28
+ findProviderById,
29
+ isCustomApiKeyTemplate,
30
+ isSubscriptionOAuthProvider
31
+ };
@@ -1,15 +1,16 @@
1
1
  import {
2
2
  readAction
3
- } from "./chunk-5J7W2VWW.js";
4
- import "./chunk-BJIRLHJR.js";
5
- import "./chunk-3RAG2NAD.js";
3
+ } from "./chunk-WV42OMV7.js";
4
+ import "./chunk-BNGW5ASC.js";
5
+ import "./chunk-M2EJHDJP.js";
6
+ import "./chunk-UKWGR5SS.js";
6
7
  import "./chunk-QOKAKDPE.js";
7
8
  import "./chunk-OW765XBU.js";
8
9
  import "./chunk-SEJ5OS6F.js";
9
10
  import "./chunk-GBRG75BQ.js";
11
+ import "./chunk-KUG52IAP.js";
10
12
  import "./chunk-3EUW3WEO.js";
11
13
  import "./chunk-U6VC4MU4.js";
12
- import "./chunk-KUG52IAP.js";
13
14
  import "./chunk-LCBAMY2M.js";
14
15
  import "./chunk-4SN6J65J.js";
15
16
  import "./chunk-CF7PE763.js";
@@ -4,7 +4,7 @@ import {
4
4
  readDocFunctionSchema,
5
5
  readPageFunc,
6
6
  readPageFunctionSchema
7
- } from "./chunk-UDQWGU7F.js";
7
+ } from "./chunk-J4MOO56S.js";
8
8
  import "./chunk-HNMXYYJR.js";
9
9
  import "./chunk-4VNS5WPM.js";
10
10
  export {
@@ -1,14 +1,14 @@
1
- import "./chunk-M3JEW6N6.js";
2
1
  import {
3
2
  defaultOpenBrowser,
4
3
  saveTokenLogin
5
- } from "./chunk-E6RGHPDR.js";
4
+ } from "./chunk-6D6VBVEW.js";
6
5
  import {
7
6
  isScheduledDialog,
8
7
  normalizeDialogRecord,
9
8
  readDialogSnapshot,
10
9
  sortDialogs
11
- } from "./chunk-FSFQ3A7S.js";
10
+ } from "./chunk-SNPMM7H3.js";
11
+ import "./chunk-M3JEW6N6.js";
12
12
  import {
13
13
  ANSI_ESCAPE_REGEX,
14
14
  COLLAPSED_PASTE_PLACEHOLDER_RE,
@@ -72,21 +72,21 @@ import {
72
72
  wrapTextToLines,
73
73
  wrapTranscriptLine,
74
74
  wrapTranscriptLineWithLayout
75
- } from "./chunk-EOU7ZSTU.js";
75
+ } from "./chunk-TRCMIJA7.js";
76
76
  import "./chunk-S7Z2HMCN.js";
77
+ import "./chunk-V7E4PXQD.js";
77
78
  import {
78
79
  listFavoriteAgentIdsAcrossServers,
79
80
  listLocalCachedAgents,
80
81
  listRemoteAgents,
81
82
  listRemoteAgentsAcrossServers,
82
83
  normalizeListedAgent
83
- } from "./chunk-L2Y24GRM.js";
84
+ } from "./chunk-DEUUPHOO.js";
84
85
  import "./chunk-ID4G2MAR.js";
85
86
  import {
86
87
  listUserRecordsFromServers,
87
88
  readLiveDbRecordAfterTombstoneMerge
88
- } from "./chunk-AFIWC5NH.js";
89
- import "./chunk-JYYZCK2Z.js";
89
+ } from "./chunk-BLJWCTRL.js";
90
90
  import {
91
91
  RUN_WAKE_CHANNEL_ENV,
92
92
  createCliLocalRuntimeAdapter,
@@ -96,31 +96,31 @@ import {
96
96
  readTimestamp,
97
97
  setCliLocale,
98
98
  t
99
- } from "./chunk-G3NT6BM3.js";
100
- import "./chunk-GBPZKFYK.js";
101
- import "./chunk-QCZX4FTW.js";
99
+ } from "./chunk-MPV6E6WR.js";
100
+ import "./chunk-53HEEOTT.js";
102
101
  import "./chunk-EADNWBAZ.js";
102
+ import "./chunk-SH43IESU.js";
103
103
  import {
104
104
  backfillRunRecordParentDialog,
105
105
  checkStaleRun,
106
106
  isRunRecordClaimed,
107
107
  listRunRecords,
108
108
  readRunRecord
109
- } from "./chunk-HH65VA5U.js";
109
+ } from "./chunk-CPH3W5A7.js";
110
110
  import "./chunk-DWUCB2A3.js";
111
111
  import {
112
112
  getReadableCliDb
113
- } from "./chunk-RXX4GDIH.js";
113
+ } from "./chunk-LS2ZANRJ.js";
114
114
  import {
115
115
  deleteDbRecord,
116
116
  queryUserRecords,
117
117
  readDbRecord
118
- } from "./chunk-QA6YKM3H.js";
119
- import "./chunk-Q6FF2MCK.js";
118
+ } from "./chunk-76WEAXJB.js";
119
+ import "./chunk-Z77CRGTW.js";
120
120
  import {
121
121
  NOLO_DEFAULT_AGENT_KEY,
122
122
  resolveCliAgentKeyInput
123
- } from "./chunk-SPAQ4PVV.js";
123
+ } from "./chunk-SV5IJK6K.js";
124
124
  import {
125
125
  createChatQueueRuntime,
126
126
  createTurnRequest,
@@ -130,18 +130,18 @@ import "./chunk-MP64VFGD.js";
130
130
  import "./chunk-ESHYE7WU.js";
131
131
  import "./chunk-JBTJAPUF.js";
132
132
  import "./chunk-LTRXGFMS.js";
133
- import "./chunk-3QPYFHAH.js";
133
+ import "./chunk-3DII57IT.js";
134
134
  import "./chunk-ATNTHIZI.js";
135
135
  import "./chunk-JEXVIMYZ.js";
136
136
  import {
137
137
  prepareTools
138
- } from "./chunk-ALGK6TIE.js";
138
+ } from "./chunk-HMPEO3ZE.js";
139
139
  import {
140
140
  buildResponseGuidelines
141
141
  } from "./chunk-EOARMOVD.js";
142
142
  import "./chunk-HS7MLR74.js";
143
- import "./chunk-MEVSATIF.js";
144
- import "./chunk-5XTOKQLW.js";
143
+ import "./chunk-4OZYL5FG.js";
144
+ import "./chunk-5UTFL4QJ.js";
145
145
  import "./chunk-NF64D32W.js";
146
146
  import "./chunk-3L2WKC3W.js";
147
147
  import {
@@ -155,79 +155,84 @@ import {
155
155
  runShowsLogTail,
156
156
  shortRunId
157
157
  } from "./chunk-NTW5GWDM.js";
158
- import "./chunk-FPTQQSS6.js";
158
+ import "./chunk-IAO6JBYW.js";
159
159
  import "./chunk-KQHGZWSV.js";
160
- import "./chunk-UDQWGU7F.js";
161
- import "./chunk-PZM3EENV.js";
162
- import "./chunk-OZX2IPKM.js";
163
- import "./chunk-4EJ5QYB5.js";
160
+ import "./chunk-J4MOO56S.js";
161
+ import "./chunk-HJUYAD4A.js";
162
+ import "./chunk-EYAQT56M.js";
163
+ import "./chunk-VIDPVFP3.js";
164
+ import "./chunk-VLTIYV3X.js";
165
+ import "./chunk-UKZDAFYT.js";
164
166
  import "./chunk-N4G4PKQ6.js";
165
167
  import "./chunk-FZGV4FGK.js";
166
168
  import "./chunk-MEYIRKDN.js";
167
169
  import "./chunk-63W5N6P3.js";
168
170
  import "./chunk-VF4K2QE6.js";
169
- import "./chunk-QRBAZ5PW.js";
170
- import "./chunk-CDVGNZDA.js";
171
- import "./chunk-P7FA2HMM.js";
171
+ import "./chunk-NKRYKK7T.js";
172
+ import "./chunk-EFVDQUCT.js";
173
+ import "./chunk-SQZDZXP5.js";
172
174
  import "./chunk-ZJ7UHBJS.js";
173
175
  import {
174
176
  extractReferenceKeysFromMessage
175
- } from "./chunk-D74EWXL4.js";
176
- import "./chunk-EVBFYPDC.js";
177
- import "./chunk-HQUORJTM.js";
177
+ } from "./chunk-LBEDNSMY.js";
178
+ import "./chunk-MC4XLIJ7.js";
179
+ import "./chunk-3BMYXEUW.js";
178
180
  import "./chunk-YYLHWIW6.js";
179
181
  import "./chunk-AGGIDPCZ.js";
180
- import "./chunk-QUH3XHL5.js";
181
- import "./chunk-BJCWNHVU.js";
182
+ import "./chunk-H3PIH2EO.js";
183
+ import "./chunk-TOP2VXOR.js";
182
184
  import "./chunk-5RGU3J7P.js";
183
185
  import "./chunk-6YTOJY35.js";
184
186
  import "./chunk-M76ECQRD.js";
185
187
  import "./chunk-YDH3FDFQ.js";
186
188
  import "./chunk-URMS4XY2.js";
187
189
  import "./chunk-TRV2MIDW.js";
188
- import "./chunk-C3FZR5EC.js";
190
+ import "./chunk-2F7RJC6L.js";
189
191
  import "./chunk-GLKOYSRU.js";
190
192
  import {
191
193
  buildSkillDiscoveryContextBlock,
192
194
  buildSkillDiscoveryContextLayer
193
195
  } from "./chunk-E4MARS3Q.js";
194
- import "./chunk-3IT2PFHL.js";
196
+ import "./chunk-JRQFUXY7.js";
195
197
  import {
196
198
  expandEnabledPacks
197
- } from "./chunk-MYU3MJCF.js";
198
- import "./chunk-AETZ7AD6.js";
199
+ } from "./chunk-DHDMC6FO.js";
200
+ import "./chunk-Q554LLSI.js";
199
201
  import "./chunk-KHCLMKZZ.js";
200
202
  import {
201
203
  buildLocalWorkspaceOpenAiTools,
202
204
  buildLocalWorkspaceToolset,
205
+ formatToolOverflowMarker,
203
206
  getProcessRegistry,
204
207
  readCommandActionGatePayload
205
- } from "./chunk-ZY4K4CZR.js";
208
+ } from "./chunk-MWAO7TZZ.js";
209
+ import "./chunk-OF7AQZUG.js";
210
+ import "./chunk-Q5FJJ6XI.js";
206
211
  import "./chunk-ZNFJWEN4.js";
207
- import "./chunk-QC5LGHYP.js";
208
- import "./chunk-KIS76A2P.js";
212
+ import "./chunk-3IIEFNGY.js";
209
213
  import "./chunk-CQ3WA2NE.js";
214
+ import "./chunk-5ZUL4CUO.js";
210
215
  import "./chunk-N7J63Q6C.js";
211
216
  import {
212
217
  buildIdentityBlock,
213
218
  buildRuntimeGuidanceBlocks,
214
219
  resolveToolGuidedSections
215
- } from "./chunk-ZLPA7K55.js";
220
+ } from "./chunk-OA6Q2A4I.js";
216
221
  import "./chunk-PUOC4YRO.js";
217
- import "./chunk-PGSKWZCB.js";
218
- import {
219
- resolvePlatformAuthToken
220
- } from "./chunk-CMH2SYHX.js";
221
- import "./chunk-V3ZKNK5D.js";
222
+ import "./chunk-IIVGDG4I.js";
222
223
  import {
223
224
  isQuotaExhaustedError
224
225
  } from "./chunk-CJCJF5XB.js";
226
+ import "./chunk-UZGQNTVW.js";
227
+ import {
228
+ resolvePlatformAuthToken
229
+ } from "./chunk-6OZ36FXI.js";
225
230
  import "./chunk-2MBTWINN.js";
226
231
  import {
227
232
  DEFAULT_CONTEXT_WINDOW,
228
233
  getModelContextWindow,
229
234
  normalizeUsage
230
- } from "./chunk-DSRXPQWA.js";
235
+ } from "./chunk-JAXOVNM4.js";
231
236
  import {
232
237
  buildCompactionMetricsFromPlan,
233
238
  buildCompactionUserContent,
@@ -237,17 +242,17 @@ import {
237
242
  formatMessagesForSummaryWithTruncation,
238
243
  planCompression,
239
244
  serializeMessageContent
240
- } from "./chunk-E36HZARC.js";
241
- import "./chunk-K7AG465Q.js";
245
+ } from "./chunk-WADCY6G6.js";
242
246
  import {
243
247
  estimateTokenCount
244
248
  } from "./chunk-PSCNXBYA.js";
249
+ import "./chunk-GQBOR3G6.js";
245
250
  import "./chunk-BYXBJQAS.js";
246
- import "./chunk-UJ63UXGE.js";
251
+ import "./chunk-OIVSQH2O.js";
247
252
  import {
248
253
  compactWhitespace
249
254
  } from "./chunk-DWLEOOGR.js";
250
- import "./chunk-3JQ2NRYU.js";
255
+ import "./chunk-HVURBGF3.js";
251
256
  import "./chunk-ONXOABJR.js";
252
257
  import "./chunk-W7XHHYWM.js";
253
258
  import {
@@ -265,11 +270,11 @@ import {
265
270
  import {
266
271
  canonicalizeToolNames
267
272
  } from "./chunk-O6OSWFZQ.js";
268
- import "./chunk-BYEJ7K2Z.js";
273
+ import "./chunk-7S4YWN7P.js";
269
274
  import {
270
275
  checkForCliUpdate,
271
276
  runSelfUpdateDetailed
272
- } from "./chunk-KC5FAHVS.js";
277
+ } from "./chunk-JEDZAO7L.js";
273
278
  import {
274
279
  getAgentSelectionAuditPath,
275
280
  getDefaultProfileConfigPath,
@@ -279,7 +284,7 @@ import {
279
284
  saveProfileAgentSelection,
280
285
  saveProfileLocale,
281
286
  saveProfileTokens
282
- } from "./chunk-2KDR4CWE.js";
287
+ } from "./chunk-BYMV6QZG.js";
283
288
  import {
284
289
  readPipeText,
285
290
  spawnProcess
@@ -293,41 +298,41 @@ import {
293
298
  import {
294
299
  DEFAULT_NOLO_SERVER_URL
295
300
  } from "./chunk-OLZBQWZU.js";
296
- import "./chunk-NG4UT4K4.js";
297
- import "./chunk-AJHEFRGJ.js";
298
- import "./chunk-SZLVDREM.js";
299
- import "./chunk-XWNRAIUL.js";
301
+ import "./chunk-ACTMNVHM.js";
302
+ import "./chunk-Q67DOFOO.js";
303
+ import "./chunk-BP4XNZRM.js";
304
+ import "./chunk-AFUORTY4.js";
300
305
  import "./chunk-Y5GCAMGP.js";
301
- import "./chunk-UZ6XXCVR.js";
306
+ import "./chunk-QDSINZM3.js";
302
307
  import "./chunk-KX6YBIHG.js";
303
- import "./chunk-ZZCJUXUI.js";
308
+ import "./chunk-V4MJDUSR.js";
304
309
  import "./chunk-UAD2WT54.js";
305
- import "./chunk-YFADVSZE.js";
306
- import "./chunk-NHRQCXIQ.js";
310
+ import "./chunk-H62HCIUP.js";
311
+ import "./chunk-VMFTFOWF.js";
307
312
  import "./chunk-WWC7I6TA.js";
308
- import "./chunk-I42VC5KR.js";
309
- import "./chunk-SREASRV5.js";
313
+ import "./chunk-ABQYVJBJ.js";
310
314
  import {
311
315
  asTrimmedLowercaseString
312
316
  } from "./chunk-QSJ3HFEF.js";
317
+ import "./chunk-WV42OMV7.js";
313
318
  import {
314
319
  BUILTIN_NOLO_AGENT_KEY,
315
320
  BUILTIN_NOLO_AGENT_MODEL,
316
321
  BUILTIN_NOLO_AGENT_NAME,
317
322
  builtinAgentCatalogEntryById
318
- } from "./chunk-5J7W2VWW.js";
323
+ } from "./chunk-BNGW5ASC.js";
319
324
  import {
320
325
  extractCustomId,
321
326
  parsePublicAgentId
322
- } from "./chunk-BJIRLHJR.js";
323
- import "./chunk-3RAG2NAD.js";
327
+ } from "./chunk-M2EJHDJP.js";
328
+ import "./chunk-UKWGR5SS.js";
324
329
  import "./chunk-QOKAKDPE.js";
325
330
  import "./chunk-OW765XBU.js";
326
331
  import "./chunk-SEJ5OS6F.js";
327
332
  import "./chunk-GBRG75BQ.js";
333
+ import "./chunk-KUG52IAP.js";
328
334
  import "./chunk-3EUW3WEO.js";
329
335
  import "./chunk-U6VC4MU4.js";
330
- import "./chunk-KUG52IAP.js";
331
336
  import "./chunk-LCBAMY2M.js";
332
337
  import "./chunk-4SN6J65J.js";
333
338
  import {
@@ -347,7 +352,7 @@ import { stdin as defaultInput, stdout as defaultOutput } from "node:process";
347
352
  import nacl from "tweetnacl";
348
353
 
349
354
  // node_modules/js-base64/base64.mjs
350
- var version = "3.9.3";
355
+ var version = "3.9.4";
351
356
  var VERSION = version;
352
357
  var _TD = typeof TextDecoder === "function" ? new TextDecoder("utf-8", { ignoreBOM: true }) : void 0;
353
358
  var _TE = typeof TextEncoder === "function" ? new TextEncoder() : void 0;
@@ -3887,7 +3892,7 @@ function mergeCatalogEntries(currentKey, platformAgents, privateAgents, favorite
3887
3892
  }
3888
3893
  var agentCatalogCache = null;
3889
3894
  var agentCatalogRefreshInFlight = null;
3890
- var agentCatalogRawLoadInFlight = null;
3895
+ var agentCatalogRawLoadInFlight = /* @__PURE__ */ new Map();
3891
3896
  var AGENT_CATALOG_FRESH_MS = 15e3;
3892
3897
  var AGENT_CATALOG_FOREGROUND_DEADLINE_MS = 2500;
3893
3898
  var AGENT_CATALOG_BACKGROUND_DEADLINE_MS = 8e3;
@@ -3909,6 +3914,9 @@ function filterHealthyServers(serverUrls) {
3909
3914
  });
3910
3915
  return healthy.length > 0 ? healthy : serverUrls;
3911
3916
  }
3917
+ function keepPrimaryServer(serverUrls, primary) {
3918
+ return serverUrls.includes(primary) ? serverUrls : [primary, ...serverUrls];
3919
+ }
3912
3920
  function recordServerFailures(failures) {
3913
3921
  const now = serverHealthNow();
3914
3922
  for (const failure of failures) {
@@ -3982,18 +3990,20 @@ async function loadAgentCatalog(args) {
3982
3990
  return cached.entries;
3983
3991
  }
3984
3992
  let rawData;
3985
- if (agentCatalogRawLoadInFlight) {
3986
- rawData = await agentCatalogRawLoadInFlight;
3993
+ const deadlineKind = args.deadlineKind ?? "foreground";
3994
+ const inFlight = agentCatalogRawLoadInFlight.get(deadlineKind);
3995
+ if (inFlight) {
3996
+ rawData = await inFlight;
3987
3997
  } else {
3988
- const promise = fetchRawCatalogData(args, env);
3989
- agentCatalogRawLoadInFlight = promise;
3998
+ const promise = fetchRawCatalogData({ ...args, deadlineKind }, env);
3999
+ agentCatalogRawLoadInFlight.set(deadlineKind, promise);
3990
4000
  try {
3991
4001
  rawData = await promise;
3992
- } catch (error) {
3993
- agentCatalogRawLoadInFlight = null;
3994
- throw error;
4002
+ } finally {
4003
+ if (agentCatalogRawLoadInFlight.get(deadlineKind) === promise) {
4004
+ agentCatalogRawLoadInFlight.delete(deadlineKind);
4005
+ }
3995
4006
  }
3996
- agentCatalogRawLoadInFlight = null;
3997
4007
  }
3998
4008
  const entries = mergeCatalogEntries(
3999
4009
  args.currentKey,
@@ -4028,7 +4038,7 @@ function prefetchAgentCatalog(args) {
4028
4038
  void (async () => {
4029
4039
  await prefillCatalogFromLocalDb({ env: args.env, getDb: args.getDb }).catch(() => {
4030
4040
  });
4031
- void loadAgentCatalog({ ...args, currentKey: "" }).catch(() => {
4041
+ void loadAgentCatalog({ ...args, currentKey: "", deadlineKind: "background" }).catch(() => {
4032
4042
  });
4033
4043
  })();
4034
4044
  }
@@ -4043,7 +4053,7 @@ async function fetchRawCatalogData(args, env) {
4043
4053
  }
4044
4054
  const serverUrl = resolveServerUrl(env);
4045
4055
  const allServerUrls = resolveServerCandidates([], env, serverUrl);
4046
- const serverUrls = (args.deadlineKind ?? "foreground") === "foreground" ? filterHealthyServers(allServerUrls) : allServerUrls;
4056
+ const serverUrls = (args.deadlineKind ?? "foreground") === "foreground" ? keepPrimaryServer(filterHealthyServers(allServerUrls), serverUrl) : allServerUrls;
4047
4057
  const fetchStartedAt = performance.now();
4048
4058
  let listedAgents = [];
4049
4059
  const favoritesPromise = listFavoriteAgentIdsAcrossServers({
@@ -4072,9 +4082,28 @@ async function fetchRawCatalogData(args, env) {
4072
4082
  recordServerFailures(remoteResult.failures);
4073
4083
  } catch {
4074
4084
  try {
4075
- const db = args.getDb ? await args.getDb() : await getReadableCliDb({ write: () => {
4076
- } });
4077
- listedAgents = await listLocalCachedAgents({ db, userId });
4085
+ const localBudgetMs = Math.max(
4086
+ 500,
4087
+ deadlineMs - (performance.now() - fetchStartedAt)
4088
+ );
4089
+ let localTimer;
4090
+ try {
4091
+ listedAgents = await Promise.race([
4092
+ (async () => {
4093
+ const db = args.getDb ? await args.getDb() : await getReadableCliDb({ write: () => {
4094
+ } });
4095
+ return listLocalCachedAgents({ db, userId });
4096
+ })(),
4097
+ new Promise((_, reject) => {
4098
+ localTimer = setTimeout(
4099
+ () => reject(new Error("local catalog deadline exceeded")),
4100
+ localBudgetMs
4101
+ );
4102
+ })
4103
+ ]);
4104
+ } finally {
4105
+ if (localTimer) clearTimeout(localTimer);
4106
+ }
4078
4107
  } catch {
4079
4108
  try {
4080
4109
  listedAgents = await listRemoteAgents({
@@ -6751,11 +6780,41 @@ function createTurnInjectionInbox() {
6751
6780
  function formatProcessTerminalWakeMessage(notices) {
6752
6781
  return [
6753
6782
  `<background_task_completion count="${notices.length}">`,
6754
- ...notices.map(formatProcessTerminalNoticeLine),
6755
- `\u9700\u8981\u8F93\u51FA/\u8BE6\u60C5\u65F6: taskLogs(taskId) \u6216 tasks`,
6783
+ ...notices.flatMap((notice) => [
6784
+ formatProcessTerminalNoticeLine(notice),
6785
+ ...notice.resultCapsule ? formatProcessResultCapsuleLines(notice.resultCapsule) : []
6786
+ ]),
6756
6787
  `</background_task_completion>`
6757
6788
  ].join("\n");
6758
6789
  }
6790
+ function formatProcessResultCapsuleLines(capsule) {
6791
+ const meta = [];
6792
+ if (capsule.durationMs !== void 0) meta.push(`duration=${capsule.durationMs}ms`);
6793
+ meta.push(capsule.truncated ? "tail-only" : "full");
6794
+ const stream = (name, value) => [
6795
+ `--- ${name} ---`,
6796
+ ...value.trim() ? value.replace(/\n+$/, "").split("\n") : ["(empty)"]
6797
+ ];
6798
+ const omittedChars = capsule.spill ? Math.max(0, capsule.spill.totalChars - capsule.stdout.length - capsule.stderr.length) : 0;
6799
+ return [
6800
+ `result capsule (${meta.join(", ")}):`,
6801
+ ...capsule.captureError ? [`capture error: ${capsule.captureError}`] : [],
6802
+ ...stream("stdout", capsule.stdout),
6803
+ ...stream("stderr", capsule.stderr),
6804
+ // Retrieval pointer reuses the tool-overflow convention: the model learns
6805
+ // one marker for "the tail above is not the whole story, full text lives
6806
+ // here", whether the truncation happened in a foreground tool result or in
6807
+ // a detached task capsule.
6808
+ ...capsule.spill ? [
6809
+ formatToolOverflowMarker({
6810
+ spillRef: capsule.spill.displayPath,
6811
+ totalChars: capsule.spill.totalChars,
6812
+ totalLines: capsule.spill.totalLines,
6813
+ omittedChars
6814
+ }).trim()
6815
+ ] : []
6816
+ ];
6817
+ }
6759
6818
  function formatProcessTerminalNoticeLine(notice) {
6760
6819
  const informative = notice.label && notice.label.trim() !== "" && notice.label !== notice.command;
6761
6820
  const label = informative ? ` (label: "${notice.label.replace(/(["\\])/g, "\\$1")}")` : "";
@@ -6776,7 +6835,20 @@ function buildProcessTaskCompletedTurnEvent(notice) {
6776
6835
  displayText: formatProcessTerminalNoticeLine(notice)
6777
6836
  };
6778
6837
  }
6838
+ var PENDING_NOTICE_PREFIX = "process-notice-v1:";
6839
+ function serializePendingProcessNotice(notice) {
6840
+ return notice.resultCapsule ? `${PENDING_NOTICE_PREFIX}${JSON.stringify(notice)}` : formatProcessTerminalNoticeLine(notice);
6841
+ }
6779
6842
  function parsePendingProcessNoticeLine(line) {
6843
+ if (line.startsWith(PENDING_NOTICE_PREFIX)) {
6844
+ try {
6845
+ const parsed = JSON.parse(line.slice(PENDING_NOTICE_PREFIX.length));
6846
+ if (parsed && typeof parsed.taskId === "string" && parsed.resultCapsule) {
6847
+ return parsed;
6848
+ }
6849
+ } catch {
6850
+ }
6851
+ }
6780
6852
  const taskMatch = line.match(
6781
6853
  /^\[Background task ([^ \]]+?)(?:\s+\(label: "((?:[^"\\]|\\.)*)"\))? finished: status=(\w+)(?: exitCode=(-?\d+))?\]$/
6782
6854
  );
@@ -6836,6 +6908,9 @@ function decideProcessTerminalResume(input) {
6836
6908
  if (!input.owner || !dialogId) {
6837
6909
  return { kind: "notice-only", reason: "unowned", taskId };
6838
6910
  }
6911
+ if (!input.notice.promoted) {
6912
+ return { kind: "notice-only", reason: "not-promoted", taskId };
6913
+ }
6839
6914
  if (input.state.claimedTaskIds.has(taskId)) {
6840
6915
  return { kind: "notice-only", reason: "duplicate", taskId };
6841
6916
  }
@@ -6862,8 +6937,10 @@ function createProcessTerminalAutoResumer(deps) {
6862
6937
  state,
6863
6938
  noteUserTurn: () => state.noteUserTurn(),
6864
6939
  decide: (notice) => {
6940
+ const promoted = notice.promoted ?? deps.isPromoted?.(notice.taskId) ?? false;
6941
+ const effectiveNotice = notice.promoted === promoted ? notice : { ...notice, promoted };
6865
6942
  const decision = decideProcessTerminalResume({
6866
- notice,
6943
+ notice: effectiveNotice,
6867
6944
  owner: deps.readOwner(notice.taskId),
6868
6945
  currentDialogId: deps.getCurrentDialogId(),
6869
6946
  turnActive: deps.isTurnActive(),
@@ -10657,7 +10734,7 @@ async function runTuiWorkspace(options) {
10657
10734
  });
10658
10735
  const pushPendingProcessNotice = (notice) => {
10659
10736
  if (sessionEnded) return;
10660
- const line = formatProcessTerminalNoticeLine(notice);
10737
+ const line = serializePendingProcessNotice(notice);
10661
10738
  state = {
10662
10739
  ...state,
10663
10740
  pendingProcessNotices: [...state.pendingProcessNotices ?? [], line]
@@ -11204,6 +11281,7 @@ async function runTuiWorkspace(options) {
11204
11281
  };
11205
11282
  const processTerminalResumer = createProcessTerminalAutoResumer({
11206
11283
  readOwner: (taskId) => getProcessRegistry().getByTaskId(taskId)?.owner ?? null,
11284
+ isPromoted: (taskId) => getProcessRegistry().getByTaskId(taskId)?.promoted ?? false,
11207
11285
  getCurrentDialogId: () => state.dialogId ?? null,
11208
11286
  isTurnActive: () => busy || fixedInput.isPaused(),
11209
11287
  canDeliver: () => !sessionEnded && !done && runWakeHandler !== null
@@ -11346,8 +11424,36 @@ ${err.message}` : ""}`
11346
11424
  paintFrame(buffer);
11347
11425
  }, 60);
11348
11426
  };
11427
+ const hasNonEmptySelection = () => selectionState.anchor !== null && selectionState.head !== null && !areSelectionPointsEqual(selectionState.anchor, selectionState.head);
11428
+ const copySelectionToClipboard = async (feedbackKey) => {
11429
+ const tty = output;
11430
+ const columns = tty.columns ?? 80;
11431
+ const contentWidth = Math.max(1, columns - 1);
11432
+ const textToCopy = extractSelectedText(
11433
+ history,
11434
+ selectionState.anchor,
11435
+ selectionState.head,
11436
+ contentWidth
11437
+ );
11438
+ clearSelection();
11439
+ if (textToCopy.length > 0) {
11440
+ try {
11441
+ await writeClipboard2(textToCopy);
11442
+ emitCommandOutput(t(feedbackKey));
11443
+ } catch (error) {
11444
+ emitCommandOutput(
11445
+ `[nolo] ${t("copyFailed")}: ${toErrorMessage(error)}`
11446
+ );
11447
+ }
11448
+ }
11449
+ paintFrame(buffer);
11450
+ };
11349
11451
  const handleCtrlCKey = async (busyLock) => {
11350
11452
  if (busyLock && activeTurnAbort) {
11453
+ if (hasNonEmptySelection()) {
11454
+ await copySelectionToClipboard("copiedSelectionBusy");
11455
+ return;
11456
+ }
11351
11457
  const stopBinding = chatQueueBinding;
11352
11458
  if (stopBinding && stopBinding.queueLength() > 0) {
11353
11459
  stopBinding.preemptForStop();
@@ -11357,29 +11463,8 @@ ${err.message}` : ""}`
11357
11463
  return;
11358
11464
  }
11359
11465
  const now = Date.now();
11360
- const hasSelection = selectionState.anchor !== null && selectionState.head !== null && !areSelectionPointsEqual(selectionState.anchor, selectionState.head);
11361
- if (hasSelection) {
11362
- const tty = output;
11363
- const columns = tty.columns ?? 80;
11364
- const contentWidth = Math.max(1, columns - 1);
11365
- const textToCopy = extractSelectedText(
11366
- history,
11367
- selectionState.anchor,
11368
- selectionState.head,
11369
- contentWidth
11370
- );
11371
- clearSelection();
11372
- if (textToCopy.length > 0) {
11373
- try {
11374
- await writeClipboard2(textToCopy);
11375
- emitCommandOutput(t("copiedSelection"));
11376
- } catch (error) {
11377
- emitCommandOutput(
11378
- `[nolo] ${t("copyFailed")}: ${toErrorMessage(error)}`
11379
- );
11380
- }
11381
- }
11382
- paintFrame(buffer);
11466
+ if (hasNonEmptySelection()) {
11467
+ await copySelectionToClipboard("copiedSelection");
11383
11468
  return;
11384
11469
  }
11385
11470
  if (selectionState.anchor) {