nolo-cli 0.25.2 → 0.26.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 (81) hide show
  1. package/README.md +9 -18
  2. package/{_executeModel-LXNDVFT2.js → _executeModel-ZPNYAEFW.js} +18 -18
  3. package/{agentDeleteCommand-DMAYEVOP.js → agentDeleteCommand-5ZV4433K.js} +12 -12
  4. package/{agentEmailCommands-RVGRDAD6.js → agentEmailCommands-Z7KOYDVQ.js} +23 -23
  5. package/{agentListCommands-SMW3NENV.js → agentListCommands-UQUXJYUN.js} +14 -14
  6. package/{agentMachineCommands-VGE5A52U.js → agentMachineCommands-53O6P6L5.js} +12 -12
  7. package/{agentRecordCommands-UHFL5OLB.js → agentRecordCommands-ZRYNBSSS.js} +22 -22
  8. package/{agentRunCommand-GG4Z735K.js → agentRunCommand-B73MKVOG.js} +22 -22
  9. package/{agentRuntimeLocal-7N2SUWO2.js → agentRuntimeLocal-GVNERRKQ.js} +11 -9
  10. package/{agentSlice-WY7SEYXO.js → agentSlice-OJBHIL34.js} +1 -1
  11. package/{appDeleteCommands-AUC7KDHU.js → appDeleteCommands-23Z3Z6KE.js} +13 -13
  12. package/{appDeployCommands-OVYWXTNP.js → appDeployCommands-3MFAR4Z7.js} +13 -13
  13. package/{appDeployStatusCommands-DNUCH3KK.js → appDeployStatusCommands-JHU6GSN4.js} +13 -13
  14. package/{appGetCommands-4DLM2P37.js → appGetCommands-24J55H2Y.js} +13 -13
  15. package/{appListCommands-CL4VLCZW.js → appListCommands-HE5KP3PH.js} +13 -13
  16. package/{authCommand-W2BDNL4D.js → authCommand-KGRK6MNU.js} +8 -8
  17. package/{authCommands-NYZM2B2I.js → authCommands-JSOG2H4E.js} +2 -2
  18. package/{chunk-OBO5YB35.js → chunk-5DWZ46RJ.js} +1 -1
  19. package/{chunk-E2VQTGUO.js → chunk-5EDKWSQN.js} +8 -8
  20. package/{chunk-B6RCQ4BM.js → chunk-AAWJ5S3G.js} +1 -1
  21. package/{chunk-THN2YFSR.js → chunk-ADE6577S.js} +62 -17
  22. package/{chunk-SDDOGQ6M.js → chunk-AOPOTHFK.js} +1 -1
  23. package/{chunk-OTIS3VY6.js → chunk-AZW5AHMW.js} +1 -1
  24. package/{chunk-7HD7MCCZ.js → chunk-CV6BM7LU.js} +1 -1
  25. package/{chunk-ACBCDO2E.js → chunk-CWTT2NZ6.js} +2 -2
  26. package/{chunk-OHK3HE4G.js → chunk-CZHE6LLV.js} +74 -11
  27. package/{chunk-35RYGII3.js → chunk-FXFGNOT2.js} +67 -1
  28. package/{chunk-T3EOQH72.js → chunk-G36SUBHA.js} +14 -4
  29. package/{chunk-QJZJW65A.js → chunk-GD23ZX7Z.js} +3 -3
  30. package/{chunk-DXJS7VSG.js → chunk-GE6IWA5N.js} +9 -2
  31. package/{chunk-P5AVCQF3.js → chunk-GGB6MPHD.js} +19 -18
  32. package/{chunk-NZXRTSOY.js → chunk-GNGOZMU2.js} +2 -2
  33. package/{chunk-6NUG4BJE.js → chunk-J2WT5CEO.js} +1 -1
  34. package/{chunk-XJBAAOKS.js → chunk-JJ2WUBFN.js} +1 -1
  35. package/{chunk-ONGWRXVA.js → chunk-KURQBS7S.js} +1 -1
  36. package/{chunk-J6MEBHAT.js → chunk-LEHTC2FI.js} +1 -1
  37. package/{chunk-6OMNSBFW.js → chunk-LLDGWLML.js} +8 -8
  38. package/{chunk-MSBHAQVV.js → chunk-MCXQNEJ3.js} +1 -1
  39. package/{chunk-WV3WZRYZ.js → chunk-P3RZ6DHN.js} +74 -15
  40. package/{chunk-5IIJMMC3.js → chunk-PMCKFQYC.js} +1 -1
  41. package/{chunk-UTADKKM7.js → chunk-PTKI7TIN.js} +101 -23
  42. package/{chunk-5UI2CDQG.js → chunk-PXPISYEH.js} +14 -9
  43. package/{chunk-LWHK7TZR.js → chunk-PY7VGC5M.js} +24 -5
  44. package/{chunk-C4JWF4EX.js → chunk-RM464B7I.js} +2 -2
  45. package/{chunk-2KPE5HQM.js → chunk-S7AV3NCK.js} +47 -14
  46. package/{chunk-5TAM6OX3.js → chunk-SIUEKVK4.js} +136 -41
  47. package/{chunk-XR6PNQ3N.js → chunk-TLYHUIWF.js} +3 -3
  48. package/{chunk-RRJD2ZUV.js → chunk-TNM27YZ7.js} +3 -3
  49. package/{chunk-J3HWN4B5.js → chunk-TWA4L7J7.js} +1 -1
  50. package/{chunk-UZH44DWK.js → chunk-WCP5FDTF.js} +13 -20
  51. package/{chunk-4POUK2BV.js → chunk-WSQLK2KR.js} +1 -1
  52. package/{chunk-OMWJXZSZ.js → chunk-XNZJVYFS.js} +1 -1
  53. package/{chunk-KF3VWOQ6.js → chunk-YJY7HODU.js} +1 -1
  54. package/{chunk-DZNONG7L.js → chunk-ZFL3LTU7.js} +2 -2
  55. package/{createAgentAutomationAction-B5G57KMG.js → createAgentAutomationAction-PO62NUR7.js} +6 -6
  56. package/{createDialogAction-SYKO3ACQ.js → createDialogAction-ORFRYI3C.js} +7 -7
  57. package/{createPageAction-UBO6CXTT.js → createPageAction-XWVMNTYH.js} +6 -6
  58. package/{dialogCommands-FQPSK7QE.js → dialogCommands-XTJHROXM.js} +13 -13
  59. package/{dialogSlice-OFGPXYFS.js → dialogSlice-DJXC53YW.js} +6 -6
  60. package/{docCreateCommands-ELKBZBHI.js → docCreateCommands-T2XRVXYS.js} +12 -12
  61. package/{docDeleteCommands-R6X3FKHX.js → docDeleteCommands-L7RXFXY3.js} +13 -13
  62. package/{docReadCommands-QNVUXQNM.js → docReadCommands-M5PYNADQ.js} +12 -12
  63. package/{docStore-WFMCDOGV.js → docStore-6LKLLFDW.js} +7 -7
  64. package/{docUpdateCommands-OOR4CWYI.js → docUpdateCommands-OA5EGPLQ.js} +12 -12
  65. package/{getPricing-ZOASM7TQ.js → getPricing-6C3C47Y4.js} +3 -3
  66. package/{handleSendMessageAction-R3AP5MQY.js → handleSendMessageAction-ILFGZTN5.js} +6 -6
  67. package/index.js +68 -68
  68. package/{machineCommands-FPZ2UVCS.js → machineCommands-AKAQGPAO.js} +21 -21
  69. package/{machineWsRunDispatch-XAVKPZLL.js → machineWsRunDispatch-RSBERM64.js} +21 -21
  70. package/{models-DUNBMXRQ.js → models-ILWKIX2Y.js} +2 -2
  71. package/package.json +1 -1
  72. package/{readlineWorkspace-O3D2LRYG.js → readlineWorkspace-TUH3SFHO.js} +112 -62
  73. package/{runAgentClientLoop-UWNABHIZ.js → runAgentClientLoop-C3QB2EXV.js} +15 -15
  74. package/{spaceCommands-L6R7DD2L.js → spaceCommands-SXYOFGUJ.js} +12 -12
  75. package/{spaceSlice-2UQAI6GT.js → spaceSlice-6BHMRP5O.js} +6 -6
  76. package/{streamAgentChatTurn-SS62OWZZ.js → streamAgentChatTurn-GF5W5OIP.js} +18 -18
  77. package/{tableCommands-HEQYT2KP.js → tableCommands-QSZILI7I.js} +1 -1
  78. package/{tools-NVSLAOK4.js → tools-KBCLJ43G.js} +11 -11
  79. package/{tuiSummaryLlmCaller-A7OO23I4.js → tuiSummaryLlmCaller-ARIMGILF.js} +4 -4
  80. package/{updateCommands-HTCOBXCA.js → updateCommands-AK2RDOFR.js} +8 -2
  81. package/{updateDialogTitleAction-WMWZQ764.js → updateDialogTitleAction-LMHZUY4Q.js} +6 -6
