nolo-cli 0.16.0 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/{_executeModel-AVCA2NAV.js → _executeModel-WPNX5DH4.js} +49 -43
  2. package/{action-F5JACQBG.js → action-LT7BRFLK.js} +10 -9
  3. package/{addContentAction-AQXEYRBE.js → addContentAction-PL3KKBDH.js} +9 -8
  4. package/{addDialogAgentAction-EJHHJZWW.js → addDialogAgentAction-FCMSKYAF.js} +8 -7
  5. package/{agentDeleteCommand-QW5PUMDQ.js → agentDeleteCommand-L3357EFL.js} +31 -28
  6. package/{agentEmailCommands-4ORVLGVQ.js → agentEmailCommands-N65AVLEI.js} +61 -55
  7. package/{agentListCommands-YWBYRTYC.js → agentListCommands-CH27FTI2.js} +30 -27
  8. package/{agentMachineCommands-JSQW4FOA.js → agentMachineCommands-PPK5HJZB.js} +29 -26
  9. package/{agentPullCommand-6HWUT3SW.js → agentPullCommand-ZZGU5KOY.js} +4 -4
  10. package/{agentRecordCommands-AASIWOBT.js → agentRecordCommands-HTVXD4TT.js} +56 -50
  11. package/{agentRunCommand-TB5BHXUH.js → agentRunCommand-MGLVJUA5.js} +62 -53
  12. package/{agentRunControl-6ADXVYMR.js → agentRunControl-P75VPTGS.js} +24 -1
  13. package/{agentRuntimeLocal-QNPNJRVH.js → agentRuntimeLocal-QUTBSY3I.js} +24 -21
  14. package/{agentSlice-RUNXC62Y.js → agentSlice-DOGRCMWK.js} +9 -8
  15. package/appDeleteCommands-FEEVXUBG.js +127 -0
  16. package/appDeployCommands-C4HCGC4B.js +166 -0
  17. package/appDeployStatusCommands-IR5ZUZBQ.js +147 -0
  18. package/appGetCommands-6RJGZ66Z.js +122 -0
  19. package/appListCommands-VMTF5YZF.js +125 -0
  20. package/{authCommand-YFTR3347.js → authCommand-WJZPOLSS.js} +16 -9
  21. package/{authCommands-YXGOXNBZ.js → authCommands-XTBV7OFZ.js} +6 -5
  22. package/{chunk-XPC5C7BK.js → chunk-3ND52WIL.js} +2 -2
  23. package/{chunk-SOTZ6RDN.js → chunk-3Q7WHGCB.js} +1 -1
  24. package/{chunk-M43KDE25.js → chunk-45BY7RLP.js} +2 -8
  25. package/{chunk-KKY4B2Q2.js → chunk-4PWB7JRR.js} +4 -1
  26. package/{chunk-6N4KODMN.js → chunk-4T5F7YZQ.js} +1 -1
  27. package/chunk-7BUYEZ6U.js +671 -0
  28. package/{chunk-AS3ZQ3O2.js → chunk-7OBMZCRD.js} +1 -1
  29. package/{chunk-AVVZUXXC.js → chunk-AAODAAUQ.js} +34 -13
  30. package/{chunk-QLUFR47U.js → chunk-AL2V7U3E.js} +1 -1
  31. package/{chunk-MTU75CZ2.js → chunk-B5TOXZAK.js} +1 -1
  32. package/{chunk-AUURUT6L.js → chunk-BT6K76S7.js} +238 -424
  33. package/chunk-CEFXYF66.js +107 -0
  34. package/{chunk-RLCXU7A5.js → chunk-D3HVJJIA.js} +1 -1
  35. package/{chunk-JTMNCCWF.js → chunk-DKZFOK24.js} +16 -87
  36. package/chunk-DL6EPNIK.js +50 -0
  37. package/{chunk-4L2OJPCU.js → chunk-EGPCU42M.js} +58 -8
  38. package/{chunk-IWLUTMYX.js → chunk-ELT65PZW.js} +2 -2
  39. package/chunk-FKXFCYVO.js +221 -0
  40. package/{chunk-4FX6NVDW.js → chunk-FPKLD4KB.js} +3 -136
  41. package/{chunk-PCTUYVUM.js → chunk-FVIPEIVX.js} +10 -3
  42. package/chunk-GFUIQ4RY.js +136 -0
  43. package/{chunk-66X4VSRC.js → chunk-HQPG2PIV.js} +41 -1
  44. package/{chunk-IGXREZW2.js → chunk-HV2A3B4W.js} +1 -1
  45. package/{chunk-LPEUV5RE.js → chunk-IOOMJJ4Z.js} +2 -2
  46. package/{setDialogExtraReferencesAction-LR6MSIXO.js → chunk-JLA4FXYC.js} +2 -17
  47. package/{chunk-3OIRVWXA.js → chunk-JP7REMYP.js} +10 -1
  48. package/chunk-KFEVY3ST.js +255 -0
  49. package/{chunk-P3RIAYGG.js → chunk-L2MLZQXU.js} +3 -3
  50. package/{chunk-55NSNCFM.js → chunk-L6NVTGI7.js} +1 -1
  51. package/{chunk-3WGLLTK4.js → chunk-LSFAWXKC.js} +100 -3
  52. package/{chunk-S2LXHNHG.js → chunk-MD3V54DA.js} +6 -6
  53. package/{chunk-6EVITP2G.js → chunk-MUCU6ATG.js} +2 -251
  54. package/{chunk-KFHN5NGJ.js → chunk-MVQ4TBSD.js} +1 -1
  55. package/{chunk-ZQBL7LIC.js → chunk-NEKFSXOP.js} +310 -211
  56. package/{chunk-NSCHQQPU.js → chunk-NVB267BZ.js} +397 -324
  57. package/{chunk-Z5JQNBNY.js → chunk-NYUXSXLY.js} +33 -14
  58. package/{chunk-FRV6A633.js → chunk-PZCBZO4J.js} +2 -2
  59. package/{chunk-GSINCD4P.js → chunk-QCJITMYO.js} +21 -11
  60. package/{chunk-OOSFSFMA.js → chunk-R5V5G73M.js} +2 -0
  61. package/{chunk-4IJYA27C.js → chunk-RG2U2MTJ.js} +1 -1
  62. package/{chunk-BEBNFWDU.js → chunk-RRGVDPH3.js} +3 -3
  63. package/{chunk-EABWT43X.js → chunk-RVOUXDFU.js} +5 -5
  64. package/{chunk-JTINRTBT.js → chunk-SKDNBYZK.js} +2 -2
  65. package/{chunk-3663CXZN.js → chunk-SNZV4QCE.js} +65 -22
  66. package/{chunk-KMQPSTMJ.js → chunk-TRT4I4UD.js} +2 -2
  67. package/{chunk-MYMMNKYL.js → chunk-TSIYZBTH.js} +156 -6
  68. package/{chunk-EHLHSX7R.js → chunk-UB4RYYNQ.js} +9 -2
  69. package/{chunk-YJKXGHJ6.js → chunk-UGUW3FHG.js} +4 -4
  70. package/{chunk-DPAB4FQ7.js → chunk-UZY4BEBR.js} +1579 -212
  71. package/chunk-V5R4NZP2.js +78 -0
  72. package/{chunk-MR6ISAGB.js → chunk-VDNQF5VI.js} +6 -6
  73. package/{chunk-33BJUVK4.js → chunk-VGMJ6PDJ.js} +5 -5
  74. package/{chunk-W4NVOSFF.js → chunk-WFHXMLHZ.js} +1 -1
  75. package/{chunk-H33743XH.js → chunk-WJRJDX2W.js} +1 -1
  76. package/chunk-X4Q4UZEY.js +26 -0
  77. package/{chunk-RPDGJO4D.js → chunk-XHG22OEX.js} +4 -4
  78. package/{chunk-DVRHHFEA.js → chunk-XMLRJUU5.js} +1 -1
  79. package/{chunk-3S2VOMIF.js → chunk-XRZJGPFI.js} +7 -7
  80. package/{chunk-7UKFVQ5W.js → chunk-YLRTBX4Y.js} +105 -36
  81. package/{chunk-DGEYDWEZ.js → chunk-YXTRNO5W.js} +3 -3
  82. package/{chunk-FY233ZFU.js → chunk-ZJZCMKOR.js} +107 -177
  83. package/{chunk-NVEWUJVX.js → chunk-ZVOZH2HW.js} +1 -1
  84. package/chunk-ZZ2MH7LE.js +84 -0
  85. package/{cliExecutor-K3F7DMRO.js → cliExecutor-DNE7TCC4.js} +2 -2
  86. package/codingSkills-36KN5NQT.js +48 -0
  87. package/{createAgentAutomationAction-FNHPSKKO.js → createAgentAutomationAction-PMOLEPGJ.js} +19 -18
  88. package/{createDialogAction-TZCVQ3NU.js → createDialogAction-DPRTYNAK.js} +21 -20
  89. package/{createPageAction-EIGZ3BKT.js → createPageAction-JGZK3WAM.js} +25 -24
  90. package/{dbSlice-7KQH6GOU.js → dbSlice-CGSRFJN3.js} +8 -7
  91. package/{deleteFile-WPWVZE4B.js → deleteFile-WDZ3VM7B.js} +3 -3
  92. package/{dialogCommands-FO77J5DQ.js → dialogCommands-XED6DKLV.js} +29 -26
  93. package/{dialogSlice-MM5U4KE2.js → dialogSlice-KO4NRNKC.js} +19 -18
  94. package/{docCreateCommands-I3BS3AZI.js → docCreateCommands-P6DYWHH3.js} +32 -27
  95. package/{docDeleteCommands-Q2OPV52P.js → docDeleteCommands-KUWXAMSN.js} +31 -26
  96. package/{docReadCommands-YOOFACYZ.js → docReadCommands-ECW55TKB.js} +30 -25
  97. package/{docStore-NGYQ2JTR.js → docStore-6KMERNUY.js} +20 -19
  98. package/{docUpdateCommands-2B32ITHN.js → docUpdateCommands-5J4BTJQN.js} +31 -26
  99. package/{fetchMessages-KTNM7QAR.js → fetchMessages-BMGVZVSE.js} +4 -3
  100. package/{getPricing-P4XRJRZB.js → getPricing-RYY6OBA4.js} +2 -2
  101. package/{handleSendMessageAction-JRZWWBKP.js → handleSendMessageAction-R3ZHTVU4.js} +20 -19
  102. package/index.js +95 -64
  103. package/{localDialogRead-2VRI24F4.js → localDialogRead-HQZPVIE3.js} +1 -1
  104. package/{localRuntimeDb-LGDF6FQP.js → localRuntimeDb-THJZGAOJ.js} +1 -1
  105. package/{machineCommands-WRWF2ICZ.js → machineCommands-JF2YL34J.js} +62 -56
  106. package/{machineWsRunDispatch-ZX7Q3TWZ.js → machineWsRunDispatch-ON4AEOJL.js} +54 -48
  107. package/{models-WQ5N4OJM.js → models-5K5G2CZI.js} +1 -1
  108. package/package.json +1 -1
  109. package/queryRunOverlay-O4LOMMPO.js +161 -0
  110. package/{read-CN3TNXIP.js → read-3FMPZPER.js} +3 -3
  111. package/{readDocTool-WF3675ED.js → readDocTool-VSYHKK3V.js} +1 -1
  112. package/{readlineWorkspace-ZTGRGW46.js → readlineWorkspace-SUCINTL7.js} +354 -185
  113. package/{removeDialogAgentAction-YDHBFEGI.js → removeDialogAgentAction-OAGA2G3U.js} +10 -9
  114. package/{runAgentClientLoop-JZCOP7LG.js → runAgentClientLoop-OBD2AVEL.js} +43 -37
  115. package/runOverlayPresentation-ZO4VCWEU.js +11 -0
  116. package/{runtimeDoctorCommands-THIHX2SY.js → runtimeDoctorCommands-E2OUORHK.js} +6 -6
  117. package/setDialogExtraReferencesAction-JZEXA5SL.js +27 -0
  118. package/{setPrimaryDialogAgentAction-IIVDCY5C.js → setPrimaryDialogAgentAction-4ZUQQKDG.js} +26 -17
  119. package/{settingSlice-O23YDK2O.js → settingSlice-7MNKHZ6R.js} +9 -8
  120. package/{skillDiscovery-6M2BZUFN.js → skillDiscovery-KJWT7JBU.js} +3 -3
  121. package/{spaceCommands-VV4GTPQK.js → spaceCommands-32NTNLHS.js} +30 -27
  122. package/{spaceSlice-DRWWZJP7.js → spaceSlice-P7VOXLY6.js} +19 -18
  123. package/{streamAgentChatTurn-Y6WGATQR.js → streamAgentChatTurn-UHEMNI3X.js} +97 -56
  124. package/{tableCommands-3P7MJ3PF.js → tableCommands-BEQAGE4I.js} +1 -1
  125. package/{tools-PUNBY3AH.js → tools-BMXIXHMB.js} +32 -27
  126. package/{tuiSummaryLlmCaller-F64WLSAF.js → tuiSummaryLlmCaller-VUNVBRX3.js} +5 -4
  127. package/types-ZSTJ7MPR.js +7 -0
  128. package/{updateDialogTitleAction-YSR4TCMB.js → updateDialogTitleAction-LJBDYZLH.js} +22 -21
  129. package/{chunk-O4BU24WZ.js → chunk-6Y7A3OQQ.js} +3 -3
  130. package/{chunk-XBS2WYJ2.js → chunk-RK5NYQEL.js} +0 -0
  131. package/{chunk-CMKUBIGW.js → chunk-X7W4TNB4.js} +3 -3
  132. package/{localRuntimeAuthority-TEGCOWX4.js → localRuntimeAuthority-4IXJCHZ7.js} +3 -3
