nolo-cli 0.34.0-alpha.1 → 0.35.0-alpha.1

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 (57) hide show
  1. package/{_executeModel-BUYCXZCQ.js → _executeModel-RV52PPE3.js} +11 -11
  2. package/{agentDeleteCommand-WSS2IJVM.js → agentDeleteCommand-FBBW3IIM.js} +2 -2
  3. package/{agentEmailCommands-SHTPJTSX.js → agentEmailCommands-7F4PCABZ.js} +12 -12
  4. package/{agentListCommands-GV6UYVAF.js → agentListCommands-ZQXPSB6U.js} +2 -2
  5. package/{agentMachineCommands-FLD7TAFH.js → agentMachineCommands-E3NB67GM.js} +3 -3
  6. package/{agentRecordCommands-57W6R7QW.js → agentRecordCommands-7PXWHCQM.js} +12 -12
  7. package/{agentRunCommand-HJGXSMDN.js → agentRunCommand-Z4654ONK.js} +13 -13
  8. package/{agentRunControl-GXOB47YI.js → agentRunControl-7MUPSYDQ.js} +3 -1
  9. package/{agentRuntimeLocal-G7ZV55I6.js → agentRuntimeLocal-OBKWKEKW.js} +2 -2
  10. package/{agentSlice-HFR7SP3B.js → agentSlice-B2IMSPH5.js} +1 -1
  11. package/{agentSuperviseCommands-Q64S5SPG.js → agentSuperviseCommands-MKWW3ICX.js} +3 -3
  12. package/{appDeleteCommands-SHHE56Y2.js → appDeleteCommands-72BE7DSA.js} +2 -2
  13. package/{appDeployCommands-WUMSO2VS.js → appDeployCommands-XJBLKCYO.js} +2 -2
  14. package/{appDeployStatusCommands-VZSVN6SR.js → appDeployStatusCommands-EC4HWCBQ.js} +2 -2
  15. package/{appGetCommands-ZJ2C3A5Y.js → appGetCommands-62BAATPL.js} +2 -2
  16. package/{appListCommands-W33L6U5X.js → appListCommands-5EZCONM7.js} +2 -2
  17. package/{chatQueueReduxAdapter-SYIX4ODY.js → chatQueueReduxAdapter-SSF3DNBX.js} +2 -2
  18. package/{chunk-AUH2LTIY.js → chunk-55C3UZSC.js} +3 -3
  19. package/{chunk-6KYCG5GW.js → chunk-5Q4DXT47.js} +9 -9
  20. package/{chunk-DX6BP4K7.js → chunk-7KY6U7MW.js} +8 -8
  21. package/{chunk-VSA6QAGV.js → chunk-E2OQ5N2F.js} +40 -10
  22. package/{chunk-LQ6PUHW6.js → chunk-EFN2AFWF.js} +252 -64
  23. package/{chunk-4HOXB6SY.js → chunk-IMHO5LC6.js} +100 -27
  24. package/{chunk-VD2SO4RG.js → chunk-INXNBCEY.js} +2 -2
  25. package/{chunk-HDT2RB7T.js → chunk-KPJYUEPE.js} +1 -1
  26. package/{chunk-3LWZNEGQ.js → chunk-LFOILL6R.js} +1 -1
  27. package/{chunk-LAUUAYLK.js → chunk-OCJNJUR4.js} +2 -2
  28. package/{chunk-VBD7W4Q6.js → chunk-OGPQ3AMC.js} +14 -10
  29. package/{chunk-FDKEDU7R.js → chunk-P62APAXL.js} +2 -2
  30. package/{chunk-MI2J67UU.js → chunk-P66M7LSQ.js} +16 -1
  31. package/{chunk-KCBK4MDT.js → chunk-RUVWTAK7.js} +3 -3
  32. package/{chunk-3XZUNRYF.js → chunk-SDAPQUSO.js} +7 -7
  33. package/{chunk-74IQ5RRO.js → chunk-Z7D7MBWR.js} +1 -1
  34. package/{chunk-YRP7LG4R.js → chunk-ZOEE4OVX.js} +7 -16
  35. package/{chunk-7YDKVLAE.js → chunk-ZZDWMZFU.js} +3 -3
  36. package/{createAgentAutomationAction-BH3D2L2H.js → createAgentAutomationAction-IDIY6K45.js} +3 -3
  37. package/{createDialogAction-U4LDV2RW.js → createDialogAction-5LB4YBPS.js} +4 -4
  38. package/{createPageAction-Q2ANG535.js → createPageAction-TJWVDPZD.js} +3 -3
  39. package/{dialogCommands-C556D6WD.js → dialogCommands-44NGBPJJ.js} +2 -2
  40. package/{dialogSlice-P2VSKG2X.js → dialogSlice-62JC4ZMX.js} +2 -2
  41. package/{docCreateCommands-AAVGLQWE.js → docCreateCommands-IOGYJ7F7.js} +2 -2
  42. package/{docDeleteCommands-PKMKSQD2.js → docDeleteCommands-RO4BZWFP.js} +2 -2
  43. package/{docReadCommands-2WUH7UXC.js → docReadCommands-F2KNOJFW.js} +2 -2
  44. package/{docStore-J5UWRBB4.js → docStore-ZRNKZZXU.js} +4 -4
  45. package/{docUpdateCommands-B2N4E5HQ.js → docUpdateCommands-2VG4AYOC.js} +2 -2
  46. package/{handleSendMessageAction-RRZ53YYH.js → handleSendMessageAction-YB64A32O.js} +2 -2
  47. package/index.js +46 -46
  48. package/{machineCommands-CWKMJG33.js → machineCommands-6WPICTON.js} +12 -12
  49. package/{machineWsRunDispatch-UYNVNX4A.js → machineWsRunDispatch-4OGEZTYG.js} +12 -12
  50. package/package.json +1 -1
  51. package/{readlineWorkspace-VYELP22P.js → readlineWorkspace-BZAZ5YXM.js} +127 -78
  52. package/{runAgentClientLoop-35GKZDOZ.js → runAgentClientLoop-SOZS3YTQ.js} +8 -8
  53. package/{spaceCommands-AAKQM2PM.js → spaceCommands-WEASK3IV.js} +2 -2
  54. package/{spaceSlice-NSNGR4Y2.js → spaceSlice-2QNUKRN6.js} +3 -3
  55. package/{streamAgentChatTurn-D5IDHXMV.js → streamAgentChatTurn-BYI7UXAA.js} +10 -10
  56. package/{tools-JQOETZP5.js → tools-E6FEUNZY.js} +6 -6
  57. package/{updateDialogTitleAction-WOTSDSFQ.js → updateDialogTitleAction-2A3BEXSP.js} +3 -3
