nolo-cli 0.189.0-alpha.1 → 0.190.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 (99) hide show
  1. package/{_executeModel-7GFCTOFY.js → _executeModel-SWF5L2QJ.js} +22 -22
  2. package/{action-HQXK4ZT4.js → action-BHWB4MOK.js} +2 -2
  3. package/{addContentAction-3WAN3OWY.js → addContentAction-BY375D35.js} +3 -3
  4. package/{addDialogAgentAction-WNQBFR5G.js → addDialogAgentAction-HOZYOCWC.js} +2 -2
  5. package/{agentDeleteCommand-GXYAEUFQ.js → agentDeleteCommand-RZBGWFD7.js} +23 -23
  6. package/{agentEmailCommands-WYZKZBPZ.js → agentEmailCommands-WLI22RW4.js} +24 -24
  7. package/{agentListCommands-POWEO3US.js → agentListCommands-RL5BMN2E.js} +7 -7
  8. package/{agentMachineCommands-LD4UKJ47.js → agentMachineCommands-F3NUJ2L6.js} +5 -5
  9. package/{agentRecordCommands-O6SOBL37.js → agentRecordCommands-P56UX5EH.js} +23 -23
  10. package/{agentRunCommand-JZ5CH3DL.js → agentRunCommand-75PMX2RJ.js} +24 -24
  11. package/{agentRuntimeLocal-G4KEXO5D.js → agentRuntimeLocal-3H7ZXM5X.js} +3 -3
  12. package/{agentSlice-STUDWJJZ.js → agentSlice-YGT6LLK6.js} +3 -3
  13. package/{appDeleteCommands-GZPGKI2Z.js → appDeleteCommands-AUDFCIFP.js} +7 -7
  14. package/{appDeployCommands-5UU3V5OK.js → appDeployCommands-ZMVIKSPY.js} +7 -7
  15. package/{appDeployStatusCommands-2ZB2QZ22.js → appDeployStatusCommands-LQNUHHGW.js} +7 -7
  16. package/{appGetCommands-YSZFBV5G.js → appGetCommands-WVCAHY4P.js} +7 -7
  17. package/{appListCommands-W6D7XIFX.js → appListCommands-4HHNJQUI.js} +7 -7
  18. package/{authCommand-L6C4LLOU.js → authCommand-RV5MQDWN.js} +3 -3
  19. package/{authCommands-RFLKIPBT.js → authCommands-MZUXPRYJ.js} +2 -2
  20. package/{builtinSkillRegistry-2VN6JG4U.js → builtinSkillRegistry-7MBUY5EY.js} +3 -3
  21. package/{chromeOpsCommands-BTIWDYLA.js → chromeOpsCommands-C46BXHEE.js} +1 -1
  22. package/{chunk-H6FUDBS3.js → chunk-23QZ43OQ.js} +5 -5
  23. package/{chunk-5LVGXDSL.js → chunk-2CYD3OWD.js} +1 -1
  24. package/{chunk-4MZCYEK5.js → chunk-4KH2J6P7.js} +2 -2
  25. package/{chunk-XTM23OUX.js → chunk-4MYCKDSI.js} +2 -2
  26. package/{chunk-RGTPR57U.js → chunk-4YS6SAUO.js} +4 -4
  27. package/{chunk-LOQYQUM2.js → chunk-53PBXLID.js} +1 -1
  28. package/{chunk-KOIGM3KU.js → chunk-5DPVRMSY.js} +1 -1
  29. package/{chunk-GSX7Z46F.js → chunk-5HAPEKNH.js} +1 -1
  30. package/{chunk-RANCLEEC.js → chunk-6PV7VEEE.js} +10 -10
  31. package/{chunk-JOOWHDGM.js → chunk-A5BLRE3G.js} +1 -1
  32. package/{chunk-Y2ZDNW2H.js → chunk-B2N5GZBU.js} +2 -2
  33. package/{chunk-7SJG5ZNX.js → chunk-B6EZB6DW.js} +1 -1
  34. package/{chunk-CLGAGPEM.js → chunk-CNMQATUF.js} +1 -1
  35. package/{chunk-ER4UTWWS.js → chunk-DFF6B7P7.js} +1 -1
  36. package/{chunk-TNVE3CAV.js → chunk-DNHR4SIB.js} +4 -4
  37. package/{chunk-WMHWFFTE.js → chunk-ECX3NKRD.js} +46 -0
  38. package/{chunk-ZIOYHDYW.js → chunk-EWY63OTN.js} +2 -2
  39. package/{chunk-MMOISK6N.js → chunk-FLOZJJZO.js} +3 -3
  40. package/{chunk-R6AJKHEU.js → chunk-FSOJN3F7.js} +3 -3
  41. package/{chunk-WBCYL63M.js → chunk-GYVLAHA4.js} +1 -1
  42. package/{chunk-OKFKGCTS.js → chunk-HTLIKE5U.js} +2 -2
  43. package/{chunk-7N6C3IHF.js → chunk-JCDNXY6M.js} +2 -2
  44. package/{chunk-S4W4GV3B.js → chunk-K6TZSON4.js} +1 -1
  45. package/{chunk-3QFOYFJW.js → chunk-LMHU2NXQ.js} +4 -4
  46. package/{chunk-YUZIPPER.js → chunk-NHUH5CDA.js} +2 -2
  47. package/{chunk-2SUNC7EM.js → chunk-P277FU5Z.js} +12 -12
  48. package/{chunk-PCPQWTXJ.js → chunk-PD2YRFAI.js} +1 -1
  49. package/{chunk-O2MBTX37.js → chunk-RKUSD72B.js} +4 -4
  50. package/{chunk-J7QGWFT6.js → chunk-SIZY5XFD.js} +36 -11
  51. package/{chunk-OXOXPREC.js → chunk-SM56M7N7.js} +1 -1
  52. package/{chunk-J6ACCFU6.js → chunk-TFSMPRAY.js} +4 -4
  53. package/{chunk-IFN7MHWL.js → chunk-UGCQKKXW.js} +1 -1
  54. package/{chunk-63RO7QWZ.js → chunk-UNOILAZP.js} +10 -0
  55. package/{chunk-HVV4B6OL.js → chunk-W622GBH3.js} +2 -2
  56. package/{chunk-7GXK3WTO.js → chunk-WAZ6BTSC.js} +1 -1
  57. package/{chunk-4OTMONZL.js → chunk-XECMQMCS.js} +9 -9
  58. package/{chunk-6G5V4Y3V.js → chunk-XY6RHOUI.js} +19 -19
  59. package/{chunk-PVZ3GB25.js → chunk-ZLBQ55HI.js} +5 -5
  60. package/{chunk-RBVR7P3M.js → chunk-ZRATZ7OH.js} +18 -18
  61. package/{commandRegistry-AXZLPIPP.js → commandRegistry-IG7CJFTP.js} +61 -61
  62. package/{contentThunks-E4DHXF3M.js → contentThunks-UOENCNOK.js} +8 -8
  63. package/{cooldownCommands-ZERBBSWJ.js → cooldownCommands-4XKJFEBW.js} +1 -1
  64. package/{createAgentAutomationAction-2P2II7B3.js → createAgentAutomationAction-4STTL3XS.js} +8 -8
  65. package/{createDialogAction-MFZGE5EO.js → createDialogAction-2L47HM5V.js} +10 -10
  66. package/{createPageAction-SBU2YCNR.js → createPageAction-6QX7NS6V.js} +8 -8
  67. package/{dbSlice-2O3YBVPP.js → dbSlice-QAUXABCC.js} +2 -2
  68. package/{dialogCommands-AQLB3TG2.js → dialogCommands-VCQO2OFM.js} +7 -7
  69. package/{dialogSlice-GKPCUQWM.js → dialogSlice-5M2W5QZZ.js} +7 -7
  70. package/{dialogUsageCommand-44XMU6DD.js → dialogUsageCommand-QTG6ILEJ.js} +58 -5
  71. package/{docCreateCommands-AND3EMIY.js → docCreateCommands-7FAETK4S.js} +6 -6
  72. package/{docDeleteCommands-WA7CPPN3.js → docDeleteCommands-IVA4T2VS.js} +7 -7
  73. package/{docReadCommands-A4JLU4WF.js → docReadCommands-F63GIAYX.js} +6 -6
  74. package/{docStore-DOZVBVKZ.js → docStore-FOMW62P6.js} +3 -3
  75. package/{docUpdateCommands-33PDSHS3.js → docUpdateCommands-QEC4Y2HQ.js} +6 -6
  76. package/{fetchMessages-QLW7INJJ.js → fetchMessages-HWBVATSE.js} +1 -1
  77. package/{handleSendMessageAction-FY4RBJEA.js → handleSendMessageAction-6PA7PBAE.js} +15 -15
  78. package/index.js +6 -6
  79. package/{keys-N6HQICY5.js → keys-P4ZDOVJW.js} +11 -1
  80. package/{localDialogRead-55YDVPNU.js → localDialogRead-CT5HGDMC.js} +1 -1
  81. package/{localRuntimeAdapter-VOTHX3NK.js → localRuntimeAdapter-UZVDGE24.js} +21 -21
  82. package/{machineCommands-FDTN3A5S.js → machineCommands-JMHZ2BFI.js} +22 -22
  83. package/{machineWsRunDispatch-PPVYOERM.js → machineWsRunDispatch-5CYUKV3K.js} +22 -22
  84. package/{memberThunks-VXT36MZP.js → memberThunks-ZAE52VIP.js} +3 -3
  85. package/package.json +1 -1
  86. package/{readlineWorkspace-6SU3QTTY.js → readlineWorkspace-G5EZWTPW.js} +83 -37
  87. package/{removeDialogAgentAction-PK24DJ2J.js → removeDialogAgentAction-YEPO5AYI.js} +3 -3
  88. package/{runAgentClientLoop-CFIM6MXT.js → runAgentClientLoop-5P42KTXW.js} +20 -20
  89. package/{secretCommands-UYVNIQIN.js → secretCommands-N6CMCJDZ.js} +1 -1
  90. package/{setDialogExtraReferencesAction-BN4IBUO6.js → setDialogExtraReferencesAction-EH5GWDAJ.js} +3 -3
  91. package/{setPrimaryDialogAgentAction-JR5SMLZY.js → setPrimaryDialogAgentAction-PNWRK6IY.js} +3 -3
  92. package/{settingThunks-RJZQHL7H.js → settingThunks-7VCWB6P7.js} +2 -2
  93. package/{spaceCommands-BI3TRIAK.js → spaceCommands-6IH5EH6B.js} +5 -5
  94. package/{streamAgentChatTurn-3BS7IAFR.js → streamAgentChatTurn-LK4RYXJ6.js} +22 -22
  95. package/{switchDialogAgentAction-TSIXBNRH.js → switchDialogAgentAction-23BFWJMV.js} +2 -2
  96. package/{tools-PCTUYG54.js → tools-RGZRKCCX.js} +17 -17
  97. package/{updateCommands-6GKGM7NR.js → updateCommands-KE6LP3QX.js} +3 -3
  98. package/{updateDialogTitleAction-ZHFIMEQL.js → updateDialogTitleAction-HEON2XAV.js} +8 -8
  99. package/{windowsSelfUpdate-4N7JCG2M.js → windowsSelfUpdate-26TSFXEZ.js} +2 -2
