nolo-cli 0.191.0-alpha.3 → 0.191.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 (149) hide show
  1. package/{_executeModel-WQ2D4ZRH.js → _executeModel-4HQQXPN4.js} +44 -46
  2. package/{action-BHWB4MOK.js → action-HNG2JKWK.js} +3 -3
  3. package/{addContentAction-BY375D35.js → addContentAction-FEN3H2EE.js} +6 -6
  4. package/{addDialogAgentAction-HOZYOCWC.js → addDialogAgentAction-DDA6S3WS.js} +5 -5
  5. package/{agentDeleteCommand-TTCVC74A.js → agentDeleteCommand-HZFWSKED.js} +57 -59
  6. package/{agentEmailCommands-PTG35KER.js → agentEmailCommands-HRYMVHC7.js} +59 -61
  7. package/{agentListCommands-MAG736RU.js → agentListCommands-HE2CCZEW.js} +33 -31
  8. package/{agentMachineCommands-ATOZK3R5.js → agentMachineCommands-ISSULCRR.js} +23 -23
  9. package/{agentProviderCommands-XSZUCNIR.js → agentProviderCommands-4EAYN3ZY.js} +3 -3
  10. package/{agentRecordCommands-KGRPIJN5.js → agentRecordCommands-WGAMWQLA.js} +57 -59
  11. package/{agentRunCommand-75VVJTNU.js → agentRunCommand-7EQ64FIB.js} +59 -61
  12. package/{agentRunControl-6HHESKDB.js → agentRunControl-EJPBPVLU.js} +5 -5
  13. package/{agentRuntimeLocal-NAAYNHCW.js → agentRuntimeLocal-ONSIOOQB.js} +20 -20
  14. package/{agentSlice-UJPIKKKP.js → agentSlice-CHWNVAS5.js} +6 -6
  15. package/{appDeleteCommands-VDHCDVBF.js → appDeleteCommands-RNAF4V5C.js} +25 -25
  16. package/{appDeployCommands-V6UTKVXR.js → appDeployCommands-LTIZ4QH7.js} +25 -25
  17. package/{appDeployStatusCommands-4UIFSEPC.js → appDeployStatusCommands-OJJR4LDK.js} +25 -25
  18. package/{appGetCommands-XKDXLC3C.js → appGetCommands-UJZF6U4V.js} +25 -25
  19. package/{appListCommands-BELRVX2Y.js → appListCommands-M5C5BIDY.js} +25 -25
  20. package/{authCommand-RV5MQDWN.js → authCommand-RMUBRAXF.js} +11 -11
  21. package/{builtinSkillRegistry-7MBUY5EY.js → builtinSkillRegistry-XDBPVNY6.js} +3 -5
  22. package/{chromeOpsCommands-C46BXHEE.js → chromeOpsCommands-P4PFQDT7.js} +19 -4
  23. package/{chunk-7UODCAWW.js → chunk-32GANJHJ.js} +1 -1
  24. package/{chunk-G6OOUQWJ.js → chunk-4KB6WQUL.js} +2 -0
  25. package/{chunk-LHOR5MC2.js → chunk-4KYV2TAI.js} +164 -323
  26. package/{chunk-5EFNSNAV.js → chunk-6CFXWUYE.js} +7 -7
  27. package/{chunk-6XIE5ZGI.js → chunk-6HIGYUBQ.js} +1 -1
  28. package/{chunk-LBXUNNDS.js → chunk-6K2AKJAD.js} +1 -1
  29. package/{chunk-U5ZHUOLT.js → chunk-6OBTQSJ2.js} +2 -2
  30. package/{chunk-XPL63OIC.js → chunk-7SUYSFPG.js} +140 -66
  31. package/{chunk-53RSTB7T.js → chunk-7TMVGMM3.js} +26 -31
  32. package/{chunk-ZBCBFOWC.js → chunk-A2ZMIRLN.js} +2 -2
  33. package/{chunk-MJWUBTK7.js → chunk-AOYR4XOA.js} +1 -1
  34. package/{chunk-IIX6VWLW.js → chunk-AV6IE6NM.js} +224 -38
  35. package/{chunk-WFUIXNKC.js → chunk-BMXR7CFX.js} +3 -3
  36. package/{chunk-JIFYXQRD.js → chunk-BTYQAODF.js} +26 -8
  37. package/{chunk-VHGD6FHV.js → chunk-BZKBX5BO.js} +28 -5
  38. package/{chunk-Q6RMLYSA.js → chunk-CMLBKYEI.js} +4 -2
  39. package/chunk-CMTTXP5Y.js +291 -0
  40. package/{chunk-OHRDHS4N.js → chunk-CVCRAO6Q.js} +9 -4
  41. package/{chunk-SM56M7N7.js → chunk-DBRXPVWY.js} +39 -5
  42. package/{chunk-2KBNF477.js → chunk-DSVR6ZAV.js} +30 -21
  43. package/{chunk-ADTJJVDJ.js → chunk-DXDG4XLD.js} +2838 -2255
  44. package/{chunk-R5LJWMZE.js → chunk-EMXVOJDB.js} +3 -3
  45. package/{chunk-KHCLMKZZ.js → chunk-EY7V7REW.js} +280 -6
  46. package/{chunk-KGP7UTNN.js → chunk-FNXSQ7A3.js} +15 -15
  47. package/{chunk-BTBT2566.js → chunk-FSEGCTZQ.js} +1 -1
  48. package/{chunk-CNMQATUF.js → chunk-GL7W7TTR.js} +2 -2
  49. package/{chunk-5KTQVMCX.js → chunk-GOO6G4PY.js} +85 -0
  50. package/{chunk-HTLIKE5U.js → chunk-GVMF62PR.js} +2 -2
  51. package/{chunk-UZHYRBUB.js → chunk-H4CFODT7.js} +137 -61
  52. package/{chunk-R4BMKAR5.js → chunk-HAB2UDLT.js} +1 -1
  53. package/{chunk-3NPXGNSK.js → chunk-HVXL4VOO.js} +348 -87
  54. package/{chunk-32ZKZET7.js → chunk-HWZT5DKX.js} +1 -1
  55. package/{chunk-GYVLAHA4.js → chunk-IY7DGZSY.js} +10 -4
  56. package/{chunk-FEDJHD5X.js → chunk-J5Z2SSIY.js} +6 -6
  57. package/{chunk-UVWBGWBO.js → chunk-JA6WCCDO.js} +3 -3
  58. package/{chunk-YE6A72XL.js → chunk-JI5MQU5B.js} +35 -31
  59. package/{chunk-TFSMPRAY.js → chunk-JLOCKFSI.js} +4 -4
  60. package/{chunk-UBLITLAZ.js → chunk-K2GL335R.js} +13 -3
  61. package/{chunk-DS5DAOIY.js → chunk-KYQXW7DL.js} +3 -3
  62. package/{chunk-5HAPEKNH.js → chunk-LFJRTOUV.js} +158 -43
  63. package/{chunk-N7E3LQ4A.js → chunk-LGW6A7GK.js} +1 -1
  64. package/{chunk-UNOILAZP.js → chunk-M6AGLVV4.js} +74 -2
  65. package/{chunk-BA2FHPS4.js → chunk-MOCY5LJI.js} +1 -1
  66. package/{chunk-INFHX73M.js → chunk-MR6L6U46.js} +55 -3
  67. package/{chunk-CTPFBJAF.js → chunk-N7IBYQEC.js} +182 -91
  68. package/{chunk-QU3TLYBR.js → chunk-NHI3JZP4.js} +32 -8
  69. package/{chunk-B2N5GZBU.js → chunk-OHYCQKPW.js} +6 -6
  70. package/{chunk-WAZ6BTSC.js → chunk-OOERQPG5.js} +1 -1
  71. package/{chunk-EHB4CKUI.js → chunk-OTKNEZE3.js} +9 -9
  72. package/chunk-OVBUUU7L.js +2648 -0
  73. package/{chunk-PVD7CRYV.js → chunk-P7SUBTGZ.js} +3 -3
  74. package/{chunk-RJ3EYB5G.js → chunk-PRIROPK4.js} +1 -1
  75. package/chunk-PRJ473FK.js +63 -0
  76. package/{chunk-K6TZSON4.js → chunk-PXERKNSJ.js} +1 -1
  77. package/{chunk-B6EZB6DW.js → chunk-QAYCF4CH.js} +2 -2
  78. package/{chunk-5DPVRMSY.js → chunk-RBJASUX4.js} +1 -1
  79. package/{chunk-NVOYW6H4.js → chunk-RDKNGJ5M.js} +12 -8
  80. package/{chunk-GTP6VNWH.js → chunk-RQ22OZD7.js} +3 -3
  81. package/{chunk-2E5M3JVS.js → chunk-RWGIVUH3.js} +11 -5
  82. package/{chunk-DFF6B7P7.js → chunk-RXUKDHS5.js} +1 -1
  83. package/{chunk-JLR5NWP2.js → chunk-RXX262QX.js} +17 -3
  84. package/{chunk-GC64WGMD.js → chunk-SM3NSZJV.js} +16 -5
  85. package/{chunk-A5BLRE3G.js → chunk-T3U2KQF4.js} +2 -2
  86. package/{chunk-HLAL63BZ.js → chunk-T43B7LB2.js} +1 -1
  87. package/{chunk-LCSAJ5TJ.js → chunk-UDKNC3CV.js} +3 -3
  88. package/{chunk-VE3FEZIT.js → chunk-WKGOIXFV.js} +5 -5
  89. package/{chunk-4YMD7B4Y.js → chunk-WPOKOKZA.js} +2 -2
  90. package/{chunk-YIRADHSY.js → chunk-WYKMOZTW.js} +1 -1
  91. package/{chunk-WRCZXJ4N.js → chunk-X4F26D5K.js} +2 -0
  92. package/{chunk-4MYCKDSI.js → chunk-XUOF4MA7.js} +2 -2
  93. package/{chunk-PD2YRFAI.js → chunk-Y5ZEHS3F.js} +1 -1
  94. package/{chunk-4CEAZRZ4.js → chunk-YU2DGFKG.js} +1 -1
  95. package/{chunk-TVGX5QIN.js → chunk-YUA6OAH5.js} +2 -2
  96. package/{chunk-53PBXLID.js → chunk-Z3MQYKRN.js} +17 -17
  97. package/{chunk-I3HWJODB.js → chunk-ZHOKF4MY.js} +31 -26
  98. package/{chunk-2XUOREKD.js → chunk-ZI5MFQ42.js} +5 -4
  99. package/{chunk-DYQXB46J.js → chunk-ZSCIGIJS.js} +1 -1
  100. package/{commandRegistry-4JHVRMW7.js → commandRegistry-O2657YC7.js} +86 -66
  101. package/{contentThunks-HQBAAXNW.js → contentThunks-THWDEBJU.js} +17 -17
  102. package/{cooldownCommands-4XKJFEBW.js → cooldownCommands-V4EEBD55.js} +3 -3
  103. package/{createAgentAutomationAction-KELPOVMP.js → createAgentAutomationAction-2ZZTFGWG.js} +17 -17
  104. package/{createDialogAction-Z3SASMTM.js → createDialogAction-FCRKPKIT.js} +20 -22
  105. package/{createPageAction-PNHOIG44.js → createPageAction-EC25JTKW.js} +18 -19
  106. package/{dbSlice-QAUXABCC.js → dbSlice-JK7LWBDO.js} +5 -5
  107. package/{deleteFile-R5OBP7OM.js → deleteFile-CE24BROO.js} +3 -3
  108. package/{dialogCommands-4BGV6DPD.js → dialogCommands-QH7BJ3DJ.js} +26 -26
  109. package/{dialogSlice-QHV6I3OQ.js → dialogSlice-Z5E7POEN.js} +16 -16
  110. package/{docCreateCommands-3CW75UF2.js → docCreateCommands-KP42NGIF.js} +26 -27
  111. package/{docDeleteCommands-NL4ZYMN5.js → docDeleteCommands-7YOCX5GC.js} +27 -28
  112. package/{docReadCommands-HXCNVDPQ.js → docReadCommands-EJEIAOKQ.js} +26 -27
  113. package/{docStore-LVMUSECS.js → docStore-6MHLMMWO.js} +6 -6
  114. package/{docUpdateCommands-RMVBAMDE.js → docUpdateCommands-ACJLISGA.js} +26 -27
  115. package/{getPricing-E2PLNWCR.js → getPricing-3PQY3TGI.js} +3 -3
  116. package/{handleSendMessageAction-7TONIXHY.js → handleSendMessageAction-MTOPN4D3.js} +86 -42
  117. package/index.js +7 -7
  118. package/{lib-4YTWAGY7.js → lib-5KKIBFIT.js} +439 -272
  119. package/{localRuntimeAdapter-HRAB7P5E.js → localRuntimeAdapter-4USQ3EP7.js} +55 -57
  120. package/{machineCommands-OTXFRTDA.js → machineCommands-CJMSDSOO.js} +56 -58
  121. package/{machineWsRunDispatch-KWVWOHHG.js → machineWsRunDispatch-YIPO76QH.js} +56 -58
  122. package/{memberThunks-ZAE52VIP.js → memberThunks-WT2KVRP4.js} +158 -55
  123. package/{models-UUNO6DOL.js → models-PJBE6JDV.js} +2 -2
  124. package/package.json +1 -1
  125. package/{providerPresetApply-JGNMO2KX.js → providerPresetApply-ISA35424.js} +5 -5
  126. package/{providerRegistry-33J3ZYFJ.js → providerRegistry-QIQCHVNP.js} +5 -5
  127. package/{read-D6NEWSGG.js → read-ILTT75DW.js} +3 -3
  128. package/{readDocTool-NTAXO7SX.js → readDocTool-374CFJYO.js} +1 -1
  129. package/{readlineWorkspace-CEX5TXGM.js → readlineWorkspace-RORGDWZN.js} +291 -99
  130. package/{removeDialogAgentAction-YEPO5AYI.js → removeDialogAgentAction-BDLO7UC2.js} +7 -7
  131. package/{runAgentClientLoop-DCV4BD2W.js → runAgentClientLoop-CDCBSUWW.js} +41 -43
  132. package/{runtimeDoctorCommands-NYBOTA6D.js → runtimeDoctorCommands-AM2V5YVH.js} +5 -5
  133. package/{secretCommands-N6CMCJDZ.js → secretCommands-G5XYCXZB.js} +308 -1
  134. package/{setDialogExtraReferencesAction-EH5GWDAJ.js → setDialogExtraReferencesAction-GBIT7WAG.js} +6 -6
  135. package/{setPrimaryDialogAgentAction-PNWRK6IY.js → setPrimaryDialogAgentAction-PGBTR247.js} +7 -7
  136. package/{settingThunks-7VCWB6P7.js → settingThunks-XQJZVA4D.js} +38 -7
  137. package/{skillDiscovery-F3TMVQOJ.js → skillDiscovery-DO5372J5.js} +2 -3
  138. package/{spaceCommands-ZUI4CTSO.js → spaceCommands-BTSANKDH.js} +23 -23
  139. package/{streamAgentChatTurn-NKFKMFQ2.js → streamAgentChatTurn-VUF3EUMS.js} +66 -59
  140. package/{switchDialogAgentAction-23BFWJMV.js → switchDialogAgentAction-O7WTPLKG.js} +5 -5
  141. package/{tools-626VXEY7.js → tools-GAAYAIEW.js} +35 -37
  142. package/{tuiSummaryLlmCaller-FSOADMXK.js → tuiSummaryLlmCaller-MKOLOSH3.js} +11 -11
  143. package/{updateCommands-KE6LP3QX.js → updateCommands-W7TXEV7N.js} +3 -3
  144. package/{updateDialogTitleAction-RNNQAMXG.js → updateDialogTitleAction-LE2DBQDS.js} +17 -17
  145. package/{windowsSelfUpdate-26TSFXEZ.js → windowsSelfUpdate-575VQ6QO.js} +2 -2
  146. package/chunk-7KWPNGVJ.js +0 -150
  147. package/chunk-AETZ7AD6.js +0 -274
  148. package/chunk-EUGTFFO6.js +0 -42
  149. package/chunk-VYNMQ6HW.js +0 -138
