@nocobase/app-plugin-agents 1.0.0-beta.20 → 1.0.0-beta.22

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 (363) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/README.md +72 -12
  3. package/dist/cli/runner-token.js +1 -1
  4. package/dist/cli/runner-token.js.map +1 -1
  5. package/dist/client/chat/agent-mode.d.ts +47 -0
  6. package/dist/client/chat/agent-mode.d.ts.map +1 -0
  7. package/dist/client/chat/agent-mode.js +78 -0
  8. package/dist/client/chat/agent-mode.js.map +1 -0
  9. package/dist/client/chat/api.d.ts +2 -1
  10. package/dist/client/chat/api.d.ts.map +1 -1
  11. package/dist/client/chat/api.js +21 -5
  12. package/dist/client/chat/api.js.map +1 -1
  13. package/dist/client/chat/controller.d.ts +26 -0
  14. package/dist/client/chat/controller.d.ts.map +1 -1
  15. package/dist/client/chat/controller.js +328 -7
  16. package/dist/client/chat/controller.js.map +1 -1
  17. package/dist/client/chat/message-model.d.ts +10 -3
  18. package/dist/client/chat/message-model.d.ts.map +1 -1
  19. package/dist/client/chat/message-model.js +32 -4
  20. package/dist/client/chat/message-model.js.map +1 -1
  21. package/dist/client/chat/panel-state.d.ts +3 -0
  22. package/dist/client/chat/panel-state.d.ts.map +1 -1
  23. package/dist/client/chat/panel-state.js +4 -6
  24. package/dist/client/chat/panel-state.js.map +1 -1
  25. package/dist/client/chat/provider.d.ts +13 -2
  26. package/dist/client/chat/provider.d.ts.map +1 -1
  27. package/dist/client/chat/provider.js +25 -2
  28. package/dist/client/chat/provider.js.map +1 -1
  29. package/dist/client/chat/use-chat.d.ts +8 -1
  30. package/dist/client/chat/use-chat.d.ts.map +1 -1
  31. package/dist/client/chat/use-chat.js +28 -4
  32. package/dist/client/chat/use-chat.js.map +1 -1
  33. package/dist/client/chat/use-conversation-model.d.ts +4 -1
  34. package/dist/client/chat/use-conversation-model.d.ts.map +1 -1
  35. package/dist/client/chat/use-conversation-model.js +4 -3
  36. package/dist/client/chat/use-conversation-model.js.map +1 -1
  37. package/dist/client/chat.d.ts +6 -0
  38. package/dist/client/chat.d.ts.map +1 -1
  39. package/dist/client/chat.js +2 -0
  40. package/dist/client/chat.js.map +1 -1
  41. package/dist/client/components/command-line.d.ts +2 -1
  42. package/dist/client/components/command-line.d.ts.map +1 -1
  43. package/dist/client/components/command-line.js +2 -2
  44. package/dist/client/components/command-line.js.map +1 -1
  45. package/dist/client/components/variables/variable-dialogs.js +2 -2
  46. package/dist/client/components/variables/variable-dialogs.js.map +1 -1
  47. package/dist/client/lib/install.d.ts +3 -3
  48. package/dist/client/lib/install.d.ts.map +1 -1
  49. package/dist/client/lib/install.js +3 -5
  50. package/dist/client/lib/install.js.map +1 -1
  51. package/dist/client/lib/runner-tools.d.ts +4 -0
  52. package/dist/client/lib/runner-tools.d.ts.map +1 -0
  53. package/dist/client/lib/runner-tools.js +5 -0
  54. package/dist/client/lib/runner-tools.js.map +1 -0
  55. package/dist/client/locales/chat.en-US.d.ts +17 -0
  56. package/dist/client/locales/chat.en-US.d.ts.map +1 -1
  57. package/dist/client/locales/chat.en-US.js +17 -0
  58. package/dist/client/locales/chat.en-US.js.map +1 -1
  59. package/dist/client/locales/chat.zh-CN.d.ts.map +1 -1
  60. package/dist/client/locales/chat.zh-CN.js +17 -0
  61. package/dist/client/locales/chat.zh-CN.js.map +1 -1
  62. package/dist/client/locales/de-DE.d.ts.map +1 -1
  63. package/dist/client/locales/de-DE.js +8 -1
  64. package/dist/client/locales/de-DE.js.map +1 -1
  65. package/dist/client/locales/en-US.js +9 -9
  66. package/dist/client/locales/en-US.js.map +1 -1
  67. package/dist/client/locales/es-ES.d.ts.map +1 -1
  68. package/dist/client/locales/es-ES.js +8 -1
  69. package/dist/client/locales/es-ES.js.map +1 -1
  70. package/dist/client/locales/fr-FR.d.ts.map +1 -1
  71. package/dist/client/locales/fr-FR.js +8 -1
  72. package/dist/client/locales/fr-FR.js.map +1 -1
  73. package/dist/client/locales/id-ID.d.ts.map +1 -1
  74. package/dist/client/locales/id-ID.js +8 -1
  75. package/dist/client/locales/id-ID.js.map +1 -1
  76. package/dist/client/locales/ja-JP.d.ts.map +1 -1
  77. package/dist/client/locales/ja-JP.js +8 -1
  78. package/dist/client/locales/ja-JP.js.map +1 -1
  79. package/dist/client/locales/pt-BR.d.ts.map +1 -1
  80. package/dist/client/locales/pt-BR.js +8 -1
  81. package/dist/client/locales/pt-BR.js.map +1 -1
  82. package/dist/client/locales/runWait.en-US.js +1 -1
  83. package/dist/client/locales/runWait.en-US.js.map +1 -1
  84. package/dist/client/locales/runWait.zh-CN.js +1 -1
  85. package/dist/client/locales/runtimes.en-US.d.ts +10 -1
  86. package/dist/client/locales/runtimes.en-US.d.ts.map +1 -1
  87. package/dist/client/locales/runtimes.en-US.js +18 -9
  88. package/dist/client/locales/runtimes.en-US.js.map +1 -1
  89. package/dist/client/locales/runtimes.zh-CN.d.ts.map +1 -1
  90. package/dist/client/locales/runtimes.zh-CN.js +18 -9
  91. package/dist/client/locales/runtimes.zh-CN.js.map +1 -1
  92. package/dist/client/locales/vi-VN.d.ts.map +1 -1
  93. package/dist/client/locales/vi-VN.js +8 -1
  94. package/dist/client/locales/vi-VN.js.map +1 -1
  95. package/dist/client/locales/zh-CN.js +9 -9
  96. package/dist/client/locales/zh-CN.js.map +1 -1
  97. package/dist/client/locales/zh-TW.d.ts.map +1 -1
  98. package/dist/client/locales/zh-TW.js +8 -1
  99. package/dist/client/locales/zh-TW.js.map +1 -1
  100. package/dist/client/online/service-editor.js +6 -1
  101. package/dist/client/online/service-editor.js.map +1 -1
  102. package/dist/client/pages/runtimes/connect.js +18 -8
  103. package/dist/client/pages/runtimes/connect.js.map +1 -1
  104. package/dist/client/pages/runtimes/index.js +1 -1
  105. package/dist/client/pages/runtimes/runner-overview.d.ts.map +1 -1
  106. package/dist/client/pages/runtimes/runner-overview.js +3 -2
  107. package/dist/client/pages/runtimes/runner-overview.js.map +1 -1
  108. package/dist/client/pages/usage/prices/model.d.ts +1 -1
  109. package/dist/client/pages/usage/prices/model.js +1 -1
  110. package/dist/client/plugin.js +1 -1
  111. package/dist/client/plugin.js.map +1 -1
  112. package/dist/client/routes.d.ts +1 -1
  113. package/dist/database/migrations/.manifest.json +4 -0
  114. package/dist/database/migrations/202610290001_ag_repair_runner_agents.d.ts +5 -0
  115. package/dist/database/migrations/202610290001_ag_repair_runner_agents.d.ts.map +1 -0
  116. package/dist/database/migrations/202610290001_ag_repair_runner_agents.js +72 -0
  117. package/dist/database/migrations/202610290001_ag_repair_runner_agents.js.map +1 -0
  118. package/dist/package.json +18 -1
  119. package/dist/server/composition.d.ts +2 -0
  120. package/dist/server/composition.d.ts.map +1 -1
  121. package/dist/server/composition.js +13 -3
  122. package/dist/server/composition.js.map +1 -1
  123. package/dist/server/core/agents/agent.store.d.ts +5 -3
  124. package/dist/server/core/agents/agent.store.d.ts.map +1 -1
  125. package/dist/server/core/agents/agent.store.js +25 -6
  126. package/dist/server/core/agents/agent.store.js.map +1 -1
  127. package/dist/server/core/conversations/attachments.d.ts +1 -1
  128. package/dist/server/core/conversations/attachments.d.ts.map +1 -1
  129. package/dist/server/core/conversations/attachments.js +2 -2
  130. package/dist/server/core/conversations/attachments.js.map +1 -1
  131. package/dist/server/core/conversations/availability.d.ts +1 -1
  132. package/dist/server/core/conversations/conversation.service.d.ts.map +1 -1
  133. package/dist/server/core/conversations/conversation.service.js +7 -0
  134. package/dist/server/core/conversations/conversation.service.js.map +1 -1
  135. package/dist/server/core/runs/claim.js +6 -6
  136. package/dist/server/core/runs/claim.js.map +1 -1
  137. package/dist/server/core/runs/eligibility.d.ts +3 -3
  138. package/dist/server/core/runs/eligibility.d.ts.map +1 -1
  139. package/dist/server/core/runs/run-requests.js +1 -1
  140. package/dist/server/core/runs/run-requests.js.map +1 -1
  141. package/dist/server/core/runs/run.service.d.ts +1 -1
  142. package/dist/server/core/runs/run.store.d.ts +1 -1
  143. package/dist/server/core/runs/run.store.d.ts.map +1 -1
  144. package/dist/server/core/runs/workload.js +1 -1
  145. package/dist/server/core/runs/workload.js.map +1 -1
  146. package/dist/server/core/variables/variable.service.d.ts +2 -2
  147. package/dist/server/core/variables/variable.service.js +1 -1
  148. package/dist/server/core/variables/variable.service.js.map +1 -1
  149. package/dist/server/index.d.ts +3 -0
  150. package/dist/server/index.d.ts.map +1 -1
  151. package/dist/server/index.js +1 -0
  152. package/dist/server/index.js.map +1 -1
  153. package/dist/server/jobs/job.service.d.ts +1 -1
  154. package/dist/server/jobs/job.service.js +1 -1
  155. package/dist/server/jobs/spec.d.ts +1 -1
  156. package/dist/server/jobs/spec.d.ts.map +1 -1
  157. package/dist/server/jobs/spec.js +2 -2
  158. package/dist/server/jobs/spec.js.map +1 -1
  159. package/dist/server/kernel/events.d.ts +9 -0
  160. package/dist/server/kernel/events.d.ts.map +1 -1
  161. package/dist/server/kernel/events.js.map +1 -1
  162. package/dist/server/online/agent/configuration.d.ts +2 -0
  163. package/dist/server/online/agent/configuration.d.ts.map +1 -1
  164. package/dist/server/online/agent/configuration.js +21 -2
  165. package/dist/server/online/agent/configuration.js.map +1 -1
  166. package/dist/server/online/agent/contracts.d.ts +5 -3
  167. package/dist/server/online/agent/contracts.d.ts.map +1 -1
  168. package/dist/server/online/agent/index.d.ts +1 -0
  169. package/dist/server/online/agent/index.d.ts.map +1 -1
  170. package/dist/server/online/agent/index.js.map +1 -1
  171. package/dist/server/online/agent/messages/projection.d.ts.map +1 -1
  172. package/dist/server/online/agent/messages/projection.js +3 -0
  173. package/dist/server/online/agent/messages/projection.js.map +1 -1
  174. package/dist/server/online/agent/messages/resend.d.ts +7 -0
  175. package/dist/server/online/agent/messages/resend.d.ts.map +1 -0
  176. package/dist/server/online/agent/messages/resend.js +58 -0
  177. package/dist/server/online/agent/messages/resend.js.map +1 -0
  178. package/dist/server/online/agent/native/backend.d.ts +6 -0
  179. package/dist/server/online/agent/native/backend.d.ts.map +1 -1
  180. package/dist/server/online/agent/native/backend.js +17 -24
  181. package/dist/server/online/agent/native/backend.js.map +1 -1
  182. package/dist/server/online/agent/native/execution.d.ts +8 -12
  183. package/dist/server/online/agent/native/execution.d.ts.map +1 -1
  184. package/dist/server/online/agent/native/execution.js +89 -17
  185. package/dist/server/online/agent/native/execution.js.map +1 -1
  186. package/dist/server/online/agent/native/session.d.ts +2 -0
  187. package/dist/server/online/agent/native/session.d.ts.map +1 -1
  188. package/dist/server/online/agent/native/session.js +11 -0
  189. package/dist/server/online/agent/native/session.js.map +1 -1
  190. package/dist/server/online/agent/native/types.d.ts +20 -0
  191. package/dist/server/online/agent/native/types.d.ts.map +1 -1
  192. package/dist/server/online/agent/persistence/manager.d.ts +1 -2
  193. package/dist/server/online/agent/persistence/manager.d.ts.map +1 -1
  194. package/dist/server/online/agent/persistence/manager.js +0 -7
  195. package/dist/server/online/agent/persistence/manager.js.map +1 -1
  196. package/dist/server/online/agent/persistence/store.d.ts +25 -7
  197. package/dist/server/online/agent/persistence/store.d.ts.map +1 -1
  198. package/dist/server/online/agent/persistence/store.js +165 -47
  199. package/dist/server/online/agent/persistence/store.js.map +1 -1
  200. package/dist/server/online/agent/runner/backend.d.ts +1 -0
  201. package/dist/server/online/agent/runner/backend.d.ts.map +1 -1
  202. package/dist/server/online/agent/runner/backend.js +3 -0
  203. package/dist/server/online/agent/runner/backend.js.map +1 -1
  204. package/dist/server/online/agent/service.d.ts +4 -0
  205. package/dist/server/online/agent/service.d.ts.map +1 -1
  206. package/dist/server/online/agent/service.js +2 -0
  207. package/dist/server/online/agent/service.js.map +1 -1
  208. package/dist/server/online/agent/types.d.ts +5 -0
  209. package/dist/server/online/agent/types.d.ts.map +1 -1
  210. package/dist/server/online/agent/web-search.d.ts +13 -0
  211. package/dist/server/online/agent/web-search.d.ts.map +1 -0
  212. package/dist/server/online/agent/web-search.js +65 -0
  213. package/dist/server/online/agent/web-search.js.map +1 -0
  214. package/dist/server/online/files/cache.d.ts +19 -0
  215. package/dist/server/online/files/cache.d.ts.map +1 -0
  216. package/dist/server/online/files/cache.js +52 -0
  217. package/dist/server/online/files/cache.js.map +1 -0
  218. package/dist/server/online/files/errors.d.ts +8 -0
  219. package/dist/server/online/files/errors.d.ts.map +1 -0
  220. package/dist/server/online/files/errors.js +14 -0
  221. package/dist/server/online/files/errors.js.map +1 -0
  222. package/dist/server/online/files/input.d.ts +23 -0
  223. package/dist/server/online/files/input.d.ts.map +1 -0
  224. package/dist/server/online/files/input.js +129 -0
  225. package/dist/server/online/files/input.js.map +1 -0
  226. package/dist/server/online/files/kimi.d.ts +11 -0
  227. package/dist/server/online/files/kimi.d.ts.map +1 -0
  228. package/dist/server/online/files/kimi.js +177 -0
  229. package/dist/server/online/files/kimi.js.map +1 -0
  230. package/dist/server/online/files/profiles.d.ts +13 -0
  231. package/dist/server/online/files/profiles.d.ts.map +1 -0
  232. package/dist/server/online/files/profiles.js +124 -0
  233. package/dist/server/online/files/profiles.js.map +1 -0
  234. package/dist/server/online/files/service.d.ts +35 -0
  235. package/dist/server/online/files/service.d.ts.map +1 -0
  236. package/dist/server/online/files/service.js +174 -0
  237. package/dist/server/online/files/service.js.map +1 -0
  238. package/dist/server/online/files/types.d.ts +32 -0
  239. package/dist/server/online/files/types.d.ts.map +1 -0
  240. package/dist/server/online/files/types.js +2 -0
  241. package/dist/server/online/files/types.js.map +1 -0
  242. package/dist/server/online/gateway.d.ts +13 -0
  243. package/dist/server/online/gateway.d.ts.map +1 -1
  244. package/dist/server/online/gateway.js +116 -2
  245. package/dist/server/online/gateway.js.map +1 -1
  246. package/dist/server/online/index.d.ts +1 -1
  247. package/dist/server/online/index.d.ts.map +1 -1
  248. package/dist/server/online/index.js.map +1 -1
  249. package/dist/server/online/providers.d.ts +6 -0
  250. package/dist/server/online/providers.d.ts.map +1 -1
  251. package/dist/server/online/providers.js +29 -1
  252. package/dist/server/online/providers.js.map +1 -1
  253. package/dist/server/online/search/alibaba.d.ts +10 -0
  254. package/dist/server/online/search/alibaba.d.ts.map +1 -0
  255. package/dist/server/online/search/alibaba.js +34 -0
  256. package/dist/server/online/search/alibaba.js.map +1 -0
  257. package/dist/server/online/search/anthropic.d.ts +12 -0
  258. package/dist/server/online/search/anthropic.d.ts.map +1 -0
  259. package/dist/server/online/search/anthropic.js +62 -0
  260. package/dist/server/online/search/anthropic.js.map +1 -0
  261. package/dist/server/online/search/budget.d.ts +13 -0
  262. package/dist/server/online/search/budget.d.ts.map +1 -0
  263. package/dist/server/online/search/budget.js +63 -0
  264. package/dist/server/online/search/budget.js.map +1 -0
  265. package/dist/server/online/search/capabilities.d.ts +7 -0
  266. package/dist/server/online/search/capabilities.d.ts.map +1 -0
  267. package/dist/server/online/search/capabilities.js +90 -0
  268. package/dist/server/online/search/capabilities.js.map +1 -0
  269. package/dist/server/online/search/contracts.d.ts +20 -0
  270. package/dist/server/online/search/contracts.d.ts.map +1 -0
  271. package/dist/server/online/search/contracts.js +2 -0
  272. package/dist/server/online/search/contracts.js.map +1 -0
  273. package/dist/server/online/search/google.d.ts +12 -0
  274. package/dist/server/online/search/google.d.ts.map +1 -0
  275. package/dist/server/online/search/google.js +51 -0
  276. package/dist/server/online/search/google.js.map +1 -0
  277. package/dist/server/online/search/openai.d.ts +18 -0
  278. package/dist/server/online/search/openai.d.ts.map +1 -0
  279. package/dist/server/online/search/openai.js +51 -0
  280. package/dist/server/online/search/openai.js.map +1 -0
  281. package/dist/server/online/search/prompts.d.ts +5 -0
  282. package/dist/server/online/search/prompts.d.ts.map +1 -0
  283. package/dist/server/online/search/prompts.js +28 -0
  284. package/dist/server/online/search/prompts.js.map +1 -0
  285. package/dist/server/online/search/results.d.ts +2 -0
  286. package/dist/server/online/search/results.d.ts.map +1 -0
  287. package/dist/server/online/search/results.js +2 -0
  288. package/dist/server/online/search/results.js.map +1 -0
  289. package/dist/server/online/services.d.ts +2 -0
  290. package/dist/server/online/services.d.ts.map +1 -1
  291. package/dist/server/online/services.js +17 -2
  292. package/dist/server/online/services.js.map +1 -1
  293. package/dist/server/providers/agents.d.ts +1 -0
  294. package/dist/server/providers/agents.d.ts.map +1 -1
  295. package/dist/server/providers/agents.js +12 -0
  296. package/dist/server/providers/agents.js.map +1 -1
  297. package/dist/server/providers/authorization.d.ts +2 -2
  298. package/dist/server/providers/authorization.js +2 -2
  299. package/dist/server/routes/admin.js +3 -3
  300. package/dist/server/routes/admin.js.map +1 -1
  301. package/dist/server/routes/chat.d.ts.map +1 -1
  302. package/dist/server/routes/chat.js +34 -1
  303. package/dist/server/routes/chat.js.map +1 -1
  304. package/dist/server/routes/run-requests.js +1 -1
  305. package/dist/server/routes/run-requests.js.map +1 -1
  306. package/dist/server/routes/runners/admin.js +6 -6
  307. package/dist/server/routes/runners/admin.js.map +1 -1
  308. package/dist/server/routes/runners/install.js +1 -1
  309. package/dist/server/routes/schemas.d.ts +3 -0
  310. package/dist/server/routes/schemas.d.ts.map +1 -1
  311. package/dist/server/routes/schemas.js +25 -6
  312. package/dist/server/routes/schemas.js.map +1 -1
  313. package/dist/server/runners/runner.service.js +1 -1
  314. package/dist/server/vendor/just-bash.js +117 -117
  315. package/dist/shared/access.d.ts +2 -2
  316. package/dist/shared/access.js +2 -2
  317. package/dist/shared/agents.d.ts +2 -2
  318. package/dist/shared/agents.d.ts.map +1 -1
  319. package/dist/shared/conversations.d.ts +13 -1
  320. package/dist/shared/conversations.d.ts.map +1 -1
  321. package/dist/shared/conversations.js.map +1 -1
  322. package/dist/shared/file-input-failures.d.ts +5 -0
  323. package/dist/shared/file-input-failures.d.ts.map +1 -0
  324. package/dist/shared/file-input-failures.js +20 -0
  325. package/dist/shared/file-input-failures.js.map +1 -0
  326. package/dist/shared/locales/access.en-US.js +3 -3
  327. package/dist/shared/locales/access.en-US.js.map +1 -1
  328. package/dist/shared/locales/access.zh-CN.js +3 -3
  329. package/dist/shared/locales/access.zh-CN.js.map +1 -1
  330. package/dist/shared/models.d.ts +11 -0
  331. package/dist/shared/models.d.ts.map +1 -1
  332. package/dist/shared/models.js.map +1 -1
  333. package/dist/shared/resend.d.ts +10 -0
  334. package/dist/shared/resend.d.ts.map +1 -0
  335. package/dist/shared/resend.js +2 -0
  336. package/dist/shared/resend.js.map +1 -0
  337. package/dist/shared/runners.d.ts +4 -4
  338. package/dist/shared/runners.d.ts.map +1 -1
  339. package/dist/shared/runners.js +2 -2
  340. package/dist/shared/runs.d.ts +5 -5
  341. package/dist/shared/runs.d.ts.map +1 -1
  342. package/dist/shared/runs.js +1 -1
  343. package/dist/shared/variables.d.ts +3 -3
  344. package/dist/shared/variables.d.ts.map +1 -1
  345. package/dist/shared/variables.js +1 -1
  346. package/dist/shared/web-search-results.d.ts +16 -0
  347. package/dist/shared/web-search-results.d.ts.map +1 -0
  348. package/dist/shared/web-search-results.js +103 -0
  349. package/dist/shared/web-search-results.js.map +1 -0
  350. package/dist/shared/web-search.d.ts +40 -0
  351. package/dist/shared/web-search.d.ts.map +1 -0
  352. package/dist/shared/web-search.js +15 -0
  353. package/dist/shared/web-search.js.map +1 -0
  354. package/docs/execution-history.md +1 -1
  355. package/docs/message-resend.md +39 -0
  356. package/docs/native-web-search.md +76 -0
  357. package/docs/runner-agents.md +3 -3
  358. package/docs/ui-message-clients.md +7 -1
  359. package/package.json +11 -2
  360. package/skills/nocobase-app-plugin-agents/SKILL.md +9 -2
  361. package/skills/nocobase-app-plugin-agents/references/extension-points.md +1 -1
  362. package/skills/nocobase-app-plugin-agents/references/online-agent.md +9 -1
  363. package/skills/nocobase-app-plugin-agents/references/runners.md +7 -3