@@ -3,7 +3,7 @@ import {
3
3
  normalizeDialogRecord,
4
4
  readDialogSnapshot,
5
5
  sortDialogs
6
- } from "./chunk-KF3VWOQ6.js";
6
+ } from "./chunk-YJY7HODU.js";
7
7
  import {
8
8
  ANSI_ESCAPE_REGEX,
9
9
  CLI_AUTO_TIER_AGENT_KEY_TABLE,
@@ -59,7 +59,7 @@ import {
59
59
  visibleWidth,
60
60
  wrapTextToLines,
61
61
  wrapTranscriptLine
62
- } from "./chunk-2KPE5HQM.js";
62
+ } from "./chunk-S7AV3NCK.js";
63
63
  import "./chunk-DZ3XJVET.js";
64
64
  import "./chunk-6HYVJV7B.js";
65
65
  import {
@@ -68,12 +68,12 @@ import {
68
68
  listRemoteAgents,
69
69
  listRemoteAgentsAcrossServers,
70
70
  normalizeListedAgent
71
- } from "./chunk-RRJD2ZUV.js";
71
+ } from "./chunk-TNM27YZ7.js";
72
72
  import "./chunk-ID4G2MAR.js";
73
73
  import {
74
74
  listUserRecordsFromServers,
75
75
  readLiveDbRecordAfterTombstoneMerge
76
- } from "./chunk-5IIJMMC3.js";
76
+ } from "./chunk-PMCKFQYC.js";
77
77
  import {
78
78
  createCliLocalRuntimeAdapter,
79
79
  initCliLocale,
@@ -81,8 +81,8 @@ import {
81
81
  readTimestamp,
82
82
  setCliLocale,
83
83
  t
84
- } from "./chunk-UTADKKM7.js";
85
- import "./chunk-J3HWN4B5.js";
84
+ } from "./chunk-PTKI7TIN.js";
85
+ import "./chunk-TWA4L7J7.js";
86
86
  import {
87
87
  getReadableCliDb
88
88
  } from "./chunk-WFHXMLHZ.js";