@@ -9,7 +9,7 @@ import {
9
9
  resolveRawAgentInput,
10
10
  resolveServerUrl,
11
11
  writeUsage
12
- } from "./chunk-U5ZHUOLT.js";
12
+ } from "./chunk-6OBTQSJ2.js";
13
13
  import {
14
14
  parsePositiveFiniteNumberOrFallback
15
15
  } from "./chunk-Y5GCAMGP.js";
@@ -19,7 +19,7 @@ import {
19
19
  import {
20
20
  readDbRecord,
21
21
  resolveAgentRecordFromHybridStore
22
- } from "./chunk-GYVLAHA4.js";
22
+ } from "./chunk-IY7DGZSY.js";
23
23
  import {
24
24
  INSTABOX_RUN_CONFIG_ENV,
25
25
  createCliLocalRuntimeAdapter,
@@ -38,12 +38,12 @@ import {
38
38
  resolveFileWriteGateEnabled,
39
39
  resolveLocalUserId,
40
40
  validateInstaboxWorkspaceSelection
41
- } from "./chunk-XPL63OIC.js";
41
+ } from "./chunk-7SUYSFPG.js";
42
42
  import {
43
43
  clearCredentialAvailability,
44
44
  readEffectiveCredentialEntry,
45
45
  recordCredentialProbe
46
- } from "./chunk-R4BMKAR5.js";
46
+ } from "./chunk-HAB2UDLT.js";
47
47
  import {
48
48
  isLocalCliAgentKey
49
49
  } from "./chunk-NBTY7YJF.js";