@@ -12,7 +12,7 @@ import {
12
12
  normalizeDialogRecord,
13
13
  readDialogSnapshot,
14
14
  sortDialogs
15
- } from "./chunk-J6ACCFU6.js";
15
+ } from "./chunk-TFSMPRAY.js";
16
16
  import {
17
17
  formatQuotaSummary,
18
18
  listFavoriteAgentIdsAcrossServers,
@@ -20,12 +20,12 @@ import {
20
20
  listRemoteAgents,
21
21
  listRemoteAgentsAcrossServers,
22
22
  normalizeListedAgent
23
- } from "./chunk-YUZIPPER.js";
23
+ } from "./chunk-NHUH5CDA.js";
24
24
  import "./chunk-ID4G2MAR.js";
25
25
  import {
26
26
  listUserRecordsFromServers,
27
27
  readLiveDbRecordAfterTombstoneMerge
28
- } from "./chunk-KOIGM3KU.js";
28
+ } from "./chunk-5DPVRMSY.js";
29
29
  import {
30
30
  refreshSubscriptionQuotas
31
31
  } from "./chunk-YGILMZ7N.js";
@@ -102,9 +102,9 @@ import {
102
102
  wrapTextToLines,
103
103
  wrapTranscriptLine,
104
104
  wrapTranscriptLineWithLayout
105
- } from "./chunk-2SUNC7EM.js";
105
+ } from "./chunk-P277FU5Z.js";
106
106
  import "./chunk-6QDYSCPW.js";