@@ -90,8 +90,8 @@ import {
90
90
  deleteDbRecord,
91
91
  queryUserRecords,
92
92
  readDbRecord
93
- } from "./chunk-6NUG4BJE.js";
94
- import "./chunk-OTIS3VY6.js";
93
+ } from "./chunk-J2WT5CEO.js";
94
+ import "./chunk-AZW5AHMW.js";
95
95
  import {
96
96
  NOLO_DEFAULT_AGENT_KEY,
97
97
  resolveCliAgentKeyInput
@@ -101,30 +101,30 @@ import "./chunk-54VHTARN.js";
101
101
  import "./chunk-JEXVIMYZ.js";
102
102
  import {
103
103
  prepareTools
104
- } from "./chunk-DZNONG7L.js";
105
- import "./chunk-OMWJXZSZ.js";
106
- import "./chunk-P5AVCQF3.js";
104
+ } from "./chunk-ZFL3LTU7.js";
105
+ import "./chunk-XNZJVYFS.js";
106
+ import "./chunk-GGB6MPHD.js";
107
107
  import "./chunk-RQSOAMPJ.js";
108
108
  import "./chunk-I6RJGORZ.js";
109
- import "./chunk-B6RCQ4BM.js";
109
+ import "./chunk-AAWJ5S3G.js";
110
110
  import "./chunk-KQHGZWSV.js";
111
111
  import "./chunk-3LY4F7SV.js";
112
112
  import "./chunk-VF4K2QE6.js";
113
- import "./chunk-ACBCDO2E.js";
113
+ import "./chunk-CWTT2NZ6.js";
114
114
  import "./chunk-MALVZUYL.js";
115
115
  import "./chunk-VP4WJWKW.js";
116
116
  import "./chunk-63W5N6P3.js";
117
117
  import "./chunk-WJRJDX2W.js";
118
- import "./chunk-NZXRTSOY.js";
118
+ import "./chunk-GNGOZMU2.js";
119
119
  import {
120
120
  extractReferenceKeysFromMessage
121
- } from "./chunk-THN2YFSR.js";
121
+ } from "./chunk-ADE6577S.js";
122
122
  import {
123
123
  buildBuiltinSummaryContent
124
124
  } from "./chunk-XOIF2TNF.js";
125
125
  import "./chunk-MRC4Q34M.js";
126
126
  import "./chunk-SIZQB7BD.js";
127
- import "./chunk-QJZJW65A.js";
127
+ import "./chunk-GD23ZX7Z.js";
128
128
  import "./chunk-YYLHWIW6.js";
129
129
  import "./chunk-CWMSB67P.js";
130
130
  import "./chunk-ROJI6DRT.js";
@@ -144,14 +144,14 @@ import {
144
144
  buildLocalWorkspaceOpenAiTools,
145
145
  buildLocalWorkspaceToolset,
146
146
  getProcessRegistry
147
- } from "./chunk-5TAM6OX3.js";
147
+ } from "./chunk-SIUEKVK4.js";
148
148
  import "./chunk-ZNFJWEN4.js";
149
- import "./chunk-MSBHAQVV.js";
149
+ import "./chunk-MCXQNEJ3.js";
150
150
  import "./chunk-OIQPORYI.js";
151
151
  import {
152
152
  readCommandActionGatePayload,
153
153
  resolveAgentImageInputSupport
154
- } from "./chunk-WV3WZRYZ.js";
154
+ } from "./chunk-P3RZ6DHN.js";
155
155
  import "./chunk-N7J63Q6C.js";
