nolo-cli 0.92.0-alpha.1 → 0.92.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/README.md +1 -1
  2. package/{_executeModel-SKXPDRHT.js → _executeModel-SCZL7EYW.js} +63 -61
  3. package/{action-5DATYWOM.js → action-3ZOODRBC.js} +11 -11
  4. package/{addContentAction-5OLTVWIE.js → addContentAction-IJHG2ZV7.js} +9 -9
  5. package/{addDialogAgentAction-BRGMORV4.js → addDialogAgentAction-IGFS2UBX.js} +11 -11
  6. package/{agentDeleteCommand-KIJCEDIQ.js → agentDeleteCommand-CTZYXUBY.js} +45 -43
  7. package/{agentEmailCommands-KVJQBG6I.js → agentEmailCommands-M4RKRMV5.js} +84 -79
  8. package/{agentGrantCommands-YW6PQAQ2.js → agentGrantCommands-M3XFO6EN.js} +2 -2
  9. package/{agentListCommands-S2WK34WE.js → agentListCommands-QWBMMYNO.js} +74 -81
  10. package/{agentMachineCommands-ESEVMWBG.js → agentMachineCommands-CFGNRGKC.js} +39 -37
  11. package/{agentProviderCommands-I26OTLEQ.js → agentProviderCommands-TWB6E5WD.js} +1 -1
  12. package/{agentPullCommand-GLOOXJ2E.js → agentPullCommand-HF4A42D4.js} +3 -3
  13. package/agentRecordCommands-ZTUVMJOZ.js +131 -0
  14. package/{agentRunCommand-PQ2D3MTU.js → agentRunCommand-NARA7GSD.js} +82 -76
  15. package/{agentRunControl-XLGD3UZ5.js → agentRunControl-AVJR4JW4.js} +2 -2
  16. package/{agentRuntimeLocal-ZLZCZO3C.js → agentRuntimeLocal-OKYH7XBH.js} +40 -34
  17. package/{agentSlice-JF7MQKXG.js → agentSlice-L6BEWT2Q.js} +11 -11
  18. package/{appDeleteCommands-KHSC6H42.js → appDeleteCommands-2D2R56YU.js} +39 -37
  19. package/{appDeployCommands-KCCU76AG.js → appDeployCommands-R5PAA5YI.js} +39 -37
  20. package/{appDeployStatusCommands-UBGX7463.js → appDeployStatusCommands-VHTBTS3W.js} +39 -37
  21. package/{appGetCommands-CGVGNM5J.js → appGetCommands-G35QG2QG.js} +39 -37
  22. package/{appListCommands-JUVQUOGH.js → appListCommands-YQ2PKESX.js} +39 -37
  23. package/{authCommand-ETL233F2.js → authCommand-W6I6GD3F.js} +115 -23
  24. package/{authCommands-RGOGCPP6.js → authCommands-GBIFZWD3.js} +5 -5
  25. package/{builtinSkillRegistry-PJU2R6ST.js → builtinSkillRegistry-XG6RUDWO.js} +9 -8
  26. package/{chatQueueReduxAdapter-NIJ6XFDN.js → chatQueueReduxAdapter-OINFB5SN.js} +29 -29
  27. package/{chromeCommands-FZYAU75D.js → chromeCommands-K27J4OVZ.js} +124 -28
  28. package/{chromeOpsCommands-62P2Q2YB.js → chromeOpsCommands-IXRLN57H.js} +4 -3
  29. package/{chunk-UYJKSCJ4.js → chunk-27ONFIEY.js} +22 -4
  30. package/{chunk-2HBFQM4C.js → chunk-2QX2MTNK.js} +25 -6
  31. package/{chunk-JEDZAO7L.js → chunk-2SYTUTLI.js} +257 -37
  32. package/{chunk-QTV7ZYBE.js → chunk-3BXNTXYI.js} +310 -136
  33. package/{chunk-6R425QS6.js → chunk-3IYMTWYZ.js} +22 -22
  34. package/{chunk-NTW5GWDM.js → chunk-3VNWWVKB.js} +2 -0
  35. package/{chunk-PNBZBDRM.js → chunk-4DPP773Q.js} +2 -2
  36. package/chunk-5J3PYNUP.js +255 -0
  37. package/{chunk-JPGCXHNM.js → chunk-5OA5HMTL.js} +1 -1
  38. package/{chunk-CDS4FQMP.js → chunk-5RUECWE2.js} +165 -15
  39. package/{chunk-DWUCB2A3.js → chunk-62IL3KQV.js} +4 -34
  40. package/{chunk-ZIK2FIX4.js → chunk-66MWFK6R.js} +9 -9
  41. package/{chunk-6YTOJY35.js → chunk-6D2JFXLY.js} +35 -0
  42. package/{chunk-3BMYXEUW.js → chunk-6O4IK4V2.js} +1 -1
  43. package/{chunk-NNJ4EAEH.js → chunk-6PPDYAMH.js} +7517 -1091
  44. package/{chunk-I2MX6JST.js → chunk-7KVZ5LDQ.js} +2 -2
  45. package/{chunk-Q554LLSI.js → chunk-AUDNYVRC.js} +1 -1
  46. package/{chunk-UKWGR5SS.js → chunk-AUXHZ2M5.js} +186 -397
  47. package/{chunk-TLPTMSX3.js → chunk-AVKLJP6J.js} +94 -94
  48. package/{chunk-5NHGLCPL.js → chunk-AZRHIN5B.js} +1 -1
  49. package/{chunk-5LRIZC2W.js → chunk-B7ANJQWZ.js} +2 -2
  50. package/{chunk-3QC3NGWZ.js → chunk-BDHW7EBD.js} +4 -4
  51. package/{chunk-HNUNYXYB.js → chunk-BJUDYFV5.js} +10 -2
  52. package/chunk-BMQ2MJUK.js +153 -0
  53. package/{chunk-3JIXYIXV.js → chunk-BNGW5ASC.js} +12 -2
  54. package/{chunk-2D6QK26I.js → chunk-BPCPBG2O.js} +16 -16
  55. package/{chunk-SATOEEL6.js → chunk-BTSYHR7J.js} +4 -4
  56. package/{chunk-4B3TDK3S.js → chunk-CCOXTK3I.js} +30 -7
  57. package/{chunk-LS2ZANRJ.js → chunk-CTUQJVQM.js} +1 -1
  58. package/{chunk-43WRG6QQ.js → chunk-CUBJUVQS.js} +13 -13
  59. package/chunk-CYSYR67N.js +93 -0
  60. package/{chunk-PIOIPOSY.js → chunk-D76D3RTR.js} +2 -2
  61. package/{chunk-HQCSU3DI.js → chunk-DCLMZ5TX.js} +4 -4
  62. package/{chunk-UT5NALV3.js → chunk-EFZKILX6.js} +4 -4
  63. package/{chunk-2L3O7RDP.js → chunk-EMBK4B7D.js} +9 -4
  64. package/{chunk-HVURBGF3.js → chunk-ESRMFY7G.js} +2 -2
  65. package/{chunk-ABQYVJBJ.js → chunk-ETZWFV6M.js} +1 -1
  66. package/{chunk-TRV2MIDW.js → chunk-EXAJ6DCR.js} +1 -0
  67. package/{chunk-RAYTIPJ5.js → chunk-F64B2W3R.js} +110 -34
  68. package/{chunk-S6SP3GWJ.js → chunk-FIZ5TAVE.js} +1 -1
  69. package/{chunk-MOH3ETXO.js → chunk-GA77XY7N.js} +542 -447
  70. package/{chunk-2WHQZTB7.js → chunk-GMVELWJG.js} +3 -3
  71. package/chunk-GMZLP5DV.js +82 -0
  72. package/{chunk-CJCJF5XB.js → chunk-H6A6X4EK.js} +36 -3
  73. package/{chunk-ONXOABJR.js → chunk-HNGRBWYF.js} +3 -0
  74. package/{chunk-46TSVHGZ.js → chunk-HNRASX3X.js} +8 -8
  75. package/{chunk-CPH3W5A7.js → chunk-I3TQJXQ7.js} +94 -3
  76. package/{chunk-TZB6Y4OD.js → chunk-IBQ6NJI4.js} +34 -20
  77. package/{chunk-IP2RNQU3.js → chunk-LNPYTNMG.js} +9 -5
  78. package/{chunk-TLO2X5C6.js → chunk-LNUOUGIY.js} +1 -1
  79. package/{chunk-GII32WZW.js → chunk-M2EJHDJP.js} +3 -0
  80. package/{chunk-G3V74DVM.js → chunk-MV26343G.js} +75 -18
  81. package/{chunk-7S4YWN7P.js → chunk-MX574M24.js} +1 -1
  82. package/{chunk-U7HSBX3I.js → chunk-O26PCYLS.js} +80 -13
  83. package/chunk-OCZKATRC.js +129 -0
  84. package/{chunk-YNI45YOE.js → chunk-P4U2QMT5.js} +65 -37
  85. package/chunk-P6GMCCAT.js +870 -0
  86. package/{chunk-YQPWX5EE.js → chunk-PEXU23PJ.js} +23 -76
  87. package/{chunk-7GDFU22A.js → chunk-PHINMJJZ.js} +983 -226
  88. package/{chunk-YC2MP5NP.js → chunk-Q3SKC2TQ.js} +7 -7
  89. package/{chunk-NU2SOATM.js → chunk-Q7JFHTQT.js} +3 -3
  90. package/{chunk-YNNVVLMV.js → chunk-QALRKMHF.js} +11 -10
  91. package/{chunk-T67757YH.js → chunk-QDSINZM3.js} +1 -1
  92. package/{chunk-TUEPUNFO.js → chunk-QJLEMM2V.js} +1 -1
  93. package/{chunk-FEAPBZQW.js → chunk-QL32RJFG.js} +98 -22
  94. package/{chunk-EONDQISD.js → chunk-QMQBSKUP.js} +886 -154
  95. package/{chunk-BJ7HBUL2.js → chunk-QZYL5UNG.js} +1003 -1041
  96. package/{chunk-YDEMAQEY.js → chunk-R4SQ3LGW.js} +1 -1
  97. package/{chunk-TSD5BVVP.js → chunk-RESDFLXS.js} +13 -13
  98. package/{chunk-ZKYHTHNE.js → chunk-S5XGT6GB.js} +5 -3
  99. package/{chunk-SAFZABH7.js → chunk-SV5IJK6K.js} +1 -1
  100. package/{chunk-W6MEYAGX.js → chunk-TC6TTNZW.js} +45 -45
  101. package/{chunk-BYMV6QZG.js → chunk-TNIX77YM.js} +4 -0
  102. package/{chunk-S46FYEWL.js → chunk-U7ZDIW37.js} +1 -1
  103. package/chunk-UNYJU5L6.js +780 -0
  104. package/{chunk-VUHXTHIK.js → chunk-V2AB7ULS.js} +5 -5
  105. package/{chunk-QFMFJZLO.js → chunk-V7E4PXQD.js} +1 -1
  106. package/chunk-VJVNU77E.js +83 -0
  107. package/{chunk-6D6VBVEW.js → chunk-VPFEPRME.js} +9 -9
  108. package/{chunk-EKXNV6EM.js → chunk-X5VY2LEV.js} +2 -2
  109. package/{chunk-O6OSWFZQ.js → chunk-XUWRURDF.js} +6 -0
  110. package/{chunk-Q67DOFOO.js → chunk-Y3PMXGLH.js} +2 -0
  111. package/{chunk-IMCXPAQV.js → chunk-YFIUVDQY.js} +6 -83
  112. package/{chunk-FZGV4FGK.js → chunk-YRRASA5Q.js} +268 -143
  113. package/{chunk-SH43IESU.js → chunk-YUNJN43V.js} +44 -9
  114. package/{chunk-2F7RJC6L.js → chunk-ZOVKKMF6.js} +1 -1
  115. package/commandRegistry-T4PY3XBY.js +833 -0
  116. package/{contentThunks-N7MGBLZJ.js → contentThunks-7SBK3Y7B.js} +29 -29
  117. package/{cooldownCommands-BSCH2W7P.js → cooldownCommands-ZLEPIB4A.js} +2 -2
  118. package/{createAgentAutomationAction-DNOR2HPB.js → createAgentAutomationAction-NPD23L7Y.js} +29 -29
  119. package/{createDialogAction-Y5CTGDHJ.js → createDialogAction-2JVPW2WV.js} +33 -32
  120. package/{createPageAction-HIQCWUNG.js → createPageAction-UUIPRGHK.js} +35 -35
  121. package/{dbSlice-NP52Y5TF.js → dbSlice-HFPIJT5P.js} +8 -8
  122. package/{deleteFile-YG6QMJLU.js → deleteFile-UEAD5A5Z.js} +3 -3
  123. package/{dialogCommands-RDCQ2IFS.js → dialogCommands-7JXIBGPD.js} +42 -40
  124. package/{dialogSlice-CCADNU4F.js → dialogSlice-Q2QUTMHK.js} +35 -29
  125. package/{dist-VODFSGNG.js → dist-NJC2W7I4.js} +61 -54
  126. package/{docCreateCommands-7BQO7QFJ.js → docCreateCommands-2JDSCRGB.js} +41 -39
  127. package/{docDeleteCommands-AXWDDTVX.js → docDeleteCommands-Y4XRBWKE.js} +41 -39
  128. package/{docReadCommands-NMDWZKZW.js → docReadCommands-35FY3PYU.js} +40 -38
  129. package/{docStore-RSIMI5PS.js → docStore-FWQIXF33.js} +9 -9
  130. package/{docUpdateCommands-KFIRA6WM.js → docUpdateCommands-MT7YKSP7.js} +41 -39
  131. package/{fetchMessages-EIU7UFFK.js → fetchMessages-67MEFPZR.js} +2 -2
  132. package/{getPricing-SLZYHJXY.js → getPricing-NMMFT3YI.js} +3 -3
  133. package/{handleSendMessageAction-ZIABBL3A.js → handleSendMessageAction-W33QLNXQ.js} +85 -82
  134. package/index.js +87 -884
  135. package/{localDialogRead-BTFJ4V2I.js → localDialogRead-EBRS242U.js} +2 -2
  136. package/{localRuntimeAuthority-6IR6BBXE.js → localRuntimeAuthority-5W6IJRAD.js} +6 -6
  137. package/{localRuntimeDb-SYQGUF4U.js → localRuntimeDb-3LRMNLCM.js} +1 -1
  138. package/{machineCommands-H6TGKZYD.js → machineCommands-HLEUUEKS.js} +77 -72
  139. package/{machineWsRunDispatch-YU4MGUB5.js → machineWsRunDispatch-DWBXW7XY.js} +75 -70
  140. package/{memberThunks-XJFHFZ5M.js → memberThunks-SKFZ37VS.js} +9 -9
  141. package/{models-WYXEJZAX.js → models-ZPU5EDF4.js} +2 -2
  142. package/oauthTokenStore-ITEB663N.js +23 -0
  143. package/{offlineMarxistsAgentCommand-JEWCIAWM.js → offlineMarxistsAgentCommand-HGXZV4XJ.js} +1 -1
  144. package/package.json +1 -1
  145. package/pdf-U6KSUEZZ.js +26435 -0
  146. package/processSpawn-SOAV3FEV.js +11 -0
  147. package/profileConfig-ZGOFORWV.js +43 -0
  148. package/{providerPresetApply-RWISXOW7.js → providerPresetApply-XTEXOH7X.js} +7 -7
  149. package/{providerRegistry-5KY7YV6K.js → providerRegistry-ADYDSLKR.js} +7 -7
  150. package/{read-KFAALANF.js → read-IEJLLUXY.js} +5 -5
  151. package/{readDocTool-XNMCT64I.js → readDocTool-4SPYCP2Y.js} +5 -3
  152. package/{readlineWorkspace-JTU5LTZI.js → readlineWorkspace-32ILQXZJ.js} +2398 -2019
  153. package/{removeDialogAgentAction-X3IS7JNU.js → removeDialogAgentAction-LILXTOQY.js} +14 -14
  154. package/{runAgentClientLoop-5TPQBYB6.js → runAgentClientLoop-MSCR5Y3E.js} +57 -56
  155. package/{runtimeDoctorCommands-X6WDBEQX.js → runtimeDoctorCommands-3USD722U.js} +3 -3
  156. package/runtimeModeArgs-2Y7BALTO.js +31 -0
  157. package/{setDialogExtraReferencesAction-QTV3ZJNH.js → setDialogExtraReferencesAction-LVNHLNT5.js} +10 -10
  158. package/{setPrimaryDialogAgentAction-EUUISNQ2.js → setPrimaryDialogAgentAction-DCKO5NTW.js} +14 -14
  159. package/{settingSlice-UMATY3PD.js → settingSlice-CNE75ISY.js} +10 -10
  160. package/{spaceCommands-PR6QHSEG.js → spaceCommands-UYWX63IP.js} +41 -39
  161. package/{streamAgentChatTurn-TXMNTXML.js → streamAgentChatTurn-73OAEDOJ.js} +146 -85
  162. package/{switchDialogAgentAction-HWFDQNY5.js → switchDialogAgentAction-JSYUQ5CG.js} +11 -11
  163. package/{tableCommands-O6NWHFKV.js → tableCommands-G7RV3RU3.js} +4 -4
  164. package/{toolApiClient-7PSIFQPJ.js → toolApiClient-INIQCPGY.js} +3 -3
  165. package/{tools-GEVUKUVY.js → tools-6IUC3EFI.js} +51 -50
  166. package/{tuiSummaryLlmCaller-PKZYGY3B.js → tuiSummaryLlmCaller-RVWN63CP.js} +16 -15
  167. package/{updateCommands-2M74UL7P.js → updateCommands-4EHDLF5J.js} +3 -3
  168. package/{updateDialogTitleAction-MFR3UGL5.js → updateDialogTitleAction-KCAY2OZF.js} +32 -32
  169. package/agentRecordCommands-TTYG2GYM.js +0 -126
  170. package/chunk-DMFLXNFM.js +0 -79
  171. package/chunk-Q5FJJ6XI.js +0 -103
  172. package/chunk-S7Z2HMCN.js +0 -25
  173. package/{chunk-VMFTFOWF.js → chunk-3AH7LNUB.js} +7 -7
  174. package/{chunk-X7HHHIOZ.js → chunk-Y6ROFCZO.js} +0 -0
  175. package/{db-WK5MDZVN.js → db-VQSAOWAO.js} +1 -1
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  toolRegistry
3
- } from "./chunk-MOH3ETXO.js";
3
+ } from "./chunk-GA77XY7N.js";
4
4
  import {
5
5
  i18n_default
6
- } from "./chunk-NNJ4EAEH.js";
6
+ } from "./chunk-6PPDYAMH.js";
7
7
  import {
8
8
  canonicalizeToolNames
9
- } from "./chunk-O6OSWFZQ.js";
9
+ } from "./chunk-XUWRURDF.js";
10
10
  import {
11
11
  isNoloHostedProvider
12
- } from "./chunk-Q67DOFOO.js";
12
+ } from "./chunk-Y3PMXGLH.js";
13
13
  import {
14
14
  asTrimmedLowercaseString
15
15
  } from "./chunk-QSJ3HFEF.js";