107
- import "./chunk-5LVGXDSL.js";
107
+ import "./chunk-2CYD3OWD.js";
108
108
  import "./chunk-Y5GCAMGP.js";
109
109
  import {
110
110
  getReadableCliDb
@@ -113,7 +113,7 @@ import {
113
113
  deleteDbRecord,
114
114
  queryUserRecords,
115
115
  readDbRecord
116
- } from "./chunk-WBCYL63M.js";
116
+ } from "./chunk-GYVLAHA4.js";
117
117
  import {
118
118
  RUN_WAKE_CHANNEL_ENV,
119
119
  clearCliLocalRuntimePreparedAgentCache,
@@ -123,7 +123,7 @@ import {
123
123
  formatApprovalRemaining,
124
124
  readTimestamp,
125
125
  registerHostApprovalRenderer
126
- } from "./chunk-J7QGWFT6.js";
126
+ } from "./chunk-SIZY5XFD.js";
127
127
  import "./chunk-DYQXB46J.js";
128
128
  import "./chunk-VP3BINY7.js";
129
129
  import "./chunk-R4BMKAR5.js";
@@ -139,7 +139,7 @@ import "./chunk-7JWW65DU.js";
139
139
  import {
140
140
  defaultOpenBrowser,
141
141
  saveTokenLogin
142
- } from "./chunk-IFN7MHWL.js";
142
+ } from "./chunk-UGCQKKXW.js";
143
143
  import "./chunk-TY3TIUJK.js";
144
144
  import "./chunk-S73EPYNC.js";
145
145
  import "./chunk-GTP6VNWH.js";
@@ -151,43 +151,43 @@ import "./chunk-INFHX73M.js";
151
151
  import "./chunk-JEXVIMYZ.js";
152
152
  import {
153
153
  prepareTools
154
- } from "./chunk-ZIOYHDYW.js";
154
+ } from "./chunk-EWY63OTN.js";
155
155
  import "./chunk-HS7MLR74.js";
156
- import "./chunk-6G5V4Y3V.js";
156
+ import "./chunk-XY6RHOUI.js";
157
157
  import "./chunk-KFHREHUQ.js";
158
158
  import "./chunk-53RSTB7T.js";
159
159
  import "./chunk-OXME3PEE.js";
160
160
  import "./chunk-KSTEXKL6.js";
161
161
  import "./chunk-VF4K2QE6.js";
162
- import "./chunk-LOQYQUM2.js";
163
- import "./chunk-O2MBTX37.js";
162
+ import "./chunk-53PBXLID.js";
163
+ import "./chunk-RKUSD72B.js";
164
164
  import "./chunk-NF64D32W.js";
165
165
  import "./chunk-3L2WKC3W.js";
166
166
  import "./chunk-VYNMQ6HW.js";
167
- import "./chunk-R6AJKHEU.js";
167
+ import "./chunk-FSOJN3F7.js";
168
168
  import "./chunk-MYOH447Z.js";
169
- import "./chunk-ER4UTWWS.js";
169
+ import "./chunk-DFF6B7P7.js";
170
170
  import "./chunk-YIRADHSY.js";
171
171
  import "./chunk-AGIM7IMJ.js";
172
172
  import "./chunk-ZBCBFOWC.js";
173
173
  import "./chunk-VIDPVFP3.js";
174
174
  import "./chunk-63W5N6P3.js";