@@ -76,8 +76,8 @@ import {
76
76
  wrapTextToLines,
77
77
  wrapTranscriptLine,
78
78
  wrapTranscriptLineWithLayout
79
- } from "./chunk-VBD7W4Q6.js";
80
- import "./chunk-4HOXB6SY.js";
79
+ } from "./chunk-OGPQ3AMC.js";
80
+ import "./chunk-IMHO5LC6.js";
81
81
  import "./chunk-4AWH4LQA.js";
82
82
  import {
83
83
  createCliLocalRuntimeAdapter,
@@ -86,7 +86,7 @@ import {
86
86
  readTimestamp,
87
87
  setCliLocale,
88
88
  t
89
- } from "./chunk-YRP7LG4R.js";
89
+ } from "./chunk-ZOEE4OVX.js";
90
90
  import "./chunk-IZNJDUJ4.js";
91
91
  import "./chunk-6XG52ZQ6.js";
92
92
  import {
@@ -107,7 +107,7 @@ import {
107
107
  checkStaleRun,
108
108
  isRunRecordClaimed,
109
109
  readRunRecord
110
- } from "./chunk-VSA6QAGV.js";
110
+ } from "./chunk-E2OQ5N2F.js";
111
111
  import "./chunk-ESHYE7WU.js";
112
112
  import "./chunk-JBTJAPUF.js";
113
113
  import "./chunk-LTRXGFMS.js";
@@ -116,10 +116,10 @@ import "./chunk-ATNTHIZI.js";
116
116
  import "./chunk-JEXVIMYZ.js";
117
117
  import {
118
118
  prepareTools
119
- } from "./chunk-HDT2RB7T.js";
119
+ } from "./chunk-KPJYUEPE.js";
120
120
  import "./chunk-HS7MLR74.js";
121
121
  import "./chunk-PV734VZX.js";
122
- import "./chunk-6KYCG5GW.js";
122
+ import "./chunk-5Q4DXT47.js";
123
123
  import "./chunk-RQSOAMPJ.js";
124
124
  import "./chunk-GUYMR3JL.js";
125
125
  import "./chunk-KQHGZWSV.js";
@@ -135,7 +135,7 @@ import {
135
135
  runShowsLogTail,
136
136
  shortRunId
137
137
  } from "./chunk-KXKQO4Q6.js";
138
- import "./chunk-VD2SO4RG.js";
138
+ import "./chunk-INXNBCEY.js";
139
139
  import "./chunk-BANYWEYY.js";
140
140
  import "./chunk-U6QQLXWI.js";
141
141
  import "./chunk-INZZJSQF.js";