@@ -0,0 +1,78 @@
1
+ // packages/core/chat/runOverlayPresentation.ts
2
+ var STATUS_ORDER = [
3
+ "running",
4
+ "reviewing",
5
+ "testing",
6
+ "done",
7
+ "failed",
8
+ "cancelled",
9
+ "orphaned"
10
+ ];
11
+ var STATUS_DISPLAY = {
12
+ running: { icon: "\u25B6", label: "\u6B63\u5728\u8FD0\u884C" },
13
+ reviewing: { icon: "\u{1F441}", label: "\u5F85 review" },
14
+ testing: { icon: "\u{1F9EA}", label: "\u5728\u6D4B\u8BD5" },
15
+ done: { icon: "\u2705", label: "\u5DF2\u5B8C\u6210" },
16
+ failed: { icon: "\u274C", label: "\u5931\u8D25" },
17
+ cancelled: { icon: "\u23F9", label: "\u5DF2\u53D6\u6D88" },
18
+ orphaned: { icon: "\u{1F47B}", label: "\u5B64\u513F" }
19
+ };
20
+ function statusLabel(status) {
21
+ return STATUS_DISPLAY[status]?.label ?? status;
22
+ }
23
+ function groupByStatus(runs) {
24
+ const buckets = /* @__PURE__ */ new Map();
25
+ for (const run of runs.values()) {
26
+ const arr = buckets.get(run.status);
27
+ if (arr) arr.push(run);
28
+ else buckets.set(run.status, [run]);
29
+ }
30
+ const grouped = [];
31
+ for (const status of STATUS_ORDER) {
32
+ const arr = buckets.get(status);
33
+ if (arr && arr.length > 0) grouped.push({ status, runs: arr });
34
+ }
35
+ return grouped;
36
+ }
37
+ function buildOverlayPresentation(state) {
38
+ if (state.runs.size === 0) return null;
39
+ const grouped = groupByStatus(state.runs);
40
+ const lines = [];
41
+ for (const { status, runs } of grouped) {
42
+ const { icon, label } = STATUS_DISPLAY[status];
43
+ lines.push(`${icon} ${runs.length} \u4E2A${label}`);
44
+ }
45
+ lines.push("");
46
+ lines.push("--- \u8BE6\u60C5 ---");
47
+ for (const { runs } of grouped) {
48
+ for (const run of runs) {
49
+ lines.push(detailLine(run));
50
+ }
51
+ }
52
+ return lines.join("\n");
53
+ }
54
+ function detailLine(run) {
55
+ const short = shortStatusLabel(run.status);
56
+ let suffix = short;
57
+ if (run.summary) suffix += ` \u2014 ${run.summary}`;
58
+ else if (run.status === "failed" && run.errorMessage) suffix += ` \u2014 ${run.errorMessage}`;
59
+ return `\u2022 ${run.runId} (${run.name}): ${suffix}`;
60
+ }
61
+ var SHORT_STATUS_LABEL = {
62
+ running: "\u8FD0\u884C\u4E2D",
63
+ reviewing: "\u5F85 review",
64
+ testing: "\u6D4B\u8BD5\u4E2D",
65
+ done: "\u5DF2\u5B8C\u6210",
66
+ failed: "\u5931\u8D25",
67
+ cancelled: "\u5DF2\u53D6\u6D88",
68
+ orphaned: "\u5B64\u513F"
69
+ };
70
+ function shortStatusLabel(status) {
71
+ return SHORT_STATUS_LABEL[status];
72
+ }
73
+
74
+ export {
75
+ statusLabel,
76
+ groupByStatus,
77
+ buildOverlayPresentation
78
+ };
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  updateContentTitle
3
- } from "./chunk-NSCHQQPU.js";
3
+ } from "./chunk-NVB267BZ.js";
4
4
  import {
5
5
  require_date_fns
6
6
  } from "./chunk-M76ECQRD.js";