@@ -72,14 +72,14 @@ import {
72
72
  } from "./chunk-BMQ2MJUK.js";
73
73
  import {
74
74
  resolveCliLocalRuntimeKeyCapability
75
- } from "./chunk-LHOR5MC2.js";
75
+ } from "./chunk-4KYV2TAI.js";
76
76
  import {
77
77
  isTransientFetchError
78
78
  } from "./chunk-KFHREHUQ.js";
79
79
  import {
80
80
  parseUiCard,
81
81
  uiCardFallback
82
- } from "./chunk-3NPXGNSK.js";
82
+ } from "./chunk-HVXL4VOO.js";
83
83
  import {
84
84
  isGatewayHttpStatus
85
85
  } from "./chunk-NF64D32W.js";
@@ -88,7 +88,7 @@ import {
88
88
  chooseMemoryOwners,
89
89
  loadMemoryCandidatesFromDb,
90
90
  resolveAgentMemoryPolicy
91
- } from "./chunk-2E5M3JVS.js";
91
+ } from "./chunk-RWGIVUH3.js";
92
92
  import {
93
93
  API_REPORTED_COST_MULTIPLIER,
94
94
  estimateMessagesTokens,
@@ -96,7 +96,7 @@ import {
96
96
  resolveAgentContextWindow,
97
97
  resolveOccupancy,
98
98
  resolveOccupancyWindow
99
- } from "./chunk-YE6A72XL.js";
99
+ } from "./chunk-JI5MQU5B.js";
100
100
  import {
101
101
  isCliAuthorityBrokerProtocolError,
102
102
  isCliAuthorityBrokerTimeoutError,
@@ -107,19 +107,19 @@ import {
107
107
  } from "./chunk-P64WRQYV.js";
108
108
  import {
109
109
  buildSkillDiscoveryContextLayer
110
- } from "./chunk-7KWPNGVJ.js";
110
+ } from "./chunk-OVBUUU7L.js";
111
111
  import {
112
112
  parseExternalSkillMarkdown,
113
113
  parseSkillDocProtocol
114
- } from "./chunk-AETZ7AD6.js";
114
+ } from "./chunk-EY7V7REW.js";
115
115
  import {
116
116
  LOCAL_AGENT_CONFIG_MISSING_CODE,
117
117
  LOCAL_TURN_ABORTED_CODE,
118
118
  readActionGate
119
- } from "./chunk-ADTJJVDJ.js";
119
+ } from "./chunk-DXDG4XLD.js";
120
120
  import {
121
121
  resolveAgentRuntimeConfigFromRecord
122
- } from "./chunk-N7E3LQ4A.js";
122
+ } from "./chunk-LGW6A7GK.js";
123
123
  import {
124
124
  createThinkParserState,
125
125
  flushThinkParser,
@@ -135,7 +135,7 @@ import {
135
135
  mergeAvailabilityDeadline,
136
136
  resolveCooldownGate,
137
137
  resolveCredentialKeyWithFallback
138
- } from "./chunk-JLR5NWP2.js";
138
+ } from "./chunk-RXX262QX.js";
139
139
  import {
140
140
  ATTACHMENT_PART_TYPE,
141
141
  ATTACHMENT_PART_VERSION,
@@ -144,7 +144,7 @@ import {
144
144
  } from "./chunk-WJZOQR2J.js";
145
145
  import {
146
146
  normalizeUsage
147
- } from "./chunk-K6TZSON4.js";
147
+ } from "./chunk-PXERKNSJ.js";
148
148
  import {
149
149
  isOAuthApiKeyRef
150
150
  } from "./chunk-UKZX3NHN.js";
