nolo-cli 0.97.5 → 0.97.7

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 (140) hide show
  1. package/{_executeModel-GWED52PB.js → _executeModel-RMLQFUCS.js} +69 -67
  2. package/action-PNPQLJHG.js +20 -0
  3. package/{addContentAction-B2DRF7P6.js → addContentAction-DX6T34JR.js} +13 -12
  4. package/{addDialogAgentAction-T3I7IXPK.js → addDialogAgentAction-6SGG37BF.js} +17 -16
  5. package/{agentDeleteCommand-FH462XO5.js → agentDeleteCommand-76VXVM3N.js} +40 -39
  6. package/{agentEmailCommands-6UNG6QKI.js → agentEmailCommands-FQKGKT55.js} +79 -77
  7. package/{agentListCommands-7QQZXKMN.js → agentListCommands-62NGDFOS.js} +50 -49
  8. package/{agentMachineCommands-DCBE3CPT.js → agentMachineCommands-ROITVU5E.js} +38 -37
  9. package/{agentProviderCommands-EMZCM6VA.js → agentProviderCommands-SG535ZMY.js} +1 -1
  10. package/{agentPullCommand-HF4A42D4.js → agentPullCommand-5DOL6RGF.js} +1 -1
  11. package/{agentRecordCommands-TNOVFCQ3.js → agentRecordCommands-ILR67636.js} +73 -71
  12. package/{agentRunCommand-PAUTLE6D.js → agentRunCommand-6HJG3XVZ.js} +76 -74
  13. package/{agentRunControl-2TTTUTSW.js → agentRunControl-3HWA2LLQ.js} +2 -2
  14. package/{agentRuntimeLocal-AY6YNUAL.js → agentRuntimeLocal-EZPUCRMS.js} +35 -34
  15. package/{agentSlice-FRLSN5HD.js → agentSlice-NBGKMMMR.js} +15 -14
  16. package/{appDeleteCommands-DFA4W66A.js → appDeleteCommands-7WLUFWPE.js} +35 -34
  17. package/{appDeployCommands-RDTG2IGP.js → appDeployCommands-NK22AMAW.js} +35 -34
  18. package/{appDeployStatusCommands-43XL5KEM.js → appDeployStatusCommands-PIWSMQET.js} +35 -34
  19. package/{appGetCommands-AKEAHGIG.js → appGetCommands-J3H6IHUT.js} +35 -34
  20. package/{appListCommands-F2H37K7K.js → appListCommands-CF4NYHRY.js} +35 -34
  21. package/{authCommand-2YPMMIJN.js → authCommand-T6UO5KPG.js} +20 -20
  22. package/{authCommands-FFDS4FVX.js → authCommands-KTIUCVVG.js} +4 -4
  23. package/{builtinSkillRegistry-CALVIJTX.js → builtinSkillRegistry-MAR5LPAC.js} +7 -6
  24. package/{chunk-EKS2APRJ.js → chunk-2TYM4V33.js} +2 -2
  25. package/{chunk-O26PCYLS.js → chunk-2WJ57RJA.js} +6 -6
  26. package/{chunk-C53ZG23R.js → chunk-4XYBLM4D.js} +4 -4
  27. package/{chunk-ZOVKKMF6.js → chunk-74D5HEDI.js} +1 -1
  28. package/{chunk-R5VLGKMK.js → chunk-7FL7ZUZV.js} +15 -15
  29. package/{chunk-XVLDUNF7.js → chunk-7H327KC7.js} +4 -4
  30. package/{chunk-UQNS32WZ.js → chunk-7MTCBOOS.js} +1 -1
  31. package/{chunk-PQ3B6KI6.js → chunk-A2Q6RMPJ.js} +92 -92
  32. package/chunk-A4SQRTZ6.js +15 -0
  33. package/chunk-AGIM7IMJ.js +147 -0
  34. package/{chunk-7WCQEMPB.js → chunk-ANRWQGOV.js} +27 -27
  35. package/{chunk-5UTFL4QJ.js → chunk-AOTBKDRK.js} +7 -0
  36. package/{chunk-4HXY5QQG.js → chunk-APVTZ66V.js} +1 -1
  37. package/{chunk-OTEMQQZI.js → chunk-BFWQ65IZ.js} +1 -1
  38. package/{chunk-4J3Q2KJL.js → chunk-BI2L6M54.js} +10 -8
  39. package/{chunk-6D2JFXLY.js → chunk-BZ7NPA6G.js} +0 -2
  40. package/{chunk-DDBBIUXZ.js → chunk-CLXLSAYP.js} +20 -20
  41. package/{chunk-TU5NE4U3.js → chunk-CV366NXM.js} +7 -7
  42. package/{chunk-KLMW4NNN.js → chunk-DBOMSOYX.js} +1 -1
  43. package/{chunk-AWF3WO5R.js → chunk-DHA6B3LS.js} +7 -7
  44. package/{chunk-7AEF6ZXP.js → chunk-DPPI7DJM.js} +7 -7
  45. package/chunk-DZ7R5V3Y.js +164 -0
  46. package/{chunk-I3QNET24.js → chunk-E3YWHWCR.js} +20 -1
  47. package/{chunk-Z4CSIXYP.js → chunk-ELIMCKNX.js} +5 -5
  48. package/{chunk-CTUQJVQM.js → chunk-EMQZSES6.js} +1 -1
  49. package/{chunk-RSEEDUMS.js → chunk-EPCAQM3U.js} +2 -2
  50. package/{chunk-3R7EAVTC.js → chunk-FN5VI6YP.js} +38 -38
  51. package/{chunk-QOKAKDPE.js → chunk-HIM3FCLF.js} +0 -1
  52. package/{chunk-DCLMZ5TX.js → chunk-HP57OUJO.js} +5 -5
  53. package/{chunk-SEZZCP3H.js → chunk-INI6OVJN.js} +27 -27
  54. package/{chunk-WILHZY7K.js → chunk-JNXHAQPJ.js} +4 -4
  55. package/{chunk-AZRHIN5B.js → chunk-K6U4NKFJ.js} +1 -1
  56. package/{chunk-34TW5T2M.js → chunk-LHQTN33D.js} +1 -1
  57. package/{chunk-HYZIYH2H.js → chunk-NVRC52JS.js} +22 -20
  58. package/chunk-NWENLDMM.js +42 -0
  59. package/{chunk-YXXI6MJ2.js → chunk-ONPQQSBX.js} +56 -60
  60. package/{chunk-P6GMCCAT.js → chunk-OW4APERY.js} +1 -1
  61. package/{chunk-RJK4MLDC.js → chunk-OXEHLZNH.js} +18 -20
  62. package/{chunk-VN45QM57.js → chunk-OYDJFF7H.js} +76 -76
  63. package/{chunk-DSSTTEKI.js → chunk-PQ6BKMXB.js} +2 -2
  64. package/{chunk-QMX4FNL4.js → chunk-QMXFJJAT.js} +84 -84
  65. package/{chunk-QJC7X767.js → chunk-RJYTVNWD.js} +1 -1
  66. package/{chunk-CPUFH46E.js → chunk-ROFPWC4X.js} +12 -12
  67. package/{chunk-IAESIMK7.js → chunk-RX4HD4H7.js} +8 -8
  68. package/{chunk-VVXRRZXE.js → chunk-SESH42J6.js} +3 -3
  69. package/{chunk-DAWDCRIG.js → chunk-TAWF7YAW.js} +1 -1
  70. package/{chunk-VFWN2MLE.js → chunk-TLM3NM4J.js} +170 -153
  71. package/{chunk-ZYWQNCBN.js → chunk-TVCAR26G.js} +1 -1
  72. package/{chunk-APMUYAPK.js → chunk-U3C3IA32.js} +1 -1
  73. package/chunk-UJXNKP5V.js +760 -0
  74. package/{chunk-O2OWEFII.js → chunk-VCAQFMVN.js} +1 -1
  75. package/{chunk-KCDUTE5V.js → chunk-VEYL5MO5.js} +4 -4
  76. package/{chunk-WIWM4FE3.js → chunk-VY6VFGKR.js} +7 -746
  77. package/{chunk-XAYSAKSS.js → chunk-VZZUQTBR.js} +2 -2
  78. package/{chunk-CU3QB4HW.js → chunk-W72ISAKC.js} +3 -3
  79. package/{chunk-QKUMVP3O.js → chunk-WCGC6S77.js} +4 -4
  80. package/{chunk-QDSINZM3.js → chunk-WJ3B6FX6.js} +1 -14
  81. package/{chunk-6ZWMH6TJ.js → chunk-WS2VEVHS.js} +4 -5
  82. package/{chunk-7CHC4W22.js → chunk-XBIYSBSG.js} +5 -5
  83. package/{chunk-NR4IWY23.js → chunk-ZTPPACAL.js} +40 -260
  84. package/{commandRegistry-PUSRUY6V.js → commandRegistry-MGVPQ4UY.js} +70 -70
  85. package/{contentThunks-JFPH7ZGN.js → contentThunks-XEUK52F5.js} +32 -32
  86. package/{createAgentAutomationAction-AYUD3TVG.js → createAgentAutomationAction-UETPHR7A.js} +35 -35
  87. package/{createDialogAction-5EJGAQL5.js → createDialogAction-ARPAWCJP.js} +36 -35
  88. package/{createPageAction-OJVJJSAD.js → createPageAction-OQX7YUWI.js} +43 -42
  89. package/{dbSlice-DQ32LYTJ.js → dbSlice-BUB77DHH.js} +12 -11
  90. package/{deleteFile-NX6QHCWZ.js → deleteFile-HG4BF3CS.js} +8 -7
  91. package/{dialogCommands-TQ2EYOO3.js → dialogCommands-CNXJGME5.js} +38 -38
  92. package/{dialogSlice-L5SA2HCW.js → dialogSlice-5S2XYAP4.js} +31 -31
  93. package/{docCreateCommands-YGTVED6F.js → docCreateCommands-U2TEDZHS.js} +34 -33
  94. package/{docDeleteCommands-Y2K6UBU5.js → docDeleteCommands-K4ME6F6S.js} +35 -34
  95. package/{docReadCommands-JSJTTCVY.js → docReadCommands-ZUAVR3HH.js} +34 -33
  96. package/{docStore-DAAP4WFC.js → docStore-4JNBG74K.js} +13 -12
  97. package/{docUpdateCommands-X2ZC37D3.js → docUpdateCommands-UKEOVRTF.js} +34 -33
  98. package/{fetchMessages-67MEFPZR.js → fetchMessages-N2BW2L62.js} +4 -4
  99. package/getPricing-NMMFT3YI.js +1 -1
  100. package/{handleSendMessageAction-NCZABULQ.js → handleSendMessageAction-57V3SMMC.js} +37 -37
  101. package/index.js +3 -3
  102. package/{localDialogRead-EBRS242U.js → localDialogRead-3FHUPYAR.js} +1 -1
  103. package/{localRuntimeDb-3LRMNLCM.js → localRuntimeDb-AXJREE2T.js} +1 -1
  104. package/{machineCommands-GRIO3LQG.js → machineCommands-PIBIQ756.js} +79 -77
  105. package/{machineWsRunDispatch-65IU4CLA.js → machineWsRunDispatch-32U6CJYK.js} +71 -69
  106. package/{memberThunks-5ZXPR63F.js → memberThunks-LEUNURN2.js} +21 -19
  107. package/package.json +1 -1
  108. package/{providerPresetApply-76AVU3HD.js → providerPresetApply-76AHT34P.js} +4 -4
  109. package/{providerRegistry-Z62NC45X.js → providerRegistry-6HAQAQXB.js} +4 -4
  110. package/{read-EPTJRAEF.js → read-TBK4DFHP.js} +8 -7
  111. package/{readDocTool-W4NDXNEX.js → readDocTool-TJFCZ3ND.js} +1 -1
  112. package/{readlineWorkspace-6F27WVAV.js → readlineWorkspace-NP2MQKHV.js} +327 -110
  113. package/{removeDialogAgentAction-BVAWQKXE.js → removeDialogAgentAction-CT5HGRZH.js} +20 -22
  114. package/{runAgentClientLoop-CKC7RYAK.js → runAgentClientLoop-M3NMQENV.js} +65 -63
  115. package/{runtimeDoctorCommands-3USD722U.js → runtimeDoctorCommands-EQJA4MGD.js} +2 -2
  116. package/{setDialogExtraReferencesAction-LYY45IAD.js → setDialogExtraReferencesAction-JOENKFTX.js} +14 -13
  117. package/{setPrimaryDialogAgentAction-73IL7DLU.js → setPrimaryDialogAgentAction-MHWOGXP3.js} +20 -22
  118. package/{chunk-SONWNI3L.js → settingThunks-KLPZNA6L.js} +104 -921
  119. package/{slateUtils-RIZES3PV.js → slateUtils-NGV2NMKM.js} +1 -1
  120. package/{spaceCommands-JZO2QK77.js → spaceCommands-ZESRWSTC.js} +36 -35
  121. package/{streamAgentChatTurn-4PBF5RK5.js → streamAgentChatTurn-RWFCST5Y.js} +110 -108
  122. package/{switchDialogAgentAction-UUXDSQ6X.js → switchDialogAgentAction-JHA4JEYA.js} +14 -13
  123. package/{tableCommands-G7RV3RU3.js → tableCommands-6U4BMLRR.js} +7 -7
  124. package/{toolApiClient-INIQCPGY.js → toolApiClient-EJT6TMFG.js} +4 -4
  125. package/{tools-BQ375D2L.js → tools-6AKBF274.js} +53 -51
  126. package/{tuiSummaryLlmCaller-74NRRLVW.js → tuiSummaryLlmCaller-QUCBFGZK.js} +18 -17
  127. package/{updateDialogTitleAction-DTREH6RR.js → updateDialogTitleAction-43H4O3QO.js} +39 -39
  128. package/action-GI44T4DR.js +0 -31
  129. package/browser-image-compression-MFDTD7K6.js +0 -1763
  130. package/chatQueueReduxAdapter-B3PSJ3GC.js +0 -187
  131. package/chunk-MEYIRKDN.js +0 -8967
  132. package/chunk-Y5GCAMGP.js +0 -9
  133. package/chunk-YPREESF4.js +0 -225
  134. package/settingSlice-Q6EKL7EQ.js +0 -204
  135. package/syncMapping-N6RGXGBW.js +0 -437
  136. package/{chunk-6PHKBY2Q.js → chunk-4YSOUKUR.js} +8 -8
  137. package/{chunk-S5XGT6GB.js → chunk-UA324D4O.js} +3 -3
  138. package/{chunk-MX574M24.js → chunk-V4UYSDTH.js} +3 -3
  139. package/{chunk-ESRMFY7G.js → chunk-XFUBXRVI.js} +5 -5
  140. package/{localRuntimeAuthority-5W6IJRAD.js → localRuntimeAuthority-AENMRPGX.js} +5 -5
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  toolRegistry
3
- } from "./chunk-VFWN2MLE.js";
3
+ } from "./chunk-TLM3NM4J.js";
4
4
  import {
5
5
  runtime_default
6
- } from "./chunk-QMX4FNL4.js";
6
+ } from "./chunk-QMXFJJAT.js";
7
7
  import {
8
8
  canonicalizeToolNames
9
9
  } from "./chunk-XUWRURDF.js";