@@ -1,3 +1,4 @@
1
+ import type { WebSearchBudget } from '../search/budget.js';
1
2
  import type { OnlineAgentSandbox } from '../sandbox/types.js';
2
3
  import type { Tool, ModelMessage, UIMessage, UIMessageChunk } from 'ai';
3
4
  import type { AuthorizationContext } from '@nocobase/authorization/core';
@@ -31,6 +32,8 @@ export type OnlineAgentToolContext = OnlineAgentContext & {
31
32
  /** The executing session, supplied by the runtime rather than model or page input. */
32
33
  readonly sessionId: string;
33
34
  readonly signal: AbortSignal;
35
+ readonly selectedModel?: Readonly<ModelRef>;
36
+ readonly webSearchBudget?: WebSearchBudget;
34
37
  readonly execution: OnlineAgentToolExecution;
35
38
  };
36
39
  export type OnlineAgentScope = {
@@ -47,6 +50,7 @@ export type OnlineAgentScope = {
47
50
  skill?: string[];
48
51
  model?: string[];
49
52
  thinking?: string;
53
+ webSearch?: boolean;
50
54
  permissions?: never;
51
55
  };
52
56
  export type OnlineAgentScopeProvider = (context: OnlineAgentContext) => OnlineAgentScope | Promise<OnlineAgentScope>;
@@ -64,6 +68,7 @@ export type OnlineAgentConfig = {
64
68
  /** Missing and empty lists are unrestricted; preserve their distinct shapes. */
65
69
  model?: string[];
66
70
  thinking?: string;
71
+ webSearch?: boolean;
67
72
  };
68
73
  export type OnlineAgentToolDefinition<I, O extends OnlineAgentJson, C = OnlineAgentToolContext> = Tool<I, O, C> & {
69
74
  execute: NonNullable<Tool<I, O, C>['execute']>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../server/online/agent/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../server/online/agent/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { ModelCapabilities, ModelRef } from '../../../shared/models.js';
2
+ import type { WebSearchResult } from '../../../shared/web-search.js';
3
+ import type { WebSearchRequest } from '../gateway.js';
4
+ import type { OnlineAgentConfigurator } from './configuration.js';
5
+ import type { OnlineAgentConfig } from './types.js';
6
+ export interface OnlineAgentWebSearch {
7
+ capabilities(model: ModelRef): Promise<ModelCapabilities>;
8
+ search(request: WebSearchRequest): Promise<WebSearchResult>;
9
+ }
10
+ /** Validate before admission; an inherited preference may be cleared only during an explicit model switch. */
11
+ export declare function validateWebSearch(config: OnlineAgentConfig, model: ModelRef, dependency: OnlineAgentWebSearch | undefined, clearInherited?: boolean): Promise<void>;
12
+ export declare function registerWebSearchTool(configurator: OnlineAgentConfigurator, dependency: OnlineAgentWebSearch | undefined): void;
13
+ //# sourceMappingURL=web-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-search.d.ts","sourceRoot":"","sources":["../../../../server/online/agent/web-search.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAE7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGtD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,WAAW,oBAAoB;IACnC,YAAY,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC1D,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CAC7D;AAED,8GAA8G;AAC9G,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,QAAQ,EACf,UAAU,EAAE,oBAAoB,GAAG,SAAS,EAC5C,cAAc,GAAE,OAAe,GAC9B,OAAO,CAAC,IAAI,CAAC,CAYf;AAMD,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,uBAAuB,EACrC,UAAU,EAAE,oBAAoB,GAAG,SAAS,GAC3C,IAAI,CA+CN"}
@@ -0,0 +1,65 @@
1
+ import { WEB_SEARCH_TOOL_DESCRIPTION } from '../search/prompts.js';
2
+ import { WEB_SEARCH_TOOL } from '../../../shared/web-search.js';
3
+ import { publicSearchResult, WebSearchInputSchema } from '../search/results.js';
4
+ import { invalid } from '../../kernel/errors.js';
5
+ /** Validate before admission; an inherited preference may be cleared only during an explicit model switch. */
6
+ export async function validateWebSearch(config, model, dependency, clearInherited = false) {
7
+ if (!config.webSearch)
8
+ return;
9
+ if (!dependency)
10
+ throw invalid('Native web search is unavailable.');
11
+ if ((await dependency.capabilities(model)).webSearch)
12
+ return;
13
+ if (clearInherited) {
14
+ config.webSearch = false;
15
+ delete config.toolVersions[WEB_SEARCH_TOOL];
16
+ return;
17
+ }
18
+ throw invalid('Web search is unavailable for the selected model. Refresh model configuration.');
19
+ }
20
+ const registrations = new WeakMap();
21
+ export function registerWebSearchTool(configurator, dependency) {
22
+ if (registrations.has(configurator)) {
23
+ if (dependency !== undefined &&
24
+ dependency !== registrations.get(configurator))
25
+ throw invalid('This configurator already owns a different web search dependency.');
26
+ return;
27
+ }
28
+ configurator.registerTool(WEB_SEARCH_TOOL, {
29
+ version: '1',
30
+ definition: {
31
+ description: WEB_SEARCH_TOOL_DESCRIPTION,
32
+ inputSchema: WebSearchInputSchema,
33
+ public: {
34
+ input: (input) => WebSearchInputSchema.parse(input),
35
+ output: (output) => publicSearchResult(output),
36
+ },
37
+ toModelOutput: ({ output }) => ({
38
+ type: 'text',
39
+ value: `Untrusted search output (unverified results do not establish search execution, freshness or sources):\n${JSON.stringify(publicSearchResult(output))}`,
40
+ }),
41
+ execute: async (input, { context, abortSignal, toolCallId }) => {
42
+ context.signal.throwIfAborted();
43
+ if (!dependency || !context.selectedModel || !context.webSearchBudget)
44
+ throw invalid('Native web search is unavailable.');
45
+ const signal = abortSignal
46
+ ? AbortSignal.any([context.signal, abortSignal])
47
+ : context.signal;
48
+ signal.throwIfAborted();
49
+ context.webSearchBudget.reserve(toolCallId, input.queries);
50
+ const result = await dependency.search({
51
+ model: context.selectedModel,
52
+ queries: input.queries,
53
+ sessionId: context.sessionId,
54
+ signal,
55
+ budget: context.webSearchBudget,
56
+ source: 'agents.webSearch',
57
+ });
58
+ signal.throwIfAborted();
59
+ return publicSearchResult(result);
60
+ },
61
+ },
62
+ });
63
+ registrations.set(configurator, dependency);
64
+ }
65
+ //# sourceMappingURL=web-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-search.js","sourceRoot":"","sources":["../../../../server/online/agent/web-search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /** Completed local results only; neither permissions nor in-flight executions are shared. */
2
+ export declare class ExtractedDocumentCache {
3
+ private readonly entries;
4
+ private bytes;
5
+ private readonly ttlMs;
6
+ private readonly maxEntries;
7
+ private readonly maxBytes;
8
+ private readonly now;
9
+ constructor(options?: {
10
+ ttlMs?: number;
11
+ maxEntries?: number;
12
+ maxBytes?: number;
13
+ now?: () => number;
14
+ });
15
+ get(key: string): string | undefined;
16
+ set(key: string, text: string): void;
17
+ private remove;
18
+ }
19
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../../server/online/files/cache.ts"],"names":[],"mappings":"AAMA,6FAA6F;AAC7F,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;gBAGjC,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;KACf;IAaR,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAYpC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAgBpC,OAAO,CAAC,MAAM;CAKf"}
@@ -0,0 +1,52 @@
1
+ /** Completed local results only; neither permissions nor in-flight executions are shared. */
2
+ export class ExtractedDocumentCache {
3
+ entries = new Map();
4
+ bytes = 0;
5
+ ttlMs;
6
+ maxEntries;
7
+ maxBytes;
8
+ now;
9
+ constructor(options = {}) {
10
+ this.ttlMs = options.ttlMs ?? 30 * 60_000;
11
+ this.maxEntries = options.maxEntries ?? 128;
12
+ this.maxBytes = options.maxBytes ?? 32 * 1024 * 1024;
13
+ this.now = options.now ?? Date.now;
14
+ for (const value of [this.ttlMs, this.maxEntries, this.maxBytes])
15
+ if (!Number.isSafeInteger(value) || value < 0)
16
+ throw new RangeError('Cache limits must be non-negative safe integers.');
17
+ }
18
+ get(key) {
19
+ const entry = this.entries.get(key);
20
+ if (!entry)
21
+ return undefined;
22
+ if (entry.expiresAt <= this.now()) {
23
+ this.remove(key);
24
+ return undefined;
25
+ }
26
+ this.entries.delete(key);
27
+ this.entries.set(key, entry);
28
+ return entry.text;
29
+ }
30
+ set(key, text) {
31
+ this.remove(key);
32
+ const bytes = Buffer.byteLength(text);
33
+ if (!this.ttlMs || !this.maxEntries || bytes > this.maxBytes)
34
+ return;
35
+ const now = this.now();
36
+ for (const [id, entry] of this.entries)
37
+ if (entry.expiresAt <= now)
38
+ this.remove(id);
39
+ while (this.entries.size >= this.maxEntries ||
40
+ this.bytes + bytes > this.maxBytes)
41
+ this.remove(this.entries.keys().next().value);
42
+ this.entries.set(key, { text, bytes, expiresAt: now + this.ttlMs });
43
+ this.bytes += bytes;
44
+ }
45
+ remove(key) {
46
+ const entry = this.entries.get(key);
47
+ if (entry)
48
+ this.bytes -= entry.bytes;
49
+ this.entries.delete(key);
50
+ }
51
+ }
52
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../../server/online/files/cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { ProtocolError } from '../../kernel/errors.js';
2
+ import { type FileInputFailureReason } from '../../../shared/file-input-failures.js';
3
+ /** A controlled preparation failure, distinct from arbitrary extractor or Provider errors. */
4
+ export declare class FileInputError extends ProtocolError {
5
+ readonly fileInputReason: FileInputFailureReason;
6
+ constructor(reason: FileInputFailureReason);
7
+ }
8
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../server/online/files/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,wCAAwC,CAAC;AAEhD,8FAA8F;AAC9F,qBAAa,cAAe,SAAQ,aAAa;IAC/C,QAAQ,CAAC,eAAe,EAAE,sBAAsB,CAAC;gBACrC,MAAM,EAAE,sBAAsB;CAO3C"}
@@ -0,0 +1,14 @@
1
+ import { ProtocolError } from '../../kernel/errors.js';
2
+ import { fileInputFailureTitles, isFileInputFailureReason, } from '../../../shared/file-input-failures.js';
3
+ /** A controlled preparation failure, distinct from arbitrary extractor or Provider errors. */
4
+ export class FileInputError extends ProtocolError {
5
+ fileInputReason;
6
+ constructor(reason) {
7
+ const safe = isFileInputFailureReason(reason)
8
+ ? reason
9
+ : 'preparationFailed';
10
+ super('INVALID_REQUEST', fileInputFailureTitles[safe]);
11
+ this.fileInputReason = safe;
12
+ }
13
+ }
14
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../server/online/files/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EACL,sBAAsB,EACtB,wBAAwB,GAEzB,MAAM,wCAAwC,CAAC;AAEhD,8FAA8F;AAC9F,MAAM,OAAO,cAAe,SAAQ,aAAa;IACtC,eAAe,CAAyB;IACjD,YAAY,MAA8B;QACxC,MAAM,IAAI,GAAG,wBAAwB,CAAC,MAAM,CAAC;YAC3C,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,mBAAmB,CAAC;QACxB,KAAK,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAC9B,CAAC;CACF"}
@@ -0,0 +1,23 @@
1
+ export declare function characters(text: string): number;
2
+ export declare function localExtension(filename: string, mediaType: string, storedExt?: string): string;
3
+ export declare function inlineBytes(url: string, mediaType: string): Uint8Array;
4
+ export declare class ByteLimitError extends Error {
5
+ }
6
+ export declare function readBytes(body: ReadableStream<Uint8Array>, signal: AbortSignal): Promise<Uint8Array>;
7
+ /** One bounded reader for authorized files and Provider responses, sharing the original cancellation. */
8
+ export declare function readBoundedBytes(body: ReadableStream<Uint8Array>, signal: AbortSignal, maxBytes: number): Promise<Uint8Array>;
9
+ /** Every occurrence counts as context, but repeated copies of one source count bytes once. */
10
+ export declare class FileInputBudget {
11
+ private readonly maxNativeFiles;
12
+ static readonly maxOutputChars: number;
13
+ private readonly sources;
14
+ private bytes;
15
+ private textChars;
16
+ private nativeFiles;
17
+ constructor(fileCount: number, maxNativeFiles: number);
18
+ native(): void;
19
+ source(key: string, bytes: number): void;
20
+ document(text: string): void;
21
+ context(text: string): void;
22
+ }
23
+ //# sourceMappingURL=input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../../server/online/files/input.ts"],"names":[],"mappings":"AAoBA,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI/C;AAED,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,CAmBR;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,CAgBtE;AAED,qBAAa,cAAe,SAAQ,KAAK;CAAG;AAE5C,wBAAsB,SAAS,CAC7B,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,EAChC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,UAAU,CAAC,CAQrB;AACD,yGAAyG;AACzG,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,EAChC,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,CAAC,CA4BrB;AAED,8FAA8F;AAC9F,qBAAa,eAAe;IASxB,OAAO,CAAC,QAAQ,CAAC,cAAc;IARjC,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAW;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,WAAW,CAAK;gBAGtB,SAAS,EAAE,MAAM,EACA,cAAc,EAAE,MAAM;IAKzC,MAAM,IAAI,IAAI;IAKd,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IASxC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK5B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAI5B"}
@@ -0,0 +1,129 @@
1
+ import { FileInputError } from './errors.js';
2
+ import { isParsed } from '@nocobase/document-extractor';
3
+ import { CHAT_ATTACHMENT_SIZE_MAX } from '../../../shared/conversations.js';
4
+ const mimeExtensions = {
5
+ 'application/pdf': 'pdf',
6
+ 'application/msword': 'doc',
7
+ 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': 'docx',
8
+ 'application/vnd.ms-excel': 'xls',
9
+ 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': 'xlsx',
10
+ 'application/vnd.ms-excel.sheet.macroenabled.12': 'xlsm',
11
+ 'application/vnd.openxmlformats-officedocument.presentationml.presentation': 'pptx',
12
+ 'text/plain': 'txt',
13
+ 'text/markdown': 'md',
14
+ 'text/csv': 'csv',
15
+ 'application/json': 'json',
16
+ };
17
+ export function characters(text) {
18
+ let count = 0;
19
+ for (const _ of text)
20
+ count += 1;
21
+ return count;
22
+ }
23
+ export function localExtension(filename, mediaType, storedExt) {
24
+ const named = filename.includes('.')
25
+ ? filename.split('.').at(-1).toLowerCase()
26
+ : undefined;
27
+ const mime = mimeExtensions[mediaType];
28
+ const ext = storedExt?.toLowerCase() || named || mime;
29
+ if (!ext ||
30
+ !isParsed(ext) ||
31
+ (!mime && mediaType !== 'application/octet-stream'))
32
+ throw new FileInputError(mediaType.startsWith('image/') ? 'imageCapability' : 'unsupportedFormat');
33
+ const plainTextAlias = mime === 'txt' && ['txt', 'md', 'json', 'csv'].includes(ext);
34
+ if (mime && mime !== ext && !plainTextAlias)
35
+ throw new FileInputError('formatMismatch');
36
+ return ext;
37
+ }
38
+ export function inlineBytes(url, mediaType) {
39
+ const match = /^data:([^;,]+);base64,([A-Za-z0-9+/]*={0,2})$/u.exec(url);
40
+ if (!match ||
41
+ match[1] !== mediaType ||
42
+ match[2].length > Math.ceil(CHAT_ATTACHMENT_SIZE_MAX / 3) * 4)
43
+ throw new FileInputError('invalidInline');
44
+ const bytes = Buffer.from(match[2], 'base64');
45
+ if (bytes.byteLength > CHAT_ATTACHMENT_SIZE_MAX ||
46
+ bytes.toString('base64').replace(/=+$/u, '') !==
47
+ match[2].replace(/=+$/u, ''))
48
+ throw new FileInputError('invalidInline');
49
+ return bytes;
50
+ }
51
+ export class ByteLimitError extends Error {
52
+ }
53
+ export async function readBytes(body, signal) {
54
+ try {
55
+ return await readBoundedBytes(body, signal, CHAT_ATTACHMENT_SIZE_MAX);
56
+ }
57
+ catch (error) {
58
+ if (error instanceof ByteLimitError)
59
+ throw new FileInputError('fileTooLarge');
60
+ throw error;
61
+ }
62
+ }
63
+ /** One bounded reader for authorized files and Provider responses, sharing the original cancellation. */
64
+ export async function readBoundedBytes(body, signal, maxBytes) {
65
+ const reader = body.getReader();
66
+ let cancellation;
67
+ const cancel = () => (cancellation ??= reader.cancel().catch(() => undefined));
68
+ const abort = () => {
69
+ void cancel();
70
+ };
71
+ signal.addEventListener('abort', abort, { once: true });
72
+ const chunks = [];
73
+ let size = 0;
74
+ try {
75
+ signal.throwIfAborted();
76
+ while (true) {
77
+ const { done, value } = await reader.read();
78
+ signal.throwIfAborted();
79
+ if (done)
80
+ break;
81
+ size += value.byteLength;
82
+ if (size > maxBytes)
83
+ throw new ByteLimitError('The input exceeds its byte budget.');
84
+ chunks.push(value);
85
+ }
86
+ return Buffer.concat(chunks, size);
87
+ }
88
+ finally {
89
+ await cancel();
90
+ reader.releaseLock();
91
+ signal.removeEventListener('abort', abort);
92
+ }
93
+ }
94
+ /** Every occurrence counts as context, but repeated copies of one source count bytes once. */
95
+ export class FileInputBudget {
96
+ maxNativeFiles;
97
+ static maxOutputChars = 100_000;
98
+ sources = new Set();
99
+ bytes = 0;
100
+ textChars = 0;
101
+ nativeFiles = 0;
102
+ constructor(fileCount, maxNativeFiles) {
103
+ this.maxNativeFiles = maxNativeFiles;
104
+ if (fileCount > 100)
105
+ throw new FileInputError('fileCount');
106
+ }
107
+ native() {
108
+ if (++this.nativeFiles > this.maxNativeFiles)
109
+ throw new FileInputError('nativeFileCount');
110
+ }
111
+ source(key, bytes) {
112
+ if (!this.sources.has(key)) {
113
+ this.sources.add(key);
114
+ this.bytes += bytes;
115
+ }
116
+ if (this.bytes > 64 * 1024 * 1024)
117
+ throw new FileInputError('inputTooLarge');
118
+ }
119
+ document(text) {
120
+ if (characters(text) > FileInputBudget.maxOutputChars)
121
+ throw new FileInputError('documentTooLarge');
122
+ }
123
+ context(text) {
124
+ this.textChars += characters(text);
125
+ if (this.textChars > 200_000)
126
+ throw new FileInputError('contextTooLarge');
127
+ }
128
+ }
129
+ //# sourceMappingURL=input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../../../../server/online/files/input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,MAAM,cAAc,GAAqC;IACvD,iBAAiB,EAAE,KAAK;IACxB,oBAAoB,EAAE,KAAK;IAC3B,yEAAyE,EACvE,MAAM;IACR,0BAA0B,EAAE,KAAK;IACjC,mEAAmE,EAAE,MAAM;IAC3E,gDAAgD,EAAE,MAAM;IACxD,2EAA2E,EACzE,MAAM;IACR,YAAY,EAAE,KAAK;IACnB,eAAe,EAAE,IAAI;IACrB,UAAU,EAAE,KAAK;IACjB,kBAAkB,EAAE,MAAM;CAC3B,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,IAAI,IAAI;QAAE,KAAK,IAAI,CAAC,CAAC;IACjC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,QAAgB,EAChB,SAAiB,EACjB,SAAkB;IAElB,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;QAClC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE;QAC3C,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,IAAI,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,SAAS,EAAE,WAAW,EAAE,IAAI,KAAK,IAAI,IAAI,CAAC;IACtD,IACE,CAAC,GAAG;QACJ,CAAC,QAAQ,CAAC,GAAG,CAAC;QACd,CAAC,CAAC,IAAI,IAAI,SAAS,KAAK,0BAA0B,CAAC;QAEnD,MAAM,IAAI,cAAc,CACtB,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,mBAAmB,CACzE,CAAC;IACJ,MAAM,cAAc,GAClB,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC/D,IAAI,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc;QACzC,MAAM,IAAI,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAC7C,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAW,EAAE,SAAiB;IACxD,MAAM,KAAK,GAAG,gDAAgD,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzE,IACE,CAAC,KAAK;QACN,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS;QACtB,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,wBAAwB,GAAG,CAAC,CAAC,GAAG,CAAC;QAE7D,MAAM,IAAI,cAAc,CAAC,eAAe,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC9C,IACE,KAAK,CAAC,UAAU,GAAG,wBAAwB;QAC3C,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1C,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QAE9B,MAAM,IAAI,cAAc,CAAC,eAAe,CAAC,CAAC;IAC5C,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,OAAO,cAAe,SAAQ,KAAK;CAAG;AAE5C,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAAgC,EAChC,MAAmB;IAEnB,IAAI,CAAC;QACH,OAAO,MAAM,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,wBAAwB,CAAC,CAAC;IACxE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,cAAc;YACjC,MAAM,IAAI,cAAc,CAAC,cAAc,CAAC,CAAC;QAC3C,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AACD,yGAAyG;AACzG,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAgC,EAChC,MAAmB,EACnB,QAAgB;IAEhB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAChC,IAAI,YAAuC,CAAC;IAC5C,MAAM,MAAM,GAAG,GAAG,EAAE,CAClB,CAAC,YAAY,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,KAAK,MAAM,EAAE,CAAC;IAChB,CAAC,CAAC;IACF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,CAAC;QACH,MAAM,CAAC,cAAc,EAAE,CAAC;QACxB,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,MAAM,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,IAAI;gBAAE,MAAM;YAChB,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC;YACzB,IAAI,IAAI,GAAG,QAAQ;gBACjB,MAAM,IAAI,cAAc,CAAC,oCAAoC,CAAC,CAAC;YACjE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,EAAE,CAAC;QACf,MAAM,CAAC,WAAW,EAAE,CAAC;QACrB,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,8FAA8F;AAC9F,MAAM,OAAO,eAAe;IASP;IARnB,MAAM,CAAU,cAAc,GAAW,OAAO,CAAC;IAChC,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,KAAK,GAAG,CAAC,CAAC;IACV,SAAS,GAAG,CAAC,CAAC;IACd,WAAW,GAAG,CAAC,CAAC;IAExB,YACE,SAAiB,EACA,cAAsB;QAAtB,mBAAc,GAAd,cAAc,CAAQ;QAEvC,IAAI,SAAS,GAAG,GAAG;YAAE,MAAM,IAAI,cAAc,CAAC,WAAW,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM;QACJ,IAAI,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc;YAC1C,MAAM,IAAI,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,CAAC,GAAW,EAAE,KAAa;QAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACtB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;QACtB,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI;YAC/B,MAAM,IAAI,cAAc,CAAC,eAAe,CAAC,CAAC;IAC9C,CAAC;IAED,QAAQ,CAAC,IAAY;QACnB,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,cAAc;YACnD,MAAM,IAAI,cAAc,CAAC,kBAAkB,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,IAAI,CAAC,SAAS,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,IAAI,CAAC,SAAS,GAAG,OAAO;YAAE,MAAM,IAAI,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAC5E,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { TextExtractor } from '@nocobase/document-extractor';
2
+ import { type ModelConnection } from '../providers.js';
3
+ interface KimiOptions {
4
+ readonly timeoutMs?: number;
5
+ readonly cleanupTimeoutMs?: number;
6
+ readonly onWarning?: (message: string) => void;
7
+ }
8
+ /** Credentials and endpoint remain in this private execution-bound closure, never in messages or cache keys. */
9
+ export declare function kimiExtractor(connection: ModelConnection, sessionId: string, options?: KimiOptions): TextExtractor;
10
+ export {};
11
+ //# sourceMappingURL=kimi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kimi.d.ts","sourceRoot":"","sources":["../../../../server/online/files/kimi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,aAAa,EACd,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,iBAAiB,CAAC;AAQzB,UAAU,WAAW;IACnB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD;AAoOD,gHAAgH;AAChH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,eAAe,EAC3B,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,WAAgB,GACxB,aAAa,CAIf"}
@@ -0,0 +1,177 @@
1
+ import { CHAT_ATTACHMENT_SIZE_MAX } from '../../../shared/conversations.js';
2
+ import { baseUrlOf, headersOf, modelFetch, } from '../providers.js';
3
+ import { ByteLimitError, characters, FileInputBudget, readBoundedBytes, } from './input.js';
4
+ /** A single connection-bound protocol adapter, with no retries or cross-execution results. */
5
+ class KimiExtractor {
6
+ filesUrl;
7
+ headers;
8
+ timeoutMs;
9
+ cleanupTimeoutMs;
10
+ warn;
11
+ constructor(connection, sessionId, options) {
12
+ const base = baseUrlOf(connection);
13
+ if (!base || !connection.apiKey)
14
+ throw new Error('Kimi file extraction requires a valid service endpoint and explicit API key.');
15
+ const url = new URL(base);
16
+ if (!['https:', 'http:'].includes(url.protocol) ||
17
+ url.username ||
18
+ url.password ||
19
+ url.search ||
20
+ url.hash)
21
+ throw new Error('Invalid Kimi file extraction service endpoint.');
22
+ this.filesUrl = `${base.replace(/\/+$/u, '')}/files`;
23
+ this.headers = new Headers({
24
+ ...headersOf(connection, sessionId),
25
+ Authorization: `Bearer ${connection.apiKey}`,
26
+ });
27
+ this.timeoutMs = options.timeoutMs ?? 300_000;
28
+ this.cleanupTimeoutMs = options.cleanupTimeoutMs ?? 5_000;
29
+ if (!Number.isSafeInteger(this.timeoutMs) ||
30
+ this.timeoutMs < 1 ||
31
+ this.timeoutMs > 300_000 ||
32
+ !Number.isSafeInteger(this.cleanupTimeoutMs) ||
33
+ this.cleanupTimeoutMs < 1 ||
34
+ this.cleanupTimeoutMs > 5_000)
35
+ throw new RangeError('Invalid Kimi extraction deadline.');
36
+ this.warn = options.onWarning ?? ((message) => console.warn(message));
37
+ }
38
+ async extract(request, options = {}) {
39
+ const deadline = AbortSignal.timeout(this.timeoutMs);
40
+ const signal = options.signal
41
+ ? AbortSignal.any([options.signal, deadline])
42
+ : deadline;
43
+ const maxChars = options.maxOutputChars ?? FileInputBudget.maxOutputChars;
44
+ let id;
45
+ let attempted = false;
46
+ let result;
47
+ try {
48
+ signal.throwIfAborted();
49
+ if (request.bytes.byteLength > CHAT_ATTACHMENT_SIZE_MAX)
50
+ throw new ByteLimitError();
51
+ if (!Number.isSafeInteger(maxChars) ||
52
+ maxChars < 0 ||
53
+ maxChars > FileInputBudget.maxOutputChars)
54
+ throw new ByteLimitError();
55
+ attempted = true;
56
+ id = await this.upload(request, signal);
57
+ const markdown = await this.content(id, signal, maxChars);
58
+ signal.throwIfAborted();
59
+ result = { status: 'ready', markdown, hasText: Boolean(markdown.trim()) };
60
+ }
61
+ catch (error) {
62
+ const code = options.signal?.aborted
63
+ ? 'aborted'
64
+ : deadline.aborted
65
+ ? 'timeout'
66
+ : error instanceof ByteLimitError
67
+ ? 'too-large'
68
+ : 'invalid-document';
69
+ result = {
70
+ status: 'failed',
71
+ code,
72
+ error: 'Remote file extraction failed.',
73
+ };
74
+ }
75
+ finally {
76
+ if (id)
77
+ await this.cleanup(id);
78
+ else if (attempted)
79
+ this.warning('Remote file cleanup could not be confirmed: no usable file identifier was received.');
80
+ }
81
+ return options.signal?.aborted
82
+ ? {
83
+ status: 'failed',
84
+ code: 'aborted',
85
+ error: 'File extraction was cancelled.',
86
+ }
87
+ : result;
88
+ }
89
+ async upload(request, signal) {
90
+ const form = new FormData();
91
+ form.set('purpose', 'file-extract');
92
+ form.set('file', new Blob([new Uint8Array(request.bytes)], {
93
+ type: request.mediaType ?? 'application/octet-stream',
94
+ }), request.filename ?? `document.${request.ext}`);
95
+ const response = await this.request('POST', this.filesUrl, signal, form);
96
+ const metadata = JSON.parse(await this.text(response, signal, 64 * 1024));
97
+ if (typeof metadata !== 'object' ||
98
+ metadata === null ||
99
+ !('id' in metadata) ||
100
+ typeof metadata.id !== 'string' ||
101
+ !/^[a-zA-Z0-9_-]{1,256}$/u.test(metadata.id))
102
+ throw new Error('Invalid remote file identifier.');
103
+ return metadata.id;
104
+ }
105
+ async content(id, signal, maxChars) {
106
+ const response = await this.request('GET', `${this.filesUrl}/${encodeURIComponent(id)}/content`, signal);
107
+ const mediaType = response.headers
108
+ .get('content-type')
109
+ ?.split(';')[0]
110
+ ?.trim()
111
+ .toLowerCase();
112
+ if (mediaType !== 'text/plain' && mediaType !== 'application/json') {
113
+ await response.body?.cancel();
114
+ throw new Error('Unsupported remote extraction response.');
115
+ }
116
+ const text = await this.text(response, signal, maxChars * (mediaType === 'application/json' ? 12 : 4) + 64 * 1024);
117
+ let markdown;
118
+ if (mediaType === 'text/plain')
119
+ markdown = text;
120
+ else {
121
+ const content = JSON.parse(text);
122
+ if (typeof content !== 'object' ||
123
+ content === null ||
124
+ !('content' in content) ||
125
+ typeof content.content !== 'string')
126
+ throw new Error('Unsupported remote extraction response.');
127
+ markdown = content.content;
128
+ }
129
+ signal.throwIfAborted();
130
+ if (characters(markdown) > maxChars)
131
+ throw new ByteLimitError();
132
+ return markdown;
133
+ }
134
+ async request(method, url, signal, body) {
135
+ const response = await modelFetch(url, {
136
+ method,
137
+ headers: this.headers,
138
+ signal,
139
+ body,
140
+ redirect: 'error',
141
+ });
142
+ if (!response.ok) {
143
+ await response.body?.cancel();
144
+ throw new Error('Remote file request failed.');
145
+ }
146
+ return response;
147
+ }
148
+ async text(response, signal, maxBytes) {
149
+ if (!response.body)
150
+ throw new Error('Missing remote file response.');
151
+ const bytes = await readBoundedBytes(response.body, signal, maxBytes);
152
+ return new TextDecoder('utf-8', { fatal: true }).decode(bytes);
153
+ }
154
+ async cleanup(id) {
155
+ try {
156
+ const response = await this.request('DELETE', `${this.filesUrl}/${encodeURIComponent(id)}`, AbortSignal.timeout(this.cleanupTimeoutMs));
157
+ await response.body?.cancel();
158
+ }
159
+ catch {
160
+ this.warning('Remote file cleanup failed; a temporary file may remain at the configured service.');
161
+ }
162
+ }
163
+ warning(message) {
164
+ try {
165
+ this.warn(message);
166
+ }
167
+ catch {
168
+ /* Diagnostics must not replace the extraction outcome. */
169
+ }
170
+ }
171
+ }
172
+ /** Credentials and endpoint remain in this private execution-bound closure, never in messages or cache keys. */
173
+ export function kimiExtractor(connection, sessionId, options = {}) {
174
+ const extractor = new KimiExtractor(connection, sessionId, options);
175
+ return (request, extractOptions) => extractor.extract(request, extractOptions);
176
+ }
177
+ //# sourceMappingURL=kimi.js.map