@@ -147,16 +147,16 @@ import {
147
147
  createTurnRequest,
148
148
  normalizeRunCompletionShape
149
149
  } from "./chunk-YPREESF4.js";
150
- import "./chunk-FDKEDU7R.js";
151
- import "./chunk-LAUUAYLK.js";
150
+ import "./chunk-P62APAXL.js";
151
+ import "./chunk-OCJNJUR4.js";
152
152
  import {
153
153
  extractReferenceKeysFromMessage
154
- } from "./chunk-DX6BP4K7.js";
154
+ } from "./chunk-7KY6U7MW.js";
155
155
  import "./chunk-RCFIB45Q.js";
156
156
  import "./chunk-JIADXJYU.js";
157
157
  import "./chunk-YYLHWIW6.js";
158
158
  import "./chunk-AGGIDPCZ.js";
159
- import "./chunk-AUH2LTIY.js";
159
+ import "./chunk-55C3UZSC.js";
160
160
  import "./chunk-MGIHZ5CJ.js";
161
161
  import "./chunk-5RGU3J7P.js";
162
162
  import "./chunk-M76ECQRD.js";
@@ -179,12 +179,12 @@ import {
179
179
  buildLocalWorkspaceToolset,
180
180
  getProcessRegistry,
181
181
  readCommandActionGatePayload
182
- } from "./chunk-LQ6PUHW6.js";
182
+ } from "./chunk-EFN2AFWF.js";
183
183
  import "./chunk-OSCSEJJR.js";
184
184
  import "./chunk-ZNFJWEN4.js";
185
185
  import "./chunk-64KIQZA2.js";
186
186
  import "./chunk-T27IEBNQ.js";
187
- import "./chunk-MI2J67UU.js";
187
+ import "./chunk-P66M7LSQ.js";
188
188
  import "./chunk-N7J63Q6C.js";