@@ -17,6 +17,94 @@ import {
17
17
  isRecord
18
18
  } from "./chunk-KUG52IAP.js";
19
19
 
20
+ // packages/ai/chat/inlineImageUrlsForCustomProvider.ts
21
+ var FILE_CONTENT_PATH = "/api/v1/db/file/content/";
22
+ var shouldInlineImageUrlsForAgent = (agentConfig) => {
23
+ const apiSource = agentConfig?.apiSource?.toLowerCase();
24
+ const provider = agentConfig?.provider?.toLowerCase();
25
+ const model = agentConfig?.model?.toLowerCase();
26
+ if (apiSource === "custom" || provider === "custom") return true;
27
+ if (isNoloHostedProvider(provider)) return true;
28
+ return provider === "openrouter" && model === "minimax/minimax-m3";
29
+ };
30
+ var isInlineCandidate = (url) => /^https?:\/\//i.test(url) && url.includes(FILE_CONTENT_PATH);
31
+ var bytesToBase64 = (bytes) => {
32
+ let binary = "";
33
+ for (const byte of bytes) {
34
+ binary += String.fromCharCode(byte);
35
+ }
36
+ return btoa(binary);
37
+ };
38
+ var defaultFetchImage = async (url) => {
39
+ const response = await fetch(url);
40
+ if (!response.ok) {
41
+ return {
42
+ ok: false,
43
+ error: `HTTP ${response.status}`
44
+ };
45
+ }
46
+ const bytes = new Uint8Array(await response.arrayBuffer());
47
+ return {
48
+ ok: true,
49
+ mimeType: response.headers.get("content-type") ?? "application/octet-stream",
50
+ bytes
51
+ };
52
+ };
53
+ var cloneImagePartWithDataUrl = async (part, fetchImage, isAllowedImageUrl) => {
54
+ const url = part?.image_url?.url;
55
+ if (typeof url !== "string" || !isInlineCandidate(url) || isAllowedImageUrl && !isAllowedImageUrl(url)) {
56
+ return part;
57
+ }
58
+ const result = await fetchImage(url);
59
+ if (!result.ok || !result.bytes) return part;
60
+ const mimeType = result.mimeType || "application/octet-stream";
61
+ return {
62
+ ...part,
63
+ image_url: {
64
+ ...part.image_url,
65
+ url: `data:${mimeType};base64,${bytesToBase64(result.bytes)}`
66
+ }
67
+ };
68
+ };
69
+ var inlineImageUrlsForCustomProvider = async (bodyData, options) => {
70
+ if (!options.shouldInline) return bodyData;
71
+ const body = bodyData;
72
+ if (!Array.isArray(body?.messages)) return bodyData;
73
+ const fetchImage = options.fetchImage ?? defaultFetchImage;
74
+ let changed = false;
75
+ const messages = [];
76
+ for (const message of body.messages) {
77
+ if (!Array.isArray(message?.content)) {
78
+ messages.push(message);
79
+ continue;
80
+ }
81
+ const content = await Promise.all(
82
+ message.content.map(async (part) => {
83
+ if (part?.type !== "image_url") return part;
84
+ return cloneImagePartWithDataUrl(
85
+ part,
86
+ fetchImage,
87
+ options.isAllowedImageUrl
88
+ );
89
+ })
90
+ );
91
+ let messageChanged = false;
92
+ for (let i = 0; i < content.length; i++) {
93
+ if (content[i] !== message.content[i]) {
94
+ changed = true;
95
+ messageChanged = true;
96
+ break;
97
+ }
98
+ }
99
+ messages.push(messageChanged ? { ...message, content } : message);
100
+ }
101
+ if (!changed) return bodyData;
102
+ return {
103
+ ...body,
104
+ messages
105
+ };
106
+ };
107
+
20
108
  // packages/ai/tools/toolSchemaCompatibility.ts
