nolo-cli 0.212.0-alpha.1 → 0.222.0-alpha.2

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 (263) hide show
  1. package/README.md +3 -2
  2. package/{_executeModel-KE6MBNUJ.js → _executeModel-4GGQQHOB.js} +111 -82
  3. package/{accountResolver-4LKIHEKL.js → accountResolver-EK2S4PWF.js} +6 -6
  4. package/{action-DF5UYSJF.js → action-CK64LS6S.js} +12 -11
  5. package/{addContentAction-N2YC5IL3.js → addContentAction-GDHDOF4U.js} +18 -17
  6. package/{addDialogAgentAction-3NKVQCEC.js → addDialogAgentAction-CAKRU3ZT.js} +21 -20
  7. package/{agentDeleteCommand-NWK7VU4N.js → agentDeleteCommand-BPV2XZL7.js} +128 -119
  8. package/{agentEmailCommands-UZ4DHEX2.js → agentEmailCommands-EJOS75YL.js} +132 -124
  9. package/{agentFavoriteCommands-EDK743YA.js → agentFavoriteCommands-2LKGKSUD.js} +7 -8
  10. package/{agentGrantCommands-RQWK2TEV.js → agentGrantCommands-QQV4N4JW.js} +5 -5
  11. package/{agentListCommands-HE7L2A6L.js → agentListCommands-HIZODBF3.js} +196 -124
  12. package/{agentMachineCommands-6TE4MBMP.js → agentMachineCommands-ZMQ2CY7Y.js} +62 -53
  13. package/{agentProviderCommands-Q5O33MED.js → agentProviderCommands-WKJOAWBP.js} +5 -5
  14. package/{agentPullCommand-6EM3URVK.js → agentPullCommand-XN6ZPBUW.js} +7 -7
  15. package/agentRecordCommands-OMXVDLDX.js +176 -0
  16. package/agentRunCommand-CB34YWMV.js +206 -0
  17. package/{agentRunControl-OI3LOENH.js → agentRunControl-JNONH3RP.js} +30 -15
  18. package/{agentRuntimeLocal-HL526DNQ.js → agentRuntimeLocal-QZPFWMLG.js} +52 -45
  19. package/{agentSlice-TMYP2UEA.js → agentSlice-RD2CDU7T.js} +20 -19
  20. package/{appDeleteCommands-ZERW4AXY.js → appDeleteCommands-QCCFDIEQ.js} +61 -52
  21. package/{appDeployCommands-DUWSMYHL.js → appDeployCommands-V2T7TNMQ.js} +61 -52
  22. package/{appDeployStatusCommands-N2KIE4BF.js → appDeployStatusCommands-6PGH7ZCG.js} +61 -52
  23. package/{appGetCommands-YVR4NPVY.js → appGetCommands-3L7WWJA6.js} +61 -52
  24. package/{appListCommands-JS6HOHZS.js → appListCommands-ENJCK4PO.js} +61 -52
  25. package/{authCommand-FE2C3ZUM.js → authCommand-6V47SYGK.js} +29 -28
  26. package/{authCommands-HV3EAU3V.js → authCommands-GAJ3NIXO.js} +14 -13
  27. package/{builtinSkillRegistry-3YOIGEF6.js → builtinSkillRegistry-2ECA42FC.js} +11 -13
  28. package/{chromeCommands-REEAH4SX.js → chromeCommands-G5UDKVSV.js} +3 -3
  29. package/{chromeOpsCommands-HEN5AX2J.js → chromeOpsCommands-YKX2QX3A.js} +20 -10
  30. package/{chunk-DM6UMOEL.js → chunk-27PCUMJI.js} +2 -2
  31. package/chunk-2CI3ZFWD.js +97 -0
  32. package/{chunk-HIRC32DV.js → chunk-2GJKRKI6.js} +543 -29
  33. package/{chunk-SM3NSZJV.js → chunk-2UCBGYO4.js} +20 -1
  34. package/{chunk-PYRUW7XN.js → chunk-2VUZSVAS.js} +136 -54
  35. package/chunk-2YGBI2XB.js +30 -0
  36. package/chunk-2ZKFCIJJ.js +13 -0
  37. package/{chunk-CJRONOYL.js → chunk-34J5K2YA.js} +19 -75
  38. package/{chunk-LOEO7LRC.js → chunk-3IK6ILVW.js} +4 -1
  39. package/{chunk-CTPXME7U.js → chunk-3LMUPOHG.js} +29 -6
  40. package/chunk-44X52WOJ.js +1621 -0
  41. package/{chunk-6VLJ6YA7.js → chunk-4DESLZTK.js} +9 -9
  42. package/{chunk-MYOH447Z.js → chunk-4JVNURX4.js} +1 -1
  43. package/chunk-5CHGAKRT.js +364 -0
  44. package/{chunk-YDH3FDFQ.js → chunk-5FUN7EG4.js} +1 -1
  45. package/{chunk-LKDF3ATR.js → chunk-5RKUPJYL.js} +1 -1
  46. package/{chunk-ZC3CMUKU.js → chunk-6OVNSQHN.js} +84 -2
  47. package/{chunk-IF45XG7K.js → chunk-6WU5572L.js} +40 -24
  48. package/{chunk-OHNELDTO.js → chunk-7EEZJ6BS.js} +11 -152
  49. package/{chunk-Y6ORVLSS.js → chunk-7ET2U67U.js} +1 -1
  50. package/{chunk-G7MLNNEX.js → chunk-7JLY4WYF.js} +5 -5
  51. package/{chunk-P5L7CXOC.js → chunk-7Z6EW7AH.js} +3 -2
  52. package/{chunk-IIQ6JGRI.js → chunk-AD5EWDFD.js} +2 -2
  53. package/{chunk-WXYLV624.js → chunk-AIHYNKGV.js} +4 -4
  54. package/{chunk-HPFCI4SK.js → chunk-AK5O76CC.js} +3 -3
  55. package/{chunk-Y63ZSOR6.js → chunk-AL3TYDIF.js} +1 -1
  56. package/{chunk-PJNFNEJE.js → chunk-AMEOV5VZ.js} +59 -13
  57. package/chunk-AN74ON4G.js +675 -0
  58. package/{chunk-HRMJUN5J.js → chunk-AQZ6BMRK.js} +1 -1
  59. package/{chunk-CQ46IRNN.js → chunk-B4GOW4MT.js} +445 -201
  60. package/{chunk-4KB6WQUL.js → chunk-BGP2EDFG.js} +1 -1
  61. package/{chunk-NBTY7YJF.js → chunk-BR3GT6MR.js} +1 -0
  62. package/{chunk-7RFNTILS.js → chunk-BUDVRYES.js} +2 -2
  63. package/{chunk-D2MDMY2M.js → chunk-BV3FLP2L.js} +47 -1
  64. package/{chunk-25JZEIXN.js → chunk-C4VAR65S.js} +92 -150
  65. package/{chunk-AVTVGMDY.js → chunk-C4WTX5TU.js} +2 -2
  66. package/{chunk-ZL5RAEEB.js → chunk-CIRB724Q.js} +1 -1
  67. package/{chunk-F6UUQOG6.js → chunk-CKT6QUE2.js} +4 -4
  68. package/{chunk-M6RL5JCD.js → chunk-CMZ3Z5PT.js} +14 -14
  69. package/{secretCommands-4QS3HCA2.js → chunk-D726I5AZ.js} +191 -16
  70. package/{chunk-INSBKSBB.js → chunk-DNKTQ3IN.js} +4 -4
  71. package/chunk-DVQH4BTR.js +1137 -0
  72. package/{chunk-SOHTHFV2.js → chunk-DWX2HEVC.js} +91 -132
  73. package/{chunk-NOMIGOST.js → chunk-EIAI3PPH.js} +116 -124
  74. package/chunk-EUCFKKDM.js +247 -0
  75. package/chunk-EWQ3HGNZ.js +90 -0
  76. package/{chunk-RPQXPZZF.js → chunk-F3GRJO4Z.js} +908 -13
  77. package/{chunk-GSQNH63I.js → chunk-FIYSMXHY.js} +3 -19
  78. package/{chunk-KSTEXKL6.js → chunk-FJ23FZXF.js} +76 -31
  79. package/{chunk-INN4LTAJ.js → chunk-FJK526XH.js} +2 -2
  80. package/chunk-FS2XP5D7.js +142 -0
  81. package/{chunk-QT6PKHYJ.js → chunk-FYF2TONJ.js} +5 -5
  82. package/{chunk-OXME3PEE.js → chunk-GBWGPTA7.js} +2 -1
  83. package/{chunk-RU4SD66C.js → chunk-GYVCJABP.js} +30 -254
  84. package/{chunk-YUXQAVRD.js → chunk-HOCHUZQ7.js} +257 -90
  85. package/{chunk-Y2WUYX4I.js → chunk-HXER7YJF.js} +4 -4
  86. package/chunk-HYIETXA6.js +99 -0
  87. package/{chunk-H2TJUNCH.js → chunk-I4EADJ4P.js} +6 -6
  88. package/{chunk-TCZHTTUU.js → chunk-I7WBYGBP.js} +8 -8
  89. package/{chunk-5RYBGBQH.js → chunk-IILMY4W4.js} +14 -9
  90. package/chunk-JA3ICVJY.js +271 -0
  91. package/{chunk-ZRSNONOB.js → chunk-JWXITTQB.js} +8 -3
  92. package/{chunk-JNKSDZFS.js → chunk-KEN3N2TN.js} +310 -66
  93. package/{chunk-LEC5ALIN.js → chunk-KEPOVMF4.js} +1 -1
  94. package/{chunk-UHJGXRJ4.js → chunk-KQSYAIZR.js} +3 -3
  95. package/{chunk-4VJAC32I.js → chunk-L5I543VB.js} +3 -2
  96. package/chunk-LKA64WH4.js +227 -0
  97. package/{chunk-6OQUPIQF.js → chunk-LVL6GFCM.js} +4 -4
  98. package/{chunk-UTV2AYEG.js → chunk-MAIITKBT.js} +2 -2
  99. package/chunk-MBG66ZBH.js +226 -0
  100. package/{chunk-YUA6OAH5.js → chunk-MDLS23JK.js} +2 -2
  101. package/{chunk-VL5KOY2C.js → chunk-MK2Q7ZJD.js} +67 -5
  102. package/{chunk-B7NJ3T4A.js → chunk-MS4NZNKI.js} +10 -10
  103. package/{chunk-3AKFVZ2I.js → chunk-MYHNBEXD.js} +3 -3
  104. package/{chunk-VZKUKCA6.js → chunk-MZLE5HQ3.js} +3673 -241
  105. package/{chunk-AZMYUSVF.js → chunk-N5Z2V73W.js} +1 -1
  106. package/chunk-NIZ2BXFD.js +526 -0
  107. package/{chunk-YPD3VJZW.js → chunk-NWP2OYOX.js} +20 -20
  108. package/{chunk-3FOQHGHN.js → chunk-O6J3OTOP.js} +4 -4
  109. package/{chunk-3RQVYR4B.js → chunk-OB6DVWPF.js} +197 -65
  110. package/{chunk-YWSEPJ7C.js → chunk-OBWT45ZU.js} +3 -3
  111. package/{chunk-5AQR3DGV.js → chunk-ODJ7BVSI.js} +80 -11
  112. package/{chunk-XJWWBO34.js → chunk-OJKUU3LP.js} +5 -7
  113. package/{chunk-GNDJKC4B.js → chunk-ON37YXGX.js} +29 -29
  114. package/{chunk-D5RCRX4A.js → chunk-P5ZJRTCH.js} +9415 -5169
  115. package/{chunk-6XIE5ZGI.js → chunk-PDCV7P5W.js} +1 -1
  116. package/{chunk-EZFQ6XRV.js → chunk-PJCIP64Z.js} +861 -59
  117. package/{chunk-GPO7FCEZ.js → chunk-PJVKMGPZ.js} +1222 -1719
  118. package/{chunk-CKAHAVMK.js → chunk-PPJYZRSQ.js} +40 -26
  119. package/chunk-QHEN7NZ7.js +46 -0
  120. package/{chunk-4KH4J3G5.js → chunk-QNWG52I4.js} +19 -7
  121. package/{chunk-YGILMZ7N.js → chunk-QVBXJNZ2.js} +1 -1
  122. package/chunk-RDH5CQ4T.js +1382 -0
  123. package/{chunk-C6KNNXWU.js → chunk-RGQ4UUWZ.js} +25 -2
  124. package/{chunk-OWYYDMGJ.js → chunk-S2NTVGA2.js} +4 -2
  125. package/{chunk-KC4XDTT3.js → chunk-SOF4OWDM.js} +6 -4
  126. package/{chunk-IAPCBNEE.js → chunk-SQYIK6HO.js} +1 -1
  127. package/{chunk-22CIEBYO.js → chunk-SVT62ULE.js} +50 -48
  128. package/{chunk-KIM6CLW5.js → chunk-SY3C4SQ7.js} +42 -15
  129. package/{chunk-JY5NGFFH.js → chunk-SYTHYBMI.js} +5 -5
  130. package/{chunk-6NSSLV67.js → chunk-T6DXNI6Z.js} +52 -50
  131. package/chunk-TLE77UJ5.js +230 -0
  132. package/{chunk-4VNS5WPM.js → chunk-U67V476Y.js} +1 -8
  133. package/{chunk-F7CI2ZC5.js → chunk-UAIHKQIA.js} +2 -1
  134. package/{chunk-MMNYUVLW.js → chunk-UB3D4TRQ.js} +11 -77
  135. package/{chunk-WPORQFYN.js → chunk-UVLYNWIE.js} +2 -2
  136. package/{chunk-YOIW77S2.js → chunk-UYOICCYG.js} +29 -19
  137. package/{chunk-4I7ERB7F.js → chunk-VREDDN25.js} +1 -1
  138. package/{chunk-JIT6FSXJ.js → chunk-WAE3GFCJ.js} +3 -3
  139. package/{chunk-IJXYFTV7.js → chunk-WI67URFP.js} +20 -20
  140. package/{chunk-7OCO4TDT.js → chunk-WJVYAO6P.js} +1 -1
  141. package/{chunk-T43B7LB2.js → chunk-WKGQSYTB.js} +1 -1
  142. package/{chunk-YJMRHHGY.js → chunk-WUUH4LWZ.js} +60 -30
  143. package/{chunk-PDGKOTO7.js → chunk-X7UF53VA.js} +33 -22
  144. package/{chunk-TY3TIUJK.js → chunk-XI2BWJM5.js} +65 -0
  145. package/{chunk-OOF4UPC5.js → chunk-XWVCYUUU.js} +16 -159
  146. package/{chunk-J5JTMQIA.js → chunk-YFLVRVYK.js} +1 -1
  147. package/{chunk-EYLGAEB4.js → chunk-YGMBIXCF.js} +132 -0
  148. package/chunk-YL3EFYL3.js +199 -0
  149. package/{chunk-MMA3LZ3W.js → chunk-YNIYE47Z.js} +1 -1
  150. package/{chunk-W4S457LU.js → chunk-YU4ZPWVF.js} +41 -5
  151. package/{chunk-NJR3WKVP.js → chunk-YWWDC3O7.js} +281 -159
  152. package/chunk-YZMNK53S.js +68 -0
  153. package/{chunk-FHU44LN3.js → chunk-Z2PITYZN.js} +2179 -552
  154. package/{chunk-FY7F4Q6X.js → chunk-Z4PCXPUE.js} +2 -2
  155. package/{cliAgentConfigHelpers-WJBZQTLW.js → cliAgentConfigHelpers-TKYL43MT.js} +15 -16
  156. package/{cliAuthorityBrokerClient-PM3U6Q6J.js → cliAuthorityBrokerClient-XHH7MH2P.js} +1 -1
  157. package/{cliAuthorityStoreDriver-TKLXNNTG.js → cliAuthorityStoreDriver-6FE3BJNB.js} +1 -1
  158. package/{cliEnvHelpers-BVYTMUPJ.js → cliEnvHelpers-VPSJ4XWC.js} +3 -3
  159. package/{cliExecutor-BWBF2MTI.js → cliExecutor-4MAX3PZL.js} +2 -2
  160. package/cliLocalAgentRecordReader-MHHD4T7R.js +90 -0
  161. package/{commandRegistry-VVMTPFAX.js → commandRegistry-5DA5UP7S.js} +106 -98
  162. package/{contentThunks-N52O67MI.js → contentThunks-5GUQ7FWJ.js} +47 -43
  163. package/{cooldownCommands-YXLWOXWR.js → cooldownCommands-X7P5M2V5.js} +5 -4
  164. package/{createAgentAutomationAction-ZC57YRSV.js → createAgentAutomationAction-UCLTHQRI.js} +51 -49
  165. package/{createDialogAction-VQW5WDYX.js → createDialogAction-UPN774AF.js} +46 -48
  166. package/{createPageAction-M5VDA7SC.js → createPageAction-JRQ2TA4O.js} +50 -48
  167. package/{cursorProvider-YGGNMVWX.js → cursorProvider-2RACMEMF.js} +1 -1
  168. package/{db-HUCI5R4G.js → db-CS4ZJQKV.js} +1 -1
  169. package/{dbSlice-HP7G4LX3.js → dbSlice-WNON7TOL.js} +17 -16
  170. package/{deleteFile-7VQGLK2V.js → deleteFile-Q3YDB4ML.js} +9 -9
  171. package/{desktopFolderProjects-SFY5EZS3.js → desktopFolderProjects-4POAMVJN.js} +2 -2
  172. package/{dialogCommands-JHMR2N2Y.js → dialogCommands-VRI7VCXH.js} +64 -57
  173. package/dialogNotifyCommand-6TMCX4D2.js +36 -0
  174. package/{dialogSlice-GRSVGDTF.js → dialogSlice-LFNVUSAN.js} +42 -40
  175. package/{dialogUsageCommand-7KCPYGHG.js → dialogUsageCommand-HTVPR2CX.js} +11 -10
  176. package/{docCreateCommands-F2K3UPSQ.js → docCreateCommands-AMPXMOX3.js} +61 -54
  177. package/{docDeleteCommands-XGXB5RFT.js → docDeleteCommands-I5WFAEHP.js} +63 -57
  178. package/{docReadCommands-7HWZZV6J.js → docReadCommands-X53ELNIE.js} +61 -54
  179. package/{docStore-KNZK6Y2G.js → docStore-2VAWVLWH.js} +21 -20
  180. package/{docUpdateCommands-OZZ7NQII.js → docUpdateCommands-6QPNDC7M.js} +64 -57
  181. package/{fetchMessages-M3QU7ZCQ.js → fetchMessages-TQEUZD7H.js} +8 -7
  182. package/{getPricing-2MNMXEVG.js → getPricing-MB2GBXOK.js} +6 -6
  183. package/{handleSendMessageAction-SHIH74GJ.js → handleSendMessageAction-AAJOHXOB.js} +193 -301
  184. package/{hostCredentialCreate-X64WK4JD.js → hostCredentialCreate-GLMJ22M6.js} +123 -114
  185. package/index.js +29 -29
  186. package/{keys-BEGDOTRL.js → keys-RWF7UCB4.js} +5 -4
  187. package/legacyMigration-TF4SYJCZ.js +19 -0
  188. package/{lib-5KKIBFIT.js → lib-OT5OTXRU.js} +7087 -6664
  189. package/{localDialogRead-XRLAH4CZ.js → localDialogRead-SVTPA5GY.js} +3 -3
  190. package/{localFirstLog-DHNOY2NA.js → localFirstLog-OIETGK66.js} +1 -1
  191. package/localRecall-2J6QPOK2.js +15 -0
  192. package/{localRuntimeAdapter-A7K3ABA6.js → localRuntimeAdapter-BMP57P42.js} +119 -110
  193. package/{localRuntimeAuthority-OYH4AE4G.js → localRuntimeAuthority-IBJAT62G.js} +1 -1
  194. package/{localRuntimeDb-VBIMCWUC.js → localRuntimeDb-N7KHDXS2.js} +2 -2
  195. package/{machineCommands-DE3MR7CJ.js → machineCommands-3MLIAK5Q.js} +128 -119
  196. package/{machineInfo-UKPTZO5Y.js → machineInfo-LWHTEBHJ.js} +1 -1
  197. package/machineWsRunDispatch-FKIGROQF.js +191 -0
  198. package/{memberThunks-7WJAY5V6.js → memberThunks-ZGLZ36PK.js} +29 -28
  199. package/{memoryCommands-ASCE5STX.js → memoryCommands-5WC3T66U.js} +4 -4
  200. package/models-ULVWLSQ6.js +9 -0
  201. package/{oauthTokenStore-OEERZFUC.js → oauthTokenStore-RUYNYALS.js} +1 -1
  202. package/{offlineMarxistsAgentCommand-2QTHJCHV.js → offlineMarxistsAgentCommand-4IC3Y4C6.js} +4 -4
  203. package/overlay-THLKYIWY.js +11 -0
  204. package/package.json +2 -2
  205. package/{pdf-U6KSUEZZ.js → pdf-KE3QI2V7.js} +1 -1
  206. package/{processSpawn-ZU5QFM43.js → processSpawn-6GEO77KV.js} +1 -1
  207. package/{profileConfig-KN3N2BLF.js → profileConfig-KOWK4HOG.js} +1 -1
  208. package/{projectArchive-GGL5HLMD.js → projectArchive-HK63GMF4.js} +52 -50
  209. package/{providerPresetApply-YXGV6NXB.js → providerPresetApply-OIFQ73LH.js} +19 -12
  210. package/{providerRegistry-S6UL6UNA.js → providerRegistry-KZ3SDZ3D.js} +10 -10
  211. package/{read-4VZQODSN.js → read-MRQHJMJ2.js} +10 -10
  212. package/{readDocTool-AVD32RUJ.js → readDocTool-4BGTXTXA.js} +2 -2
  213. package/{readlineWorkspace-XKYKNL2I.js → readlineWorkspace-AKAHSCNY.js} +6505 -4634
  214. package/{removeDialogAgentAction-FKL4BYMR.js → removeDialogAgentAction-B6H7DXFM.js} +23 -22
  215. package/{runAgentClientLoop-V7E2WBVM.js → runAgentClientLoop-UVAWGEON.js} +81 -79
  216. package/{runtimeDoctorCommands-QAI3MBKQ.js → runtimeDoctorCommands-FW6XKDUG.js} +12 -12
  217. package/{runtimeModeArgs-2Y7BALTO.js → runtimeModeArgs-X7DL7PUN.js} +1 -1
  218. package/secretCommands-LJXOOYA7.js +24 -0
  219. package/{setDialogExtraReferencesAction-TLIOLWWI.js → setDialogExtraReferencesAction-EVCY3TRW.js} +22 -21
  220. package/{setPrimaryDialogAgentAction-2OLWRFYR.js → setPrimaryDialogAgentAction-KPFVPHCJ.js} +23 -22
  221. package/{settingThunks-UGBPCNYF.js → settingThunks-ENOAK2WV.js} +97 -88
  222. package/{skillDiscovery-XKHROSH2.js → skillDiscovery-B5V23AXP.js} +4 -4
  223. package/{skillSummaryMarker-42HKSXYY.js → skillSummaryMarker-62UW7HI7.js} +1 -1
  224. package/{slateToRenderMarkdown-Y5IYN73U.js → slateToRenderMarkdown-R3X74MCX.js} +1 -1
  225. package/{slateUtils-NGV2NMKM.js → slateUtils-ESQAJ6RN.js} +1 -1
  226. package/{spaceCommands-4KSLKVNF.js → spaceCommands-DTTNAS2L.js} +61 -53
  227. package/store-JRVN62NM.js +46 -0
  228. package/{streamAgentChatTurn-7FR7X2NU.js → streamAgentChatTurn-R5UY25VB.js} +875 -618
  229. package/{switchDialogAgentAction-UZSAG2N5.js → switchDialogAgentAction-SZ44XDRY.js} +21 -20
  230. package/{tableCommands-MP6VFSVT.js → tableCommands-HITDSLHS.js} +10 -10
  231. package/tombstones-FQQMEDOW.js +32 -0
  232. package/{toolApiClient-HGNO53TC.js → toolApiClient-OGQEBQVX.js} +4 -4
  233. package/{tools-ZLKCC25W.js → tools-HWFG6GMJ.js} +75 -74
  234. package/tuiSummaryLlmCaller-HQQZAMYF.js +44 -0
  235. package/{updateCommands-4744PL3P.js → updateCommands-RJVCRSBP.js} +10 -8
  236. package/{updateDialogTitleAction-U53ZT7PJ.js → updateDialogTitleAction-KNPOAMVS.js} +48 -46
  237. package/{usageCommand-F4IPVMIZ.js → usageCommand-FWZCB7AM.js} +11 -10
  238. package/{usageRebuildCommand-HAW2AD5N.js → usageRebuildCommand-SP2BLNJU.js} +12 -11
  239. package/userDataMerge-HT2ZVHBJ.js +13 -0
  240. package/{windowsSelfUpdate-XSQVF2GK.js → windowsSelfUpdate-KERHIAB4.js} +3 -3
  241. package/{workloadLifecycle-4BEQHMSD.js → workloadLifecycle-DYNEYHV5.js} +7 -6
  242. package/agentRecordCommands-L3QQ7HZ4.js +0 -167
  243. package/agentRunCommand-2IFGQHCO.js +0 -196
  244. package/chunk-3CGG2PAL.js +0 -594
  245. package/chunk-5XBUWM6I.js +0 -89
  246. package/chunk-BFM34N54.js +0 -842
  247. package/chunk-CJEIOP3E.js +0 -0
  248. package/chunk-CZM5YTZ7.js +0 -977
  249. package/chunk-EYUBHHFB.js +0 -636
  250. package/chunk-JTDORD5P.js +0 -415
  251. package/chunk-NRFKLKRU.js +0 -339
  252. package/chunk-VPAZOH2D.js +0 -115
  253. package/chunk-WJZOQR2J.js +0 -151
  254. package/chunk-ZCWRMUWT.js +0 -89
  255. package/dist-M676ULYG.js +0 -7314
  256. package/machineWsRunDispatch-R26P5V36.js +0 -182
  257. package/models-PJBE6JDV.js +0 -9
  258. package/tuiSummaryLlmCaller-WC54MVGP.js +0 -160
  259. package/{chunk-WACI5I6V.js → chunk-2THCNKE4.js} +3 -3
  260. package/{chunk-2QHFH3DR.js → chunk-47ITIXO7.js} +6 -6
  261. package/{chunk-GOO6G4PY.js → chunk-CKG3PRZ7.js} +0 -0
  262. package/{chunk-OQHIVPG4.js → chunk-SNBZZPYH.js} +3 -3
  263. package/{chunk-AETZ7AD6.js → chunk-W6RFEDN4.js} +3 -3
@@ -4,30 +4,23 @@ import {
4
4
  import {
5
5
  applyTokenUsageToDayStats,
6
6
  require_format
7
- } from "./chunk-7RFNTILS.js";
7
+ } from "./chunk-BUDVRYES.js";
8
8
  import {
9
9
  buildDialogAttachmentPlan,
10
10
  extractFileContentIds
11
- } from "./chunk-LEC5ALIN.js";
11
+ } from "./chunk-KEPOVMF4.js";
12
12
  import {
13
- BUILTIN_DIALOG_LLM_FALLBACK_MODEL,
14
13
  BUILTIN_SUMMARY_LLM_CONFIG
15
14
  } from "./chunk-523DITKR.js";
16
15
  import {
17
16
  runLlm
18
- } from "./chunk-YPD3VJZW.js";
17
+ } from "./chunk-NWP2OYOX.js";
19
18
  import {
20
19
  isMediaToolConfirmation
21
20
  } from "./chunk-QYPE3TS3.js";
22
21
  import {
23
22
  cleanupCliSessionForDialog
24
- } from "./chunk-IIQ6JGRI.js";
25
- import {
26
- getApproxPricePerImage
27
- } from "./chunk-4JH2UMJR.js";
28
- import {
29
- addContentAction
30
- } from "./chunk-VPAZOH2D.js";
23
+ } from "./chunk-AD5EWDFD.js";
31
24
  import {
32
25
  getActiveDialogAgentId,
33
26
  getDialogAgentIds,
@@ -48,10 +41,16 @@ import {
48
41
  setActiveDialogKey,
49
42
  setDialogConfigError,
50
43
  setMediaJobRuntimeActor
51
- } from "./chunk-OWYYDMGJ.js";
44
+ } from "./chunk-S2NTVGA2.js";
52
45
  import {
53
46
  require_react
54
- } from "./chunk-YDH3FDFQ.js";
47
+ } from "./chunk-5FUN7EG4.js";
48
+ import {
49
+ fetchMessages
50
+ } from "./chunk-HXER7YJF.js";
51
+ import {
52
+ addContentAction
53
+ } from "./chunk-JA3ICVJY.js";
55
54
  import {
56
55
  patch,
57
56
  read,
@@ -59,19 +58,24 @@ import {
59
58
  selectById,
60
59
  upload,
61
60
  write
62
- } from "./chunk-BFM34N54.js";
61
+ } from "./chunk-44X52WOJ.js";
63
62
  import {
64
63
  getRuntimeServerContext,
65
64
  parseOwnerUserIdFromDbKey,
66
- scheduleDeleteReplication
67
- } from "./chunk-PYRUW7XN.js";
65
+ resolveUserAuthorityServer,
66
+ scheduleDeleteReplication,
67
+ waitForWriteAck
68
+ } from "./chunk-2VUZSVAS.js";
68
69
  import {
69
70
  asyncThunkCreator,
70
71
  buildCreateSlice,
71
72
  createAsyncThunk,
72
73
  createEntityAdapter,
73
74
  createSelector
74
- } from "./chunk-P5L7CXOC.js";
75
+ } from "./chunk-7Z6EW7AH.js";
76
+ import {
77
+ normalizeTimeFields
78
+ } from "./chunk-AGP3YSEC.js";
75
79
  import {
76
80
  createClientLogger
77
81
  } from "./chunk-QQ56R7KS.js";
@@ -80,18 +84,16 @@ import {
80
84
  selectIdentityUser,
81
85
  selectIdentityUserId
82
86
  } from "./chunk-PXYBUFDB.js";
83
- import {
84
- fetchMessages
85
- } from "./chunk-Y2WUYX4I.js";
86
87
  import {
87
88
  getRecordTimestamp,
88
89
  getTombstoneTimestamp,
89
90
  isTombstoneRecord,
90
91
  shouldReplaceWithNextRecord
91
- } from "./chunk-D2MDMY2M.js";
92
+ } from "./chunk-BV3FLP2L.js";
92
93
  import {
93
- nolotusId
94
- } from "./chunk-Y6ORVLSS.js";
94
+ applyBuiltinAgentRuntimeOverride,
95
+ resolveBuiltinPlatformAgentRecord
96
+ } from "./chunk-HYIETXA6.js";
95
97
  import {
96
98
  DEFAULT_AUTO_EXECUTION_PROFILE,
97
99
  EMPTY_ASSISTANT_FALLBACK_MESSAGE,
@@ -100,28 +102,33 @@ import {
100
102
  STAGNANT_TOOL_CALLS_FALLBACK_MESSAGE,
101
103
  STREAM_TRUNCATED_FALLBACK_MESSAGE,
102
104
  asOptionalJsonRecord,
105
+ codexOAuthCatalogWindow,
103
106
  devinChannelContextWindow,
104
107
  extractReferenceKeysFromMessage,
105
- normalizeUsage,
108
+ isCodexOAuthAgent,
109
+ normalizeAttachmentPart,
106
110
  resolveAutoExecutionProfile
107
- } from "./chunk-JTDORD5P.js";
111
+ } from "./chunk-NIZ2BXFD.js";
112
+ import {
113
+ isDevinOAuthAgent
114
+ } from "./chunk-5ZUL4CUO.js";
108
115
  import {
109
116
  COMPACTION_SUMMARY_SYSTEM_PROMPT,
110
117
  DEFAULT_CONTEXT_WINDOW,
118
+ buildBoundedCompactionRequest,
111
119
  buildCompactionMetricsFromPlan,
112
- buildCompactionUserContent,
120
+ classifySummaryError,
113
121
  computeSummarySourceMetadata,
122
+ createSummaryBudget,
114
123
  findModelContextWindow,
115
124
  formatCompactionMetricsLog,
116
- formatFileOperationsFromMessages,
117
- formatMessagesForSummaryWithTruncation,
118
125
  getModelInfo,
126
+ normalizeUsage,
119
127
  planCompression,
128
+ runSummaryWithContract,
129
+ selectSummaryRoute,
120
130
  serializeMessageContent
121
- } from "./chunk-CZM5YTZ7.js";
122
- import {
123
- isDevinOAuthAgent
124
- } from "./chunk-5ZUL4CUO.js";
131
+ } from "./chunk-RDH5CQ4T.js";
125
132
  import {
126
133
  isOAuthApiKeyRef
127
134
  } from "./chunk-UKZX3NHN.js";
@@ -132,27 +139,41 @@ import {
132
139
  isAbortError
133
140
  } from "./chunk-7DPNBQSV.js";
134
141
  import {
135
- BUILTIN_NOLO_AGENT_KEY,
136
- builtinAgentCatalogEntryById,
137
- builtinRuntimeFallbackEntries,
138
- isBuiltinPlatformAgentKey,
139
- parseBuiltinPlatformAgentId
140
- } from "./chunk-LOEO7LRC.js";
142
+ nolotusId
143
+ } from "./chunk-7ET2U67U.js";
144
+ import {
145
+ isBuiltinPlatformAgentKey
146
+ } from "./chunk-3IK6ILVW.js";
141
147
  import {
142
148
  extractCustomId,
143
- extractUserId,
144
- publicAgentKey
149
+ extractUserId
145
150
  } from "./chunk-M2EJHDJP.js";
151
+ import {
152
+ buildDialogAgentListIndexDeleteOps,
153
+ createKey,
154
+ createTokenKey,
155
+ createTokenStatsKey
156
+ } from "./chunk-SYTHYBMI.js";
157
+ import {
158
+ createDialogMessageKeyAndId,
159
+ dialogMessageKey
160
+ } from "./chunk-OJKUU3LP.js";
161
+ import {
162
+ getApproxPricePerImage
163
+ } from "./chunk-4JH2UMJR.js";
146
164
  import {
147
165
  estimateTokenCount
148
166
  } from "./chunk-PSCNXBYA.js";
149
- import {
150
- findModelConfig,
151
- getModelConfig
152
- } from "./chunk-SM3NSZJV.js";
153
167
  import {
154
168
  toErrorMessage
155
169
  } from "./chunk-HNMXYYJR.js";
170
+ import {
171
+ asTrimmedString
172
+ } from "./chunk-3EUW3WEO.js";
173
+ import {
174
+ findModelConfig,
175
+ getModelConfig
176
+ } from "./chunk-2UCBGYO4.js";
156
177
  import {
157
178
  isRecord
158
179
  } from "./chunk-KUG52IAP.js";
@@ -173,38 +194,522 @@ import {
173
194
  isPlatformManagedProvider,
174
195
  resolvePlatformEffectiveModel,
175
196
  resolvePlatformHostedRouting
176
- } from "./chunk-GOO6G4PY.js";
197
+ } from "./chunk-CKG3PRZ7.js";
177
198
  import {
178
199
  asTrimmedLowercaseString
179
200
  } from "./chunk-QSJ3HFEF.js";
180
- import {
181
- API_ENDPOINTS
182
- } from "./chunk-LCBAMY2M.js";
183
- import {
184
- normalizeServerOrigin
185
- } from "./chunk-CF7PE763.js";
186
- import {
187
- buildDialogAgentListIndexDeleteOps,
188
- createKey,
189
- createTokenKey,
190
- createTokenStatsKey
191
- } from "./chunk-JY5NGFFH.js";
192
- import {
193
- createDialogMessageKeyAndId,
194
- dialogMessageKey
195
- } from "./chunk-XJWWBO34.js";
196
201
  import {
197
202
  asOptionalFiniteNumber
198
203
  } from "./chunk-WWC7I6TA.js";
199
204
  import {
200
- asTrimmedString
201
- } from "./chunk-3EUW3WEO.js";
205
+ API_ENDPOINTS
206
+ } from "./chunk-LCBAMY2M.js";
202
207
  import {
203
208
  asOptionalTrimmedString
204
209
  } from "./chunk-G3SUCT4W.js";
210
+ import {
211
+ normalizeServerOrigin
212
+ } from "./chunk-CF7PE763.js";
205
213
  import {
206
214
  __toESM
207
- } from "./chunk-4VNS5WPM.js";
215
+ } from "./chunk-U67V476Y.js";
216
+
217
+ // packages/chat/messages/userBatchExecution.ts
218
+ function snapshotUserBatchInput(messages) {
219
+ return messages.filter((message) => message.role === "user").map((message) => ({ id: message.id, content: structuredClone(message.content) }));
220
+ }
221
+ function canonicalUserContent(content) {
222
+ const parts = typeof content === "string" ? ["string", content] : Array.isArray(content) ? ["parts", content.map((raw) => {
223
+ const part = raw;
224
+ if (part?.type === "text" && typeof part.text === "string") return ["text", part.text];
225
+ if (part?.type === "image_url") {
226
+ const url = typeof part.image_url === "string" ? part.image_url : part.image_url?.url;
227
+ if (typeof url !== "string") throw new Error("Invalid user batch image; blocked");
228
+ return [
229
+ "image_url",
230
+ url,
231
+ typeof part.image_url === "object" ? part.image_url.detail ?? "auto" : "auto",
232
+ part.google_native?.inlineData?.mimeType ?? null,
233
+ part.google_native?.inlineData?.data ?? null,
234
+ part.google_native?.thoughtSignature ?? null
235
+ ];
236
+ }
237
+ if (part?.type === "attachment") {
238
+ const parsed = normalizeAttachmentPart(part);
239
+ if (parsed.status !== "valid") throw new Error("Invalid user batch attachment; blocked");
240
+ const a = parsed.attachment;
241
+ const source = a.source;
242
+ return [a.type, a.v, source.kind, source.kind === "remote-file" ? [source.fileKey] : [source.path, source.machineId, source.workspaceRoot ?? null], a.name, a.mimeType, a.size];
243
+ }
244
+ if (part && typeof part.type === "string" && typeof part.name === "string" && [part.pageKey, part.dialogKey, part.id].some((value) => typeof value === "string" && !!value)) {
245
+ return ["reference", part.type, part.name, part.pageKey ?? null, part.dialogKey ?? null, part.id ?? null];
246
+ }
247
+ throw new Error("Unsupported user batch content; blocked");
248
+ })] : (() => {
249
+ throw new Error("Invalid user batch content; blocked");
250
+ })();
251
+ return JSON.stringify(parts);
252
+ }
253
+ function orderedUserBatchInput(snapshot, ids) {
254
+ return ids.map((id) => {
255
+ const rows = snapshot.filter((row) => row.id === id);
256
+ if (rows.length !== 1) throw new Error("Incomplete user batch content; blocked");
257
+ return canonicalUserContent(rows[0].content);
258
+ });
259
+ }
260
+ function assertUserBatchInput(expected, actual, ids) {
261
+ const a = orderedUserBatchInput(expected, ids);
262
+ const b = orderedUserBatchInput(actual, ids);
263
+ if (a.some((part, i) => part !== b[i])) throw new Error("User batch authorized content changed; blocked");
264
+ }
265
+ function createUserBatchExecution(signal, owns) {
266
+ let grant;
267
+ let closed = false;
268
+ let inFlight = false;
269
+ const dispose = () => {
270
+ closed = true;
271
+ grant = void 0;
272
+ };
273
+ const valid = () => {
274
+ if (closed || signal.aborted || !owns()) {
275
+ dispose();
276
+ return false;
277
+ }
278
+ return true;
279
+ };
280
+ signal.addEventListener("abort", dispose, { once: true });
281
+ const same = (key, receipt) => grant?.dialogKey === key && grant.receipt.batchId === receipt.batchId && grant.receipt.token === receipt.token && grant.receipt.messageIds.length === receipt.messageIds.length && grant.receipt.messageIds.every((id, index) => id === receipt.messageIds[index]);
282
+ return {
283
+ valid,
284
+ hasGrant: () => valid() && !!grant,
285
+ dispose() {
286
+ dispose();
287
+ signal.removeEventListener("abort", dispose);
288
+ },
289
+ has(key, receipt) {
290
+ return valid() && same(key, receipt);
291
+ },
292
+ authorize(key, receipt, input) {
293
+ if (!valid() || inFlight) throw new Error("User batch execution ownership lost; blocked");
294
+ orderedUserBatchInput(input, receipt.messageIds);
295
+ grant = { dialogKey: key, receipt: { ...receipt, messageIds: [...receipt.messageIds] }, input: structuredClone(input) };
296
+ },
297
+ async start(key, receipt, input, invoke) {
298
+ if (!valid() || !same(key, receipt) || inFlight) {
299
+ dispose();
300
+ throw new Error("User batch execution permission expired or mismatched; blocked");
301
+ }
302
+ inFlight = true;
303
+ try {
304
+ assertUserBatchInput(grant.input, input, receipt.messageIds);
305
+ return await invoke();
306
+ } catch (error) {
307
+ dispose();
308
+ throw error;
309
+ } finally {
310
+ inFlight = false;
311
+ }
312
+ }
313
+ };
314
+ }
315
+
316
+ // packages/chat/messages/pendingUserBatchControl.ts
317
+ var isLocalUserBatch = (dialogKey) => dialogKey.startsWith("dialog-local-");
318
+ function userBatchControl(state, dialogKey) {
319
+ const context = getRuntimeServerContext(state);
320
+ const userId = context.currentUserId;
321
+ if (!userId || userId === "local" || !dialogKey.startsWith(`dialog-${userId}-`) || !context.currentToken) {
322
+ throw new Error("User batch authority requires the owning account and token; unsent messages retained");
323
+ }
324
+ const server = resolveUserAuthorityServer({ ownerUserId: userId, registry: context.userAuthorityRegistry }) ?? context.currentServer;
325
+ if (!server) throw new Error("User batch authority unavailable; unsent messages retained");
326
+ const dialogId = dialogKey.slice(`dialog-${userId}-`.length);
327
+ const call = async (body) => {
328
+ let response;
329
+ try {
330
+ response = await fetch(`${server.replace(/\/$/, "")}/api/agent/turns/control`, {
331
+ method: "POST",
332
+ headers: { "Content-Type": "application/json", Authorization: `Bearer ${context.currentToken}` },
333
+ body: JSON.stringify({ ...body, dialogId })
334
+ });
335
+ } catch {
336
+ throw new Error("User batch authority network failure; messages retained, provider not retried");
337
+ }
338
+ let result;
339
+ try {
340
+ result = await response.json();
341
+ } catch {
342
+ throw new Error("User batch authority response unreadable; messages retained, provider not retried");
343
+ }
344
+ if (!result || typeof result !== "object") throw new Error("User batch authority response invalid; messages retained, provider not retried");
345
+ if (!response.ok || result.ok !== true) throw new Error(`User batch authority: ${result.error?.message ?? response.status}`);
346
+ return result.data;
347
+ };
348
+ return {
349
+ call,
350
+ async publish(message) {
351
+ if (message.userId !== userId) throw new Error("User batch message belongs to another account");
352
+ await waitForWriteAck(message.dbKey, { targetServer: server });
353
+ return (await call({ action: "enqueue", message })).message;
354
+ }
355
+ };
356
+ }
357
+ function readClientReceipt(value, ids, ordered = false) {
358
+ if (!value || value.owner !== "client" || typeof value.batchId !== "string" || !value.batchId || typeof value.token !== "string" || !value.token || !Array.isArray(value.messageIds) || value.messageIds.length !== ids.length || new Set(value.messageIds).size !== ids.length || ids.some((id) => !value.messageIds.includes(id)) || ordered && ids.some((id, i) => value.messageIds[i] !== id) || !["admitted", "requested"].includes(value.phase)) {
359
+ throw new Error("Invalid or foreign user batch receipt; automatic resubmission blocked");
360
+ }
361
+ return value;
362
+ }
363
+
364
+ // packages/database-engine/storeBatchCompat.ts
365
+ function writeStoreOps(store, ops) {
366
+ if (typeof store.batchWrite === "function") {
367
+ return store.batchWrite(ops);
368
+ }
369
+ if (typeof store.batch === "function") {
370
+ const result = store.batch(ops);
371
+ if (result && typeof result.then === "function") {
372
+ return result;
373
+ }
374
+ if (result && typeof result.write === "function") {
375
+ for (const op of ops) {
376
+ if (op.type === "put") {
377
+ result.put(op.key, op.value);
378
+ } else {
379
+ result.del(op.key);
380
+ }
381
+ }
382
+ return result.write();
383
+ }
384
+ }
385
+ throw new Error("Store does not support batch array writes");
386
+ }
387
+
388
+ // packages/core/chat/internalTurnEvent.ts
389
+ function normalizeRunCompletionShape(record) {
390
+ const runId = String(record.runId ?? record.id ?? "");
391
+ const agentKey = String(record.agentKey ?? record.agent ?? "");
392
+ const status = String(record.status ?? "done");
393
+ const counters = record.activity?.counters;
394
+ return {
395
+ runId,
396
+ agentKey,
397
+ ...typeof record.agentName === "string" ? { agentName: record.agentName } : {},
398
+ ...typeof record.title === "string" && record.title.trim() ? { title: record.title.trim() } : {},
399
+ status,
400
+ ...typeof record.exitCode === "number" ? { exitCode: record.exitCode } : {},
401
+ ...typeof record.parentDialogId === "string" ? { parentDialogId: record.parentDialogId } : {},
402
+ ...typeof record.dialogId === "string" ? { dialogId: record.dialogId } : {},
403
+ ...typeof record.resultFile === "string" ? { resultFile: record.resultFile } : {},
404
+ ...typeof record.ephemeral === "boolean" ? { ephemeral: record.ephemeral } : {},
405
+ ...record.startedAt !== void 0 ? { startedAt: record.startedAt } : {},
406
+ ...record.endedAt !== void 0 ? { endedAt: record.endedAt } : {},
407
+ ...typeof record.note === "string" ? { note: record.note } : {},
408
+ ...typeof record.error === "string" ? { error: record.error } : {},
409
+ ...typeof record.ack === "boolean" ? { ack: record.ack } : {},
410
+ ...counters ? {
411
+ activity: {
412
+ counters: {
413
+ toolCalls: typeof counters.toolCalls === "number" ? counters.toolCalls : 0,
414
+ llmCalls: typeof counters.llmCalls === "number" ? counters.llmCalls : 0,
415
+ fileEdits: typeof counters.fileEdits === "number" ? counters.fileEdits : 0
416
+ }
417
+ }
418
+ } : {}
419
+ };
420
+ }
421
+ function createTurnRequest(input) {
422
+ if (typeof input === "string") {
423
+ return {
424
+ event: { kind: "user", text: input },
425
+ text: input
426
+ };
427
+ }
428
+ if ("event" in input && typeof input.event === "object" && typeof input.text === "string") {
429
+ return input;
430
+ }
431
+ const event = input;
432
+ return {
433
+ event,
434
+ text: event.text
435
+ };
436
+ }
437
+
438
+ // packages/core/chat/chatQueueMachine.ts
439
+ var initialChatQueueState = {
440
+ running: false,
441
+ queue: [],
442
+ drainPaused: false,
443
+ lastDrainError: null
444
+ };
445
+ function reduceChatQueue(state, event) {
446
+ switch (event.type) {
447
+ case "turn-start":
448
+ if (state.running && state.lastDrainError === null) return state;
449
+ return {
450
+ ...state,
451
+ running: true,
452
+ lastDrainError: null
453
+ };
454
+ case "batch-accepted":
455
+ if (state.drainBatch?.id !== event.batchId) return state;
456
+ return {
457
+ ...state,
458
+ queue: state.queue.slice(state.drainBatch.requests.length),
459
+ drainBatch: void 0
460
+ };
461
+ case "claim-batch": {
462
+ if (state.drainBatch) return state;
463
+ if (state.drainPaused || state.drainMode === "user-batch" && state.lastDrainError) return state;
464
+ if (!state.queue.length || state.queue[0]?.event.kind !== "user") return state;
465
+ const end = state.queue.findIndex((request) => request.event.kind !== "user");
466
+ const id = (state.batchSequence ?? 0) + 1;
467
+ return {
468
+ ...state,
469
+ batchSequence: id,
470
+ drainBatch: { id, requests: state.queue.slice(0, end < 0 ? void 0 : end) }
471
+ };
472
+ }
473
+ case "rollback-batch": {
474
+ if (state.drainBatch?.id === event.batchId) {
475
+ return { ...state, drainBatch: void 0 };
476
+ }
477
+ return { ...state, queue: [...event.requests, ...state.queue] };
478
+ }
479
+ case "batch-failed":
480
+ if (state.drainBatch?.id !== event.batchId) return state;
481
+ return {
482
+ ...state,
483
+ drainBatch: void 0,
484
+ drainPaused: true,
485
+ lastDrainError: event.message || "batch admission failed"
486
+ };
487
+ case "turn-end": {
488
+ if (state.drainMode === "user-batch") {
489
+ const next = {
490
+ ...state,
491
+ running: false,
492
+ drainPaused: event.aborted ? true : state.drainPaused,
493
+ lastDrainError: !event.ok && !event.aborted ? "previous turn failed" : state.lastDrainError
494
+ };
495
+ if (event.ok && !event.aborted && shouldDrainAfterTurnEnd(next, true) && next.queue[0]?.event.kind === "user") {
496
+ const end = next.queue.findIndex((request) => request.event.kind !== "user");
497
+ const id = (next.batchSequence ?? 0) + 1;
498
+ return {
499
+ ...next,
500
+ batchSequence: id,
501
+ drainBatch: { id, requests: next.queue.slice(0, end < 0 ? void 0 : end) }
502
+ };
503
+ }
504
+ return next;
505
+ }
506
+ return {
507
+ ...state,
508
+ running: false,
509
+ queue: event.aborted ? [] : state.queue,
510
+ lastDrainError: !event.ok && !event.aborted ? "previous turn failed" : state.lastDrainError
511
+ };
512
+ }
513
+ case "enqueue": {
514
+ const req = createTurnRequest(event.text);
515
+ if (req.messageId && state.queue.some((item) => item.messageId === req.messageId)) return state;
516
+ if (!req.text.trim() && req.event.kind === "user" && !req.imagePaths?.length && !req.mediaPaths?.length) {
517
+ return state;
518
+ }
519
+ return {
520
+ ...state,
521
+ queue: [...state.queue, req]
522
+ };
523
+ }
524
+ case "steer": {
525
+ if (state.drainBatch) return state;
526
+ const req = createTurnRequest(event.text);
527
+ if (!req.text.trim() && req.event.kind === "user") {
528
+ return state;
529
+ }
530
+ return {
531
+ ...state,
532
+ queue: [req, ...state.queue]
533
+ };
534
+ }
535
+ case "dequeue":
536
+ if (state.drainBatch) return state;
537
+ if (state.queue.length === 0) return state;
538
+ return {
539
+ ...state,
540
+ queue: state.queue.slice(1)
541
+ };
542
+ case "recall-last":
543
+ if (state.drainBatch) return state;
544
+ if (state.queue.length === 0) return state;
545
+ return {
546
+ ...state,
547
+ queue: state.queue.slice(0, -1)
548
+ };
549
+ case "clear":
550
+ if (state.drainBatch) return state;
551
+ if (state.queue.length === 0 && state.lastDrainError === null) return state;
552
+ return {
553
+ ...state,
554
+ queue: [],
555
+ lastDrainError: null
556
+ };
557
+ case "pause-drain":
558
+ if (state.drainPaused) return state;
559
+ return {
560
+ ...state,
561
+ drainPaused: true
562
+ };
563
+ case "resume-drain":
564
+ if (!state.drainPaused && !(state.drainMode === "user-batch" && state.lastDrainError)) return state;
565
+ return {
566
+ ...state,
567
+ drainPaused: false,
568
+ lastDrainError: state.drainMode === "user-batch" ? null : state.lastDrainError
569
+ };
570
+ case "drain-error":
571
+ return {
572
+ ...state,
573
+ lastDrainError: event.message || null
574
+ };
575
+ case "clear-drain-error":
576
+ if (state.lastDrainError === null) return state;
577
+ return {
578
+ ...state,
579
+ lastDrainError: null
580
+ };
581
+ default:
582
+ return state;
583
+ }
584
+ }
585
+ function shouldDrainAfterTurnEnd(state, cleanTurnEnd) {
586
+ return cleanTurnEnd && !state.running && !state.drainPaused && !state.drainBatch && (state.drainMode !== "user-batch" || !state.lastDrainError) && state.queue.length > 0;
587
+ }
588
+ function applyChatQueueEvent(state, event) {
589
+ const prevQueue = state.queue;
590
+ const prevQueueLen = prevQueue.length;
591
+ const prevRunning = state.running;
592
+ const prevPaused = state.drainPaused;
593
+ const next = reduceChatQueue(state, event);
594
+ const outgoing = [];
595
+ if (next.queue.length !== prevQueueLen) {
596
+ outgoing.push({ type: "queue-changed", length: next.queue.length });
597
+ }
598
+ if (next.running !== prevRunning) {
599
+ outgoing.push({ type: "running-changed", running: next.running });
600
+ }
601
+ if (next.drainPaused !== prevPaused) {
602
+ outgoing.push({ type: "drain-paused-changed", paused: next.drainPaused });
603
+ }
604
+ if (event.type === "recall-last" && next.queue.length < prevQueueLen) {
605
+ const last = prevQueue[prevQueueLen - 1];
606
+ outgoing.push({ type: "recalled-to-draft", text: last.text, request: last });
607
+ }
608
+ if (event.type === "steer" && next.running && next.queue.length > prevQueueLen) {
609
+ const head = next.queue[0];
610
+ if (head) {
611
+ outgoing.push({ type: "steer-ready", text: head.text, request: head });
612
+ }
613
+ }
614
+ if (event.type === "turn-end") {
615
+ if (next.drainBatch && next.drainBatch !== state.drainBatch) {
616
+ outgoing.push({ type: "drain-batch-ready", batch: next.drainBatch });
617
+ } else if (event.aborted && prevQueueLen > 0 && state.drainMode !== "user-batch") {
618
+ const first = prevQueue[0];
619
+ outgoing.push({
620
+ type: "aborted-draft-refill",
621
+ text: first.text,
622
+ request: first,
623
+ abortedRequests: [...prevQueue]
624
+ });
625
+ } else if (!event.aborted && event.ok) {
626
+ if (shouldDrainAfterTurnEnd(next, true)) {
627
+ const head = next.queue[0];
628
+ outgoing.push({ type: "drain-ready", text: head.text, request: head });
629
+ }
630
+ }
631
+ }
632
+ return { state: next, outgoing };
633
+ }
634
+
635
+ // packages/core/chat/chatQueueRuntime.ts
636
+ function createChatQueueRuntime(initialState2 = initialChatQueueState) {
637
+ let state = initialState2;
638
+ const listeners2 = /* @__PURE__ */ new Set();
639
+ const dispatch = (events) => {
640
+ for (const e of events) {
641
+ for (const l of listeners2) l(e);
642
+ }
643
+ };
644
+ return {
645
+ getState: () => state,
646
+ send(event) {
647
+ const result = applyChatQueueEvent(state, event);
648
+ state = result.state;
649
+ dispatch(result.outgoing);
650
+ return state;
651
+ },
652
+ subscribe(listener) {
653
+ listeners2.add(listener);
654
+ return () => {
655
+ listeners2.delete(listener);
656
+ };
657
+ },
658
+ on(type, listener) {
659
+ const wrapped = (e) => {
660
+ if (e.type === type) {
661
+ listener(e);
662
+ }
663
+ };
664
+ listeners2.add(wrapped);
665
+ return () => {
666
+ listeners2.delete(wrapped);
667
+ };
668
+ },
669
+ dispose() {
670
+ listeners2.clear();
671
+ state = initialChatQueueState;
672
+ }
673
+ };
674
+ }
675
+
676
+ // packages/chat/queue/chatQueueReduxAdapter.ts
677
+ async function admitPersistedUserBatch(args) {
678
+ if (args.signal?.aborted || !args.requests.length) return [];
679
+ const runtime = createChatQueueRuntime({
680
+ running: true,
681
+ queue: [...args.requests],
682
+ drainPaused: false,
683
+ lastDrainError: null,
684
+ drainMode: "user-batch"
685
+ });
686
+ let admission = Promise.resolve([]);
687
+ const abort = () => runtime.send({ type: "turn-end", ok: false, aborted: true });
688
+ args.signal?.addEventListener("abort", abort, { once: true });
689
+ runtime.on("drain-batch-ready", ({ batch }) => {
690
+ admission = (async () => {
691
+ try {
692
+ if (args.signal?.aborted) return [];
693
+ await args.persist(batch.requests);
694
+ runtime.send({ type: "batch-accepted", batchId: batch.id });
695
+ return batch.requests;
696
+ } catch (error) {
697
+ runtime.send({
698
+ type: "batch-failed",
699
+ batchId: batch.id,
700
+ message: error instanceof Error ? error.message : String(error)
701
+ });
702
+ throw error;
703
+ }
704
+ })();
705
+ });
706
+ runtime.send({ type: "turn-end", ok: true, aborted: false });
707
+ try {
708
+ return await admission;
709
+ } finally {
710
+ args.signal?.removeEventListener("abort", abort);
711
+ }
712
+ }
208
713
 
209
714
  // packages/chat/dialog/actions/addReferenceKeysAction.ts
210
715
  var extractReferenceKeys = (content) => {
@@ -246,6 +751,15 @@ var addReferenceKeysAction = createAsyncThunk(
246
751
  }
247
752
  );
248
753
 
754
+ // packages/chat/messages/pendingUserMessages.ts
755
+ function selectPendingUserMessages(messages) {
756
+ return messages.filter((message) => message.role === "user" && message.metadata?.queueState === "pending" && !message.metadata?.userBatchReceipt && !message.metadata?.userBatchPhase);
757
+ }
758
+ function selectAdmittedMessages(messages) {
759
+ const pending = new Set(selectPendingUserMessages(messages).map((message) => message.id));
760
+ return messages.filter((message) => !pending.has(message.id));
761
+ }
762
+
249
763
  // packages/chat/messages/messageDialogIdentity.ts
250
764
  function inferMessageDialogIdFromDbKey(dbKey) {
251
765
  const prefix = `${"dialog" /* DIALOG */}-`;
@@ -258,6 +772,41 @@ function inferMessageDialogIdFromDbKey(dbKey) {
258
772
  return dbKey.slice(prefix.length, separatorAt);
259
773
  }
260
774
 
775
+ // packages/core/agentRunStatusKind.ts
776
+ var AGENT_RUN_STATUS_TABLE = {
777
+ pending: { kind: "active" },
778
+ queued: { kind: "active" },
779
+ started: { kind: "active" },
780
+ running: { kind: "active" },
781
+ done: { kind: "succeeded" },
782
+ completed: { kind: "succeeded" },
783
+ failed: { kind: "abnormal", startFailureLabel: true },
784
+ timeout: { kind: "abnormal", startFailureLabel: true },
785
+ killed: { kind: "abnormal", startFailureLabel: true },
786
+ cancelled: { kind: "abnormal", startFailureLabel: true },
787
+ orphaned: { kind: "abnormal", startFailureLabel: true },
788
+ cancelling: { kind: "abnormal" },
789
+ not_found: { kind: "abnormal" },
790
+ unknown: { kind: "abnormal" }
791
+ };
792
+ function normalizeStatus(status) {
793
+ return typeof status === "string" ? status.trim() : "";
794
+ }
795
+ function resolveAgentRunStatusKind(status) {
796
+ const key = normalizeStatus(status);
797
+ if (!key) return "unknown";
798
+ return AGENT_RUN_STATUS_TABLE[key]?.kind ?? "unknown";
799
+ }
800
+ function isAgentRunStatusNormal(status) {
801
+ const kind = resolveAgentRunStatusKind(status);
802
+ return kind === "active" || kind === "succeeded";
803
+ }
804
+ function isAgentRunStartFailureStatus(status) {
805
+ const key = normalizeStatus(status);
806
+ if (!key) return false;
807
+ return AGENT_RUN_STATUS_TABLE[key]?.startFailureLabel === true;
808
+ }
809
+
261
810
  // packages/chat/messages/toolPresentation.ts
262
811
  var SUMMARY_EMOJI_PREFIX = new RegExp("^(\\p{Emoji_Presentation}|\\p{Extended_Pictographic}|\\[[vx!]\\])\\s*", "u");
263
812
  function toolResultNeedsUserConfirmation(toolName, result) {
@@ -737,21 +1286,24 @@ function resolveOccupancyWindow(ref) {
737
1286
  if (isDevinOAuthAgent(ref)) {
738
1287
  return devinChannelContextWindow(ref.model) ?? findModelContextWindow(ref.model, ref.provider);
739
1288
  }
1289
+ if (isCodexOAuthAgent(ref)) {
1290
+ return codexOAuthCatalogWindow(ref.model) ?? findModelContextWindow(ref.model, ref.provider);
1291
+ }
740
1292
  return findModelContextWindow(ref.model, ref.provider);
741
1293
  }
742
1294
 
743
1295
  // packages/ai/context/agentContextWindow.ts
744
1296
  function resolveAgentContextWindow(ref) {
745
- const byModel = resolveOccupancyWindow({ model: ref.model, provider: ref.provider });
1297
+ const byModel = resolveOccupancyWindow({ model: ref.model, provider: ref.provider, apiKeyRef: ref.apiKeyRef });
746
1298
  if (byModel !== void 0) return byModel;
747
- const byName = ref.agentName?.trim() ? resolveOccupancyWindow({ model: ref.agentName, provider: ref.provider }) : void 0;
1299
+ const byName = ref.agentName?.trim() ? resolveOccupancyWindow({ model: ref.agentName, provider: ref.provider, apiKeyRef: ref.apiKeyRef }) : void 0;
748
1300
  if (byName !== void 0) return byName;
749
1301
  const candidates = [
750
1302
  ...modelSlugCandidates(ref.agentKey, 2),
751
1303
  ...modelSlugCandidates(ref.agentName, 1)
752
1304
  ];
753
1305
  for (const candidate of candidates) {
754
- const window = resolveOccupancyWindow({ model: candidate, provider: ref.provider });
1306
+ const window = resolveOccupancyWindow({ model: candidate, provider: ref.provider, apiKeyRef: ref.apiKeyRef });
755
1307
  if (window !== void 0) return window;
756
1308
  }
757
1309
  return void 0;
@@ -771,89 +1323,6 @@ function modelSlugCandidates(source, maxDrop) {
771
1323
  return [...new Set(out.filter(Boolean))];
772
1324
  }
773
1325
 
774
- // packages/agent-runtime/builtinPlatformAgentRoute.ts
775
- function resolveBuiltinAgentRuntimeFields(agentKey) {
776
- if (!isBuiltinPlatformAgentKey(agentKey)) return null;
777
- const entry = builtinAgentCatalogEntryById(parseBuiltinPlatformAgentId(agentKey));
778
- if (!entry) return null;
779
- return { provider: entry.provider, model: entry.model };
780
- }
781
-
782
- // packages/agent-runtime/builtinPlatformAgentConfigs.ts
783
- function buildConfig(e) {
784
- const key = publicAgentKey(e.id);
785
- const rawRecord = {
786
- dbKey: key,
787
- isPublic: true,
788
- provider: e.provider,
789
- model: e.model,
790
- apiSource: e.apiSource ?? "platform",
791
- useServerProxy: e.useServerProxy ?? true
792
- };
793
- if (e.hasImageOutput) rawRecord.hasImageOutput = true;
794
- if (e.imageModel) rawRecord.imageModel = e.imageModel;
795
- if (e.imageWorkflow) rawRecord.imageWorkflow = e.imageWorkflow;
796
- if (e.imageConfig) rawRecord.imageConfig = e.imageConfig;
797
- return {
798
- key,
799
- name: e.name,
800
- provider: e.provider,
801
- model: e.model,
802
- apiSource: e.apiSource ?? "platform",
803
- useServerProxy: e.useServerProxy ?? true,
804
- rawRecord
805
- };
806
- }
807
- var BUILTIN_PLATFORM_AGENT_CONFIGS = Object.fromEntries(
808
- builtinRuntimeFallbackEntries().map((e) => [publicAgentKey(e.id), buildConfig(e)])
809
- );
810
- function resolveBuiltinPlatformAgentConfig(agentRef) {
811
- return BUILTIN_PLATFORM_AGENT_CONFIGS[agentRef] ?? null;
812
- }
813
- function resolveBuiltinPlatformAgentRecord(agentRef) {
814
- const config = resolveBuiltinPlatformAgentConfig(agentRef);
815
- if (!config) return null;
816
- return {
817
- ...config.rawRecord,
818
- dbKey: agentRef,
819
- ...config.name ? { name: config.name } : {}
820
- };
821
- }
822
- var BUILTIN_RUNTIME_EXTRA_OVERRIDES = {
823
- [BUILTIN_NOLO_AGENT_KEY]: { reasoningEffort: "max" }
824
- };
825
- function applyBuiltinAgentRuntimeOverride(agentKey, record) {
826
- const fields = resolveBuiltinAgentRuntimeFields(agentKey);
827
- if (!fields) return record;
828
- const extraFields = BUILTIN_RUNTIME_EXTRA_OVERRIDES[agentKey];
829
- const extraNeedsOverride = (target) => {
830
- if (extraFields == null || target == null || typeof target !== "object") {
831
- return false;
832
- }
833
- const flat = target;
834
- return Object.entries(extraFields).some(([key, value]) => flat[key] !== value);
835
- };
836
- const current = record;
837
- const rawNeedsOverride = current.rawRecord != null && (current.rawRecord.provider !== fields.provider || current.rawRecord.model !== fields.model || extraNeedsOverride(current.rawRecord));
838
- if (current.provider === fields.provider && current.model === fields.model && !rawNeedsOverride && !extraNeedsOverride(record)) {
839
- return record;
840
- }
841
- return {
842
- ...record,
843
- provider: fields.provider,
844
- model: fields.model,
845
- ...extraFields ?? {},
846
- ...current.rawRecord ? {
847
- rawRecord: {
848
- ...current.rawRecord,
849
- provider: fields.provider,
850
- model: fields.model,
851
- ...extraFields ?? {}
852
- }
853
- } : {}
854
- };
855
- }
856
-
857
1326
  // packages/render/web/ui/toastStore.ts
858
1327
  var EXIT_MS = 320;
859
1328
  var raf = typeof globalThis.requestAnimationFrame === "function" ? (cb) => globalThis.requestAnimationFrame(cb) : (cb) => {
@@ -3315,8 +3784,13 @@ var Language = /* @__PURE__ */ ((Language2) => {
3315
3784
  Language2["ZH_HANT"] = "zh-Hant";
3316
3785
  Language2["JA"] = "ja";
3317
3786
  Language2["KO"] = "ko";
3787
+ Language2["DE"] = "de";
3788
+ Language2["ES"] = "es";
3318
3789
  return Language2;
3319
3790
  })(Language || {});
3791
+ var SUPPORTED_LANGUAGES = new Set(
3792
+ Object.values(Language)
3793
+ );
3320
3794
 
3321
3795
  // packages/app/i18n/i18n.base.ts
3322
3796
  var i18nBaseConfig = {
@@ -3329,14 +3803,21 @@ var i18nBaseConfig = {
3329
3803
  "zh-TW": ["zh-Hant" /* ZH_HANT */],
3330
3804
  "zh-HK": ["zh-Hant" /* ZH_HANT */],
3331
3805
  "zh-MO": ["zh-Hant" /* ZH_HANT */],
3806
+ de: ["de" /* DE */, "en" /* EN */],
3807
+ es: ["es" /* ES */, "en" /* EN */],
3332
3808
  default: ["en" /* EN */]
3333
3809
  }
3334
3810
  };
3335
3811
 
3336
3812
  // packages/ai/ai.locale.ts
3813
+ var AI_API_KEY_LABEL_DE = "API-Schl\xFCssel";
3337
3814
  var ai_locale_default = {
3338
3815
  en: {
3339
3816
  translation: {
3817
+ providerPreset: {
3818
+ // 厂商官方限制第三方登录的订阅通道:照常可选,只做风险提示。
3819
+ officialRestricted: "Third-party sign-in restricted by the vendor"
3820
+ },
3340
3821
  // General Actions & Status
3341
3822
  cancel: "Cancel",
3342
3823
  update: "Update",
@@ -4933,14 +5414,792 @@ var ai_locale_default = {
4933
5414
  }
4934
5415
  },
4935
5416
  rememberMemory: {
4936
- description: "\u9577\u671F\u7684\u306B\u4FDD\u6301\u3059\u308B\u4FA1\u5024\u306E\u3042\u308B\u30E6\u30FC\u30B6\u30FC\u8A2D\u5B9A\u3084\u30B9\u30DA\u30FC\u30B9\u5185\u306E\u5408\u610F\u4E8B\u9805\u3092 episodic memory \u306B\u66F8\u304D\u8FBC\u307F\u3001\u4EE5\u964D\u306E\u4F1A\u8A71\u3067\u9577\u671F\u7684\u306B\u691C\u7D22\u3067\u304D\u308B\u3088\u3046\u306B\u3057\u307E\u3059\u3002",
5417
+ description: "\u9577\u671F\u7684\u306B\u4FDD\u6301\u3059\u308B\u4FA1\u5024\u306E\u3042\u308B\u30E6\u30FC\u30B6\u30FC\u8A2D\u5B9A\u3084\u30B9\u30DA\u30FC\u30B9\u5185\u306E\u5408\u610F\u4E8B\u9805\u3092 episodic memory \u306B\u66F8\u304D\u8FBC\u307F\u3001\u4EE5\u964D\u306E\u4F1A\u8A71\u3067\u9577\u671F\u7684\u306B\u691C\u7D22\u3067\u304D\u308B\u3088\u3046\u306B\u3057\u307E\u3059\u3002",
5418
+ params: {
5419
+ content: "\u5177\u4F53\u7684\u306A\u8A18\u61B6\u5185\u5BB9\uFF08\u4F8B\uFF1A'\u30E6\u30FC\u30B6\u30FC\u306F TypeScript \u3067\u306E\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u3092\u597D\u307F\u307E\u3059\u3002'\uFF09\u3002",
5420
+ tags: "\u3053\u306E\u8A18\u61B6\u306B\u4ED8\u3051\u308B\u30BF\u30B0\u306E\u914D\u5217\u3002\u5C06\u6765\u306E\u5206\u985E\u3068\u691C\u7D22\u306B\u4F7F\u7528\u3057\u307E\u3059\u3002"
5421
+ }
5422
+ }
5423
+ },
5424
+ agentSquare: "\u5E83\u5834"
5425
+ }
5426
+ },
5427
+ de: {
5428
+ translation: {
5429
+ cancel: "Abbrechen",
5430
+ update: "Aktualisieren",
5431
+ updating: "Wird aktualisiert...",
5432
+ create: "Erstellen",
5433
+ creating: "Wird erstellt...",
5434
+ edit: "Bearbeiten",
5435
+ delete: "L\xF6schen",
5436
+ favorite: "Favorisieren",
5437
+ unfavorite: "Aus Favoriten entfernen",
5438
+ confirmDelete: "L\xF6schen best\xE4tigen",
5439
+ resetToDefaults: "Auf Standardwerte zur\xFCcksetzen",
5440
+ loading: "Wird geladen...",
5441
+ startChat: "Chat starten",
5442
+ starting: "Wird gestartet...",
5443
+ viewDetails: "Details anzeigen",
5444
+ deleteSuccess: "Erfolgreich gel\xF6scht!",
5445
+ moreActions: "Weitere Aktionen",
5446
+ syncToAccount: "Mit Nolo-Konto synchronisieren",
5447
+ syncedToAccount: "Mit aktuellem Konto synchronisiert",
5448
+ syncToAccountTitle: "Mit Nolo-Konto synchronisieren",
5449
+ syncToAccountConfirm: "Synchronisierung best\xE4tigen",
5450
+ syncToAccountConfirmLead: "Konfiguration dieses lokalen Agent mit dem aktuellen Nolo-Konto synchronisieren?",
5451
+ syncToAccountFactLocalRemains: "Der lokale Agent verbleibt auf diesem Ger\xE4t.",
5452
+ syncToAccountFactSnapshotOnly: "Es wird lediglich ein Konfigurations-Snapshot des Agent hochgeladen.",
5453
+ syncToAccountFactNoDialogs: "Dialoge, Nachrichten und Anh\xE4nge werden nicht hochgeladen.",
5454
+ syncToAccountFactNoSecrets: "Lokale API-Schl\xFCssel und Tokens werden nicht hochgeladen.",
5455
+ syncToAccountFactNoSpaceMembership: "Space-Mitgliedschaften werden in diesem Schritt weder ge\xE4ndert noch synchronisiert.",
5456
+ syncToAccountFactOneTime: "Dies ist ein einmaliger Konfigurations-Upload, keine fortlaufende Synchronisierung.",
5457
+ syncToAccountSuccess: "Mit dem aktuellen Konto synchronisiert (lokaler Agent beibehalten)",
5458
+ syncToAccountError: "Synchronisierung fehlgeschlagen. Bitte versuchen Sie es erneut.",
5459
+ fork: {
5460
+ action: "In meine Liste kopieren",
5461
+ title: "Diesen Agent kopieren",
5462
+ targetAll: "Alle (nicht zu einem Space hinzugef\xFCgt)",
5463
+ targetSpaceLabel: "Zu Space hinzuf\xFCgen",
5464
+ confirm: "Kopieren",
5465
+ success: "In Ihre Agent-Liste kopiert",
5466
+ failed: "Kopieren fehlgeschlagen. Bitte versuchen Sie es erneut.",
5467
+ notAllowed: "Dieser Agent erlaubt kein Kopieren",
5468
+ addToSpaceFailed: "Kopiert, aber Hinzuf\xFCgen zum Space fehlgeschlagen. Sie finden ihn unter \u201EAlle\u201C."
5469
+ },
5470
+ agent: "Agent",
5471
+ unnamed: "Unbenannt",
5472
+ noDescription: "Keine Beschreibung",
5473
+ noIntroduction: "Keine Vorstellung verf\xFCgbar.",
5474
+ notSpecified: "Nicht angegeben",
5475
+ vision: "Bildverarbeitung",
5476
+ textOnly: "Nur Text",
5477
+ details: "Details",
5478
+ price: "Preis",
5479
+ credits: "Credits",
5480
+ modelCost: "Modellkosten",
5481
+ inputCostPerMillionTokens: "Eingabe:",
5482
+ outputCostPerMillionTokens: "Ausgabe:",
5483
+ priceShortInput: "Ein",
5484
+ priceShortCache: "Cache",
5485
+ priceShortOutput: "Aus",
5486
+ inputNoCacheCostLabel: "Eingabe (ohne Cache)",
5487
+ inputCacheHitCostLabel: "Eingabe (Cache-Treffer)",
5488
+ cacheWriteInlineLabel: "Schreiben {{value}}",
5489
+ cacheHitSavingsNote: "~{{percent}}% Ersparnis bei Cache-Treffern",
5490
+ referencePricePerTurn: "Referenzpreis pro Durchgang",
5491
+ defaultImageProfileEstimate: "Standard-Profilsch\xE4tzung",
5492
+ perMillionTokens: "pro 1 Mio. Tokens",
5493
+ perTurn: "pro Durchgang",
5494
+ perImage: "pro Bild",
5495
+ supported: "Unterst\xFCtzt",
5496
+ notSupported: "Nicht unterst\xFCtzt",
5497
+ createdAt: "Erstellt am",
5498
+ loadError: "Fehler beim Laden der Details",
5499
+ createDialogError: "Fehler beim Erstellen des Dialogs",
5500
+ deleteError: "L\xF6schen fehlgeschlagen. Bitte versuchen Sie es erneut.",
5501
+ createAgent: {
5502
+ title: "Agent erstellen",
5503
+ untitled: "Unbenannter Agent",
5504
+ chat: "Chat",
5505
+ public: "\xD6ffentlich",
5506
+ byConversation: "Durch Unterhaltung erstellen",
5507
+ manualConfiguration: "Manuelle Konfiguration",
5508
+ quickCreate: {
5509
+ reasoningEffort: "Denkaufwand",
5510
+ reasoningEffortOptions: {
5511
+ none: "Keine",
5512
+ minimal: "Minimal",
5513
+ low: "Niedrig",
5514
+ medium: "Mittel",
5515
+ high: "Hoch",
5516
+ xhigh: "Sehr hoch",
5517
+ max: "Maximal",
5518
+ ultra: "Ultra"
5519
+ }
5520
+ }
5521
+ },
5522
+ localCreate: {
5523
+ title: "Lokalen Agent erstellen",
5524
+ subtitle: "Verbinden Sie Ihre eigenen Modellanbieter oder lokale Schnittstellen, ohne Tokens auf der Plattform zu verbrauchen",
5525
+ descLabel: "Beschreiben Sie, wie dieser Agent Ihnen helfen soll",
5526
+ descPlaceholder: "z. B. Ein Senior-Frontend-Entwickler, der mir hilft, React-Code zu schreiben, Bugs zu beheben und Architekturentscheidungen zu treffen...",
5527
+ connectionMethod: "Verbindungsmethode",
5528
+ configureLater: "Sp\xE4ter konfigurieren",
5529
+ liveVoice: "Echtzeit-Sprachunterst\xFCtzung",
5530
+ recommendedTokenPlan: "Empfohlener Token-Tarif",
5531
+ apiTemplates: "API-Vorlagen",
5532
+ apiKeyPlaceholder: "API-Schl\xFCssel eingeben",
5533
+ modelPlaceholder: "Modellname eingeben (z. B. gpt-4o, claude-3-5-sonnet)",
5534
+ endpointRequired: "API-Endpunkt ist erforderlich",
5535
+ apiKeyRequired: "API-Schl\xFCssel ist erforderlich",
5536
+ ollamaUrlRequired: "Ollama-URL ist erforderlich",
5537
+ createGlobalFirst: "Lokaler Agent wird standardm\xE4\xDFig global erstellt und kann anschlie\xDFend Spaces zugewiesen werden.",
5538
+ liveVoiceHint: "Dieses Modell unterst\xFCtzt Echtzeit-Sprachinteraktion",
5539
+ ollamaHint: "Standard-Ollama-Adresse: http://localhost:11434. Stellen Sie sicher, dass der Dienst l\xE4uft.",
5540
+ joinSpace: "Space beitreten",
5541
+ noBinding: "Nicht binden (global)",
5542
+ success: "Lokaler Agent erfolgreich erstellt!",
5543
+ failed: "Fehler beim Erstellen des lokalen Agent",
5544
+ defaultNewName: "Neuer Agent",
5545
+ submit: "Erstellen"
5546
+ },
5547
+ editAgent: "Agent bearbeiten",
5548
+ tabs: {
5549
+ basicInfo: "Grundlegende Informationen",
5550
+ references: "Kontext & Referenzen",
5551
+ toolSelection: "F\xE4higkeiten & Werkzeuge",
5552
+ knowledgeTools: "Wissen & Werkzeuge",
5553
+ publishSettings: "Ver\xF6ffentlichungseinstellungen",
5554
+ advancedSettings: "Erweiterte Einstellungen",
5555
+ memory: "Ged\xE4chtnis"
5556
+ },
5557
+ form: {
5558
+ name: "Agent-Name",
5559
+ namePlaceholder: "Namen des Agent eingeben...",
5560
+ provider: "Anbieter",
5561
+ selectProvider: "Anbieter ausw\xE4hlen",
5562
+ model: "Modell",
5563
+ selectModel: "Modell ausw\xE4hlen",
5564
+ customProviderUrl: "Anbieter-URL",
5565
+ customProviderUrlPlaceholder: "z. B. https://api.example.com/v1/chat/completions",
5566
+ apiKey: AI_API_KEY_LABEL_DE,
5567
+ crossDeviceKey: "Auf anderen Ger\xE4ten verwenden",
5568
+ prompt: "Prompt",
5569
+ promptPlaceholder: "Verhalten und Pers\xF6nlichkeit des Agent definieren...",
5570
+ greeting: "Begr\xFC\xDFungsnachricht",
5571
+ introduction: "Selbstvorstellung",
5572
+ introductionPlaceholder: "Selbstvorstellung eingeben",
5573
+ tags: "Tags",
5574
+ tagsPlaceholder: "Tags eingeben und Enter dr\xFCcken",
5575
+ useServerProxy: "Proxy-Modus",
5576
+ enableThinking: "Denkmodus",
5577
+ thinkingBudget: "Denk-Token-Budget",
5578
+ isPublic: "\xD6ffentlich machen",
5579
+ allowFork: "Anderen das Kopieren erlauben",
5580
+ inputPrice: "Eingabepreis",
5581
+ inputPricePlaceholder: "Kosten pro 1 Mio. Eingabe-Tokens",
5582
+ outputPrice: "Ausgabepreis",
5583
+ outputPricePlaceholder: "Kosten pro 1 Mio. Ausgabe-Tokens",
5584
+ apiSource: "API-Quelle",
5585
+ usePlatformApi: "Plattform-API",
5586
+ useCustomApi: "Benutzerdefinierte API",
5587
+ tools: "Werkzeuge",
5588
+ selectTools: "Werkzeuge ausw\xE4hlen",
5589
+ modelParameters: "Modellparameter",
5590
+ temperature: "Temperatur",
5591
+ topP: "Top P",
5592
+ frequencyPenalty: "Frequenzstrafe",
5593
+ presencePenalty: "Pr\xE4senzstrafe",
5594
+ maxTokens: "Max Tokens",
5595
+ maxTokensFollowModelDefault: "Modell-Standardwert folgen (nicht festgelegt)",
5596
+ maxTokensSetCustom: "Benutzerdefiniert",
5597
+ maxTokensClearToDefault: "Modell-Standardwert folgen",
5598
+ maxTokensInputPlaceholder: "Wert eingeben (leer = Modell-Standardwert)",
5599
+ reasoningEffort: "Denkaufwand",
5600
+ defaults: {
5601
+ greeting: "Ich bin ein intelligenter Assistent, der von nolo.chat f\xFCr Sie angepasst wurde. Wie kann ich Ihnen heute helfen?"
5602
+ },
5603
+ customModelName: "Benutzerdefinierter Modellname",
5604
+ customModelNamePlaceholder: "Benutzerdefinierten Modellnamen eingeben"
5605
+ },
5606
+ help: {
5607
+ tags: "Tags helfen Benutzern, Ihren Agent auf dem Marktplatz zu entdecken.",
5608
+ proxy: "Leitet API-Anfragen \xFCber den Plattform-Server weiter, um lokale CORS-Beschr\xE4nkungen zu umgehen.",
5609
+ enableThinking: "Aktiviert den schrittweisen Denkprozess des Modells vor der endg\xFCltigen Antwort.",
5610
+ thinkingBudget: "Begrenzt die maximale Anzahl von Tokens, die f\xFCr den Denkprozess verwendet werden d\xFCrfen.",
5611
+ isPublic: "Nach der Ver\xF6ffentlichung k\xF6nnen andere Benutzer diesen Agent auf dem Marktplatz finden und nutzen.",
5612
+ allowForkAny: "Erlaubt anderen Benutzern, diesen Agent in ihre eigene Liste zu kopieren und anzupassen.",
5613
+ isPublicCustomApi: "\xD6ffentliche Agents mit eigener API verwenden die API-Schl\xFCssel der aufrufenden Benutzer.",
5614
+ apiSourcePlatform: "Nutzt die offiziellen Plattformkan\xE4le; der Tokenverbrauch wird von Ihrem Plattform-Guthaben abgezogen.",
5615
+ apiSourceCustom: "Verwendet Ihre eigenen Modellanbieter und API-Schl\xFCssel; kein Verbrauch von Plattform-Credits.",
5616
+ promptAutomation: "System-Prompts geben dem Agent Anweisungen, Rollen und Verhaltensregeln vor.",
5617
+ tools: "Aktivieren Sie F\xE4higkeiten wie Websuche, Dateioperationen oder benutzerdefinierte Integrationen.",
5618
+ temperature: "Steuert die Zuf\xE4lligkeit: Niedrigere Werte sind pr\xE4ziser, h\xF6here Werte kreativer.",
5619
+ topP: "Nucleus-Sampling: Eine Alternative zur Temperatur, steuert die Vielfalt der Tokenauswahl.",
5620
+ frequencyPenalty: "Verringert die Wahrscheinlichkeit, dass W\xF6rter wiederholt werden.",
5621
+ presencePenalty: "Erh\xF6ht die Wahrscheinlichkeit, neue Themen anzusprechen.",
5622
+ maxTokens: "Die maximale Anzahl der in einer Antwort generierten Tokens.",
5623
+ reasoningEffort: "Steuert die Intensit\xE4t des Denkens bei Modellen mit Denkmodus (z. B. OpenAI o-Serie)."
5624
+ },
5625
+ validation: {
5626
+ nameRequired: "Name des Agent ist erforderlich",
5627
+ nameTooLong: "Der Name darf 50 Zeichen nicht \xFCberschreiten",
5628
+ providerRequired: "Bitte w\xE4hlen Sie einen Modellanbieter aus",
5629
+ modelRequired: "Bitte w\xE4hlen Sie ein Modell aus",
5630
+ invalidUrl: "Bitte geben Sie eine g\xFCltige URL ein",
5631
+ priceMin: "Der Preis darf nicht negativ sein",
5632
+ duplicateReferences: "Doppelte Referenzen gefunden",
5633
+ temperatureRange: "Die Temperatur muss zwischen 0 und 2 liegen",
5634
+ topPRange: "Top P muss zwischen 0 und 1 liegen",
5635
+ frequencyPenaltyRange: "Die Frequenzstrafe muss zwischen -2 und 2 liegen",
5636
+ presencePenaltyRange: "Die Pr\xE4senzstrafe muss zwischen -2 und 2 liegen",
5637
+ maxTokensMin: "Max Tokens muss mindestens 1 sein",
5638
+ maxTokensMax: "Max Tokens darf h\xF6chstens 500,000 betragen",
5639
+ maxTokensRange: "Max Tokens muss zwischen {{min}} und {{max}} liegen",
5640
+ reasoningEffortInvalid: "Ung\xFCltiger Denkaufwand-Wert",
5641
+ thinkingBudgetMin: "Das Denkbudget muss mindestens 1024 betragen",
5642
+ thinkingBudgetMax: "Das Denkbudget darf h\xF6chstens 100,000 Token betragen",
5643
+ apiKeyRequired: "API-Schl\xFCssel ist erforderlich",
5644
+ customUrlRequired: "Benutzerdefinierte API-Adresse ist erforderlich"
5645
+ },
5646
+ errors: {
5647
+ noUserId: "Benutzer-ID nicht gefunden. Bitte melden Sie sich erneut an.",
5648
+ createDialog: "Fehler beim Erstellen der Unterhaltung",
5649
+ delete: "Fehler beim L\xF6schen des Agent"
5650
+ },
5651
+ references: {
5652
+ title: "Kontext & Referenzen",
5653
+ selectTitle: "Referenzen ausw\xE4hlen",
5654
+ selectHelp: "W\xE4hlen Sie Seiten, Dokumente oder Spaces aus, die als Wissensbasis in die Unterhaltung eingebunden werden.",
5655
+ searchCurrentSpace: "Im aktuellen Space suchen...",
5656
+ searchAllSpaces: "In allen Spaces suchen...",
5657
+ clearSearch: "Suche leeren",
5658
+ noResults: "Keine Referenzen gefunden",
5659
+ noContent: "Keine Inhalte verf\xFCgbar",
5660
+ found_one: "{{count}} Ergebnis gefunden",
5661
+ found_other: "{{count}} Ergebnisse gefunden",
5662
+ fromSpace: "Aus: {{spaceName}}",
5663
+ toInstruction: "Als Anweisung festlegen",
5664
+ toKnowledge: "Als Wissen festlegen",
5665
+ selected_one: "{{count}} Referenz ausgew\xE4hlt",
5666
+ selected_other: "{{count}} Referenzen ausgew\xE4hlt",
5667
+ knowledge: "Wissen (Knowledge)",
5668
+ instruction: "Anweisung (Instruction)",
5669
+ enabledContext: "Aktivierter Kontext",
5670
+ linkedSpaces: "Verkn\xFCpfte Spaces",
5671
+ linkedSpacesHelp: "Der Agent kann auf Dokumente und Daten innerhalb der verkn\xFCpften Spaces zugreifen.",
5672
+ noLinkedSpaces: "Keine verkn\xFCpften Spaces",
5673
+ allSpaces: "Alle Spaces",
5674
+ selectSpace: "Space ausw\xE4hlen",
5675
+ selectSpacePlaceholder: "W\xE4hlen Sie einen Space zum Verkn\xFCpfen...",
5676
+ add: "Hinzuf\xFCgen",
5677
+ addSkill: "F\xE4higkeit hinzuf\xFCgen",
5678
+ addKnowledge: "Wissen hinzuf\xFCgen",
5679
+ addInstruction: "Anweisung hinzuf\xFCgen",
5680
+ remove: "Entfernen",
5681
+ skills: "F\xE4higkeiten (Skills)",
5682
+ skillsHelp: "F\xE4higkeiten erweitern die Handlungsm\xF6glichkeiten des Agent um spezialisierte Workflows.",
5683
+ knowledgeHelp: "Wissensdokumente werden bei Bedarf durchsucht und als Hintergrundwissen verwendet.",
5684
+ instructionHelp: "Anweisungen werden dauerhaft in den System-Prompt geladen und steuern das Verhalten.",
5685
+ exploreCommunitySkills: "Community-Skills durchsuchen",
5686
+ noSkillsYet: "Noch keine F\xE4higkeiten hinzugef\xFCgt",
5687
+ noKnowledgeYet: "Noch kein Wissen hinzugef\xFCgt",
5688
+ noInstructionsYet: "Noch keine Anweisungen hinzugef\xFCgt",
5689
+ globalRecommendedSkills: "Global empfohlene Skills",
5690
+ currentViewSkills: "Skills der aktuellen Ansicht",
5691
+ noGlobalRecommendedSkills: "Keine global empfohlenen Skills",
5692
+ noCurrentViewSkills: "Keine Skills in der aktuellen Ansicht",
5693
+ noSkillContent: "Kein Inhalt f\xFCr diesen Skill verf\xFCgbar",
5694
+ globalRecommendedSkillsFallback: "Empfohlene Skills",
5695
+ skillsEmptyHint: "F\xFCgen Sie Skills hinzu, um Ihrem Agent neue F\xE4higkeiten zu verleihen",
5696
+ knowledgeEmptyHint: "F\xFCgen Sie Dokumente oder Notizen als Wissensbasis hinzu",
5697
+ instructionEmptyHint: "F\xFCgen Sie Verhaltensregeln oder Anweisungsdokumente hinzu",
5698
+ previewDoc: "Dokumentvorschau",
5699
+ openInNewTab: "In neuem Tab \xF6ffnen",
5700
+ noAvailableSpaces: "Keine Spaces verf\xFCgbar",
5701
+ contextBudget: "Kontext-Budget",
5702
+ refsTokens: "Referenzen: ~{{val}} Tokens",
5703
+ spacesTokens: "Spaces: ~{{val}} Tokens",
5704
+ budgetWarning: "Vorab zugewiesener Kontext belegt {{percent}}%. Es wird empfohlen, unter {{max}}% zu bleiben, um ausreichend Platz f\xFCr den Unterhaltungsverlauf zu lassen."
5705
+ },
5706
+ toolsTab: {
5707
+ title: "F\xE4higkeiten & Werkzeuge",
5708
+ description: "Konfigurieren Sie die zur Laufzeit verf\xFCgbaren F\xE4higkeiten und Werkzeuge des Agent",
5709
+ modeLabel: "Modus",
5710
+ skillMode: "Skill-Modus (Empfohlen)",
5711
+ toolMode: "Manueller Werkzeugmodus",
5712
+ skillModeTitle: "F\xE4higkeiten-zentriert",
5713
+ skillModeDescription: "Binden Sie strukturierte F\xE4higkeiten ein, die automatisch ben\xF6tigte Werkzeuge und Prompt-Richtlinien mitbringen.",
5714
+ toolModeTitle: "Werkzeug-zentriert",
5715
+ toolModeDescription: "W\xE4hlen Sie einzelne atomare Werkzeuge manuell aus.",
5716
+ summaryTitle: "Konfigurations\xFCbersicht",
5717
+ summaryDescription: "{{skillCount}} eingebundene Skills \xB7 {{toolCount}} Werkzeuge zur Laufzeit verf\xFCgbar",
5718
+ skillDataTitle: "F\xE4higkeitendaten",
5719
+ skillDataDescription: "Verwalten Sie die mit den F\xE4higkeiten verkn\xFCpften Anweisungen und Parameter.",
5720
+ openReferences: "Referenzen \xF6ffnen",
5721
+ noSkillsSelected: "Keine F\xE4higkeiten ausgew\xE4hlt",
5722
+ removeSkill: "F\xE4higkeit entfernen",
5723
+ viewSkillDetail: "Details anzeigen",
5724
+ requiredSkills: "Erforderliche Skills",
5725
+ recommendedSkills: "Empfohlene Skills",
5726
+ recommendedHints: "Empfehlungen basierend auf Ihrer Agent-Konfiguration",
5727
+ runtimeGuidance: "Laufzeit-Hinweise",
5728
+ manualToolsTitle: "Manuelle Werkzeuge",
5729
+ manualToolsDescription: "W\xE4hlen Sie gezielt einzelne Werkzeuge f\xFCr spezielle Anwendungsf\xE4lle aus.",
5730
+ showManualTools: "Manuelle Werkzeuge anzeigen",
5731
+ hideManualTools: "Manuelle Werkzeuge ausblenden",
5732
+ manualToolsCollapsed: "{{count}} manuelle Werkzeuge ausgew\xE4hlt. Ausklappen, um die vollst\xE4ndige Liste zu bearbeiten.",
5733
+ noToolsSelected: "Keine Werkzeuge ausgew\xE4hlt"
5734
+ },
5735
+ tools: {
5736
+ createAgent: {
5737
+ description: "Erstellt einen neuen Agent mit benutzerdefinierter Konfiguration, System-Prompt und Modell.",
5738
+ params: {
5739
+ name: "Der Name des Agent.",
5740
+ model: "Die zu verwendende Modell-ID.",
5741
+ provider: "Der Modellanbieter.",
5742
+ prompt: "Die System-Prompt-Anweisungen.",
5743
+ introduction: "Eine kurze Vorstellung oder Beschreibung des Agent.",
5744
+ greeting: {
5745
+ desc: "Die Begr\xFC\xDFungsnachricht und Einstiegsoptionen des Agent.",
5746
+ stringDesc: "Ein einfacher Begr\xFC\xDFungstext.",
5747
+ objectDesc: "Ein strukturiertes Begr\xFC\xDFungsobjekt mit Text und Optionen.",
5748
+ texts: {
5749
+ text: "Der Inhalt der Begr\xFC\xDFungsnachricht."
5750
+ },
5751
+ menu: {
5752
+ desc: "Eine Liste von anklickbaren Schnellstart-Optionen.",
5753
+ id: "Die eindeutige Kennung der Men\xFCoption.",
5754
+ label: "Der angezeigte Text der Schaltfl\xE4che.",
5755
+ userMessage: "Die Nachricht, die gesendet wird, wenn der Benutzer auf die Option klickt."
5756
+ }
5757
+ },
5758
+ isPublic: "Ob der Agent auf dem Marktplatz \xF6ffentlich sichtbar sein soll.",
5759
+ allowFork: "Ob andere Benutzer diesen Agent kopieren d\xFCrfen.",
5760
+ tags: "Eine Liste von Schlagw\xF6rtern zur Kategorisierung.",
5761
+ tools: "Ein Array von Werkzeugnamen, die der Agent verwenden darf.",
5762
+ linkedSpaces: "Ein Array von Space-IDs, auf die der Agent Zugriff hat.",
5763
+ references: {
5764
+ desc: "Referenzdokumente und Wissensbasis-Eintr\xE4ge f\xFCr den Agent.",
5765
+ dbKey: "Der Datenbankschl\xFCssel des referenzierten Dokuments.",
5766
+ title: "Der Titel des Dokuments.",
5767
+ type: "Die Art der Referenz (knowledge oder instruction)."
5768
+ },
5769
+ temperature: "Steuert die Zuf\xE4lligkeit der Antworten (0 bis 2).",
5770
+ top_p: "Nucleus-Sampling-Parameter (0 bis 1).",
5771
+ frequency_penalty: "Verringert Wortwiederholungen (-2 bis 2).",
5772
+ presence_penalty: "Ermutigt neue Themen (-2 bis 2).",
5773
+ max_tokens: "Maximale Anzahl generierter Tokens.",
5774
+ reasoning_effort: "Denkaufwand f\xFCr Modelle mit Denkmodus (low, medium, high)."
5775
+ }
5776
+ },
5777
+ checkEnv: {
5778
+ description: "Pr\xFCft die aktuelle Ausf\xFChrungsumgebung und verf\xFCgbare Tools.",
5779
+ params: {
5780
+ check: "Art der Pr\xFCfung: 'context' gibt Umgebungsinformationen zur\xFCck, 'build' f\xFChrt einen Build-Check durch.",
5781
+ key: "Optional: Name des zu pr\xFCfenden Werkzeugs (z. B. node, bun, git)."
5782
+ }
5783
+ },
5784
+ deleteSpaces: {
5785
+ description: "Sucht und l\xF6scht Spaces des aktuellen Benutzers nach Name oder ID. Gef\xE4hrliche Aktion: Zeigt zuerst eine Vorschau und erfordert Best\xE4tigung.",
5786
+ params: {
5787
+ query: "Suchbegriff zum Filtern der zu l\xF6schenden Spaces.",
5788
+ matchMode: "Suchmodus: prefix, exact, contains oder spaceId.",
5789
+ confirmedSpaceIds: "Liste der best\xE4tigten Space-IDs zum L\xF6schen."
5790
+ }
5791
+ },
5792
+ listUserSpaces: {
5793
+ description: "Listet alle Spaces auf, die dem Benutzer geh\xF6ren oder denen er beigetreten ist.",
5794
+ params: {
5795
+ brief: "Gibt nur Metadaten zur\xFCck, um Kontext-Tokens zu sparen."
5796
+ }
5797
+ },
5798
+ read: {
5799
+ description: "Liest einen beliebigen Datensatz anhand seines Datenbankschl\xFCssels.",
5800
+ params: {
5801
+ dbKey: "Der Datenbankschl\xFCssel des Datensatzes (z. B. PAGE-xxx, dialog-xxx).",
5802
+ waitRemote: "Ob vor der R\xFCckgabe die neuesten Daten vom Server synchronisiert werden sollen."
5803
+ }
5804
+ },
5805
+ rememberMemory: {
5806
+ description: "Speichert wichtige Benutzerpr\xE4ferenzen oder Vereinbarungen dauerhaft im Langzeitged\xE4chtnis.",
5807
+ params: {
5808
+ content: "Der zu merkende Inhalt.",
5809
+ tags: "Schlagw\xF6rter zur sp\xE4teren Einordnung und Suche."
5810
+ }
5811
+ }
5812
+ },
5813
+ agentSquare: "Marktplatz"
5814
+ }
5815
+ },
5816
+ es: {
5817
+ translation: {
5818
+ cancel: "Cancelar",
5819
+ update: "Actualizar",
5820
+ updating: "Actualizando...",
5821
+ create: "Crear",
5822
+ creating: "Creando...",
5823
+ edit: "Editar",
5824
+ delete: "Eliminar",
5825
+ favorite: "Favorito",
5826
+ unfavorite: "Quitar de favoritos",
5827
+ confirmDelete: "Confirmar eliminaci\xF3n",
5828
+ resetToDefaults: "Restablecer valores predeterminados",
5829
+ loading: "Cargando...",
5830
+ startChat: "Iniciar chat",
5831
+ starting: "Iniciando...",
5832
+ viewDetails: "Ver detalles",
5833
+ deleteSuccess: "\xA1Eliminado correctamente!",
5834
+ moreActions: "M\xE1s acciones",
5835
+ syncToAccount: "Sincronizar con cuenta de Nolo",
5836
+ syncedToAccount: "Sincronizado con la cuenta actual",
5837
+ syncToAccountTitle: "Sincronizar con cuenta de Nolo",
5838
+ syncToAccountConfirm: "Confirmar sincronizaci\xF3n",
5839
+ syncToAccountConfirmLead: "\xBFSincronizar la configuraci\xF3n de este Agent local con la cuenta actual de Nolo?",
5840
+ syncToAccountFactLocalRemains: "El Agent local permanece en este dispositivo.",
5841
+ syncToAccountFactSnapshotOnly: "Solo se sube una instant\xE1nea de la configuraci\xF3n del Agent.",
5842
+ syncToAccountFactNoDialogs: "Los di\xE1logos, mensajes y adjuntos no se suben.",
5843
+ syncToAccountFactNoSecrets: "Las claves API y tokens locales no se suben.",
5844
+ syncToAccountFactNoSpaceMembership: "La pertenencia a espacios no se modifica ni sincroniza en este paso.",
5845
+ syncToAccountFactOneTime: "Esta es una subida puntual de la configuraci\xF3n, no una sincronizaci\xF3n continua.",
5846
+ syncToAccountSuccess: "Sincronizado con la cuenta actual (Agent local conservado)",
5847
+ syncToAccountError: "Error de sincronizaci\xF3n. Int\xE9ntalo de nuevo.",
5848
+ fork: {
5849
+ action: "Copiar a mis Agents",
5850
+ title: "Copiar este Agent",
5851
+ targetAll: "Todos (sin a\xF1adir a un espacio)",
5852
+ targetSpaceLabel: "A\xF1adir al espacio",
5853
+ confirm: "Copiar",
5854
+ success: "Copiado a tu lista de Agents",
5855
+ failed: "Error al copiar. Int\xE9ntalo de nuevo.",
5856
+ notAllowed: "Este Agent no permite copia",
5857
+ addToSpaceFailed: 'Copiado, pero no se pudo a\xF1adir al espacio. Puedes encontrarlo en "Todos".'
5858
+ },
5859
+ agent: "Agent",
5860
+ unnamed: "Sin nombre",
5861
+ noDescription: "Sin descripci\xF3n",
5862
+ noIntroduction: "Sin presentaci\xF3n disponible.",
5863
+ notSpecified: "No especificado",
5864
+ vision: "Visi\xF3n",
5865
+ textOnly: "Solo texto",
5866
+ details: "Detalles",
5867
+ price: "Precio",
5868
+ credits: "Cr\xE9ditos",
5869
+ modelCost: "Coste del modelo",
5870
+ inputCostPerMillionTokens: "Entrada:",
5871
+ outputCostPerMillionTokens: "Salida:",
5872
+ priceShortInput: "Entrada",
5873
+ priceShortCache: "Cach\xE9",
5874
+ priceShortOutput: "Salida",
5875
+ inputNoCacheCostLabel: "Entrada (sin cach\xE9)",
5876
+ inputCacheHitCostLabel: "Entrada (acierto de cach\xE9)",
5877
+ cacheWriteInlineLabel: "escritura {{value}}",
5878
+ cacheHitSavingsNote: "~{{percent}}% de ahorro en aciertos de cach\xE9",
5879
+ referencePricePerTurn: "Precio de referencia por turno",
5880
+ defaultImageProfileEstimate: "Estimaci\xF3n de perfil est\xE1ndar",
5881
+ perMillionTokens: "por 1 M de tokens",
5882
+ perTurn: "por turno",
5883
+ perImage: "por imagen",
5884
+ supported: "Compatible",
5885
+ notSupported: "No compatible",
5886
+ createdAt: "Fecha de creaci\xF3n",
5887
+ loadError: "Error al cargar los detalles",
5888
+ createDialogError: "Error al crear el di\xE1logo",
5889
+ deleteError: "Error al eliminar. Int\xE9ntalo de nuevo.",
5890
+ createAgent: {
5891
+ title: "Crear Agent",
5892
+ untitled: "Agent sin t\xEDtulo",
5893
+ chat: "Chat",
5894
+ public: "P\xFAblico",
5895
+ byConversation: "Crear mediante conversaci\xF3n",
5896
+ manualConfiguration: "Configuraci\xF3n manual",
5897
+ quickCreate: {
5898
+ reasoningEffort: "Esfuerzo de razonamiento",
5899
+ reasoningEffortOptions: {
5900
+ none: "Ninguno",
5901
+ minimal: "M\xEDnimo",
5902
+ low: "Bajo",
5903
+ medium: "Medio",
5904
+ high: "Alto",
5905
+ xhigh: "Muy alto",
5906
+ max: "M\xE1ximo",
5907
+ ultra: "Ultra"
5908
+ }
5909
+ }
5910
+ },
5911
+ localCreate: {
5912
+ title: "Crear Agent local",
5913
+ subtitle: "Conecta tus propios proveedores de modelos o servicios locales sin consumir tokens de la plataforma",
5914
+ descLabel: "Describe c\xF3mo te ayudar\xE1 este Agent",
5915
+ descPlaceholder: "p. ej., Un desarrollador frontend senior que me ayude a escribir c\xF3digo React, resolver errores y tomar decisiones arquitect\xF3nicas...",
5916
+ connectionMethod: "M\xE9todo de conexi\xF3n",
5917
+ configureLater: "Configurar m\xE1s tarde",
5918
+ liveVoice: "Voz en tiempo real",
5919
+ recommendedTokenPlan: "Plan de tokens recomendado",
5920
+ apiTemplates: "Plantillas de API",
5921
+ apiKeyPlaceholder: "Introduce la clave API",
5922
+ modelPlaceholder: "Introduce el nombre del modelo (p. ej., gpt-4o, claude-3-5-sonnet)",
5923
+ endpointRequired: "El punto de enlace de la API es obligatorio",
5924
+ apiKeyRequired: "La clave API es obligatoria",
5925
+ ollamaUrlRequired: "La URL de Ollama es obligatoria",
5926
+ createGlobalFirst: "El Agent local se crea de forma global por defecto y luego puede asignarse a espacios.",
5927
+ liveVoiceHint: "Este modelo es compatible con interacci\xF3n de voz en tiempo real",
5928
+ ollamaHint: "Direcci\xF3n predeterminada de Ollama: http://localhost:11434. Aseg\xFArate de que el servicio est\xE9 en ejecuci\xF3n.",
5929
+ joinSpace: "Unirse a un espacio",
5930
+ noBinding: "Sin vinculaci\xF3n (global)",
5931
+ success: "\xA1Agent local creado correctamente!",
5932
+ failed: "Error al crear el Agent local",
5933
+ defaultNewName: "Nuevo Agent",
5934
+ submit: "Crear"
5935
+ },
5936
+ editAgent: "Editar Agent",
5937
+ tabs: {
5938
+ basicInfo: "Informaci\xF3n b\xE1sica",
5939
+ references: "Contexto y referencias",
5940
+ toolSelection: "Habilidades y herramientas",
5941
+ knowledgeTools: "Conocimiento y herramientas",
5942
+ publishSettings: "Configuraci\xF3n de publicaci\xF3n",
5943
+ advancedSettings: "Configuraci\xF3n avanzada",
5944
+ memory: "Memoria"
5945
+ },
5946
+ form: {
5947
+ name: "Nombre del Agent",
5948
+ namePlaceholder: "Introduce el nombre del Agent...",
5949
+ provider: "Proveedor",
5950
+ selectProvider: "Seleccionar proveedor",
5951
+ model: "Modelo",
5952
+ selectModel: "Seleccionar modelo",
5953
+ customProviderUrl: "URL del proveedor",
5954
+ customProviderUrlPlaceholder: "p. ej., https://api.example.com/v1/chat/completions",
5955
+ apiKey: "Clave API",
5956
+ crossDeviceKey: "Usar en otros dispositivos",
5957
+ prompt: "Prompt",
5958
+ promptPlaceholder: "Define el comportamiento y la personalidad del Agent...",
5959
+ greeting: "Mensaje de bienvenida",
5960
+ introduction: "Presentaci\xF3n",
5961
+ introductionPlaceholder: "Introduce la presentaci\xF3n",
5962
+ tags: "Etiquetas",
5963
+ tagsPlaceholder: "Introduce etiquetas y pulsa Enter",
5964
+ useServerProxy: "Modo proxy",
5965
+ enableThinking: "Modo de razonamiento",
5966
+ thinkingBudget: "Presupuesto de tokens de razonamiento",
5967
+ isPublic: "Hacer p\xFAblico",
5968
+ allowFork: "Permitir que otros copien",
5969
+ inputPrice: "Precio de entrada",
5970
+ inputPricePlaceholder: "Coste por 1 M de tokens de entrada",
5971
+ outputPrice: "Precio de salida",
5972
+ outputPricePlaceholder: "Coste por 1 M de tokens de salida",
5973
+ apiSource: "Origen de la API",
5974
+ usePlatformApi: "API de la plataforma",
5975
+ useCustomApi: "API personalizada",
5976
+ tools: "Herramientas",
5977
+ selectTools: "Seleccionar herramientas",
5978
+ modelParameters: "Par\xE1metros del modelo",
5979
+ temperature: "Temperatura",
5980
+ topP: "Top P",
5981
+ frequencyPenalty: "Penalizaci\xF3n de frecuencia",
5982
+ presencePenalty: "Penalizaci\xF3n de presencia",
5983
+ maxTokens: "M\xE1ximo de tokens",
5984
+ maxTokensFollowModelDefault: "Seguir valor predeterminado del modelo (no establecido)",
5985
+ maxTokensSetCustom: "Personalizado",
5986
+ maxTokensClearToDefault: "Seguir valor predeterminado del modelo",
5987
+ maxTokensInputPlaceholder: "Introduce un valor (vac\xEDo = valor predeterminado del modelo)",
5988
+ reasoningEffort: "Esfuerzo de razonamiento",
5989
+ defaults: {
5990
+ greeting: "Soy un asistente inteligente personalizado para ti por nolo.chat. \xBFEn qu\xE9 puedo ayudarte hoy?"
5991
+ },
5992
+ customModelName: "Nombre de modelo personalizado",
5993
+ customModelNamePlaceholder: "Introduce el nombre del modelo personalizado"
5994
+ },
5995
+ help: {
5996
+ tags: "Las etiquetas ayudan a otros usuarios a encontrar tu Agent en la plaza.",
5997
+ proxy: "Enruta las solicitudes a trav\xE9s del servidor de la plataforma para evitar restricciones locales de CORS.",
5998
+ enableThinking: "Permite que el modelo muestre su proceso de razonamiento paso a paso antes de responder.",
5999
+ thinkingBudget: "Limita la cantidad m\xE1xima de tokens asignados al proceso de pensamiento.",
6000
+ isPublic: "Al publicarse, otros usuarios podr\xE1n encontrar y usar este Agent en la plaza.",
6001
+ allowForkAny: "Permite que otros usuarios copien este Agent a su propia lista y lo personalicen.",
6002
+ isPublicCustomApi: "Los Agents p\xFAblicos con API personalizada requerir\xE1n que los usuarios utilicen sus propias claves.",
6003
+ apiSourcePlatform: "Utiliza los canales oficiales de la plataforma; el consumo se descuenta de tus cr\xE9ditos.",
6004
+ apiSourceCustom: "Utiliza tu propio proveedor de modelos y clave API; sin coste de cr\xE9ditos de la plataforma.",
6005
+ promptAutomation: "El prompt del sistema define la personalidad, las reglas y los objetivos del Agent.",
6006
+ tools: "Activa herramientas para permitir b\xFAsquedas web, lectura de archivos o integraciones.",
6007
+ temperature: "Controla la aleatoriedad: valores m\xE1s bajos son m\xE1s precisos, valores m\xE1s altos m\xE1s creativos.",
6008
+ topP: "Muestreo por n\xFAcleo: alternativa a la temperatura para controlar la diversidad de respuestas.",
6009
+ frequencyPenalty: "Reduce la repetici\xF3n de palabras en la respuesta.",
6010
+ presencePenalty: "Aumenta la probabilidad de introducir temas nuevos.",
6011
+ maxTokens: "N\xFAmero m\xE1ximo de tokens generados en una \xFAnica respuesta.",
6012
+ reasoningEffort: "Ajusta la intensidad de razonamiento en modelos compatibles (p. ej., serie o de OpenAI)."
6013
+ },
6014
+ validation: {
6015
+ nameRequired: "El nombre del Agent es obligatorio",
6016
+ nameTooLong: "El nombre no puede superar los 50 caracteres",
6017
+ providerRequired: "Selecciona un proveedor de modelos",
6018
+ modelRequired: "Selecciona un modelo",
6019
+ invalidUrl: "Introduce una URL v\xE1lida",
6020
+ priceMin: "El precio no puede ser negativo",
6021
+ duplicateReferences: "Se encontraron referencias duplicadas",
6022
+ temperatureRange: "La temperatura debe estar entre 0 y 2",
6023
+ topPRange: "Top P debe estar entre 0 y 1",
6024
+ frequencyPenaltyRange: "La penalizaci\xF3n de frecuencia debe estar entre -2 y 2",
6025
+ presencePenaltyRange: "La penalizaci\xF3n de presencia debe estar entre -2 y 2",
6026
+ maxTokensMin: "El m\xE1ximo de tokens debe ser al menos 1",
6027
+ maxTokensMax: "El m\xE1ximo de tokens no puede superar los 500,000",
6028
+ maxTokensRange: "El m\xE1ximo de tokens debe estar entre {{min}} y {{max}}",
6029
+ reasoningEffortInvalid: "Valor de esfuerzo de razonamiento no v\xE1lido",
6030
+ thinkingBudgetMin: "El presupuesto de razonamiento debe ser de al menos 1024",
6031
+ thinkingBudgetMax: "El presupuesto de razonamiento no puede superar los 100,000 tokens",
6032
+ apiKeyRequired: "La clave API es obligatoria",
6033
+ customUrlRequired: "La URL de la API personalizada es obligatoria"
6034
+ },
6035
+ errors: {
6036
+ noUserId: "No se encontr\xF3 el ID de usuario. Inicia sesi\xF3n de nuevo.",
6037
+ createDialog: "Error al crear la conversaci\xF3n",
6038
+ delete: "Error al eliminar el Agent"
6039
+ },
6040
+ references: {
6041
+ title: "Contexto y referencias",
6042
+ selectTitle: "Seleccionar referencias",
6043
+ selectHelp: "Selecciona p\xE1ginas, documentos o espacios para incluirlos como base de conocimiento en la conversaci\xF3n.",
6044
+ searchCurrentSpace: "Buscar en el espacio actual...",
6045
+ searchAllSpaces: "Buscar en todos los espacios...",
6046
+ clearSearch: "Limpiar b\xFAsqueda",
6047
+ noResults: "No se encontraron referencias",
6048
+ noContent: "Sin contenido disponible",
6049
+ found_one: "Se encontr\xF3 {{count}} resultado",
6050
+ found_other: "Se encontraron {{count}} resultados",
6051
+ fromSpace: "De: {{spaceName}}",
6052
+ toInstruction: "Establecer como instrucci\xF3n",
6053
+ toKnowledge: "Establecer como conocimiento",
6054
+ selected_one: "{{count}} referencia seleccionada",
6055
+ selected_other: "{{count}} referencias seleccionadas",
6056
+ knowledge: "Conocimiento (Knowledge)",
6057
+ instruction: "Instrucci\xF3n (Instruction)",
6058
+ enabledContext: "Contexto activado",
6059
+ linkedSpaces: "Espacios vinculados",
6060
+ linkedSpacesHelp: "El Agent podr\xE1 acceder a documentos y datos dentro de los espacios vinculados.",
6061
+ noLinkedSpaces: "Sin espacios vinculados",
6062
+ allSpaces: "Todos los espacios",
6063
+ selectSpace: "Seleccionar espacio",
6064
+ selectSpacePlaceholder: "Elige un espacio para vincular...",
6065
+ add: "A\xF1adir",
6066
+ addSkill: "A\xF1adir habilidad",
6067
+ addKnowledge: "A\xF1adir conocimiento",
6068
+ addInstruction: "A\xF1adir instrucci\xF3n",
6069
+ remove: "Eliminar",
6070
+ skills: "Habilidades (Skills)",
6071
+ skillsHelp: "Las habilidades ampl\xEDan las capacidades del Agent con flujos de trabajo especializados.",
6072
+ knowledgeHelp: "Los documentos de conocimiento se consultan seg\xFAn sea necesario como contexto de fondo.",
6073
+ instructionHelp: "Las instrucciones se cargan de forma permanente en el prompt del sistema para guiar el comportamiento.",
6074
+ exploreCommunitySkills: "Explorar habilidades de la comunidad",
6075
+ noSkillsYet: "A\xFAn no se han a\xF1adido habilidades",
6076
+ noKnowledgeYet: "A\xFAn no se ha a\xF1adido conocimiento",
6077
+ noInstructionsYet: "A\xFAn no se han a\xF1adido instrucciones",
6078
+ globalRecommendedSkills: "Habilidades recomendadas globales",
6079
+ currentViewSkills: "Habilidades de la vista actual",
6080
+ noGlobalRecommendedSkills: "Sin habilidades recomendadas globales",
6081
+ noCurrentViewSkills: "Sin habilidades en la vista actual",
6082
+ noSkillContent: "Sin contenido para esta habilidad",
6083
+ globalRecommendedSkillsFallback: "Habilidades recomendadas",
6084
+ skillsEmptyHint: "A\xF1ade habilidades para dotar a tu Agent de nuevas funciones",
6085
+ knowledgeEmptyHint: "A\xF1ade documentos o notas como base de conocimiento",
6086
+ instructionEmptyHint: "A\xF1ade pautas de comportamiento o directrices",
6087
+ previewDoc: "Vista previa del documento",
6088
+ openInNewTab: "Abrir en nueva pesta\xF1a",
6089
+ noAvailableSpaces: "No hay espacios disponibles",
6090
+ contextBudget: "Presupuesto de contexto",
6091
+ refsTokens: "Referencias: ~{{val}} tokens",
6092
+ spacesTokens: "Espacios: ~{{val}} tokens",
6093
+ budgetWarning: "El contexto preasignado ocupa el {{percent}}%. Se recomienda mantenerlo por debajo del {{max}}% para dejar espacio al historial de conversaci\xF3n."
6094
+ },
6095
+ toolsTab: {
6096
+ title: "Habilidades y herramientas",
6097
+ description: "Configura las habilidades y herramientas disponibles para el Agent en tiempo de ejecuci\xF3n",
6098
+ modeLabel: "Modo",
6099
+ skillMode: "Modo habilidad (Recomendado)",
6100
+ toolMode: "Modo herramientas manuales",
6101
+ skillModeTitle: "Centrado en habilidades",
6102
+ skillModeDescription: "Integra habilidades estructuradas que incorporan autom\xE1ticamente las herramientas e instrucciones necesarias.",
6103
+ toolModeTitle: "Centrado en herramientas",
6104
+ toolModeDescription: "Selecciona herramientas at\xF3micas individuales de forma manual.",
6105
+ summaryTitle: "Resumen de configuraci\xF3n",
6106
+ summaryDescription: "{{skillCount}} habilidades vinculadas \xB7 {{toolCount}} herramientas disponibles en tiempo de ejecuci\xF3n",
6107
+ skillDataTitle: "Datos de habilidades",
6108
+ skillDataDescription: "Gestiona los par\xE1metros e instrucciones asociados a las habilidades.",
6109
+ openReferences: "Abrir referencias",
6110
+ noSkillsSelected: "No se han seleccionado habilidades",
6111
+ removeSkill: "Eliminar habilidad",
6112
+ viewSkillDetail: "Ver detalles",
6113
+ requiredSkills: "Habilidades obligatorias",
6114
+ recommendedSkills: "Habilidades recomendadas",
6115
+ recommendedHints: "Recomendaciones basadas en la configuraci\xF3n de tu Agent",
6116
+ runtimeGuidance: "Pautas en tiempo de ejecuci\xF3n",
6117
+ manualToolsTitle: "Herramientas manuales",
6118
+ manualToolsDescription: "Selecciona herramientas espec\xEDficas para necesidades particulares.",
6119
+ showManualTools: "Mostrar herramientas manuales",
6120
+ hideManualTools: "Ocultar herramientas manuales",
6121
+ manualToolsCollapsed: "{{count}} herramientas manuales seleccionadas. Expande para editar la lista completa.",
6122
+ noToolsSelected: "No se han seleccionado herramientas"
6123
+ },
6124
+ tools: {
6125
+ createAgent: {
6126
+ description: "Crea un nuevo Agent con configuraci\xF3n personalizada, prompt de sistema y modelo.",
6127
+ params: {
6128
+ name: "Nombre del Agent.",
6129
+ model: "ID del modelo a utilizar.",
6130
+ provider: "Proveedor del modelo.",
6131
+ prompt: "Instrucciones del prompt del sistema.",
6132
+ introduction: "Breve presentaci\xF3n o descripci\xF3n del Agent.",
6133
+ greeting: {
6134
+ desc: "Mensaje de bienvenida y opciones iniciales del Agent.",
6135
+ stringDesc: "Un texto de saludo sencillo.",
6136
+ objectDesc: "Un objeto de bienvenida estructurado con texto y opciones.",
6137
+ texts: {
6138
+ text: "Contenido del mensaje de bienvenida."
6139
+ },
6140
+ menu: {
6141
+ desc: "Lista de opciones de inicio r\xE1pido interactivas.",
6142
+ id: "Identificador \xFAnico de la opci\xF3n de men\xFA.",
6143
+ label: "Texto que se muestra en el bot\xF3n.",
6144
+ userMessage: "Mensaje enviado cuando el usuario hace clic en la opci\xF3n."
6145
+ }
6146
+ },
6147
+ isPublic: "Indica si el Agent debe ser p\xFAblico en la plaza.",
6148
+ allowFork: "Indica si otros usuarios pueden copiar este Agent.",
6149
+ tags: "Lista de etiquetas para categorizaci\xF3n.",
6150
+ tools: "Lista de nombres de herramientas que el Agent puede utilizar.",
6151
+ linkedSpaces: "Lista de IDs de espacios a los que el Agent tiene acceso.",
6152
+ references: {
6153
+ desc: "Documentos de referencia y base de conocimiento para el Agent.",
6154
+ dbKey: "Clave de base de datos del documento referenciado.",
6155
+ title: "T\xEDtulo del documento.",
6156
+ type: "Tipo de referencia (knowledge o instruction)."
6157
+ },
6158
+ temperature: "Controla la aleatoriedad de las respuestas (0 a 2).",
6159
+ top_p: "Par\xE1metro de muestreo por n\xFAcleo (0 a 1).",
6160
+ frequency_penalty: "Penaliza la repetici\xF3n de palabras (-2 a 2).",
6161
+ presence_penalty: "Fomenta la introducci\xF3n de nuevos temas (-2 a 2).",
6162
+ max_tokens: "N\xFAmero m\xE1ximo de tokens a generar.",
6163
+ reasoning_effort: "Esfuerzo de razonamiento para modelos compatibles (low, medium, high)."
6164
+ }
6165
+ },
6166
+ checkEnv: {
6167
+ description: "Comprueba el entorno de ejecuci\xF3n actual y las herramientas disponibles.",
6168
+ params: {
6169
+ check: "Tipo de comprobaci\xF3n: 'context' devuelve informaci\xF3n del entorno, 'build' ejecuta una comprobaci\xF3n de compilaci\xF3n.",
6170
+ key: "Opcional: nombre de la herramienta a comprobar (p. ej., node, bun, git)."
6171
+ }
6172
+ },
6173
+ deleteSpaces: {
6174
+ description: "Busca y elimina espacios del usuario actual por nombre o ID. Acci\xF3n peligrosa: muestra primero una vista previa y requiere confirmaci\xF3n.",
6175
+ params: {
6176
+ query: "T\xE9rmino de b\xFAsqueda para filtrar los espacios a eliminar.",
6177
+ matchMode: "Modo de coincidencia: prefix, exact, contains o spaceId.",
6178
+ confirmedSpaceIds: "Lista de IDs de espacios confirmados para su eliminaci\xF3n."
6179
+ }
6180
+ },
6181
+ listUserSpaces: {
6182
+ description: "Enumera todos los espacios propiedad del usuario o en los que participa.",
6183
+ params: {
6184
+ brief: "Devuelve solo metadatos b\xE1sicos para ahorrar tokens de contexto."
6185
+ }
6186
+ },
6187
+ read: {
6188
+ description: "Lee cualquier registro de datos mediante su clave de base de datos.",
6189
+ params: {
6190
+ dbKey: "Clave de base de datos del registro (p. ej., PAGE-xxx, dialog-xxx).",
6191
+ waitRemote: "Indica si sincronizar los datos m\xE1s recientes del servidor remoto antes de devolverlos."
6192
+ }
6193
+ },
6194
+ rememberMemory: {
6195
+ description: "Guarda preferencias del usuario o acuerdos duraderos en la memoria epis\xF3dica a largo plazo.",
4937
6196
  params: {
4938
- content: "\u5177\u4F53\u7684\u306A\u8A18\u61B6\u5185\u5BB9\uFF08\u4F8B\uFF1A'\u30E6\u30FC\u30B6\u30FC\u306F TypeScript \u3067\u306E\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u3092\u597D\u307F\u307E\u3059\u3002'\uFF09\u3002",
4939
- tags: "\u3053\u306E\u8A18\u61B6\u306B\u4ED8\u3051\u308B\u30BF\u30B0\u306E\u914D\u5217\u3002\u5C06\u6765\u306E\u5206\u985E\u3068\u691C\u7D22\u306B\u4F7F\u7528\u3057\u307E\u3059\u3002"
6197
+ content: "Contenido espec\xEDfico del recuerdo.",
6198
+ tags: "Etiquetas para categorizar y buscar el recuerdo en el futuro."
4940
6199
  }
4941
6200
  }
4942
6201
  },
4943
- agentSquare: "\u5E83\u5834"
6202
+ agentSquare: "Plaza"
4944
6203
  }
4945
6204
  }
4946
6205
  };
@@ -5312,6 +6571,11 @@ var chat_locale_default = {
5312
6571
  runtimeTarget: {
5313
6572
  intentBadge: "Target: {{device}} (intent)"
5314
6573
  },
6574
+ spaceContext: {
6575
+ badge: "Space context",
6576
+ spaceFolderTitle: "Space folder: {{path}}",
6577
+ cwdTitle: "Actual working directory: {{path}}"
6578
+ },
5315
6579
  gemini: {
5316
6580
  title: "Image Generation",
5317
6581
  count: "{{count}} images generated"
@@ -5412,6 +6676,14 @@ var chat_locale_default = {
5412
6676
  noSummary: "(no summary)"
5413
6677
  },
5414
6678
  chat: {
6679
+ toolCards: {
6680
+ title: "Tool cards",
6681
+ newFileDiff: "Diff for new files",
6682
+ newFileDiffDesc: "By default, only the file path is shown. Enable to show final content and the Diff switch.",
6683
+ shellTree: "Output of tree commands",
6684
+ shellTreeDesc: "By default, only the command and exit code are shown. Enable to show the directory tree.",
6685
+ shellTreeHidden: "Directory tree output is hidden. You can enable it in chat settings."
6686
+ },
5415
6687
  agentBehavior: {
5416
6688
  title: "Agent Automation Boundaries",
5417
6689
  selfUpdate: {
@@ -5484,6 +6756,9 @@ var chat_locale_default = {
5484
6756
  loginToUseAssistants: "Sign in to use page assistants",
5485
6757
  noAvailableAgents: "No Agents available",
5486
6758
  pageAssistant: "Page assistant",
6759
+ pickerPlatformCredits: "Platform credits",
6760
+ pickerPlatformCreditsTitle: "Billed per token from your platform credits",
6761
+ pickerBillingNote: "Agents marked with the coin icon are billed per token from your platform credits; unmarked ones use that agent's own channel and never touch your platform credits.",
5487
6762
  selectAssistant: "Choose an assistant",
5488
6763
  switchAssistant: "Switch assistant",
5489
6764
  switchAssistantFailed: "Failed to switch assistants. Please try again."
@@ -5840,6 +7115,11 @@ var chat_locale_default = {
5840
7115
  runtimeTarget: {
5841
7116
  intentBadge: "\u76EE\u6807\uFF1A{{device}}\uFF08\u610F\u56FE\uFF09"
5842
7117
  },
7118
+ spaceContext: {
7119
+ badge: "\u7A7A\u95F4\u4E0A\u4E0B\u6587",
7120
+ spaceFolderTitle: "\u7A7A\u95F4\u6587\u4EF6\u5939\uFF1A{{path}}",
7121
+ cwdTitle: "\u5B9E\u9645\u5DE5\u4F5C\u76EE\u5F55\uFF1A{{path}}"
7122
+ },
5843
7123
  gemini: {
5844
7124
  title: "\u56FE\u50CF\u751F\u6210",
5845
7125
  count: "\u751F\u6210\u4E86 {{count}} \u5F20\u56FE\u7247"
@@ -5940,6 +7220,14 @@ var chat_locale_default = {
5940
7220
  noSummary: "\uFF08\u65E0\u6458\u8981\uFF09"
5941
7221
  },
5942
7222
  chat: {
7223
+ toolCards: {
7224
+ title: "\u5DE5\u5177\u5361\u7247",
7225
+ newFileDiff: "\u65B0\u5EFA\u6587\u4EF6\u7684 Diff",
7226
+ newFileDiffDesc: "\u9ED8\u8BA4\u53EA\u663E\u793A\u6587\u4EF6\u8DEF\u5F84\uFF1B\u5F00\u542F\u540E\u663E\u793A\u6700\u7EC8\u5185\u5BB9\u4E0E Diff \u5207\u6362\u3002",
7227
+ shellTree: "\u6267\u884C tree \u7684\u547D\u4EE4\u8F93\u51FA",
7228
+ shellTreeDesc: "\u9ED8\u8BA4\u53EA\u663E\u793A\u547D\u4EE4\u4E0E\u9000\u51FA\u7801\uFF1B\u5F00\u542F\u540E\u663E\u793A\u76EE\u5F55\u6811\u5185\u5BB9\u3002",
7229
+ shellTreeHidden: "\u76EE\u5F55\u6811\u8F93\u51FA\u5DF2\u9690\u85CF\uFF0C\u53EF\u5728\u5BF9\u8BDD\u8BBE\u7F6E\u4E2D\u5F00\u542F\u3002"
7230
+ },
5943
7231
  agentBehavior: {
5944
7232
  title: "Agent \u81EA\u52A8\u5316\u8FB9\u754C",
5945
7233
  selfUpdate: {
@@ -6012,6 +7300,9 @@ var chat_locale_default = {
6012
7300
  loginToUseAssistants: "\u767B\u5F55\u540E\u624D\u80FD\u4F7F\u7528\u9875\u9762\u52A9\u624B",
6013
7301
  noAvailableAgents: "\u6682\u65E0\u53EF\u7528 Agent",
6014
7302
  pageAssistant: "\u9875\u9762\u52A9\u624B",
7303
+ pickerPlatformCredits: "\u5E73\u53F0\u79EF\u5206",
7304
+ pickerPlatformCreditsTitle: "\u6309 token \u4ECE\u4F60\u7684\u5E73\u53F0\u79EF\u5206\u6263\u8D39",
7305
+ pickerBillingNote: "\u5E26\u91D1\u5E01\u6807\u8BB0\u7684 agent \u6309 token \u4ECE\u4F60\u7684\u5E73\u53F0\u79EF\u5206\u6263\u8D39\uFF1B\u6CA1\u6807\u8BB0\u7684\u8D70\u8BE5 agent \u81EA\u5DF1\u7684\u901A\u9053\uFF0C\u4E0D\u6263\u4F60\u7684\u5E73\u53F0\u79EF\u5206\u3002",
6015
7306
  selectAssistant: "\u9009\u62E9\u52A9\u624B",
6016
7307
  switchAssistant: "\u5207\u6362\u52A9\u624B",
6017
7308
  switchAssistantFailed: "\u5207\u6362\u52A9\u624B\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5"
@@ -6368,6 +7659,11 @@ var chat_locale_default = {
6368
7659
  runtimeTarget: {
6369
7660
  intentBadge: "\u76EE\u6A19\uFF1A{{device}}\uFF08\u610F\u5716\uFF09"
6370
7661
  },
7662
+ spaceContext: {
7663
+ badge: "\u7A7A\u9593\u4E0A\u4E0B\u6587",
7664
+ spaceFolderTitle: "\u7A7A\u9593\u8CC7\u6599\u593E\uFF1A{{path}}",
7665
+ cwdTitle: "\u5BE6\u969B\u5DE5\u4F5C\u76EE\u9304\uFF1A{{path}}"
7666
+ },
6371
7667
  gemini: {
6372
7668
  title: "\u5716\u50CF\u751F\u6210",
6373
7669
  count: "\u751F\u6210\u4E86 {{count}} \u5F35\u5716\u7247"
@@ -6468,6 +7764,14 @@ var chat_locale_default = {
6468
7764
  noSummary: "\uFF08\u7121\u6458\u8981\uFF09"
6469
7765
  },
6470
7766
  chat: {
7767
+ toolCards: {
7768
+ title: "\u5DE5\u5177\u5361\u7247",
7769
+ newFileDiff: "\u65B0\u589E\u6A94\u6848\u7684 Diff",
7770
+ newFileDiffDesc: "\u9810\u8A2D\u53EA\u986F\u793A\u6A94\u6848\u8DEF\u5F91\uFF1B\u958B\u555F\u5F8C\u986F\u793A\u6700\u7D42\u5167\u5BB9\u8207 Diff \u5207\u63DB\u3002",
7771
+ shellTree: "\u57F7\u884C tree \u7684\u547D\u4EE4\u8F38\u51FA",
7772
+ shellTreeDesc: "\u9810\u8A2D\u53EA\u986F\u793A\u547D\u4EE4\u8207\u7D50\u675F\u4EE3\u78BC\uFF1B\u958B\u555F\u5F8C\u986F\u793A\u76EE\u9304\u6A39\u5167\u5BB9\u3002",
7773
+ shellTreeHidden: "\u76EE\u9304\u6A39\u8F38\u51FA\u5DF2\u96B1\u85CF\uFF0C\u53EF\u5728\u5C0D\u8A71\u8A2D\u5B9A\u4E2D\u958B\u555F\u3002"
7774
+ },
6471
7775
  agentBehavior: {
6472
7776
  title: "Agent \u81EA\u52D5\u5316\u908A\u754C",
6473
7777
  selfUpdate: {
@@ -6540,6 +7844,9 @@ var chat_locale_default = {
6540
7844
  loginToUseAssistants: "\u767B\u5165\u5F8C\u624D\u80FD\u4F7F\u7528\u9801\u9762\u52A9\u624B",
6541
7845
  noAvailableAgents: "\u66AB\u7121\u53EF\u7528 Agent",
6542
7846
  pageAssistant: "\u9801\u9762\u52A9\u624B",
7847
+ pickerPlatformCredits: "\u5E73\u53F0\u7A4D\u5206",
7848
+ pickerPlatformCreditsTitle: "\u6309 token \u5F9E\u4F60\u7684\u5E73\u53F0\u7A4D\u5206\u6263\u8CBB",
7849
+ pickerBillingNote: "\u5E36\u91D1\u5E63\u6A19\u8A18\u7684 agent \u6309 token \u5F9E\u4F60\u7684\u5E73\u53F0\u7A4D\u5206\u6263\u8CBB\uFF1B\u6C92\u6A19\u8A18\u7684\u8D70\u8A72 agent \u81EA\u5DF1\u7684\u901A\u9053\uFF0C\u4E0D\u6263\u4F60\u7684\u5E73\u53F0\u7A4D\u5206\u3002",
6543
7850
  selectAssistant: "\u9078\u64C7\u52A9\u624B",
6544
7851
  switchAssistant: "\u5207\u63DB\u52A9\u624B",
6545
7852
  switchAssistantFailed: "\u5207\u63DB\u52A9\u624B\u5931\u6557\uFF0C\u8ACB\u91CD\u8A66"
@@ -6902,6 +8209,11 @@ var chat_locale_default = {
6902
8209
  runtimeTarget: {
6903
8210
  intentBadge: "\u30BF\u30FC\u30B2\u30C3\u30C8: {{device}}\uFF08\u610F\u56F3\uFF09"
6904
8211
  },
8212
+ spaceContext: {
8213
+ badge: "\u30B9\u30DA\u30FC\u30B9\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8",
8214
+ spaceFolderTitle: "\u30B9\u30DA\u30FC\u30B9\u30D5\u30A9\u30EB\u30C0\u30FC: {{path}}",
8215
+ cwdTitle: "\u5B9F\u969B\u306E\u4F5C\u696D\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA: {{path}}"
8216
+ },
6905
8217
  gemini: {
6906
8218
  title: "\u753B\u50CF\u751F\u6210",
6907
8219
  count: "{{count}} \u679A\u306E\u753B\u50CF\u3092\u751F\u6210\u3057\u307E\u3057\u305F"
@@ -7002,6 +8314,14 @@ var chat_locale_default = {
7002
8314
  noSummary: "\uFF08\u8981\u7D04\u306A\u3057\uFF09"
7003
8315
  },
7004
8316
  chat: {
8317
+ toolCards: {
8318
+ title: "\u30C4\u30FC\u30EB\u30AB\u30FC\u30C9",
8319
+ newFileDiff: "\u65B0\u898F\u30D5\u30A1\u30A4\u30EB\u306E Diff",
8320
+ newFileDiffDesc: "\u521D\u671F\u8A2D\u5B9A\u3067\u306F\u30D5\u30A1\u30A4\u30EB\u30D1\u30B9\u306E\u307F\u8868\u793A\u3057\u307E\u3059\u3002\u6709\u52B9\u306B\u3059\u308B\u3068\u6700\u7D42\u5185\u5BB9\u3068 Diff \u306E\u5207\u308A\u66FF\u3048\u3092\u8868\u793A\u3057\u307E\u3059\u3002",
8321
+ shellTree: "tree \u30B3\u30DE\u30F3\u30C9\u306E\u51FA\u529B",
8322
+ shellTreeDesc: "\u521D\u671F\u8A2D\u5B9A\u3067\u306F\u30B3\u30DE\u30F3\u30C9\u3068\u7D42\u4E86\u30B3\u30FC\u30C9\u306E\u307F\u8868\u793A\u3057\u307E\u3059\u3002\u6709\u52B9\u306B\u3059\u308B\u3068\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u30C4\u30EA\u30FC\u3092\u8868\u793A\u3057\u307E\u3059\u3002",
8323
+ shellTreeHidden: "\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u30C4\u30EA\u30FC\u306E\u51FA\u529B\u306F\u975E\u8868\u793A\u3067\u3059\u3002\u5BFE\u8A71\u8A2D\u5B9A\u3067\u8868\u793A\u3092\u6709\u52B9\u306B\u3067\u304D\u307E\u3059\u3002"
8324
+ },
7005
8325
  agentBehavior: {
7006
8326
  title: "Agent \u81EA\u52D5\u5316\u306E\u5883\u754C",
7007
8327
  selfUpdate: {
@@ -7074,10 +8394,1115 @@ var chat_locale_default = {
7074
8394
  loginToUseAssistants: "\u30DA\u30FC\u30B8\u30A2\u30B7\u30B9\u30BF\u30F3\u30C8\u3092\u5229\u7528\u3059\u308B\u306B\u306F\u30ED\u30B0\u30A4\u30F3\u304C\u5FC5\u8981\u3067\u3059",
7075
8395
  noAvailableAgents: "\u5229\u7528\u53EF\u80FD\u306A Agent \u304C\u3042\u308A\u307E\u305B\u3093",
7076
8396
  pageAssistant: "\u30DA\u30FC\u30B8\u30A2\u30B7\u30B9\u30BF\u30F3\u30C8",
8397
+ pickerPlatformCredits: "\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u30AF\u30EC\u30B8\u30C3\u30C8",
8398
+ pickerPlatformCreditsTitle: "\u30C8\u30FC\u30AF\u30F3\u3054\u3068\u306B\u3042\u306A\u305F\u306E\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u30AF\u30EC\u30B8\u30C3\u30C8\u304B\u3089\u8AB2\u91D1\u3055\u308C\u307E\u3059",
8399
+ pickerBillingNote: "\u30B3\u30A4\u30F3\u30A2\u30A4\u30B3\u30F3\u304C\u4ED8\u3044\u305F agent \u306F\u3001\u30C8\u30FC\u30AF\u30F3\u3054\u3068\u306B\u3042\u306A\u305F\u306E\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u30AF\u30EC\u30B8\u30C3\u30C8\u304B\u3089\u8AB2\u91D1\u3055\u308C\u307E\u3059\u3002\u30A2\u30A4\u30B3\u30F3\u306E\u306A\u3044 agent \u306F\u305D\u306E agent \u81EA\u8EAB\u306E\u30C1\u30E3\u30CD\u30EB\u3092\u4F7F\u3044\u3001\u3042\u306A\u305F\u306E\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u30AF\u30EC\u30B8\u30C3\u30C8\u306F\u6D88\u8CBB\u3057\u307E\u305B\u3093\u3002",
7077
8400
  selectAssistant: "\u30A2\u30B7\u30B9\u30BF\u30F3\u30C8\u3092\u9078\u629E",
7078
8401
  switchAssistant: "\u30A2\u30B7\u30B9\u30BF\u30F3\u30C8\u3092\u5207\u308A\u66FF\u3048",
7079
8402
  switchAssistantFailed: "\u30A2\u30B7\u30B9\u30BF\u30F3\u30C8\u306E\u5207\u308A\u66FF\u3048\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u3082\u3046\u4E00\u5EA6\u304A\u8A66\u3057\u304F\u3060\u3055\u3044\u3002"
7080
8403
  }
8404
+ },
8405
+ de: {
8406
+ translation: {
8407
+ AddAgent: "Agent hinzuf\xFCgen",
8408
+ mediaJob: {
8409
+ auto: "Automatisch",
8410
+ none: "Keine",
8411
+ languageLine: "Sprache: {{source}} \u2192 {{target}}",
8412
+ sourceLanguage: "Ausgangssprache",
8413
+ targetLanguage: "Zielsprache",
8414
+ autoDetect: "Automatisch erkennen",
8415
+ noTranslate: "Nicht \xFCbersetzen"
8416
+ },
8417
+ selectedAgentsCount: "{{count}} Agent(s) ausgew\xE4hlt",
8418
+ addSelectedAgents: "Ausgew\xE4hlte hinzuf\xFCgen",
8419
+ clearSelection: "Auswahl aufheben",
8420
+ recommended: "Empfohlen",
8421
+ favoriteAgent: "Favorit",
8422
+ myAgent: "Meine",
8423
+ capabilityMatch: "F\xE4higkeits\xFCbereinstimmung",
8424
+ confirm: "Best\xE4tigen",
8425
+ cancel: "Abbrechen",
8426
+ clickHere: "Hier klicken",
8427
+ clearConversation: "Unterhaltung leeren",
8428
+ compressionError: "Bildkomprimierung fehlgeschlagen. Originalbilder werden gesendet.",
8429
+ compressingImages: "Bilder werden komprimiert...",
8430
+ copyContent: "Inhalt kopieren",
8431
+ copyDiagnostics: "Diagnosedaten kopieren",
8432
+ finishReasonLengthNotice: "Antwort wurde am Ausgabelimit des Modells abgeschnitten",
8433
+ retryProgress: "Automatischer Wiederholungsversuch {{attempt}}/{{maxAttempts}} \xB7 {{seconds}}s",
8434
+ sendErrorCard: {
8435
+ title: "Senden fehlgeschlagen",
8436
+ retry: "Wiederholen",
8437
+ compactAndRetry: "Komprimieren & wiederholen",
8438
+ newDialog: "Neue Unterhaltung",
8439
+ switchModel: "Modell wechseln",
8440
+ viewDetails: "Technische Details",
8441
+ hideDetails: "Details ausblenden",
8442
+ suggestion: "Vorschlag",
8443
+ verifyAccount: "Konto best\xE4tigen"
8444
+ },
8445
+ copyFailed: "Kopieren fehlgeschlagen",
8446
+ contextAutoCompressed: "Kontext automatisch komprimiert, um im Modellfenster zu bleiben",
8447
+ contextAutoCompressFailed: "Automatische Kontextkomprimierung fehlgeschlagen",
8448
+ copySuccess: "Erfolgreich kopiert",
8449
+ createDialog: "Dialog erstellen",
8450
+ createDialogFromAI: "Dialog mit KI erstellen",
8451
+ createRobot: "Agent erstellen",
8452
+ customizeYourAI: "Eigene KI anpassen",
8453
+ AgentAddFailed: "Fehler beim Hinzuf\xFCgen des Agent",
8454
+ AgentAddedSuccess: "Agent erfolgreich hinzugef\xFCgt",
8455
+ MultipleAgentsAddedSuccess: "{{count}} Agents erfolgreich hinzugef\xFCgt",
8456
+ AgentRemoveFailed: "Fehler beim Entfernen des Agent",
8457
+ AgentRemovedSuccess: "Agent erfolgreich entfernt",
8458
+ Agents: "Agents",
8459
+ delete: "L\xF6schen",
8460
+ deleteContentConfirmation: "Sind Sie sicher, dass Sie diesen Inhalt l\xF6schen m\xF6chten? Diese Aktion kann nicht r\xFCckg\xE4ngig gemacht werden.",
8461
+ deleteContentTitle: "\u201E{{title}}\u201C l\xF6schen",
8462
+ deleteMovedToTrash: "\u201E{{title}}\u201C in den Papierkorb verschoben",
8463
+ deleteFailed: "L\xF6schen fehlgeschlagen",
8464
+ deleteMessage: "Nachricht l\xF6schen",
8465
+ deleteSuccess: "Erfolgreich gel\xF6scht",
8466
+ confirmDelete: "Klicken Sie erneut, um das L\xF6schen zu best\xE4tigen",
8467
+ dropToUpload: "Dateien zum Hochladen hier ablegen",
8468
+ excelIsEmpty: "Excel-Datei ist leer",
8469
+ excelIsEmptyOrInvalid: "Excel-Datei ist leer oder ung\xFCltig",
8470
+ excelParseError: "Fehler beim Parsen der Excel-Datei",
8471
+ FailedToLoadAgents: "Fehler beim Laden der Agents",
8472
+ fileReadError: "Fehler beim Lesen des Dateiinhalts",
8473
+ First: "Zuerst",
8474
+ Info: "Info",
8475
+ LoadingAgents: "Agents werden geladen...",
8476
+ messageInput: "Nachrichteneingabefeld",
8477
+ messageInputArea: "Nachrichteneingabebereich mit Datei-Upload",
8478
+ messageOrFileHere: "Nachricht eingeben oder Datei hochladen...",
8479
+ pastedTextChip: "Eingef\xFCgter Text #{{id}} \xB7 {{lines}} Zeilen \xB7 {{size}}",
8480
+ removePastedText: "Eingef\xFCgten Text entfernen",
8481
+ expandPastedText: "Eingef\xFCgten Text in die Eingabe \xFCbernehmen",
8482
+ Mode: "Modus",
8483
+ ModeUpdateFailed: "Fehler beim Aktualisieren des Modus",
8484
+ ModeUpdatedSuccess: "Modus erfolgreich aktualisiert",
8485
+ newchat: "Neuer Chat",
8486
+ NoAgents: "Noch keine Agents verf\xFCgbar",
8487
+ NoDescription: "Keine Beschreibung vorhanden",
8488
+ Orchestrated: "Orchestriert",
8489
+ Parallel: "Parallel",
8490
+ playAudio: "Audio abspielen",
8491
+ resend: "Erneut senden",
8492
+ Retry: "Wiederholen",
8493
+ saveContent: "Inhalt speichern",
8494
+ saveFailed: "Speichern fehlgeschlagen",
8495
+ saveSuccess: "Erfolgreich gespeichert",
8496
+ SelectAgentToAdd: "W\xE4hlen Sie einen Agent aus, der zum Dialog hinzugef\xFCgt werden soll",
8497
+ sendFail: "Fehler beim Senden der Nachricht",
8498
+ Sequential: "Sequentiell",
8499
+ ShowDialogConfigInfo: "Dialog-Einstellungen und -Informationen anzeigen",
8500
+ Tokens: "Tokens",
8501
+ Unnamed: "Unbenannt",
8502
+ uploadFile: "Datei hochladen",
8503
+ useServerProxy: "Transit-Dienst verwenden",
8504
+ viewDetails: "f\xFCr weitere Details",
8505
+ fileReadErrorMessage: "Fehler beim Lesen der Datei, bitte versuchen Sie es erneut.",
8506
+ excelEmptyMessage: "Excel-Datei ist leer oder ung\xFCltig.",
8507
+ excelNoDataMessage: "Keine Daten in der Excel-Datei gefunden.",
8508
+ excelParseErrorMessage: "Fehler beim Parsen der Excel-Datei, bitte Format pr\xFCfen.",
8509
+ excelUploadSuccess: "Excel-Datei erfolgreich hochgeladen und konvertiert!",
8510
+ docxUploadSuccess: "DOCX-Datei erfolgreich hochgeladen und konvertiert!",
8511
+ docxUploadError: "Fehler beim Hochladen der DOCX-Datei, bitte Format pr\xFCfen.",
8512
+ pdfUploadSuccess: "PDF-Datei erfolgreich hochgeladen und konvertiert!",
8513
+ pdfUploadError: "Fehler beim Hochladen der PDF-Datei, bitte Format pr\xFCfen.",
8514
+ compressingImagesMessage: "Bilder werden komprimiert, bitte warten...",
8515
+ compressionErrorMessage: "Bildkomprimierung fehlgeschlagen, Originalbilder werden gesendet.",
8516
+ sendFailMessage: "Fehler beim Senden der Nachricht, bitte versuchen Sie es erneut.",
8517
+ insufficientBalanceDetailed: "Unzureichendes Guthaben. Modell: {{modelName}}, maximale Kosten pro Nachricht: {{pricePerMessage}} Credits. Guthaben: {{balance}} Credits.",
8518
+ insufficientBalance: "Unzureichendes Guthaben",
8519
+ insufficientBalanceShortfall: "Sie ben\xF6tigen {{shortfall}} weitere Credits.",
8520
+ agentConfigMissing: "Agent-Konfiguration fehlt",
8521
+ agentConfigLoadFailed: "Fehler beim Laden der Agent-Konfiguration. Bitte versuchen Sie es erneut.",
8522
+ modelPricingMissing: "Informationen zu Modellpreisen fehlen",
8523
+ chooseAnotherModelContinue: "W\xE4hlen Sie ein anderes Modell, um fortzufahren, oder laden Sie Ihr Guthaben auf.",
8524
+ chooseAnotherModelDialogTitle: "Anderes Modell w\xE4hlen",
8525
+ useThisModelContinue: "Mit diesem Modell fortfahren",
8526
+ switchModelContinueSuccess: "Modell gewechselt und Unterhaltung fortgesetzt",
8527
+ contextReprocessingNotice: "Das System muss nach dem Modellwechsel oder dem Bearbeiten fr\xFCherer Nachrichten m\xF6glicherweise Teile dieser Unterhaltung erneut lesen.",
8528
+ switchModelContinueFailed: "Fehler beim Wechseln des Modells. Bitte versuchen Sie es erneut.",
8529
+ noAlternativeModels: "Keine anderen verf\xFCgbaren Modelle",
8530
+ noAvailableAgentMessage: "Keine verf\xFCgbare Agent-Nachricht",
8531
+ creditsUnit: "Credits",
8532
+ dialogUsageTitle: "Sitzungsnutzung",
8533
+ usageInputLabel: "Eingabe",
8534
+ usageOutputLabel: "Ausgabe",
8535
+ contextWindow: "Kontextfenster",
8536
+ contextUsageKnownChip: "{{percent}}%",
8537
+ contextUsageEstimatedChip: "~{{percent}}%",
8538
+ contextUsageUnknownChip: "{{tokens}}",
8539
+ contextUsageUnknownChipEstimated: "\u2248{{tokens}}",
8540
+ contextUsageLoadingChip: "\u2014",
8541
+ contextUsageChipLabel: "Kontextbelegung {{usage}}",
8542
+ contextUsageKnownPanel: "{{tokens}} / {{window}} \xB7 {{percent}}%",
8543
+ contextUsageUnknownPanel: "{{tokens}} Tokens \xB7 Fenster unbekannt",
8544
+ contextUsageUnknownPanelEstimated: "\u2248{{tokens}} Tokens \xB7 Fenster unbekannt",
8545
+ contextUsageUnknownHint: "F\xFCr dieses Modell ist kein Kontextfenster registriert; prozentuale Belegung ist nicht verf\xFCgbar.",
8546
+ contextUsageLoading: "Wird geladen\u2026",
8547
+ contextUsageCompact: "Kontext komprimieren",
8548
+ contextOccupancyEstimated: " (gesch\xE4tzt)",
8549
+ dialogCumulative: "Unterhaltung gesamt",
8550
+ dialogUsageTokensSection: "Sitzungs-Tokens",
8551
+ dialogUsageBillingSection: "Abrechnung",
8552
+ recharge: "Guthaben aufladen",
8553
+ stopAllGeneration: "Alle Generierungen anhalten",
8554
+ allMessagesAborted: "Alle Nachrichten wurden abgebrochen",
8555
+ send: "Senden",
8556
+ guideFromMessage: "Nachricht zitieren",
8557
+ guideSeeded: "In Eingabefeld eingef\xFCgt",
8558
+ guideEmptyContent: "Kein zitierbarer Text in dieser Nachricht",
8559
+ editMessage: "Nachricht bearbeiten",
8560
+ editSeeded: "Nachricht wird bearbeitet",
8561
+ editEmptyContent: "Kein bearbeitbarer Text in dieser Nachricht",
8562
+ editingMessageNotice: "Eine fr\xFChere Nachricht wird bearbeitet. Durch das Senden werden alle nachfolgenden Nachrichten verworfen. Das System muss m\xF6glicherweise Teile dieser Unterhaltung erneut lesen.",
8563
+ cancelEditingMessage: "Nachrichtenbearbeitung abbrechen",
8564
+ branchMessage: "Verzweigen",
8565
+ branchCreated: "Verzweigter Chat erstellt",
8566
+ branchFailed: "Fehler beim Erstellen des verzweigten Chats",
8567
+ stopBeforeDelete: "Generierung vor dem L\xF6schen anhalten",
8568
+ messageQueued: "Nachricht eingereiht; wird nach dem aktuellen Durchgang gesendet",
8569
+ cannotSendFileDuringLoop: "Agent wird ausgef\xFChrt. Bitte warten Sie mit dem Senden von Anh\xE4ngen.",
8570
+ contextChecking: "Kontextfenster dieses Modells wird \xFCberpr\xFCft\u2026",
8571
+ contextCompacting: "Diese Unterhaltung ist lang. Verlauf wird komprimiert\u2026",
8572
+ waitingForModel: "Kontext ist bereit. Warten auf das Modell\u2026",
8573
+ modelWindowReduced: "Zu einem Modell mit kleinerem Kontextfenster gewechselt ({{window}}). Diese Unterhaltung belegt sch\xE4tzungsweise {{percent}}%; die n\xE4chste Nachricht erfordert m\xF6glicherweise eine Komprimierung.",
8574
+ contextWillCompactOnSend: "Diese Unterhaltung \xFCberschreitet den empfohlenen Bereich des neuen Modells. Der Verlauf wird vor dem Senden komprimiert.",
8575
+ currentMessageTooLarge: "Diese Nachricht oder ihre Anh\xE4nge \xFCberschreiten das Kontextfenster des Modells. K\xFCrzen Sie den Inhalt, entfernen Sie Anh\xE4nge oder w\xE4hlen Sie ein Modell mit gr\xF6\xDFerem Kontextfenster.",
8576
+ compactionTimedOut: "Zeit\xFCberschreitung bei der Verlaufskomprimierung; Ihre Nachricht wurde nicht an das Modell \xFCbermittelt. Wiederholen Sie den Vorgang, starten Sie einen neuen Chat oder w\xE4hlen Sie ein Modell mit gr\xF6\xDFerem Kontextfenster.",
8577
+ compactionFailedFallback: "Komprimierung fehlgeschlagen. Fr\xFCherer Verlauf wurde gek\xFCrzt, um fortzufahren; einige fr\xFChere Kontexte sind m\xF6glicherweise nicht verf\xFCgbar.",
8578
+ contextRejected: "Das Modell kann den aktuellen Kontext nicht annehmen. Komprimieren Sie den Chat, starten Sie einen neuen Chat oder w\xE4hlen Sie ein Modell mit gr\xF6\xDFerem Kontextfenster.",
8579
+ sendAlreadyRunning: "Diese Nachricht wird noch verarbeitet. Halten Sie die aktuelle Anfrage an oder reihen Sie eine reine Textnachricht ein.",
8580
+ sendStateRecovered: "Ein veralteter Sendezustand wurde erkannt und bereinigt. Bitte senden Sie die Nachricht erneut.",
8581
+ agentUnavailable: "F\xFCr diesen Chat ist kein Assistent verf\xFCgbar. W\xE4hlen Sie einen aus und versuchen Sie es erneut; Ihre Nachricht wurde behalten.",
8582
+ queuedText: "Nachricht in Warteschlange eingereiht; wird nach dem aktuellen Durchgang gesendet",
8583
+ queuedAttachmentBlocked: "Ein Durchgang l\xE4uft noch. Nachrichten mit Anh\xE4ngen oder mehreren Bildern k\xF6nnen nicht eingereiht werden; senden Sie diese nach Abschluss.",
8584
+ contextUsageEstimate: "gesch\xE4tzt",
8585
+ contextUsagePercentEstimate: "Gesch\xE4tzte Kontextbelegung {{percent}}%",
8586
+ assistantReplyStarting: "Wird verarbeitet\u2026",
8587
+ memorySaved: "Ged\xE4chtnis gespeichert",
8588
+ memorySavedByAssistant: "Ged\xE4chtnis vom Assistenten gespeichert",
8589
+ memoryKindProcedural: "Prozedural",
8590
+ memoryKindEpisodic: "Episodisch",
8591
+ memoryKindSemantic: "Semantisch",
8592
+ memoryVisibilityShared: "Geteilt",
8593
+ memoryVisibilityPublic: "\xD6ffentlich",
8594
+ memoryShowAll: "Alle {{count}} Ged\xE4chtniseintr\xE4ge anzeigen",
8595
+ memoryCollapse: "Einklappen",
8596
+ queueBadgeLabel: "Warteschlangennachrichten",
8597
+ queueBadgeQueued: "in Warteschlange",
8598
+ queueBadgeTitle: "Warteschlangennachrichten",
8599
+ queueBadgeClear: "Leeren",
8600
+ queueBadgeMore: "{{n}} weitere",
8601
+ composerPlaceholderQueuing: "Antwortet\u2026 Ihre Eingabe wird eingereiht",
8602
+ composerPlaceholderDrainPaused: "Warte auf Best\xE4tigung\u2026",
8603
+ composerPlaceholderError: "Senden fehlgeschlagen \u2013 nach Antwort wiederholen",
8604
+ MaxContext: "Max. Kontext",
8605
+ Compression: "Kontextkomprimierung",
8606
+ CompressionTimes: "{{count}} Mal",
8607
+ inheritedContextNotice: "Dieser Chat erbt den Kontext aus einer vorherigen Unterhaltung",
8608
+ inheritedContextNoticeWithTitle: "Dieser Chat erbt den Kontext aus \u201E{{title}}\u201C",
8609
+ openSourceDialog: "Urspr\xFCnglichen Chat \xF6ffnen",
8610
+ loadError: "Fehler beim Laden; einige Nachrichten sind m\xF6glicherweise unvollst\xE4ndig",
8611
+ selectADialog: "W\xE4hlen Sie einen Dialog aus",
8612
+ privateDialogGuestTitle: "Dies ist ein privater Dialog-Link",
8613
+ privateDialogGuestHint: "Die Route /dialog-\u2026 ist nur f\xFCr angemeldete Benutzer mit Zugriffsberechtigung f\xFCr diesen Dialog verf\xFCgbar. Wenn Sie ihn mit jemand anderem teilen m\xF6chten, verwenden Sie stattdessen einen /share/<token>-Link.",
8614
+ thinkingProcess: "Denkprozess",
8615
+ thinkingActive: "Denkt nach\u2026",
8616
+ thinkingDone: "{{seconds}}s nachgedacht",
8617
+ thinkingContent: "Denkinhalt",
8618
+ answerContent: "Antwort",
8619
+ imagePickerError: "Fehler bei der Bildauswahl: {{error}}",
8620
+ shareAttachmentWarning: "Anh\xE4nge f\xFCr Freigabebefehl ignoriert",
8621
+ uploading: "Wird hochgeladen...",
8622
+ mediaFileTooLarge: "Audio-/Videodateien d\xFCrfen maximal 120 MB gro\xDF sein",
8623
+ mediaUploadingPercent: "Wird hochgeladen: {{percent}}%",
8624
+ mediaJobCreating: "Aufgabe wird erstellt\u2026",
8625
+ mediaUploadFailed: "Upload fehlgeschlagen",
8626
+ mediaJobCreateFailed: "Fehler beim Erstellen der Medienaufgabe",
8627
+ mediaUploadRemove: "{{name}} entfernen",
8628
+ mediaUploadFailedShort: "Fehlgeschlagen",
8629
+ uploadSuccess: "Upload abgeschlossen",
8630
+ uploadFailed: "Upload fehlgeschlagen",
8631
+ deleteMessageTitle: "Nachricht l\xF6schen",
8632
+ delConfirm: "Diesen Werkzeug-Output l\xF6schen?",
8633
+ delConfirmMessage: "Diese Nachricht l\xF6schen?",
8634
+ bash: {
8635
+ blockedTitle: "Befehlsausf\xFChrung blockiert",
8636
+ blockedDesc: "Dieser Befehl erfordert eine Best\xE4tigung vor der Ausf\xFChrung",
8637
+ runUnsafe: "Trotzdem ausf\xFChren",
8638
+ exitCode: "Exit-Code: {{code}}",
8639
+ noOutput: "(keine Ausgabe)"
8640
+ },
8641
+ codeEdit: {
8642
+ viewFinal: "Endg\xFCltige Datei anzeigen",
8643
+ viewDiff: "Diff anzeigen",
8644
+ conflictTitle: "\xC4nderungskonflikt erkannt",
8645
+ conflictMsg: "Die Datei wurde extern ge\xE4ndert. M\xF6chten Sie sie \xFCberschreiben?",
8646
+ overwrite: "\xDCberschreiben",
8647
+ confirmOverwritePrompt: "Ein fr\xFCherer Versuch, in {{path}} zu schreiben, ist fehlgeschlagen, da die Datei existiert und \xDCberschreiben nicht gestattet war. Bitte best\xE4tigen Sie, ob Sie die Datei mit dem neuesten Inhalt \xFCberschreiben m\xF6chten."
8648
+ },
8649
+ tool: {
8650
+ failed: "Werkzeugausf\xFChrung fehlgeschlagen",
8651
+ executing: "Werkzeug wird ausgef\xFChrt...",
8652
+ requiresApproval: "Best\xE4tigung erforderlich",
8653
+ resumePrompt: "M\xF6chten Sie fortfahren?",
8654
+ preflightRepairing: "Vorabpr\xFCfung hat {{count}} Problem(e) gefunden, automatische Reparatur\u2026",
8655
+ moreSteps: "{{count}} weitere Schritte\u2026"
8656
+ },
8657
+ toolConfirm: {
8658
+ executing: "Wird ausgef\xFChrt...",
8659
+ patchApplied: "Patch angewendet",
8660
+ executed: "{{name}} ausgef\xFChrt",
8661
+ retryApplyPatch: "Patch erneut anwenden",
8662
+ retryExec: "{{name}} wiederholen",
8663
+ confirmDeleteSpaces: "Sind Sie sicher, dass Sie diese Spaces l\xF6schen m\xF6chten?",
8664
+ applyPatchDanger: "Patch anwenden (potenziell destruktiv)",
8665
+ confirmExec: "{{name}} ausf\xFChren (Best\xE4tigung erforderlich)",
8666
+ successPatch: "\u2705 Patch erfolgreich auf {{path}} angewendet.",
8667
+ successExec: "\u2705 {{name}} erfolgreich ausgef\xFChrt.",
8668
+ failure: "\u274C Ausf\xFChrung fehlgeschlagen: {{error}}",
8669
+ unknownError: "Unbekannter Fehler",
8670
+ confirmDelete: "L\xF6schen von {{entity}} best\xE4tigen",
8671
+ confirmExecGate: "Ausf\xFChrung von {{name}} best\xE4tigen",
8672
+ fallbackDialogs: "Dialoge",
8673
+ fallbackSpaces: "Spaces",
8674
+ failureDialogs: "Fehler beim L\xF6schen der Dialoge",
8675
+ failureSpaces: "Fehler beim L\xF6schen der Spaces",
8676
+ executedDialogs: "Dialoge gel\xF6scht",
8677
+ executedSpaces: "Spaces gel\xF6scht",
8678
+ entityDialog: "Dialog",
8679
+ entitySpace: "Space",
8680
+ deleteLabelMultiple: "{{title}} und {{count}} weitere {{entity}}",
8681
+ fallbackMatched: "Treffer"
8682
+ },
8683
+ toolNames: {
8684
+ tool: "Werkzeug",
8685
+ exa_search: "Suche",
8686
+ firecrawl_scrape: "Firecrawl Scrape",
8687
+ firecrawl_search: "Firecrawl Suche",
8688
+ read_file: "Datei lesen",
8689
+ readFile: "Datei lesen",
8690
+ writeFile: "Datei schreiben",
8691
+ editFile: "Datei bearbeiten",
8692
+ globFiles: "Dateien suchen",
8693
+ searchWorkspace: "Arbeitsbereich durchsuchen",
8694
+ readWorkspaceFile: "Datei lesen",
8695
+ writeWorkspaceFile: "Datei schreiben",
8696
+ replaceWorkspaceText: "Text ersetzen",
8697
+ startPreview: "Vorschau starten",
8698
+ getPreviewStatus: "Vorschaustatus",
8699
+ stopPreview: "Vorschau anhalten",
8700
+ releasePreview: "Vorschau freigeben",
8701
+ captureVisualState: "Screenshot",
8702
+ execShell: "Befehl ausf\xFChren",
8703
+ listAgents: "Agents auflisten",
8704
+ readAgent: "Agent lesen",
8705
+ loadSkill: "F\xE4higkeit laden",
8706
+ startAgentRun: "Subtask starten",
8707
+ controlAgentRun: "Subtask steuern",
8708
+ createAgent: "Agent erstellen",
8709
+ updateAgent: "Agent aktualisieren",
8710
+ queryDialogsBySubjectRef: "Dialogaufzeichnungen abfragen",
8711
+ deleteDialogs: "Dialogaufzeichnungen l\xF6schen",
8712
+ runStreamingAgent: "An Agent \xFCbergeben"
8713
+ },
8714
+ toolVerbs: {
8715
+ readFile: "Lesen",
8716
+ readWorkspaceFile: "Lesen",
8717
+ writeFile: "Schreiben",
8718
+ writeWorkspaceFile: "Schreiben",
8719
+ editFile: "Bearbeiten",
8720
+ replaceWorkspaceText: "Bearbeiten",
8721
+ applyDiff: "Bearbeiten",
8722
+ globFiles: "Dateien suchen",
8723
+ searchWorkspace: "Dateien suchen",
8724
+ codeSearch: "Suche",
8725
+ exa_search: "Websuche",
8726
+ firecrawl_search: "Websuche",
8727
+ fetchWebpage: "Seite abrufen",
8728
+ firecrawl_scrape: "Seite abrufen",
8729
+ execShell: "Befehl",
8730
+ loadSkill: "F\xE4higkeit laden",
8731
+ listAgents: "Agents auflisten",
8732
+ readAgent: "Agent lesen",
8733
+ startAgentRun: "Subtask starten",
8734
+ controlAgentRun: "Subtask steuern",
8735
+ createAgent: "Agent erstellen",
8736
+ updateAgent: "Agent aktualisieren",
8737
+ queryDialogsBySubjectRef: "Dialoge abfragen",
8738
+ deleteDialogs: "Dialoge l\xF6schen",
8739
+ startPreview: "Vorschau starten",
8740
+ getPreviewStatus: "Vorschaustatus",
8741
+ stopPreview: "Vorschau anhalten",
8742
+ releasePreview: "Vorschau freigeben",
8743
+ captureVisualState: "Screenshot",
8744
+ appDeploy: "App bereitstellen",
8745
+ ask_user: "Fragen",
8746
+ runStreamingAgent: "\xDCbergeben"
8747
+ },
8748
+ controlActions: {
8749
+ status: "Statuspr\xFCfung",
8750
+ stop: "Aufgabe anhalten",
8751
+ append: "Anweisung anh\xE4ngen",
8752
+ todo: "Aufgabenliste",
8753
+ list: "Aufgaben\xFCbersicht",
8754
+ wait: "Auf Aufgabe warten"
8755
+ },
8756
+ toolExecLocation: {
8757
+ line: "Ausgef\xFChrt auf {{device}} \xB7 {{root}}",
8758
+ unknown: "Ausf\xFChrungsort unbekannt"
8759
+ },
8760
+ runtimeTarget: {
8761
+ intentBadge: "Ziel: {{device}} (Absicht)"
8762
+ },
8763
+ spaceContext: {
8764
+ badge: "Space-Kontext",
8765
+ spaceFolderTitle: "Space-Ordner: {{path}}",
8766
+ cwdTitle: "Tats\xE4chliches Arbeitsverzeichnis: {{path}}"
8767
+ },
8768
+ gemini: {
8769
+ title: "Bilderzeugung",
8770
+ count: "{{count}} Bilder erzeugt"
8771
+ },
8772
+ page: {
8773
+ untitled: "Unbenannte Seite"
8774
+ },
8775
+ table: {
8776
+ untitled: "Unbenannte Tabelle",
8777
+ export: "Tabelle exportieren",
8778
+ convertToDataTable: "In strukturierte Tabelle umwandeln",
8779
+ converting: "Tabelle wird konvertiert...",
8780
+ convertSuccess: "Tabelle erfolgreich konvertiert!",
8781
+ convertFailed: "Fehler beim Konvertieren der Tabelle",
8782
+ defaultColumnLabel: "Spalte {{index}}",
8783
+ convertedTitle: "Strukturierte Tabelle"
8784
+ },
8785
+ common: {
8786
+ open: "\xD6ffnen",
8787
+ retry: "Wiederholen",
8788
+ run: "Ausf\xFChren"
8789
+ },
8790
+ imgOpts: {
8791
+ defaultName: "Bild {{index}}"
8792
+ },
8793
+ DialogSettings: "Dialog-Einstellungen",
8794
+ collaborativeConversation: "Kollaborative Unterhaltung",
8795
+ childRunObserver: {
8796
+ panelAriaLabel: "Hintergrund-Subtasks",
8797
+ title: "Hintergrund-Subtasks",
8798
+ subtitleLoading: "Subtasks werden geladen\u2026",
8799
+ subtitleCount: "{{count}} Hintergrund-Subtasks",
8800
+ refreshAriaLabel: "Aufgaben aktualisieren",
8801
+ refreshTitle: "Aktualisieren",
8802
+ expandAriaLabel: "Panel erweitern",
8803
+ expandTitle: "Erweitern",
8804
+ collapseAriaLabel: "Panel einklappen",
8805
+ collapseTitle: "Einklappen",
8806
+ loading: "Subtasks werden geladen\u2026",
8807
+ loadFailed: "Fehler beim Laden der Hintergrund-Subtasks",
8808
+ retry: "Wiederholen",
8809
+ empty: "Noch keine Hintergrund-Subtasks in diesem Dialog vorhanden. Sie erscheinen hier nach startAgentRun (asynchrone Zuweisung).",
8810
+ statusPending: "Ausstehend",
8811
+ statusRunning: "Wird ausgef\xFChrt",
8812
+ statusDone: "Abgeschlossen",
8813
+ statusFailed: "Fehlgeschlagen",
8814
+ statusCancelled: "Abgebrochen",
8815
+ statusUnknown: "Unbekannt",
8816
+ defaultTitle: "Subtask",
8817
+ missingDialogId: "Fehlende Subtask-Dialog-ID",
8818
+ detailStatus: "Status",
8819
+ detailAgent: "Agent",
8820
+ detailThread: "Thread",
8821
+ detailLoading: "Subtask-Dialog wird geladen\u2026",
8822
+ detailLoadFailed: "Subtask-Dialog kann nicht geladen werden",
8823
+ detailEmpty: "Noch keine Nachrichten oder Belege vorhanden.",
8824
+ messagesAriaLabel: "Subtask-Dialog-Nachrichten",
8825
+ emptyContent: "(leer)",
8826
+ appendInstructionTitle: "Anweisung anh\xE4ngen",
8827
+ appendInstructionPlaceholder: "Anweisung an laufende Aufgabe anh\xE4ngen\u2026",
8828
+ appendInstructionButton: "Senden",
8829
+ appendInstructionSending: "Wird gesendet\u2026",
8830
+ appendInstructionSuccess: "Eingereiht; wird im n\xE4chsten Durchgang verarbeitet",
8831
+ appendInstructionFailed: "Fehler beim Senden der Anweisung",
8832
+ continueTaskTitle: "Aufgabe fortsetzen",
8833
+ continueTaskPlaceholder: "Anweisung eingeben, um Aufgabe fortzusetzen\u2026",
8834
+ continueTaskButton: "Fortsetzen",
8835
+ continueTaskSuccess: "Fortsetzungsanweisung gesendet",
8836
+ queuedCount: "{{count}} in Warteschlange",
8837
+ queuedCountTitle: "Anzahl der eingereihten Anweisungen"
8838
+ },
8839
+ agentRun: {
8840
+ statusLabel: "Status",
8841
+ statusPending: "Ausstehend",
8842
+ statusRunning: "Wird ausgef\xFChrt",
8843
+ statusDone: "Abgeschlossen",
8844
+ statusFailed: "Fehlgeschlagen",
8845
+ statusCancelled: "Abgebrochen",
8846
+ statusOrphaned: "Verwaist",
8847
+ statusUnknown: "Unbekannt",
8848
+ handoffSummary: "An {{agent}} \xFCbergeben",
8849
+ handoffRunning: "Wird ausgef\xFChrt",
8850
+ handoffFailed: "\xDCbergabe fehlgeschlagen",
8851
+ handoffDone: "\xDCbergeben",
8852
+ noInputSummary: "Keine Eingabezusammenfassung aufgezeichnet",
8853
+ noSeparateDialog: "Kein separater Dialog",
8854
+ childDialogLabel: "Untergeordneter Dialog",
8855
+ targetAgentLabel: "Ziel-Agent",
8856
+ inputSummaryLabel: "Eingabezusammenfassung",
8857
+ agentLabel: "Agent",
8858
+ runLabel: "Durchlauf",
8859
+ resultLabel: "Ergebnis",
8860
+ countLabel: "{{count}} Durchlauf/Durchl\xE4ufe",
8861
+ agentCountLabel: "{{count}} Agent(s)",
8862
+ loadResultLabel: "Ergebnis laden",
8863
+ skillBodyLabel: "Skill-Inhalt",
8864
+ loading: "Wird geladen\u2026",
8865
+ noSummary: "(keine Zusammenfassung)"
8866
+ },
8867
+ chat: {
8868
+ toolCards: {
8869
+ title: "Werkzeugkarten",
8870
+ newFileDiff: "Diff f\xFCr neue Dateien",
8871
+ newFileDiffDesc: "Standardm\xE4\xDFig wird nur der Dateipfad angezeigt. Aktivieren Sie diese Option, um den endg\xFCltigen Inhalt und den Diff-Schalter anzuzeigen.",
8872
+ shellTree: "Ausgabe von tree-Befehlen",
8873
+ shellTreeDesc: "Standardm\xE4\xDFig werden nur Befehl und Exit-Code angezeigt. Aktivieren Sie diese Option, um den Verzeichnisbaum anzuzeigen.",
8874
+ shellTreeHidden: "Verzeichnisbaum-Ausgabe ist ausgeblendet. Sie kann in den Chat-Einstellungen aktiviert werden."
8875
+ },
8876
+ agentBehavior: {
8877
+ title: "Agent-Automatisierungsgrenzen",
8878
+ selfUpdate: {
8879
+ title: "Von updateSelf-Best\xE4tigung ausgenommene Felder",
8880
+ greeting: "Begr\xFC\xDFung",
8881
+ greetingDesc: "Erlaubt dem Agent, seine eigene Begr\xFC\xDFungsnachricht ohne Best\xE4tigung zu aktualisieren",
8882
+ introduction: "Vorstellung",
8883
+ introductionDesc: "Erlaubt dem Agent, seine eigene Vorstellung ohne Best\xE4tigung zu aktualisieren",
8884
+ tags: "Tags",
8885
+ tagsDesc: "Erlaubt dem Agent, seine eigenen Tags ohne Best\xE4tigung zu aktualisieren",
8886
+ prompt: "Prompt",
8887
+ promptDesc: "Erlaubt dem Agent, seinen eigenen System-Prompt ohne Best\xE4tigung zu aktualisieren",
8888
+ references: "Referenzen",
8889
+ referencesDesc: "Erlaubt dem Agent, seine Wissensreferenzen ohne Best\xE4tigung zu aktualisieren",
8890
+ tools: "Werkzeuge",
8891
+ toolsDesc: "Erlaubt dem Agent, seine Werkzeugauswahl ohne Best\xE4tigung zu aktualisieren",
8892
+ model: "Modell",
8893
+ modelDesc: "Erlaubt dem Agent, sein Modell ohne Best\xE4tigung zu \xE4ndern",
8894
+ provider: "Anbieter",
8895
+ providerDesc: "Erlaubt dem Agent, seinen Modellanbieter ohne Best\xE4tigung zu \xE4ndern",
8896
+ public: "\xD6ffentlichkeitsstatus",
8897
+ publicDesc: "Erlaubt dem Agent, seine Sichtbarkeitseinstellungen ohne Best\xE4tigung zu \xE4ndern",
8898
+ temperatureDesc: "Erlaubt dem Agent, seine Temperature-Einstellung ohne Best\xE4tigung zu \xE4ndern",
8899
+ topPDesc: "Erlaubt dem Agent, seine Top-P-Einstellung ohne Best\xE4tigung zu \xE4ndern",
8900
+ frequencyPenaltyDesc: "Erlaubt dem Agent, seine Frequenzstrafe ohne Best\xE4tigung zu \xE4ndern",
8901
+ presencePenaltyDesc: "Erlaubt dem Agent, seine Pr\xE4senzstrafe ohne Best\xE4tigung zu \xE4ndern",
8902
+ maxTokensDesc: "Erlaubt dem Agent, sein Max-Tokens-Limit ohne Best\xE4tigung zu \xE4ndern",
8903
+ reasoningEffort: "Denkaufwand",
8904
+ reasoningEffortDesc: "Erlaubt dem Agent, seinen Denkaufwand ohne Best\xE4tigung zu \xE4ndern",
8905
+ name: "Name",
8906
+ nameDesc: "Erlaubt dem Agent, seinen Namen ohne Best\xE4tigung zu \xE4ndern"
8907
+ },
8908
+ tone: {
8909
+ label: "Antwortstil",
8910
+ default: "Standard",
8911
+ direct: "Direkt",
8912
+ pragmatic: "Pragmatisch",
8913
+ friendly: "Freundlich",
8914
+ professional: "Professionell"
8915
+ },
8916
+ knowledge: {
8917
+ label: "Wissenserstellung",
8918
+ level1: "1: Nie erstellen",
8919
+ level2: "2: Vor dem Erstellen fragen",
8920
+ level3: "3: Nach Antwort Erstellung vorschlagen",
8921
+ level4: "4: Bei hochwertigen Ergebnissen automatisch erstellen"
8922
+ },
8923
+ space: {
8924
+ label: "Aktuellen Space lesen",
8925
+ level1: "1: Nicht automatisch lesen",
8926
+ level2: "2: Nur Struktur und Titel",
8927
+ level3: "3: Leichtes Lesen",
8928
+ level4: "4: Adaptives Lesen"
8929
+ }
8930
+ },
8931
+ scrollButtons: {
8932
+ title: "Schnellscroll-Schaltfl\xE4chen",
8933
+ top: "Nach oben scrollen",
8934
+ bottom: "Nach unten scrollen"
8935
+ }
8936
+ },
8937
+ appAssistantLoadFailed: "Fehler beim Laden des App-Kontexts",
8938
+ appAssistantLoading: "App-Kontext wird geladen\u2026",
8939
+ appAssistantNeedsRecovery: "Diese Version der App ist noch nicht f\xFCr direkte kleine Bearbeitungen bereit. Ich kann die aktuelle Seite zuerst in eine bearbeitbare Version umwandeln und Ihnen dann weiterhelfen.",
8940
+ createSideDialogFailed: "Fehler beim Erstellen des Chats. Bitte versuchen Sie es sp\xE4ter erneut.",
8941
+ favoriteAssistants: "H\xE4ufig genutzte Assistenten",
8942
+ goExplore: "KI-Marktplatz erkunden",
8943
+ goLogin: "Anmelden",
8944
+ loadSideDialogError: "Fehler beim Laden des Chats. Bitte versuchen Sie es sp\xE4ter erneut.",
8945
+ loginToUseAssistants: "Melden Sie sich an, um Seiten-Assistenten zu nutzen",
8946
+ noAvailableAgents: "Keine Agents verf\xFCgbar",
8947
+ pageAssistant: "Seiten-Assistent",
8948
+ pickerPlatformCredits: "Plattform-Credits",
8949
+ pickerPlatformCreditsTitle: "Abrechnung pro Token \xFCber Ihre Plattform-Credits",
8950
+ pickerBillingNote: "Mit M\xFCnzsymbol markierte Agents werden pro Token \xFCber Ihre Plattform-Credits abgerechnet; unmarkierte nutzen den Kanal des jeweiligen Agent und belasten Ihre Plattform-Credits nicht.",
8951
+ selectAssistant: "Assistenten ausw\xE4hlen",
8952
+ switchAssistant: "Assistent wechseln",
8953
+ switchAssistantFailed: "Fehler beim Wechseln des Assistenten. Bitte versuchen Sie es erneut."
8954
+ }
8955
+ },
8956
+ es: {
8957
+ translation: {
8958
+ AddAgent: "A\xF1adir Agent",
8959
+ mediaJob: {
8960
+ auto: "Autom\xE1tico",
8961
+ none: "Ninguno",
8962
+ languageLine: "Idioma: {{source}} \u2192 {{target}}",
8963
+ sourceLanguage: "Idioma de origen",
8964
+ targetLanguage: "Idioma de destino",
8965
+ autoDetect: "Detectar autom\xE1ticamente",
8966
+ noTranslate: "No traducir"
8967
+ },
8968
+ selectedAgentsCount: "{{count}} Agent(s) seleccionado(s)",
8969
+ addSelectedAgents: "A\xF1adir seleccionados",
8970
+ clearSelection: "Limpiar",
8971
+ recommended: "Recomendado",
8972
+ favoriteAgent: "Favorito",
8973
+ myAgent: "M\xEDos",
8974
+ capabilityMatch: "Coincidencia de capacidades",
8975
+ confirm: "Confirmar",
8976
+ cancel: "Cancelar",
8977
+ clickHere: "Haz clic aqu\xED",
8978
+ clearConversation: "Borrar conversaci\xF3n",
8979
+ compressionError: "Error al comprimir im\xE1genes. Se enviar\xE1n las im\xE1genes originales.",
8980
+ compressingImages: "Comprimiendo im\xE1genes...",
8981
+ copyContent: "Copiar contenido",
8982
+ copyDiagnostics: "Copiar diagn\xF3stico",
8983
+ finishReasonLengthNotice: "La respuesta se cort\xF3 al alcanzar el l\xEDmite de salida del modelo",
8984
+ retryProgress: "Reintentando autom\xE1ticamente {{attempt}}/{{maxAttempts}} \xB7 {{seconds}}s",
8985
+ sendErrorCard: {
8986
+ title: "Error al enviar",
8987
+ retry: "Reintentar",
8988
+ compactAndRetry: "Comprimir y reintentar",
8989
+ newDialog: "Nueva conversaci\xF3n",
8990
+ switchModel: "Cambiar de modelo",
8991
+ viewDetails: "Detalles t\xE9cnicos",
8992
+ hideDetails: "Ocultar detalles",
8993
+ suggestion: "Sugerencia",
8994
+ verifyAccount: "Verificar cuenta"
8995
+ },
8996
+ copyFailed: "Error al copiar",
8997
+ contextAutoCompressed: "Contexto comprimido autom\xE1ticamente para ajustarse a la ventana del modelo",
8998
+ contextAutoCompressFailed: "Error al comprimir el contexto autom\xE1ticamente",
8999
+ copySuccess: "Copiado correctamente",
9000
+ createDialog: "Crear di\xE1logo",
9001
+ createDialogFromAI: "Crear di\xE1logo con IA",
9002
+ createRobot: "Crear Agent",
9003
+ customizeYourAI: "Personaliza tu IA",
9004
+ AgentAddFailed: "Error al a\xF1adir el Agent",
9005
+ AgentAddedSuccess: "Agent a\xF1adido correctamente",
9006
+ MultipleAgentsAddedSuccess: "{{count}} Agents a\xF1adidos correctamente",
9007
+ AgentRemoveFailed: "Error al eliminar el Agent",
9008
+ AgentRemovedSuccess: "Agent eliminado correctamente",
9009
+ Agents: "Agents",
9010
+ delete: "Eliminar",
9011
+ deleteContentConfirmation: "\xBFEst\xE1s seguro de que deseas eliminar este contenido? Esta acci\xF3n no se puede deshacer.",
9012
+ deleteContentTitle: 'Eliminar "{{title}}"',
9013
+ deleteMovedToTrash: '"{{title}}" se ha movido a la papelera',
9014
+ deleteFailed: "Error al eliminar",
9015
+ deleteMessage: "Eliminar mensaje",
9016
+ deleteSuccess: "Eliminado correctamente",
9017
+ confirmDelete: "Haz clic de nuevo para confirmar la eliminaci\xF3n",
9018
+ dropToUpload: "Arrastra archivos aqu\xED para subirlos",
9019
+ excelIsEmpty: "El archivo de Excel est\xE1 vac\xEDo",
9020
+ excelIsEmptyOrInvalid: "El archivo de Excel est\xE1 vac\xEDo o no es v\xE1lido",
9021
+ excelParseError: "Error al procesar el archivo de Excel",
9022
+ FailedToLoadAgents: "Error al cargar los Agents",
9023
+ fileReadError: "Error al leer el contenido del archivo",
9024
+ First: "Primero",
9025
+ Info: "Informaci\xF3n",
9026
+ LoadingAgents: "Cargando Agents...",
9027
+ messageInput: "Campo de entrada de mensaje",
9028
+ messageInputArea: "\xC1rea de entrada de mensaje con subida de archivos",
9029
+ messageOrFileHere: "Escribe un mensaje o sube un archivo...",
9030
+ pastedTextChip: "Texto pegado #{{id}} \xB7 {{lines}} l\xEDneas \xB7 {{size}}",
9031
+ removePastedText: "Quitar texto pegado",
9032
+ expandPastedText: "Expandir texto pegado en la entrada",
9033
+ Mode: "Modo",
9034
+ ModeUpdateFailed: "Error al actualizar el modo",
9035
+ ModeUpdatedSuccess: "Modo actualizado correctamente",
9036
+ newchat: "Nuevo chat",
9037
+ NoAgents: "A\xFAn no hay Agents disponibles",
9038
+ NoDescription: "Sin descripci\xF3n",
9039
+ Orchestrated: "Orquestado",
9040
+ Parallel: "Paralelo",
9041
+ playAudio: "Reproducir audio",
9042
+ resend: "Reenviar",
9043
+ Retry: "Reintentar",
9044
+ saveContent: "Guardar contenido",
9045
+ saveFailed: "Error al guardar",
9046
+ saveSuccess: "Guardado correctamente",
9047
+ SelectAgentToAdd: "Selecciona un Agent para a\xF1adir a la conversaci\xF3n",
9048
+ sendFail: "Error al enviar el mensaje",
9049
+ Sequential: "Secuencial",
9050
+ ShowDialogConfigInfo: "Ver configuraci\xF3n e informaci\xF3n del di\xE1logo",
9051
+ Tokens: "Tokens",
9052
+ Unnamed: "Sin nombre",
9053
+ uploadFile: "Subir archivo",
9054
+ useServerProxy: "Usar servicio de tr\xE1nsito",
9055
+ viewDetails: "para m\xE1s detalles",
9056
+ fileReadErrorMessage: "Error al leer el archivo. Int\xE9ntalo de nuevo.",
9057
+ excelEmptyMessage: "El archivo de Excel est\xE1 vac\xEDo o no es v\xE1lido.",
9058
+ excelNoDataMessage: "No se encontraron datos en el archivo de Excel.",
9059
+ excelParseErrorMessage: "Error al procesar el archivo de Excel, comprueba el formato.",
9060
+ excelUploadSuccess: "\xA1Archivo de Excel subido y convertido correctamente!",
9061
+ docxUploadSuccess: "\xA1Archivo DOCX subido y convertido correctamente!",
9062
+ docxUploadError: "Error al subir el archivo DOCX, comprueba el formato.",
9063
+ pdfUploadSuccess: "\xA1Archivo PDF subido y convertido correctamente!",
9064
+ pdfUploadError: "Error al subir el archivo PDF, comprueba el formato.",
9065
+ compressingImagesMessage: "Comprimiendo im\xE1genes, espera por favor...",
9066
+ compressionErrorMessage: "Error al comprimir im\xE1genes, se enviar\xE1n las im\xE1genes originales.",
9067
+ sendFailMessage: "Error al enviar el mensaje. Int\xE9ntalo de nuevo.",
9068
+ insufficientBalanceDetailed: "Saldo insuficiente. Modelo: {{modelName}}, coste m\xE1ximo por mensaje: {{pricePerMessage}} cr\xE9ditos. Saldo: {{balance}} cr\xE9ditos.",
9069
+ insufficientBalance: "Saldo insuficiente",
9070
+ insufficientBalanceShortfall: "Necesitas {{shortfall}} cr\xE9ditos m\xE1s.",
9071
+ agentConfigMissing: "Falta la configuraci\xF3n del Agent",
9072
+ agentConfigLoadFailed: "Error al cargar la configuraci\xF3n del Agent. Int\xE9ntalo de nuevo.",
9073
+ modelPricingMissing: "Falta la informaci\xF3n de precios del modelo",
9074
+ chooseAnotherModelContinue: "Elige otro modelo para continuar o recarga tu saldo.",
9075
+ chooseAnotherModelDialogTitle: "Elegir otro modelo",
9076
+ useThisModelContinue: "Continuar con este modelo",
9077
+ switchModelContinueSuccess: "Se cambi\xF3 de modelo y se continu\xF3 la conversaci\xF3n",
9078
+ contextReprocessingNotice: "Es posible que el sistema deba volver a leer parte de esta conversaci\xF3n despu\xE9s de cambiar de modelo o editar un mensaje anterior.",
9079
+ switchModelContinueFailed: "Error al cambiar de modelo. Int\xE9ntalo de nuevo.",
9080
+ noAlternativeModels: "No hay otros modelos disponibles",
9081
+ noAvailableAgentMessage: "No hay mensajes disponibles del Agent",
9082
+ creditsUnit: "Cr\xE9ditos",
9083
+ dialogUsageTitle: "Uso de la sesi\xF3n",
9084
+ usageInputLabel: "entrada",
9085
+ usageOutputLabel: "salida",
9086
+ contextWindow: "Ventana de contexto",
9087
+ contextUsageKnownChip: "{{percent}}%",
9088
+ contextUsageEstimatedChip: "~{{percent}}%",
9089
+ contextUsageUnknownChip: "{{tokens}}",
9090
+ contextUsageUnknownChipEstimated: "\u2248{{tokens}}",
9091
+ contextUsageLoadingChip: "\u2014",
9092
+ contextUsageChipLabel: "Ocupaci\xF3n de contexto {{usage}}",
9093
+ contextUsageKnownPanel: "{{tokens}} / {{window}} \xB7 {{percent}}%",
9094
+ contextUsageUnknownPanel: "{{tokens}} tokens \xB7 Ventana desconocida",
9095
+ contextUsageUnknownPanelEstimated: "\u2248{{tokens}} tokens \xB7 Ventana desconocida",
9096
+ contextUsageUnknownHint: "Este modelo no tiene registrada una ventana de contexto; el porcentaje de ocupaci\xF3n no est\xE1 disponible.",
9097
+ contextUsageLoading: "Cargando\u2026",
9098
+ contextUsageCompact: "Compactar contexto",
9099
+ contextOccupancyEstimated: " (estimado)",
9100
+ dialogCumulative: "Total de la conversaci\xF3n",
9101
+ dialogUsageTokensSection: "Tokens de la sesi\xF3n",
9102
+ dialogUsageBillingSection: "Facturaci\xF3n",
9103
+ recharge: "Recargar",
9104
+ stopAllGeneration: "Detener todas las generaciones",
9105
+ allMessagesAborted: "Se han cancelado todos los mensajes",
9106
+ send: "Enviar",
9107
+ guideFromMessage: "Citar mensaje",
9108
+ guideSeeded: "Insertado en el campo de entrada",
9109
+ guideEmptyContent: "No hay texto citable en este mensaje",
9110
+ editMessage: "Editar mensaje",
9111
+ editSeeded: "Editando mensaje",
9112
+ editEmptyContent: "No hay texto editable en este mensaje",
9113
+ editingMessageNotice: "Editando un mensaje anterior. Al enviar se descartar\xE1n todos los mensajes posteriores. El sistema puede necesitar releer parte de esta conversaci\xF3n.",
9114
+ cancelEditingMessage: "Cancelar edici\xF3n del mensaje",
9115
+ branchMessage: "Bifurcar",
9116
+ branchCreated: "Chat bifurcado creado",
9117
+ branchFailed: "Error al crear chat bifurcado",
9118
+ stopBeforeDelete: "Det\xE9n la generaci\xF3n antes de eliminar",
9119
+ messageQueued: "Mensaje en cola; se enviar\xE1 tras el turno actual",
9120
+ cannotSendFileDuringLoop: "El Agent est\xE1 ejecut\xE1ndose. Espera antes de enviar adjuntos.",
9121
+ contextChecking: "Comprobando la ventana de contexto de este modelo\u2026",
9122
+ contextCompacting: "Esta conversaci\xF3n es larga. Compactando historial\u2026",
9123
+ waitingForModel: "Contexto listo. Esperando al modelo\u2026",
9124
+ modelWindowReduced: "Se cambi\xF3 a un modelo con menor contexto ({{window}}). Esta conversaci\xF3n ocupa aproximadamente el {{percent}}%; el siguiente mensaje podr\xEDa requerir compactaci\xF3n.",
9125
+ contextWillCompactOnSend: "Esta conversaci\xF3n supera el rango recomendado del nuevo modelo. El historial se compactar\xE1 antes de enviar.",
9126
+ currentMessageTooLarge: "Este mensaje o sus adjuntos superan la ventana de contexto del modelo. Acorta el contenido, retira adjuntos o elige un modelo con mayor contexto.",
9127
+ compactionTimedOut: "Se agot\xF3 el tiempo de espera al compactar el historial; tu mensaje no se envi\xF3 al modelo. Reintenta, inicia un nuevo chat o elige un modelo con mayor contexto.",
9128
+ compactionFailedFallback: "La compactaci\xF3n fall\xF3. Continuando con el historial m\xE1s antiguo recortado; parte del contexto inicial puede no estar disponible.",
9129
+ contextRejected: "El modelo no puede aceptar el contexto actual. Compacta el chat, inicia uno nuevo o elige un modelo con mayor contexto.",
9130
+ sendAlreadyRunning: "Este mensaje a\xFAn se est\xE1 procesando. Det\xE9n la solicitud actual o pon en cola un mensaje de solo texto.",
9131
+ sendStateRecovered: "Se detect\xF3 y borr\xF3 un estado de env\xEDo obsoleto. Env\xEDa de nuevo tu mensaje.",
9132
+ agentUnavailable: "No hay ning\xFAn asistente disponible para este chat. Selecciona uno y reintenta; tu mensaje se ha conservado.",
9133
+ queuedText: "Mensaje puesto en cola; se enviar\xE1 tras finalizar el turno actual",
9134
+ queuedAttachmentBlocked: "Un turno sigue ejecut\xE1ndose. Los mensajes con adjuntos o varias im\xE1genes no se pueden poner en cola; env\xEDalos al finalizar.",
9135
+ contextUsageEstimate: "est.",
9136
+ contextUsagePercentEstimate: "Uso estimado del contexto {{percent}}%",
9137
+ assistantReplyStarting: "Procesando\u2026",
9138
+ memorySaved: "Memoria guardada",
9139
+ memorySavedByAssistant: "Memoria guardada por el asistente",
9140
+ memoryKindProcedural: "Procedimental",
9141
+ memoryKindEpisodic: "Epis\xF3dica",
9142
+ memoryKindSemantic: "Sem\xE1ntica",
9143
+ memoryVisibilityShared: "Compartida",
9144
+ memoryVisibilityPublic: "P\xFAblica",
9145
+ memoryShowAll: "Ver las {{count}} memorias",
9146
+ memoryCollapse: "Contraer",
9147
+ queueBadgeLabel: "Mensajes en cola",
9148
+ queueBadgeQueued: "en cola",
9149
+ queueBadgeTitle: "Mensajes en cola",
9150
+ queueBadgeClear: "Limpiar",
9151
+ queueBadgeMore: "{{n}} m\xE1s",
9152
+ composerPlaceholderQueuing: "Respondiendo\u2026 tu mensaje se pondr\xE1 en cola",
9153
+ composerPlaceholderDrainPaused: "Esperando confirmaci\xF3n\u2026",
9154
+ composerPlaceholderError: "Error al enviar \u2014 reintenta tras finalizar la respuesta",
9155
+ MaxContext: "Contexto m\xE1x.",
9156
+ Compression: "Compresi\xF3n de contexto",
9157
+ CompressionTimes: "{{count}} veces",
9158
+ inheritedContextNotice: "Este chat hereda el contexto de una conversaci\xF3n anterior",
9159
+ inheritedContextNoticeWithTitle: 'Este chat hereda el contexto de "{{title}}"',
9160
+ openSourceDialog: "Abrir chat de origen",
9161
+ loadError: "Error al cargar; algunos mensajes pueden estar incompletos",
9162
+ selectADialog: "Selecciona un di\xE1logo",
9163
+ privateDialogGuestTitle: "Este es un enlace de di\xE1logo privado",
9164
+ privateDialogGuestHint: "La ruta /dialog-\u2026 solo est\xE1 disponible para usuarios autenticados con permiso en este di\xE1logo. Si deseas compartirlo con otra persona, usa un enlace /share/<token>.",
9165
+ thinkingProcess: "Proceso de pensamiento",
9166
+ thinkingActive: "Pensando\u2026",
9167
+ thinkingDone: "Pens\xF3 durante {{seconds}}s",
9168
+ thinkingContent: "Contenido del pensamiento",
9169
+ answerContent: "Respuesta",
9170
+ imagePickerError: "Error al seleccionar imagen: {{error}}",
9171
+ shareAttachmentWarning: "Adjuntos ignorados para el comando de compartir",
9172
+ uploading: "Subiendo...",
9173
+ mediaFileTooLarge: "Los archivos de audio/v\xEDdeo deben ser de 120 MB o menos",
9174
+ mediaUploadingPercent: "Subiendo {{percent}}%",
9175
+ mediaJobCreating: "Creando tarea\u2026",
9176
+ mediaUploadFailed: "Error al subir",
9177
+ mediaJobCreateFailed: "Error al crear la tarea multimedia",
9178
+ mediaUploadRemove: "Eliminar {{name}}",
9179
+ mediaUploadFailedShort: "Fallido",
9180
+ uploadSuccess: "Subida completada",
9181
+ uploadFailed: "Error al subir",
9182
+ deleteMessageTitle: "Eliminar mensaje",
9183
+ delConfirm: "\xBFEliminar la salida de esta herramienta?",
9184
+ delConfirmMessage: "\xBFEliminar este mensaje?",
9185
+ bash: {
9186
+ blockedTitle: "Ejecuci\xF3n de comando bloqueada",
9187
+ blockedDesc: "Este comando requiere confirmaci\xF3n antes de ejecutarse",
9188
+ runUnsafe: "Ejecutar de todos modos",
9189
+ exitCode: "c\xF3digo de salida: {{code}}",
9190
+ noOutput: "(sin salida)"
9191
+ },
9192
+ codeEdit: {
9193
+ viewFinal: "Ver archivo final",
9194
+ viewDiff: "Ver diferencias (diff)",
9195
+ conflictTitle: "Conflicto de edici\xF3n detectado",
9196
+ conflictMsg: "El archivo se modific\xF3 externamente. \xBFDeseas sobrescribirlo?",
9197
+ overwrite: "Sobrescribir",
9198
+ confirmOverwritePrompt: "Un intento anterior de escribir en {{path}} fall\xF3 porque el archivo existe y no se permiti\xF3 la sobrescritura. Confirma si deseas sobrescribirlo con el contenido m\xE1s reciente."
9199
+ },
9200
+ tool: {
9201
+ failed: "Error en la herramienta",
9202
+ executing: "Ejecutando herramienta...",
9203
+ requiresApproval: "Requiere aprobaci\xF3n",
9204
+ resumePrompt: "\xBFDeseas continuar?",
9205
+ preflightRepairing: "La comprobaci\xF3n previa encontr\xF3 {{count}} problema(s), reparando autom\xE1ticamente\u2026",
9206
+ moreSteps: "{{count}} pasos m\xE1s\u2026"
9207
+ },
9208
+ toolConfirm: {
9209
+ executing: "Ejecutando...",
9210
+ patchApplied: "Parche aplicado",
9211
+ executed: "Se ejecut\xF3 {{name}}",
9212
+ retryApplyPatch: "Reintentar aplicar parche",
9213
+ retryExec: "Reintentar {{name}}",
9214
+ confirmDeleteSpaces: "\xBFEst\xE1s seguro de que deseas eliminar estos espacios?",
9215
+ applyPatchDanger: "Aplicar parche (peligro potencial)",
9216
+ confirmExec: "Ejecutar {{name}} (requiere confirmaci\xF3n)",
9217
+ successPatch: "\u2705 Parche aplicado correctamente en {{path}}.",
9218
+ successExec: "\u2705 Se ejecut\xF3 correctamente {{name}}.",
9219
+ failure: "\u274C Error en la ejecuci\xF3n: {{error}}",
9220
+ unknownError: "Error desconocido",
9221
+ confirmDelete: "Confirmar eliminaci\xF3n de {{entity}}",
9222
+ confirmExecGate: "Confirmar ejecuci\xF3n de {{name}}",
9223
+ fallbackDialogs: "Di\xE1logos",
9224
+ fallbackSpaces: "Espacios",
9225
+ failureDialogs: "Error al eliminar di\xE1logos",
9226
+ failureSpaces: "Error al eliminar espacios",
9227
+ executedDialogs: "Di\xE1logos eliminados",
9228
+ executedSpaces: "Espacios eliminados",
9229
+ entityDialog: "di\xE1logo",
9230
+ entitySpace: "espacio",
9231
+ deleteLabelMultiple: "{{title}} y {{count}} m\xE1s {{entity}}",
9232
+ fallbackMatched: "Coincidencias"
9233
+ },
9234
+ toolNames: {
9235
+ tool: "Herramienta",
9236
+ exa_search: "Buscar",
9237
+ firecrawl_scrape: "Extracci\xF3n con Firecrawl",
9238
+ firecrawl_search: "B\xFAsqueda con Firecrawl",
9239
+ read_file: "Leer archivo",
9240
+ readFile: "Leer archivo",
9241
+ writeFile: "Escribir archivo",
9242
+ editFile: "Editar archivo",
9243
+ globFiles: "Buscar archivos",
9244
+ searchWorkspace: "Buscar en espacio de trabajo",
9245
+ readWorkspaceFile: "Leer archivo",
9246
+ writeWorkspaceFile: "Escribir archivo",
9247
+ replaceWorkspaceText: "Reemplazar texto",
9248
+ startPreview: "Iniciar vista previa",
9249
+ getPreviewStatus: "Estado de vista previa",
9250
+ stopPreview: "Detener vista previa",
9251
+ releasePreview: "Liberar vista previa",
9252
+ captureVisualState: "Captura de pantalla",
9253
+ execShell: "Ejecutar comando",
9254
+ listAgents: "Listar agents",
9255
+ readAgent: "Leer agent",
9256
+ loadSkill: "Cargar habilidad",
9257
+ startAgentRun: "Iniciar subtarea",
9258
+ controlAgentRun: "Controlar subtarea",
9259
+ createAgent: "Crear agent",
9260
+ updateAgent: "Actualizar agent",
9261
+ queryDialogsBySubjectRef: "Consultar registros de di\xE1logo",
9262
+ deleteDialogs: "Eliminar registros de di\xE1logo",
9263
+ runStreamingAgent: "Transferir a agent"
9264
+ },
9265
+ toolVerbs: {
9266
+ readFile: "Leer",
9267
+ readWorkspaceFile: "Leer",
9268
+ writeFile: "Escribir",
9269
+ writeWorkspaceFile: "Escribir",
9270
+ editFile: "Editar",
9271
+ replaceWorkspaceText: "Editar",
9272
+ applyDiff: "Editar",
9273
+ globFiles: "Buscar archivos",
9274
+ searchWorkspace: "Buscar archivos",
9275
+ codeSearch: "Buscar",
9276
+ exa_search: "B\xFAsqueda web",
9277
+ firecrawl_search: "B\xFAsqueda web",
9278
+ fetchWebpage: "Obtener p\xE1gina",
9279
+ firecrawl_scrape: "Obtener p\xE1gina",
9280
+ execShell: "Comando",
9281
+ loadSkill: "Cargar habilidad",
9282
+ listAgents: "Listar agents",
9283
+ readAgent: "Leer agent",
9284
+ startAgentRun: "Iniciar subtarea",
9285
+ controlAgentRun: "Controlar subtarea",
9286
+ createAgent: "Crear agent",
9287
+ updateAgent: "Actualizar agent",
9288
+ queryDialogsBySubjectRef: "Consultar di\xE1logos",
9289
+ deleteDialogs: "Eliminar di\xE1logos",
9290
+ startPreview: "Iniciar vista previa",
9291
+ getPreviewStatus: "Estado de vista previa",
9292
+ stopPreview: "Detener vista previa",
9293
+ releasePreview: "Liberar vista previa",
9294
+ captureVisualState: "Captura",
9295
+ appDeploy: "Desplegar aplicaci\xF3n",
9296
+ ask_user: "Preguntar",
9297
+ runStreamingAgent: "Transferir"
9298
+ },
9299
+ controlActions: {
9300
+ status: "Diagn\xF3stico de estado",
9301
+ stop: "Detener tarea",
9302
+ append: "A\xF1adir instrucci\xF3n",
9303
+ todo: "Lista de pendientes",
9304
+ list: "Lista de tareas",
9305
+ wait: "Esperar tarea"
9306
+ },
9307
+ toolExecLocation: {
9308
+ line: "Ejecutado en {{device}} \xB7 {{root}}",
9309
+ unknown: "Ubicaci\xF3n de ejecuci\xF3n desconocida"
9310
+ },
9311
+ runtimeTarget: {
9312
+ intentBadge: "Destino: {{device}} (intenci\xF3n)"
9313
+ },
9314
+ spaceContext: {
9315
+ badge: "Contexto de espacio",
9316
+ spaceFolderTitle: "Carpeta del espacio: {{path}}",
9317
+ cwdTitle: "Directorio de trabajo real: {{path}}"
9318
+ },
9319
+ gemini: {
9320
+ title: "Generaci\xF3n de im\xE1genes",
9321
+ count: "{{count}} im\xE1genes generadas"
9322
+ },
9323
+ page: {
9324
+ untitled: "P\xE1gina sin t\xEDtulo"
9325
+ },
9326
+ table: {
9327
+ untitled: "Tabla sin t\xEDtulo",
9328
+ export: "Exportar tabla",
9329
+ convertToDataTable: "Convertir en tabla estructurada",
9330
+ converting: "Convirtiendo tabla...",
9331
+ convertSuccess: "\xA1Tabla convertida correctamente!",
9332
+ convertFailed: "Error al convertir la tabla",
9333
+ defaultColumnLabel: "Columna {{index}}",
9334
+ convertedTitle: "Tabla estructurada"
9335
+ },
9336
+ common: {
9337
+ open: "Abrir",
9338
+ retry: "Reintentar",
9339
+ run: "Ejecutar"
9340
+ },
9341
+ imgOpts: {
9342
+ defaultName: "Imagen {{index}}"
9343
+ },
9344
+ DialogSettings: "Ajustes del di\xE1logo",
9345
+ collaborativeConversation: "Conversaci\xF3n colaborativa",
9346
+ childRunObserver: {
9347
+ panelAriaLabel: "Subtareas en segundo plano",
9348
+ title: "Subtareas en segundo plano",
9349
+ subtitleLoading: "Cargando subtareas\u2026",
9350
+ subtitleCount: "{{count}} subtareas en segundo plano",
9351
+ refreshAriaLabel: "Actualizar tareas",
9352
+ refreshTitle: "Actualizar",
9353
+ expandAriaLabel: "Expandir panel",
9354
+ expandTitle: "Expandir",
9355
+ collapseAriaLabel: "Contraer panel",
9356
+ collapseTitle: "Contraer",
9357
+ loading: "Cargando subtareas\u2026",
9358
+ loadFailed: "Error al cargar las subtareas en segundo plano",
9359
+ retry: "Reintentar",
9360
+ empty: "A\xFAn no hay subtareas en segundo plano en este di\xE1logo. Aparecer\xE1n aqu\xED tras ejecutar startAgentRun (asignaci\xF3n as\xEDncrona).",
9361
+ statusPending: "Pendiente",
9362
+ statusRunning: "En ejecuci\xF3n",
9363
+ statusDone: "Completado",
9364
+ statusFailed: "Fallido",
9365
+ statusCancelled: "Cancelado",
9366
+ statusUnknown: "Desconocido",
9367
+ defaultTitle: "Subtarea",
9368
+ missingDialogId: "Falta el ID del di\xE1logo secundario",
9369
+ detailStatus: "Estado",
9370
+ detailAgent: "Agent",
9371
+ detailThread: "Hilo",
9372
+ detailLoading: "Cargando di\xE1logo secundario\u2026",
9373
+ detailLoadFailed: "No se puede cargar el di\xE1logo secundario",
9374
+ detailEmpty: "A\xFAn no hay mensajes ni evidencias.",
9375
+ messagesAriaLabel: "Mensajes del di\xE1logo secundario",
9376
+ emptyContent: "(vac\xEDo)",
9377
+ appendInstructionTitle: "A\xF1adir instrucci\xF3n",
9378
+ appendInstructionPlaceholder: "A\xF1adir instrucci\xF3n a la tarea en ejecuci\xF3n\u2026",
9379
+ appendInstructionButton: "Enviar",
9380
+ appendInstructionSending: "Enviando\u2026",
9381
+ appendInstructionSuccess: "En cola; se procesar\xE1 en el siguiente turno",
9382
+ appendInstructionFailed: "Error al enviar la instrucci\xF3n",
9383
+ continueTaskTitle: "Continuar tarea",
9384
+ continueTaskPlaceholder: "Introduce una instrucci\xF3n para continuar la tarea\u2026",
9385
+ continueTaskButton: "Continuar",
9386
+ continueTaskSuccess: "Instrucci\xF3n de continuaci\xF3n enviada",
9387
+ queuedCount: "{{count}} en cola",
9388
+ queuedCountTitle: "N\xFAmero de instrucciones en cola"
9389
+ },
9390
+ agentRun: {
9391
+ statusLabel: "Estado",
9392
+ statusPending: "Pendiente",
9393
+ statusRunning: "En ejecuci\xF3n",
9394
+ statusDone: "Completado",
9395
+ statusFailed: "Fallido",
9396
+ statusCancelled: "Cancelado",
9397
+ statusOrphaned: "Hu\xE9rfano",
9398
+ statusUnknown: "Desconocido",
9399
+ handoffSummary: "Transferido a {{agent}}",
9400
+ handoffRunning: "En ejecuci\xF3n",
9401
+ handoffFailed: "Error en la transferencia",
9402
+ handoffDone: "Transferido",
9403
+ noInputSummary: "Sin resumen de entrada registrado",
9404
+ noSeparateDialog: "Sin di\xE1logo independiente",
9405
+ childDialogLabel: "Di\xE1logo secundario",
9406
+ targetAgentLabel: "Agent de destino",
9407
+ inputSummaryLabel: "Resumen de entrada",
9408
+ agentLabel: "Agent",
9409
+ runLabel: "Ejecuci\xF3n",
9410
+ resultLabel: "Resultado",
9411
+ countLabel: "{{count}} ejecuci\xF3n/ejecuciones",
9412
+ agentCountLabel: "{{count}} agent(s)",
9413
+ loadResultLabel: "Cargar resultado",
9414
+ skillBodyLabel: "Cuerpo de la habilidad",
9415
+ loading: "Cargando\u2026",
9416
+ noSummary: "(sin resumen)"
9417
+ },
9418
+ chat: {
9419
+ toolCards: {
9420
+ title: "Tarjetas de herramientas",
9421
+ newFileDiff: "Diff para archivos nuevos",
9422
+ newFileDiffDesc: "Por defecto solo se muestra la ruta del archivo. Activa esta opci\xF3n para mostrar el contenido final y el conmutador de Diff.",
9423
+ shellTree: "Salida de comandos tree",
9424
+ shellTreeDesc: "Por defecto solo se muestran el comando y el c\xF3digo de salida. Activa esta opci\xF3n para mostrar el \xE1rbol de directorios.",
9425
+ shellTreeHidden: "La salida del \xE1rbol de directorios est\xE1 oculta. Puedes activarla en los ajustes del chat."
9426
+ },
9427
+ agentBehavior: {
9428
+ title: "L\xEDmites de automatizaci\xF3n del Agent",
9429
+ selfUpdate: {
9430
+ title: "Campos exentos de confirmaci\xF3n en updateSelf",
9431
+ greeting: "Mensaje de bienvenida",
9432
+ greetingDesc: "Permite que el Agent actualice su propio mensaje de bienvenida sin confirmaci\xF3n",
9433
+ introduction: "Presentaci\xF3n",
9434
+ introductionDesc: "Permite que el Agent actualice su propia presentaci\xF3n sin confirmaci\xF3n",
9435
+ tags: "Etiquetas",
9436
+ tagsDesc: "Permite que el Agent actualice sus propias etiquetas sin confirmaci\xF3n",
9437
+ prompt: "Prompt",
9438
+ promptDesc: "Permite que el Agent actualice su propio prompt del sistema sin confirmaci\xF3n",
9439
+ references: "Referencias",
9440
+ referencesDesc: "Permite que el Agent actualice sus referencias de conocimiento sin confirmaci\xF3n",
9441
+ tools: "Herramientas",
9442
+ toolsDesc: "Permite que el Agent actualice su selecci\xF3n de herramientas sin confirmaci\xF3n",
9443
+ model: "Modelo",
9444
+ modelDesc: "Permite que el Agent cambie su modelo sin confirmaci\xF3n",
9445
+ provider: "Proveedor",
9446
+ providerDesc: "Permite que el Agent cambie su proveedor de modelos sin confirmaci\xF3n",
9447
+ public: "Estado p\xFAblico",
9448
+ publicDesc: "Permite que el Agent cambie su visibilidad p\xFAblica sin confirmaci\xF3n",
9449
+ temperatureDesc: "Permite que el Agent cambie su temperatura sin confirmaci\xF3n",
9450
+ topPDesc: "Permite que el Agent cambie su valor Top P sin confirmaci\xF3n",
9451
+ frequencyPenaltyDesc: "Permite que el Agent cambie su penalizaci\xF3n de frecuencia sin confirmaci\xF3n",
9452
+ presencePenaltyDesc: "Permite que el Agent cambie su penalizaci\xF3n de presencia sin confirmaci\xF3n",
9453
+ maxTokensDesc: "Permite que el Agent cambie su l\xEDmite de tokens m\xE1ximos sin confirmaci\xF3n",
9454
+ reasoningEffort: "Esfuerzo de razonamiento",
9455
+ reasoningEffortDesc: "Permite que el Agent cambie su esfuerzo de razonamiento sin confirmaci\xF3n",
9456
+ name: "Nombre",
9457
+ nameDesc: "Permite que el Agent cambie su nombre sin confirmaci\xF3n"
9458
+ },
9459
+ tone: {
9460
+ label: "Tono de respuesta",
9461
+ default: "Predeterminado",
9462
+ direct: "Directo",
9463
+ pragmatic: "Pragm\xE1tico",
9464
+ friendly: "Amigable",
9465
+ professional: "Profesional"
9466
+ },
9467
+ knowledge: {
9468
+ label: "Creaci\xF3n de conocimiento",
9469
+ level1: "1: No crear nunca",
9470
+ level2: "2: Preguntarme antes de crear",
9471
+ level3: "3: Sugerir creaci\xF3n despu\xE9s de responder",
9472
+ level4: "4: Crear autom\xE1ticamente ante resultados valiosos"
9473
+ },
9474
+ space: {
9475
+ label: "Lectura del espacio actual",
9476
+ level1: "1: No leer autom\xE1ticamente",
9477
+ level2: "2: Solo estructura y t\xEDtulos",
9478
+ level3: "3: Lectura ligera",
9479
+ level4: "4: Lectura adaptativa"
9480
+ }
9481
+ },
9482
+ scrollButtons: {
9483
+ title: "Botones de desplazamiento r\xE1pido",
9484
+ top: "Desplazarse hacia arriba",
9485
+ bottom: "Desplazarse hacia abajo"
9486
+ }
9487
+ },
9488
+ appAssistantLoadFailed: "Error al cargar el contexto de la aplicaci\xF3n",
9489
+ appAssistantLoading: "Cargando contexto de la aplicaci\xF3n\u2026",
9490
+ appAssistantNeedsRecovery: "Esta versi\xF3n de la aplicaci\xF3n a\xFAn no est\xE1 lista para peque\xF1as ediciones directas. Primero puedo organizar la p\xE1gina actual en una versi\xF3n editable y luego ayudarte a modificarla.",
9491
+ createSideDialogFailed: "Error al crear el chat. Int\xE9ntalo de nuevo m\xE1s tarde.",
9492
+ favoriteAssistants: "Asistentes frecuentes",
9493
+ goExplore: "Explorar la Plaza de IA",
9494
+ goLogin: "Iniciar sesi\xF3n",
9495
+ loadSideDialogError: "Error al cargar el chat. Int\xE9ntalo de nuevo m\xE1s tarde.",
9496
+ loginToUseAssistants: "Inicia sesi\xF3n para usar los asistentes de p\xE1gina",
9497
+ noAvailableAgents: "No hay Agents disponibles",
9498
+ pageAssistant: "Asistente de p\xE1gina",
9499
+ pickerPlatformCredits: "Cr\xE9ditos de la plataforma",
9500
+ pickerPlatformCreditsTitle: "Facturado por token desde tus cr\xE9ditos de la plataforma",
9501
+ pickerBillingNote: "Los agents marcados con el icono de moneda se facturan por token desde tus cr\xE9ditos de la plataforma; los no marcados usan su propio canal y no consumen tus cr\xE9ditos.",
9502
+ selectAssistant: "Seleccionar asistente",
9503
+ switchAssistant: "Cambiar asistente",
9504
+ switchAssistantFailed: "Error al cambiar de asistente. Int\xE9ntalo de nuevo."
9505
+ }
7081
9506
  }
7082
9507
  };
7083
9508
 
@@ -7085,6 +9510,17 @@ var chat_locale_default = {
7085
9510
  var space_locale_default = {
7086
9511
  ["en" /* EN */]: {
7087
9512
  translation: {
9513
+ workspace_directory_unavailable: "Space directory unavailable; showing loaded items",
9514
+ workspace_directory_count: "Directory: {{directory}}; loaded: {{loaded}}",
9515
+ workspace_toggle: "Collapse or expand {{name}}",
9516
+ workspace_workspaces: "Space workspaces",
9517
+ workspace_uncategorized: "Uncategorized",
9518
+ workspace_loaded_items: "Loaded items",
9519
+ workspace_new_dialog: "New dialog in {{name}}",
9520
+ workspace_open: "Open space: {{name}}",
9521
+ workspace_other: "Other spaces",
9522
+ workspace_unassociated: "Unassociated space",
9523
+ workspace_unassociated_empty: "No content outside spaces yet",
7088
9524
  // === 基础操作 ===
7089
9525
  create: "Create Space",
7090
9526
  name: "Space Name",
@@ -7121,14 +9557,10 @@ var space_locale_default = {
7121
9557
  // === 空间选择 ===
7122
9558
  default_space: "Default Space",
7123
9559
  select_space: "Select Space",
7124
- no_spaces: "No spaces available",
7125
9560
  no_spaces_yet: "No spaces created yet",
7126
- space_list_failed: "Failed to load spaces \u2014 tap to retry",
7127
9561
  space_list: "Space List",
7128
9562
  space_dropdown: "Open space menu",
7129
9563
  current_space: "Current Space",
7130
- switch_space: "Switch Space",
7131
- offline_local_cache: "Offline \xB7 Local cache",
7132
9564
  // === 导航相关 ===
7133
9565
  home: "Home",
7134
9566
  back_to_home: "Back to Home",
@@ -7412,6 +9844,17 @@ var space_locale_default = {
7412
9844
  },
7413
9845
  ["zh-CN" /* ZH_CN */]: {
7414
9846
  translation: {
9847
+ workspace_directory_unavailable: "\u7A7A\u95F4\u76EE\u5F55\u6682\u4E0D\u53EF\u7528\uFF0C\u4FDD\u7559\u5DF2\u52A0\u8F7D\u5185\u5BB9",
9848
+ workspace_directory_count: "\u76EE\u5F55 {{directory}} \u9879\uFF1B\u5DF2\u52A0\u8F7D {{loaded}} \u9879",
9849
+ workspace_toggle: "\u6298\u53E0\u6216\u5C55\u5F00{{name}}",
9850
+ workspace_workspaces: "\u7A7A\u95F4\u5DE5\u4F5C\u533A",
9851
+ workspace_uncategorized: "\u672A\u5206\u7C7B",
9852
+ workspace_loaded_items: "\u5DF2\u52A0\u8F7D\u5185\u5BB9\u6570",
9853
+ workspace_new_dialog: "\u5728{{name}}\u65B0\u5EFA\u5BF9\u8BDD",
9854
+ workspace_open: "\u6253\u5F00\u7A7A\u95F4\uFF1A{{name}}",
9855
+ workspace_other: "\u5176\u4ED6\u7A7A\u95F4",
9856
+ workspace_unassociated: "\u7A7A\u95F4\u5916",
9857
+ workspace_unassociated_empty: "\u7A7A\u95F4\u5916\u8FD8\u6CA1\u6709\u5185\u5BB9",
7415
9858
  // === 基础操作 ===
7416
9859
  create: "\u521B\u5EFA\u7A7A\u95F4",
7417
9860
  name: "\u7A7A\u95F4\u540D\u79F0",
@@ -7448,14 +9891,10 @@ var space_locale_default = {
7448
9891
  // === 空间选择 ===
7449
9892
  default_space: "\u9ED8\u8BA4\u7A7A\u95F4",
7450
9893
  select_space: "\u9009\u62E9\u7A7A\u95F4",
7451
- no_spaces: "\u6682\u65E0\u7A7A\u95F4",
7452
9894
  no_spaces_yet: "\u5C1A\u672A\u521B\u5EFA\u4EFB\u4F55\u7A7A\u95F4",
7453
- space_list_failed: "\u7A7A\u95F4\u5217\u8868\u52A0\u8F7D\u5931\u8D25\uFF0C\u70B9\u51FB\u91CD\u8BD5",
7454
9895
  space_list: "\u7A7A\u95F4\u5217\u8868",
7455
9896
  space_dropdown: "\u6253\u5F00\u7A7A\u95F4\u83DC\u5355",
7456
9897
  current_space: "\u5F53\u524D\u7A7A\u95F4",
7457
- switch_space: "\u5207\u6362\u7A7A\u95F4",
7458
- offline_local_cache: "\u79BB\u7EBF \xB7 \u672C\u5730\u7F13\u5B58",
7459
9898
  // === 导航相关 ===
7460
9899
  home: "\u9996\u9875",
7461
9900
  back_to_home: "\u56DE\u5230\u9996\u9875",
@@ -7739,6 +10178,17 @@ var space_locale_default = {
7739
10178
  },
7740
10179
  ["zh-Hant" /* ZH_HANT */]: {
7741
10180
  translation: {
10181
+ workspace_directory_unavailable: "\u7A7A\u9593\u76EE\u9304\u66AB\u4E0D\u53EF\u7528\uFF0C\u4FDD\u7559\u5DF2\u8F09\u5165\u5167\u5BB9",
10182
+ workspace_directory_count: "\u76EE\u9304 {{directory}} \u9805\uFF1B\u5DF2\u8F09\u5165 {{loaded}} \u9805",
10183
+ workspace_toggle: "\u647A\u758A\u6216\u5C55\u958B{{name}}",
10184
+ workspace_workspaces: "\u7A7A\u9593\u5DE5\u4F5C\u5340",
10185
+ workspace_uncategorized: "\u672A\u5206\u985E",
10186
+ workspace_loaded_items: "\u5DF2\u8F09\u5165\u5167\u5BB9\u6578",
10187
+ workspace_new_dialog: "\u5728{{name}}\u65B0\u589E\u5C0D\u8A71",
10188
+ workspace_open: "\u958B\u555F\u7A7A\u9593\uFF1A{{name}}",
10189
+ workspace_other: "\u5176\u4ED6\u7A7A\u9593",
10190
+ workspace_unassociated: "\u7A7A\u9593\u5916",
10191
+ workspace_unassociated_empty: "\u7A7A\u9593\u5916\u9084\u6C92\u6709\u5167\u5BB9",
7742
10192
  // === 基础操作 ===
7743
10193
  create: "\u5275\u5EFA\u7A7A\u9593",
7744
10194
  name: "\u7A7A\u9593\u540D\u7A31",
@@ -7774,14 +10224,10 @@ var space_locale_default = {
7774
10224
  folder_as_name: "\u5DF2\u7528\u8CC7\u6599\u593E\u540D\u7A31\u4F5C\u70BA\u7A7A\u9593\u540D\u7A31",
7775
10225
  default_space: "\u9810\u8A2D\u7A7A\u9593",
7776
10226
  select_space: "\u9078\u64C7\u7A7A\u9593",
7777
- no_spaces: "\u66AB\u7121\u7A7A\u9593",
7778
10227
  no_spaces_yet: "\u5C1A\u672A\u5275\u5EFA\u4EFB\u4F55\u7A7A\u9593",
7779
- space_list_failed: "\u7A7A\u9593\u6E05\u55AE\u8F09\u5165\u5931\u6557\uFF0C\u9EDE\u64CA\u91CD\u8A66",
7780
10228
  space_list: "\u7A7A\u9593\u6E05\u55AE",
7781
10229
  space_dropdown: "\u958B\u555F\u7A7A\u9593\u9078\u55AE",
7782
10230
  current_space: "\u76EE\u524D\u7A7A\u9593",
7783
- switch_space: "\u5207\u63DB\u7A7A\u9593",
7784
- offline_local_cache: "\u96E2\u7DDA \xB7 \u672C\u6A5F\u5FEB\u53D6",
7785
10231
  // === 导航相关 ===
7786
10232
  home: "\u9996\u9801",
7787
10233
  back_to_home: "\u8FD4\u56DE\u9996\u9801",
@@ -8065,6 +10511,17 @@ var space_locale_default = {
8065
10511
  },
8066
10512
  ["ja" /* JA */]: {
8067
10513
  translation: {
10514
+ workspace_directory_unavailable: "\u30B9\u30DA\u30FC\u30B9\u4E00\u89A7\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3002\u8AAD\u307F\u8FBC\u307F\u6E08\u307F\u9805\u76EE\u3092\u8868\u793A\u3057\u307E\u3059",
10515
+ workspace_directory_count: "\u4E00\u89A7 {{directory}} \u4EF6\u3001\u8AAD\u307F\u8FBC\u307F\u6E08\u307F {{loaded}} \u4EF6",
10516
+ workspace_toggle: "{{name}}\u3092\u6298\u308A\u305F\u305F\u3080\u30FB\u5C55\u958B\u3059\u308B",
10517
+ workspace_workspaces: "\u30B9\u30DA\u30FC\u30B9\u4E00\u89A7",
10518
+ workspace_uncategorized: "\u672A\u5206\u985E",
10519
+ workspace_loaded_items: "\u8AAD\u307F\u8FBC\u307F\u6E08\u307F\u9805\u76EE\u6570",
10520
+ workspace_new_dialog: "{{name}}\u3067\u65B0\u3057\u3044\u5BFE\u8A71",
10521
+ workspace_open: "\u30B9\u30DA\u30FC\u30B9\u3092\u958B\u304F\uFF1A{{name}}",
10522
+ workspace_other: "\u305D\u306E\u4ED6\u306E\u30B9\u30DA\u30FC\u30B9",
10523
+ workspace_unassociated: "\u672A\u95A2\u9023\u306E\u30B9\u30DA\u30FC\u30B9",
10524
+ workspace_unassociated_empty: "\u30B9\u30DA\u30FC\u30B9\u5916\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u306F\u307E\u3060\u3042\u308A\u307E\u305B\u3093",
8068
10525
  // === 基本操作 ===
8069
10526
  create: "\u30B9\u30DA\u30FC\u30B9\u3092\u4F5C\u6210",
8070
10527
  name: "\u30B9\u30DA\u30FC\u30B9\u540D",
@@ -8101,14 +10558,10 @@ var space_locale_default = {
8101
10558
  // === スペース選択 ===
8102
10559
  default_space: "\u30C7\u30D5\u30A9\u30EB\u30C8\u30B9\u30DA\u30FC\u30B9",
8103
10560
  select_space: "\u30B9\u30DA\u30FC\u30B9\u3092\u9078\u629E",
8104
- no_spaces: "\u30B9\u30DA\u30FC\u30B9\u304C\u3042\u308A\u307E\u305B\u3093",
8105
10561
  no_spaces_yet: "\u307E\u3060\u30B9\u30DA\u30FC\u30B9\u304C\u4F5C\u6210\u3055\u308C\u3066\u3044\u307E\u305B\u3093",
8106
- space_list_failed: "\u30B9\u30DA\u30FC\u30B9\u4E00\u89A7\u306E\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u30BF\u30C3\u30D7\u3057\u3066\u518D\u8A66\u884C",
8107
10562
  space_list: "\u30B9\u30DA\u30FC\u30B9\u4E00\u89A7",
8108
10563
  space_dropdown: "\u30B9\u30DA\u30FC\u30B9\u30E1\u30CB\u30E5\u30FC\u3092\u958B\u304F",
8109
10564
  current_space: "\u73FE\u5728\u306E\u30B9\u30DA\u30FC\u30B9",
8110
- switch_space: "\u30B9\u30DA\u30FC\u30B9\u3092\u5207\u308A\u66FF\u3048\u308B",
8111
- offline_local_cache: "\u30AA\u30D5\u30E9\u30A4\u30F3 \xB7 \u30ED\u30FC\u30AB\u30EB\u30AD\u30E3\u30C3\u30B7\u30E5",
8112
10565
  // === ナビゲーション関連 ===
8113
10566
  home: "\u30DB\u30FC\u30E0",
8114
10567
  back_to_home: "\u30DB\u30FC\u30E0\u306B\u623B\u308B",
@@ -8390,6 +10843,638 @@ var space_locale_default = {
8390
10843
  newTable: "\u65B0\u3057\u3044\u30C6\u30FC\u30D6\u30EB"
8391
10844
  }
8392
10845
  }
10846
+ },
10847
+ de: {
10848
+ translation: {
10849
+ workspace_directory_unavailable: "Space-Verzeichnis nicht verf\xFCgbar; geladene Elemente werden angezeigt",
10850
+ workspace_directory_count: "Verzeichnis: {{directory}}; geladen: {{loaded}}",
10851
+ workspace_toggle: "{{name}} ein- oder ausklappen",
10852
+ workspace_workspaces: "Space-Arbeitsbereiche",
10853
+ workspace_uncategorized: "Nicht kategorisiert",
10854
+ workspace_loaded_items: "Geladene Elemente",
10855
+ workspace_new_dialog: "Neuer Dialog in {{name}}",
10856
+ workspace_open: "Space \xF6ffnen: {{name}}",
10857
+ workspace_other: "Andere Spaces",
10858
+ workspace_unassociated: "Nicht zugeordneter Space",
10859
+ workspace_unassociated_empty: "Noch keine Inhalte au\xDFerhalb von Spaces",
10860
+ create: "Space erstellen",
10861
+ name: "Space-Name",
10862
+ description: "Beschreibung",
10863
+ visibility: "Sichtbarkeit",
10864
+ private: "Privat",
10865
+ public: "\xD6ffentlich",
10866
+ loading: "Wird geladen...",
10867
+ cancel: "Abbrechen",
10868
+ delete: "L\xF6schen",
10869
+ save: "Speichern",
10870
+ edit: "Bearbeiten",
10871
+ clear: "Leeren",
10872
+ name_required: "Space-Name ist erforderlich",
10873
+ name_min_length: "Space-Name muss mindestens 2 Zeichen lang sein",
10874
+ name_max_length: "Space-Name darf 50 Zeichen nicht \xFCberschreiten",
10875
+ name_placeholder: "Space-Namen eingeben",
10876
+ description_placeholder: "Space-Beschreibung eingeben (optional)",
10877
+ description_max_length: "Beschreibung darf 200 Zeichen nicht \xFCberschreiten",
10878
+ description_too_long: "Beschreibung darf 500 Zeichen nicht \xFCberschreiten",
10879
+ create_new_space: "Neuer Space",
10880
+ create_space: "Space erstellen",
10881
+ create_success: "Space erfolgreich erstellt",
10882
+ create_error: "Fehler beim Erstellen des Space",
10883
+ creating: "Space wird erstellt...",
10884
+ pick_folder_failed: "Ordnerauswahl fehlgeschlagen",
10885
+ bound_folder: "Verkn\xFCpfter Ordner",
10886
+ bound_folder_hint: "Einen lokalen Ordner als Space-Quelle verkn\xFCpfen",
10887
+ choose_folder: "Ordner ausw\xE4hlen",
10888
+ change_folder: "\xC4ndern",
10889
+ folder_as_name: "Ordnername als Space-Name verwendet",
10890
+ default_space: "Standard-Space",
10891
+ select_space: "Space ausw\xE4hlen",
10892
+ no_spaces_yet: "Noch keine Spaces erstellt",
10893
+ space_list: "Space-Liste",
10894
+ space_dropdown: "Space-Men\xFC \xF6ffnen",
10895
+ current_space: "Aktueller Space",
10896
+ home: "Startseite",
10897
+ back_to_home: "Zur\xFCck zur Startseite",
10898
+ space_settings: "Space-Einstellungen",
10899
+ unsaved_changes: "Sie haben ungespeicherte \xC4nderungen",
10900
+ unsaved_warning: "Sie haben ungespeicherte \xC4nderungen. M\xF6chten Sie diese vor dem Verlassen speichern?",
10901
+ save_before_leave: "\xC4nderungen speichern",
10902
+ discard_changes: "\xC4nderungen verwerfen",
10903
+ load_error_title: "Fehler beim Laden der Space-Informationen",
10904
+ no_space_data: "Keine Space-Daten gefunden",
10905
+ try_later: "Bitte versuchen Sie es sp\xE4ter erneut",
10906
+ basic_info: "Grundlegende Informationen",
10907
+ manage_basic_info: "Space-Namen, Beschreibung und weitere Basisdaten verwalten",
10908
+ space_details: "Space-Details",
10909
+ view_space_details: "Grundlegende Informationen und Metadaten dieses Space anzeigen",
10910
+ space_id: "Space-ID",
10911
+ created_at: "Erstellt am",
10912
+ updated_at: "Aktualisiert am",
10913
+ member_count: "Mitgliederanzahl",
10914
+ people: "Personen",
10915
+ person: "Person",
10916
+ access_permission: "Zugriffsberechtigungen",
10917
+ manage_access: "Space-Sichtbarkeit und Zugriffseinstellungen verwalten",
10918
+ select_visibility: "Sichtbarkeit ausw\xE4hlen",
10919
+ private_description: "Nur eingeladene Mitglieder k\xF6nnen diesen Space anzeigen und darauf zugreifen",
10920
+ public_description: "Jeder kann diesen Space anzeigen und darauf zugreifen",
10921
+ permission_updated: "Berechtigungen aktualisiert",
10922
+ save_changes: "\xC4nderungen speichern",
10923
+ save_success: "Erfolgreich gespeichert",
10924
+ set_as_default: "Als Standard-Space festlegen",
10925
+ current_default: "Aktueller Standard-Space",
10926
+ cancel_changes: "\xC4nderungen verwerfen",
10927
+ set_default_success: "Als Standard-Space festgelegt",
10928
+ set_default_error: "Fehler beim Festlegen als Standard-Space",
10929
+ clear_default_success: "Standard-Space gel\xF6scht",
10930
+ default_space_description: "Diesen Space beim Starten der App als Standard-Arbeitsbereich festlegen.",
10931
+ this_space: "dieser Space",
10932
+ delete_space: "Space l\xF6schen",
10933
+ delete_confirm_message: "M\xF6chten Sie diesen Space wirklich l\xF6schen? Diese Aktion kann nicht r\xFCckg\xE4ngig gemacht werden, und alle Dateien und Daten im Space werden dauerhaft gel\xF6scht.",
10934
+ remove_space_membership_title: "Space-Mitgliedschaft entfernen",
10935
+ remove_space_membership_action: "Ung\xFCltige Mitgliedschaft entfernen",
10936
+ remove_space_membership_confirm_message: "Space-Daten fehlen. Dadurch wird nur Ihr Mitgliedschaftseintrag f\xFCr diesen Space entfernt, sodass er nicht mehr in der Auswahl erscheint. Diese Aktion kann nicht r\xFCckg\xE4ngig gemacht werden.",
10937
+ remove_space_membership_success: "Mitgliedschaftseintrag entfernt",
10938
+ remove_space_membership_error: "Fehler beim Entfernen des Mitgliedschaftseintrags",
10939
+ delete_description: "Diese Aktion l\xF6scht alle Dateien, Seiten und Daten im Space dauerhaft und kann nicht r\xFCckg\xE4ngig gemacht werden.",
10940
+ delete_warning: "Warnung: Dieser Space hat {{count}} Mitglieder. Bitte stellen Sie sicher, dass alle Mitglieder vor dem L\xF6schen benachrichtigt werden.",
10941
+ delete_input_placeholder: "Geben Sie zur Best\xE4tigung den Space-Namen ein",
10942
+ delete_confirmation_required: "Bitte geben Sie den Space-Namen ein, um das L\xF6schen zu best\xE4tigen",
10943
+ delete_success: "Space gel\xF6scht",
10944
+ delete_error: "Fehler beim L\xF6schen des Space",
10945
+ deleting: "Space wird gel\xF6scht...",
10946
+ update_success: "Space erfolgreich aktualisiert",
10947
+ update_error: "Fehler beim Aktualisieren des Space",
10948
+ updating: "Space wird aktualisiert...",
10949
+ empty_state_title: "Noch keine Spaces",
10950
+ empty_state_description: "Erstellen Sie Ihren ersten Space, um loszulegen",
10951
+ get_started: "Erste Schritte",
10952
+ uncategorized: "Nicht kategorisiert",
10953
+ dragToCategorize: "Elemente hierher ziehen, um sie zu kategorisieren",
10954
+ itemsDeleted: "{{count}} Element(e) gel\xF6scht",
10955
+ createPageFailed: "Fehler beim Erstellen der Seite",
10956
+ categoryCreated: "Kategorie '{{name}}' erfolgreich erstellt",
10957
+ emptyTitle: "Titel darf nicht leer sein",
10958
+ emptyHint: "Titel darf nicht leer sein",
10959
+ createFirstPage: "Erstellen Sie Ihre erste Seite",
10960
+ selectedItemsCount: "{{count}} Element(e) ausgew\xE4hlt",
10961
+ deselectAll: "Auswahl aufheben",
10962
+ selectAll: "Alle ausw\xE4hlen",
10963
+ deleteSelected: "Ausgew\xE4hlte l\xF6schen",
10964
+ cancelSelectionMode: "Auswahlmodus beenden",
10965
+ content: "Inhalt",
10966
+ newPage: "Neue Seite",
10967
+ newCategory: "Neue Kategorie",
10968
+ batchSelect: "Stapelauswahl",
10969
+ expandAll: "Alle ausklappen",
10970
+ collapseAll: "Alle einklappen",
10971
+ contentMoved: "Inhalt verschoben",
10972
+ movedToDesc: "Nach {{space}} verschoben. Wechseln, um fortzufahren?",
10973
+ moveSwitchPrompt: "Inhalt wurde erfolgreich verschoben",
10974
+ switchToSpaceAction: "Zu Space wechseln",
10975
+ switchSpaceFailed: "Fehler beim Wechseln des Space",
10976
+ noOtherSpaces: "Keine anderen Spaces verf\xFCgbar",
10977
+ unnamedSpace: "Unbenannter Space",
10978
+ moveFailed: "Verschieben fehlgeschlagen: {{message}}",
10979
+ unknownError: "Ein unbekannter Fehler ist aufgetreten",
10980
+ titlePlaceholder: "Titel eingeben...",
10981
+ moreActions: "Weitere Aktionen",
10982
+ editTitle: "Titel bearbeiten",
10983
+ pin: "Anheften",
10984
+ unpin: "L\xF6sen",
10985
+ favorite: "Favorisieren",
10986
+ unfavorite: "Aus Favoriten entfernen",
10987
+ favoriteDetailMissingHint: "Detaildaten fehlen",
10988
+ quickAddToRail: "Zur Schnellleiste hinzuf\xFCgen",
10989
+ quickRemoveFromRail: "Aus Schnellleiste entfernen",
10990
+ quickMoveRailUp: "Nach oben verschieben",
10991
+ quickMoveRailDown: "Nach unten verschieben",
10992
+ pinUpdated: "Anheftungsstatus aktualisiert",
10993
+ pinUpdateFailed: "Fehler beim Aktualisieren des Anheftungsstatus",
10994
+ moveToSpace: "In Space verschieben",
10995
+ add_content: "Inhalt hinzuf\xFCgen",
10996
+ create_space_desc: "Einen neuen Space f\xFCr Ihr Team oder Ihre Projekte erstellen",
10997
+ create_new_category: "Neue Kategorie erstellen",
10998
+ create_category_desc: "Eine neue Kategorie zur Organisation Ihrer Inhalte erstellen",
10999
+ select_space_first: "Bitte w\xE4hlen Sie zuerst einen Space aus",
11000
+ addCategorySuccess: "Kategorie erfolgreich hinzugef\xFCgt",
11001
+ addCategoryFailed: "Fehler beim Hinzuf\xFCgen der Kategorie",
11002
+ joinConversation: "Unterhaltung beitreten",
11003
+ addedToConversation: "Zur Unterhaltung hinzugef\xFCgt",
11004
+ all: "Alle",
11005
+ dialogs: "Dialoge",
11006
+ pages: "Seiten",
11007
+ images: "Bilder",
11008
+ documentAttachments: "Dokumentenanh\xE4nge",
11009
+ videos: "Videos",
11010
+ audios: "Audiodateien",
11011
+ files: "Sonstige Anh\xE4nge",
11012
+ filesHub: "Dateien-Hub",
11013
+ file: "Dateien",
11014
+ attachment: "Anhang",
11015
+ otherAttachments: "Sonstige Anh\xE4nge",
11016
+ documentAttachment: "Dokumentenanhang",
11017
+ videoAttachment: "Videoanhang",
11018
+ audioAttachment: "Audioanhang",
11019
+ tables: "Tabellen",
11020
+ apps: "Apps",
11021
+ agents: "Agents",
11022
+ scheduled: "Geplant",
11023
+ no_content_in_tab: "Noch keine {{type}} in diesem Space vorhanden.",
11024
+ no_attachments_in_space: "Noch keine Anh\xE4nge in diesem Space vorhanden.",
11025
+ no_attachments_desc: "Inhalte hochladen oder generieren, um sie hier zu organisieren.",
11026
+ no_scheduled_in_space: "Noch keine geplanten Aufgaben in diesem Space vorhanden.",
11027
+ no_scheduled_desc: "Hier werden Ihre geplanten Automatisierungsaufgaben und der Ausf\xFChrungsverlauf angezeigt. Weisen Sie Ihre KI an oder richten Sie Workflows ein, die automatisch zu festgelegten Zeiten ausgef\xFChrt werden.",
11028
+ no_images_in_space: "Noch keine Bilder in diesem Space vorhanden.",
11029
+ no_images_desc: "Sie k\xF6nnen Bilder hochladen oder in KI-Unterhaltungen generieren.",
11030
+ no_documents_in_space: "Noch keine Dokumentenanh\xE4nge in diesem Space vorhanden.",
11031
+ no_documents_desc: "Sie k\xF6nnen PDFs, Markdown, Word-Dokumente usw. als Referenz und zur Analyse hochladen.",
11032
+ no_videos_in_space: "Noch keine Videos in diesem Space vorhanden.",
11033
+ no_videos_desc: "Sie k\xF6nnen Videodateien hochladen, um sie als Kontext zu referenzieren.",
11034
+ no_audios_in_space: "Noch keine Audiodateien in diesem Space vorhanden.",
11035
+ no_audios_desc: "Sie k\xF6nnen Aufnahmen oder Audiospuren zur Transkription oder Verarbeitung hochladen.",
11036
+ no_tables_in_space: "Noch keine Tabellen in diesem Space vorhanden.",
11037
+ no_tables_desc: "Organisieren und analysieren Sie Ihre Daten in strukturierten Ansichten mit direkter Unterst\xFCtzung f\xFCr KI-Verarbeitung.",
11038
+ no_files_in_space: "Noch keine sonstigen Anh\xE4nge in diesem Space vorhanden.",
11039
+ no_files_desc: "Hier werden sonstige Dateien angezeigt, die nicht als Bilder, Dokumente oder Medien kategorisiert sind.",
11040
+ contentManagement: "Inhaltsverwaltung",
11041
+ deleteFailed: "L\xF6schen fehlgeschlagen",
11042
+ deleteMovedToTrash: '"{{title}}" in den Papierkorb verschoben',
11043
+ deleteMovedToTrashBatch_one: "1 Element in den Papierkorb verschoben",
11044
+ deleteMovedToTrashBatch_other: "{{count}} Elemente in den Papierkorb verschoben",
11045
+ deleteMovedToTrashBatch: "{{count}} Elemente in den Papierkorb verschoben",
11046
+ batchDeleteCancelled: "Stapell\xF6schung abgebrochen",
11047
+ uploadSuccess: "Upload abgeschlossen",
11048
+ uploadFailed: "Upload fehlgeschlagen",
11049
+ uploadPartial: "{{succeeded}} hochgeladen, {{failed}} fehlgeschlagen",
11050
+ retry: "Wiederholen",
11051
+ uploadFile: "Datei hochladen",
11052
+ uploading: "Wird hochgeladen...",
11053
+ selectionCount: "{{count}} ausgew\xE4hlt",
11054
+ gridView: "Rasteransicht",
11055
+ listView: "Listenansicht",
11056
+ confirmDelete: "L\xF6schen best\xE4tigen",
11057
+ confirmDeleteMultiple: "M\xF6chten Sie die ausgew\xE4hlten {{count}} Elemente wirklich l\xF6schen? Dies kann nicht r\xFCckg\xE4ngig gemacht werden.",
11058
+ confirmDeleteSingle: "M\xF6chten Sie dieses Element wirklich l\xF6schen? Dies kann nicht r\xFCckg\xE4ngig gemacht werden.",
11059
+ unnamed: "Unbenannt",
11060
+ preview: "Vorschau",
11061
+ open: "\xD6ffnen",
11062
+ download: "Herunterladen",
11063
+ clearFilters: "Filter zur\xFCcksetzen",
11064
+ totalCount: "{{count}} Elemente",
11065
+ filteredCount: "{{count}} / {{total}} Elemente",
11066
+ backToTop: "Nach oben",
11067
+ latestContent: "Neueste Inhalte",
11068
+ viewTemplate: "Vorlage anzeigen",
11069
+ spaceAgents: "Space-Agents",
11070
+ no_content_desc: "Noch keine Inhalte in diesem Space vorhanden.",
11071
+ no_category_content: "Keine Inhalte in dieser Kategorie",
11072
+ spaceData: "Space-Daten",
11073
+ spaceAgentSection: "Space-Agents",
11074
+ viewMore: "Mehr anzeigen",
11075
+ noAgentInSpace: "Keine Agents im Space vorhanden",
11076
+ noAgentInSpaceTitle: "Noch keine Agents",
11077
+ noAgentInSpaceDesc: "F\xFCgen Sie diesem Space Agents hinzu, um mit der Zusammenarbeit zu beginnen.",
11078
+ createAgent: "Agent erstellen",
11079
+ createAgentHint: "Einen dedizierten Agent f\xFCr diesen Space erstellen",
11080
+ categoryNamePlaceholder: "Kategorienamen eingeben",
11081
+ expand: "Ausklappen",
11082
+ collapse: "Einklappen",
11083
+ selectCategory: "Kategorie {{name}} ausw\xE4hlen",
11084
+ dragToReorder: "Zum Neuanordnen ziehen",
11085
+ editName: "Namen bearbeiten",
11086
+ deleteCategoryConfirm: "M\xF6chten Sie die Kategorie '{{name}}' wirklich l\xF6schen? Diese Aktion kann nicht r\xFCckg\xE4ngig gemacht werden.",
11087
+ deleteCategory: "Kategorie l\xF6schen",
11088
+ search: "Suchen",
11089
+ search_no_results: "Keine passenden Inhalte gefunden",
11090
+ please_login: "Bitte melden Sie sich an, um Inhalte anzuzeigen",
11091
+ search_placeholder: "Inhalte suchen...",
11092
+ allView: {
11093
+ recent: "Zuletzt verwendet",
11094
+ work: "Arbeit",
11095
+ projects: "Projekte",
11096
+ favorites: "Favoriten",
11097
+ shares: "Freigaben",
11098
+ expanded: "Erweitert",
11099
+ back: "Zur\xFCck",
11100
+ viewAll: "Alle anzeigen",
11101
+ noFavorites: "Noch keine Favoriten vorhanden",
11102
+ noShares: "Noch keine freigegebenen Inhalte vorhanden",
11103
+ loadSharesError: "Fehler beim Laden der Freigaben"
11104
+ },
11105
+ delete_space_options_title: "Optionen zum L\xF6schen des Space",
11106
+ delete_space_options_desc: "W\xE4hlen Sie aus, wie mit den Inhalten dieses Space verfahren werden soll",
11107
+ delete_space_move_to_all: "Inhalte nach \u201EAlle\u201C verschieben",
11108
+ delete_space_move_to_all_desc: "Beh\xE4lt Ihre eigenen Inhalte bei und verschiebt sie in die Liste \u201EAlle\u201C",
11109
+ delete_space_move_to_all_success: "Inhalte erfolgreich nach \u201EAlle\u201C verschoben",
11110
+ delete_space_delete_owned_success: "Eigene Inhalte erfolgreich gel\xF6scht",
11111
+ delete_space_with_owned: "Eigene Inhalte ebenfalls l\xF6schen",
11112
+ delete_space_with_owned_desc: "L\xF6scht den Space und alle darin erstellten Inhalte dauerhaft",
11113
+ delete_space_cancel_desc: "Vorgang abgebrochen, es wurden keine Daten gel\xF6scht",
11114
+ manage: "Verwalten",
11115
+ finish: "Fertigstellen",
11116
+ ocrAddToChat: "Zu Dialog hinzuf\xFCgen",
11117
+ newTable: "Neue Tabelle",
11118
+ syncLocalAgents: "Lokale Agents synchronisieren",
11119
+ syncLocalAgentsSectionTitle: "Lokale Agents synchronisieren",
11120
+ syncLocalAgentsSectionDesc: "Laden Sie die Konfiguration der lokalen Agents dieses Ger\xE4ts in das Konto hoch, damit sie auf anderen Ger\xE4ten verwendet werden k\xF6nnen",
11121
+ syncLocalAgentsTitle: "Lokale Agents mit dem Konto synchronisieren",
11122
+ syncLocalAgentsConfirm: "Synchronisierung best\xE4tigen",
11123
+ syncLocalAgentsConfirmLead: "{{count}} lokale Agent-Referenz(en) gefunden. Mit dem aktuellen Konto synchronisieren und diesen Space-Katalog umschreiben?",
11124
+ syncLocalAgentsFactLocalRemains: "Die lokalen Agents verbleiben auf diesem Ger\xE4t.",
11125
+ syncLocalAgentsFactSnapshot: "Es wird lediglich ein Konfigurations-Snapshot der Agents hochgeladen.",
11126
+ syncLocalAgentsFactCatalogRewrite: "Verweise in diesem Space werden auf den Snapshot des Kontos umgestellt.",
11127
+ syncLocalAgentsFactNoDialogs: "Dialoge, Nachrichten und Anh\xE4nge werden nicht hochgeladen.",
11128
+ syncLocalAgentsFactNoSecrets: "Lokale API-Schl\xFCssel und Tokens werden nicht hochgeladen.",
11129
+ syncLocalAgentsFactNoContinuous: "Dies ist ein einmaliger Vorgang ohne fortlaufende Synchronisierung.",
11130
+ syncLocalAgentsSuccess: "{{count}} lokale Agent-Referenz(en) erfolgreich auf Konto-Snapshots umgestellt (lokale Agents beibehalten)",
11131
+ syncLocalAgentsNoop: "In diesem Space sind keine lokalen Agents vorhanden, die synchronisiert werden m\xFCssen (kein Upload)",
11132
+ syncLocalAgentsError: "Synchronisierung fehlgeschlagen. Bitte versuchen Sie es sp\xE4ter erneut.",
11133
+ syncLocalAgentsBlockedTitle: "Lokale Agents k\xF6nnen nicht synchronisiert werden",
11134
+ syncLocalAgentsBlockedLead: "Bei der Vorabpr\xFCfung wurden nicht unterst\xFCtzte oder fehlende lokale Inhalte festgestellt, der Upload wurde blockiert. Bitte beheben Sie folgende Punkte und versuchen Sie es erneut.",
11135
+ syncLocalAgentsBlockedOk: "Verstanden",
11136
+ syncLocalAgentsBlockedReason_unsupported_local_content: "Diese Synchronisierung enth\xE4lt nicht unterst\xFCtzte lokale Inhaltstypen.",
11137
+ syncLocalAgentsBlockedReason_missing_or_tombstoned_record: "Einige referenzierte Datens\xE4tze fehlen oder wurden gel\xF6scht.",
11138
+ syncLocalAgentsBlockedReason_authoritative_type_mismatch: "Der Katalogtyp stimmt nicht mit dem tats\xE4chlichen Datensatztyp \xFCberein.",
11139
+ syncLocalAgentsType_dialog: "Dialog",
11140
+ syncLocalAgentsType_page: "Seite",
11141
+ syncLocalAgentsType_doc: "Dokument",
11142
+ syncLocalAgentsType_table: "Tabelle",
11143
+ syncLocalAgentsType_file: "Datei",
11144
+ syncLocalAgentsType_image: "Bild",
11145
+ syncLocalAgentsType_app: "App",
11146
+ syncLocalAgentsType_task: "Aufgabe",
11147
+ syncLocalAgentsType_unknown: "Unbekannt",
11148
+ myShares: {
11149
+ title: "Meine Freigaben"
11150
+ },
11151
+ agent: {
11152
+ create_agent_manual: "Agent manuell erstellen"
11153
+ },
11154
+ createFailed: "Fehler beim Erstellen der Tabelle",
11155
+ filter_by_type: "Nach Typ filtern",
11156
+ no_items_found: "Keine Inhalte dieses Typs gefunden",
11157
+ userNotFound: "Benutzerinformationen nicht gefunden, Tabelle kann nicht erstellt werden",
11158
+ table: {
11159
+ newTable: "Neue Tabelle"
11160
+ }
11161
+ }
11162
+ },
11163
+ es: {
11164
+ translation: {
11165
+ workspace_directory_unavailable: "Directorio del espacio no disponible; mostrando elementos cargados",
11166
+ workspace_directory_count: "Directorio: {{directory}}; cargados: {{loaded}}",
11167
+ workspace_toggle: "Contraer o expandir {{name}}",
11168
+ workspace_workspaces: "Espacios de trabajo",
11169
+ workspace_uncategorized: "Sin categorizar",
11170
+ workspace_loaded_items: "Elementos cargados",
11171
+ workspace_new_dialog: "Nuevo di\xE1logo en {{name}}",
11172
+ workspace_open: "Abrir espacio: {{name}}",
11173
+ workspace_other: "Otros espacios",
11174
+ workspace_unassociated: "Espacio no asociado",
11175
+ workspace_unassociated_empty: "A\xFAn no hay contenido fuera de los espacios",
11176
+ create: "Crear espacio",
11177
+ name: "Nombre del espacio",
11178
+ description: "Descripci\xF3n",
11179
+ visibility: "Visibilidad",
11180
+ private: "Privado",
11181
+ public: "P\xFAblico",
11182
+ loading: "Cargando...",
11183
+ cancel: "Cancelar",
11184
+ delete: "Eliminar",
11185
+ save: "Guardar",
11186
+ edit: "Editar",
11187
+ clear: "Limpiar",
11188
+ name_required: "El nombre del espacio es obligatorio",
11189
+ name_min_length: "El nombre del espacio debe tener al menos 2 caracteres",
11190
+ name_max_length: "El nombre del espacio no puede superar los 50 caracteres",
11191
+ name_placeholder: "Introduce el nombre del espacio",
11192
+ description_placeholder: "Introduce la descripci\xF3n del espacio (opcional)",
11193
+ description_max_length: "La descripci\xF3n no puede superar los 200 caracteres",
11194
+ description_too_long: "La descripci\xF3n no puede superar los 500 caracteres",
11195
+ create_new_space: "Nuevo espacio",
11196
+ create_space: "Crear espacio",
11197
+ create_success: "Espacio creado correctamente",
11198
+ create_error: "Error al crear el espacio",
11199
+ creating: "Creando espacio...",
11200
+ pick_folder_failed: "Error al seleccionar la carpeta",
11201
+ bound_folder: "Carpeta vinculada",
11202
+ bound_folder_hint: "Vincular una carpeta local como origen del espacio",
11203
+ choose_folder: "Elegir carpeta",
11204
+ change_folder: "Cambiar",
11205
+ folder_as_name: "Nombre de la carpeta usado como nombre del espacio",
11206
+ default_space: "Espacio predeterminado",
11207
+ select_space: "Seleccionar espacio",
11208
+ no_spaces_yet: "A\xFAn no se han creado espacios",
11209
+ space_list: "Lista de espacios",
11210
+ space_dropdown: "Abrir men\xFA de espacios",
11211
+ current_space: "Espacio actual",
11212
+ home: "Inicio",
11213
+ back_to_home: "Volver al inicio",
11214
+ space_settings: "Configuraci\xF3n del espacio",
11215
+ unsaved_changes: "Tienes cambios sin guardar",
11216
+ unsaved_warning: "Tienes cambios sin guardar. \xBFDeseas guardarlos antes de salir?",
11217
+ save_before_leave: "Guardar cambios",
11218
+ discard_changes: "Descartar cambios",
11219
+ load_error_title: "Error al cargar la informaci\xF3n del espacio",
11220
+ no_space_data: "No se encontraron datos del espacio",
11221
+ try_later: "Por favor, int\xE9ntalo de nuevo m\xE1s tarde",
11222
+ basic_info: "Informaci\xF3n b\xE1sica",
11223
+ manage_basic_info: "Gestionar el nombre, la descripci\xF3n y otros datos b\xE1sicos del espacio",
11224
+ space_details: "Detalles del espacio",
11225
+ view_space_details: "Ver informaci\xF3n b\xE1sica y metadatos de este espacio",
11226
+ space_id: "ID del espacio",
11227
+ created_at: "Fecha de creaci\xF3n",
11228
+ updated_at: "Fecha de actualizaci\xF3n",
11229
+ member_count: "N\xFAmero de miembros",
11230
+ people: "personas",
11231
+ person: "persona",
11232
+ access_permission: "Permisos de acceso",
11233
+ manage_access: "Gestionar la visibilidad y los permisos de acceso del espacio",
11234
+ select_visibility: "Seleccionar visibilidad",
11235
+ private_description: "Solo los miembros invitados pueden ver y acceder a este espacio",
11236
+ public_description: "Cualquiera puede ver y acceder a este espacio",
11237
+ permission_updated: "Permisos actualizados",
11238
+ save_changes: "Guardar cambios",
11239
+ save_success: "Guardado correctamente",
11240
+ set_as_default: "Establecer como espacio predeterminado",
11241
+ current_default: "Espacio predeterminado actual",
11242
+ cancel_changes: "Descartar cambios",
11243
+ set_default_success: "Establecido como espacio predeterminado",
11244
+ set_default_error: "Error al establecer como espacio predeterminado",
11245
+ clear_default_success: "Espacio predeterminado borrado",
11246
+ default_space_description: "Establecer este espacio como tu \xE1rea de trabajo predeterminada al iniciar la aplicaci\xF3n.",
11247
+ this_space: "este espacio",
11248
+ delete_space: "Eliminar espacio",
11249
+ delete_confirm_message: "\xBFEst\xE1s seguro de que deseas eliminar este espacio? Esta acci\xF3n no se puede deshacer y todos los archivos y datos del espacio se eliminar\xE1n de forma permanente.",
11250
+ remove_space_membership_title: "Eliminar membres\xEDa del espacio",
11251
+ remove_space_membership_action: "Eliminar membres\xEDa rota",
11252
+ remove_space_membership_confirm_message: "Faltan los datos del espacio. Esto solo eliminar\xE1 tu registro de membres\xEDa de este espacio para que ya no aparezca en el selector. Esta acci\xF3n no se puede deshacer.",
11253
+ remove_space_membership_success: "Registro de membres\xEDa eliminado",
11254
+ remove_space_membership_error: "Error al eliminar el registro de membres\xEDa",
11255
+ delete_description: "Esta acci\xF3n eliminar\xE1 de forma permanente todos los archivos, p\xE1ginas y datos del espacio, y no se podr\xE1 recuperar.",
11256
+ delete_warning: "Advertencia: este espacio tiene {{count}} miembros. Aseg\xFArate de notificar a todos los miembros antes de eliminarlo.",
11257
+ delete_input_placeholder: "Introduce el nombre del espacio para confirmar",
11258
+ delete_confirmation_required: "Introduce el nombre del espacio para confirmar la eliminaci\xF3n",
11259
+ delete_success: "Espacio eliminado",
11260
+ delete_error: "Error al eliminar el espacio",
11261
+ deleting: "Eliminando espacio...",
11262
+ update_success: "Espacio actualizado correctamente",
11263
+ update_error: "Error al actualizar el espacio",
11264
+ updating: "Actualizando espacio...",
11265
+ empty_state_title: "A\xFAn no hay espacios",
11266
+ empty_state_description: "Crea tu primer espacio para comenzar",
11267
+ get_started: "Primeros pasos",
11268
+ uncategorized: "Sin categorizar",
11269
+ dragToCategorize: "Arrastra elementos aqu\xED para categorizarlos",
11270
+ itemsDeleted: "Se ha(n) eliminado {{count}} elemento(s)",
11271
+ createPageFailed: "Error al crear la p\xE1gina",
11272
+ categoryCreated: "Categor\xEDa '{{name}}' creada correctamente",
11273
+ emptyTitle: "El t\xEDtulo no puede estar vac\xEDo",
11274
+ emptyHint: "El t\xEDtulo no puede estar vac\xEDo",
11275
+ createFirstPage: "Crea tu primera p\xE1gina",
11276
+ selectedItemsCount: "{{count}} elemento(s) seleccionado(s)",
11277
+ deselectAll: "Deseleccionar todo",
11278
+ selectAll: "Seleccionar todo",
11279
+ deleteSelected: "Eliminar seleccionados",
11280
+ cancelSelectionMode: "Cancelar modo de selecci\xF3n",
11281
+ content: "Contenido",
11282
+ newPage: "Nueva p\xE1gina",
11283
+ newCategory: "Nueva categor\xEDa",
11284
+ batchSelect: "Selecci\xF3n por lotes",
11285
+ expandAll: "Expandir todo",
11286
+ collapseAll: "Contraer todo",
11287
+ contentMoved: "Contenido movido",
11288
+ movedToDesc: "Movido a {{space}}. \xBFCambiar para continuar?",
11289
+ moveSwitchPrompt: "El contenido se ha movido correctamente",
11290
+ switchToSpaceAction: "Cambiar de espacio",
11291
+ switchSpaceFailed: "Error al cambiar de espacio",
11292
+ noOtherSpaces: "No hay otros espacios disponibles",
11293
+ unnamedSpace: "Espacio sin nombre",
11294
+ moveFailed: "Error al mover: {{message}}",
11295
+ unknownError: "Ha ocurrido un error desconocido",
11296
+ titlePlaceholder: "Introduce un t\xEDtulo...",
11297
+ moreActions: "M\xE1s acciones",
11298
+ editTitle: "Editar t\xEDtulo",
11299
+ pin: "Fijar",
11300
+ unpin: "Desfijar",
11301
+ favorite: "Favorito",
11302
+ unfavorite: "Quitar de favoritos",
11303
+ favoriteDetailMissingHint: "Faltan los datos detallados",
11304
+ quickAddToRail: "A\xF1adir a la barra r\xE1pida",
11305
+ quickRemoveFromRail: "Quitar de la barra r\xE1pida",
11306
+ quickMoveRailUp: "Mover hacia arriba",
11307
+ quickMoveRailDown: "Mover hacia abajo",
11308
+ pinUpdated: "Estado de fijaci\xF3n actualizado",
11309
+ pinUpdateFailed: "Error al actualizar el estado de fijaci\xF3n",
11310
+ moveToSpace: "Mover a otro espacio",
11311
+ add_content: "A\xF1adir contenido",
11312
+ create_space_desc: "Crear un nuevo espacio para tu equipo o proyectos",
11313
+ create_new_category: "Crear nueva categor\xEDa",
11314
+ create_category_desc: "Crear una nueva categor\xEDa para organizar tu contenido",
11315
+ select_space_first: "Por favor, selecciona primero un espacio",
11316
+ addCategorySuccess: "Categor\xEDa a\xF1adida correctamente",
11317
+ addCategoryFailed: "Error al a\xF1adir la categor\xEDa",
11318
+ joinConversation: "Unirse a la conversaci\xF3n",
11319
+ addedToConversation: "A\xF1adido a la conversaci\xF3n",
11320
+ all: "Todo",
11321
+ dialogs: "Di\xE1logos",
11322
+ pages: "P\xE1ginas",
11323
+ images: "Im\xE1genes",
11324
+ documentAttachments: "Documentos adjuntos",
11325
+ videos: "V\xEDdeos",
11326
+ audios: "Audios",
11327
+ files: "Otros adjuntos",
11328
+ filesHub: "Centro de archivos",
11329
+ file: "Archivos",
11330
+ attachment: "Adjunto",
11331
+ otherAttachments: "Otros adjuntos",
11332
+ documentAttachment: "Documento adjunto",
11333
+ videoAttachment: "V\xEDdeo adjunto",
11334
+ audioAttachment: "Audio adjunto",
11335
+ tables: "Tablas",
11336
+ apps: "Aplicaciones",
11337
+ agents: "Agents",
11338
+ scheduled: "Programado",
11339
+ no_content_in_tab: "A\xFAn no hay {{type}} en este espacio.",
11340
+ no_attachments_in_space: "A\xFAn no hay adjuntos en este espacio.",
11341
+ no_attachments_desc: "Sube o genera contenido para organizarlo aqu\xED.",
11342
+ no_scheduled_in_space: "A\xFAn no hay tareas programadas en este espacio.",
11343
+ no_scheduled_desc: "Aqu\xED se muestran tus tareas automatizadas programadas y el historial de ejecuci\xF3n. Indica a tu IA o configura flujos de trabajo para que se ejecuten autom\xE1ticamente en los momentos que elijas.",
11344
+ no_images_in_space: "A\xFAn no hay im\xE1genes en este espacio.",
11345
+ no_images_desc: "Puedes subir im\xE1genes o generarlas en conversaciones de IA.",
11346
+ no_documents_in_space: "A\xFAn no hay documentos adjuntos en este espacio.",
11347
+ no_documents_desc: "Puedes subir PDF, Markdown, documentos de Word, etc. para consulta y an\xE1lisis.",
11348
+ no_videos_in_space: "A\xFAn no hay v\xEDdeos en este espacio.",
11349
+ no_videos_desc: "Puedes subir archivos de v\xEDdeo para referenciarlos como contexto.",
11350
+ no_audios_in_space: "A\xFAn no hay audios en este espacio.",
11351
+ no_audios_desc: "Puedes subir grabaciones o pistas de audio para su transcripci\xF3n o procesamiento.",
11352
+ no_tables_in_space: "A\xFAn no hay tablas en este espacio.",
11353
+ no_tables_desc: "Organiza y analiza tus datos en vistas estructuradas con soporte directo para procesamiento mediante IA.",
11354
+ no_files_in_space: "A\xFAn no hay otros adjuntos en este espacio.",
11355
+ no_files_desc: "Aqu\xED se muestran archivos diversos que no est\xE1n clasificados como im\xE1genes, documentos o medios.",
11356
+ contentManagement: "Gesti\xF3n de contenido",
11357
+ deleteFailed: "Error al eliminar",
11358
+ deleteMovedToTrash: '"{{title}}" se ha movido a la papelera',
11359
+ deleteMovedToTrashBatch_one: "1 elemento movido a la papelera",
11360
+ deleteMovedToTrashBatch_other: "{{count}} elementos movidos a la papelera",
11361
+ deleteMovedToTrashBatch: "{{count}} elementos movidos a la papelera",
11362
+ batchDeleteCancelled: "Eliminaci\xF3n por lotes cancelada",
11363
+ uploadSuccess: "Subida completada",
11364
+ uploadFailed: "Error al subir",
11365
+ uploadPartial: "{{succeeded}} subidos, {{failed}} fallidos",
11366
+ retry: "Reintentar",
11367
+ uploadFile: "Subir archivo",
11368
+ uploading: "Subiendo...",
11369
+ selectionCount: "{{count}} seleccionados",
11370
+ gridView: "Vista de cuadr\xEDcula",
11371
+ listView: "Vista de lista",
11372
+ confirmDelete: "Confirmar eliminaci\xF3n",
11373
+ confirmDeleteMultiple: "\xBFEst\xE1s seguro de que deseas eliminar los {{count}} elementos seleccionados? Esta acci\xF3n no se puede deshacer.",
11374
+ confirmDeleteSingle: "\xBFEst\xE1s seguro de que deseas eliminar este elemento? Esta acci\xF3n no se puede deshacer.",
11375
+ unnamed: "Sin nombre",
11376
+ preview: "Vista previa",
11377
+ open: "Abrir",
11378
+ download: "Descargar",
11379
+ clearFilters: "Limpiar filtros",
11380
+ totalCount: "{{count}} elementos",
11381
+ filteredCount: "{{count}} / {{total}} elementos",
11382
+ backToTop: "Volver arriba",
11383
+ latestContent: "Contenido reciente",
11384
+ viewTemplate: "Ver plantilla",
11385
+ spaceAgents: "Agents del espacio",
11386
+ no_content_desc: "A\xFAn no hay contenido en este espacio.",
11387
+ no_category_content: "No hay contenido en esta categor\xEDa",
11388
+ spaceData: "Datos del espacio",
11389
+ spaceAgentSection: "Agents del espacio",
11390
+ viewMore: "Ver m\xE1s",
11391
+ noAgentInSpace: "No hay ning\xFAn Agent en este espacio",
11392
+ noAgentInSpaceTitle: "A\xFAn no hay Agents",
11393
+ noAgentInSpaceDesc: "A\xF1ade Agents a este espacio para comenzar a colaborar.",
11394
+ createAgent: "Crear Agent",
11395
+ createAgentHint: "Crear un Agent dedicado para este espacio",
11396
+ categoryNamePlaceholder: "Introduce el nombre de la categor\xEDa",
11397
+ expand: "Expandir",
11398
+ collapse: "Contraer",
11399
+ selectCategory: "Seleccionar categor\xEDa {{name}}",
11400
+ dragToReorder: "Arrastrar para reordenar",
11401
+ editName: "Editar nombre",
11402
+ deleteCategoryConfirm: "\xBFEst\xE1s seguro de que deseas eliminar la categor\xEDa '{{name}}'? Esta acci\xF3n no se puede deshacer.",
11403
+ deleteCategory: "Eliminar categor\xEDa",
11404
+ search: "Buscar",
11405
+ search_no_results: "No se encontraron contenidos coincidentes",
11406
+ please_login: "Inicia sesi\xF3n para ver el contenido",
11407
+ search_placeholder: "Buscar contenido...",
11408
+ allView: {
11409
+ recent: "Reciente",
11410
+ work: "Trabajo",
11411
+ projects: "Proyectos",
11412
+ favorites: "Favoritos",
11413
+ shares: "Compartidos",
11414
+ expanded: "Expandido",
11415
+ back: "Atr\xE1s",
11416
+ viewAll: "Ver todo",
11417
+ noFavorites: "A\xFAn no hay favoritos",
11418
+ noShares: "A\xFAn no hay elementos compartidos",
11419
+ loadSharesError: "Error al cargar los elementos compartidos"
11420
+ },
11421
+ delete_space_options_title: "Opciones para eliminar el espacio",
11422
+ delete_space_options_desc: "Elige qu\xE9 hacer con el contenido de este espacio",
11423
+ delete_space_move_to_all: 'Mover el contenido a "Todo"',
11424
+ delete_space_move_to_all_desc: 'Conserva tu contenido creado y mu\xE9velo a la lista "Todo"',
11425
+ delete_space_move_to_all_success: 'Contenido movido correctamente a "Todo"',
11426
+ delete_space_delete_owned_success: "Contenido propio eliminado correctamente",
11427
+ delete_space_with_owned: "Eliminar tambi\xE9n el contenido propio",
11428
+ delete_space_with_owned_desc: "Elimina de forma permanente el espacio y todo el contenido creado en \xE9l",
11429
+ delete_space_cancel_desc: "Operaci\xF3n cancelada, no se ha eliminado ning\xFAn dato",
11430
+ manage: "Gestionar",
11431
+ finish: "Finalizar",
11432
+ ocrAddToChat: "A\xF1adir a di\xE1logo",
11433
+ newTable: "Nueva tabla",
11434
+ syncLocalAgents: "Sincronizar Agents locales",
11435
+ syncLocalAgentsSectionTitle: "Sincronizar Agents locales",
11436
+ syncLocalAgentsSectionDesc: "Sube la configuraci\xF3n de los Agents locales de este dispositivo a tu cuenta para utilizarlos en otros dispositivos",
11437
+ syncLocalAgentsTitle: "Sincronizar Agents locales con la cuenta",
11438
+ syncLocalAgentsConfirm: "Confirmar sincronizaci\xF3n",
11439
+ syncLocalAgentsConfirmLead: "Se han detectado {{count}} referencia(s) de Agents locales. \xBFSincronizarlas con la cuenta actual y actualizar el cat\xE1logo de este espacio?",
11440
+ syncLocalAgentsFactLocalRemains: "Los Agents locales permanecen en este dispositivo.",
11441
+ syncLocalAgentsFactSnapshot: "Solo se sube una instant\xE1nea de la configuraci\xF3n de los Agents.",
11442
+ syncLocalAgentsFactCatalogRewrite: "Las referencias en este espacio se actualizar\xE1n a la instant\xE1nea de la cuenta.",
11443
+ syncLocalAgentsFactNoDialogs: "Los di\xE1logos, mensajes y adjuntos no se suben.",
11444
+ syncLocalAgentsFactNoSecrets: "Las claves API y tokens locales no se suben.",
11445
+ syncLocalAgentsFactNoContinuous: "Esta es una operaci\xF3n puntual y no una sincronizaci\xF3n continua.",
11446
+ syncLocalAgentsSuccess: "Se actualizaron {{count}} referencia(s) de Agents locales a instant\xE1neas de la cuenta (Agents locales conservados)",
11447
+ syncLocalAgentsNoop: "No hay Agents locales en este espacio que requieran sincronizaci\xF3n (sin subida)",
11448
+ syncLocalAgentsError: "Error de sincronizaci\xF3n. Int\xE9ntalo de nuevo m\xE1s tarde.",
11449
+ syncLocalAgentsBlockedTitle: "No se pueden sincronizar los Agents locales",
11450
+ syncLocalAgentsBlockedLead: "La comprobaci\xF3n previa detect\xF3 contenidos locales no compatibles o ausentes y bloque\xF3 la subida. Resuelve los siguientes elementos antes de volver a intentarlo.",
11451
+ syncLocalAgentsBlockedOk: "Entendido",
11452
+ syncLocalAgentsBlockedReason_unsupported_local_content: "Esta sincronizaci\xF3n incluye tipos de contenido local no compatibles.",
11453
+ syncLocalAgentsBlockedReason_missing_or_tombstoned_record: "Faltan algunos registros de referencia o han sido eliminados.",
11454
+ syncLocalAgentsBlockedReason_authoritative_type_mismatch: "El tipo en el cat\xE1logo no coincide con el tipo de registro real.",
11455
+ syncLocalAgentsType_dialog: "Di\xE1logo",
11456
+ syncLocalAgentsType_page: "P\xE1gina",
11457
+ syncLocalAgentsType_doc: "Documento",
11458
+ syncLocalAgentsType_table: "Tabla",
11459
+ syncLocalAgentsType_file: "Archivo",
11460
+ syncLocalAgentsType_image: "Imagen",
11461
+ syncLocalAgentsType_app: "Aplicaci\xF3n",
11462
+ syncLocalAgentsType_task: "Tarea",
11463
+ syncLocalAgentsType_unknown: "Desconocido",
11464
+ myShares: {
11465
+ title: "Mis compartidos"
11466
+ },
11467
+ agent: {
11468
+ create_agent_manual: "Crear Agent manualmente"
11469
+ },
11470
+ createFailed: "Error al crear la tabla",
11471
+ filter_by_type: "Filtrar por tipo",
11472
+ no_items_found: "No se encontraron elementos de este tipo",
11473
+ userNotFound: "No se encontr\xF3 la informaci\xF3n del usuario, no se puede crear la tabla",
11474
+ table: {
11475
+ newTable: "Nueva tabla"
11476
+ }
11477
+ }
8393
11478
  }
8394
11479
  };
8395
11480
 
@@ -8448,28 +11533,58 @@ var getMessagesForDialogFromState = (state, dialogId) => {
8448
11533
  };
8449
11534
  var identityCanonicalName = (name) => name;
8450
11535
  var summarizingDialogs = /* @__PURE__ */ new Set();
11536
+ var BudgetRescueError = class extends Error {
11537
+ constructor(code, detail) {
11538
+ super(`budget_rescue ${code}: ${detail}; request not sent`);
11539
+ this.code = code;
11540
+ this.name = "BudgetRescueError";
11541
+ }
11542
+ };
8451
11543
  var updateDialogSummaryAction = async (args, thunkApi) => {
8452
11544
  const { dialogKey, preFetchedMessages, force = false } = args;
8453
- if (summarizingDialogs.has(dialogKey)) return;
11545
+ if (summarizingDialogs.has(dialogKey)) {
11546
+ if (args.reason === "budget_rescue") throw new BudgetRescueError("busy", "another summary is in progress");
11547
+ return;
11548
+ }
8454
11549
  summarizingDialogs.add(dialogKey);
8455
- const { dispatch, getState } = thunkApi;
11550
+ const { dispatch, getState, signal } = thunkApi;
11551
+ const budget = createSummaryBudget({ mode: args.reason === "manual" ? "manual" : "automatic", signal, deadlineMs: args.deadlineMs });
8456
11552
  try {
8457
11553
  const state = getState();
8458
11554
  const dialogId = extractCustomId(dialogKey);
8459
11555
  const dialogConfig = selectById(state, dialogKey);
8460
- if (!dialogConfig) return;
11556
+ if (!dialogConfig) {
11557
+ if (args.reason === "budget_rescue") throw new BudgetRescueError("missing-dialog", "dialog record unavailable");
11558
+ return;
11559
+ }
11560
+ const agentId = getActiveDialogAgentId(dialogConfig);
11561
+ const currentAgent = agentId ? applyBuiltinAgentRuntimeOverride(
11562
+ agentId,
11563
+ selectById(state, agentId) ?? { dbKey: agentId }
11564
+ ) : void 0;
11565
+ const session = thunkApi.extra?.accountSession?.getSnapshot();
11566
+ const account = session?.accounts?.find((entry) => entry.userId === session.activeAccountId);
11567
+ const eligibility = {
11568
+ userId: session?.activeAccountId,
11569
+ authenticated: !!session?.activeToken,
11570
+ platformAvailable: !!session?.activeToken,
11571
+ credits: account?.balance
11572
+ };
11573
+ const route = selectSummaryRoute(eligibility);
11574
+ const currentAvailable = !!currentAgent?.model && !!currentAgent?.provider && currentAgent.apiSource !== "cli";
8461
11575
  let contextWindow = DEFAULT_CONTEXT_WINDOW;
8462
11576
  {
8463
- const agentId = getActiveDialogAgentId(dialogConfig);
8464
- const agent = agentId ? selectById(state, agentId) : void 0;
8465
- const resolvedAgent = agent && agentId ? applyBuiltinAgentRuntimeOverride(agentId, agent) : agent;
11577
+ const agentId2 = getActiveDialogAgentId(dialogConfig);
11578
+ const agent = agentId2 ? selectById(state, agentId2) : void 0;
11579
+ const resolvedAgent = agent && agentId2 ? applyBuiltinAgentRuntimeOverride(agentId2, agent) : agent;
8466
11580
  contextWindow = resolveAgentContextWindow({
8467
11581
  model: resolvedAgent?.model,
8468
11582
  provider: resolvedAgent?.provider,
8469
- agentKey: agentId,
11583
+ agentKey: agentId2,
8470
11584
  agentName: resolvedAgent?.name
8471
11585
  }) ?? DEFAULT_CONTEXT_WINDOW;
8472
11586
  }
11587
+ contextWindow = args.contextWindow ?? contextWindow;
8473
11588
  const allMsgs = preFetchedMessages || getMessagesForDialogFromState(state, dialogId);
8474
11589
  const plan = planCompression({
8475
11590
  allMsgs,
@@ -8478,6 +11593,8 @@ var updateDialogSummaryAction = async (args, thunkApi) => {
8478
11593
  contextWindow,
8479
11594
  force,
8480
11595
  reason: args.reason,
11596
+ availableHistoryTokens: args.availableHistoryTokens,
11597
+ preserveLatestUserByProjection: args.preserveLatestUserByProjection,
8481
11598
  ...typeof args.lastRealInputTokens === "number" && args.lastRealInputTokens > 0 && contextWindow > 0 ? {
8482
11599
  realContextUsagePercent: Math.min(
8483
11600
  1,
@@ -8485,61 +11602,85 @@ var updateDialogSummaryAction = async (args, thunkApi) => {
8485
11602
  )
8486
11603
  } : {}
8487
11604
  });
8488
- if (!plan.shouldCompress) return;
8489
- const { msgsToCompress, newSummarizedBeforeId } = plan;
8490
- const extractedKeys = new Set(dialogConfig.referenceKeys || []);
8491
- for (const msg of msgsToCompress) {
8492
- for (const key of extractReferenceKeysFromMessage(msg)) {
8493
- extractedKeys.add(key);
8494
- }
11605
+ if (!plan.shouldCompress) {
11606
+ if (args.reason === "budget_rescue") throw new BudgetRescueError("no-compressible-history", "summary plan cannot cover more history");
11607
+ return;
8495
11608
  }
8496
11609
  const previousSummary = dialogConfig.summary || "";
8497
- const messagesText = formatMessagesForSummaryWithTruncation(msgsToCompress);
8498
- const fileOpsText = formatFileOperationsFromMessages(
8499
- msgsToCompress,
8500
- identityCanonicalName
11610
+ const summaryWindow = Math.min(
11611
+ route.kind === "platform" ? resolveAgentContextWindow({ model: route.model, provider: "nolo" }) ?? 32768 : Infinity,
11612
+ currentAvailable ? resolveAgentContextWindow(currentAgent) ?? 32768 : route.kind === "platform" ? Infinity : 32768
8501
11613
  );
8502
- const promptContent = buildCompactionUserContent({
11614
+ const request = buildBoundedCompactionRequest({
11615
+ msgsToCompress: plan.msgsToCompress,
8503
11616
  previousSummary,
8504
- messagesText,
8505
- fileOpsText
11617
+ contextWindow: summaryWindow,
11618
+ canonicalizeToolName: identityCanonicalName
8506
11619
  });
11620
+ if (request.status === "blocked") {
11621
+ notifyCompressionFailure(new Error(`\u6458\u8981\u8BF7\u6C42\u65E0\u6CD5\u5B89\u5168\u6784\u5EFA\uFF08${request.reason}\uFF09\uFF0C\u539F\u5386\u53F2\u4FDD\u6301\u4E0D\u53D8`));
11622
+ if (args.reason === "budget_rescue") throw new BudgetRescueError("no-summary-input", `bounded summary request blocked: ${request.reason}`);
11623
+ return;
11624
+ }
11625
+ const { coveredMessages, summarizedBeforeId: newSummarizedBeforeId, promptContent, outputTokenBudget } = request;
11626
+ const extractedKeys = new Set(dialogConfig.referenceKeys || []);
11627
+ for (const msg of coveredMessages) {
11628
+ for (const key of extractReferenceKeysFromMessage(msg)) extractedKeys.add(key);
11629
+ }
8507
11630
  try {
8508
- const runSummaryLlm = (model) => dispatch(
8509
- runLlm({
11631
+ const runSummaryLlm = async (platform, context) => {
11632
+ if (context.signal.aborted) throw context.signal.reason;
11633
+ if (!platform && !currentAvailable) throw new Error("Current model textOnly summary channel unavailable");
11634
+ const pending = dispatch(runLlm({
8510
11635
  llmConfig: {
8511
- ...BUILTIN_SUMMARY_LLM_CONFIG,
8512
- ...model ? { model } : {},
8513
- prompt: COMPACTION_SUMMARY_SYSTEM_PROMPT
11636
+ ...platform ? { ...BUILTIN_SUMMARY_LLM_CONFIG, model: PLATFORM_HOSTED_DEEPSEEK_FLASH_MODEL } : currentAgent,
11637
+ prompt: COMPACTION_SUMMARY_SYSTEM_PROMPT,
11638
+ max_tokens: outputTokenBudget,
11639
+ tools: []
8514
11640
  },
11641
+ toolsOverride: [],
11642
+ isStreaming: false,
11643
+ summaryCompletion: true,
11644
+ systemPromptOverride: COMPACTION_SUMMARY_SYSTEM_PROMPT,
8515
11645
  content: promptContent,
8516
11646
  billingDialogKey: dialogKey
8517
- })
8518
- ).unwrap();
8519
- const isUsableSummary = (value) => typeof value === "string" && value.trim().length > 0;
8520
- let newSummary = "";
8521
- let primaryError;
8522
- try {
8523
- newSummary = await runSummaryLlm();
8524
- } catch (error) {
8525
- primaryError = error;
8526
- }
8527
- if (!isUsableSummary(newSummary)) {
11647
+ }));
11648
+ const onAbort = () => pending.abort?.();
11649
+ context.signal.addEventListener("abort", onAbort, { once: true });
11650
+ if (context.signal.aborted) onAbort();
8528
11651
  try {
8529
- newSummary = await runSummaryLlm(BUILTIN_DIALOG_LLM_FALLBACK_MODEL);
8530
- } catch (fallbackError) {
8531
- throw primaryError ?? fallbackError;
11652
+ return await pending.unwrap();
11653
+ } finally {
11654
+ context.signal.removeEventListener("abort", onAbort);
11655
+ }
11656
+ };
11657
+ const result = await runSummaryWithContract({
11658
+ eligibility,
11659
+ budget,
11660
+ platform: { model: PLATFORM_HOSTED_DEEPSEEK_FLASH_MODEL, provider: "nolo", run: (context) => runSummaryLlm(true, context) },
11661
+ current: { model: currentAgent?.model, provider: currentAgent?.provider, run: (context) => runSummaryLlm(false, context) }
11662
+ });
11663
+ if (result.kind !== "success") {
11664
+ if (args.reason === "budget_rescue" && result.kind === "cancelled") {
11665
+ const error = new Error("budget_rescue cancelled");
11666
+ error.name = "AbortError";
11667
+ throw error;
8532
11668
  }
8533
- if (!isUsableSummary(newSummary) && primaryError) {
8534
- throw primaryError;
11669
+ if (result.kind !== "cancelled") {
11670
+ notifyCompressionFailure(result.kind === "error" ? result.error : new Error(`Summary ${result.kind}`));
8535
11671
  }
11672
+ if (args.reason === "budget_rescue") throw new BudgetRescueError("failed", `summary outcome ${result.kind}`);
11673
+ return result;
8536
11674
  }
11675
+ const newSummary = result.text;
11676
+ await budget.run(async () => void 0);
8537
11677
  if (newSummary && typeof newSummary === "string" && newSummary.trim()) {
8538
11678
  const currentCount = dialogConfig.compressionCount || 0;
8539
- const sourceMeta = await computeSummarySourceMetadata(
11679
+ const sourceMeta = await budget.run(async () => computeSummarySourceMetadata(
8540
11680
  allMsgs,
8541
11681
  newSummarizedBeforeId
8542
- );
11682
+ ));
11683
+ if (budget.signal.aborted) throw budget.signal.reason;
8543
11684
  await dispatch(
8544
11685
  patch({
8545
11686
  dbKey: dialogKey,
@@ -8559,9 +11700,22 @@ var updateDialogSummaryAction = async (args, thunkApi) => {
8559
11700
  const metrics = buildCompactionMetricsFromPlan({
8560
11701
  reason: args.reason || "context_budget",
8561
11702
  previousSummary: dialogConfig.summary || "",
8562
- plan,
8563
- newSummary: newSummary.trim()
8564
- // web 端 runLlm 只返回摘要字符串,不含 usage。
11703
+ plan: {
11704
+ msgsToCompress: coveredMessages,
11705
+ msgsToKeep: [...plan.msgsToCompress.slice(coveredMessages.length), ...plan.msgsToKeep]
11706
+ },
11707
+ newSummary: newSummary.trim(),
11708
+ summaryInput: {
11709
+ inputTokens: request.inputTokens,
11710
+ capTokens: request.capTokens,
11711
+ expandedMessages: request.expandedMessages,
11712
+ omittedMessages: request.omittedMessages
11713
+ },
11714
+ planCounts: {
11715
+ pendingMessageCount: plan.diagnostics?.pendingMsgCount,
11716
+ plannedCompressCount: plan.diagnostics?.compressCount
11717
+ }
11718
+ // Compact completion retains finish metadata but does not return usage.
8565
11719
  // summaryUsage 需要 runLlm 改造才能获取,当前留空。
8566
11720
  });
8567
11721
  console.log(formatCompactionMetricsLog(metrics));
@@ -8570,10 +11724,19 @@ var updateDialogSummaryAction = async (args, thunkApi) => {
8570
11724
  }
8571
11725
  }
8572
11726
  } catch (err) {
8573
- console.error("[ContextCompression] Failed:", err);
8574
- notifyCompressionFailure(err);
11727
+ if (signal?.aborted || isAbortError(err)) {
11728
+ if (args.reason === "budget_rescue") throw err;
11729
+ return;
11730
+ }
11731
+ if (args.reason === "budget_rescue") {
11732
+ if (!(err instanceof BudgetRescueError)) notifyCompressionFailure(classifySummaryError(err));
11733
+ throw err instanceof BudgetRescueError ? err : new BudgetRescueError("failed", "summary operation failed");
11734
+ }
11735
+ console.error("[ContextCompression] Failed:", classifySummaryError(err));
11736
+ notifyCompressionFailure(classifySummaryError(err));
8575
11737
  }
8576
11738
  } finally {
11739
+ budget.dispose();
8577
11740
  summarizingDialogs.delete(dialogKey);
8578
11741
  }
8579
11742
  };
@@ -9557,7 +12720,7 @@ function buildFallbackActivity(toolName, args) {
9557
12720
  function normalizeString(value) {
9558
12721
  return asOptionalTrimmedString(value);
9559
12722
  }
9560
- function normalizeStatus(value) {
12723
+ function normalizeStatus2(value) {
9561
12724
  return value === "pending" || value === "running" || value === "success" || value === "failed" ? value : void 0;
9562
12725
  }
9563
12726
  function normalizeKind(value) {
@@ -9606,7 +12769,7 @@ function normalizeActivityPhase(value) {
9606
12769
  const id = normalizeString(value.id) || title.toLowerCase().replace(/\s+/g, "-");
9607
12770
  const index = asOptionalFiniteNumber(value.index);
9608
12771
  const total = asOptionalFiniteNumber(value.total);
9609
- const status = normalizeStatus(value.status);
12772
+ const status = normalizeStatus2(value.status);
9610
12773
  return {
9611
12774
  id,
9612
12775
  title,
@@ -10450,7 +13613,7 @@ var messageSlice = createSliceWithThunks({
10450
13613
  return rejectWithValue("Missing dialogConfig");
10451
13614
  }
10452
13615
  const dialogKey = dialogConfig.dbKey || dialogConfig.id;
10453
- const dialogId = extractCustomId(dialogKey);
13616
+ const dialogId = dialogConfig.id ?? extractCustomId(dialogKey);
10454
13617
  const currentAccountUserId = selectIdentityUserId(state) ?? null;
10455
13618
  const dialogConfigUserId = dialogConfig.userId;
10456
13619
  const { fullMessage } = assemblePersistedUserMessage({
@@ -10487,13 +13650,201 @@ var messageSlice = createSliceWithThunks({
10487
13650
  messageActions.prepareAndPersistMessage({
10488
13651
  message: {
10489
13652
  role: "user",
10490
- content: userInput
13653
+ content: userInput,
13654
+ ...args.pending ? { metadata: { queueState: "pending", source: "web" } } : {}
10491
13655
  },
10492
13656
  dialogConfig
10493
13657
  })
10494
13658
  ).unwrap();
10495
13659
  }
10496
13660
  ),
13661
+ admitPendingUserMessages: create.asyncThunk(
13662
+ async (args, { dispatch, getState, extra }) => {
13663
+ const dialogId = extractCustomId(args.dialogKey);
13664
+ const pending = selectAllMsgs(getState(), dialogId).filter((message) => selectPendingUserMessages([message]).length > 0 || args.resumeUnrequested && message.role === "user" && message.metadata?.userBatchPhase === "admitted");
13665
+ if (!pending.length || args.signal?.aborted) return [];
13666
+ if (!isLocalUserBatch(args.dialogKey)) {
13667
+ const control = userBatchControl(getState(), args.dialogKey);
13668
+ const durable = await Promise.all(pending.map((message) => extra.db.get(message.dbKey)));
13669
+ if (durable.some((row) => !row || row.role !== "user")) throw new Error("Missing durable pending user message");
13670
+ const existing = durable.find((row) => row.metadata?.userBatchReceipt)?.metadata.userBatchReceipt;
13671
+ const batch = existing ? durable.filter((row) => existing.messageIds.includes(row.id)) : durable;
13672
+ for (const row of batch) {
13673
+ if (args.signal?.aborted) return [];
13674
+ await control.publish(row);
13675
+ }
13676
+ if (args.signal?.aborted) return [];
13677
+ const result = await control.call({ action: "claim", messageIds: batch.map((row) => row.id) });
13678
+ if (!result.authorized) throw new Error("User batch owned by another plane; automatic resubmission blocked");
13679
+ const receipt = readClientReceipt(result.receipt, batch.map((row) => row.id));
13680
+ if (receipt.phase !== "admitted") throw new Error("User batch provider outcome is unknown; automatic resubmission blocked");
13681
+ const accepted = receipt.messageIds.map((id) => batch.find((row) => row.id === id)).map((row) => ({ ...row, metadata: {
13682
+ ...row.metadata,
13683
+ queueState: "accepted",
13684
+ acceptedUserBatchId: receipt.batchId,
13685
+ userBatchOwner: receipt.owner,
13686
+ userBatchPhase: receipt.phase,
13687
+ userBatchReceipt: receipt
13688
+ } }));
13689
+ await writeStoreOps(extra.db, accepted.map((row) => ({ type: "put", key: row.dbKey, value: row })));
13690
+ for (const row of accepted) dispatch(messageActions.addUserMessage({ ...row, dialogId }));
13691
+ return args.signal?.aborted ? [] : accepted;
13692
+ }
13693
+ const batchId = pending.map((message) => message.id).join(":");
13694
+ const admitted = await admitPersistedUserBatch({
13695
+ requests: pending.map((message) => ({ ...createTurnRequest(
13696
+ typeof message.content === "string" ? message.content : ""
13697
+ ), messageId: message.id, source: "web" })),
13698
+ signal: args.signal,
13699
+ persist: async () => {
13700
+ const db = extra.db;
13701
+ const accepted = await Promise.all(pending.map(async (projected) => {
13702
+ const stored = await db.get(projected.dbKey);
13703
+ if (!stored || stored.id !== projected.id || stored.role !== "user") {
13704
+ throw new Error(`Missing durable pending user message ${projected.id}`);
13705
+ }
13706
+ if (stored.metadata?.queueState !== "pending") return stored;
13707
+ return normalizeTimeFields({ ...stored, metadata: {
13708
+ ...stored.metadata,
13709
+ queueState: "accepted",
13710
+ acceptedUserBatchId: batchId,
13711
+ userBatchPhase: "admitted"
13712
+ } });
13713
+ }));
13714
+ if (args.signal?.aborted) return;
13715
+ await writeStoreOps(db, accepted.map((message) => ({ type: "put", key: message.dbKey, value: message })));
13716
+ for (const message of accepted) {
13717
+ await dispatch(patch({ dbKey: message.dbKey, changes: { metadata: message.metadata } })).unwrap();
13718
+ dispatch(messageActions.addUserMessage({ ...message, dialogId }));
13719
+ }
13720
+ }
13721
+ });
13722
+ return admitted.length ? pending : [];
13723
+ }
13724
+ ),
13725
+ runPendingUserBatchRequest: create.asyncThunk(
13726
+ async (args, { dispatch, getState, extra }) => {
13727
+ const dialogId = extractCustomId(args.dialogKey);
13728
+ const db = extra.db;
13729
+ const valid = () => !args.signal?.aborted && (args.owns?.() ?? true) && (args.execution?.valid() ?? true);
13730
+ const assertInput = (expected, actual, ids) => {
13731
+ try {
13732
+ assertUserBatchInput(expected, actual, ids);
13733
+ } catch (error) {
13734
+ args.execution?.dispose();
13735
+ throw error;
13736
+ }
13737
+ };
13738
+ if (!isLocalUserBatch(args.dialogKey)) {
13739
+ if (!Array.isArray(args.requestUserInput)) throw new Error("Missing controlled user batch request input; blocked");
13740
+ if (args.execution && !args.execution.valid()) throw new Error("User batch execution expired; blocked");
13741
+ if (!valid()) return void 0;
13742
+ const control = userBatchControl(getState(), args.dialogKey);
13743
+ const history = selectAllMsgs(getState(), dialogId).filter((message) => message.role === "user");
13744
+ const latest = history[history.length - 1];
13745
+ if (latest?.metadata?.queueState === "pending") {
13746
+ if (args.execution?.hasGrant()) throw new Error("New user batch requires its own claim; blocked");
13747
+ await dispatch(messageActions.admitPendingUserMessages({ dialogKey: args.dialogKey, signal: args.signal, resumeUnrequested: true })).unwrap();
13748
+ }
13749
+ if (latest) {
13750
+ const original = await db.get(latest.dbKey);
13751
+ if (original && original.metadata?.queueState !== "pending" && !original.metadata?.userBatchPhase && !original.metadata?.userBatchReceipt) {
13752
+ if (args.execution?.hasGrant()) throw new Error("New user batch requires its own claim; blocked");
13753
+ const published = await control.publish(original);
13754
+ dispatch(messageActions.addUserMessage({ ...published, dialogId }));
13755
+ await dispatch(messageActions.admitPendingUserMessages({ dialogKey: args.dialogKey, signal: args.signal, resumeUnrequested: true })).unwrap();
13756
+ }
13757
+ }
13758
+ const users = selectAllMsgs(getState(), dialogId).filter((message) => message.role === "user");
13759
+ const durable = await Promise.all(users.map((message) => db.get(message.dbKey)));
13760
+ const last = durable[durable.length - 1];
13761
+ if (args.execution && last?.metadata?.userBatchReceipt) {
13762
+ const receipt2 = last.metadata.userBatchReceipt;
13763
+ const batchRows = durable.filter((row) => receipt2.messageIds.includes(row?.id));
13764
+ const checked = readClientReceipt(receipt2, batchRows.map((row) => row.id));
13765
+ if (args.execution.has(args.dialogKey, checked)) {
13766
+ if (durable.some((row) => row?.metadata?.queueState === "pending" && !checked.messageIds.includes(row.id))) {
13767
+ throw new Error("New user batch requires its own claim; blocked");
13768
+ }
13769
+ if (!valid()) {
13770
+ args.execution.dispose();
13771
+ return void 0;
13772
+ }
13773
+ userBatchControl(getState(), args.dialogKey);
13774
+ const input2 = snapshotUserBatchInput(batchRows);
13775
+ assertInput(input2, snapshotUserBatchInput(users), checked.messageIds);
13776
+ assertInput(input2, args.requestUserInput, checked.messageIds);
13777
+ return args.execution.start(args.dialogKey, checked, input2, args.start);
13778
+ }
13779
+ }
13780
+ const admitted = durable.filter((row) => row?.metadata?.userBatchPhase === "admitted");
13781
+ if (!admitted.length) {
13782
+ if (durable.some((row) => row?.metadata?.queueState === "pending" || row?.metadata?.userBatchPhase)) {
13783
+ throw new Error("No admitted authority receipt; automatic resubmission blocked");
13784
+ }
13785
+ throw new Error("Missing user batch receipt; automatic resubmission blocked");
13786
+ }
13787
+ const receipt = readClientReceipt(
13788
+ admitted[0].metadata.userBatchReceipt,
13789
+ admitted.filter((row) => row.metadata?.acceptedUserBatchId === admitted[0].metadata.acceptedUserBatchId).map((row) => row.id)
13790
+ );
13791
+ if (receipt.phase !== "admitted") throw new Error("User batch already requested; automatic resubmission blocked");
13792
+ if (!valid()) return void 0;
13793
+ userBatchControl(getState(), args.dialogKey);
13794
+ const result = await control.call({ action: "requested", batchId: receipt.batchId, token: receipt.token });
13795
+ if (result.authorized && result.receipt?.phase !== "requested") throw new Error("Missing requested authority receipt; automatic resubmission blocked");
13796
+ if (result.receipt) {
13797
+ const returned = readClientReceipt(result.receipt, receipt.messageIds, true);
13798
+ if (returned.batchId !== receipt.batchId || returned.token !== receipt.token) throw new Error("Mismatched user batch receipt");
13799
+ const records = admitted.filter((row) => receipt.messageIds.includes(row.id)).map((row) => ({
13800
+ ...row,
13801
+ metadata: { ...row.metadata, userBatchPhase: returned.phase, userBatchReceipt: returned }
13802
+ }));
13803
+ await writeStoreOps(db, records.map((row) => ({ type: "put", key: row.dbKey, value: row })));
13804
+ for (const row of records) dispatch(messageActions.addUserMessage({ ...row, dialogId }));
13805
+ }
13806
+ if (!result.authorized) throw new Error("User batch provider outcome is unknown; automatic resubmission blocked");
13807
+ if (!valid()) return void 0;
13808
+ userBatchControl(getState(), args.dialogKey);
13809
+ if (!Array.isArray(result.messages) || result.messages.length !== receipt.messageIds.length || result.messages.some((row, i) => row?.id !== receipt.messageIds[i] || row.role !== "user")) {
13810
+ throw new Error("Invalid ordered authorized user messages; blocked");
13811
+ }
13812
+ const input = snapshotUserBatchInput(result.messages);
13813
+ const current = await Promise.all(receipt.messageIds.map((id) => db.get(admitted.find((row) => row.id === id).dbKey)));
13814
+ assertInput(input, snapshotUserBatchInput(current), receipt.messageIds);
13815
+ assertInput(input, snapshotUserBatchInput(selectAllMsgs(getState(), dialogId)), receipt.messageIds);
13816
+ assertInput(input, args.requestUserInput, receipt.messageIds);
13817
+ if (!valid()) return void 0;
13818
+ if (args.execution) {
13819
+ args.execution.authorize(args.dialogKey, result.receipt, input);
13820
+ return args.execution.start(args.dialogKey, result.receipt, input, args.start);
13821
+ }
13822
+ return args.start();
13823
+ }
13824
+ const claimed = selectAllMsgs(getState(), dialogId).filter((message) => message.role === "user" && message.metadata?.userBatchPhase === "admitted");
13825
+ const authoritative = await Promise.all(claimed.map((message) => db.get(message.dbKey)));
13826
+ if (authoritative.some((row) => row?.metadata?.userBatchPhase === "requested")) {
13827
+ throw new Error("User batch provider outcome is unknown; automatic resubmission blocked");
13828
+ }
13829
+ const rows = authoritative.filter((row) => row?.metadata?.userBatchPhase === "admitted");
13830
+ const phaseRows = (phase) => rows.map((row) => ({
13831
+ ...row,
13832
+ metadata: { ...row.metadata, userBatchPhase: phase }
13833
+ }));
13834
+ const persist = async (phase) => {
13835
+ const records = phaseRows(phase);
13836
+ await writeStoreOps(db, records.map((row) => ({ type: "put", key: row.dbKey, value: row })));
13837
+ for (const row of records) dispatch(messageActions.addUserMessage({ ...row, dialogId }));
13838
+ };
13839
+ if (!valid()) return void 0;
13840
+ if (rows.length) await persist("requested");
13841
+ if (!valid()) {
13842
+ if (rows.length) await persist("admitted");
13843
+ return void 0;
13844
+ }
13845
+ return args.start();
13846
+ }
13847
+ ),
10497
13848
  /**
10498
13849
  * 初始化当前对话消息
10499
13850
  */
@@ -10768,7 +14119,7 @@ var messageSlice = createSliceWithThunks({
10768
14119
  * 一条流式回复结束
10769
14120
  */
10770
14121
  messageStreamEnd: create.asyncThunk(
10771
- async (payload, { dispatch, getState }) => {
14122
+ async (payload, { dispatch, getState, extra, signal }) => {
10772
14123
  const {
10773
14124
  finalContentBuffer,
10774
14125
  totalUsage,
@@ -10905,7 +14256,7 @@ var messageSlice = createSliceWithThunks({
10905
14256
  // contextWindow 完成,保证分子分母同源(W5 窗口错配)。
10906
14257
  lastRealInputTokens: lastInputTokensFromRecords(billingUsageRecords)
10907
14258
  },
10908
- { dispatch, getState }
14259
+ { dispatch, getState, extra, signal }
10909
14260
  ).catch((err) => console.error("Summary update failed:", err));
10910
14261
  if (addRefs) {
10911
14262
  dispatch(addReferenceKeysAction({
@@ -11075,7 +14426,7 @@ var messageSlice = createSliceWithThunks({
11075
14426
  runtimeOptions: args.runtimeOptions
11076
14427
  });
11077
14428
  if (agentKeyToUse) {
11078
- const { streamAgentChatTurn } = await import("./agentSlice-TMYP2UEA.js");
14429
+ const { streamAgentChatTurn } = await import("./agentSlice-RD2CDU7T.js");
11079
14430
  await dispatch(
11080
14431
  streamAgentChatTurn({
11081
14432
  agentKey: agentKeyToUse,
@@ -11125,6 +14476,8 @@ var {
11125
14476
  finalizeTransientMessageOnError,
11126
14477
  prepareAndPersistMessage,
11127
14478
  prepareAndPersistUserMessage,
14479
+ admitPendingUserMessages,
14480
+ runPendingUserBatchRequest,
11128
14481
  initMsgs,
11129
14482
  loadOlderMessages,
11130
14483
  messageStreamEnd,
@@ -11624,6 +14977,27 @@ var calculatePrice = ({
11624
14977
  };
11625
14978
  };
11626
14979
 
14980
+ // packages/ai/token/platformBillingGate.ts
14981
+ var trimOrUndefined = (value) => {
14982
+ const trimmed = typeof value === "string" ? value.trim() : "";
14983
+ return trimmed || void 0;
14984
+ };
14985
+ function hasUsableCatalogPrice(provider, model) {
14986
+ if (!provider || !model) return false;
14987
+ const price = findModelConfig(provider, model)?.price;
14988
+ if (!price) return false;
14989
+ return (price.input ?? 0) > 0 || (price.output ?? 0) > 0;
14990
+ }
14991
+ function isTrustedPlatformBillingIdentity(input) {
14992
+ if (trimOrUndefined(input.apiSource) === "platform") return true;
14993
+ if (isBuiltinPlatformAgentKey(trimOrUndefined(input.agentId))) return true;
14994
+ if (trimOrUndefined(input.apiSource) !== void 0) return false;
14995
+ return isPlatformManagedProvider(
14996
+ trimOrUndefined(input.provider) ?? "",
14997
+ trimOrUndefined(input.model) ?? ""
14998
+ );
14999
+ }
15000
+
11627
15001
  // packages/ai/token/resolveBillingTarget.ts
11628
15002
  var normalizeString2 = (value) => {
11629
15003
  const trimmed = asTrimmedString(value);
@@ -11654,6 +15028,15 @@ var resolveBillingTarget = ({
11654
15028
  };
11655
15029
 
11656
15030
  // packages/ai/token/prepareTokenUsageData.ts
15031
+ var warnedBillingTargetFallbacks = /* @__PURE__ */ new Set();
15032
+ function warnBillingTargetFallbackOnce(args) {
15033
+ const key = `${args.billedProvider ?? "?"}|${args.billedModel}->${args.fallbackProvider}|${args.fallbackModel}`;
15034
+ if (warnedBillingTargetFallbacks.has(key)) return;
15035
+ warnedBillingTargetFallbacks.add(key);
15036
+ console.warn(
15037
+ `[billing] billed target has no catalog price (provider=${args.billedProvider ?? "?"} model=${args.billedModel}); falling back to agent identity (provider=${args.fallbackProvider} model=${args.fallbackModel}). Fix the upstream billing alias \u2014 platform charges must never resolve to 0.`
15038
+ );
15039
+ }
11657
15040
  function resolveTokenUsagePricing(args) {
11658
15041
  const { rawUsage, agentConfig, nowMs } = args;
11659
15042
  const usage = normalizeUsage(rawUsage);
@@ -11695,6 +15078,45 @@ function resolveTokenUsagePricing(args) {
11695
15078
  sharingLevel: agentConfig.sharingLevel,
11696
15079
  nowMs
11697
15080
  });
15081
+ const agentIdentityModel = typeof agentConfig.model === "string" ? agentConfig.model.trim() : "";
15082
+ const agentIdentityProvider = typeof agentConfig.provider === "string" && agentConfig.provider.trim() ? agentConfig.provider.trim() : void 0;
15083
+ const isTrustedPlatformIdentity = isTrustedPlatformBillingIdentity({
15084
+ provider: agentIdentityProvider,
15085
+ model: agentIdentityModel,
15086
+ apiSource: agentConfig.apiSource,
15087
+ agentId: canonicalAgentId
15088
+ });
15089
+ const sameTarget = agentIdentityProvider === billedProvider && agentIdentityModel === billedModel;
15090
+ if (isTrustedPlatformIdentity && !hasUsableCatalogPrice(billedProvider, billedModel) && agentIdentityModel && !sameTarget && hasUsableCatalogPrice(agentIdentityProvider, agentIdentityModel)) {
15091
+ const agentProvider = agentIdentityProvider;
15092
+ const agentModel = agentIdentityModel;
15093
+ const fallbackPrice = calculatePrice({
15094
+ provider: agentProvider,
15095
+ modelName: agentModel,
15096
+ billingServiceTier: billedServiceTier,
15097
+ usage,
15098
+ externalPrice: void 0,
15099
+ sharingLevel: agentConfig.sharingLevel,
15100
+ nowMs
15101
+ });
15102
+ if (typeof fallbackPrice.cost === "number" && fallbackPrice.cost > 0) {
15103
+ warnBillingTargetFallbackOnce({
15104
+ billedProvider,
15105
+ billedModel,
15106
+ fallbackProvider: agentProvider ?? "",
15107
+ fallbackModel: agentModel
15108
+ });
15109
+ return {
15110
+ usage,
15111
+ billedProvider: agentProvider,
15112
+ billedModel: agentModel,
15113
+ billedServiceTier,
15114
+ cost: fallbackPrice.cost,
15115
+ pay: fallbackPrice.pay,
15116
+ hasExternalPrice
15117
+ };
15118
+ }
15119
+ }
11698
15120
  return {
11699
15121
  usage,
11700
15122
  billedProvider,
@@ -12074,7 +15496,7 @@ var deleteOwnedDialogAttachments = async (args) => {
12074
15496
  metadataReadFailures
12075
15497
  });
12076
15498
  if (!plan.deleteCandidates.length) return plan;
12077
- const { deleteFileAction } = await import("./deleteFile-7VQGLK2V.js");
15499
+ const { deleteFileAction } = await import("./deleteFile-Q3YDB4ML.js");
12078
15500
  for (const candidate of plan.deleteCandidates) {
12079
15501
  if (candidate.fileDbKey) {
12080
15502
  await deleteFileAction(candidate.fileDbKey, args.thunkApi);
@@ -12136,7 +15558,7 @@ var deleteDialogThunk = async (payload, thunkApi) => {
12136
15558
  }
12137
15559
  if (isCurrentDialog) {
12138
15560
  await thunkApi.dispatch(resetMsgs());
12139
- const { clearPendingAttachments: clearPendingAttachments2 } = await import("./dialogSlice-GRSVGDTF.js");
15561
+ const { clearPendingAttachments: clearPendingAttachments2 } = await import("./dialogSlice-LFNVUSAN.js");
12140
15562
  dispatch(clearPendingAttachments2());
12141
15563
  }
12142
15564
  return { dialogKey, isCurrentDialog, attachmentPlan };
@@ -12144,39 +15566,39 @@ var deleteDialogThunk = async (payload, thunkApi) => {
12144
15566
 
12145
15567
  // packages/chat/dialog/dialogSlice.ts
12146
15568
  var runCreateDialogAction = async (args, thunkApi) => {
12147
- const { createDialogAction } = await import("./createDialogAction-VQW5WDYX.js");
15569
+ const { createDialogAction } = await import("./createDialogAction-UPN774AF.js");
12148
15570
  return createDialogAction(args, thunkApi);
12149
15571
  };
12150
15572
  var runCreateAgentAutomationAction = async (args, thunkApi) => {
12151
- const { createAgentAutomationAction } = await import("./createAgentAutomationAction-ZC57YRSV.js");
15573
+ const { createAgentAutomationAction } = await import("./createAgentAutomationAction-UCLTHQRI.js");
12152
15574
  return createAgentAutomationAction(args, thunkApi);
12153
15575
  };
12154
15576
  var runUpdateDialogTitleAction = async (args, thunkApi) => {
12155
- const { updateDialogTitleAction } = await import("./updateDialogTitleAction-U53ZT7PJ.js");
15577
+ const { updateDialogTitleAction } = await import("./updateDialogTitleAction-KNPOAMVS.js");
12156
15578
  return updateDialogTitleAction(args, thunkApi);
12157
15579
  };
12158
15580
  var runAddDialogAgentAction = async (args, thunkApi) => {
12159
- const { addDialogAgentAction } = await import("./addDialogAgentAction-3NKVQCEC.js");
15581
+ const { addDialogAgentAction } = await import("./addDialogAgentAction-CAKRU3ZT.js");
12160
15582
  return addDialogAgentAction(args, thunkApi);
12161
15583
  };
12162
15584
  var runRemoveDialogAgentAction = async (args, thunkApi) => {
12163
- const { removeDialogAgentAction } = await import("./removeDialogAgentAction-FKL4BYMR.js");
15585
+ const { removeDialogAgentAction } = await import("./removeDialogAgentAction-B6H7DXFM.js");
12164
15586
  return removeDialogAgentAction(args, thunkApi);
12165
15587
  };
12166
15588
  var runSetPrimaryDialogAgentAction = async (args, thunkApi) => {
12167
- const { setPrimaryDialogAgentAction } = await import("./setPrimaryDialogAgentAction-2OLWRFYR.js");
15589
+ const { setPrimaryDialogAgentAction } = await import("./setPrimaryDialogAgentAction-KPFVPHCJ.js");
12168
15590
  return setPrimaryDialogAgentAction(args, thunkApi);
12169
15591
  };
12170
15592
  var runSwitchDialogAgentAction = async (args, thunkApi) => {
12171
- const { switchDialogAgentAction } = await import("./switchDialogAgentAction-UZSAG2N5.js");
15593
+ const { switchDialogAgentAction } = await import("./switchDialogAgentAction-SZ44XDRY.js");
12172
15594
  return switchDialogAgentAction(args, thunkApi);
12173
15595
  };
12174
15596
  var runSetDialogExtraReferencesAction = async (args, thunkApi) => {
12175
- const { setDialogExtraReferencesAction } = await import("./setDialogExtraReferencesAction-TLIOLWWI.js");
15597
+ const { setDialogExtraReferencesAction } = await import("./setDialogExtraReferencesAction-EVCY3TRW.js");
12176
15598
  return setDialogExtraReferencesAction(args, thunkApi);
12177
15599
  };
12178
15600
  var runHandleSendMessageAction = async (args, thunkApi) => {
12179
- const { handleSendMessageAction } = await import("./handleSendMessageAction-SHIH74GJ.js");
15601
+ const { handleSendMessageAction } = await import("./handleSendMessageAction-AAJOHXOB.js");
12180
15602
  return handleSendMessageAction(args, thunkApi);
12181
15603
  };
12182
15604
  function clearDialogState() {
@@ -12189,7 +15611,7 @@ var createPageAndAddReference = createAsyncThunk(
12189
15611
  async (payload, { dispatch, getState, rejectWithValue }) => {
12190
15612
  const { slateData, jsonData, title, type, fileId, groupId, dialogKey } = payload;
12191
15613
  try {
12192
- const { createDocState } = await import("./docStore-KNZK6Y2G.js");
15614
+ const { createDocState } = await import("./docStore-2VAWVLWH.js");
12193
15615
  const pageKey = await createDocState(
12194
15616
  { slateData, title },
12195
15617
  { dispatch, getState }
@@ -12354,6 +15776,10 @@ var selectCurrentDialogTokens = createSelector(
12354
15776
  var selectTotalDialogTokens = selectCurrentDialogTokens;
12355
15777
 
12356
15778
  export {
15779
+ normalizeRunCompletionShape,
15780
+ createTurnRequest,
15781
+ isAgentRunStatusNormal,
15782
+ isAgentRunStartFailureStatus,
12357
15783
  uiAskChoiceFunctionSchema,
12358
15784
  validateAskChoiceInput,
12359
15785
  uiAskChoiceFunc,
@@ -12365,13 +15791,17 @@ export {
12365
15791
  resolveOccupancyWindow,
12366
15792
  resolveAgentContextWindow,
12367
15793
  runtime_default,
15794
+ snapshotUserBatchInput,
15795
+ createUserBatchExecution,
15796
+ initialChatQueueState,
15797
+ createChatQueueRuntime,
15798
+ selectPendingUserMessages,
15799
+ selectAdmittedMessages,
12368
15800
  toolResultNeedsUserConfirmation,
12369
15801
  isAssistantToolStub,
12370
15802
  fetchAndCacheMessages,
12371
- resolveBuiltinPlatformAgentConfig,
12372
- resolveBuiltinPlatformAgentRecord,
12373
- applyBuiltinAgentRuntimeOverride,
12374
15803
  toast,
15804
+ updateDialogSummaryAction,
12375
15805
  buildDatabaseFileContentUrl,
12376
15806
  normalizeAppRouteId,
12377
15807
  PERSONALIZATION_DIALOG_CATEGORY,
@@ -12394,6 +15824,8 @@ export {
12394
15824
  finalizeTransientMessageOnError,
12395
15825
  prepareAndPersistMessage,
12396
15826
  prepareAndPersistUserMessage,
15827
+ admitPendingUserMessages,
15828
+ runPendingUserBatchRequest,
12397
15829
  initMsgs,
12398
15830
  messageStreamEnd,
12399
15831
  addToolMessage,