7
- import {
8
- require_react
9
- } from "./chunk-3ASDTTEI.js";
10
7
  import {
11
8
  toErrorMessage
12
9
  } from "./chunk-HNMXYYJR.js";
10
+ import {
11
+ require_react
12
+ } from "./chunk-3ASDTTEI.js";
13
13
  import {
14
14
  patch,
15
15
  readAndWait
16
- } from "./chunk-3S2VOMIF.js";
16
+ } from "./chunk-XRZJGPFI.js";
17
17
  import {
18
18
  asOptionalTrimmedString
19
19
  } from "./chunk-G3SUCT4W.js";
@@ -367,7 +367,7 @@ async function saveDocState(arg, { dispatch, getState }) {
367
367
  }
368
368
  }
369
369
  async function createDocState(args, thunkApi) {
370
- const { createPageAction } = await import("./createPageAction-EIGZ3BKT.js");
370
+ const { createPageAction } = await import("./createPageAction-JGZK3WAM.js");
371
371
  return createPageAction(args, thunkApi);
372
372
  }
373
373
  function subscribe(listener) {
@@ -1,9 +1,6 @@
1
- import {
2
- clearCliLocalRuntimePreparedAgentCache
3
- } from "./chunk-DPAB4FQ7.js";
4
1
  import {
5
2
  getReadableCliDb
6
- } from "./chunk-W4NVOSFF.js";
3
+ } from "./chunk-WFHXMLHZ.js";
7
4
  import {
8
5
  buildCreatedAgentRecord,
9
6
  buildUpdatedAgentRecord,
@@ -12,7 +9,10 @@ import {
12
9
  resolveAgentRecordFromHybridStore,
13
10
  sanitizeAgentRecordForCliOutput,
14
11
  writeAgentRecord
15
- } from "./chunk-PCTUYVUM.js";
12
+ } from "./chunk-FVIPEIVX.js";
13
+ import {
14
+ clearCliLocalRuntimePreparedAgentCache
15
+ } from "./chunk-UZY4BEBR.js";
16
16
  import {
17
17
  resolveCliAgentKeyInput
18
18
  } from "./chunk-VHBWHNVT.js";