21
109
  var COMPOSITION_KEYS = ["anyOf", "oneOf", "allOf"];
22
110
  var LIMITED_JSON_SCHEMA_PROVIDERS = /* @__PURE__ */ new Set([
@@ -180,96 +268,8 @@ var prepareTools = (toolNames, options) => {
180
268
  return prepared.slice();
181
269
  };
182
270
 
183
- // packages/ai/chat/inlineImageUrlsForCustomProvider.ts
184
- var FILE_CONTENT_PATH = "/api/v1/db/file/content/";
185
- var shouldInlineImageUrlsForAgent = (agentConfig) => {
186
- const apiSource = agentConfig?.apiSource?.toLowerCase();
187
- const provider = agentConfig?.provider?.toLowerCase();
188
- const model = agentConfig?.model?.toLowerCase();
189
- if (apiSource === "custom" || provider === "custom") return true;
190
- if (isNoloHostedProvider(provider)) return true;
191
- return provider === "openrouter" && model === "minimax/minimax-m3";
192
- };
193
- var isInlineCandidate = (url) => /^https?:\/\//i.test(url) && url.includes(FILE_CONTENT_PATH);
194
- var bytesToBase64 = (bytes) => {
195
- let binary = "";
196
- for (const byte of bytes) {
197
- binary += String.fromCharCode(byte);
198
- }
199
- return btoa(binary);
200
- };
201
- var defaultFetchImage = async (url) => {
202
- const response = await fetch(url);
203
- if (!response.ok) {
204
- return {
205
- ok: false,
206
- error: `HTTP ${response.status}`
207
- };
208
- }
209
- const bytes = new Uint8Array(await response.arrayBuffer());
210
- return {
211
- ok: true,
212
- mimeType: response.headers.get("content-type") ?? "application/octet-stream",
213
- bytes
214
- };
215
- };
216
- var cloneImagePartWithDataUrl = async (part, fetchImage, isAllowedImageUrl) => {
217
- const url = part?.image_url?.url;
218
- if (typeof url !== "string" || !isInlineCandidate(url) || isAllowedImageUrl && !isAllowedImageUrl(url)) {
219
- return part;
220
- }
221
- const result = await fetchImage(url);
222
- if (!result.ok || !result.bytes) return part;
223
- const mimeType = result.mimeType || "application/octet-stream";
224
- return {
225
- ...part,
226
- image_url: {
227
- ...part.image_url,
228
- url: `data:${mimeType};base64,${bytesToBase64(result.bytes)}`
229
- }
230
- };
231
- };
232
- var inlineImageUrlsForCustomProvider = async (bodyData, options) => {
233
- if (!options.shouldInline) return bodyData;
234
- const body = bodyData;
235
- if (!Array.isArray(body?.messages)) return bodyData;
236
- const fetchImage = options.fetchImage ?? defaultFetchImage;
237
- let changed = false;
238
- const messages = [];
239
- for (const message of body.messages) {
240
- if (!Array.isArray(message?.content)) {
241
- messages.push(message);
242
- continue;
243
- }
244
- const content = await Promise.all(
245
- message.content.map(async (part) => {
246
- if (part?.type !== "image_url") return part;
247
- return cloneImagePartWithDataUrl(
248
- part,
249
- fetchImage,
250
- options.isAllowedImageUrl
251
- );
252
- })
253
- );
254
- let messageChanged = false;
255
- for (let i = 0; i < content.length; i++) {
256
- if (content[i] !== message.content[i]) {
257
- changed = true;
258
- messageChanged = true;
259
- break;
260
- }
261
- }
262
- messages.push(messageChanged ? { ...message, content } : message);
263
- }
264
- if (!changed) return bodyData;
265
- return {
266
- ...body,
267
- messages
268
- };
269
- };
270
-
271
271
  export {
272
- prepareTools,
273
272
  shouldInlineImageUrlsForAgent,
274
- inlineImageUrlsForCustomProvider
273
+ inlineImageUrlsForCustomProvider,
274
+ prepareTools
275
275
  };
@@ -0,0 +1,15 @@
1
+ import {
2
+ BUILTIN_NOLO_AGENT_KEY
3
+ } from "./chunk-BNGW5ASC.js";
4
+
5
+ // packages/core/init.ts
6
+ var nolotusId = "0e95801d90";
7
+ var ADMIN_IDS = /* @__PURE__ */ new Set([nolotusId]);
8
+ var isSystemAdmin = (userId) => userId != null && ADMIN_IDS.has(userId);
9
+ var noloAgentId = BUILTIN_NOLO_AGENT_KEY;
10
+
11
+ export {
12
+ nolotusId,
13
+ isSystemAdmin,
14
+ noloAgentId
15
+ };
@@ -0,0 +1,147 @@
1
+ // packages/create/editor/utils/slateUtils.ts
2
+ var slateNodeToString = (node) => {
3
+ if (typeof node?.text === "string") return node.text;
4
+ const children = Array.isArray(node?.children) ? node.children : [];
5
+ return children.map(slateNodeToString).join("");
6
+ };
7
+ var createEmptyParagraph = () => ({
8
+ type: "paragraph",
9
+ children: [{ text: "" }]
10
+ });
11
+ var ensureEditorContent = (slateData) => Array.isArray(slateData) && slateData.length > 0 ? slateData : [createEmptyParagraph()];
12
+ var deepEqual = (a, b) => {
13
+ if (a === b) return true;
14
+ if (a == null || b == null) return false;
15
+ if (typeof a !== "object" || typeof b !== "object") return false;
16
+ const isArrayA = Array.isArray(a);
17
+ const isArrayB = Array.isArray(b);
18
+ if (isArrayA || isArrayB) {
19
+ if (!isArrayA || !isArrayB) return false;
20
+ if (a.length !== b.length) return false;
21
+ for (let i = 0; i < a.length; i++) {
22
+ if (!deepEqual(a[i], b[i])) return false;
23
+ }
24
+ return true;
25
+ }
26
+ const keysA = Object.keys(a);
27
+ const keysB = Object.keys(b);
28
+ if (keysA.length !== keysB.length) return false;
29
+ for (const key of keysA) {
30
+ if (!Object.prototype.hasOwnProperty.call(b, key)) return false;
31
+ if (!deepEqual(a[key], b[key])) return false;
32
+ }
33
+ return true;
34
+ };
35
+ var compareSlateContent = (newContent, oldContent) => {
36
+ if (newContent === oldContent) return false;
37
+ if (!newContent || !oldContent) return true;
38
+ if (newContent.length !== oldContent.length) return true;
39
+ return !deepEqual(newContent, oldContent);
40
+ };
41
+ var extractTitleFromSlate = (slateData) => {
42
+ if (!Array.isArray(slateData) || slateData.length === 0) return "\u65B0\u9875\u9762";
43
+ const titleNode = slateData.find((node) => node.type === "heading-one");
44
+ if (titleNode) {
45
+ const text = slateNodeToString(titleNode).trim();
46
+ if (text) {
47
+ return text;
48
+ }
49
+ }
50
+ for (const node of slateData) {
51
+ const text = slateNodeToString(node).trim();
52
+ if (text) {
53
+ return text.length > 30 ? `${text.substring(0, 30)}...` : text;
54
+ }
55
+ }
56
+ return "\u65B0\u9875\u9762";
57
+ };
58
+ var splitSlateTitleAndBody = (slateData, explicitTitle) => {
59
+ const content = ensureEditorContent(slateData);
60
+ const firstNode = content[0];
61
+ const hasExplicitTitle = explicitTitle !== void 0 && explicitTitle !== null;
62
+ const normalizedExplicitTitle = hasExplicitTitle ? explicitTitle.trim() : null;
63
+ const firstNonEmptyText = content.map((node) => slateNodeToString(node).trim()).find(Boolean);
64
+ if (firstNode?.type === "heading-one") {
65
+ const firstText = slateNodeToString(firstNode).trim();
66
+ const shouldTreatAsTitle = !!firstText && (normalizedExplicitTitle == null || normalizedExplicitTitle === firstText);
67
+ if (shouldTreatAsTitle) {
68
+ const body = content.slice(1);
69
+ return {
70
+ title: firstText,
71
+ body: ensureEditorContent(body)
72
+ };
73
+ }
74
+ }
75
+ return {
76
+ title: normalizedExplicitTitle ?? (firstNonEmptyText || ""),
77
+ body: content
78
+ };
79
+ };
80
+ var extractMentionsFromSlate = (slateData) => {
81
+ const tools = /* @__PURE__ */ new Set();
82
+ const traverse = (nodes) => {
83
+ for (const node of nodes) {
84
+ if (node.type === "mention" && node.resourceId) {
85
+ if (node.resourceType === "tool") {
86
+ tools.add(node.resourceId);
87
+ }
88
+ }
89
+ if (node.children && Array.isArray(node.children)) {
90
+ traverse(node.children);
91
+ }
92
+ }
93
+ };
94
+ if (Array.isArray(slateData)) {
95
+ traverse(slateData);
96
+ }
97
+ return Array.from(tools);
98
+ };
99
+ var extractCategorizedMentions = (slateData) => {
100
+ const result = {
101
+ tools: [],
102
+ pages: [],
103
+ agents: [],
104
+ spaces: []
105
+ };
106
+ const traverse = (nodes) => {
107
+ for (const node of nodes) {
108
+ if (node.type === "mention" && node.resourceId && node.resourceType) {
109
+ switch (node.resourceType) {
110
+ case "tool":
111
+ result.tools.push(node.resourceId);
112
+ break;
113
+ case "page":
114
+ result.pages.push(node.resourceId);
115
+ break;
116
+ case "agent":
117
+ result.agents.push(node.resourceId);
118
+ break;
119
+ case "space":
120
+ result.spaces.push(node.resourceId);
121
+ break;
122
+ }
123
+ }
124
+ if (node.children && Array.isArray(node.children)) {
125
+ traverse(node.children);
126
+ }
127
+ }
128
+ };
129
+ if (Array.isArray(slateData)) {
130
+ traverse(slateData);
131
+ }
132
+ result.tools = [...new Set(result.tools)];
133
+ result.pages = [...new Set(result.pages)];
134
+ result.agents = [...new Set(result.agents)];
135
+ result.spaces = [...new Set(result.spaces)];
136
+ return result;
137
+ };
138
+
139
+ export {
140
+ createEmptyParagraph,
141
+ ensureEditorContent,
142
+ compareSlateContent,
143
+ extractTitleFromSlate,
144
+ splitSlateTitleAndBody,
145
+ extractMentionsFromSlate,
146
+ extractCategorizedMentions
147
+ };
@@ -2,7 +2,7 @@ import {
2
2
  DEVIN_CONNECT_URL,
3
3
  parseSseDataLineJson,
4
4
  parseSseDataLineObject
5
- } from "./chunk-P6GMCCAT.js";
5
+ } from "./chunk-OW4APERY.js";
6
6
  import {
7
7
  applyChatCompletionDelta,
8
8
  applyResponsesToolEvent,
@@ -11,7 +11,7 @@ import {
11
11
  flushChatCompletionStream,
12
12
  providerHttpFailure,
13
13
  throwIfChatCompletionStreamFailed
14
- } from "./chunk-TU5NE4U3.js";
14
+ } from "./chunk-CV366NXM.js";
15
15
  import {
16
16
  readSseFrames
17
17
  } from "./chunk-GMZLP5DV.js";
@@ -27,16 +27,13 @@ import {
27
27
  resolveHistoricalToolContentCap,
28
28
  resolveToolOutputProfile,
29
29
  stripImagePartsFromMessages
30
- } from "./chunk-C53ZG23R.js";
30
+ } from "./chunk-4XYBLM4D.js";
31
31
  import {
32
32
  downgradeUnparsableToolCalls,
33
33
  hasParsableObjectArguments,
34
34
  repairTruncatedToolArguments,
35
35
  sanitizeForOutbound
36
36
  } from "./chunk-CQ3WA2NE.js";
