nolo-cli 0.16.0 → 0.18.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 (134) hide show
  1. package/{_executeModel-AVCA2NAV.js → _executeModel-X5PCIZN6.js} +50 -44
  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-2BZDQV36.js} +32 -29
  6. package/{agentEmailCommands-4ORVLGVQ.js → agentEmailCommands-2QJDGRMB.js} +62 -56
  7. package/{agentListCommands-YWBYRTYC.js → agentListCommands-6VEPTKBI.js} +31 -28
  8. package/{agentMachineCommands-JSQW4FOA.js → agentMachineCommands-NVVHNWYI.js} +30 -27
  9. package/{agentPullCommand-6HWUT3SW.js → agentPullCommand-ZZGU5KOY.js} +4 -4
  10. package/{agentRecordCommands-AASIWOBT.js → agentRecordCommands-4GGRDMD4.js} +57 -51
  11. package/{agentRunCommand-TB5BHXUH.js → agentRunCommand-XOLQNKBZ.js} +63 -54
  12. package/{agentRunControl-6ADXVYMR.js → agentRunControl-Y5AFH5PQ.js} +24 -1
  13. package/{agentRuntimeLocal-QNPNJRVH.js → agentRuntimeLocal-7WYWCGL4.js} +25 -22
  14. package/{agentSlice-RUNXC62Y.js → agentSlice-EAXPGEYV.js} +9 -8
  15. package/appDeleteCommands-77KR2RJ4.js +127 -0
  16. package/appDeployCommands-K7CAHGBI.js +166 -0
  17. package/appDeployStatusCommands-4OEKLTBT.js +147 -0
  18. package/appGetCommands-VM2WDLAZ.js +122 -0
  19. package/appListCommands-GX6BBA6U.js +125 -0
  20. package/{authCommand-YFTR3347.js → authCommand-DY6UUL6O.js} +16 -9
  21. package/{authCommands-YXGOXNBZ.js → authCommands-XTBV7OFZ.js} +6 -5
  22. package/{chunk-DPAB4FQ7.js → chunk-23FZYPLC.js} +1608 -212
  23. package/{chunk-LPEUV5RE.js → chunk-34WPV75U.js} +23 -2
  24. package/{chunk-XPC5C7BK.js → chunk-3ND52WIL.js} +2 -2
  25. package/{chunk-SOTZ6RDN.js → chunk-3Q7WHGCB.js} +1 -1
  26. package/{chunk-3OIRVWXA.js → chunk-3ZX7PERL.js} +10 -1
  27. package/{chunk-KKY4B2Q2.js → chunk-4PWB7JRR.js} +4 -1
  28. package/{chunk-6N4KODMN.js → chunk-4T5F7YZQ.js} +1 -1
  29. package/chunk-7BUYEZ6U.js +671 -0
  30. package/{chunk-AS3ZQ3O2.js → chunk-7OBMZCRD.js} +1 -1
  31. package/{chunk-IGXREZW2.js → chunk-AHCY2S2I.js} +1 -1
  32. package/{chunk-QLUFR47U.js → chunk-AL2V7U3E.js} +1 -1
  33. package/{chunk-MTU75CZ2.js → chunk-B5TOXZAK.js} +1 -1
  34. package/{chunk-AUURUT6L.js → chunk-BV4VEE3W.js} +264 -424
  35. package/{chunk-FRV6A633.js → chunk-CZ6NYQTV.js} +13 -4
  36. package/{chunk-PCTUYVUM.js → chunk-DFCFMCY6.js} +10 -3
  37. package/{chunk-JTMNCCWF.js → chunk-DKZFOK24.js} +16 -87
  38. package/chunk-DL6EPNIK.js +50 -0
  39. package/{chunk-ZQBL7LIC.js → chunk-EDV7EBOI.js} +317 -216
  40. package/{chunk-IWLUTMYX.js → chunk-ELT65PZW.js} +2 -2
  41. package/chunk-FQZZLA3C.js +223 -0
  42. package/{chunk-55NSNCFM.js → chunk-FXUSIQC2.js} +1 -1
  43. package/{chunk-MR6ISAGB.js → chunk-G5U6LDLG.js} +6 -6
  44. package/chunk-GFUIQ4RY.js +136 -0
  45. package/{chunk-NVEWUJVX.js → chunk-HEGV7BH3.js} +1 -1
  46. package/{chunk-BEBNFWDU.js → chunk-HWW2M4SN.js} +3 -3
  47. package/{chunk-4L2OJPCU.js → chunk-I2ZJKTG5.js} +58 -8
  48. package/{chunk-Z5JQNBNY.js → chunk-IYEXFJPC.js} +34 -15
  49. package/{setDialogExtraReferencesAction-LR6MSIXO.js → chunk-JLA4FXYC.js} +2 -17
  50. package/chunk-KFEVY3ST.js +255 -0
  51. package/{chunk-4FX6NVDW.js → chunk-L4F3I4SR.js} +3 -136
  52. package/{chunk-XBS2WYJ2.js → chunk-LLWKHDG4.js} +1 -1
  53. package/{chunk-3WGLLTK4.js → chunk-LSFAWXKC.js} +100 -3
  54. package/{chunk-6EVITP2G.js → chunk-MHSGJW4Z.js} +2 -251
  55. package/{chunk-O6W2O2DA.js → chunk-MKA6QE5E.js} +6 -2
  56. package/{chunk-DGEYDWEZ.js → chunk-MPVYDS7I.js} +3 -3
  57. package/{chunk-KFHN5NGJ.js → chunk-MVQ4TBSD.js} +1 -1
  58. package/{chunk-AVVZUXXC.js → chunk-N54HIJVJ.js} +34 -13
  59. package/{chunk-EHLHSX7R.js → chunk-OK6YSWLH.js} +9 -2
  60. package/{chunk-33BJUVK4.js → chunk-PIZYJVHQ.js} +5 -5
  61. package/{chunk-RLCXU7A5.js → chunk-PJSV3IZ5.js} +1 -1
  62. package/{chunk-7UKFVQ5W.js → chunk-R35XMF6F.js} +126 -41
  63. package/{chunk-OOSFSFMA.js → chunk-R5V5G73M.js} +2 -0
  64. package/{chunk-S2LXHNHG.js → chunk-REA4JLBH.js} +6 -6
  65. package/chunk-RQN4SEKL.js +107 -0
  66. package/{chunk-EABWT43X.js → chunk-RVOUXDFU.js} +5 -5
  67. package/{chunk-NSCHQQPU.js → chunk-SCTYAHYK.js} +470 -325
  68. package/{chunk-JTINRTBT.js → chunk-SKDNBYZK.js} +2 -2
  69. package/{chunk-M43KDE25.js → chunk-SWDPIPOY.js} +2 -8
  70. package/{chunk-KMQPSTMJ.js → chunk-TRT4I4UD.js} +2 -2
  71. package/{chunk-66X4VSRC.js → chunk-UAIVG4J6.js} +42 -2
  72. package/{chunk-3663CXZN.js → chunk-UBHAWFQ6.js} +143 -31
  73. package/{chunk-YJKXGHJ6.js → chunk-UGUW3FHG.js} +4 -4
  74. package/{chunk-P3RIAYGG.js → chunk-V3ED5AWK.js} +3 -3
  75. package/chunk-V5R4NZP2.js +78 -0
  76. package/{chunk-4IJYA27C.js → chunk-VDXCXCXH.js} +1 -1
  77. package/{chunk-MYMMNKYL.js → chunk-VNAEBGDK.js} +156 -6
  78. package/{chunk-FY233ZFU.js → chunk-VYHDJEQD.js} +110 -192
  79. package/{chunk-W4NVOSFF.js → chunk-WFHXMLHZ.js} +1 -1
  80. package/{chunk-H33743XH.js → chunk-WJRJDX2W.js} +1 -1
  81. package/chunk-X4Q4UZEY.js +26 -0
  82. package/{chunk-RPDGJO4D.js → chunk-XHG22OEX.js} +4 -4
  83. package/{chunk-DVRHHFEA.js → chunk-XMLRJUU5.js} +1 -1
  84. package/{chunk-3S2VOMIF.js → chunk-XRZJGPFI.js} +7 -7
  85. package/{chunk-GSINCD4P.js → chunk-YGW4G5W5.js} +25 -12
  86. package/chunk-ZZ2MH7LE.js +84 -0
  87. package/{cliExecutor-K3F7DMRO.js → cliExecutor-DNE7TCC4.js} +2 -2
  88. package/codingSkills-36KN5NQT.js +48 -0
  89. package/{createAgentAutomationAction-FNHPSKKO.js → createAgentAutomationAction-GNFF524X.js} +20 -19
  90. package/{createDialogAction-TZCVQ3NU.js → createDialogAction-RB55KCLO.js} +22 -21
  91. package/{createPageAction-EIGZ3BKT.js → createPageAction-Y7343GLU.js} +26 -25
  92. package/{db-HCJ5PRB5.js → db-W3O47YGF.js} +38 -12
  93. package/{dbSlice-7KQH6GOU.js → dbSlice-CGSRFJN3.js} +8 -7
  94. package/{deleteFile-WPWVZE4B.js → deleteFile-WDZ3VM7B.js} +3 -3
  95. package/{dialogCommands-FO77J5DQ.js → dialogCommands-IAZK6YHQ.js} +30 -27
  96. package/{dialogSlice-MM5U4KE2.js → dialogSlice-UQAXF23P.js} +20 -19
  97. package/{docCreateCommands-I3BS3AZI.js → docCreateCommands-I2EWZGCI.js} +33 -28
  98. package/{docDeleteCommands-Q2OPV52P.js → docDeleteCommands-IZ45UZKG.js} +32 -27
  99. package/{docReadCommands-YOOFACYZ.js → docReadCommands-R6Z4QJYU.js} +31 -26
  100. package/{docStore-NGYQ2JTR.js → docStore-5HOJ4D7D.js} +21 -20
  101. package/{docUpdateCommands-2B32ITHN.js → docUpdateCommands-2LRBKQPY.js} +32 -27
  102. package/{fetchMessages-KTNM7QAR.js → fetchMessages-BMGVZVSE.js} +4 -3
  103. package/{getPricing-P4XRJRZB.js → getPricing-G7DLAST6.js} +3 -3
  104. package/{handleSendMessageAction-JRZWWBKP.js → handleSendMessageAction-Q4HY35WX.js} +21 -20
  105. package/index.js +95 -64
  106. package/{localDialogRead-2VRI24F4.js → localDialogRead-4H3QJFLW.js} +2 -2
  107. package/{localRuntimeDb-LGDF6FQP.js → localRuntimeDb-THJZGAOJ.js} +1 -1
  108. package/{machineCommands-WRWF2ICZ.js → machineCommands-PKBPQKTY.js} +63 -57
  109. package/{machineWsRunDispatch-ZX7Q3TWZ.js → machineWsRunDispatch-UZAW4OXJ.js} +55 -49
  110. package/{models-WQ5N4OJM.js → models-DJFSJ7SW.js} +2 -2
  111. package/package.json +1 -1
  112. package/queryRunOverlay-O4LOMMPO.js +161 -0
  113. package/{read-CN3TNXIP.js → read-3FMPZPER.js} +3 -3
  114. package/{readDocTool-WF3675ED.js → readDocTool-VSYHKK3V.js} +1 -1
  115. package/{readlineWorkspace-ZTGRGW46.js → readlineWorkspace-Y2RDOFZG.js} +762 -218
  116. package/{removeDialogAgentAction-YDHBFEGI.js → removeDialogAgentAction-OAGA2G3U.js} +10 -9
  117. package/{runAgentClientLoop-JZCOP7LG.js → runAgentClientLoop-NBPIKJ6J.js} +44 -38
  118. package/runOverlayPresentation-ZO4VCWEU.js +11 -0
  119. package/{runtimeDoctorCommands-THIHX2SY.js → runtimeDoctorCommands-E2OUORHK.js} +6 -6
  120. package/setDialogExtraReferencesAction-JZEXA5SL.js +27 -0
  121. package/{setPrimaryDialogAgentAction-IIVDCY5C.js → setPrimaryDialogAgentAction-4ZUQQKDG.js} +26 -17
  122. package/{settingSlice-O23YDK2O.js → settingSlice-7MNKHZ6R.js} +9 -8
  123. package/{skillDiscovery-6M2BZUFN.js → skillDiscovery-KJWT7JBU.js} +3 -3
  124. package/{spaceCommands-VV4GTPQK.js → spaceCommands-DHCZ7J5I.js} +31 -28
  125. package/{spaceSlice-DRWWZJP7.js → spaceSlice-ZXLLG3CR.js} +20 -19
  126. package/{streamAgentChatTurn-Y6WGATQR.js → streamAgentChatTurn-L3YW6LSB.js} +98 -57
  127. package/{tableCommands-3P7MJ3PF.js → tableCommands-BEQAGE4I.js} +1 -1
  128. package/{tools-PUNBY3AH.js → tools-ECGXR5QF.js} +33 -28
  129. package/{tuiSummaryLlmCaller-F64WLSAF.js → tuiSummaryLlmCaller-OMSCNHXA.js} +6 -5
  130. package/types-ZSTJ7MPR.js +7 -0
  131. package/{updateDialogTitleAction-YSR4TCMB.js → updateDialogTitleAction-HQ2EUDFT.js} +23 -22
  132. package/{chunk-O4BU24WZ.js → chunk-6Y7A3OQQ.js} +3 -3
  133. package/{chunk-CMKUBIGW.js → chunk-X7W4TNB4.js} +3 -3
  134. package/{localRuntimeAuthority-TEGCOWX4.js → localRuntimeAuthority-4IXJCHZ7.js} +3 -3
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  i18n_default,
3
3
  toolRegistry