156
156
  import {
157
157
  buildCurrentTimeBlock,
@@ -161,8 +161,8 @@ import {
161
161
  import "./chunk-D34RI6NI.js";
162
162
  import {
163
163
  resolvePlatformAuthToken
164
- } from "./chunk-5UI2CDQG.js";
165
- import "./chunk-UZH44DWK.js";
164
+ } from "./chunk-PXPISYEH.js";
165
+ import "./chunk-WCP5FDTF.js";
166
166
  import "./chunk-2MBTWINN.js";
167
167
  import {
168
168
  DEFAULT_CONTEXT_WINDOW,
@@ -170,13 +170,13 @@ import {
170
170
  getModelContextWindow,
171
171
  planCompression,
172
172
  serializeMessageContent
173
- } from "./chunk-LWHK7TZR.js";
173
+ } from "./chunk-PY7VGC5M.js";
174
174
  import {
175
175
  clipCompactText
176
176
  } from "./chunk-5MMAK75Q.js";
177
177
  import "./chunk-5CS33IBL.js";
178
178
  import "./chunk-JZPBVBIY.js";
179
- import "./chunk-J6MEBHAT.js";
179
+ import "./chunk-LEHTC2FI.js";
180
180
  import "./chunk-ZHXJ6M7T.js";
181
181
  import "./chunk-AL2V7U3E.js";
182
182
  import "./chunk-4PWB7JRR.js";
@@ -211,12 +211,13 @@ import {
211
211
  toErrorMessage
212
212
  } from "./chunk-HNMXYYJR.js";
213
213
  import {
214
+ checkForCliUpdate,
214
215
  runSelfUpdate
215
- } from "./chunk-35RYGII3.js";
216
+ } from "./chunk-FXFGNOT2.js";
216
217
  import {
217
218
  saveProfileAgentSelection,
218
219
  saveProfileLocale
219
- } from "./chunk-DXJS7VSG.js";
220
+ } from "./chunk-GE6IWA5N.js";
220
221
  import {
221
222
  readPipeText,
222
223
  spawnProcess
@@ -230,8 +231,8 @@ import {
230
231
  import {
231
232
  DEFAULT_NOLO_SERVER_URL
232
233
  } from "./chunk-OLZBQWZU.js";
233
- import "./chunk-T3EOQH72.js";
234
- import "./chunk-OHK3HE4G.js";
234
+ import "./chunk-G36SUBHA.js";
235
+ import "./chunk-CZHE6LLV.js";
235
236
  import "./chunk-JMSCXQUG.js";
236
237
  import "./chunk-S6KVFOUG.js";
237
238
  import "./chunk-Y5GCAMGP.js";
@@ -2426,13 +2427,6 @@ var PLATFORM_AGENTS = [
2426
2427
  model: "-",
2427
2428
  kind: "platform",
2428
2429
  description: "one assistant that routes work across your agents and data"
2429
- },
2430
- {
2431
- name: "app-builder",
2432
- key: "agent-pub-01APPBUILDER00000001YAII3I",
2433
- model: "-",
2434
- kind: "platform",
2435
- description: "builds web apps, tools, charts, and product prototypes"
2436
2430
  }
2437
2431
  ];
2438
2432
  var AUTO_ROUTE_CATALOG_ENTRY = {
@@ -2481,7 +2475,7 @@ function mergeCatalogEntries(currentKey, platformAgents, privateAgents, favorite
2481
2475
  }
2482
2476
  const sortablePrivate = privateAgents.map((entry) => ({
2483
2477
  key: entry.key,
2484
- favoritedAt: favoritedAtByKey[entry.key],
2478
+ ...favoritedAtByKey[entry.key] !== void 0 ? { favoritedAt: favoritedAtByKey[entry.key] } : {},
2485
2479
  isOwned: true,
2486
2480
  updatedAt: entry.updatedAt ?? 0
2487
2481
  }));
@@ -2549,27 +2543,7 @@ function refreshAgentCatalogInBackground(args, env, cacheKey) {
2549
2543
  agentCatalogRefreshInFlight = null;
2550
2544
  });
2551
2545
  }