37
- import {
38
- buildDialogFallbackTitleFromUserInput
39
- } from "./chunk-2MBTWINN.js";
40
37
  import {
41
38
  createThinkParserState,
42
39
  createToolCallAccumulator,
@@ -57,7 +54,7 @@ import {
57
54
  requiresBareImageUrl,
58
55
  resolveToolGuidedSections,
59
56
  toBareImageUrlMessages
60
- } from "./chunk-EKS2APRJ.js";
57
+ } from "./chunk-2TYM4V33.js";
61
58
  import {
62
59
  convertMessagesToResponsesInput,
63
60
  extractReasoningFromResponseOutput,
@@ -82,11 +79,10 @@ import {
82
79
  parseNoloWorkspaceToolArguments,
83
80
  readTextStreamUpToChars,
84
81
  resolveNoloDialogInput
85
- } from "./chunk-6PHKBY2Q.js";
82
+ } from "./chunk-4YSOUKUR.js";
86
83
  import {
87
- buildProviderAuthHeaders,
88
- buildProviderExecutionPlan
89
- } from "./chunk-27ONFIEY.js";
84
+ buildDialogFallbackTitleFromUserInput
85
+ } from "./chunk-2MBTWINN.js";
90
86
  import {
91
87
  EMPTY_ASSISTANT_REPAIR_PROMPT,
92
88
  getModelContextWindow,
@@ -97,7 +93,7 @@ import {
97
93
  resolveEmptyAssistantFallbackMessage,
98
94
  resolveEmptyAssistantOutcome,
99
95
  resolveTruncatedReasoningTailLog
100
- } from "./chunk-WILHZY7K.js";
96
+ } from "./chunk-JNXHAQPJ.js";
101
97
  import {
102
98
  COMPACTION_SUMMARY_SCHEMA_VERSION,
103
99
  COMPACTION_SUMMARY_SYSTEM_PROMPT,
@@ -115,16 +111,16 @@ import {
115
111
  resolveCompressionTriggerRatio,
116
112
  truncateToolOutputForContext,
117
113
  withProviderCallTimingFields
118
- } from "./chunk-6ZWMH6TJ.js";
114
+ } from "./chunk-WS2VEVHS.js";
119
115
  import {
120
116
  clipCompactText
121
117
  } from "./chunk-5MMAK75Q.js";