189
189
  import {
190
190
  buildCurrentTimeBlock,
@@ -3252,72 +3252,92 @@ function createRunRegistryPoller(deps) {
3252
3252
 
3253
3253
  // packages/cli/tui/runCompletionWatcher.ts
3254
3254
  var WAKE_NOTE_MAX_CHARS = 300;
3255
- function createRunCompletionWatcher(deps) {
3256
- const now = deps.now ?? (() => Date.now());
3257
- const createdAt = now();
3258
- const lastStatusByRunId = /* @__PURE__ */ new Map();
3259
- const notifiedRunIds = /* @__PURE__ */ new Set();
3260
- const runDuration = (record) => formatRunAge(
3255
+ function runDuration(record, nowMs = Date.now()) {
3256
+ return formatRunAge(
3261
3257
  {
3262
3258
  startedAt: readTimestamp(record.startedAt),
3263
3259
  finishedAt: readTimestamp(record.endedAt ?? record.finishedAt)
3264
3260
  },
3265
- now()
3261
+ nowMs
3266
3262
  ) ?? "";
3267
- const isFailureStatus = (status) => typeof status === "string" && status !== "done";
3268
- const describeRun = (record) => {
3269
- const lines = [
3270
- `runId: ${record.runId}`,
3271
- `agent: ${resolveRunLabel(record)}`,
3272
- `status: ${record.status}`
3273
- ];
3274
- const verbose = isFailureStatus(record.status);
3275
- if (verbose && typeof record.exitCode === "number") {
3276
- lines.push(`exitCode: ${record.exitCode}`);
3277
- }
3278
- if (record.dialogId) {
3279
- lines.push(`childDialogId: ${record.dialogId}`);
3280
- } else if (record.ephemeral) {
3281
- lines.push(`ephemeral: true (no persisted child dialog)`);
3282
- } else {
3283
- lines.push(`childDialogId: missing (result unpersisted or ephemeral)`);
3284
- }
3285
- const duration = runDuration(record);
3286
- if (duration) lines.push(`duration: ${duration}`);
3287
- const recordError = "error" in record && typeof record.error === "string" ? record.error : void 0;
3288
- const note = typeof record.note === "string" ? clipText(record.note, WAKE_NOTE_MAX_CHARS) : typeof recordError === "string" ? clipText(recordError, WAKE_NOTE_MAX_CHARS) : "";
3289
- if (note) lines.push(`note: ${note}`);
3290
- const counters = verbose ? record.activity?.counters : void 0;
3291
- if (counters && typeof counters.toolCalls === "number" && typeof counters.llmCalls === "number" && typeof counters.fileEdits === "number") {
3292
- lines.push(
3293
- `activity: ${counters.toolCalls} tool calls \xB7 ${counters.llmCalls} llm calls \xB7 ${counters.fileEdits} edits`
3294
- );
3295
- }
3296
- return lines;
3297
- };
3298
- const buildWakeMessage = (finished) => {
3299
- const lines = [
3300
- `\u3010\u540E\u53F0 run \u7EC8\u6001\u901A\u77E5\u3011\u4F60\u6D3E\u51FA\u7684 ${finished.length} \u6761\u540E\u53F0 run \u5DF2\u5230\u8FBE\u7EC8\u6001\uFF1A`
3301
- ];
3302
- for (const record of finished) {
3303
- lines.push("", ...describeRun(record));
3304
- }
3263
+ }
3264
+ function isFailureStatus(status) {
3265
+ return typeof status === "string" && status !== "done";
3266
+ }
3267
+ function describeRun(record, nowMs = Date.now()) {
3268
+ const lines = [
3269
+ `runId: ${record.runId}`,
3270
+ `agent: ${resolveRunLabel(record)}`,
3271
+ `status: ${record.status}`
3272
+ ];
3273
+ const verbose = isFailureStatus(record.status);
3274
+ if (verbose && typeof record.exitCode === "number") {
3275
+ lines.push(`exitCode: ${record.exitCode}`);
3276
+ }
3277
+ if (record.dialogId) {
3278
+ lines.push(`childDialogId: ${record.dialogId}`);
3279
+ } else if (record.ephemeral) {
3280
+ lines.push(`ephemeral: true (no persisted child dialog)`);
3281
+ } else {
3282
+ lines.push(`childDialogId: missing (result unpersisted or ephemeral)`);
3283
+ }
3284
+ const duration = runDuration(record, nowMs);
3285
+ if (duration) lines.push(`duration: ${duration}`);
3286
+ const recordError = "error" in record && typeof record.error === "string" ? record.error : void 0;
3287
+ const note = typeof record.note === "string" ? clipText(record.note, WAKE_NOTE_MAX_CHARS) : typeof recordError === "string" ? clipText(recordError, WAKE_NOTE_MAX_CHARS) : "";
3288
+ if (note) lines.push(`note: ${note}`);
3289
+ const counters = verbose ? record.activity?.counters : void 0;
3290
+ if (counters && typeof counters.toolCalls === "number" && typeof counters.llmCalls === "number" && typeof counters.fileEdits === "number") {
3305
3291
  lines.push(
3306
- "",
3307
- '\u4EE5\u4E0A\u662F\u4F60\u901A\u8FC7 startAgentRun \u6D3E\u51FA\u7684\u540E\u53F0 run \u7684\u7EC8\u6001\u901A\u77E5\uFF08\u7CFB\u7EDF\u5185\u90E8\u4E8B\u4EF6\uFF0C\u4E0D\u662F\u7528\u6237\u6D88\u606F\uFF09\u3002\u8BF7\u9605\u8BFB\u4E0A\u9762\u7684\u6458\u8981\u5E76\u81EA\u5DF1\u51B3\u5B9A\u4E0B\u4E00\u6B65\uFF1A\u6C47\u603B\u7ED3\u679C\u3001\u7EE7\u7EED\u540E\u7EED\u5DE5\u4F5C\u3001\u6216\u5411\u7528\u6237\u6C47\u62A5\u7ED3\u8BBA\u3002\u9700\u8981\u5B8C\u6574\u8F93\u51FA\u65F6\u7528 controlAgentRun(action:"status", runId, tailLines:30) \u62C9\u53D6\u5BF9\u5E94 run \u7684\u65E5\u5FD7\u3002'
3292
+ `activity: ${counters.toolCalls} tool calls \xB7 ${counters.llmCalls} llm calls \xB7 ${counters.fileEdits} edits`
3308
3293
  );
3309
- return lines.join("\n");
3310
- };
3311
- const buildWakeDisplayText = (finished) => {
3312
- const parts = finished.map((record) => {
3313
- const mark = isFailureStatus(record.status) ? "\u2717" : "\u2713";
3314
- const duration = runDuration(record);
3315
- const label = resolveRunLabel(record);
3316
- const status = isFailureStatus(record.status) ? ` ${record.status}` : "";
3317
- return `${mark} ${label}${status}${duration ? ` \xB7 ${duration}` : ""}`;
3318
- });
3319
- return `${finished.length} \u6761\u540E\u53F0 run \u5DF2\u5B8C\u6210 \xB7 ${parts.join(" \xB7 ")}`;
3320
- };
3294
+ }
3295
+ return lines;
3296
+ }
3297
+ function buildWakeMessage(finished, nowMs = Date.now()) {
3298
+ const lines = [
3299
+ `\u3010\u540E\u53F0 run \u7EC8\u6001\u901A\u77E5\u3011\u4F60\u6D3E\u51FA\u7684 ${finished.length} \u6761\u540E\u53F0 run \u5DF2\u5230\u8FBE\u7EC8\u6001\uFF1A`
3300
+ ];
3301
+ for (const record of finished) {
3302
+ lines.push("", ...describeRun(record, nowMs));
3303
+ }
3304
+ lines.push(
3305
+ "",
3306
+ '\u4EE5\u4E0A\u662F\u4F60\u901A\u8FC7 startAgentRun \u6D3E\u51FA\u7684\u540E\u53F0 run \u7684\u7EC8\u6001\u901A\u77E5\uFF08\u7CFB\u7EDF\u5185\u90E8\u4E8B\u4EF6\uFF0C\u4E0D\u662F\u7528\u6237\u6D88\u606F\uFF09\u3002\u8BF7\u9605\u8BFB\u4E0A\u9762\u7684\u6458\u8981\u5E76\u81EA\u5DF1\u51B3\u5B9A\u4E0B\u4E00\u6B65\uFF1A\u6C47\u603B\u7ED3\u679C\u3001\u7EE7\u7EED\u540E\u7EED\u5DE5\u4F5C\u3001\u6216\u5411\u7528\u6237\u6C47\u62A5\u7ED3\u8BBA\u3002\u9700\u8981\u5B8C\u6574\u8F93\u51FA\u65F6\u7528 controlAgentRun(action:"status", runId, tailLines:30) \u62C9\u53D6\u5BF9\u5E94 run \u7684\u65E5\u5FD7\u3002'
3307
+ );
3308
+ return lines.join("\n");
3309
+ }
3310
+ function buildWakeDisplayText(finished, nowMs = Date.now()) {
3311
+ const parts = finished.map((record) => {
3312
+ const mark = isFailureStatus(record.status) ? "\u2717" : "\u2713";
3313
+ const duration = runDuration(record, nowMs);
3314
+ const label = resolveRunLabel(record);
3315
+ const status = isFailureStatus(record.status) ? ` ${record.status}` : "";
3316
+ return `${mark} ${label}${status}${duration ? ` \xB7 ${duration}` : ""}`;
3317
+ });
3318
+ return `${finished.length} \u6761\u540E\u53F0 run \u5DF2\u5B8C\u6210 \xB7 ${parts.join(" \xB7 ")}`;
3319
+ }
3320
+ function filterUnclaimedChildRuns(runs, deps = {}) {
3321
+ const rawNow = deps.now ? deps.now() : Date.now();
3322
+ const nowMs = typeof rawNow === "number" ? rawNow : rawNow.getTime();
3323
+ const remainingRuns = [];
3324
+ const claimedRunIds = [];
3325
+ for (const r of runs) {
3326
+ const record = readRunRecord(r.runId, deps);
3327
+ const target = record ?? r;
3328
+ if (isRunRecordClaimed(target, nowMs)) {
3329
+ claimedRunIds.push(r.runId);
3330
+ } else {
3331
+ remainingRuns.push(normalizeRunCompletionShape(r));
3332
+ }
3333
+ }
3334
+ return { remainingRuns, claimedRunIds };
3335
+ }
3336
+ function createRunCompletionWatcher(deps) {
3337
+ const now = deps.now ?? (() => Date.now());
3338
+ const createdAt = now();
3339
+ const lastStatusByRunId = /* @__PURE__ */ new Map();
3340
+ const notifiedRunIds = /* @__PURE__ */ new Set();
3321
3341
  return {
3322
3342
  observe(records) {
3323
3343
  const finished = [];
@@ -3353,12 +3373,12 @@ function createRunCompletionWatcher(deps) {
3353
3373
  }
3354
3374
  if (finished.length === 0) return;
3355
3375
  const shapes = finished.map((r) => normalizeRunCompletionShape(r));
3356
- const summaryText = buildWakeMessage(finished);
3376
+ const summaryText = buildWakeMessage(finished, now());
3357
3377
  const event = {
3358
3378
  kind: "child-run-completed",
3359
3379
  runs: shapes,
3360
3380
  text: summaryText,
3361
- displayText: buildWakeDisplayText(finished)
3381
+ displayText: buildWakeDisplayText(finished, now())
3362
3382
  };
3363
3383
  deps.onWake(event);
3364
3384
  },
@@ -7110,14 +7130,15 @@ async function runTuiWorkspace(options) {
7110
7130
  getCurrentDialogId: () => state.dialogId ?? null,
7111
7131
  onWake: (text) => runWakeHandler?.(text)
7112
7132
  });
7133
+ const effectiveEnv = options.env ? { ...process.env, ...options.env } : process.env;
7113
7134
  const runRegistryPoller = createRunRegistryPoller({
7114
7135
  getDockedRuns: () => activityIndicator.getAgentRuns(),
7115
7136
  update: (snapshot) => activityIndicator.updateAgentRun(snapshot),
7116
7137
  // 显式传 env:resolveNoloHome 只认传入 env 的 NOLO_HOME,不传则永远读
7117
7138
  // ~/.nolo——设了 NOLO_HOME 的环境(dev、测试)会读错目录。run 记录读取
7118
7139
  // 与 reconcile 的调用点也是同样写法。
7119
- readRecord: (runId) => readRunRecord(runId, { env: process.env }),
7120
- reconcile: (runId) => checkStaleRun(runId, { env: process.env }),
7140
+ readRecord: (runId) => readRunRecord(runId, { env: effectiveEnv }),
7141
+ reconcile: (runId) => checkStaleRun(runId, { env: effectiveEnv }),
7121
7142
  onRecordsPolled: (records) => runCompletionWatcher.observe(records)
7122
7143
  });
7123
7144
  const history = createTurnHistory();
@@ -7310,11 +7331,39 @@ ${content}`);
7310
7331
  }).catch(() => {
7311
7332
  });
7312
7333
  };
7313
- const req = createTurnRequest(inputMsg);
7334
+ let req = createTurnRequest(inputMsg);
7314
7335
  if (req.event.kind === "child-run-completed") {
7315
- for (const r of req.event.runs) {
7336
+ const nowMs = Date.now();
7337
+ const { remainingRuns, claimedRunIds } = filterUnclaimedChildRuns(
7338
+ req.event.runs,
7339
+ { env: effectiveEnv, now: () => nowMs }
7340
+ );
7341
+ for (const runId of claimedRunIds) {
7342
+ runCompletionWatcher.markAcknowledged(runId);
7343
+ }
7344
+ if (remainingRuns.length === 0) {
7345
+ for (const r of req.event.runs) {
7346
+ runCompletionWatcher.markAcknowledged(r.runId);
7347
+ }
7348
+ return { ok: true, aborted: false };
7349
+ }
7350
+ for (const r of remainingRuns) {
7316
7351
  runCompletionWatcher.markAcknowledged(r.runId);
7317
7352
  }
7353
+ if (remainingRuns.length !== req.event.runs.length) {
7354
+ const text = buildWakeMessage(remainingRuns, nowMs);
7355
+ const displayText = buildWakeDisplayText(remainingRuns, nowMs);
7356
+ const updatedEvent = {
7357
+ kind: "child-run-completed",
7358
+ runs: remainingRuns,
7359
+ text,
7360
+ displayText
7361
+ };
7362
+ req = {
7363
+ text,
7364
+ event: updatedEvent
7365
+ };
7366
+ }
7318
7367
  }
7319
7368
  const message = req.text;
7320
7369
  forcedStop = false;
@@ -1,40 +1,40 @@
1
1
  import {
2
2
  fetchAgentContexts
3
- } from "./chunk-3LWZNEGQ.js";
3
+ } from "./chunk-LFOILL6R.js";
4
4
  import {
5
5
  generateRequestBody,
6
6
  mergeReferences,
7
7
  performFetchRequest,
8
8
  sanitizeOutboundBody
9
- } from "./chunk-KCBK4MDT.js";
9
+ } from "./chunk-RUVWTAK7.js";
10
10
  import "./chunk-HS7MLR74.js";
11
11
  import "./chunk-PV734VZX.js";
12
12
  import {
13
13
  findToolExecutor,
14
14
  getToolResultErrorData
15
- } from "./chunk-6KYCG5GW.js";
15
+ } from "./chunk-5Q4DXT47.js";
16
16
  import "./chunk-RQSOAMPJ.js";
17
17
  import "./chunk-GUYMR3JL.js";
18
18
  import "./chunk-KQHGZWSV.js";
19
19
  import "./chunk-IFS5CUEH.js";
20
20
  import "./chunk-KXKQO4Q6.js";
21
- import "./chunk-VD2SO4RG.js";
21
+ import "./chunk-INXNBCEY.js";
22
22
  import "./chunk-BANYWEYY.js";
23
23
  import "./chunk-U6QQLXWI.js";
24
24
  import "./chunk-INZZJSQF.js";
25
25
  import "./chunk-MEYIRKDN.js";
26
26
  import "./chunk-63W5N6P3.js";
27
27
  import "./chunk-VF4K2QE6.js";
28
- import "./chunk-FDKEDU7R.js";
29
- import "./chunk-LAUUAYLK.js";
28
+ import "./chunk-P62APAXL.js";
29
+ import "./chunk-OCJNJUR4.js";
30
30
  import {
31
31
  updateTokensAction
32
- } from "./chunk-DX6BP4K7.js";
32
+ } from "./chunk-7KY6U7MW.js";
33
33
  import "./chunk-RCFIB45Q.js";
34
34
  import "./chunk-JIADXJYU.js";
35
35
  import "./chunk-YYLHWIW6.js";
36
36
  import "./chunk-AGGIDPCZ.js";
37
- import "./chunk-AUH2LTIY.js";
37
+ import "./chunk-55C3UZSC.js";
38
38
  import "./chunk-MGIHZ5CJ.js";
39
39
  import "./chunk-5RGU3J7P.js";
40
40
  import "./chunk-M76ECQRD.js";
@@ -8,12 +8,12 @@ import {
8
8
  import "./chunk-J5NMOM35.js";
9
9
  import "./chunk-EKLRRZIN.js";
10
10
  import "./chunk-KQHGZWSV.js";
11
- import "./chunk-LQ6PUHW6.js";
11
+ import "./chunk-EFN2AFWF.js";
12
12
  import "./chunk-OSCSEJJR.js";
13
13
  import "./chunk-ZNFJWEN4.js";
14
14
  import "./chunk-64KIQZA2.js";
15
15
  import "./chunk-T27IEBNQ.js";
16
- import "./chunk-MI2J67UU.js";
16
+ import "./chunk-P66M7LSQ.js";
17
17
  import "./chunk-N7J63Q6C.js";
18
18
  import "./chunk-M3JQWYBC.js";
19
19
  import "./chunk-BMB563Y6.js";
@@ -37,13 +37,13 @@ import {
37
37
  updateContentTitle,
38
38
  updateSpace,
39
39
  uploadAndAddFileToSpace
40
- } from "./chunk-LAUUAYLK.js";
41
- import "./chunk-DX6BP4K7.js";
40
+ } from "./chunk-OCJNJUR4.js";
41
+ import "./chunk-7KY6U7MW.js";
42
42
  import "./chunk-RCFIB45Q.js";
43
43
  import "./chunk-JIADXJYU.js";
44
44
  import "./chunk-YYLHWIW6.js";
45
45
  import "./chunk-AGGIDPCZ.js";
46
- import "./chunk-AUH2LTIY.js";
46
+ import "./chunk-55C3UZSC.js";
47
47
  import "./chunk-MGIHZ5CJ.js";
48
48
  import "./chunk-5RGU3J7P.js";
49
49
  import "./chunk-M76ECQRD.js";
@@ -16,11 +16,11 @@ import {
16
16
  readStreamChunk,
17
17
  sendOpenAICompletionsRequest,
18
18
  updateTotalUsage
19
- } from "./chunk-3XZUNRYF.js";
19
+ } from "./chunk-SDAPQUSO.js";
20
20
  import "./chunk-JEXVIMYZ.js";
21
21
  import {
22
22
  prepareTools
23
- } from "./chunk-HDT2RB7T.js";
23
+ } from "./chunk-KPJYUEPE.js";
24
24
  import {
25
25
  INVALID_TOOL_ARGS_REPLACEMENT,
26
26
  buildInvalidToolCallSelfHealResult,
@@ -38,7 +38,7 @@ import {
38
38
  sanitizeOutboundResponsesInput,
39
39
  selectResponsesConversationState,
40
40
  updateResponsesConversationState
41
- } from "./chunk-KCBK4MDT.js";
41
+ } from "./chunk-RUVWTAK7.js";
42
42
  import "./chunk-HS7MLR74.js";
43
43
  import "./chunk-PV734VZX.js";
44
44
  import {
@@ -48,7 +48,7 @@ import {
48
48
  resolveAgentRequiredPackIds,
49
49
  shouldBlockForGptPro,
50
50
  waitForAbortableDelay
51
- } from "./chunk-6KYCG5GW.js";
51
+ } from "./chunk-5Q4DXT47.js";
52
52
  import "./chunk-RQSOAMPJ.js";
53
53
  import "./chunk-GUYMR3JL.js";
54
54
  import "./chunk-KQHGZWSV.js";
@@ -56,7 +56,7 @@ import "./chunk-IFS5CUEH.js";
56
56
  import "./chunk-KXKQO4Q6.js";
57
57
  import {
58
58
  getDocState
59
- } from "./chunk-VD2SO4RG.js";
59
+ } from "./chunk-INXNBCEY.js";
60
60
  import {
61
61
  getFinalPrice,
62
62
  getModelPricing,
@@ -77,14 +77,14 @@ import {
77
77
  } from "./chunk-MEYIRKDN.js";
78
78
  import "./chunk-63W5N6P3.js";
79
79
  import "./chunk-VF4K2QE6.js";
80
- import "./chunk-FDKEDU7R.js";
80
+ import "./chunk-P62APAXL.js";
81
81
  import {
82
82
  getCurrentSpaceId,
83
83
  getCurrentSpaceIdRaw,
84
84
  getViewMode,
85
85
  selectCurrentTable,
86
86
  selectTableRows
87
- } from "./chunk-LAUUAYLK.js";
87
+ } from "./chunk-OCJNJUR4.js";
88
88
  import {
89
89
  PERSONALIZATION_DIALOG_CATEGORY,
90
90
  addToolMessage,
@@ -102,12 +102,12 @@ import {
102
102
  selectCurrentDialogConfig,
103
103
  selectDialogConfigByKey,
104
104
  updateTokens
105
- } from "./chunk-DX6BP4K7.js";
105
+ } from "./chunk-7KY6U7MW.js";
106
106
  import "./chunk-RCFIB45Q.js";
107
107
  import "./chunk-JIADXJYU.js";
108
108
  import "./chunk-YYLHWIW6.js";
109
109
  import "./chunk-AGGIDPCZ.js";
110
- import "./chunk-AUH2LTIY.js";
110
+ import "./chunk-55C3UZSC.js";
111
111
  import {
112
112
  createCliChatTurnStream,
113
113
  getCliChatSession,
@@ -146,7 +146,7 @@ import {
146
146
  stripImagePartsForTextOnlyAgent
147
147
  } from "./chunk-64KIQZA2.js";
148
148
  import "./chunk-T27IEBNQ.js";
149
- import "./chunk-MI2J67UU.js";
149
+ import "./chunk-P66M7LSQ.js";
150
150
  import "./chunk-N7J63Q6C.js";
151
151
  import "./chunk-M3JQWYBC.js";
152
152
  import {
@@ -8,27 +8,27 @@ import {
8
8
  toolQueryFunc,
9
9
  toolQueryFunctionSchema,
10
10
  toolRegistry
11
- } from "./chunk-6KYCG5GW.js";
11
+ } from "./chunk-5Q4DXT47.js";
12
12
  import "./chunk-RQSOAMPJ.js";
13
13
  import "./chunk-GUYMR3JL.js";
14
14
  import "./chunk-KQHGZWSV.js";
15
15
  import "./chunk-IFS5CUEH.js";
16
16
  import "./chunk-KXKQO4Q6.js";
17
- import "./chunk-VD2SO4RG.js";
17
+ import "./chunk-INXNBCEY.js";
18
18
  import "./chunk-BANYWEYY.js";
19
19
  import "./chunk-U6QQLXWI.js";
20
20
  import "./chunk-INZZJSQF.js";
21
21
  import "./chunk-MEYIRKDN.js";
22
22
  import "./chunk-63W5N6P3.js";
23
23
  import "./chunk-VF4K2QE6.js";
24
- import "./chunk-FDKEDU7R.js";
25
- import "./chunk-LAUUAYLK.js";
26
- import "./chunk-DX6BP4K7.js";
24
+ import "./chunk-P62APAXL.js";
25
+ import "./chunk-OCJNJUR4.js";
26
+ import "./chunk-7KY6U7MW.js";
27
27
  import "./chunk-RCFIB45Q.js";
28
28
  import "./chunk-JIADXJYU.js";
29
29
  import "./chunk-YYLHWIW6.js";
30
30
  import "./chunk-AGGIDPCZ.js";
31
- import "./chunk-AUH2LTIY.js";
31
+ import "./chunk-55C3UZSC.js";
32
32
  import "./chunk-MGIHZ5CJ.js";
33
33
  import "./chunk-5RGU3J7P.js";
34
34
  import "./chunk-M76ECQRD.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  updateContentTitle
3
- } from "./chunk-LAUUAYLK.js";
3
+ } from "./chunk-OCJNJUR4.js";
4
4
  import {
5
5
  isAssistantToolStub,
6
6
  selectAllMsgs
7
- } from "./chunk-DX6BP4K7.js";
7
+ } from "./chunk-7KY6U7MW.js";
8
8
  import {
9
9
  BUILTIN_TITLE_LLM_CONFIG
10
10
  } from "./chunk-RCFIB45Q.js";
@@ -13,7 +13,7 @@ import "./chunk-YYLHWIW6.js";
13
13
  import "./chunk-AGGIDPCZ.js";
14
14
  import {
15
15
  runLlm
16
- } from "./chunk-AUH2LTIY.js";
16
+ } from "./chunk-55C3UZSC.js";
17
17
  import "./chunk-MGIHZ5CJ.js";
18
18
  import "./chunk-5RGU3J7P.js";
19
19
  import {