175
- import "./chunk-H6FUDBS3.js";
176
- import "./chunk-RGTPR57U.js";
175
+ import "./chunk-23QZ43OQ.js";
176
+ import "./chunk-4YS6SAUO.js";
177
177
  import "./chunk-5XBUWM6I.js";
178
178
  import {
179
179
  estimateMessagesTokens,
180
180
  historyTokensBeforeLatestAssistant
181
- } from "./chunk-RBVR7P3M.js";
181
+ } from "./chunk-ZRATZ7OH.js";
182
182
  import "./chunk-TZXPT53C.js";
183
183
  import "./chunk-LEC5ALIN.js";
184
184
  import "./chunk-523DITKR.js";
185
- import "./chunk-PVZ3GB25.js";
185
+ import "./chunk-ZLBQ55HI.js";
186
186
  import "./chunk-BYXBJQAS.js";
187
187
  import "./chunk-QYPE3TS3.js";
188
- import "./chunk-JOOWHDGM.js";
188
+ import "./chunk-A5BLRE3G.js";
189
189
  import "./chunk-4JH2UMJR.js";
190
- import "./chunk-7SJG5ZNX.js";
190
+ import "./chunk-B6EZB6DW.js";
191
191
  import "./chunk-UAD2WT54.js";
192
192
  import "./chunk-5RGU3J7P.js";
193
193
  import "./chunk-ZRAU6T47.js";
@@ -200,9 +200,9 @@ import "./chunk-5ZMIIR23.js";
200
200
  import "./chunk-CVMMWN6P.js";
201
201
  import "./chunk-P64WRQYV.js";
202
202
  import "./chunk-GLKOYSRU.js";
203
- import "./chunk-CLGAGPEM.js";
203
+ import "./chunk-CNMQATUF.js";
204
204
  import "./chunk-32ZKZET7.js";
205
- import "./chunk-Y2ZDNW2H.js";
205
+ import "./chunk-B2N5GZBU.js";
206
206
  import "./chunk-3PVYUPXK.js";
207
207
  import "./chunk-BA2FHPS4.js";
208
208
  import "./chunk-LBXUNNDS.js";
@@ -219,10 +219,10 @@ import {
219
219
  buildSkillDiscoveryContextBlock,
220
220
  buildSkillDiscoveryContextLayer
221
221
  } from "./chunk-7KWPNGVJ.js";
222
- import "./chunk-GSX7Z46F.js";
222
+ import "./chunk-5HAPEKNH.js";
223
223
  import {
224
224
  expandEnabledPacks
225
- } from "./chunk-OXOXPREC.js";
225
+ } from "./chunk-SM56M7N7.js";
226
226
  import "./chunk-EUGTFFO6.js";
227
227
  import "./chunk-AETZ7AD6.js";
228
228
  import "./chunk-Y6ORVLSS.js";
@@ -233,7 +233,7 @@ import {
233
233
  formatToolOverflowMarker,
234
234
  getProcessRegistry,
235
235
  readCommandActionGatePayload
236
- } from "./chunk-HVV4B6OL.js";
236
+ } from "./chunk-W622GBH3.js";
237
237
  import "./chunk-ZNFJWEN4.js";
238
238
  import "./chunk-IIX6VWLW.js";
239
239
  import "./chunk-NVOYW6H4.js";
@@ -270,7 +270,7 @@ import "./chunk-2MBTWINN.js";
270
270
  import {
271
271
  extractReferenceKeysFromMessage,
272
272
  normalizeUsage
273
- } from "./chunk-S4W4GV3B.js";
273
+ } from "./chunk-K6TZSON4.js";
274
274
  import "./chunk-5ZUL4CUO.js";
275
275
  import {
276
276
  DEFAULT_CONTEXT_WINDOW,
@@ -362,7 +362,7 @@ import {
362
362
  import {
363
363
  checkForCliUpdate,
364
364
  runSelfUpdateDetailed
365
- } from "./chunk-OKFKGCTS.js";
365
+ } from "./chunk-HTLIKE5U.js";
366
366
  import {
367
367
  parseUserIdFromAuthToken,
368
368
  resolveAuthToken,
@@ -395,15 +395,15 @@ import {
395
395
  resolveDefaultSpawn,
396
396
  spawnProcess
397
397
  } from "./chunk-Y6ROFCZO.js";
398
- import "./chunk-7GXK3WTO.js";
398
+ import "./chunk-WAZ6BTSC.js";
399
399
  import {
400
400
  dailyWelcomeTip,
401
401
  initCliLocale,
402
402
  parseCliLocale,
403
403
  setCliLocale,
404
404
  t
405
- } from "./chunk-63RO7QWZ.js";
406
- import "./chunk-WMHWFFTE.js";
405
+ } from "./chunk-UNOILAZP.js";
406
+ import "./chunk-ECX3NKRD.js";
407
407
  import "./chunk-XJWWBO34.js";
408
408
  import "./chunk-I42VC5KR.js";
409
409
  import "./chunk-U6VC4MU4.js";
@@ -3904,6 +3904,43 @@ function sanitizeRunSnapshotForNormal(snapshot) {
3904
3904
  };
3905
3905
  }
3906
3906
 