118
+ import {
119
+ asRecordOrEmpty
120
+ } from "./chunk-KX6YBIHG.js";
122
121
  import {
123
122
  estimateTokenCount
124
123
  } from "./chunk-PSCNXBYA.js";
125
- import {
126
- toErrorMessage
127
- } from "./chunk-HNMXYYJR.js";
128
124
  import {
129
125
  resolveNoloStateDir
130
126
  } from "./chunk-HNGRBWYF.js";
@@ -139,8 +135,18 @@ import {
139
135
  canonicalizeToolNames
140
136
  } from "./chunk-XUWRURDF.js";
141
137
  import {
142
- asRecordOrEmpty
143
- } from "./chunk-KX6YBIHG.js";
138
+ buildProviderAuthHeaders,
139
+ buildProviderExecutionPlan
140
+ } from "./chunk-27ONFIEY.js";
141
+ import {
142
+ toErrorMessage
143
+ } from "./chunk-HNMXYYJR.js";
144
+ import {
145
+ asTrimmedLowercaseString
146
+ } from "./chunk-QSJ3HFEF.js";
147
+ import {
148
+ isRecord
149
+ } from "./chunk-KUG52IAP.js";
144
150
  import {
145
151
  asTrimmedNonEmptyStringArray,
146
152
  dialogMessageKey,
@@ -150,17 +156,11 @@ import {
150
156
  asOptionalFiniteNumber
151
157
  } from "./chunk-WWC7I6TA.js";
152
158
  import {
153
- asTrimmedLowercaseString
154
- } from "./chunk-QSJ3HFEF.js";
155
- import {
156
- isRecord
157
- } from "./chunk-KUG52IAP.js";
159
+ asOptionalPositiveFiniteNumber
160
+ } from "./chunk-U6VC4MU4.js";
158
161
  import {
159
162
  asTrimmedString
160
163
  } from "./chunk-3EUW3WEO.js";