@@ -4,7 +4,7 @@ import {
4
4
 
5
5
  // packages/cli/agentCommandSupport.ts
6
6
  async function getDefaultCliDb() {
7
- const { getDefaultCliLocalRuntimeDb } = await import("./localRuntimeDb-LGDF6FQP.js");
7
+ const { getDefaultCliLocalRuntimeDb } = await import("./localRuntimeDb-THJZGAOJ.js");
8
8
  return getDefaultCliLocalRuntimeDb();
9
9
  }
10
10
  function createNullCliDb() {
@@ -14,7 +14,7 @@ function buildCliLocalRuntimeDbEnv(env = process.env) {
14
14
  };
15
15
  }
16
16
  async function getDefaultCliLocalRuntimeDb(options = {}) {
17
- const { getDefaultCliLocalRuntimeDb: getAuthorityBackedDb } = await import("./localRuntimeAuthority-TEGCOWX4.js");
17
+ const { getDefaultCliLocalRuntimeDb: getAuthorityBackedDb } = await import("./localRuntimeAuthority-4IXJCHZ7.js");
18
18
  return getAuthorityBackedDb(options);
19
19
  }
20
20
 
@@ -0,0 +1,26 @@
1
+ // packages/create/types.ts
2
+ var DataType = /* @__PURE__ */ ((DataType2) => {
3
+ DataType2["AGENT"] = "agent";
4
+ DataType2["DOC"] = "page";
5
+ DataType2["DIALOG"] = "dialog";
6
+ DataType2["NOTIFICATION"] = "notification";
7
+ DataType2["MSG"] = "msg";
8
+ DataType2["TOKEN"] = "token";
9
+ DataType2["SPACE"] = "space";
10
+ DataType2["TRANSACTION"] = "transaction";
11
+ DataType2["SETTING"] = "setting";
12
+ DataType2["TASK"] = "task";
13
+ DataType2["AGENT_AUTOMATION"] = "agent-automation";
14
+ DataType2["TABLE"] = "table";
15
+ DataType2["TABLE_ROW"] = "table_row";
16
+ DataType2["FILE"] = "file";
17
+ DataType2["IMAGE"] = "image";
18
+ DataType2["APP"] = "app";
19
+ DataType2["EMAIL"] = "email";
20
+ DataType2["Category"] = "category";
21
+ return DataType2;
22
+ })(DataType || {});
23
+
24
+ export {
25
+ DataType
26
+ };
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  selectCurrentServer
3
- } from "./chunk-EABWT43X.js";
3
+ } from "./chunk-RVOUXDFU.js";
4
4
  import {
5
5
  patch
6
- } from "./chunk-3S2VOMIF.js";
6
+ } from "./chunk-XRZJGPFI.js";
7
7
  import {
8
8
  selectIdentityToken
9
- } from "./chunk-DVRHHFEA.js";
9
+ } from "./chunk-XMLRJUU5.js";
10
10
  import {
11
11
  getIsDesktopApp
12
- } from "./chunk-OOSFSFMA.js";
12
+ } from "./chunk-R5V5G73M.js";
13
13
 