3907
+ // packages/cli/tui/runProgressHeartbeat.ts
3908
+ var RUN_STALL_AFTER_MS = 18e4;
3909
+ var RUN_LONG_INFLIGHT_MS = 6e5;
3910
+ function hasToolProgress(snapshot) {
3911
+ const count = snapshot.toolCallCount;
3912
+ if (typeof count === "number" && Number.isFinite(count) && count > 0) return true;
3913
+ if ((snapshot.lastToolNames?.length ?? 0) > 0) return true;
3914
+ return snapshot.inFlight?.kind === "tool";
3915
+ }
3916
+ function formatToolProgressFact(snapshot) {
3917
+ const raw = snapshot.toolCallCount;
3918
+ const toolCount = typeof raw === "number" && Number.isFinite(raw) ? raw : void 0;
3919
+ if (toolCount !== void 0 && toolCount > 0) {
3920
+ return t("runToolsCount", String(toolCount));
3921
+ }
3922
+ if (toolCount !== void 0 && hasToolProgress(snapshot)) return void 0;
3923
+ const llm = snapshot.llmCallCount;
3924
+ if (typeof llm === "number" && Number.isFinite(llm) && llm > 0) {
3925
+ return t("runLlmCalls", String(llm));
3926
+ }
3927
+ if (toolCount !== void 0) return t("runToolsCount", "0");
3928
+ return void 0;
3929
+ }
3930
+ function runProgressStalled(snapshot, now) {
3931
+ if (isAgentRunTerminalStatus(snapshot.status)) return false;
3932
+ const lastEventAt = snapshot.lastEventAt;
3933
+ if (typeof lastEventAt !== "number" || !Number.isFinite(lastEventAt) || lastEventAt <= 0) {
3934
+ return false;
3935
+ }
3936
+ if (now - lastEventAt <= RUN_STALL_AFTER_MS) return false;
3937
+ const inFlight = snapshot.inFlight;
3938
+ if (inFlight && typeof inFlight.startedAt === "number" && Number.isFinite(inFlight.startedAt) && now - inFlight.startedAt <= RUN_LONG_INFLIGHT_MS) {
3939
+ return false;
3940
+ }
3941
+ return true;
3942
+ }
3943
+
3907
3944
  // packages/cli/tui/agentRunPanelLines.ts
3908
3945
  var AUTO_IDENTITY_PATTERNS = [
3909
3946
  /^agent-[0-9a-f]{8,}-[a-z0-9]/i,
@@ -4030,9 +4067,8 @@ function runZoneFacts(snapshot, now) {
4030
4067
  }
4031
4068
  const unassigned = formatUnassignedFact(snapshot);
4032
4069
  if (unassigned) facts.push(unassigned);
4033
- if (typeof snapshot.toolCallCount === "number" && Number.isFinite(snapshot.toolCallCount)) {
4034
- facts.push(t("runToolsCount", String(snapshot.toolCallCount)));
4035
- }
4070
+ const toolFact = formatToolProgressFact(snapshot);
4071
+ if (toolFact) facts.push(toolFact);
4036
4072
  if (typeof snapshot.credits === "number" && Number.isFinite(snapshot.credits)) {
4037
4073
  facts.push(formatCreditsChip(snapshot.credits, { compact: true }));
4038
4074
  }
@@ -4044,7 +4080,7 @@ function runZoneFacts(snapshot, now) {
4044
4080
  if (lastTool) facts.push(clipText(lastTool, 20));
4045
4081
  }
4046
4082
  if (snapshot.errorMessage) facts.push(clipText(snapshot.errorMessage, 40));
4047
- return { time, rest: facts };
4083
+ return { time, rest: facts, stalled: runProgressStalled(snapshot, now) };
4048
4084
  }
4049
4085
  var RUN_ZONE_COMPACT_ROWS = 16;
4050
4086
  var RUN_ZONE_TINY_ROWS = 10;