2552
- async function prefillCatalogFromLocalDb(args) {
2553
- const env = args.env ?? process.env;
2554
- const authToken = resolveAuthToken([], env);
2555
- const userId = authToken ? parseUserIdFromAuthToken(authToken) : null;
2556
- if (!authToken || !userId) return;
2557
- const cacheKey = `${userId}|${resolveServerUrl(env)}`;
2558
- if (agentCatalogCache?.cacheKey === cacheKey) return;
2559
- try {
2560
- const db = args.getDb ? await args.getDb() : await getReadableCliDb({ write: () => {
2561
- } });
2562
- const cached = await listLocalCachedAgents({ db, userId });
2563
- if (cached.length === 0) return;
2564
- const entries = mergeCatalogEntries(
2565
- "",
2566
- resolveCatalogPlatformAgents(env),
2567
- cached.map(listedAgentToCatalogEntry),
2568
- {}
2569
- );
2570
- agentCatalogCache = { cacheKey, at: 0, entries };
2571
- } catch {
2572
- }
2546
+ async function prefillCatalogFromLocalDb(_args) {
2573
2547
  }
2574
2548
  function prefetchAgentCatalog(args) {
2575
2549
  void (async () => {
@@ -2623,6 +2597,10 @@ async function fetchRawCatalogData(args, env) {
2623
2597
  }
2624
2598
  const privateAgents = listedAgents.map(listedAgentToCatalogEntry);
2625
2599
  const favoritedAtByKey = await favoritesPromise;
2600
+ for (const agent of listedAgents) {
2601
+ const favoritedAt = [agent.privateKey, agent.publicKey, agent.id].map((key) => favoritedAtByKey[key]).find((value) => value !== void 0);
2602
+ if (favoritedAt !== void 0) favoritedAtByKey[agent.privateKey] = favoritedAt;
2603
+ }
2626
2604
  const existingKeys = /* @__PURE__ */ new Set();
2627
2605
  for (const agent of listedAgents) {
2628
2606
  existingKeys.add(agent.privateKey);
@@ -3320,7 +3298,16 @@ function renderWelcome(state, frame = 0, maxFrames = 0, columns) {
3320
3298
  if (columns < widestSceneCol) sceneArt = "";
3321
3299
  }
3322
3300
  const versionLine = colorEnabled ? `${themeColorSequence("accent")}nolo\x1B[0m ${state.cliVersion ?? ""} | server ${state.serverUrl}`.replace(" |", " |") : `nolo ${state.cliVersion ?? ""} | server ${state.serverUrl}`.replace(" |", " |");
3323
- const body = sceneArt ? [sceneArt, versionLine, t("welcomeHint"), ""] : [versionLine, t("welcomeHint"), ""];
3301
+ const updateLine = state.updateAvailable ? themeText(
3302
+ t(
3303
+ "updateAvailable",
3304
+ state.updateAvailable.latestVersion,
3305
+ state.cliVersion ?? t("versionUnknown")
3306
+ ),
3307
+ "accent",
3308
+ colorEnabled
3309
+ ) : null;
3310
+ const body = sceneArt ? [sceneArt, versionLine, ...updateLine ? [updateLine] : [], t("welcomeHint"), ""] : [versionLine, ...updateLine ? [updateLine] : [], t("welcomeHint"), ""];
3324
3311
  return body.join("\n");
3325
3312
  }
3326
3313
  function renderPrompt(_state) {
@@ -4667,6 +4654,17 @@ function createChatQueueTuiBinding(runTurn) {
4667
4654
  };
4668
4655
  }
4669
4656
 
4657
+ // packages/cli/tui/terminalNotification.ts
4658
+ function shouldEmitTerminalBell(decision) {
4659
+ return !decision.wasAborted && !decision.streamInterrupted && decision.exitCode === 0 && decision.interactive;
4660
+ }
4661
+ function emitTerminalBell(output) {
4662
+ try {
4663
+ output.write("\x07");
4664
+ } catch {
4665
+ }
4666
+ }
4667
+
4670
4668
  // packages/cli/tui/tuiHistory.ts
4671
4669
  var MAX_TUI_HISTORY_TURNS = 500;
4672
4670
  var turnLineCache = /* @__PURE__ */ new WeakMap();
@@ -5942,16 +5940,22 @@ function waitForActionGate(rl, input, output, gate, spawnRunner) {
5942
5940
  });
5943
5941
  }
5944
5942
  function persistAgentSelection(state, env, saveSelection = saveProfileAgentSelection) {
5943
+ const isAuto = state.agentKey === DEFAULT_TUI_AGENT_KEY && state.agentName.trim().toLowerCase() === "auto";
5945
5944
  try {
5946
5945
  saveSelection({
5947
- agentKey: state.agentKey,
5948
- agentName: state.agentName
5946
+ agentKey: isAuto ? "" : state.agentKey,
5947
+ agentName: isAuto ? "" : state.agentName
5949
5948
  });
5950
5949
  } catch {
5951
5950
  }
5952
5951
  if (env) {
5953
- env.NOLO_AGENT = state.agentKey;
5954
- env.NOLO_AGENT_NAME = state.agentName;
5952
+ if (isAuto) {
5953
+ delete env.NOLO_AGENT;
5954
+ delete env.NOLO_AGENT_NAME;
5955
+ } else {
5956
+ env.NOLO_AGENT = state.agentKey;
5957
+ env.NOLO_AGENT_NAME = state.agentName;
5958
+ }
5955
5959
  }
5956
5960
  }
5957
5961
  function isInteractiveInput(input) {
@@ -6085,7 +6089,9 @@ async function startTuiWorkspace(options) {
6085
6089
  setActiveTerminalBaseHex(detected.hex);
6086
6090
  }
6087
6091
  const bannerColumns = output.columns;
6088
- output.write(renderWelcome(state, 0, 0, bannerColumns));
6092
+ const initialWelcome = renderWelcome(state, 0, 0, bannerColumns);
6093
+ output.write(initialWelcome);
6094
+ const initialBannerLineCount = initialWelcome.split("\n").length;
6089
6095
  let lastSentTitle = null;
6090
6096
  const syncWindowTitle = () => {
6091
6097
  if (!output.isTTY) return;
@@ -6197,6 +6203,41 @@ async function startTuiWorkspace(options) {
6197
6203
  scheduleRender();
6198
6204
  });
6199
6205
  };
6206
+ const repaintBanner = () => {
6207
+ if (!output.isTTY) return;
6208
+ if (fixedInput.isPaused()) return;
6209
+ if (modalOwnsKeyboard) return;
6210
+ const currentColumns = output.columns ?? 80;
6211
+ const welcome = renderWelcome(state, 0, 0, currentColumns);
6212
+ const lines = welcome.split("\n");
6213
+ const safeWidth = Math.max(1, currentColumns);
6214
+ const safeLines = lines.map((line) => padOrTruncateToWidth(line, safeWidth));
6215
+ const clearLines = Math.max(initialBannerLineCount, safeLines.length);
6216
+ output.write("\x1B[?2026h\x1B[?25l");
6217
+ try {
6218
+ let frame = "";
6219
+ for (let i = 0; i < clearLines; i++) frame += `\x1B[${i + 1};1H\x1B[2K`;
6220
+ safeLines.forEach((line, i) => {
6221
+ frame += `\x1B[${i + 1};1H${line}`;
6222
+ });
6223
+ output.write(frame);
6224
+ if (fixedInput.active) fixedInput.repaint(buffer, cursorPos);
6225
+ } finally {
6226
+ output.write("\x1B[?25h\x1B[?2026l");
6227
+ }
6228
+ };
6229
+ void checkForCliUpdate(state.cliVersion, state.serverUrl, {
6230
+ fetchImpl,
6231
+ env: options.env ?? process.env
6232
+ }).then((updateAvailable) => {
6233
+ if (sessionEnded || !updateAvailable) return;
6234
+ state = { ...state, updateAvailable };
6235
+ if (history.turns.length === 0 && history.currentRole === null) {
6236
+ repaintBanner();
6237
+ } else {
6238
+ scheduleRender();
6239
+ }
6240
+ });
6200
6241
  let syncingLayout = false;
6201
6242
  const renderHistoryToOutput = () => {
6202
6243
  if (fixedInput.isPaused()) return;
@@ -6385,6 +6426,14 @@ async function startTuiWorkspace(options) {
6385
6426
  }
6386
6427
  const wasAborted = activeTurnAbort.signal.aborted;
6387
6428
  activeTurnAbort = null;
6429
+ if (shouldEmitTerminalBell({
6430
+ wasAborted,
6431
+ streamInterrupted: runResult.streamInterrupted,
6432
+ exitCode: runResult.exitCode,
6433
+ interactive: isInteractiveInput(input)
6434
+ })) {
6435
+ emitTerminalBell(output);
6436
+ }
6388
6437
  explicitAgentSwitch = false;
6389
6438
  if (isInteractiveInput(input)) {
6390
6439
  finalizeCurrentTurn(history);
@@ -7320,6 +7369,7 @@ ${renderStatusLine(state)}
7320
7369
  output.write(`[nolo] ${t("persistentProcessesLeft", String(persistentCount))}
7321
7370
  `);
7322
7371
  }
7372
+ sessionEnded = true;
7323
7373
  rl.close();
7324
7374
  }
7325
7375
  }
@@ -1,34 +1,34 @@
1
1
  import {
2
2
  fetchAgentContexts
3
- } from "./chunk-XJBAAOKS.js";
3
+ } from "./chunk-JJ2WUBFN.js";
4
4
  import {
5
5
  generateRequestBody,
6
6
  mergeReferences,
7
7
  performFetchRequest
8
- } from "./chunk-E2VQTGUO.js";
9
- import "./chunk-OMWJXZSZ.js";
8
+ } from "./chunk-5EDKWSQN.js";
9
+ import "./chunk-XNZJVYFS.js";
10
10
  import {
11
11
  findToolExecutor,
12
12
  getToolResultErrorData
13
- } from "./chunk-P5AVCQF3.js";
13
+ } from "./chunk-GGB6MPHD.js";
14
14
  import "./chunk-RQSOAMPJ.js";