@@ -160,11 +160,12 @@ import {
160
160
  } from "./chunk-DWLEOOGR.js";
161
161
  import {
162
162
  buildAgentsMdLayer,
163
+ buildAgentsMdLayerHeader,
163
164
  buildMemoryOverlayLayer,
164
165
  buildMemoryUseGuidanceLayer,
165
166
  partitionScopedBlocks,
166
167
  renderTurnContextBlocksWithScope
167
- } from "./chunk-Q6RMLYSA.js";
168
+ } from "./chunk-CMLBKYEI.js";
168
169
  import {
169
170
  BUILTIN_NOLO_AGENT_KEY,
170
171
  BUILTIN_NOLO_AGENT_NAME,
@@ -176,7 +177,7 @@ import {
176
177
  } from "./chunk-M2EJHDJP.js";
177
178
  import {
178
179
  isAntigravityOAuthAgent
179
- } from "./chunk-QU3TLYBR.js";
180
+ } from "./chunk-NHI3JZP4.js";
180
181
  import {
181
182
  toErrorMessage
182
183
  } from "./chunk-HNMXYYJR.js";
@@ -194,7 +195,7 @@ import {
194
195
  serverOriginForDialog,
195
196
  settleRunTerminalAuthoritatively,
196
197
  spawnLocalBackgroundRun
197
- } from "./chunk-BTBT2566.js";
198
+ } from "./chunk-FSEGCTZQ.js";
198
199
  import {
199
200
  formatAgentListCard,
200
201
  formatFinishedRunCard,
@@ -207,10 +208,10 @@ import {
207
208
  } from "./chunk-PJNFNEJE.js";
208
209
  import {
209
210
  resolveClientVersion
210
- } from "./chunk-4YMD7B4Y.js";
211
+ } from "./chunk-WPOKOKZA.js";
211
212
  import {
212
213
  findModelConfig
213
- } from "./chunk-GC64WGMD.js";
214
+ } from "./chunk-SM3NSZJV.js";
214
215
  import {
215
216
  getLogger,
216
217
  normalizeError
@@ -228,7 +229,7 @@ import {
228
229
  t,
229
230
  toolLabel,
230
231
  toolLabelVariants
231
- } from "./chunk-UNOILAZP.js";
232
+ } from "./chunk-M6AGLVV4.js";
232
233
  import {
233
234
  createMemoryKey
234
235
  } from "./chunk-ECX3NKRD.js";
@@ -245,7 +246,7 @@ import {
245
246
  CLIENT_VERSION_TOO_OLD_CODE,
246
247
  NOLO_CLIENT_VERSION_HEADER,
247
248
  buildClientVersionUpgradeMessage
248
- } from "./chunk-5KTQVMCX.js";
249
+ } from "./chunk-GOO6G4PY.js";
249
250
  import {
250
251
  asTrimmedLowercaseString
251
252
  } from "./chunk-QSJ3HFEF.js";
@@ -843,10 +844,11 @@ function formatCliHyperlink(url, label, enabled = resolveCliHyperlinkEnabled())
843
844
 
844
845
  // node_modules/ansi-regex/index.js