@@ -4075,20 +4111,22 @@ function formatRunZoneLines(snapshots, colorEnabled, now = Date.now(), maxRows =
4075
4111
  const clock = remoteTaskClock(carrier, now);
4076
4112
  const icon = runZoneLeadIcon(snapshot.status, carrier);
4077
4113
  const label = runZoneLabel(snapshot, duplicateTitles);
4078
- const { time, rest } = runZoneFacts(snapshot, clock ?? now);
4114
+ const { time, rest, stalled } = runZoneFacts(snapshot, clock ?? now);
4079
4115
  const remoteFacts = remoteTaskFacts(carrier, now);
4080
4116
  const hideCredits = remoteCostIsExplicitlyUnknown(carrier);
4081
4117
  const base = hideCredits ? rest.filter((fact) => !fact.startsWith("\u26A1")) : rest;
4082
4118
  const hasError = Boolean(snapshot.errorMessage);
4083
4119
  let factList = [
4084
4120
  ...time && clock !== null ? [time] : [],
4121
+ // 停滞提示紧跟耗时:宽度不够被裁时,它比积分/工具名更该留在屏上。
4122
+ ...stalled ? [t("runStalled")] : [],
4085
4123
  ...base,
4086
4124
  ...remoteFacts
4087
4125
  ];
4088
4126
  let shownLabel = label;
4089
4127
  if (columns !== void 0) {
4090
4128
  const fixed = (l, f) => visibleWidth(`${icon} ${l}${f.length ? ` \xB7 ${f.join(" \xB7 ")}` : ""}`);
4091
- const keep = time ? 1 : 0;
4129
+ const keep = (time && clock !== null ? 1 : 0) + (stalled ? 1 : 0);
4092
4130
  while (factList.length > keep && fixed(label, factList) > columns) factList.pop();
4093
4131
  if (fixed(label, factList) > columns) {
4094
4132
  const tail = factList.length ? ` \xB7 ${factList.join(" \xB7 ")}` : "";
@@ -4102,7 +4140,7 @@ function formatRunZoneLines(snapshots, colorEnabled, now = Date.now(), maxRows =
4102
4140
  continue;
4103
4141
  }
4104
4142
  lines.push(
4105
- themeText(icon, runStatusTone(snapshot.status), true) + " " + themeText(shownLabel, "chrome", true) + themeText(factsPart, hasError ? "danger" : "chrome")
4143
+ themeText(icon, runStatusTone(snapshot.status), true) + " " + themeText(shownLabel, "chrome", true) + themeText(factsPart, hasError ? "danger" : stalled ? "warning" : "chrome")
4106
4144
  );
4107
4145
  }
4108
4146
  const hidden = display.length - shown.length;
@@ -4815,6 +4853,7 @@ function snapshotFromRunRecord(record, now) {
4815
4853
  const endedAt = readTimestamp(record.endedAt);
4816
4854
  const activity = record.activity;
4817
4855
  const counters = activity?.counters;
4856
+ const lastEventAtMs = activity?.lastEventAt ? Date.parse(activity.lastEventAt) : NaN;
4818
4857
  let inFlight = null;
4819
4858
  const raw = activity?.inFlight;
4820
4859
  if (raw && !isAgentRunTerminalStatus(record.status)) {
@@ -4834,6 +4873,10 @@ function snapshotFromRunRecord(record, now) {
4834
4873
  ...startedAt !== void 0 ? { startedAt } : {},
4835
4874
  ...endedAt !== void 0 ? { finishedAt: endedAt } : {},
4836
4875
  ...typeof counters?.toolCalls === "number" ? { toolCallCount: counters.toolCalls } : {},
4876
+ // 纯推理 run(0 次工具调用)的心跳:模型调用次数 + 最后一次事件时刻。
4877
+ // 两者都来自记录里已有的字段,不新增任何采集。
4878
+ ...typeof counters?.llmCalls === "number" ? { llmCallCount: counters.llmCalls } : {},
4879
+ ...Number.isFinite(lastEventAtMs) ? { lastEventAt: lastEventAtMs } : {},
4837
4880
  // 收尾自报的平台积分 → dock 行「⚡ x.xx 积分」。
4838
4881
  ...typeof record.credits === "number" && Number.isFinite(record.credits) ? { credits: record.credits } : {},
4839
4882
  // note 在终态时是死因("orphaned: process gone…"),非终态时只是备注。
@@ -4849,6 +4892,9 @@ function fingerprint(snapshot) {
4849
4892
  snapshot.title ?? "",
4850
4893
  snapshot.unassigned ?? false,
4851
4894
  snapshot.toolCallCount ?? -1,
4895
+ // 模型调用次数与事件时刻都是「变了就该重画」:纯推理 run 的心跳靠它们。
4896
+ snapshot.llmCallCount ?? -1,
4897
+ snapshot.lastEventAt ?? 0,
4852
4898
  snapshot.errorMessage ?? "",
4853
4899
  snapshot.finishedAt ?? 0,
4854
4900
  snapshot.credits ?? -1,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  cleanupCliSessionForDialog
3
- } from "./chunk-JOOWHDGM.js";
3
+ } from "./chunk-A5BLRE3G.js";
4
4
  import {
5
5
  getPrimaryDialogAgentId,
6
6
  removeDialogAgentId
@@ -17,7 +17,7 @@ import "./chunk-32ZKZET7.js";
17
17
  import {
18
18
  patch,
19
19
  selectById
20
- } from "./chunk-Y2ZDNW2H.js";
20
+ } from "./chunk-B2N5GZBU.js";
21
21
  import "./chunk-3PVYUPXK.js";
22
22
  import "./chunk-BA2FHPS4.js";
23
23
  import "./chunk-LBXUNNDS.js";
@@ -37,7 +37,7 @@ import "./chunk-KUG52IAP.js";
37
37
  import "./chunk-LCBAMY2M.js";
38
38
  import "./chunk-4SN6J65J.js";
39
39
  import "./chunk-CF7PE763.js";
40
- import "./chunk-WMHWFFTE.js";
40
+ import "./chunk-ECX3NKRD.js";
41
41
  import "./chunk-XJWWBO34.js";
42
42
  import "./chunk-I42VC5KR.js";
43
43
  import "./chunk-U6VC4MU4.js";
@@ -2,64 +2,64 @@ import {
2
2
  fetchAgentContexts,
3
3
  responsesJsonToChatCompletions,
4
4
  updateAgentTokens
5
- } from "./chunk-7N6C3IHF.js";
5
+ } from "./chunk-JCDNXY6M.js";
6
6
  import {
7
7
  generateRequestBody,
8
8
  performFetchRequest,
9
9
  sanitizeOutboundBody,
10
10
  stripModelToolArgs
11
- } from "./chunk-MMOISK6N.js";
11
+ } from "./chunk-FLOZJJZO.js";
12
12
  import "./chunk-HS7MLR74.js";
13
13
  import {
14
14
  findToolExecutor
15
- } from "./chunk-6G5V4Y3V.js";
15
+ } from "./chunk-XY6RHOUI.js";
16
16
  import "./chunk-KFHREHUQ.js";
17
17
  import "./chunk-53RSTB7T.js";
18
18
  import "./chunk-OXME3PEE.js";
19
19
  import "./chunk-KSTEXKL6.js";
20
20
  import "./chunk-VF4K2QE6.js";
21
- import "./chunk-LOQYQUM2.js";
21
+ import "./chunk-53PBXLID.js";
22
22
  import {
23
23
  mergeReferences
24
- } from "./chunk-3QFOYFJW.js";
24
+ } from "./chunk-LMHU2NXQ.js";
25
25
  import {
26
26
  getToolResultErrorData
27
- } from "./chunk-O2MBTX37.js";
27
+ } from "./chunk-RKUSD72B.js";
28
28
  import "./chunk-NF64D32W.js";