15
15
  import "./chunk-I6RJGORZ.js";
16
- import "./chunk-B6RCQ4BM.js";
16
+ import "./chunk-AAWJ5S3G.js";
17
17
  import "./chunk-KQHGZWSV.js";
18
18
  import "./chunk-3LY4F7SV.js";
19
19
  import "./chunk-VF4K2QE6.js";
20
- import "./chunk-ACBCDO2E.js";
20
+ import "./chunk-CWTT2NZ6.js";
21
21
  import "./chunk-MALVZUYL.js";
22
22
  import "./chunk-VP4WJWKW.js";
23
23
  import "./chunk-63W5N6P3.js";
24
- import "./chunk-NZXRTSOY.js";
24
+ import "./chunk-GNGOZMU2.js";
25
25
  import {
26
26
  updateTokensAction
27
- } from "./chunk-THN2YFSR.js";
27
+ } from "./chunk-ADE6577S.js";
28
28
  import "./chunk-XOIF2TNF.js";
29
29
  import "./chunk-MRC4Q34M.js";
30
30
  import "./chunk-SIZQB7BD.js";
31
- import "./chunk-QJZJW65A.js";
31
+ import "./chunk-GD23ZX7Z.js";
32
32
  import "./chunk-YYLHWIW6.js";
33
33
  import "./chunk-CWMSB67P.js";
34
34
  import "./chunk-ROJI6DRT.js";
@@ -41,15 +41,15 @@ import "./chunk-ZWJOGMKH.js";
41
41
  import "./chunk-WZSRQNQG.js";
42
42
  import "./chunk-ZUXIXYJI.js";
43
43
  import "./chunk-D34RI6NI.js";
44
- import "./chunk-5UI2CDQG.js";
45
- import "./chunk-UZH44DWK.js";
46
- import "./chunk-LWHK7TZR.js";
44
+ import "./chunk-PXPISYEH.js";
45
+ import "./chunk-WCP5FDTF.js";
46
+ import "./chunk-PY7VGC5M.js";
47
47
  import "./chunk-5MMAK75Q.js";
48
48
  import "./chunk-5CS33IBL.js";
49
49
  import "./chunk-JZPBVBIY.js";
50
50
  import {
51
51
  getApiEndpoint
52
- } from "./chunk-J6MEBHAT.js";
52
+ } from "./chunk-LEHTC2FI.js";
53
53
  import "./chunk-ZHXJ6M7T.js";
54
54
  import "./chunk-4PWB7JRR.js";
55
55
  import {
@@ -60,8 +60,8 @@ import "./chunk-3ASDTTEI.js";
60
60
  import "./chunk-DWLEOOGR.js";
61
61
  import "./chunk-KXKQO4Q6.js";
62
62
  import "./chunk-HNMXYYJR.js";
63
- import "./chunk-T3EOQH72.js";
64
- import "./chunk-OHK3HE4G.js";
63
+ import "./chunk-G36SUBHA.js";
64
+ import "./chunk-CZHE6LLV.js";
65
65
  import "./chunk-JMSCXQUG.js";
66
66
  import {
67
67
  selectCurrentServer
@@ -1,32 +1,32 @@
1
1
  import {
2
2
  readLiveDbRecordAfterTombstoneMerge
3
- } from "./chunk-5IIJMMC3.js";
3
+ } from "./chunk-PMCKFQYC.js";
4
4
  import {
5
5
  readDbRecord,
6
6
  writeAgentRecord
7
- } from "./chunk-6NUG4BJE.js";
8
- import "./chunk-OTIS3VY6.js";
7
+ } from "./chunk-J2WT5CEO.js";
8
+ import "./chunk-AZW5AHMW.js";
9
9
  import "./chunk-VHBWHNVT.js";