@@ -17,94 +17,6 @@ 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
-
108
20
  // packages/ai/tools/toolSchemaCompatibility.ts
109
21
  var COMPOSITION_KEYS = ["anyOf", "oneOf", "allOf"];
110
22
  var LIMITED_JSON_SCHEMA_PROVIDERS = /* @__PURE__ */ new Set([
@@ -268,8 +180,96 @@ var prepareTools = (toolNames, options) => {
268
180
  return prepared.slice();
269
181
  };
270
182
 
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,
272
273
  shouldInlineImageUrlsForAgent,
273
- inlineImageUrlsForCustomProvider,
274
- prepareTools
274
+ inlineImageUrlsForCustomProvider
275
275
  };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  generatePkcePair,
3
3
  startCallbackServer
4
- } from "./chunk-U7HSBX3I.js";
4
+ } from "./chunk-O26PCYLS.js";
5
5
  import {
6
6
  toErrorMessage
7
7
  } from "./chunk-HNMXYYJR.js";
@@ -4,11 +4,11 @@ import {
4
4
  import {
5
5
  patch,
6
6
  read
7
- } from "./chunk-YNNVVLMV.js";
7
+ } from "./chunk-QALRKMHF.js";
8
8
  import {
9
9
  DEVICE_LOCAL_OWNER_ID,
10
10
  isDeviceLocalSpaceBody
11
- } from "./chunk-UKWGR5SS.js";
11
+ } from "./chunk-AUXHZ2M5.js";
12
12
  import {
13
13
  selectIdentityUserId
14
14
  } from "./chunk-SEJ5OS6F.js";
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  readDbRecord,
3
3
  writeAgentRecord