29
29
  import "./chunk-3L2WKC3W.js";
30
30
  import "./chunk-VYNMQ6HW.js";
31
- import "./chunk-R6AJKHEU.js";
31
+ import "./chunk-FSOJN3F7.js";
32
32
  import "./chunk-MYOH447Z.js";
33
- import "./chunk-ER4UTWWS.js";
33
+ import "./chunk-DFF6B7P7.js";
34
34
  import "./chunk-YIRADHSY.js";
35
35
  import "./chunk-AGIM7IMJ.js";
36
36
  import "./chunk-63W5N6P3.js";
37
- import "./chunk-H6FUDBS3.js";
38
- import "./chunk-RGTPR57U.js";
37
+ import "./chunk-23QZ43OQ.js";
38
+ import "./chunk-4YS6SAUO.js";
39
39
  import "./chunk-5XBUWM6I.js";
40
- import "./chunk-RBVR7P3M.js";
40
+ import "./chunk-ZRATZ7OH.js";
41
41
  import "./chunk-TZXPT53C.js";
42
42
  import "./chunk-LEC5ALIN.js";
43
43
  import "./chunk-523DITKR.js";
44
- import "./chunk-PVZ3GB25.js";
44
+ import "./chunk-ZLBQ55HI.js";
45
45
  import "./chunk-BYXBJQAS.js";
46
46
  import "./chunk-QYPE3TS3.js";
47
- import "./chunk-JOOWHDGM.js";
47
+ import "./chunk-A5BLRE3G.js";
48
48
  import "./chunk-4JH2UMJR.js";
49
- import "./chunk-7SJG5ZNX.js";
49
+ import "./chunk-B6EZB6DW.js";
50
50
  import "./chunk-UAD2WT54.js";
51
51
  import "./chunk-5RGU3J7P.js";
52
52
  import "./chunk-ZRAU6T47.js";
53
53
  import "./chunk-4LCOCOR5.js";
54
54
  import "./chunk-OWYYDMGJ.js";
55
55
  import "./chunk-YDH3FDFQ.js";
56
- import "./chunk-CLGAGPEM.js";
56
+ import "./chunk-CNMQATUF.js";
57
57
  import {
58
58
  selectCurrentServer
59
59
  } from "./chunk-32ZKZET7.js";
60
60
  import {
61
61
  read
62
- } from "./chunk-Y2ZDNW2H.js";
62
+ } from "./chunk-B2N5GZBU.js";
63
63
  import "./chunk-3PVYUPXK.js";
64
64
  import "./chunk-BA2FHPS4.js";
65
65
  import "./chunk-LBXUNNDS.js";
@@ -74,8 +74,8 @@ import {
74
74
  } from "./chunk-PXYBUFDB.js";
75
75
  import "./chunk-ZSO5B6SW.js";
76
76
  import "./chunk-D2MDMY2M.js";
77
- import "./chunk-GSX7Z46F.js";
78
- import "./chunk-OXOXPREC.js";
77
+ import "./chunk-5HAPEKNH.js";
78
+ import "./chunk-SM56M7N7.js";
79
79
  import "./chunk-EUGTFFO6.js";
80
80
  import "./chunk-AETZ7AD6.js";
81
81
  import "./chunk-Y6ORVLSS.js";
@@ -91,7 +91,7 @@ import {
91
91
  resolveAgentCallPlan,
92
92
  resolveClientWire
93
93
  } from "./chunk-WFUIXNKC.js";
94
- import "./chunk-S4W4GV3B.js";
94
+ import "./chunk-K6TZSON4.js";
95
95
  import "./chunk-5ZUL4CUO.js";
96
96
  import "./chunk-JIFYXQRD.js";
97
97
  import "./chunk-H57T64RA.js";
@@ -128,7 +128,7 @@ import {
128
128
  import "./chunk-LCBAMY2M.js";
129
129
  import "./chunk-4SN6J65J.js";
130
130
  import "./chunk-CF7PE763.js";
131
- import "./chunk-WMHWFFTE.js";
131
+ import "./chunk-ECX3NKRD.js";
132
132
  import "./chunk-XJWWBO34.js";
133
133
  import "./chunk-I42VC5KR.js";
134
134
  import "./chunk-U6VC4MU4.js";
@@ -4,7 +4,7 @@ import {
4
4
  import "./chunk-ZWQUWF6W.js";
5
5
  import {
6
6
  t
7
- } from "./chunk-63RO7QWZ.js";
7
+ } from "./chunk-UNOILAZP.js";
8
8
  import "./chunk-3EUW3WEO.js";
9
9
  import "./chunk-4VNS5WPM.js";
10
10
 
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  setDialogExtraReferencesAction
3
- } from "./chunk-ER4UTWWS.js";
3
+ } from "./chunk-DFF6B7P7.js";
4
4
  import "./chunk-ZRAU6T47.js";
