nolo-cli 0.81.0-alpha.1 → 0.82.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 (28) hide show
  1. package/{agentDeleteCommand-D2WHTH7S.js → agentDeleteCommand-JO62QZ7E.js} +1 -1
  2. package/{agentEmailCommands-IHSX56GO.js → agentEmailCommands-L6URKRSF.js} +3 -3
  3. package/{agentListCommands-R2DGZMFP.js → agentListCommands-42BRETZW.js} +1 -1
  4. package/{agentMachineCommands-UYDID3HQ.js → agentMachineCommands-VXUHHR55.js} +2 -2
  5. package/{agentRecordCommands-OFYTWZAA.js → agentRecordCommands-6RZXGAXV.js} +3 -3
  6. package/{agentRunCommand-5PJF27JP.js → agentRunCommand-ZJTWUXLZ.js} +3 -3
  7. package/{agentRuntimeLocal-VD4O2QFQ.js → agentRuntimeLocal-4D3XWDVB.js} +1 -1
  8. package/{appDeleteCommands-DXJA7XOZ.js → appDeleteCommands-C2DIXP54.js} +1 -1
  9. package/{appDeployCommands-JL6XJZJE.js → appDeployCommands-GCIRWWTW.js} +1 -1
  10. package/{appDeployStatusCommands-MS2D2R6R.js → appDeployStatusCommands-XNUA52PJ.js} +1 -1
  11. package/{appGetCommands-BV2RDCEV.js → appGetCommands-CZMYMPOE.js} +1 -1
  12. package/{appListCommands-E2AM636N.js → appListCommands-FHONUBTZ.js} +1 -1
  13. package/{chunk-DFJFH53D.js → chunk-36SHLXQT.js} +1 -1
  14. package/{chunk-KSHYBTYH.js → chunk-IHJ7SPCB.js} +101 -8
  15. package/{chunk-4YCRJUQ2.js → chunk-J2ZTW4GL.js} +2 -2
  16. package/{chunk-QPJBFU7R.js → chunk-NEESH45U.js} +1 -1
  17. package/{chunk-ODWEZBU6.js → chunk-TJKMYL7C.js} +3 -3
  18. package/{dialogCommands-KJS57EDF.js → dialogCommands-B5BF434N.js} +1 -1
  19. package/{docCreateCommands-MRGXJTB4.js → docCreateCommands-LYUF6IJ4.js} +1 -1
  20. package/{docDeleteCommands-YCI75CBU.js → docDeleteCommands-3GIVHHIW.js} +1 -1
  21. package/{docReadCommands-JN3VHTQY.js → docReadCommands-NP3GYLPJ.js} +1 -1
  22. package/{docUpdateCommands-7KBOENX7.js → docUpdateCommands-LBL3X555.js} +1 -1
  23. package/index.js +40 -40
  24. package/{machineCommands-FYIRYMDE.js → machineCommands-LZTFFRKQ.js} +3 -3
  25. package/{machineWsRunDispatch-J2FEYI4T.js → machineWsRunDispatch-2GOVXUW2.js} +3 -3
  26. package/package.json +1 -1
  27. package/{readlineWorkspace-OWBGR7QO.js → readlineWorkspace-OUPHJV5W.js} +38 -6
  28. package/{spaceCommands-SSLCOSBH.js → spaceCommands-NZJEGHCO.js} +1 -1
@@ -15,7 +15,7 @@ import "./chunk-KQHGZWSV.js";
15
15
  import {
16
16
  Level
17
17
  } from "./chunk-UV6VISQJ.js";
18
- import "./chunk-KSHYBTYH.js";
18
+ import "./chunk-IHJ7SPCB.js";
19
19
  import "./chunk-ZNFJWEN4.js";
20
20
  import "./chunk-QC5LGHYP.js";
21
21
  import "./chunk-KIS76A2P.js";
@@ -8,8 +8,8 @@ import {
8
8
  } from "./chunk-JYYZCK2Z.js";
9
9
  import {
10
10
  runAgentCreateCommand
11
- } from "./chunk-DFJFH53D.js";
12
- import "./chunk-QPJBFU7R.js";
11
+ } from "./chunk-36SHLXQT.js";
12
+ import "./chunk-NEESH45U.js";
13
13
  import "./chunk-GBPZKFYK.js";
14
14
  import "./chunk-QCZX4FTW.js";
15
15
  import "./chunk-EADNWBAZ.js";
@@ -69,7 +69,7 @@ import "./chunk-3IT2PFHL.js";
69
69
  import "./chunk-MYU3MJCF.js";
70
70
  import "./chunk-AETZ7AD6.js";
71
71
  import "./chunk-KHCLMKZZ.js";
72
- import "./chunk-KSHYBTYH.js";
72
+ import "./chunk-IHJ7SPCB.js";
73
73
  import "./chunk-ZNFJWEN4.js";
74
74
  import "./chunk-QC5LGHYP.js";
75
75
  import "./chunk-KIS76A2P.js";
@@ -39,7 +39,7 @@ import {
39
39
  } from "./chunk-YWG6EMH3.js";
40
40
  import "./chunk-KQHGZWSV.js";
41
41
  import "./chunk-YYLHWIW6.js";
42
- import "./chunk-KSHYBTYH.js";
42
+ import "./chunk-IHJ7SPCB.js";
43
43
  import "./chunk-ZNFJWEN4.js";
44
44
  import "./chunk-QC5LGHYP.js";
45
45
  import "./chunk-KIS76A2P.js";
@@ -15,7 +15,7 @@ import {
15
15
  } from "./chunk-SPAQ4PVV.js";
16
16
  import "./chunk-NF64D32W.js";
17
17
  import "./chunk-3L2WKC3W.js";
18
- import "./chunk-KSHYBTYH.js";
18
+ import "./chunk-IHJ7SPCB.js";
19
19
  import "./chunk-ZNFJWEN4.js";
20
20
  import "./chunk-QC5LGHYP.js";
21
21
  import "./chunk-KIS76A2P.js";
@@ -89,7 +89,7 @@ async function defaultExecuteCli(provider, prompt, options) {
89
89
  return executeCli(provider, prompt, options);
90
90
  }
91
91
  async function forwardConnectorRunMessage(machine, message, pushMessage, executeCli, env, fetchImpl) {
92
- const { handleConnectorRunMessage } = await import("./machineWsRunDispatch-J2FEYI4T.js");
92
+ const { handleConnectorRunMessage } = await import("./machineWsRunDispatch-2GOVXUW2.js");
93
93
  return handleConnectorRunMessage(message, pushMessage, executeCli, env, fetchImpl);
94
94
  }
95
95
  async function detectLaunchableMachineInfo() {
@@ -2,8 +2,8 @@ import {
2
2
  runAgentCreateCommand,
3
3
  runAgentReadCommand,
4
4
  runAgentUpdateCommand
5
- } from "./chunk-DFJFH53D.js";
6
- import "./chunk-QPJBFU7R.js";
5
+ } from "./chunk-36SHLXQT.js";
6
+ import "./chunk-NEESH45U.js";
7
7
  import "./chunk-GBPZKFYK.js";