4
- } from "./chunk-TZB6Y4OD.js";
4
+ } from "./chunk-IBQ6NJI4.js";
5
5
  import {
6
6
  buildSkillSummaryMarker
7
7
  } from "./chunk-VF4K2QE6.js";
8
+ import {
9
+ createSpaceKey
10
+ } from "./chunk-UAD2WT54.js";
8
11
  import {
9
12
  parseUserIdFromAuthToken,
10
13
  readOption,
11
14
  resolveAuthToken,
12
15
  resolveServerUrl
13
16
  } from "./chunk-A7GB5UGH.js";
14
- import {
15
- createSpaceKey
16
- } from "./chunk-UAD2WT54.js";
17
17
  import {
18
18
  asTrimmedLowercaseString
19
19
  } from "./chunk-QSJ3HFEF.js";
@@ -153,6 +153,13 @@ function slateToSimplifiedMarkdown(nodes, options = {}) {
153
153
  }
154
154
 
155
155
  // packages/ai/tools/readDocTool.ts
156
+ var resolvePageReadMarkdown = (pageData) => {
157
+ const slateData = pageData.slateData;
158
+ if (Array.isArray(slateData) && slateData.length > 0) {
159
+ return slateToSimplifiedMarkdown(slateData);
160
+ }
161
+ return typeof pageData.content === "string" ? pageData.content : "";
162
+ };
156
163
  var readDocFunctionSchema = {
157
164
  name: "readDoc",
158
165
  description: [
@@ -175,7 +182,7 @@ var readPageFunctionSchema = {
175
182
  name: "readPage"
176
183
  };
177
184
  var buildReadDocResult = (pageData) => {
178
- const markdownContent = slateToSimplifiedMarkdown(pageData.slateData || []);
185
+ const markdownContent = resolvePageReadMarkdown(pageData);
179
186
  const rawData = {
180
187
  success: true,
181
188
  id: pageData.dbKey,
@@ -199,7 +206,7 @@ async function readDocFunc(args, thunkApi) {
199
206
  throw new Error(`\u65E0\u6548\u7684\u9875\u9762 ID: ${id}\u3002\u9875\u9762 ID \u901A\u5E38\u4EE5 "page-" \u5F00\u5934\u3002`);
200
207
  }
201
208
  try {
202
- const { readAction } = await import("./read-KFAALANF.js");
209
+ const { readAction } = await import("./read-IEJLLUXY.js");
203
210
  const pageData = await readAction({ dbKey: id }, thunkApi);
204
211
  if (!pageData) {
205
212
  throw new Error(`\u672A\u627E\u5230 ID \u4E3A ${id} \u7684\u9875\u9762\u3002`);
@@ -213,6 +220,7 @@ var readPageFunc = readDocFunc;
213
220
 
214
221
  export {
215
222
  slateToSimplifiedMarkdown,
223
+ resolvePageReadMarkdown,
216
224
  readDocFunctionSchema,
217
225
  readPageFunctionSchema,
218
226
  buildReadDocResult,
@@ -0,0 +1,153 @@
1
+ import {
2
+ isRecord
3
+ } from "./chunk-KUG52IAP.js";
4
+
5
+ // packages/core/chat/validationUrl.ts
6
+ function safeUrl(raw) {
7
+ if (typeof raw !== "string") return void 0;
8
+ const trimmed = raw.trim();
9
+ if (!/^https?:\/\//i.test(trimmed)) return void 0;
10
+ try {
11
+ const parsed = new URL(trimmed);
12
+ if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
13
+ return void 0;
14
+ }
15
+ return parsed.href;
16
+ } catch {
17
+ return void 0;
18
+ }
19
+ }
20
+ function scanValidationDetails(details) {
21
+ if (!Array.isArray(details)) return {};
22
+ let url;
23
+ let text;
24
+ let learnMoreUrl;
25
+ for (const detail of details) {
26
+ if (url && learnMoreUrl) break;
27
+ if (!isRecord(detail)) continue;
28
+ const metadata = isRecord(detail.metadata) ? detail.metadata : void 0;
29
+ if (metadata) {
30
+ url = url ?? safeUrl(metadata.validation_url);
31
+ text = text ?? (typeof metadata.validation_url_link_text === "string" ? metadata.validation_url_link_text : void 0);
32
+ learnMoreUrl = learnMoreUrl ?? safeUrl(metadata.validation_learn_more_url);
33
+ }
34
+ const links = Array.isArray(detail.links) ? detail.links : [];
35
+ for (const link of links) {
36
+ if (!isRecord(link)) continue;
37
+ const linkUrl = safeUrl(link.url);
38
+ if (!linkUrl) continue;
39
+ const desc = typeof link.description === "string" ? link.description : "";
40
+ if (!url && /verify|continue/i.test(desc)) {
41
+ url = linkUrl;
42
+ text = text ?? desc;
43
+ } else if (!learnMoreUrl && /learn more/i.test(desc)) {
44
+ learnMoreUrl = linkUrl;
45
+ }
46
+ }
47
+ }
48
+ return { url, text, learnMoreUrl };
49
+ }
50
+ function unescapeJsonString(text) {
51
+ return text.replace(
52
+ /\\(["\\/nrtbf]|u[0-9a-fA-F]{4})/g,
53
+ (_match, esc) => {
54
+ switch (esc[0]) {
55
+ case "n":
56
+ return "\n";
57
+ case "r":
58
+ return "\r";
59
+ case "t":
60
+ return " ";
61
+ case "b":
62
+ return "\b";
63
+ case "f":
64
+ return "\f";
65
+ case "u":
66
+ return String.fromCharCode(parseInt(esc.slice(1), 16));
67
+ default:
68
+ return esc;
69
+ }
70
+ }
71
+ );
72
+ }
73
+ function sliceBalancedJsonObject(text) {
74
+ const start = text.indexOf("{");
75
+ if (start < 0) return void 0;
76
+ let depth = 0;
77
+ let inString = false;
78
+ let escaped = false;
79
+ for (let i = start; i < text.length; i += 1) {
80
+ const ch = text[i];
81
+ if (inString) {
82
+ if (escaped) escaped = false;
83
+ else if (ch === "\\") escaped = true;
84
+ else if (ch === '"') inString = false;
85
+ continue;
86
+ }
87
+ if (ch === '"') inString = true;
88
+ else if (ch === "{") depth += 1;
89
+ else if (ch === "}") {
90
+ depth -= 1;
91
+ if (depth === 0) return text.slice(start, i + 1);
92
+ }
93
+ }
94
+ return void 0;
95
+ }
96
+ function parseBalancedJson(text) {
97
+ const slice = sliceBalancedJsonObject(text);
98
+ if (!slice) return void 0;
99
+ try {
100
+ return JSON.parse(slice);
101
+ } catch {
102
+ return void 0;
103
+ }
104
+ }
105
+ function findValidationInParsed(parsed, depth = 0) {
106
+ if (depth > 3 || !isRecord(parsed)) return {};
107
+ const err = isRecord(parsed.error) ? parsed.error : parsed;
108
+ const fromDetails = scanValidationDetails(isRecord(err) ? err.details : void 0);
109
+ if (fromDetails.url) return fromDetails;
110
+ const nested = isRecord(err) ? err.message : void 0;
111
+ if (typeof nested === "string" && nested.trim().startsWith("{")) {
112
+ try {
113
+ const reparsed = findValidationInParsed(JSON.parse(nested), depth + 1);
114
+ if (reparsed.url) return reparsed;
115
+ } catch {
116
+ }
117
+ }
118
+ return {};
119
+ }
120
+ function stripTerminalControlChars(raw) {
121
+ return raw.replace(/[\u0000-\u001f\u007f]/g, "");
122
+ }
123
+ function regexValidationFallback(text) {
124
+ const urlMatch = text.match(
125
+ /validation_url[^h]{0,10}(https?:\/\/[^\s"\\]+)/i
126
+ );
127
+ if (!urlMatch) return {};
128
+ const textMatch = text.match(
129
+ /validation_url_link_text[^A-Za-z]{0,10}([^"\\\n]{1,60})/i
130
+ );
131
+ return {
132
+ // safeUrl first (normalizes C0 into %XX); fall back to stripping controls
133
+ // so a truncated-but-real link is still emitted rather than dropped.
134
+ url: safeUrl(urlMatch[1]) ?? stripTerminalControlChars(urlMatch[1]),
135
+ text: textMatch?.[1] ? stripTerminalControlChars(textMatch[1].trim()) || void 0 : void 0
136
+ };
137
+ }
138
+ function extractGoogleValidationLink(errorText) {
139
+ for (const candidate of [
140
+ parseBalancedJson(errorText),
141
+ parseBalancedJson(unescapeJsonString(errorText))
142
+ ]) {
143
+ if (candidate === void 0) continue;
144
+ const found = findValidationInParsed(candidate);
145
+ if (found.url) return found;
146
+ }
147
+ return regexValidationFallback(errorText);
148
+ }
149
+
150
+ export {
151
+ scanValidationDetails,
152
+ extractGoogleValidationLink
153
+ };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  publicAgentKey
3
- } from "./chunk-GII32WZW.js";
3
+ } from "./chunk-M2EJHDJP.js";
4
4
 
5
5
  // packages/core/builtinAgentCatalog.ts
6
6
  var BUILTIN_AGENT_CATALOG = [
@@ -122,7 +122,6 @@ var BUILTIN_AGENT_CATALOG = [
122
122
  id: "01GPT56LUNPB00000001VVVZHS",
123
123
  // 2026-09-23 换代:同一稳定 ID(用户收藏 / 别名 / Space 内容键不失效)升级为
124
124
  // 平台托管 GPT-6 Luna。注意与 retired 的区别:Luna 是在架商品原地换代,
125
- // 存量记录由 scripts/updatePlazaModels.ts 收敛到 catalog 当前 model。
126
125
  //
127
126
  // provider 必须是 "nolo"(平台托管命名空间),不能写上游名 "openai":
128
127
  // ① 计费按 calculatePrice(provider, model) 查价,平台价只注册在 nolo 下,
@@ -270,6 +269,9 @@ function builtinRuntimeFallbackEntries() {
270
269
  function builtinPlatformEntries() {
271
270
  return BUILTIN_AGENT_CATALOG.filter((e) => e.group === "builtin");
272
271
  }
272
+ function isRetiredCatalogEntry(entry2) {
273
+ return entry2?.lifecycle === "retired";
274
+ }
273
275
 
274
276
  // packages/core/builtinAgents.ts
275
277
  var entry = (id) => {
@@ -325,10 +327,18 @@ var isBuiltinPlatformAgentKey = (key) => typeof key === "string" && BUILTIN_PLAT
325
327
  export {
326
328
  builtinAgentCatalogEntryById,
327
329
  builtinRuntimeFallbackEntries,
330
+ isRetiredCatalogEntry,
328
331
  BUILTIN_NOLO_AGENT_KEY,
329
332
  BUILTIN_NOLO_AGENT_NAME,
330
333
  BUILTIN_NOLO_AGENT_MODEL,
331
334
  BUILTIN_PLATFORM_AGENT_KEYS,
335
+ PUBLIC_DEEPSEEK_V4_FLASH_AGENT_ID,
336
+ PUBLIC_DEEPSEEK_V4_PRO_AGENT_ID,
337
+ PUBLIC_GLM_53_FLASH_AGENT_ID,
338
+ PUBLIC_GPT_IMAGE_2_GENERATOR_AGENT_ID,
339
+ PUBLIC_GPT_IMAGE_2_EDITOR_AGENT_ID,
340
+ PUBLIC_GPT_IMAGE_2_CONTINUOUS_AGENT_ID,
341
+ PUBLIC_NANO_BANANA_2_LITE_AGENT_ID,
332
342
  isSystemBuiltinTrustedAgentKey,
333
343
  isBuiltinPlatformAgentKey
334
344
  };
@@ -9,29 +9,29 @@ import {
9
9
  initReactI18next,
10
10
  instance,
11
11
  toast
12
- } from "./chunk-NNJ4EAEH.js";
12
+ } from "./chunk-6PPDYAMH.js";
13
13
  import {
14
14
  require_date_fns
15
15
  } from "./chunk-M76ECQRD.js";
16
16
  import {
17
17
  require_react
18
18
  } from "./chunk-YDH3FDFQ.js";
19
- import {
20
- isSystemAdmin
21
- } from "./chunk-T67757YH.js";
22
- import {
23
- asRecordOrEmpty
24
- } from "./chunk-KX6YBIHG.js";
25
19
  import {
26
20
  UNCATEGORIZED_ID,
27
21
  addContentAction,
28
22
  checkSpaceMembership,
29
23
  localSpaceAuthorityPatchStamp
30
- } from "./chunk-5LRIZC2W.js";
24
+ } from "./chunk-B7ANJQWZ.js";
31
25
  import {
32
26
  createSpaceKey,
33
27
  normalizeSpaceId
34
28
  } from "./chunk-UAD2WT54.js";
29
+ import {
30
+ isSystemAdmin
31
+ } from "./chunk-QDSINZM3.js";
32
+ import {
33
+ asRecordOrEmpty
34
+ } from "./chunk-KX6YBIHG.js";
35
35
  import {
36
36
  patch,
37
37
  read,
@@ -41,7 +41,7 @@ import {
41
41
  uploadFileAction,
42
42
  upsertSSREntity,
43
43
  write
44
- } from "./chunk-YNNVVLMV.js";
44
+ } from "./chunk-QALRKMHF.js";
45
45
  import {
46
46
  SEPARATOR,
47
47
  asTrimmedNonEmptyStringArray,
@@ -53,13 +53,10 @@ import {
53
53
  rowKey,
54
54
  splitKey,
55
55
  ulid
56
- } from "./chunk-VMFTFOWF.js";
56
+ } from "./chunk-3AH7LNUB.js";
57
57
  import {
58
58
  asOptionalFiniteNumber
59
59
  } from "./chunk-WWC7I6TA.js";
60
- import {
61
- extractUserId
62
- } from "./chunk-GII32WZW.js";
63
60
  import {
64
61
  DEVICE_LOCAL_OWNER_ID,
65
62
  createAsyncThunk,
@@ -68,7 +65,7 @@ import {
68
65
  resolveReplicationServers,
69
66
  scheduleDeleteReplication,
70
67
  scheduleWriteReplication
71
- } from "./chunk-UKWGR5SS.js";
68
+ } from "./chunk-AUXHZ2M5.js";
72
69
  import {
73
70
  createClientLogger,
74
71
  isAbortError
@@ -82,6 +79,9 @@ import {
82
79
  import {
83
80
  isRecord
84
81
  } from "./chunk-KUG52IAP.js";
82
+ import {
83
+ extractUserId
84
+ } from "./chunk-M2EJHDJP.js";
85
85
  import {
86
86
  asTrimmedString
87
87
  } from "./chunk-3EUW3WEO.js";
@@ -1453,11 +1453,11 @@ var ENTITY_DELETE_STRATEGIES = {
1453
1453
  await dispatch(deleteTable({ dbKey: key })).unwrap();
1454
1454
  },
1455
1455
  file: async (key, { thunkAPI }) => {
1456
- const { deleteFileAction } = await import("./deleteFile-YG6QMJLU.js");
1456
+ const { deleteFileAction } = await import("./deleteFile-UEAD5A5Z.js");
1457
1457
  await deleteFileAction(key, thunkAPI);
1458
1458
  },
1459
1459
  image: async (key, { thunkAPI }) => {
1460
- const { deleteFileAction } = await import("./deleteFile-YG6QMJLU.js");
1460
+ const { deleteFileAction } = await import("./deleteFile-UEAD5A5Z.js");
1461
1461
  await deleteFileAction(key, thunkAPI);
1462
1462
  },
1463
1463
  agent: async (key, { dispatch, userId, sourceServerOrigin }) => {
@@ -1,13 +1,13 @@
1
- import {
2
- getActiveDialogKey
3
- } from "./chunk-6YTOJY35.js";
4
1
  import {
5
2
  require_date_fns
6
3
  } from "./chunk-M76ECQRD.js";
4
+ import {
5
+ getActiveDialogKey
6
+ } from "./chunk-6D2JFXLY.js";
7
7
  import {
8
8
  patch,
9
9
  selectById
10
- } from "./chunk-YNNVVLMV.js";
10
+ } from "./chunk-QALRKMHF.js";
11
11
  import {
12
12
  __toESM
13
13
  } from "./chunk-4VNS5WPM.js";