845
846
  function ansiRegex({ onlyFirst = false } = {}) {
846
- const ST2 = "(?:\\u0007|\\u001B\\u005C|\\u009C)";
847
- const osc = `(?:\\u001B\\][^\\u0007\\u001B\\u009C]*${ST2})`;
848
- const csi = "[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]";
849
- const pattern = `${osc}|${csi}`;
847
+ const ST2 = String.raw`(?:\u0007|\u001B\u005C|\u009C)`;
848
+ const osc = String.raw`(?:(?:\u001B\]|\u009D)[^\u0007\u001B\u009C\u009D]*${ST2})`;
849
+ const csi = String.raw`[\u001B\u009B][[\]()#;?]*(?:\d{1,4}(?:[;:]\d{0,4})*)?[A-PR-TZcf-nq-uy=><~]`;
850
+ const csiPrivate = String.raw`(?:\u001B\[|\u009B)[<=>][0-9;:]*[A-PR-TZcf-nq-uy~]`;
851
+ const pattern = `${osc}|${csiPrivate}|${csi}`;
850
852
  return new RegExp(pattern, onlyFirst ? void 0 : "g");
851
853
  }
852
854
 
@@ -948,8 +950,7 @@ function eastAsianWidth(codePoint, { ambiguousAsWide = false } = {}) {
948
950
 
949
951
  // node_modules/string-width/index.js
950
952
  var segmenter = new Intl.Segmenter();
951
- var zeroWidthClusterRegex = new RegExp("^(?:\\p{Default_Ignorable_Code_Point}|\\p{Control}|\\p{Format}|\\p{Nonspacing_Mark}|\\p{Enclosing_Mark}|\\p{Surrogate})+$", "v");
952
- var leadingNonPrintingRegex = new RegExp("^[\\p{Default_Ignorable_Code_Point}\\p{Control}\\p{Format}\\p{Nonspacing_Mark}\\p{Enclosing_Mark}\\p{Surrogate}]+", "v");
953
+ var visibleCharacterRegex = new RegExp("[^\\p{Default_Ignorable_Code_Point}\\p{Control}\\p{Format}\\p{Nonspacing_Mark}\\p{Enclosing_Mark}\\p{Surrogate}]", "v");
953
954
  var spacingMarkRegex = new RegExp("\\p{Spacing_Mark}", "v");
954
955
  var rgiEmojiRegex = new RegExp("^\\p{RGI_Emoji}$", "v");
955
956
  var unqualifiedKeycapRegex = /^[\d#*]\u20E3$/;
@@ -968,10 +969,8 @@ function isDoubleWidthNonRgiEmojiSequence(segment) {
968
969
  return false;
969
970
  }
970
971
  function baseVisible(segment) {
971
- return segment.replace(leadingNonPrintingRegex, "");
972
- }
973
- function isZeroWidthCluster(segment) {
974
- return zeroWidthClusterRegex.test(segment);
972
+ const index = segment.search(visibleCharacterRegex);
973
+ return index === -1 ? void 0 : segment.slice(index);
975
974
  }
976
975
  function isHangulLeadingJamo(codePoint) {
977
976
  return codePoint >= 4352 && codePoint <= 4447 || codePoint >= 43360 && codePoint <= 43388;
@@ -988,7 +987,7 @@ function isHangulJamo(codePoint) {
988
987
  function hangulClusterWidth(visibleSegment, eastAsianWidthOptions) {
989
988
  const codePoints = [];
990
989
  for (const character of visibleSegment) {
991
- if (zeroWidthClusterRegex.test(character)) {
990
+ if (!visibleCharacterRegex.test(character)) {
992
991
  continue;
993
992
  }
994
993
  codePoints.push(character.codePointAt(0));
@@ -1052,14 +1051,14 @@ function stringWidth(input, options = {}) {
1052
1051
  let width = 0;
1053
1052
  const eastAsianWidthOptions = { ambiguousAsWide: !ambiguousIsNarrow };
1054
1053
  for (const { segment } of segmenter.segment(string)) {
1055
- if (isZeroWidthCluster(segment)) {
1054
+ const visibleSegment = baseVisible(segment);
1055
+ if (visibleSegment === void 0) {
1056
1056
  continue;
1057
1057
  }
1058
1058
  if (rgiEmojiRegex.test(segment) || isDoubleWidthNonRgiEmojiSequence(segment)) {
1059
1059
  width += 2;
1060
1060
  continue;
1061
1061
  }
1062
- const visibleSegment = baseVisible(segment);
1063
1062
  const hangulWidth = hangulClusterWidth(visibleSegment, eastAsianWidthOptions);
1064
1063
  if (hangulWidth !== void 0) {
1065
1064
  width += hangulWidth;
@@ -8699,8 +8698,32 @@ function isToolTreeLeafLine(line) {
8699
8698
  function isToolSingleLine(line) {
8700
8699
  return TOOL_SINGLE_RE.test(plainToolLine(line));
8701
8700
  }
8702
- function isToolGroupBoundary(cur, next) {
8703
- return isToolTreeLeafLine(cur) && isToolTreeHeaderLine(next);
8701
+ function toolGroupKeyOf(line) {
8702
+ const plain = plainToolLine(line);
8703
+ const flat = plain.match(TOOL_SINGLE_RE);
8704
+ if (flat) {
8705
+ const label = (flat[1] ?? "").replace(/\s*×\d+$/, "").trim();
8706
+ return label ? `flat:${label}` : null;
8707
+ }
8708
+ const header = toolTreeHeaderMatch(plain);
8709
+ if (header) {
8710
+ const label = (header[1] ?? "").replace(/\s*×\d+$/, "").trim();
8711
+ return label ? `tree:${label}` : null;
8712
+ }
8713
+ return null;
8714
+ }
8715
+ function toolRowBoundary(cur, next) {
8716
+ const curLeaf = isToolTreeLeafLine(cur);
8717
+ const curHeader = isToolTreeHeaderLine(cur);
8718
+ const nextLeaf = isToolTreeLeafLine(next);
8719
+ const curKey = toolGroupKeyOf(cur);
8720
+ const nextKey = toolGroupKeyOf(next);
8721
+ if (curKey === null && !curLeaf) return null;
8722
+ if (nextKey === null && !nextLeaf) return null;
8723
+ if (curLeaf) return !nextLeaf;
8724
+ if (curHeader && nextLeaf) return false;
8725
+ if (curKey !== null && nextKey !== null) return curKey !== nextKey;
8726
+ return true;
8704
8727
  }
8705
8728
  function statusColorSeq(marker, brightness) {
8706
8729
  if (marker === "\u2713") return colorSeq("success", brightness);
@@ -8766,7 +8789,8 @@ function polishBreathInsertsBlankBetween(cur, next) {
8766
8789
  if (isPolishIntroLine(cur) && isPolishListLikeLine(next)) return false;
8767
8790
  if (isPolishHeadingLine(cur) || isPolishHeadingLine(next)) return false;
8768
8791
  if (isCodeFenceLine(cur) !== isCodeFenceLine(next)) return true;
8769
- if (isToolGroupBoundary(cur, next)) return true;
8792
+ const toolBoundary = toolRowBoundary(cur, next);
8793
+ if (toolBoundary !== null) return toolBoundary;
8770
8794
  return isPolishListLikeLine(cur) !== isPolishListLikeLine(next);
8771
8795
  }
8772
8796
  function convertMarkdownTablesForTerminal(text) {
@@ -9065,16 +9089,22 @@ function classifyStreamLine(line) {
9065
9089
  if (polishHeadingLevel(plain) !== null) return "heading";
9066
9090
  return "prose";
9067
9091
  }
9092
+ function isStreamToolKind(kind) {
9093
+ return kind === "tool-header" || kind === "tool-leaf" || kind === "tool";
9094
+ }
9068
9095
  function isStreamListLike(kind) {
9069
9096
  return kind === "list" || kind === "tool-header" || kind === "tool-leaf" || kind === "tool";
9070
9097
  }
9071
- function needsListProseBreath(prev, next, prevLine = "") {
9098
+ function needsListProseBreath(prev, next, prevLine = "", nextLine = "") {
9072
9099
  if (prev === null || prev === "blank" || next === "blank") return false;
9073
9100
  if (next === "heading") return true;
9074
9101
  if (prev === "heading") return (polishHeadingLevel(prevLine) ?? 7) <= 2;
9075
9102
  if (prev === "fence" !== (next === "fence")) return true;
9076
9103
  if (isStreamListLike(next) && isPolishIntroLine(prevLine)) return false;
9077
- if (prev === "tool-leaf" && next === "tool-header") return true;
9104
+ if (isStreamToolKind(prev) && isStreamToolKind(next)) {
9105
+ const boundary = toolRowBoundary(prevLine, nextLine);
9106
+ if (boundary !== null) return boundary;
9107
+ }
9078
9108
  return isStreamListLike(prev) !== isStreamListLike(next);
9079
9109
  }
9080
9110
  function createRenderAwareStreamWriter(args) {
@@ -9085,13 +9115,13 @@ function createRenderAwareStreamWriter(args) {
9085
9115
  let lastLine = "";
9086
9116
  let pendingBlankRow = false;
9087
9117
  const PARTIAL_FLUSH_THRESHOLD = 48;
9088
- const emitBreathIfNeeded = (nextKind) => {
9118
+ const emitBreathIfNeeded = (nextKind, nextLine = "") => {
9089
9119
  if (pendingBlankRow) {
9090
9120
  args.write("\n");
9091
9121
  pendingBlankRow = false;
9092
9122
  lastKind = "blank";
9093
9123
  }
9094
- if (needsListProseBreath(lastKind, nextKind, lastLine)) args.write("\n");
9124
+ if (needsListProseBreath(lastKind, nextKind, lastLine, nextLine)) args.write("\n");
9095
9125
  };
9096
9126
  const flushPartialProse = () => {
9097
9127
  if (tracker.isInFence() || buffer.length < PARTIAL_FLUSH_THRESHOLD) return;
@@ -9220,7 +9250,7 @@ function createRenderAwareStreamWriter(args) {
9220
9250
  buffer = lines.slice(1).join("\n");
9221
9251
  continue;
9222
9252
  }
9223
- emitBreathIfNeeded(kind);
9253
+ emitBreathIfNeeded(kind, firstLine);
9224
9254
  emitFormattedAssistantBlock(args.write, firstLine, true);
9225
9255
  lastKind = kind;
9226
9256
  lastLine = firstLine;
@@ -9248,6 +9278,7 @@ function createRenderAwareStreamWriter(args) {
9248
9278
  if (tracker.isInFence()) {
9249
9279
  args.write(buffer);
9250
9280
  } else {
9281
+ emitBreathIfNeeded(classifyStreamLine(buffer), buffer);
9251
9282
  emitFormattedAssistantBlock(args.write, buffer);
9252
9283
  }
9253
9284
  buffer = "";
@@ -11378,7 +11409,7 @@ function isBalanceExhaustedError(error) {
11378
11409
 
11379
11410
  // packages/cli/client/agentRun.ts
11380
11411
  async function loadRunLocalAgentTurn() {
11381
- const { runLocalAgentTurn } = await import("./agentRuntimeLocal-NAAYNHCW.js");
11412
+ const { runLocalAgentTurn } = await import("./agentRuntimeLocal-ONSIOOQB.js");
11382
11413
  return runLocalAgentTurn;
11383
11414
  }
11384
11415
  var stripDebugNoise = (s) => s.replace(/\s*raw="[\s\S]*"/g, "").replace(/\s*raw=\S+/g, "").replace(/\s*headers=\[[^\]]*\]/g, "").replace(/\s*headers=\S+/g, "").trim();
@@ -12031,7 +12062,11 @@ var FAILURE_BUILDERS = {
12031
12062
  function describeLocalRunFailure(message, rawError) {
12032
12063
  const credentialAccountId = rawError && typeof rawError === "object" && typeof rawError.credentialAccountId === "string" ? rawError.credentialAccountId.trim() || void 0 : void 0;
12033
12064
  if (rawError && typeof rawError === "object" && "code" in rawError && rawError.code === "PLATFORM_STREAM_INTERRUPTED") {
12034
- return "[nolo] The platform LLM stream was interrupted before the turn completed. Your conversation was preserved. Send another message to continue.\n";
12065
+ const detail = rawError;
12066
+ const phaseMessage = detail.phase === "pre-headers" ? "The platform LLM request failed before response headers arrived." : detail.phase === "streaming" ? "The platform LLM stream was interrupted before the turn completed." : "The platform LLM request was interrupted before the turn completed.";
12067
+ const saveMessage = detail.failedTurnPersistence?.status === "saved" ? "The failed turn was saved. Send another message to continue." : detail.failedTurnPersistence?.status === "failed" ? "The failed turn could not be saved. Check your conversation before continuing." : "Saving the failed turn could not be confirmed. Check your conversation before continuing.";
12068
+ return `[nolo] ${phaseMessage} ${saveMessage}
12069
+ `;
12035
12070
  }
12036
12071
  if (isClientVersionTooOldFailure(message, rawError)) {
12037
12072
  return describeClientVersionTooOldFailure(message, rawError);
@@ -13040,20 +13075,61 @@ function buildHostEnvironmentLayer(options) {
13040
13075
 
13041
13076
  // packages/agent-runtime/agentsMd.ts
13042
13077
  import { existsSync as existsSync2, readFileSync as readFileSync3 } from "node:fs";
13043
- import { join as join2 } from "node:path";
13078
+ import { resolve as resolve2 } from "node:path";
13044
13079
  var AGENTS_MD_MAX_BYTES = 8192;
13080
+ var AGENTS_MD_MARKER_RESERVE_BYTES = 512;
13045
13081
  var AGENTS_MD_CANDIDATES = ["AGENTS.md", "CLAUDE.md"];
13082
+ function truncateAgentsMdContent(content, maxBytes = AGENTS_MD_MAX_BYTES) {
13083
+ const buf = Buffer.from(content, "utf8");
13084
+ if (buf.byteLength <= maxBytes) {
13085
+ return content;
13086
+ }
13087
+ let boundary = Math.min(maxBytes, buf.byteLength);
13088
+ while (boundary > 0 && boundary < buf.byteLength && (buf[boundary] & 192) === 128) {
13089
+ boundary--;
13090
+ }
13091
+ const boundarySlice = buf.subarray(0, boundary).toString("utf8");
13092
+ const slice = buf.subarray(0, maxBytes);
13093
+ const lastNewline = slice.lastIndexOf(10);
13094
+ if (lastNewline > 0) {
13095
+ const lineCandidate = slice.subarray(0, lastNewline).toString("utf8");
13096
+ const lineBytes = Buffer.byteLength(lineCandidate, "utf8");
13097
+ const boundaryBytes = Buffer.byteLength(boundarySlice, "utf8");
13098
+ if (lineCandidate.trim().length > 0 && lineBytes * 2 >= boundaryBytes) {
13099
+ return lineCandidate.replace(/\r$/, "");
13100
+ }
13101
+ }
13102
+ return boundarySlice.replace(/\r$/, "");
13103
+ }
13046
13104
  function readAgentsMdLayerFromDisk(cwd) {
13047
13105
  for (const name of AGENTS_MD_CANDIDATES) {
13048
- const filePath = join2(cwd, name);
13106
+ const filePath = resolve2(cwd, name);
13049
13107
  if (!existsSync2(filePath)) continue;
13050
13108
  try {
13051
- let content = readFileSync3(filePath, "utf8").trim();
13109
+ const raw = readFileSync3(filePath, "utf8");
13110
+ const content = raw.trim();
13052
13111
  if (!content) continue;
13053
- if (Buffer.byteLength(content, "utf8") > AGENTS_MD_MAX_BYTES) {
13054
- content = Buffer.from(content, "utf8").subarray(0, AGENTS_MD_MAX_BYTES).toString("utf8") + "\n\n<!-- AGENTS.md truncated -->";
13112
+ const totalBytes = Buffer.byteLength(raw, "utf8");
13113
+ const trimmedBytes = Buffer.byteLength(content, "utf8");
13114
+ const headerBytes = Buffer.byteLength(buildAgentsMdLayerHeader(name), "utf8");
13115
+ if (headerBytes + trimmedBytes <= AGENTS_MD_MAX_BYTES) {
13116
+ return buildAgentsMdLayer(content, name);
13117
+ }
13118
+ const buildMarker = (omitted2, withPath) => {
13119
+ const pathPart = withPath ? `\u5B8C\u6574\u6587\u4EF6\uFF1A${filePath}` : `\u5B8C\u6574\u6587\u4EF6\uFF1A\u5DE5\u4F5C\u533A\u6839\u76EE\u5F55\u7684 ${name}`;
13120
+ return `<!-- AGENTS.md truncated: \u539F\u6587\u4EF6 ${totalBytes} \u5B57\u8282\uFF0C\u6CE8\u5165\u9884\u7B97 ${AGENTS_MD_MAX_BYTES} \u5B57\u8282\uFF0C\u5DF2\u7701\u7565 ${omitted2} \u5B57\u8282\uFF08\u4E0A\u6587\u53EF\u80FD\u7F3A\u5C11\u6587\u4EF6\u672B\u5C3E\u7684 commit/review \u95E8\u7981\u7EC6\u5219\uFF0C\u63D0\u4EA4/\u8BC4\u5BA1\u524D\u8BF7\u8BFB\u5B8C\u6574\u6587\u4EF6\uFF09\u3002${pathPart} -->`;
13121
+ };
13122
+ const bodyBudget = AGENTS_MD_MAX_BYTES - AGENTS_MD_MARKER_RESERVE_BYTES - 2 - headerBytes;
13123
+ const body = truncateAgentsMdContent(content, bodyBudget);
13124
+ const bodyBytes = Buffer.byteLength(body, "utf8");
13125
+ const omitted = Math.max(0, totalBytes - bodyBytes);
13126
+ let marker = buildMarker(omitted, true);
13127
+ if (Buffer.byteLength(marker, "utf8") > AGENTS_MD_MARKER_RESERVE_BYTES) {
13128
+ marker = buildMarker(omitted, false);
13055
13129
  }
13056
- return buildAgentsMdLayer(content, name);
13130
+ return buildAgentsMdLayer(`${body}
13131
+
13132
+ ${marker}`, name);
13057
13133
  } catch {
13058
13134
  }
13059
13135
  }
@@ -13119,16 +13195,16 @@ function runDoDCommands(commands, cwd, deps = {}) {
13119
13195
 
13120
13196
  // packages/cli/agentRunPrompts.ts
13121
13197
  import { existsSync as existsSync3, readFileSync as readFileSync4, readdirSync, statSync as statSync2 } from "node:fs";
13122
- import { dirname, extname, isAbsolute as isAbsolute2, join as join3, relative as relativePath, resolve as resolve2, sep } from "node:path";
13198
+ import { dirname, extname, isAbsolute as isAbsolute2, join as join2, relative as relativePath, resolve as resolve3, sep } from "node:path";
13123
13199
  function workflowRefToCandidatePath(cwd, ref) {
13124
13200
  const normalized = ref.trim();
13125
13201
  if (!normalized) return "";
13126
13202
  if (normalized.endsWith(".md") || normalized.includes("/") || normalized.includes("\\")) {
13127
- const directPath = resolve2(cwd, normalized);
13203
+ const directPath = resolve3(cwd, normalized);
13128
13204
  if (existsSync3(directPath)) return directPath;
13129
13205
  }
13130
13206
  const fileName = normalized.replace(/[^a-zA-Z0-9一-鿿]+/g, "-").replace(/^-+|-+$/g, "");
13131
- return resolve2(cwd, "docs", "workflows", `${fileName}.md`);
13207
+ return resolve3(cwd, "docs", "workflows", `${fileName}.md`);
13132
13208
  }
13133
13209
  var SKILL_SEARCH_DIRS = [
13134
13210
  ".agents/skills"
@@ -13137,15 +13213,15 @@ function skillRefToCandidatePath(cwd, ref) {
13137
13213
  const normalized = ref.trim();
13138
13214
  if (!normalized) return "";
13139
13215
  if (normalized.endsWith(".md") || normalized.includes("/") || normalized.includes("\\")) {
13140
- const directPath = resolve2(cwd, normalized);
13216
+ const directPath = resolve3(cwd, normalized);
13141
13217
  if (existsSync3(directPath)) return directPath;
13142
13218
  }
13143
13219
  const fileName = normalized.replace(/[^a-zA-Z0-9一-鿿]+/g, "-").replace(/^-+|-+$/g, "");
13144
13220
  for (const dir of SKILL_SEARCH_DIRS) {
13145
- const skillMdPath = resolve2(cwd, dir, fileName, "SKILL.md");
13221
+ const skillMdPath = resolve3(cwd, dir, fileName, "SKILL.md");
13146
13222
  if (existsSync3(skillMdPath)) return skillMdPath;
13147
13223
  }
13148
- return resolve2(cwd, ".agents", "skills", fileName, "SKILL.md");
13224
+ return resolve3(cwd, ".agents", "skills", fileName, "SKILL.md");
13149
13225
  }
13150
13226
  async function resolveWorkflowReference(ref, cwd = process.cwd()) {
13151
13227
  const path2 = workflowRefToCandidatePath(cwd, ref);
@@ -13162,11 +13238,11 @@ async function resolveWorkflowReference(ref, cwd = process.cwd()) {
13162
13238
  }
13163
13239
  function inlineRelativeRefs(body, skillDir) {
13164
13240
  const refPattern = /\[([^\]]+)\]\((\.\/[^)]+|[^)]+\/[^)]+)\)/g;
13165
- const normalizedSkillDir = resolve2(skillDir) + sep;
13241
+ const normalizedSkillDir = resolve3(skillDir) + sep;
13166
13242
  return body.replace(refPattern, (match, label, relPath) => {
13167
13243
  const cleaned = relPath.trim();
13168
13244
  if (!cleaned.startsWith("./") && !cleaned.startsWith("../")) return match;
13169
- const absPath = resolve2(skillDir, cleaned);
13245
+ const absPath = resolve3(skillDir, cleaned);
13170
13246
  const relative = relativePath(normalizedSkillDir, absPath);
13171
13247
  if (relative.startsWith("..") || isAbsolute2(relative)) return match;
13172
13248
  if (!existsSync3(absPath) || !absPath.endsWith(".md")) return match;
@@ -13181,7 +13257,7 @@ ${refContent}
13181
13257
  });
13182
13258
  }
13183
13259
  function listSkillScripts(skillDir) {
13184
- const scriptsDir = join3(skillDir, "scripts");
13260
+ const scriptsDir = join2(skillDir, "scripts");
13185
13261
  if (!existsSync3(scriptsDir) || !statSync2(scriptsDir).isDirectory()) return null;
13186
13262
  const entries = readdirSync(scriptsDir).filter((e) => !e.startsWith("."));
13187
13263
  if (entries.length === 0) return null;
@@ -13316,7 +13392,7 @@ function prependSubjectDialogMarker(message, subjectDialogKey) {
13316
13392
  }
13317
13393
  function normalizeCliImageInput(input) {
13318
13394
  if (/^(https?:|data:|file:)/i.test(input)) return input;
13319
- const absolutePath = resolve2(input);
13395
+ const absolutePath = resolve3(input);
13320
13396
  if (!existsSync3(absolutePath)) return input;
13321
13397
  const base64 = readFileSync4(absolutePath).toString("base64");
13322
13398
  return `data:${imageMimeTypeForPath(absolutePath)};base64,${base64}`;
@@ -16306,6 +16382,7 @@ export {
16306
16382
  releaseCollapsedPasteReferences,
16307
16383
  expandRangeToCollapsedPasteChips,
16308
16384
  findCollapsedPasteSpanAt,
16385
+ readAgentsMdLayerFromDisk,
16309
16386
  emitTerminalProgramStatus,
16310
16387
  isBalanceExhaustedError,
16311
16388
  runAgentTurn,
@@ -16315,7 +16392,6 @@ export {
16315
16392
  prependSubjectDialogMarker,
16316
16393
  normalizeCliImageInput,
16317
16394
  buildHostEnvironmentLayer,
16318
- readAgentsMdLayerFromDisk,
16319
16395
  resolveCliMemory,
16320
16396
  FAILED_EMPTY_ASSISTANT_REASONS,
16321
16397
  isRunResultStalledOrTruncated,
@@ -2,7 +2,7 @@ import {
2
2
  mergeAvailabilityDeadline,
3
3
  resolveCredentialCandidateKeys,
4
4
  resolveCredentialKeyWithFallback
5
- } from "./chunk-JLR5NWP2.js";
5
+ } from "./chunk-RXX262QX.js";
6
6
 
7
7
  // packages/agent-runtime/credentialAvailability.ts
8
8
  import { homedir } from "node:os";