8
8
  import "./chunk-QCZX4FTW.js";
9
9
  import "./chunk-EADNWBAZ.js";
@@ -56,7 +56,7 @@ import "./chunk-3IT2PFHL.js";
56
56
  import "./chunk-MYU3MJCF.js";
57
57
  import "./chunk-AETZ7AD6.js";
58
58
  import "./chunk-KHCLMKZZ.js";
59
- import "./chunk-KSHYBTYH.js";
59
+ import "./chunk-IHJ7SPCB.js";
60
60
  import "./chunk-ZNFJWEN4.js";
61
61
  import "./chunk-QC5LGHYP.js";
62
62
  import "./chunk-KIS76A2P.js";
@@ -8,12 +8,12 @@ import {
8
8
  resolveRunSettlementNote,
9
9
  resolveWorkflowReference,
10
10
  runAgentRunCommand
11
- } from "./chunk-ODWEZBU6.js";
11
+ } from "./chunk-TJKMYL7C.js";
12
12
  import "./chunk-S7Z2HMCN.js";
13
13
  import {
14
14
  parseAgentRunArgs
15
15
  } from "./chunk-JYYZCK2Z.js";
16
- import "./chunk-QPJBFU7R.js";
16
+ import "./chunk-NEESH45U.js";
17
17
  import "./chunk-GBPZKFYK.js";
18
18
  import "./chunk-QCZX4FTW.js";
19
19
  import "./chunk-EADNWBAZ.js";
@@ -71,7 +71,7 @@ import "./chunk-3IT2PFHL.js";
71
71
  import "./chunk-MYU3MJCF.js";
72
72
  import "./chunk-AETZ7AD6.js";
73
73
  import "./chunk-KHCLMKZZ.js";
74
- import "./chunk-KSHYBTYH.js";
74
+ import "./chunk-IHJ7SPCB.js";
75
75
  import "./chunk-ZNFJWEN4.js";
76
76
  import "./chunk-QC5LGHYP.js";
77
77
  import "./chunk-KIS76A2P.js";
@@ -19,7 +19,7 @@ import {
19
19
  resolveOpenAiCompatibleProviderConfig,
20
20
  runLocalAgentTurn,
21
21
  shouldCacheHybridRemoteRecord
22
- } from "./chunk-KSHYBTYH.js";
22
+ } from "./chunk-IHJ7SPCB.js";
23
23
  import "./chunk-ZNFJWEN4.js";
24
24
  import {
25
25
  buildPlatformChatCompletionRequest,
@@ -13,7 +13,7 @@ import "./chunk-NRALD3CC.js";
13
13
  import "./chunk-BOYUESO7.js";
14
14
  import "./chunk-SPAQ4PVV.js";
15
15
  import "./chunk-VF4K2QE6.js";
16
- import "./chunk-KSHYBTYH.js";
16
+ import "./chunk-IHJ7SPCB.js";
17
17
  import "./chunk-ZNFJWEN4.js";
18
18
  import "./chunk-QC5LGHYP.js";
19
19
  import "./chunk-KIS76A2P.js";
@@ -14,7 +14,7 @@ import "./chunk-NRALD3CC.js";
14
14
  import "./chunk-BOYUESO7.js";
15
15
  import "./chunk-SPAQ4PVV.js";
16
16
  import "./chunk-VF4K2QE6.js";
17
- import "./chunk-KSHYBTYH.js";
17
+ import "./chunk-IHJ7SPCB.js";
18
18
  import "./chunk-ZNFJWEN4.js";
19
19
  import "./chunk-QC5LGHYP.js";
20
20
  import "./chunk-KIS76A2P.js";
@@ -13,7 +13,7 @@ import "./chunk-NRALD3CC.js";
13
13
  import "./chunk-BOYUESO7.js";
14
14
  import "./chunk-SPAQ4PVV.js";
15
15
  import "./chunk-VF4K2QE6.js";
16
- import "./chunk-KSHYBTYH.js";
16
+ import "./chunk-IHJ7SPCB.js";
17
17
  import "./chunk-ZNFJWEN4.js";
18
18
  import "./chunk-QC5LGHYP.js";
19
19
  import "./chunk-KIS76A2P.js";
@@ -14,7 +14,7 @@ import "./chunk-NRALD3CC.js";
14
14
  import "./chunk-BOYUESO7.js";
15
15
  import "./chunk-SPAQ4PVV.js";
16
16
  import "./chunk-VF4K2QE6.js";
17
- import "./chunk-KSHYBTYH.js";
17
+ import "./chunk-IHJ7SPCB.js";
18
18
  import "./chunk-ZNFJWEN4.js";
19
19
  import "./chunk-QC5LGHYP.js";
20
20
  import "./chunk-KIS76A2P.js";
@@ -14,7 +14,7 @@ import "./chunk-NRALD3CC.js";
14
14
  import "./chunk-BOYUESO7.js";
15
15
  import "./chunk-SPAQ4PVV.js";
16
16
  import "./chunk-VF4K2QE6.js";
17
- import "./chunk-KSHYBTYH.js";
17
+ import "./chunk-IHJ7SPCB.js";
18
18
  import "./chunk-ZNFJWEN4.js";
19
19
  import "./chunk-QC5LGHYP.js";
20
20
  import "./chunk-KIS76A2P.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  clearCliLocalRuntimePreparedAgentCache
3
- } from "./chunk-QPJBFU7R.js";
3
+ } from "./chunk-NEESH45U.js";
4
4
  import {
5
5
  getReadableCliDb
6
6
  } from "./chunk-RXX4GDIH.js";
@@ -16398,10 +16398,11 @@ var ProcessRegistry = class {
16398
16398
  }
16399
16399
  }
16400
16400
  }