5
5
  import "./chunk-4LCOCOR5.js";
6
6
  import "./chunk-OWYYDMGJ.js";
7
7
  import "./chunk-YDH3FDFQ.js";
8
- import "./chunk-Y2ZDNW2H.js";
8
+ import "./chunk-B2N5GZBU.js";
9
9
  import "./chunk-3PVYUPXK.js";
10
10
  import "./chunk-BA2FHPS4.js";
11
11
  import "./chunk-LBXUNNDS.js";
@@ -24,7 +24,7 @@ import "./chunk-KUG52IAP.js";
24
24
  import "./chunk-LCBAMY2M.js";
25
25
  import "./chunk-4SN6J65J.js";
26
26
  import "./chunk-CF7PE763.js";
27
- import "./chunk-WMHWFFTE.js";
27
+ import "./chunk-ECX3NKRD.js";
28
28
  import "./chunk-XJWWBO34.js";
29
29
  import "./chunk-I42VC5KR.js";
30
30
  import "./chunk-U6VC4MU4.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  cleanupCliSessionForDialog
3
- } from "./chunk-JOOWHDGM.js";
3
+ } from "./chunk-A5BLRE3G.js";
4
4
  import {
5
5
  getPrimaryDialogAgentId,
6
6
  replacePrimaryDialogAgentId
@@ -17,7 +17,7 @@ import "./chunk-32ZKZET7.js";
17
17
  import {
18
18
  patch,
19
19
  selectById
20
- } from "./chunk-Y2ZDNW2H.js";
20
+ } from "./chunk-B2N5GZBU.js";
21
21
  import "./chunk-3PVYUPXK.js";
22
22
  import "./chunk-BA2FHPS4.js";
23
23
  import "./chunk-LBXUNNDS.js";
@@ -37,7 +37,7 @@ import "./chunk-KUG52IAP.js";
37
37
  import "./chunk-LCBAMY2M.js";
38
38
  import "./chunk-4SN6J65J.js";
39
39
  import "./chunk-CF7PE763.js";
40
- import "./chunk-WMHWFFTE.js";
40
+ import "./chunk-ECX3NKRD.js";
41
41
  import "./chunk-XJWWBO34.js";
42
42
  import "./chunk-I42VC5KR.js";
43
43
  import "./chunk-U6VC4MU4.js";
@@ -20,7 +20,7 @@ import {
20
20
  toTimestampMs,
21
21
  upsert,
22
22
  write
23
- } from "./chunk-Y2ZDNW2H.js";
23
+ } from "./chunk-B2N5GZBU.js";
24
24
  import "./chunk-3PVYUPXK.js";
25
25
  import "./chunk-BA2FHPS4.js";
26
26
  import "./chunk-LBXUNNDS.js";
@@ -59,7 +59,7 @@ import "./chunk-CF7PE763.js";
59
59
  import {
60
60
  createUserKey,
61
61
  createUserPreferenceKey
62
- } from "./chunk-WMHWFFTE.js";
62
+ } from "./chunk-ECX3NKRD.js";
63
63
  import {
64
64
  ulid
65
65
  } from "./chunk-XJWWBO34.js";
@@ -3,11 +3,11 @@ import {
3
3
  } from "./chunk-M3JEW6N6.js";
4
4
  import {
5
5
  readLiveDbRecordAfterTombstoneMerge
6
- } from "./chunk-KOIGM3KU.js";
6
+ } from "./chunk-5DPVRMSY.js";
7
7
  import {
8
8
  readDbRecord,
9
9
  writeAgentRecord
10
- } from "./chunk-WBCYL63M.js";
10
+ } from "./chunk-GYVLAHA4.js";
11
11
  import "./chunk-RJ3EYB5G.js";
12
12
  import "./chunk-NBTY7YJF.js";
13
13
  import "./chunk-OXME3PEE.js";
@@ -20,7 +20,7 @@ import {
20
20
  resolveFileCategory
21
21
  } from "./chunk-3PVYUPXK.js";
22
22
  import "./chunk-D2MDMY2M.js";
23
- import "./chunk-HVV4B6OL.js";
23
+ import "./chunk-W622GBH3.js";
24
24
  import "./chunk-ZNFJWEN4.js";
25
25
  import "./chunk-IIX6VWLW.js";
26
26
  import "./chunk-NVOYW6H4.js";
@@ -41,7 +41,7 @@ import "./chunk-JLR5NWP2.js";
41
41
  import "./chunk-WJZOQR2J.js";
42
42
  import "./chunk-WFUIXNKC.js";
43
43
  import "./chunk-2MBTWINN.js";
44
- import "./chunk-S4W4GV3B.js";
44
+ import "./chunk-K6TZSON4.js";
45
45
  import "./chunk-5ZUL4CUO.js";
46
46
  import "./chunk-JIFYXQRD.js";
47
47
  import "./chunk-H57T64RA.js";
@@ -79,7 +79,7 @@ import "./chunk-LCBAMY2M.js";
79
79
  import "./chunk-4SN6J65J.js";
80
80
  import "./chunk-CF7PE763.js";
81
81
  import "./chunk-Y6ROFCZO.js";
82
- import "./chunk-WMHWFFTE.js";
82
+ import "./chunk-ECX3NKRD.js";
83
83
  import "./chunk-XJWWBO34.js";
84
84
  import "./chunk-I42VC5KR.js";
85
85
  import "./chunk-U6VC4MU4.js";