10
10
  import "./chunk-KQHGZWSV.js";
11
11
  import {
12
12
  authRoutes
13
13
  } from "./chunk-MRC4Q34M.js";
14
- import "./chunk-5TAM6OX3.js";
14
+ import "./chunk-SIUEKVK4.js";
15
15
  import "./chunk-ZNFJWEN4.js";
16
- import "./chunk-MSBHAQVV.js";
16
+ import "./chunk-MCXQNEJ3.js";
17
17
  import "./chunk-OIQPORYI.js";
18
- import "./chunk-WV3WZRYZ.js";
18
+ import "./chunk-P3RZ6DHN.js";
19
19
  import "./chunk-N7J63Q6C.js";
20
20
  import "./chunk-ZUXIXYJI.js";
21
21
  import "./chunk-D34RI6NI.js";
22
- import "./chunk-5UI2CDQG.js";
23
- import "./chunk-UZH44DWK.js";
22
+ import "./chunk-PXPISYEH.js";
23
+ import "./chunk-WCP5FDTF.js";
24
24
  import "./chunk-2MBTWINN.js";
25
- import "./chunk-LWHK7TZR.js";
25
+ import "./chunk-PY7VGC5M.js";
26
26
  import "./chunk-5MMAK75Q.js";
27
27
  import "./chunk-5CS33IBL.js";
28
28
  import "./chunk-JZPBVBIY.js";
29
- import "./chunk-J6MEBHAT.js";
29
+ import "./chunk-LEHTC2FI.js";
30
30
  import "./chunk-ZHXJ6M7T.js";
31
31
  import "./chunk-AL2V7U3E.js";
32
32
  import "./chunk-4PWB7JRR.js";
@@ -42,8 +42,8 @@ import {
42
42
  resolveServerUrl
43
43
  } from "./chunk-A7GB5UGH.js";
44
44
  import "./chunk-OLZBQWZU.js";
45
- import "./chunk-T3EOQH72.js";
46
- import "./chunk-OHK3HE4G.js";
45
+ import "./chunk-G36SUBHA.js";
46
+ import "./chunk-CZHE6LLV.js";
47
47
  import "./chunk-KX6YBIHG.js";
48
48
  import {
49
49
  createSpaceKey,
@@ -53,28 +53,28 @@ import {
53
53
  updateContentTitle,
54
54
  updateSpace,
55
55
  uploadAndAddFileToSpace
56
- } from "./chunk-THN2YFSR.js";
56
+ } from "./chunk-ADE6577S.js";
57
57
  import "./chunk-XOIF2TNF.js";
58
58
  import "./chunk-MRC4Q34M.js";
59
59
  import "./chunk-SIZQB7BD.js";
60
- import "./chunk-QJZJW65A.js";
60
+ import "./chunk-GD23ZX7Z.js";
61
61
  import "./chunk-YYLHWIW6.js";
62
62
  import "./chunk-CWMSB67P.js";
63
63
  import "./chunk-ROJI6DRT.js";
64
64
  import "./chunk-5RGU3J7P.js";
65
65
  import "./chunk-M76ECQRD.js";
66
66
  import "./chunk-L65QKSVJ.js";
67
- import "./chunk-LWHK7TZR.js";
67
+ import "./chunk-PY7VGC5M.js";
68
68
  import "./chunk-5MMAK75Q.js";
69
69
  import "./chunk-5CS33IBL.js";
70
70
  import "./chunk-JZPBVBIY.js";
71
- import "./chunk-J6MEBHAT.js";
71
+ import "./chunk-LEHTC2FI.js";
72
72
  import "./chunk-ZHXJ6M7T.js";
73
73
  import "./chunk-3ASDTTEI.js";
74
74
  import "./chunk-DWLEOOGR.js";
75
75
  import "./chunk-HNMXYYJR.js";
76
- import "./chunk-T3EOQH72.js";
77
- import "./chunk-OHK3HE4G.js";
76
+ import "./chunk-G36SUBHA.js";
77
+ import "./chunk-CZHE6LLV.js";
78
78
  import "./chunk-S6KVFOUG.js";
79
79
  import "./chunk-Y5GCAMGP.js";
80
80
  import "./chunk-UZ6XXCVR.js";
@@ -17,11 +17,11 @@ import {
17
17
  sanitizeOutboundResponsesInput,
18
18
  sendOpenAICompletionsRequest,
19
19
  updateTotalUsage
20
- } from "./chunk-6OMNSBFW.js";
20
+ } from "./chunk-LLDGWLML.js";
21
21
  import "./chunk-JEXVIMYZ.js";