4
- } from "./chunk-ZQBL7LIC.js";
4
+ } from "./chunk-EDV7EBOI.js";
5
5
  import {
6
6
  canonicalizeToolNames
7
- } from "./chunk-JTMNCCWF.js";
7
+ } from "./chunk-ZZ2MH7LE.js";
8
8
  import {
9
9
  isNoloHostedProvider
10
- } from "./chunk-O6W2O2DA.js";
10
+ } from "./chunk-MKA6QE5E.js";
11
11
  import {
12
12
  asTrimmedLowercaseString
13
13
  } from "./chunk-QSJ3HFEF.js";
@@ -146,6 +146,7 @@ var sanitizeToolForProvider = (tool, provider) => {
146
146
  var translatedFunctionCache = /* @__PURE__ */ new Map();
147
147
  var prepareToolsResultCache = /* @__PURE__ */ new Map();
148
148
  var PREPARE_TOOLS_CACHE_LIMIT = 128;
149
+ var warnedUnknownToolNames = /* @__PURE__ */ new Set();
149
150
  function getTranslation(keys, defaultVal) {
150
151
  for (const key of keys) {
151
152
  if (i18n_default.exists(key)) {
@@ -247,7 +248,15 @@ var prepareTools = (toolNames, options) => {
247
248
  }
248
249
  const prepared = canonicalNames.map((toolName) => {
249
250
  const regTool = toolRegistry[toolName];
250
- if (!regTool) return regTool;
251
+ if (!regTool) {
252
+ if (!warnedUnknownToolNames.has(toolName)) {
253
+ warnedUnknownToolNames.add(toolName);
254
+ console.warn(
255
+ `[prepareTools] unknown tool name "${toolName}" ignored (not in toolRegistry); likely stale agent config from a renamed/deprecated tool.`
256
+ );
257
+ }
258
+ return regTool;
259
+ }
251
260
  return {
252
261
  ...regTool,
253
262
  function: translateSchemaCached(regTool.function)
@@ -1,8 +1,7 @@
1
1
  import {
2
2
  buildLocalAgentLookupKeys,
3
- normalizeAgentHandle,
4
3
  shouldReadAgentKeyRemotely
5
- } from "./chunk-M43KDE25.js";
4
+ } from "./chunk-SWDPIPOY.js";
6
5
  import {
7
6
  resolveCliAgentKeyInput
8
7
  } from "./chunk-VHBWHNVT.js";
@@ -22,10 +21,17 @@ import {
22
21
  } from "./chunk-A7GB5UGH.js";
23
22
  import {
24
23
  createAgentKey
25
- } from "./chunk-O4BU24WZ.js";
24
+ } from "./chunk-6Y7A3OQQ.js";
26
25
 
27
26
  // packages/cli/agentRecordHelpers.ts
28
27
  import { readFileSync } from "node:fs";
28
+
29
+ // packages/core/agentHandle.ts
30
+ function normalizeAgentHandle(value) {
31
+ return typeof value === "string" && value.trim() ? value.trim().toLowerCase().replace(/\s+/g, " ") : void 0;
32
+ }
33
+
34
+ // packages/cli/agentRecordHelpers.ts
29
35
  var PROVIDER_COPY_FIELDS = [
30
36
  "apiSource",
31
37
  "provider",
@@ -612,6 +618,7 @@ async function buildUpdatedAgentRecord(args) {
612
618
  }
613
619
 
614
620
  export {
621
+ normalizeAgentHandle,
615
622
  fetchWithTransportFallback,
616
623
  readAgentRecord,
617
624
  readDbRecord,
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  asRecordOrEmpty
3
3
  } from "./chunk-KX6YBIHG.js";
4
+ import {
5
+ asOptionalFiniteNumber
6
+ } from "./chunk-WWC7I6TA.js";
4
7
  import {
5
8
  asNonEmptyStringArray,
6
9
  asTrimmedNonEmptyStringArray
7
10
  } from "./chunk-I42VC5KR.js";
8
- import {
9
- asOptionalFiniteNumber
10
- } from "./chunk-WWC7I6TA.js";
11
11
  import {
12
12
  isRecord
13
13
  } from "./chunk-KUG52IAP.js";
@@ -15,85 +15,6 @@ import {
15
15
  asOptionalTrimmedString
16
16
  } from "./chunk-G3SUCT4W.js";
17
17
 
18
- // packages/agent-runtime/toolNameAliases.ts
19
- var LEGACY_TOOL_NAME_ALIASES = {
20
- createPage: "createDoc",
21
- updatePage: "updateDoc",
22
- update_page: "updateDoc",
23
- create_page: "createDoc",
24
- fetchwebpage: "fetchWebpage",
25
- fetch_webpage: "fetchWebpage",
26
- "fetch-page": "fetchWebpage",
27
- exasearch: "exa_search",
28
- "exa-search": "exa_search",
29
- exa_search: "exa_search",
30
- firecrawlscrape: "firecrawl_scrape",
31
- "firecrawl-scrape": "firecrawl_scrape",
32
- firecrawl_scrape: "firecrawl_scrape",
33
- firecrawlsearch: "firecrawl_search",
34
- "firecrawl-search": "firecrawl_search",
35
- firecrawl_search: "firecrawl_search",
36
- readDoc: "readDoc",
37
- readpage: "readDoc",
38
- read_page: "readDoc",
39
- read_doc: "readDoc",
40
- createdoc: "createDoc",
41
- updateDocTool: "updateDoc",
42
- terminalCommand: "execShell",
43
- terminal_command: "execShell",
44
- runCommand: "execShell",
45
- run_command: "execShell",
46
- runInBash: "execShell",
47
- run_in_bash: "execShell",
48
- executeCommand: "execShell",
49
- execute_command: "execShell",
50
- // Codex CLI 风格工具名 → nolo 原生工具名
51
- bash: "execShell",
52
- shell: "execShell",
53
- read: "readFile",
54
- edit: "editFile",
55
- write: "writeFile",
56
- glob: "globFiles",
57
- grep: "searchFiles",
58
- // 联网搜索别名
59
- web_search: "exa_search",
60
- websearch: "exa_search",
61
- search_web: "exa_search",
62
- searchweb: "exa_search",
63
- webfetch: "fetchWebpage",
64
- web_fetch: "fetchWebpage",
65
- fetchweb: "fetchWebpage",
66
- fetch_web: "fetchWebpage",
67
- // 模型偶尔会把 loadSkill 幻觉成 readSkill(参数风格 name= 一致),
68
- // 规范化到 loadSkill,避免 localToolPolicy 把这种调用直接拦死。
69
- readSkill: "loadSkill"
70
- };
71
- var normalizeToolName = (name) => name.replace(/[-_]/g, "").toLowerCase();
72
- var canonicalizeToolName = (rawName) => {
73
- const trimmedName = rawName.trim();
74
- if (!trimmedName) return rawName;
75
- if (LEGACY_TOOL_NAME_ALIASES[trimmedName]) {
76
- return LEGACY_TOOL_NAME_ALIASES[trimmedName];
77
- }
78
- const normalizedRawName = normalizeToolName(trimmedName);
79
- const matchedAlias = Object.entries(LEGACY_TOOL_NAME_ALIASES).find(
80
- ([alias]) => normalizeToolName(alias) === normalizedRawName
81
- );
82
- return matchedAlias?.[1] ?? trimmedName;
83
- };
84
- var canonicalizeToolNames = (toolNames) => Array.from(
85
- new Set(
86
- toolNames.filter((toolName) => typeof toolName === "string").map(canonicalizeToolName)
87
- )
88
- );
89
- var prioritizeToolNames = (toolNames, preferredToolNames) => {
90
- const canonicalTools = canonicalizeToolNames(toolNames);
91
- const preferred = new Set(canonicalizeToolNames(preferredToolNames));
92
- const prioritized = canonicalTools.filter((toolName) => preferred.has(toolName));
93
- const remaining = canonicalTools.filter((toolName) => !preferred.has(toolName));
94
- return [...prioritized, ...remaining];
95
- };
96
-
97
18
  // packages/agent-runtime/runtimeToolSurface.ts
98
19
  var DEFAULT_PRIVATE_NOLO_WORKSPACE_TOOLS = [
99
20
  "listDialogs",
@@ -892,9 +813,20 @@ function buildLoadSkillExecutor(args) {
892
813
  metadata: { loadSkill: true, resolved: false }
893
814
  };
894
815
  }
895
- const { resolveSkillByName } = await import("./skillDiscovery-6M2BZUFN.js");
816
+ const { resolveSkillByName } = await import("./skillDiscovery-KJWT7JBU.js");
896
817
  const resolved = resolveSkillByName(args.cwd, name);
897
818
  if (!resolved) {
819
+ const { resolveCodingBuiltinSlug, buildCodingSkillContentBySlug } = await import("./codingSkills-36KN5NQT.js");
820
+ const builtinSlug = resolveCodingBuiltinSlug(name);
821
+ if (builtinSlug) {
822
+ const body = buildCodingSkillContentBySlug(builtinSlug);
823
+ return {
824
+ content: `Skill "${name}" loaded inline. Follow its instructions.
825
+
826
+ ${body}`,
827
+ metadata: { loadSkill: true, resolved: true, name, requestedName: name, builtin: true }
828
+ };
829
+ }
898
830
  return {
899
831
  content: await formatUnknownSkillMessage(args.cwd, name),
900
832
  metadata: { loadSkill: true, resolved: false, name, requestedName: name }
@@ -919,7 +851,7 @@ ${body}`,
919
851
  };
920
852
  }
921
853
  async function formatUnknownSkillMessage(cwd, requestedName) {
922
- const { discoverSkills } = await import("./skillDiscovery-6M2BZUFN.js");
854
+ const { discoverSkills } = await import("./skillDiscovery-KJWT7JBU.js");
923
855
  let available = [];
924
856
  try {
925
857
  available = discoverSkills(cwd).map((s) => s.name);
@@ -938,9 +870,6 @@ var nodeSpawnFallback = (options) => {
938
870
  };
939
871
 
940
872
  export {
941
- canonicalizeToolName,
942
- canonicalizeToolNames,
943
- prioritizeToolNames,
944
873
  resolveRuntimeToolSurfaceForAgent,
945
874
  redactAgentRecordForWorkspaceTool,
946
875
  resolveExecutableOnPath,
@@ -0,0 +1,50 @@
1
+ // packages/core/chat/runOverlayMachine.ts
2
+ var initialRunOverlayState = {
3
+ runs: /* @__PURE__ */ new Map()
4
+ };
5
+ function reduceRunOverlay(state, event) {
6
+ switch (event.type) {
7
+ case "run-state-chg": {
8
+ const prev = state.runs.get(event.runId);
9
+ const now = Date.now();
10
+ const merged = prev ? { ...prev, ...event.info, runId: event.runId, updatedAt: now } : {
11
+ runId: event.runId,
12
+ name: event.info.name ?? "",
13
+ status: event.info.status ?? "running",
14
+ summary: event.info.summary,
15
+ batchId: event.info.batchId,
16
+ parentDialogId: event.info.parentDialogId,
17
+ errorMessage: event.info.errorMessage,
18
+ updatedAt: now
19
+ };
20
+ if (prev && shallowEqualRun(prev, merged)) {
21
+ return state;
22
+ }
23
+ const runs = new Map(state.runs);
24
+ runs.set(event.runId, merged);
25
+ return { runs };
26
+ }
27
+ case "run-removed": {
28
+ if (!state.runs.has(event.runId)) return state;
29
+ const runs = new Map(state.runs);
30
+ runs.delete(event.runId);
31
+ return { runs };
32
+ }
33
+ case "clear-all": {
34
+ if (state.runs.size === 0) return state;
35
+ return { runs: /* @__PURE__ */ new Map() };
36
+ }
37
+ default: {
38
+ const _exhaustive = event;
39
+ return state;
40
+ }
41
+ }
42
+ }
43
+ function shallowEqualRun(a, b) {
44
+ return a.runId === b.runId && a.name === b.name && a.status === b.status && a.summary === b.summary && a.batchId === b.batchId && a.parentDialogId === b.parentDialogId && a.errorMessage === b.errorMessage;
45
+ }
46
+
47
+ export {
48
+ initialRunOverlayState,
49
+ reduceRunOverlay
50
+ };