16401
- markExited(pid, exitCode) {
16401
+ markExited(pid, exitCode, resultCapsule) {
16402
16402
  const item = this.processes.get(pid);
16403
16403
  if (item && item.status === "running") {
16404
16404
  item.exitCode = exitCode;
16405
+ if (resultCapsule) item.resultCapsule = resultCapsule;
16405
16406
  item.status = exitCode === 0 ? "exited" : "failed";
16406
16407
  this.eventLog.append({
16407
16408
  taskId: item.taskId,
@@ -16416,7 +16417,8 @@ var ProcessRegistry = class {
16416
16417
  command: item.command,
16417
16418
  status: item.status,
16418
16419
  exitCode,
16419
- promoted: item.promoted
16420
+ promoted: item.promoted,
16421
+ ...item.resultCapsule ? { resultCapsule: item.resultCapsule } : {}
16420
16422
  });
16421
16423
  }
16422
16424
  }
@@ -16479,6 +16481,62 @@ function readProcessOwner(runtimeContext) {
16479
16481
  // packages/agent-runtime/workspaceShell.ts
16480
16482
  import { resolve as resolve3 } from "node:path";
16481
16483
  import { spawn as spawnChildProcess2 } from "node:child_process";
16484
+
16485
+ // packages/agent-runtime/processTaskResult.ts
16486
+ var PROCESS_RESULT_CAPSULE_TAIL_CHARS = 4e3;
16487
+ var PROCESS_RESULT_CAPSULE_SPILL_THRESHOLD_CHARS = 2e4;
16488
+ function tailText(value, maxChars) {
16489
+ if (value.length <= maxChars) return { text: value, truncated: false };
16490
+ return { text: value.slice(-maxChars), truncated: true };
16491
+ }
16492
+ function formatCapsuleStream(name, value) {
16493
+ return value.trim() ? `${name}:
16494
+ ${value.replace(/\n+$/, "")}` : "";
16495
+ }
16496
+ function buildProcessTaskResultCapsule(args2) {
16497
+ const tailChars = args2.tailChars ?? PROCESS_RESULT_CAPSULE_TAIL_CHARS;
16498
+ const spillThresholdChars = args2.spillThresholdChars ?? PROCESS_RESULT_CAPSULE_SPILL_THRESHOLD_CHARS;
16499
+ const stdout = typeof args2.stdout === "string" ? args2.stdout : "";
16500
+ const stderr = typeof args2.stderr === "string" ? args2.stderr : "";
16501
+ const exitCode = args2.exitCode;
16502
+ const captureError = args2.captureError?.trim() || void 0;
16503
+ const durationMs = typeof args2.startedAt === "number" && Number.isFinite(args2.startedAt) ? Math.max(0, (args2.endedAt ?? Date.now()) - args2.startedAt) : void 0;
16504
+ const stdoutTail = tailText(stdout, tailChars);
16505
+ const stderrTail = tailText(stderr, tailChars);
16506
+ const inlineSize = stdout.length + stderr.length;
16507
+ const inlineTruncated = stdoutTail.truncated || stderrTail.truncated;
16508
+ const shouldSpill = inlineTruncated || inlineSize > spillThresholdChars;
16509
+ let spill;
16510
+ if (shouldSpill) {
16511
+ try {
16512
+ const result4 = spillToolOutput({
16513
+ content: [
16514
+ formatCapsuleStream("stdout", stdout),
16515
+ formatCapsuleStream("stderr", stderr)
16516
+ ].filter(Boolean).join("\n\n"),
16517
+ toolName: "execShell",
16518
+ ...args2.workspaceRoot !== void 0 ? { workspaceRoot: args2.workspaceRoot } : {}
16519
+ });
16520
+ spill = {
16521
+ displayPath: result4.displayPath,
16522
+ totalChars: result4.totalChars,
16523
+ totalLines: result4.totalLines
16524
+ };
16525
+ } catch {
16526
+ }
16527
+ }
16528
+ return {
16529
+ stdout: stdoutTail.text,
16530
+ stderr: stderrTail.text,
16531
+ exitCode,
16532
+ ...durationMs !== void 0 ? { durationMs } : {},
16533
+ ...captureError ? { captureError } : {},
16534
+ truncated: inlineTruncated || Boolean(captureError),
16535
+ ...spill ? { spill } : {}
16536
+ };
16537
+ }
16538
+
16539
+ // packages/agent-runtime/workspaceShell.ts
16482
16540
  var EXEC_SHELL_TIMEOUT_ENV = "NOLO_EXEC_SHELL_TIMEOUT_MS";
16483
16541
  var EXEC_SHELL_DETACH_ENV = "NOLO_EXEC_SHELL_DETACH_MS";
16484
16542
  var DEFAULT_EXEC_SHELL_DETACH_MS = 12e4;
@@ -16858,6 +16916,15 @@ ${stderr.trim()}`, "exitCode: 127"].filter(Boolean).join("\n\n"),
16858
16916
  )
16859
16917
  };
16860
16918
  }
16919
+ function stdoutPromiseResult(promise3) {
16920
+ return promise3.then(
16921
+ (value) => ({ value }),
16922
+ (error) => ({
16923
+ value: "",
16924
+ error: error instanceof Error ? error.message : String(error)
16925
+ })
16926
+ );
16927
+ }
16861
16928
  async function runWorkspaceCommand(args2) {
16862
16929
  const timeoutMs = asOptionalPositiveFiniteNumber(args2.timeoutMs);
16863
16930
  const detached = process.platform !== "win32";
@@ -16916,8 +16983,8 @@ async function runWorkspaceCommand(args2) {
16916
16983
  process.removeListener("SIGINT", cleanupChildOnHostSignal);
16917
16984
  };
16918
16985
  exitPromise.then(detachSignalCleanup, detachSignalCleanup);
16919
- const stdoutPromise = readNodeStream(proc.stdout);
16920
- const stderrPromise = readNodeStream(proc.stderr);
16986
+ const stdoutCapture = stdoutPromiseResult(readNodeStream(proc.stdout));
16987
+ const stderrCapture = stdoutPromiseResult(readNodeStream(proc.stderr));
16921
16988
  const killChild = (signal) => {
16922
16989
  if (detached && typeof proc.pid === "number") {
16923
16990
  try {
@@ -17016,7 +17083,30 @@ async function runWorkspaceCommand(args2) {
17016
17083
  const taskId = envelope.taskId;
17017
17084
  proc.on("close", (code) => {
17018
17085
  detachSignalCleanup();
17019
- registry2.markExited(pid, code ?? 1);
17086
+ const exitCode2 = code ?? 1;
17087
+ void (async () => {
17088
+ const [stdoutResult, stderrResult] = await Promise.all([
17089
+ stdoutCapture,
17090
+ stderrCapture
17091
+ ]);
17092
+ const stdout2 = stdoutResult.value;
17093
+ const stderr2 = stderrResult.value;
17094
+ let capsule;
17095
+ try {
17096
+ capsule = buildProcessTaskResultCapsule({
17097
+ stdout: stdout2,
17098
+ stderr: stderr2,
17099
+ exitCode: exitCode2,
17100
+ // Duration is measured from the registry envelope's startedAt
17101
+ // (spawn moment), not from the detach moment.
17102
+ startedAt: registry2.get(pid)?.startedAt,
17103
+ workspaceRoot: args2.workspaceRoot,
17104
+ captureError: [stdoutResult.error, stderrResult.error].filter(Boolean).join("; ")
17105
+ });
17106
+ } catch {
17107
+ }
17108
+ registry2.markExited(pid, exitCode2, capsule);
17109
+ })();
17020
17110
  });
17021
17111
  const immediate = effectiveDetachMs === 0;
17022
17112
  const reason = immediate ? `command looks long-running; moved to background immediately (pid=${pid}, label=${label})` : `command detached to background after ${effectiveDetachMs}ms (pid=${pid}, label=${label})`;
@@ -17040,10 +17130,13 @@ Use listProcesses to inspect or stop it.`,
17040
17130
  })
17041
17131
  };