22
22
  import {
23
23
  prepareTools
24
- } from "./chunk-DZNONG7L.js";
24
+ } from "./chunk-ZFL3LTU7.js";
25
25
  import {
26
26
  fetchReferenceContents,
27
27
  generateRequestBody,
@@ -35,8 +35,8 @@ import {
35
35
  resolveToolsFromKeys,
36
36
  selectResponsesConversationState,
37
37
  updateResponsesConversationState
38
- } from "./chunk-E2VQTGUO.js";
39
- import "./chunk-OMWJXZSZ.js";
38
+ } from "./chunk-5EDKWSQN.js";
39
+ import "./chunk-XNZJVYFS.js";
40
40
  import {
41
41
  createSSEParser,
42
42
  getAllToolRuns,
@@ -44,22 +44,22 @@ import {
44
44
  resolveAgentRequiredPackIds,
45
45
  shouldBlockForGptPro,
46
46
  waitForAbortableDelay
47
- } from "./chunk-P5AVCQF3.js";
47
+ } from "./chunk-GGB6MPHD.js";
48
48
  import "./chunk-RQSOAMPJ.js";
49
49
  import "./chunk-I6RJGORZ.js";
50
- import "./chunk-B6RCQ4BM.js";
50
+ import "./chunk-AAWJ5S3G.js";
51
51
  import "./chunk-KQHGZWSV.js";
52
52
  import "./chunk-3LY4F7SV.js";
53
53
  import "./chunk-VF4K2QE6.js";
54
54
  import {
55
55
  getDocState
56
- } from "./chunk-ACBCDO2E.js";
56
+ } from "./chunk-CWTT2NZ6.js";
57
57
  import {
58
58
  getFinalPrice,
59
59
  getModelPricing,
60
60
  getPrices,
61
61
  hasExplicitAgentPricing
62
- } from "./chunk-SDDOGQ6M.js";
62
+ } from "./chunk-AOPOTHFK.js";
63
63
  import {
64
64
  getPublicImageAgentDefaultProfile,
65
65
  getPublicImageAgentMode
@@ -69,7 +69,7 @@ import {
69
69
  extractCategorizedMentions
70
70
  } from "./chunk-VP4WJWKW.js";
71
71
  import "./chunk-63W5N6P3.js";
72
- import "./chunk-NZXRTSOY.js";
72
+ import "./chunk-GNGOZMU2.js";
73
73
  import {
74
74
  PERSONALIZATION_DIALOG_CATEGORY,
75
75
  addToolMessage,
@@ -92,11 +92,11 @@ import {
92
92
  selectTableRows,
93
93
  selectViewMode,
94
94
  updateTokens
95
- } from "./chunk-THN2YFSR.js";
95
+ } from "./chunk-ADE6577S.js";
96
96
  import "./chunk-XOIF2TNF.js";
97
97
  import "./chunk-MRC4Q34M.js";
98
98
  import "./chunk-SIZQB7BD.js";
99
- import "./chunk-QJZJW65A.js";
99
+ import "./chunk-GD23ZX7Z.js";
100
100
  import "./chunk-YYLHWIW6.js";
101
101
  import "./chunk-CWMSB67P.js";
102
102
  import {
@@ -128,7 +128,7 @@ import {
128
128
  import {
129
129
  projectToolMessageContent,
130
130
  resolveAgentImageInputSupport
131
- } from "./chunk-WV3WZRYZ.js";
131
+ } from "./chunk-P3RZ6DHN.js";
132
132
  import "./chunk-N7J63Q6C.js";
133
133
  import "./chunk-ZUXIXYJI.js";
134
134
  import {
@@ -138,16 +138,16 @@ import {
138
138
  } from "./chunk-D34RI6NI.js";
139
139
  import {
140
140
  isOpenAiResponsesModel
141
- } from "./chunk-5UI2CDQG.js";
141
+ } from "./chunk-PXPISYEH.js";
142
142
  import {
143
143
  resolveRuntimeToolSurfaceForAgent
144
- } from "./chunk-UZH44DWK.js";
144
+ } from "./chunk-WCP5FDTF.js";
145
145
  import {
146
146
  estimateTokenCount,
147
147
  getModelContextWindow,
148
148
  getModelInfo,
149
149
  planContextUsage
150
- } from "./chunk-LWHK7TZR.js";
150
+ } from "./chunk-PY7VGC5M.js";
151
151
  import "./chunk-5MMAK75Q.js";
152
152
  import "./chunk-5CS33IBL.js";
153
153
  import "./chunk-JZPBVBIY.js";
@@ -155,7 +155,7 @@ import {
155
155
  getApiEndpoint,
156
156
  getModelConfig,
157
157
  getProviderByModelName
158
- } from "./chunk-J6MEBHAT.js";
158
+ } from "./chunk-LEHTC2FI.js";
159
159
  import "./chunk-ZHXJ6M7T.js";
160
160
  import {
161
161
  buildLinkedSpacesSection,
@@ -187,8 +187,8 @@ import {
187
187
  import {
188
188
  toErrorMessage
189
189
  } from "./chunk-HNMXYYJR.js";
190
- import "./chunk-T3EOQH72.js";
191
- import "./chunk-OHK3HE4G.js";
190
+ import "./chunk-G36SUBHA.js";
191
+ import "./chunk-CZHE6LLV.js";
192
192
  import "./chunk-JMSCXQUG.js";
193
193
  import {
194
194
  selectAiRecentContentLimit,
@@ -9,7 +9,7 @@ import {
9
9
  getCurrentProfile,
10
10
  getDefaultProfileConfigPath,
11
11
  loadProfileConfig
12
- } from "./chunk-DXJS7VSG.js";
12
+ } from "./chunk-GE6IWA5N.js";
13
13
  import {
14
14
  DEFAULT_NOLO_SERVER_URL
15
15
  } from "./chunk-OLZBQWZU.js";