161
- import {
162
- asOptionalPositiveFiniteNumber
163
- } from "./chunk-U6VC4MU4.js";
164
164
  import {
165
165
  normalizeServerOrigin
166
166
  } from "./chunk-CF7PE763.js";
@@ -19990,7 +19990,7 @@ function buildLoadSkillExecutor(args2) {
19990
19990
  const { resolveSkillByName } = await import("./skillDiscovery-ZBU76COE.js");
19991
19991
  const resolved = resolveSkillByName(args2.cwd, name);
19992
19992
  if (!resolved) {
19993
- const { resolveBuiltinSkillByName } = await import("./builtinSkillRegistry-CALVIJTX.js");
19993
+ const { resolveBuiltinSkillByName } = await import("./builtinSkillRegistry-MAR5LPAC.js");
19994
19994
  const builtin = resolveBuiltinSkillByName(name);
19995
19995
  if (builtin) {
19996
19996
  return {
@@ -11,6 +11,12 @@ import {
11
11
  isLoopbackHostname
12
12
  } from "./chunk-4SN6J65J.js";
13
13
 
14
+ // packages/core/positiveFiniteNumberOrFallback.ts
15
+ function parsePositiveFiniteNumberOrFallback(value, fallback) {
16
+ const parsed = Number(value);
17
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;
18
+ }
19
+
14
20
  // packages/core/fetchWithTransientRetry.ts
15
21
  var TRANSIENT_FETCH_MAX_ATTEMPTS = 3;
16
22
  var TRANSIENT_FETCH_RETRY_BASE_DELAY_MS = 250;
@@ -120,6 +126,7 @@ async function fetchWithTransientRetry(fetchImpl, input, init, options = {}) {
120
126
  }
121
127
 
122
128
  export {
129
+ parsePositiveFiniteNumberOrFallback,
123
130
  isTransientFetchError,
124
131
  fetchWithTransientRetry
125
132
  };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  readDbRecord,
3
3
  writeAgentRecord
4
- } from "./chunk-XAYSAKSS.js";
4
+ } from "./chunk-VZZUQTBR.js";
5
5
  import {
6
6
  buildSkillSummaryMarker
7
7
  } from "./chunk-VF4K2QE6.js";
@@ -7,7 +7,7 @@ import {
7
7
  } from "./chunk-ESHYE7WU.js";
8
8
  import {
9
9
  getDefaultCliLocalRuntimeDb
10
- } from "./chunk-ZOVKKMF6.js";
10
+ } from "./chunk-74D5HEDI.js";
11
11
  import {
12
12
  resolveAuthTokenFromEnv
13
13
  } from "./chunk-A7GB5UGH.js";
@@ -3,7 +3,7 @@ import {
3
3
  createFileCredentialBroker,
4
4
  migrateAgentSecrets,
5
5
  normalizeAgentRuntimeToolPolicy
6
- } from "./chunk-ESRMFY7G.js";
6
+ } from "./chunk-XFUBXRVI.js";
7
7
  import {
8
8
  asRecordOrEmpty
9
9
  } from "./chunk-KX6YBIHG.js";