17042
17132
  }
17043
- const [stdout, rawStderr] = await Promise.all([
17044
- stdoutPromise,
17045
- stderrPromise
17133
+ const [stdoutCaptureResult, stderrCaptureResult] = await Promise.all([
17134
+ stdoutCapture,
17135
+ stderrCapture
17046
17136
  ]);
17137
+ const stdout = stdoutCaptureResult.value;
17138
+ const rawStderr = stderrCaptureResult.value;
17139
+ const streamCaptureError = [stdoutCaptureResult.error, stderrCaptureResult.error].filter(Boolean).join("; ");
17047
17140
  const exitCode = aborted ? 130 : timedOut ? 124 : Number(raceWinner);
17048
17141
  if (typeof proc.pid === "number") {
17049
17142
  registry2.completeTransient(proc.pid, exitCode);
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  createCliLocalRuntimeAdapter,
3
3
  summarizeEndpoint
4
- } from "./chunk-QPJBFU7R.js";
4
+ } from "./chunk-NEESH45U.js";
5
5
  import {
6
6
  clipMultilineText
7
7
  } from "./chunk-QQBO3LQW.js";
8
8
  import {
9
9
  runLocalAgentTurn
10
- } from "./chunk-KSHYBTYH.js";
10
+ } from "./chunk-IHJ7SPCB.js";
11
11
  import {
12
12
  applyToolSurfaceConstraints
13
13
  } from "./chunk-ZVN6I33J.js";
@@ -159,7 +159,7 @@ import {
159
159
  resolveOpenAiCompatibleProviderConfig,
160
160
  shouldUseGeminiNativeToolRoute,
161
161
  summarizeToolArguments
162
- } from "./chunk-KSHYBTYH.js";
162
+ } from "./chunk-IHJ7SPCB.js";
163
163
  import {
164
164
  PlatformStreamInterruptedError,
165
165
  buildPlatformChatCompletionRequest,
@@ -27,7 +27,7 @@ import {
27
27
  resolveLocalUserId,
28
28
  t,
29
29
  toolLabel
30
- } from "./chunk-QPJBFU7R.js";
30
+ } from "./chunk-NEESH45U.js";
31
31
  import {
32
32
  createRunActivityTracker,
33
33
  popSingleQueueMessage,
@@ -111,7 +111,7 @@ import {
111
111
  LOCAL_AGENT_CONFIG_MISSING_CODE,
112
112
  LOCAL_TURN_ABORTED_CODE,
113
113
  readActionGate
114
- } from "./chunk-KSHYBTYH.js";
114
+ } from "./chunk-IHJ7SPCB.js";
115
115
  import {
116
116
  resolveAgentRuntimeConfigFromRecord
117
117
  } from "./chunk-KIS76A2P.js";
