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,107 @@
1
+ import {
2
+ requireTokenUser
3
+ } from "./chunk-FPKLD4KB.js";
4
+ import {
5
+ resolveServerUrl
6
+ } from "./chunk-A7GB5UGH.js";
7
+
8
+ // packages/cli/cliApiClient.ts
9
+ var CliApiError = class extends Error {
10
+ code;
11
+ status;
12
+ constructor(message, code, status) {
13
+ super(message);
14
+ this.code = code;
15
+ this.status = status;
16
+ }
17
+ };
18
+ async function cliApiRequest(args) {
19
+ const method = args.method ?? "POST";
20
+ let url = `${args.serverUrl.replace(/\/$/, "")}${args.path}`;
21
+ if (args.query) {
22
+ const params = new URLSearchParams(args.query);
23
+ url += `?${params.toString()}`;
24
+ }
25
+ const headers = {
26
+ "Content-Type": "application/json",
27
+ Authorization: `Bearer ${args.authToken}`
28
+ };
29
+ const init = { method, headers };
30
+ if (args.body !== void 0 && args.body !== null && method !== "GET") {
31
+ init.body = JSON.stringify(args.body);
32
+ }
33
+ let response;
34
+ try {
35
+ response = await fetch(url, init);
36
+ } catch (error) {
37
+ throw new CliApiError(`\u8BF7\u6C42\u5931\u8D25: ${error.message}`, "NETWORK_ERROR", 0);
38
+ }
39
+ let data;
40
+ try {
41
+ data = await response.json();
42
+ } catch {
43
+ throw new CliApiError(
44
+ `\u670D\u52A1\u7AEF\u8FD4\u56DE\u975E JSON \u54CD\u5E94 (HTTP ${response.status})`,
45
+ "INVALID_RESPONSE",
46
+ response.status
47
+ );
48
+ }
49
+ if (!response.ok || data.success !== true) {
50
+ const errorObj = data.error ?? {};
51
+ const message = errorObj.message || data.message || `\u8BF7\u6C42\u5931\u8D25 (HTTP ${response.status})`;
52
+ const code = errorObj.code || `HTTP_${response.status}`;
53
+ throw new CliApiError(message, code, response.status);
54
+ }
55
+ return data;
56
+ }
57
+ function printCliError(error) {
58
+ if (error instanceof CliApiError) {
59
+ process.stderr.write(`\u9519\u8BEF [${error.code}]: ${error.message}
60
+ `);
61
+ } else if (error instanceof Error) {
62
+ process.stderr.write(`\u9519\u8BEF: ${error.message}
63
+ `);
64
+ } else {
65
+ process.stderr.write(`\u9519\u8BEF: ${String(error)}
66
+ `);
67
+ }
68
+ }
69
+ function resolveCliContext(args, env) {
70
+ const serverUrl = resolveServerUrl(args, env);
71
+ const { authToken, userId } = requireTokenUser(args, env, false);
72
+ return { serverUrl, authToken, userId };
73
+ }
74
+
75
+ // packages/cli/cliOutputHelpers.ts
76
+ function pickDefined(obj) {
77
+ const result = {};
78
+ for (const [key, value] of Object.entries(obj)) {
79
+ if (value !== void 0 && value !== null) result[key] = value;
80
+ }
81
+ return result;
82
+ }
83
+ function formatFields(fields, indent = "") {
84
+ const maxKeyLen = fields.reduce((max, [k]) => Math.max(max, k.length), 0);
85
+ const lines = fields.map(([key, value]) => {
86
+ const display = value === void 0 || value === null ? "-" : String(value);
87
+ return `${indent}${key.padEnd(maxKeyLen)}: ${display}`;
88
+ });
89
+ return lines.join("\n");
90
+ }
91
+ function outputResult(data, shouldOutputJson, formatter, output = process.stdout) {
92
+ if (shouldOutputJson) {
93
+ output.write(`${JSON.stringify(data, null, 2)}
94
+ `);
95
+ } else {
96
+ formatter();
97
+ }
98
+ }
99
+
100
+ export {
101
+ cliApiRequest,
102
+ printCliError,
103
+ resolveCliContext,
104
+ pickDefined,
105
+ formatFields,
106
+ outputResult
107
+ };
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-CWMSB67P.js";
7
7
  import {
8
8
  getModelConfig
9
- } from "./chunk-66X4VSRC.js";
9
+ } from "./chunk-HQPG2PIV.js";
10
10
  import {
11
11
  asOptionalFiniteNumber
12
12
  } from "./chunk-WWC7I6TA.js";