14
14
  // packages/ai/agent/cliChatClient.ts
15
15
  function getCliChatRequestConfig(thunkApi) {
@@ -2,7 +2,7 @@ import {
2
2
  getAllServers,
3
3
  getIsDesktopApp,
4
4
  isAbortError
5
- } from "./chunk-OOSFSFMA.js";
5
+ } from "./chunk-R5V5G73M.js";
6
6
  import {
7
7
  asTrimmedString
8
8
  } from "./chunk-3EUW3WEO.js";
@@ -2,17 +2,17 @@ import {
2
2
  fileKey,
3
3
  getFileIdFromKey,
4
4
  ulid
5
- } from "./chunk-O4BU24WZ.js";
5
+ } from "./chunk-6Y7A3OQQ.js";
6
6
  import {
7
7
  loadFileFromIndexedDb,
8
8
  removeAction,
9
9
  saveFileToIndexedDb
10
- } from "./chunk-JTINRTBT.js";
10
+ } from "./chunk-SKDNBYZK.js";
11
11
  import {
12
12
  readAction,
13
13
  readRequestManager,
14
14
  resolveAgentReadServers
15
- } from "./chunk-XPC5C7BK.js";
15
+ } from "./chunk-3ND52WIL.js";
16
16
  import {
17
17
  asyncThunkCreator,
18
18
  buildCreateSlice,
@@ -32,13 +32,13 @@ import {
32
32
  shouldReplaceLocalWithRemoteRecord,
33
33
  shouldReplicateLocalRecord,
34
34
  uploadToCurrentServer
35
- } from "./chunk-DVRHHFEA.js";
35
+ } from "./chunk-XMLRJUU5.js";
36
36
  import {
37
37
  fetchFromClientDb,
38
38
  fetchFromServer,
39
39
  logger,
40
40
  normalizeTimeFields
41
- } from "./chunk-OOSFSFMA.js";
41
+ } from "./chunk-R5V5G73M.js";
42
42
  import {
43
43
  isTombstoneRecord
44
44
  } from "./chunk-GBRG75BQ.js";
@@ -704,7 +704,7 @@ var dbSlice = createSliceWithThunks({
704
704
  // 动态 import 在调用期解析,避开 TDZ/求值顺序问题(同下方 share)。
705
705
  read: create.asyncThunk(
706
706
  async (payload, thunkApi) => {
707
- const { readAction: readAction2 } = await import("./read-CN3TNXIP.js");
707
+ const { readAction: readAction2 } = await import("./read-3FMPZPER.js");
708
708
  return readAction2(payload, thunkApi);
709
709
  },
710
710
  {
@@ -778,7 +778,7 @@ var dbSlice = createSliceWithThunks({
778
778
  // 这里改成动态 import,运行期才解析,彻底断开这条边。
779
779
  share: create.asyncThunk(
780
780
  async (config, thunkApi) => {
781
- const { shareResourceAction } = await import("./action-F5JACQBG.js");
781
+ const { shareResourceAction } = await import("./action-LT7BRFLK.js");
782
782
  return shareResourceAction(config, thunkApi);
783
783
  }
784
784
  ),
@@ -4,46 +4,51 @@ import {
4
4
  providerHttpFailure,
5
5
  readSseFrames,
6
6
  throwIfChatCompletionStreamFailed
7
- } from "./chunk-AVVZUXXC.js";
7
+ } from "./chunk-AAODAAUQ.js";
8
8
  import {
9
9
  parseToolArgumentsJson
10
- } from "./chunk-GSINCD4P.js";
10
+ } from "./chunk-QCJITMYO.js";
11
11
  import {
12
12
  createThinkParserState,
13
13
  createToolCallAccumulator,
14
+ createToolCallTextParserState,
14
15
  extractThinkContent,
15
16
  finalizeAccumulatedToolCalls
16
- } from "./chunk-3WGLLTK4.js";
17
+ } from "./chunk-LSFAWXKC.js";
17
18
  import {
18
19
  requiresBareImageUrl,
19
20
  toBareImageUrlMessages
20
- } from "./chunk-LPEUV5RE.js";
21
+ } from "./chunk-IOOMJJ4Z.js";
21
22
  import {
22
- buildProviderAuthHeaders,
23
- buildProviderExecutionPlan,
24
23
  shouldStripReasoningContentForOutbound,
25
24
  toOpenAiCompatibleMessages
26
- } from "./chunk-6EVITP2G.js";
25
+ } from "./chunk-KFEVY3ST.js";
26
+ import {
27
+ buildProviderAuthHeaders,
28
+ buildProviderExecutionPlan
29
+ } from "./chunk-MUCU6ATG.js";
27
30
  import {
28
- canonicalizeToolName,
29
31
  createGlob,
30
32
  resolveExecutableOnPath
31
- } from "./chunk-JTMNCCWF.js";
33
+ } from "./chunk-DKZFOK24.js";
32
34
  import {
33
35
  toErrorMessage
34
36
  } from "./chunk-HNMXYYJR.js";
37
+ import {
38
+ canonicalizeToolName
39
+ } from "./chunk-ZZ2MH7LE.js";
35
40
  import {
36
41
  asRecordOrEmpty
37
42
  } from "./chunk-KX6YBIHG.js";