@@ -10413,7 +10413,7 @@ function findCollapsedPasteSpanAt(buffer, pos, opts = {}) {
10413
10413
  // packages/cli/client/agentRun.ts
10414
10414
  import { ulid } from "ulid";
10415
10415
  async function loadRunLocalAgentTurn() {
10416
- const { runLocalAgentTurn } = await import("./agentRuntimeLocal-VD4O2QFQ.js");
10416
+ const { runLocalAgentTurn } = await import("./agentRuntimeLocal-4D3XWDVB.js");
10417
10417
  return runLocalAgentTurn;
10418
10418
  }
10419
10419
  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();
@@ -23,7 +23,7 @@ import "./chunk-KQHGZWSV.js";
23
23
  import "./chunk-HQUORJTM.js";
24
24
  import "./chunk-URMS4XY2.js";
25
25
  import "./chunk-GLKOYSRU.js";
26
- import "./chunk-KSHYBTYH.js";
26
+ import "./chunk-IHJ7SPCB.js";
27
27
  import "./chunk-ZNFJWEN4.js";
28
28
  import "./chunk-QC5LGHYP.js";
29
29
  import "./chunk-KIS76A2P.js";
@@ -28,7 +28,7 @@ import "./chunk-SPAQ4PVV.js";
28
28
  import "./chunk-VF4K2QE6.js";
29
29
  import "./chunk-AETZ7AD6.js";
30
30
  import "./chunk-KHCLMKZZ.js";
31
- import "./chunk-KSHYBTYH.js";
31
+ import "./chunk-IHJ7SPCB.js";
32
32
  import "./chunk-ZNFJWEN4.js";
33
33
  import "./chunk-QC5LGHYP.js";
34
34
  import "./chunk-KIS76A2P.js";
@@ -21,7 +21,7 @@ import "./chunk-KQHGZWSV.js";
21
21
  import "./chunk-VF4K2QE6.js";
22
22
  import "./chunk-AETZ7AD6.js";
23
23
  import "./chunk-KHCLMKZZ.js";
24
- import "./chunk-KSHYBTYH.js";
24
+ import "./chunk-IHJ7SPCB.js";
25
25
  import "./chunk-ZNFJWEN4.js";
26
26
  import "./chunk-QC5LGHYP.js";
27
27
  import "./chunk-KIS76A2P.js";
@@ -16,7 +16,7 @@ import "./chunk-SPAQ4PVV.js";
16
16
  import "./chunk-VF4K2QE6.js";
17
17
  import "./chunk-AETZ7AD6.js";
18
18
  import "./chunk-KHCLMKZZ.js";
19
- import "./chunk-KSHYBTYH.js";
19
+ import "./chunk-IHJ7SPCB.js";
20
20
  import "./chunk-ZNFJWEN4.js";
21
21
  import "./chunk-QC5LGHYP.js";
22
22
  import "./chunk-KIS76A2P.js";
@@ -30,7 +30,7 @@ import {
30
30
  resolvePageSkillMetadata
31
31
  } from "./chunk-AETZ7AD6.js";
32
32
  import "./chunk-KHCLMKZZ.js";
33
- import "./chunk-KSHYBTYH.js";
33
+ import "./chunk-IHJ7SPCB.js";
34
34
  import "./chunk-ZNFJWEN4.js";
35
35
  import "./chunk-QC5LGHYP.js";
36
36
  import "./chunk-KIS76A2P.js";
package/index.js CHANGED
@@ -127,7 +127,7 @@ function createDaemonShortcutCommand(path, description, command2) {
127
127
  // packages/cli/agentInternalCommandEntries.ts
128
128
  function getAgentInternalCommandEntries() {
129
129
  const createAgentRunCommand = (path, description) => createContextCommand(path, description, async (args2, ctx) => {
130
- const { runAgentRunCommand } = await import("./agentRunCommand-5PJF27JP.js");
130
+ const { runAgentRunCommand } = await import("./agentRunCommand-ZJTWUXLZ.js");
131
131
  return runAgentRunCommand(args2, {
132
132
  env: ctx.env,
133
133
  scriptDir: ctx.scriptDir,
@@ -139,11 +139,11 @@ function getAgentInternalCommandEntries() {
139
139
  createAgentRunCommand(["run"], "Run a no-login local agent in this workspace"),
140
140
  createAgentRunCommand(["chat"], "Chat with an agent"),
141
141
  createEnvCommand(["agent", "list"], "List owned agents", async (args2, deps) => {
142
- const { runAgentListCommand } = await import("./agentListCommands-R2DGZMFP.js");
142
+ const { runAgentListCommand } = await import("./agentListCommands-42BRETZW.js");
143
143
  return runAgentListCommand(args2, deps);
144
144
  }),
145
145
  createEnvCommand(["agent", "create"], "Create a new agent", async (args2, deps) => {
146
- const { runAgentCreateCommand } = await import("./agentRecordCommands-OFYTWZAA.js");
146
+ const { runAgentCreateCommand } = await import("./agentRecordCommands-6RZXGAXV.js");
147
147
  return runAgentCreateCommand(args2, deps);
148
148
  }),
149
149
  createEnvCommand(["agent", "models"], "List models available on an OpenAI-compatible provider", async (args2, deps) => {
@@ -155,7 +155,7 @@ function getAgentInternalCommandEntries() {
155
155
  return runAgentPullCommand(args2, deps);
156
156
  }),
157
157
  createEnvCommand(["agent", "read"], "Read a single agent", async (args2, deps) => {
158
- const { runAgentReadCommand } = await import("./agentRecordCommands-OFYTWZAA.js");
158
+ const { runAgentReadCommand } = await import("./agentRecordCommands-6RZXGAXV.js");
159
159
  return runAgentReadCommand(args2, deps);
160
160
  }),
161
161
  createAgentRunCommand(["agent", "run"], "Run an agent"),
@@ -184,31 +184,31 @@ function getAgentInternalCommandEntries() {
184
184
  return runSetupOfflineMarxistsAgentCommand(args2, deps);
185
185
  }),
186
186
  createEnvCommand(["agent", "update"], "Update agent fields", async (args2, deps) => {
187
- const { runAgentUpdateCommand } = await import("./agentRecordCommands-OFYTWZAA.js");
187
+ const { runAgentUpdateCommand } = await import("./agentRecordCommands-6RZXGAXV.js");
188
188
  return runAgentUpdateCommand(args2, deps);
189
189
  }),
190
190
  createEnvCommand(["agent", "email", "provision"], "Provision a controlled inbox for an agent", async (args2, deps) => {
191
- const { runAgentEmailProvisionCommand } = await import("./agentEmailCommands-IHSX56GO.js");
191
+ const { runAgentEmailProvisionCommand } = await import("./agentEmailCommands-L6URKRSF.js");
192
192
  return runAgentEmailProvisionCommand(args2, deps);
193
193
  }),
194
194
  createEnvCommand(["agent", "email", "bind"], "Bind an existing email address to an agent", async (args2, deps) => {
195
- const { runAgentEmailBindCommand } = await import("./agentEmailCommands-IHSX56GO.js");
195
+ const { runAgentEmailBindCommand } = await import("./agentEmailCommands-L6URKRSF.js");
196
196
  return runAgentEmailBindCommand(args2, deps);
197
197
  }),
198
198
  createEnvCommand(["agent", "email", "transfer"], "Transfer an email identity from one agent to another (cross-account)", async (args2, deps) => {
199
- const { runAgentEmailTransferCommand } = await import("./agentEmailCommands-IHSX56GO.js");
199
+ const { runAgentEmailTransferCommand } = await import("./agentEmailCommands-L6URKRSF.js");
200
200
  return runAgentEmailTransferCommand(args2, deps);
201
201
  }),
202
202
  createEnvCommand(
203
203
  ["agent", "email", "create-and-provision"],
204
204
  "Create an agent and provision its controlled inbox",
205
205
  async (args2, deps) => {
206
- const { runAgentEmailCreateAndProvisionCommand } = await import("./agentEmailCommands-IHSX56GO.js");
206
+ const { runAgentEmailCreateAndProvisionCommand } = await import("./agentEmailCommands-L6URKRSF.js");
207
207
  return runAgentEmailCreateAndProvisionCommand(args2, deps);
208
208
  }
209
209
  ),
210
210
  createEnvCommand(["agent", "delete"], "Hard-delete an agent's private and public records", async (args2, deps) => {
211
- const { runAgentDeleteCommand } = await import("./agentDeleteCommand-D2WHTH7S.js");
211
+ const { runAgentDeleteCommand } = await import("./agentDeleteCommand-JO62QZ7E.js");
212
212
  return runAgentDeleteCommand(args2, deps);
213
213
  }),
214
214
  createEnvCommand(["agent", "grant"], "Grant another user access to this agent's owner credentials", async (args2, deps) => {
@@ -224,15 +224,15 @@ function getAgentInternalCommandEntries() {
224
224
  return runAgentRevokeGrantCommand(args2, deps);
225
225
  }),
226
226
  createEnvCommand(["agent", "bind-current"], "Bind an agent to this machine", async (args2, deps) => {
227
- const { runAgentBindCurrentCommand } = await import("./agentMachineCommands-UYDID3HQ.js");
227
+ const { runAgentBindCurrentCommand } = await import("./agentMachineCommands-VXUHHR55.js");
228
228
  return runAgentBindCurrentCommand(args2, deps);
229
229
  }),
230
230
  createEnvCommand(["agent", "smoke-current"], "Smoke test a bound agent through this machine", async (args2, deps) => {
231
- const { runAgentSmokeCurrentCommand } = await import("./agentMachineCommands-UYDID3HQ.js");
231
+ const { runAgentSmokeCurrentCommand } = await import("./agentMachineCommands-VXUHHR55.js");
232
232
  return runAgentSmokeCurrentCommand(args2, deps);
233
233
  }),
234
234
  createEnvCommand(["agent", "runtime-doctor"], "Diagnose current machine runtime compatibility", async (args2, deps) => {
235
- const { runAgentRuntimeDoctorCommand } = await import("./agentMachineCommands-UYDID3HQ.js");
235
+ const { runAgentRuntimeDoctorCommand } = await import("./agentMachineCommands-VXUHHR55.js");
236
236
  return runAgentRuntimeDoctorCommand(args2, deps);
237
237
  }),
238
238
  createAgentRunCommand(["agent", "chat"], "Chat with an agent")
@@ -243,23 +243,23 @@ function getAgentInternalCommandEntries() {
243
243
  function getAppInternalCommandEntries() {
244
244
  return [
245
245
  createEnvCommand(["app", "list"], "List your apps", async (args2, deps) => {
246
- const { runAppListCommand } = await import("./appListCommands-E2AM636N.js");
246
+ const { runAppListCommand } = await import("./appListCommands-FHONUBTZ.js");
247
247
  return runAppListCommand(args2, deps);
248
248
  }),
249
249
  createEnvCommand(["app", "get"], "Get app details", async (args2, deps) => {
250
- const { runAppGetCommand } = await import("./appGetCommands-BV2RDCEV.js");
250
+ const { runAppGetCommand } = await import("./appGetCommands-CZMYMPOE.js");
251
251
  return runAppGetCommand(args2, deps);
252
252
  }),
253
253
  createEnvCommand(["app", "deploy"], "Deploy an app", async (args2, deps) => {
254
- const { runAppDeployCommand } = await import("./appDeployCommands-JL6XJZJE.js");
254
+ const { runAppDeployCommand } = await import("./appDeployCommands-GCIRWWTW.js");
255
255
  return runAppDeployCommand(args2, deps);
256
256
  }),
257
257
  createEnvCommand(["app", "deploy", "status"], "Check app deploy status", async (args2, deps) => {
258
- const { runAppDeployStatusCommand } = await import("./appDeployStatusCommands-MS2D2R6R.js");
258
+ const { runAppDeployStatusCommand } = await import("./appDeployStatusCommands-XNUA52PJ.js");
259
259
  return runAppDeployStatusCommand(args2, deps);
260
260
  }),
261
261
  createEnvCommand(["app", "delete"], "Delete an app", async (args2, deps) => {
262
- const { runAppDeleteCommand } = await import("./appDeleteCommands-DXJA7XOZ.js");
262
+ const { runAppDeleteCommand } = await import("./appDeleteCommands-C2DIXP54.js");
263
263
  return runAppDeleteCommand(args2, deps);
264
264
  })
265
265
  ];
@@ -324,23 +324,23 @@ function getChromeInternalCommandEntries() {
324
324
  function getDialogInternalCommandEntries() {
325
325
  return [
326
326
  createEnvCommand(["dialog", "list"], "List dialogs (default --limit 50; --all/--limit 0 full; --jsonl streams)", async (args2, deps) => {
327
- const { runDialogListCommand } = await import("./dialogCommands-KJS57EDF.js");
327
+ const { runDialogListCommand } = await import("./dialogCommands-B5BF434N.js");
328
328
  return runDialogListCommand(args2, deps);
329
329
  }),
330
330
  createEnvCommand(["dialog", "delete"], "Delete one or more dialogs", async (args2, deps) => {
331
- const { runDialogDeleteCommand } = await import("./dialogCommands-KJS57EDF.js");
331
+ const { runDialogDeleteCommand } = await import("./dialogCommands-B5BF434N.js");
332
332
  return runDialogDeleteCommand(args2, deps);
333
333
  }),
334
334
  createEnvCommand(["dialog", "query"], "Query dialogs by subject refs (default --limit 50; --all full; --jsonl streams)", async (args2, deps) => {
335
- const { runDialogQueryCommand } = await import("./dialogCommands-KJS57EDF.js");
335
+ const { runDialogQueryCommand } = await import("./dialogCommands-B5BF434N.js");
336
336
  return runDialogQueryCommand(args2, deps);
337
337
  }),
338
338
  createEnvCommand(["dialog", "read"], "Read a dialog", async (args2, deps) => {
339
- const { runDialogReadCommand } = await import("./dialogCommands-KJS57EDF.js");
339
+ const { runDialogReadCommand } = await import("./dialogCommands-B5BF434N.js");
340
340
  return runDialogReadCommand(args2, deps);
341
341
  }),
342
342
  createEnvCommand(["dialog", "status"], "Read compact dialog status", async (args2, deps) => {
343
- const { runDialogStatusCommand } = await import("./dialogCommands-KJS57EDF.js");
343
+ const { runDialogStatusCommand } = await import("./dialogCommands-B5BF434N.js");
344
344
  return runDialogStatusCommand(args2, deps);
345
345
  })
346
346
  ];
@@ -350,39 +350,39 @@ function getDialogInternalCommandEntries() {
350
350
  function getDocInternalCommandEntries() {
351
351
  return [
352
352
  createEnvCommand(["doc", "create"], "Create a normal doc", async (args2, deps) => {
353
- const { runDocCreateCommand } = await import("./docCreateCommands-MRGXJTB4.js");
353
+ const { runDocCreateCommand } = await import("./docCreateCommands-LYUF6IJ4.js");
354
354
  return runDocCreateCommand(args2, deps);
355
355
  }),
356
356
  createEnvCommand(["doc", "read"], "Read a normal doc", async (args2, deps) => {
357
- const { runDocReadCommand } = await import("./docReadCommands-JN3VHTQY.js");
357
+ const { runDocReadCommand } = await import("./docReadCommands-NP3GYLPJ.js");
358
358
  return runDocReadCommand(args2, deps);
359
359
  }),
360
360
  createEnvCommand(["doc", "update"], "Update a normal doc", async (args2, deps) => {
361
- const { runDocUpdateCommand } = await import("./docUpdateCommands-7KBOENX7.js");
361
+ const { runDocUpdateCommand } = await import("./docUpdateCommands-LBL3X555.js");
362
362
  return runDocUpdateCommand(args2, deps);
363
363
  }),
364
364
  createEnvCommand(["doc", "delete"], "Delete a normal doc", async (args2, deps) => {
365
- const { runDocDeleteCommand } = await import("./docDeleteCommands-YCI75CBU.js");
365
+ const { runDocDeleteCommand } = await import("./docDeleteCommands-3GIVHHIW.js");
366
366
  return runDocDeleteCommand(args2, deps);
367
367
  }),
368
368
  createEnvCommand(["skill-doc", "create"], "Create a skill-backed doc", async (args2, deps) => {
369
- const { runSkillDocCreateCommand } = await import("./docCreateCommands-MRGXJTB4.js");
369
+ const { runSkillDocCreateCommand } = await import("./docCreateCommands-LYUF6IJ4.js");
370
370
  return runSkillDocCreateCommand(args2, deps);
371
371
  }),
372
372
  createEnvCommand(["skill", "create-doc"], "Create a skill-backed doc", async (args2, deps) => {
373
- const { runSkillDocCreateCommand } = await import("./docCreateCommands-MRGXJTB4.js");
373
+ const { runSkillDocCreateCommand } = await import("./docCreateCommands-LYUF6IJ4.js");
374
374
  return runSkillDocCreateCommand(args2, deps);
375
375
  }),
376
376
  createEnvCommand(["skill-doc", "read"], "Read a skill doc", async (args2, deps) => {
377
- const { runSkillDocReadCommand } = await import("./docReadCommands-JN3VHTQY.js");
377
+ const { runSkillDocReadCommand } = await import("./docReadCommands-NP3GYLPJ.js");
378
378
  return runSkillDocReadCommand(args2, deps);
379
379
  }),
380
380
  createEnvCommand(["skill-doc", "update"], "Update a skill doc", async (args2, deps) => {
381
- const { runSkillDocUpdateCommand } = await import("./docUpdateCommands-7KBOENX7.js");
381
+ const { runSkillDocUpdateCommand } = await import("./docUpdateCommands-LBL3X555.js");
382
382
  return runSkillDocUpdateCommand(args2, deps);
383
383
  }),
384
384
  createEnvCommand(["skill-doc", "delete"], "Delete a skill doc", async (args2, deps) => {
385
- const { runSkillDocDeleteCommand } = await import("./docDeleteCommands-YCI75CBU.js");
385
+ const { runSkillDocDeleteCommand } = await import("./docDeleteCommands-3GIVHHIW.js");
386
386
  return runSkillDocDeleteCommand(args2, deps);
387
387
  })
388
388
  ];
@@ -410,19 +410,19 @@ function getMemoryInternalCommandEntries() {
410
410
  function getSpaceInternalCommandEntries() {
411
411
  return [
412
412
  createEnvCommand(["space", "create"], "Create a space", async (args2, deps) => {
413
- const { runSpaceCreateCommand } = await import("./spaceCommands-SSLCOSBH.js");
413
+ const { runSpaceCreateCommand } = await import("./spaceCommands-NZJEGHCO.js");
414
414
  return runSpaceCreateCommand(args2, deps);
415
415
  }),
416
416
  createEnvCommand(["space", "invite"], "Invite an existing user to a space", async (args2, deps) => {
417
- const { runSpaceInviteCommand } = await import("./spaceCommands-SSLCOSBH.js");
417
+ const { runSpaceInviteCommand } = await import("./spaceCommands-NZJEGHCO.js");
418
418
  return runSpaceInviteCommand(args2, deps);
419
419
  }),
420
420
  createEnvCommand(["space", "accept-invite"], "Accept a space invite", async (args2, deps) => {
421
- const { runSpaceAcceptInviteCommand } = await import("./spaceCommands-SSLCOSBH.js");
421
+ const { runSpaceAcceptInviteCommand } = await import("./spaceCommands-NZJEGHCO.js");
422
422
  return runSpaceAcceptInviteCommand(args2, deps);
423
423
  }),
424
424
  createEnvCommand(["space", "upload"], "Upload a file to a space", async (args2, deps) => {
425
- const { runSpaceUploadCommand } = await import("./spaceCommands-SSLCOSBH.js");
425
+ const { runSpaceUploadCommand } = await import("./spaceCommands-NZJEGHCO.js");
426
426
  return runSpaceUploadCommand(args2, deps);
427
427
  })
428
428
  ];
@@ -472,15 +472,15 @@ function getSystemInternalCommandEntries(renderHelpText2) {
472
472
  return runWhoamiCommand({ args: args2, env: ctx.env });
473
473
  }),
474
474
  createEntrypointEnvCommand(["connect"], "Send machine heartbeats or hold a connector websocket", async (args2, deps) => {
475
- const { runMachineConnectCommand } = await import("./machineCommands-FYIRYMDE.js");
475
+ const { runMachineConnectCommand } = await import("./machineCommands-LZTFFRKQ.js");
476
476
  return runMachineConnectCommand(args2, deps);
477
477
  }),
478
478
  createDaemonShortcutCommand(["daemon"], "Run the connector daemon shortcut", async (args2, deps) => {
479
- const { runMachineConnectCommand } = await import("./machineCommands-FYIRYMDE.js");
479
+ const { runMachineConnectCommand } = await import("./machineCommands-LZTFFRKQ.js");
480
480
  return runMachineConnectCommand(args2, deps);
481
481
  }),
482
482
  createEnvCommand(["machine", "status"], "List machines registered to the current profile", async (args2, deps) => {
483
- const { runMachineStatusCommand } = await import("./machineCommands-FYIRYMDE.js");
483
+ const { runMachineStatusCommand } = await import("./machineCommands-LZTFFRKQ.js");
484
484
  return runMachineStatusCommand(args2, deps);
485
485
  }),
486
486
  createEnvCommand(["doctor", "runtime"], "Diagnose local-first agent runtime selection", async (args2, deps) => {
@@ -875,7 +875,7 @@ async function runScript(script, forwardedArgs, env) {
875
875
  return proc.exited;
876
876
  }
877
877
  async function launchTuiWorkspace(args2) {
878
- const { startTuiWorkspace } = await import("./readlineWorkspace-OWBGR7QO.js");
878
+ const { startTuiWorkspace } = await import("./readlineWorkspace-OUPHJV5W.js");
879
879
  const { createTuiSummaryLlmCaller } = await import("./tuiSummaryLlmCaller-3Z24VUWM.js");
880
880
  return startTuiWorkspace({
881
881
  ...args2,
@@ -2,13 +2,13 @@ import {
2
2
  buildMachinePermissionPromptBlock,
3
3
  handleConnectorRunMessage,
4
4
  resolveMachineRunPermissionPolicy
5
- } from "./chunk-4YCRJUQ2.js";
5
+ } from "./chunk-J2ZTW4GL.js";
6
6
  import {
7
7
  isConnectorWebSocketAuthError,
8
8
  isConnectorWebSocketRetryableError,
9
9
  resolveConnectorWebSocketTarget
10
10
  } from "./chunk-ALXHV7NK.js";
11
- import "./chunk-QPJBFU7R.js";
11
+ import "./chunk-NEESH45U.js";
12
12
  import "./chunk-GBPZKFYK.js";
13
13
  import "./chunk-QCZX4FTW.js";
14
14
  import "./chunk-EADNWBAZ.js";
@@ -67,7 +67,7 @@ import "./chunk-KHCLMKZZ.js";
67
67
  import {
68
68
  PATH_FIELD_ALIASES,
69
69
  createLocalWorkspaceToolExecutors
70
- } from "./chunk-KSHYBTYH.js";
70
+ } from "./chunk-IHJ7SPCB.js";
71
71
  import "./chunk-ZNFJWEN4.js";
72
72
  import "./chunk-QC5LGHYP.js";
73
73
  import "./chunk-KIS76A2P.js";
@@ -11,8 +11,8 @@ import {
11
11
  runtimeWorkspacePermissionPolicy,
12
12
  scopePermissionPolicyToRuntimeWorkspace,
13
13
  summarizeAgentConfigForLogs
14
- } from "./chunk-4YCRJUQ2.js";
15
- import "./chunk-QPJBFU7R.js";
14
+ } from "./chunk-J2ZTW4GL.js";
15
+ import "./chunk-NEESH45U.js";
16
16
  import "./chunk-GBPZKFYK.js";
17
17
  import "./chunk-QCZX4FTW.js";
18
18
  import "./chunk-EADNWBAZ.js";
@@ -63,7 +63,7 @@ import "./chunk-3IT2PFHL.js";
63
63
  import "./chunk-MYU3MJCF.js";
64
64
  import "./chunk-AETZ7AD6.js";
65
65
  import "./chunk-KHCLMKZZ.js";
66
- import "./chunk-KSHYBTYH.js";
66
+ import "./chunk-IHJ7SPCB.js";
67
67
  import "./chunk-ZNFJWEN4.js";
68
68
  import "./chunk-QC5LGHYP.js";
69
69
  import "./chunk-KIS76A2P.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nolo-cli",
3
- "version": "0.81.0-alpha.1",
3
+ "version": "0.82.0-alpha.1",
4
4
  "type": "module",
5
5
  "description": "Agent-first terminal workspace for Nolo",
6
6
  "bin": {
@@ -72,7 +72,7 @@ import {
72
72
  wrapTextToLines,
73
73
  wrapTranscriptLine,
74
74
  wrapTranscriptLineWithLayout
75
- } from "./chunk-ODWEZBU6.js";
75
+ } from "./chunk-TJKMYL7C.js";
76
76
  import "./chunk-S7Z2HMCN.js";
77
77
  import {
78
78
  listFavoriteAgentIdsAcrossServers,
@@ -96,7 +96,7 @@ import {
96
96
  readTimestamp,
97
97
  setCliLocale,
98
98
  t
99
- } from "./chunk-QPJBFU7R.js";
99
+ } from "./chunk-NEESH45U.js";
100
100
  import "./chunk-GBPZKFYK.js";
101
101
  import "./chunk-QCZX4FTW.js";
102
102
  import "./chunk-EADNWBAZ.js";
@@ -202,7 +202,7 @@ import {
202
202
  buildLocalWorkspaceToolset,
203
203
  getProcessRegistry,
204
204
  readCommandActionGatePayload
205
- } from "./chunk-KSHYBTYH.js";
205
+ } from "./chunk-IHJ7SPCB.js";
206
206
  import "./chunk-ZNFJWEN4.js";
207
207
  import "./chunk-QC5LGHYP.js";
208
208
  import "./chunk-KIS76A2P.js";
@@ -6749,13 +6749,32 @@ function createTurnInjectionInbox() {
6749
6749
 
6750
6750
  // packages/cli/tui/processTerminalNotice.ts
6751
6751
  function formatProcessTerminalWakeMessage(notices) {
6752
+ const missingCapsule = notices.some((notice) => !notice.resultCapsule);
6752
6753
  return [
6753
6754
  `<background_task_completion count="${notices.length}">`,
6754
- ...notices.map(formatProcessTerminalNoticeLine),
6755
- `\u9700\u8981\u8F93\u51FA/\u8BE6\u60C5\u65F6: taskLogs(taskId) \u6216 tasks`,
6755
+ ...notices.flatMap((notice) => [
6756
+ formatProcessTerminalNoticeLine(notice),
6757
+ ...notice.resultCapsule ? formatProcessResultCapsuleLines(notice.resultCapsule) : []
6758
+ ]),
6759
+ ...missingCapsule ? ["\u751F\u547D\u5468\u671F\u8BE6\u60C5\u53EF\u7528 taskLogs(taskId)"] : [],
6756
6760
  `</background_task_completion>`
6757
6761
  ].join("\n");
6758
6762
  }
6763
+ function formatProcessResultCapsuleLines(capsule) {
6764
+ const meta = [];
6765
+ if (capsule.durationMs !== void 0) meta.push(`duration=${capsule.durationMs}ms`);
6766
+ meta.push(capsule.truncated ? "tail-only" : "full");
6767
+ const stream = (name, value) => [
6768
+ `--- ${name} ---`,
6769
+ ...value.trim() ? value.replace(/\n+$/, "").split("\n") : ["(empty)"]
6770
+ ];
6771
+ return [
6772
+ `result capsule (${meta.join(", ")})${capsule.spill ? `, full output: ${capsule.spill.displayPath} (${capsule.spill.totalChars} chars, ${capsule.spill.totalLines} lines)` : ""}:`,
6773
+ ...capsule.captureError ? [`capture error: ${capsule.captureError}`] : [],
6774
+ ...stream("stdout", capsule.stdout),
6775
+ ...stream("stderr", capsule.stderr)
6776
+ ];
6777
+ }
6759
6778
  function formatProcessTerminalNoticeLine(notice) {
6760
6779
  const informative = notice.label && notice.label.trim() !== "" && notice.label !== notice.command;
6761
6780
  const label = informative ? ` (label: "${notice.label.replace(/(["\\])/g, "\\$1")}")` : "";
@@ -6776,7 +6795,20 @@ function buildProcessTaskCompletedTurnEvent(notice) {
6776
6795
  displayText: formatProcessTerminalNoticeLine(notice)
6777
6796
  };
6778
6797
  }
6798
+ var PENDING_NOTICE_PREFIX = "process-notice-v1:";
6799
+ function serializePendingProcessNotice(notice) {
6800
+ return notice.resultCapsule ? `${PENDING_NOTICE_PREFIX}${JSON.stringify(notice)}` : formatProcessTerminalNoticeLine(notice);
6801
+ }
6779
6802
  function parsePendingProcessNoticeLine(line) {
6803
+ if (line.startsWith(PENDING_NOTICE_PREFIX)) {
6804
+ try {
6805
+ const parsed = JSON.parse(line.slice(PENDING_NOTICE_PREFIX.length));
6806
+ if (parsed && typeof parsed.taskId === "string" && parsed.resultCapsule) {
6807
+ return parsed;
6808
+ }
6809
+ } catch {
6810
+ }
6811
+ }
6780
6812
  const taskMatch = line.match(
6781
6813
  /^\[Background task ([^ \]]+?)(?:\s+\(label: "((?:[^"\\]|\\.)*)"\))? finished: status=(\w+)(?: exitCode=(-?\d+))?\]$/
6782
6814
  );
@@ -10662,7 +10694,7 @@ async function runTuiWorkspace(options) {
10662
10694
  });
10663
10695
  const pushPendingProcessNotice = (notice) => {
10664
10696
  if (sessionEnded) return;
10665
- const line = formatProcessTerminalNoticeLine(notice);
10697
+ const line = serializePendingProcessNotice(notice);
10666
10698
  state = {
10667
10699
  ...state,
10668
10700
  pendingProcessNotices: [...state.pendingProcessNotices ?? [], line]
@@ -11,7 +11,7 @@ import {
11
11
  import "./chunk-BOYUESO7.js";
12
12
  import "./chunk-SPAQ4PVV.js";
13
13
  import "./chunk-KQHGZWSV.js";
14
- import "./chunk-KSHYBTYH.js";
14
+ import "./chunk-IHJ7SPCB.js";
15
15
  import "./chunk-ZNFJWEN4.js";
16
16
  import "./chunk-QC5LGHYP.js";
17
17
  import "./chunk-KIS76A2P.js";