@@ -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
+ };
@@ -1,18 +1,22 @@
1
1
  import {
2
2
  MODEL_LOOKUP_MAP
3
- } from "./chunk-66X4VSRC.js";
4
- import {
5
- ALL_MODELS
6
- } from "./chunk-XBS2WYJ2.js";
3
+ } from "./chunk-HQPG2PIV.js";
7
4
  import {
8
5
  addContentAction
9
- } from "./chunk-IWLUTMYX.js";
6
+ } from "./chunk-ELT65PZW.js";
7
+ import {
8
+ ALL_MODELS
9
+ } from "./chunk-RK5NYQEL.js";
10
10
  import {
11
11
  upload
12
- } from "./chunk-3S2VOMIF.js";
12
+ } from "./chunk-XRZJGPFI.js";
13
+ import {
14
+ PUBLIC_DEEPSEEK_V4_FLASH_AGENT_KEY,
15
+ PUBLIC_KIMI_K26_IMAGE_AGENT_KEY
16
+ } from "./chunk-3ND52WIL.js";
13
17
  import {
14
18
  getRuntimeServerContext
15
- } from "./chunk-DVRHHFEA.js";
19
+ } from "./chunk-XMLRJUU5.js";
16
20
  import {
17
21
  API_ENDPOINTS
18
22
  } from "./chunk-LCBAMY2M.js";
@@ -539,6 +543,50 @@ function planCompression(input) {
539
543
  };
540
544
  }
541
545
 
546
+ // packages/agent-runtime/autoExecutionProfiles.ts
547
+ var createProfile = (input) => ({
548
+ id: input.id,
549
+ tier: input.tier,
550
+ legacyAgentKey: input.legacyAgentKey,
551
+ key: input.legacyAgentKey,
552
+ name: input.name,
553
+ provider: "nolo",
554
+ model: input.model,
555
+ apiSource: "platform",
556
+ useServerProxy: true,
557
+ rawRecord: {
558
+ dbKey: input.legacyAgentKey,
559
+ isPublic: true,
560
+ provider: "nolo",
561
+ model: input.model,
562
+ apiSource: "platform",
563
+ useServerProxy: true
564
+ }
565
+ });
566
+ var FLASH_PROFILE = createProfile({
567
+ id: "builtin:auto:deepseek-v4-flash",
568
+ tier: "flash",
569
+ legacyAgentKey: PUBLIC_DEEPSEEK_V4_FLASH_AGENT_KEY,
570
+ name: "DeepSeek V4 Flash",
571
+ model: "deepseek-v4-flash"
572
+ });
573
+ var IMAGE_PROFILE = createProfile({
574
+ id: "builtin:auto:kimi-k2.6",
575
+ tier: "image",
576
+ legacyAgentKey: PUBLIC_KIMI_K26_IMAGE_AGENT_KEY,
577
+ name: "Kimi K2.6",
578
+ model: "kimi-k2.6"
579
+ });
580
+ var AUTO_EXECUTION_PROFILES = {
581
+ flash: FLASH_PROFILE,
582
+ balanced: { ...FLASH_PROFILE, tier: "balanced" },
583
+ quality: { ...FLASH_PROFILE, tier: "quality" },
584
+ image: IMAGE_PROFILE
585
+ };
586
+ var DEFAULT_AUTO_EXECUTION_TIER = "flash";
587
+ var DEFAULT_AUTO_EXECUTION_PROFILE = AUTO_EXECUTION_PROFILES[DEFAULT_AUTO_EXECUTION_TIER];
588
+ var resolveAutoExecutionProfile = (tier) => AUTO_EXECUTION_PROFILES[tier ?? DEFAULT_AUTO_EXECUTION_TIER] ?? DEFAULT_AUTO_EXECUTION_PROFILE;
589
+
542
590
  export {
543
591
  planContextUsage,
544
592
  estimateTokenCount,
@@ -548,5 +596,7 @@ export {
548
596
  buildDatabaseFileContentUrl,
549
597
  serializeMessageContent,
550
598
  normalizeAssistantContentBuffer,
551
- planCompression
599
+ planCompression,
600
+ DEFAULT_AUTO_EXECUTION_PROFILE,
601
+ resolveAutoExecutionProfile
552
602
  };
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  patch,
3
3
  read
4
- } from "./chunk-3S2VOMIF.js";
4
+ } from "./chunk-XRZJGPFI.js";
5
5
  import {
6
6
  DEVICE_LOCAL_OWNER_ID,
7
7
  isDeviceLocalSpaceBody,
8
8
  selectIdentityUserId
9
- } from "./chunk-DVRHHFEA.js";
9
+ } from "./chunk-XMLRJUU5.js";
10
10
 