38
43
  import {
39
44
  dialogMessageKey
40
- } from "./chunk-O4BU24WZ.js";
41
- import {
42
- asTrimmedNonEmptyStringArray
43
- } from "./chunk-I42VC5KR.js";
45
+ } from "./chunk-6Y7A3OQQ.js";
44
46
  import {
45
47
  asOptionalFiniteNumber
46
48
  } from "./chunk-WWC7I6TA.js";
49
+ import {
50
+ asTrimmedNonEmptyStringArray
51
+ } from "./chunk-I42VC5KR.js";
47
52
  import {
48
53
  asTrimmedLowercaseString
49
54
  } from "./chunk-QSJ3HFEF.js";
@@ -85,6 +90,10 @@ function parseSseDataLineJson(line) {
85
90
  return null;
86
91
  }
87
92
  }
93
+ function parseSseDataLineObject(line) {
94
+ const parsed = parseSseDataLineJson(line);
95
+ return parsed && typeof parsed === "object" ? parsed : null;
96
+ }
88
97
 
89
98
  // packages/agent-runtime/openAiCompatibleProvider.ts
90
99
  function buildOpenAiCompatibleChatCompletionRequest(args) {
@@ -160,6 +169,7 @@ async function readOpenAiCompatibleSseCompletion(args) {
160
169
  usage: void 0,
161
170
  accumulatedToolCalls: createToolCallAccumulator(),
162
171
  thinkState: createThinkParserState(),
172
+ toolCallTextState: createToolCallTextParserState(),
163
173
  onTextDelta: args.onTextDelta,
164
174
  onReasoningDelta: args.onReasoningDelta
165
175
  };
@@ -529,14 +539,24 @@ function buildAgentRuntimeDialogWritePlan(args) {
529
539
  const nowIso = new Date(args.now).toISOString();
530
540
  const dialogKey = `dialog-${args.userId}-${dialogId}`;
531
541
  const subjectRefs = buildRuntimeSubjectRefs(args.input.runtimeContext);
542
+ const requestedAgentMode = args.input.runtimeContext?.dialogAgentMode === "auto" || args.input.runtimeContext?.dialogAgentMode === "fixed" ? args.input.runtimeContext.dialogAgentMode : void 0;
543
+ const agentMode = requestedAgentMode ?? (args.existingDialog?.agentMode === "auto" ? "auto" : "fixed");
544
+ const dialogAgentFields = agentMode === "auto" ? {
545
+ agentMode: "auto",
546
+ cybots: [],
547
+ primaryAgentKey: void 0
548
+ } : {
549
+ agentMode: "fixed",
550
+ cybots: [args.input.agentKey],
551
+ primaryAgentKey: args.input.agentKey
552
+ };
532
553
  const dialogRecord = {
533
554
  ...asRecordOrEmpty(args.existingDialog),
534
555
  id: dialogId,
535
556
  dbKey: dialogKey,
536
557
  type: "dialog",
537
558
  userId: args.userId,
538
- cybots: [args.input.agentKey],
539
- primaryAgentKey: args.input.agentKey,
559
+ ...dialogAgentFields,
540
560
  title: pickDialogTitle({
541
561
  existingDialog: args.existingDialog,
542
562
  titleOverride: args.titleOverride,
@@ -833,12 +853,16 @@ var buildCombinedShellInput = (args) => {
833
853
  typeof args.input === "string" ? args.input : ""
834
854
  ].filter(Boolean).join("\n");
835
855
  };
836
- function isDestructiveShellCommand(args) {
856
+ function resolveScannableShellInput(args) {
837
857
  const combined = buildCombinedShellInput(args);
838
- if (!combined.trim()) return false;
839
- const scannable = SHELL_STRING_EXECUTION_PATTERNS.some(
858
+ if (!combined.trim()) return void 0;
859
+ return SHELL_STRING_EXECUTION_PATTERNS.some(
840
860
  (pattern) => pattern.test(combined)
841
861
  ) ? combined : stripQuotedSegments(combined);
862
+ }
863
+ function isDestructiveShellCommand(args) {
864
+ const scannable = resolveScannableShellInput(args);
865
+ if (scannable === void 0) return false;
842
866
  return SHELL_DESTRUCTIVE_PATTERNS.some((pattern) => pattern.test(scannable));
843
867
  }
844
868
  var LONG_RUNNING_COMMAND_PATTERNS = [
@@ -854,13 +878,42 @@ var LONG_RUNNING_COMMAND_PATTERNS = [
854
878
  /\bpm2\b.*\bstart\b/i
855
879
  ];
856
880
  function isLongRunningShellCommand(args) {
857
- const combined = buildCombinedShellInput(args);
858
- if (!combined.trim()) return false;
859
- const scannable = SHELL_STRING_EXECUTION_PATTERNS.some(
860
- (pattern) => pattern.test(combined)
861
- ) ? combined : stripQuotedSegments(combined);
881
+ const scannable = resolveScannableShellInput(args);
882
+ if (scannable === void 0) return false;
862
883
  return LONG_RUNNING_COMMAND_PATTERNS.some((pattern) => pattern.test(scannable));
863
884
  }
885
+ var IMMEDIATE_DETACH_COMMAND_PATTERNS = [
886
+ /\btail\s+(?:-\S*[fF]\S*|--follow)\b/,
887
+ /\bwatch\s+\S/,
888
+ /\bwhile\s+(?:true|:|\[\s*true\s*\])\s*;\s*do\b/
889
+ ];
890
+ var IMMEDIATE_DETACH_SLEEP_THRESHOLD_SECONDS = 5;
891
+ var SLEEP_PREFIX_PATTERN = /^(?:[A-Za-z_][A-Za-z0-9_]*=\S*\s+)*(?:nohup\s+|time\s+)*sleep\s+(\S+)/;
892
+ function parseSleepDurationSeconds(token) {
893
+ const match = /^(\d+(?:\.\d+)?)(s|m|h|d)?$/i.exec(token);
894
+ if (!match) return void 0;
895
+ const value = Number(match[1]);
896
+ if (!Number.isFinite(value)) return void 0;
897
+ const unit = (match[2] ?? "s").toLowerCase();
898
+ const factor = unit === "m" ? 60 : unit === "h" ? 3600 : unit === "d" ? 86400 : 1;
899
+ return value * factor;
900
+ }
901
+ function isLongSleepCommand(scannable) {
902
+ const match = SLEEP_PREFIX_PATTERN.exec(scannable.trim());
903
+ if (!match) return false;
904
+ const durationToken = match[1] ?? "";
905
+ if (/^inf(inity)?$/i.test(durationToken)) return true;
906
+ const seconds = parseSleepDurationSeconds(durationToken);
907
+ if (seconds === void 0) return true;
908
+ return seconds > IMMEDIATE_DETACH_SLEEP_THRESHOLD_SECONDS;
909
+ }
910
+ function isImmediateDetachShellCommand(args) {
911
+ const scannable = resolveScannableShellInput(args);
912
+ if (scannable === void 0) return false;
913
+ return isLongSleepCommand(scannable) || LONG_RUNNING_COMMAND_PATTERNS.some((pattern) => pattern.test(scannable)) || IMMEDIATE_DETACH_COMMAND_PATTERNS.some(
914
+ (pattern) => pattern.test(scannable)
915
+ );
916
+ }
864
917
  function evaluateShellCommandPolicy(args) {
865
918
  if (isDestructiveShellCommand(args) && !hasExplicitDestructivePermission(args.userInput)) {
866
919
  return {
@@ -1543,7 +1596,7 @@ function buildExecShellTool(toolName) {
1543
1596
  type: "function",
1544
1597
  function: {
1545
1598
  name: toolName,
1546
- description: "Run a shell command in the local workspace. Commands already execute from the workspace root; do not cd into guessed paths such as /workspace, /repo, /home/user, or /home/user/workspace. Prefer one command that performs a complete verification or related git operation instead of many tiny commands. For branch setup, prefer idempotent commands such as git switch -C <branch> when replacing or recreating a benchmark branch is acceptable. Use portable POSIX commands for macOS/BSD shells; avoid GNU-only flags such as cat -A. Do not use cat -A. Do not use brittle byte-offset commands such as xxd -s -32. For separator lines, use echo or printf '%s\\n'. For text-file content or trailing-newline checks, prefer readFile over shell byte inspection when that tool is available. Do not run repeated git status, git log, git rev-parse, or branch checks after a successful command already returned the needed clean status and commit information; use one final verification command. If a command fails, use the error output to adjust the next command rather than repeating the same shape. For long-running commands that should keep running in the background (dev servers, watchers, REPLs, `--watch`/`serve`/`dev` scripts), use launchProcess instead \u2014 execShell blocks until the command exits and will freeze the conversation.",
1599
+ description: "Run a shell command in the local workspace. Commands already execute from the workspace root; do not cd into guessed paths such as /workspace, /repo, /home/user, or /home/user/workspace. Prefer one command that performs a complete verification or related git operation instead of many tiny commands. For branch setup, prefer idempotent commands such as git switch -C <branch> when replacing or recreating a benchmark branch is acceptable. Use portable POSIX commands for macOS/BSD shells; avoid GNU-only flags such as cat -A. Do not use cat -A. Do not use brittle byte-offset commands such as xxd -s -32. For separator lines, use echo or printf '%s\\n'. For text-file content or trailing-newline checks, prefer readFile over shell byte inspection when that tool is available. Do not run repeated git status, git log, git rev-parse, or branch checks after a successful command already returned the needed clean status and commit information; use one final verification command. If a command fails, use the error output to adjust the next command rather than repeating the same shape. For long-running commands that should keep running in the background (dev servers, watchers, REPLs, `--watch`/`serve`/`dev` scripts), prefer launchProcess. Obviously long-running commands run via execShell (sleep over 5s, tail -f, watch, infinite loops, dev/serve/watch scripts) are moved to the background automatically and return {detached: true, pid, label} \u2014 use listProcesses to inspect or stop them, and tell the user the command is running in the background. Any other command blocks until it exits, so keep those short.",
1547
1600
  parameters: {
1548
1601
  type: "object",
1549
1602
  properties: {
@@ -1740,8 +1793,9 @@ function resolveExecShellTimeoutMs(override) {
1740
1793
  return asOptionalPositiveFiniteNumber(Number(raw));
1741
1794
  }
1742
1795
  function resolveDetachMs(override) {
1743
- const fromOverride = asOptionalPositiveFiniteNumber(override);
1744
- if (fromOverride !== void 0) return fromOverride;
1796
+ if (typeof override === "number" && Number.isFinite(override) && override >= 0) {
1797
+ return override;
1798
+ }
1745
1799
  const raw = process.env[EXEC_SHELL_DETACH_ENV];
1746
1800
  if (raw === void 0) return DEFAULT_EXEC_SHELL_DETACH_MS;
1747
1801
  const parsed = asOptionalPositiveFiniteNumber(Number(raw));
@@ -2505,9 +2559,9 @@ async function runWorkspaceCommand(args) {
2505
2559
  args.abortSignal.addEventListener("abort", abortListener, { once: true });
2506
2560
  }) : null;
2507
2561
  const effectiveDetachMs = resolveDetachMs(args.detachMs);
2508
- const detachPromise = effectiveDetachMs ? new Promise((r) => {
2562
+ const detachPromise = new Promise((r) => {
2509
2563
  detachTimer = setTimeout(() => r(detachResult), effectiveDetachMs);
2510
- }) : null;
2564
+ });
2511
2565
  const racers = [exitPromise];
2512
2566
  if (timeoutMs) {
2513
2567
  racers.push(
@@ -2517,7 +2571,7 @@ async function runWorkspaceCommand(args) {
2517
2571
  );
2518
2572
  }
2519
2573
  if (abortPromise) racers.push(abortPromise);
2520
- if (detachPromise) racers.push(detachPromise);
2574
+ racers.push(detachPromise);
2521
2575
  let raceWinner;
2522
2576
  try {
2523
2577
  raceWinner = await Promise.race(racers);
@@ -2550,25 +2604,35 @@ async function runWorkspaceCommand(args) {
2550
2604
  killChild("SIGKILL");
2551
2605
  }
2552
2606
  if (didDetach) {
2553
- detachSignalCleanup();
2607
+ exitPromise.catch(() => {
2608
+ });
2554
2609
  const pid = typeof proc.pid === "number" ? proc.pid : 0;
2555
2610
  const label = deriveLabel(args.command.join(" "));
2556
2611
  const pgid = pid;
2557
2612
  const registry2 = getProcessRegistry();
2558
2613
  registry2.add({ pid, pgid, command: args.command.join(" "), label });
2559
2614
  proc.on("close", (code) => {
2615
+ detachSignalCleanup();
2560
2616
  registry2.markExited(pid, code ?? 1);
2561
2617
  });
2618
+ const immediate = effectiveDetachMs === 0;
2619
+ 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})`;
2562
2620
  return {
2563
2621
  stdout: "",
2564
- stderr: `command detached to background after ${effectiveDetachMs}ms (pid=${pid}, label=${label})
2565
- Use listProcesses / processRegistry to inspect.`,
2622
+ stderr: `${reason}
2623
+ Use listProcesses to inspect or stop it.`,
2566
2624
  exitCode: 0,
2567
2625
  timedOut: false,
2568
2626
  detached: true,
2569
2627
  pid,
2570
2628
  label,
2571
- content: JSON.stringify({ detached: true, pid, label, status: "running" })
2629
+ content: JSON.stringify({
2630
+ detached: true,
2631
+ pid,
2632
+ label,
2633
+ status: "running",
2634
+ ...immediate ? { reason: "long-running-command" } : {}
2635
+ })
2572
2636
  };
2573
2637
  }
2574
2638
  const [stdout, rawStderr] = await Promise.all([
@@ -2926,7 +2990,7 @@ async function searchFilesTool(args) {
2926
2990
  const literal = parsed.literal === true;
2927
2991
  const caseSensitive = parsed.caseSensitive === false ? false : true;
2928
2992
  const requestedPath = pickFirstAlias(parsed, PATH_FIELD_ALIASES) ?? ".";
2929
- const includeIgnored = parsed.includeIgnored === true;
2993
+ const includeIgnored = parsed.includeIgnored === true || args.workspaceRoot.includes(".worktrees");
2930
2994
  const searchPath = await resolveLocalWorkspaceToolPath({
2931
2995
  workspaceRoot: args.workspaceRoot,
2932
2996
  requestedPath,
@@ -3202,7 +3266,7 @@ async function globFilesTool(args) {
3202
3266
  const exclude = readWorkspaceExcludeGlobs(parsed);
3203
3267
  const maxResults = readWorkspaceMaxResults(parsed, warnings);
3204
3268
  const requestedPath = pickFirstAlias(parsed, PATH_FIELD_ALIASES) ?? ".";
3205
- const includeIgnored = parsed.includeIgnored === true;
3269
+ const includeIgnored = parsed.includeIgnored === true || args.workspaceRoot.includes(".worktrees");
3206
3270
  const searchPath = await resolveLocalWorkspaceToolPath({
3207
3271
  workspaceRoot: args.workspaceRoot,
3208
3272
  requestedPath,
@@ -3400,7 +3464,11 @@ async function execShellTool(args) {
3400
3464
  outputLimit: args.commandOutputLimit,
3401
3465
  commandPrefix: args.commandPrefix,
3402
3466
  abortSignal: args.abortSignal,
3403
- detachMs: args.detachMs
3467
+ // Commands that clearly never exit (long sleeps, tail -f, watch, dev
3468
+ // servers, infinite loops) are promoted to background immediately so the
3469
+ // turn — and the user's conversation — keeps going. Everything else keeps
3470
+ // the caller/env detach grace window.
3471
+ detachMs: isImmediateDetachShellCommand({ command }) ? 0 : args.detachMs
3404
3472
  });
3405
3473
  const activity = extractActivity(parsed);
3406
3474
  return {
@@ -3574,6 +3642,7 @@ function createLocalWorkspaceToolExecutors(args) {
3574
3642
 
3575
3643
  export {
3576
3644
  parseSseDataLineJson,
3645
+ parseSseDataLineObject,
3577
3646
  buildOpenAiCompatibleChatCompletionRequest,
3578
3647
  parseOpenAiCompatibleChatCompletionResponse,
3579
3648
  readOpenAiCompatibleSseCompletion,
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  createCliLocalRuntimeAdapter,
3
3
  summarizeEndpoint
4
- } from "./chunk-DPAB4FQ7.js";
4
+ } from "./chunk-UZY4BEBR.js";
5
5
  import {
6
6
  clipMultilineText
7
- } from "./chunk-ZQBL7LIC.js";
7
+ } from "./chunk-NEKFSXOP.js";
8
8
  import {
9
9
  runLocalAgentTurn
10
- } from "./chunk-GSINCD4P.js";
10
+ } from "./chunk-QCJITMYO.js";
11
11
  import {
12
12
  resolveLocalRuntimeEnvFromPolicy
13
13
  } from "./chunk-5CS33IBL.js";