@@ -11,16 +11,18 @@ import {
11
11
  patch,
12
12
  remove,
13
13
  write
14
- } from "./chunk-HYZIYH2H.js";
14
+ } from "./chunk-NVRC52JS.js";
15
+ import {
16
+ getRuntimeServerContext
17
+ } from "./chunk-UJXNKP5V.js";
15
18
  import {
16
19
  createAgentKey,
17
20
  toTrimmedString
18
21
  } from "./chunk-3AH7LNUB.js";
19
22
  import {
20
23
  asyncThunkCreator,
21
- buildCreateSlice,
22
- getRuntimeServerContext
23
- } from "./chunk-WIWM4FE3.js";
24
+ buildCreateSlice
25
+ } from "./chunk-VY6VFGKR.js";
24
26
  import {
25
27
  asTrimmedString
26
28
  } from "./chunk-3EUW3WEO.js";
@@ -304,7 +306,7 @@ var slice = createSliceWithThunks({
304
306
  const overrides = {};
305
307
  if (args.systemPromptOverride !== void 0) overrides.prompt = args.systemPromptOverride;
306
308
  if (args.toolsOverride !== void 0) overrides.tools = args.toolsOverride;
307
- const { _executeModel } = await import("./_executeModel-GWED52PB.js");
309
+ const { _executeModel } = await import("./_executeModel-RMLQFUCS.js");
308
310
  return _executeModel(
309
311
  {
310
312
  isStreaming: args.isStreaming ?? false,
@@ -325,7 +327,7 @@ var slice = createSliceWithThunks({
325
327
  * - 循环直到无工具调用或触发其他运行时停止条件
326
328
  */
327
329
  runAgent: create.asyncThunk(async (args, thunkApi) => {
328
- const { runAgentClientLoop } = await import("./runAgentClientLoop-CKC7RYAK.js");
330
+ const { runAgentClientLoop } = await import("./runAgentClientLoop-M3NMQENV.js");
329
331
  const { content: loopContent, toolCallCount } = await runAgentClientLoop(
330
332
  {
331
333
  agentKey: args.agentKey,
@@ -341,7 +343,7 @@ var slice = createSliceWithThunks({
341
343
  * 聊天轮次流式 Agent 调用
342
344
  */
343
345
  streamAgentChatTurn: create.asyncThunk(async (args, thunkApi) => {
344
- const { streamAgentChatTurnHandler } = await import("./streamAgentChatTurn-4PBF5RK5.js");
346
+ const { streamAgentChatTurnHandler } = await import("./streamAgentChatTurn-RWFCST5Y.js");
345
347
  return streamAgentChatTurnHandler(args, thunkApi);
346
348
  }),
347
349
  /**
@@ -364,8 +364,6 @@ export {
364
364
  deleteDialogRuntime,
365
365
  abortActiveControllers,
366
366
  getDialogRuntimeTokens,
367
- getPendingUserInputQueue,
368
- getLoopStopReason,
369
367
  selectDialogRuntimeByKey,
370
368
  selectPendingFiles,
371
369
  selectActiveControllers,
@@ -1,29 +1,35 @@
1
1
  import {
2
2
  addContentToSpace
3
- } from "./chunk-NR4IWY23.js";
4
- import {
5
- formatISO
6
- } from "./chunk-ZRAU6T47.js";
3
+ } from "./chunk-ZTPPACAL.js";
7
4
  import {
8
5
  format,
9
6
  prepareAndPersistMessage,
10
7
  uiAskChoiceFunc,
11
8
  uiAskChoiceFunctionSchema
12
- } from "./chunk-QMX4FNL4.js";
9
+ } from "./chunk-QMXFJJAT.js";
13
10
  import {
14
- buildBuiltinObjectSkillReference
15
- } from "./chunk-QKUMVP3O.js";
11
+ formatISO
12
+ } from "./chunk-ZRAU6T47.js";
16
13
  import {
17
- PLATFORM_HOSTED_DEEPSEEK_FLASH_MODEL,
18
- PLATFORM_HOSTED_KIMI_PROVIDER
19
- } from "./chunk-Y3PMXGLH.js";
14
+ buildBuiltinObjectSkillReference
15
+ } from "./chunk-WCGC6S77.js";
20
16
  import {
21
17
  read,
22
18
  readAndWait,
23
19
  removeCachedEntity,
24
20
  upsertSSREntity,
25
21
  write
26
- } from "./chunk-HYZIYH2H.js";
22
+ } from "./chunk-NVRC52JS.js";
23
+ import {
24
+ PLATFORM_HOSTED_DEEPSEEK_FLASH_MODEL,
25
+ PLATFORM_HOSTED_KIMI_PROVIDER
26
+ } from "./chunk-Y3PMXGLH.js";
27
+ import {
28
+ extractCustomId
29
+ } from "./chunk-M2EJHDJP.js";
30
+ import {
31
+ isRecord
32
+ } from "./chunk-KUG52IAP.js";
27
33
  import {
28
34
  createAgentKey,
29
35
  createDialogKey,
@@ -34,22 +40,16 @@ import {
34
40
  } from "./chunk-3AH7LNUB.js";
35
41
  import {
36
42
  isDevelopment
37
- } from "./chunk-QOKAKDPE.js";
43
+ } from "./chunk-HIM3FCLF.js";
38
44
  import {
39
45
  selectIdentityUserId
40
46
  } from "./chunk-SEJ5OS6F.js";
41
47
  import {
42
- isRecord
43
- } from "./chunk-KUG52IAP.js";
44
- import {
45
- extractCustomId
46
- } from "./chunk-M2EJHDJP.js";
48
+ asOptionalPositiveFiniteNumber
49
+ } from "./chunk-U6VC4MU4.js";
47
50
  import {
48
51
  asTrimmedString
49
52
  } from "./chunk-3EUW3WEO.js";
50
- import {
51
- asOptionalPositiveFiniteNumber
52
- } from "./chunk-U6VC4MU4.js";
53
53
  import {
54
54
  asOptionalTrimmedString
55
55
  } from "./chunk-G3SUCT4W.js";