11
11
  // packages/create/space/spaceKeys.ts
12
12
  var SEPARATOR = "-";
@@ -0,0 +1,221 @@
1
+ // packages/ai/tools/agent/agentRunDisplayHelpers.ts
2
+ function getAgentRunStatusIcon(status) {
3
+ switch (status) {
4
+ case "running":
5
+ case "pending":
6
+ return "\u23F3";
7
+ case "done":
8
+ return "\u2713";
9
+ case "failed":
10
+ case "timeout":
11
+ return "\u2717";
12
+ case "killed":
13
+ case "cancelled":
14
+ case "cancelling":
15
+ return "\u{1F6D1}";
16
+ case "orphaned":
17
+ return "\u{1F47B}";
18
+ case "not_found":
19
+ default:
20
+ return "?";
21
+ }
22
+ }
23
+ var DEFAULT_LABELS = {
24
+ runStatus: "Run status",
25
+ runStarted: "Run started",
26
+ runStopped: "Run stopped",
27
+ runFinished: "Run finished",
28
+ logTail: "Log tail:",
29
+ runs: (count) => `Runs (${count})`
30
+ };
31
+ function resolveLabels(labels) {
32
+ return {
33
+ runStatus: labels?.runStatus ?? DEFAULT_LABELS.runStatus,
34
+ runStarted: labels?.runStarted ?? DEFAULT_LABELS.runStarted,
35
+ runStopped: labels?.runStopped ?? DEFAULT_LABELS.runStopped,
36
+ runFinished: labels?.runFinished ?? DEFAULT_LABELS.runFinished,
37
+ logTail: labels?.logTail ?? DEFAULT_LABELS.logTail,
38
+ runs: labels?.runs ?? DEFAULT_LABELS.runs
39
+ };
40
+ }
41
+ function shortRunId(runId) {
42
+ const trimmed = typeof runId === "string" ? runId.trim() : "";
43
+ if (!trimmed) return "";
44
+ const segments = trimmed.split("-").filter(Boolean);
45
+ let pick = segments[segments.length - 1] ?? trimmed;
46
+ if (pick.length < 4 && segments.length >= 2) pick = segments.slice(-2).join("-");
47
+ if (!pick) pick = trimmed;
48
+ return pick.length > 8 ? pick.slice(-8) : pick;
49
+ }
50
+ function clipText(text, max) {
51
+ const collapsed = text.replace(/\s+/g, " ").trim();
52
+ return collapsed.length > max ? `${collapsed.slice(0, max - 1)}\u2026` : collapsed;
53
+ }
54
+ function formatDuration(ms) {
55
+ const totalSec = Math.max(0, Math.floor(ms / 1e3));
56
+ if (totalSec < 60) return `${totalSec}s`;
57
+ const totalMin = Math.floor(totalSec / 60);
58
+ if (totalMin < 60) return `${totalMin}m${String(totalSec % 60).padStart(2, "0")}s`;
59
+ return `${Math.floor(totalMin / 60)}h${String(totalMin % 60).padStart(2, "0")}m`;
60
+ }
61
+ function formatRunAge(timing, now = Date.now()) {
62
+ const startedAt = timing?.startedAt;
63
+ if (typeof startedAt !== "number" || !Number.isFinite(startedAt) || startedAt <= 0) {
64
+ return "";
65
+ }
66
+ const end = typeof timing?.finishedAt === "number" && Number.isFinite(timing.finishedAt) && timing.finishedAt > 0 ? timing.finishedAt : now;
67
+ return formatDuration(end - startedAt);
68
+ }
69
+ function formatIdentityRow(agentName, runId) {
70
+ const parts = [];
71
+ if (!isAgentNameFallback(agentName)) parts.push(agentName);
72
+ const short = shortRunId(runId);
73
+ if (short) parts.push(`#${short}`);
74
+ return parts.join(" ");
75
+ }
76
+ function isAgentNameFallback(agentName) {
77
+ const trimmed = typeof agentName === "string" ? agentName.trim() : "";
78
+ return !trimmed || trimmed === "agent";
79
+ }
80
+ function resolveRunLabel(run) {
81
+ for (const candidate of [run.agentName, run.name, run.agentKey, run.runId]) {
82
+ if (typeof candidate === "string" && !isAgentNameFallback(candidate)) {
83
+ return candidate.trim();
84
+ }
85
+ }
86
+ return "agent";
87
+ }
88
+ function formatStartRunCard(agentName, status = "running", opts) {
89
+ const L = resolveLabels(opts?.labels);
90
+ const icon = getAgentRunStatusIcon(status);
91
+ const lines = [L.runStarted];
92
+ const identity = formatIdentityRow(agentName, opts?.runId);
93
+ if (identity) {
94
+ lines.push(` agent ${identity}`);
95
+ }
96
+ lines.push(` status ${icon} ${status}`);
97
+ const task = opts?.task?.trim();
98
+ if (task) {
99
+ lines.push(` task ${clipText(task, TASK_PREVIEW_MAX)}`);
100
+ }
101
+ return lines.join("\n");
102
+ }
103
+ var TASK_PREVIEW_MAX = 72;
104
+ var NOTE_PREVIEW_MAX = 72;
105
+ function formatProgressRow(toolCallCount, lastToolNames) {
106
+ const parts = [];
107
+ if (typeof toolCallCount === "number" && Number.isFinite(toolCallCount)) {
108
+ parts.push(`${toolCallCount} tools`);
109
+ }
110
+ if (lastToolNames && lastToolNames.length > 0) {
111
+ parts.push(lastToolNames.join(", "));
112
+ }
113
+ return parts.join(" \xB7 ");
114
+ }
115
+ function formatStatusRunCard(agentName, status = "running", opts) {
116
+ const L = resolveLabels(opts?.labels);
117
+ const icon = getAgentRunStatusIcon(status);
118
+ const age = formatRunAge(opts?.timing, opts?.now);
119
+ const lines = [L.runStatus, ` ${icon} ${status}${age ? ` ${age}` : ""}`];
120
+ const identity = formatIdentityRow(agentName, opts?.runId);
121
+ if (identity) {
122
+ lines.push(` agent ${identity}`);
123
+ }
124
+ const progress = formatProgressRow(opts?.toolCallCount, opts?.lastToolNames);
125
+ if (progress) {
126
+ lines.push(` tools ${progress}`);
127
+ }
128
+ const note = opts?.lastAssistantText?.trim();
129
+ if (note) {
130
+ lines.push(` note ${clipText(note, NOTE_PREVIEW_MAX)}`);
131
+ }
132
+ if (opts?.errorMessage?.trim()) {
133
+ lines.push(` error ${opts.errorMessage.trim()}`);
134
+ }
135
+ if (shouldShowLogTail(status, opts?.includeLogTail, opts?.logLines)) {
136
+ lines.push("", L.logTail, ...opts.logLines.map((l) => ` ${l}`));
137
+ }
138
+ return lines.join("\n");
139
+ }
140
+ function runShowsLogTail(status) {
141
+ return status === "failed" || status === "timeout";
142
+ }
143
+ function shouldShowLogTail(status, includeLogTail, logLines) {
144
+ if (includeLogTail === false) return false;
145
+ if (!logLines || logLines.length === 0) return false;
146
+ return runShowsLogTail(status);
147
+ }
148
+ function formatFinishedRunCard(agentName, status, opts) {
149
+ const L = resolveLabels(opts?.labels);
150
+ const icon = getAgentRunStatusIcon(status);
151
+ const age = formatRunAge(opts?.timing, opts?.now);
152
+ const summary = [status, age, formatProgressRow(opts?.toolCallCount, opts?.lastToolNames)].filter(Boolean).join(" \xB7 ");
153
+ const lines = [L.runFinished, ` ${icon} ${summary}`];
154
+ const identity = formatIdentityRow(agentName, opts?.runId);
155
+ if (identity) {
156
+ lines.push(` agent ${identity}`);
157
+ }
158
+ const note = opts?.lastAssistantText?.trim();
159
+ if (note) {
160
+ lines.push(` note ${clipText(note, NOTE_PREVIEW_MAX)}`);
161
+ }
162
+ if (opts?.errorMessage?.trim()) {
163
+ lines.push(` error ${opts.errorMessage.trim()}`);
164
+ }
165
+ if (shouldShowLogTail(status, opts?.includeLogTail, opts?.logLines)) {
166
+ lines.push("", L.logTail, ...opts.logLines.map((l) => ` ${l}`));
167
+ }
168
+ return lines.join("\n");
169
+ }
170
+ function formatStopRunCard(status = "killed", labels) {
171
+ const L = resolveLabels(labels);
172
+ const icon = getAgentRunStatusIcon(status);
173
+ return `${L.runStopped}
174
+ ${icon} ${status}`;
175
+ }
176
+ function formatListRunsCard(runs, labels) {
177
+ const L = resolveLabels(labels);
178
+ const lines = [L.runs(runs.length)];
179
+ for (const run of runs) {
180
+ const status = run.status ?? "\u2014";
181
+ const icon = getAgentRunStatusIcon(status);
182
+ lines.push(` ${icon} ${resolveRunLabel(run)}`);
183
+ }
184
+ return lines.join("\n");
185
+ }
186
+ function formatNotFoundRunCard(labels) {
187
+ const L = resolveLabels(labels);
188
+ return `${L.runStatus}
189
+ ? not_found`;
190
+ }
191
+ var AGENT_RUN_TERMINAL_STATUSES = /* @__PURE__ */ new Set([
192
+ "done",
193
+ "failed",
194
+ "timeout",
195
+ "killed",
196
+ "cancelled",
197
+ // orphaned: pid gone but the run record was still "running" — the process
198
+ // died (killed/OOM/crashed) before writing its own terminal status. Treated
199
+ // as terminal by all display/filter/GC consumers.
200
+ "orphaned"
201
+ ]);
202
+ function isAgentRunTerminalStatus(status) {
203
+ return typeof status === "string" && AGENT_RUN_TERMINAL_STATUSES.has(status);
204
+ }
205
+
206
+ export {
207
+ getAgentRunStatusIcon,
208
+ shortRunId,
209
+ formatRunAge,
210
+ isAgentNameFallback,
211
+ resolveRunLabel,
212
+ formatStartRunCard,
213
+ TASK_PREVIEW_MAX,
214
+ formatStatusRunCard,
215
+ runShowsLogTail,
216
+ formatFinishedRunCard,
217
+ formatStopRunCard,
218
+ formatListRunsCard,
219
+ formatNotFoundRunCard,
220
+ isAgentRunTerminalStatus
221
+ };