@nocobase/app-plugin-agents 2.0.0-beta.1 → 2.0.0-beta.11

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 (382) hide show
  1. package/CHANGELOG.md +197 -0
  2. package/README.md +25 -5
  3. package/dist/client/chat/api.d.ts +6 -1
  4. package/dist/client/chat/api.d.ts.map +1 -1
  5. package/dist/client/chat/api.js +18 -0
  6. package/dist/client/chat/api.js.map +1 -1
  7. package/dist/client/chat/controller.d.ts +12 -0
  8. package/dist/client/chat/controller.d.ts.map +1 -1
  9. package/dist/client/chat/controller.js +65 -20
  10. package/dist/client/chat/controller.js.map +1 -1
  11. package/dist/client/chat/notices.d.ts +12 -0
  12. package/dist/client/chat/notices.d.ts.map +1 -0
  13. package/dist/client/chat/notices.js +15 -0
  14. package/dist/client/chat/notices.js.map +1 -0
  15. package/dist/client/chat/submissions.d.ts +16 -0
  16. package/dist/client/chat/submissions.d.ts.map +1 -1
  17. package/dist/client/chat/submissions.js +22 -0
  18. package/dist/client/chat/submissions.js.map +1 -1
  19. package/dist/client/chat/use-chat.d.ts.map +1 -1
  20. package/dist/client/chat/use-chat.js +1 -0
  21. package/dist/client/chat/use-chat.js.map +1 -1
  22. package/dist/client/chat.d.ts +1 -0
  23. package/dist/client/chat.d.ts.map +1 -1
  24. package/dist/client/chat.js +1 -0
  25. package/dist/client/chat.js.map +1 -1
  26. package/dist/client/components/page-container.js +1 -1
  27. package/dist/client/components/page-container.js.map +1 -1
  28. package/dist/client/components/route-child-page.d.ts +1 -1
  29. package/dist/client/components/route-child-page.d.ts.map +1 -1
  30. package/dist/client/components/route-child-page.js +18 -2
  31. package/dist/client/components/route-child-page.js.map +1 -1
  32. package/dist/client/components/route-overlay.d.ts +4 -1
  33. package/dist/client/components/route-overlay.d.ts.map +1 -1
  34. package/dist/client/components/route-overlay.js +32 -3
  35. package/dist/client/components/route-overlay.js.map +1 -1
  36. package/dist/client/components/ui/alert-dialog.d.ts +3 -1
  37. package/dist/client/components/ui/alert-dialog.d.ts.map +1 -1
  38. package/dist/client/components/ui/alert-dialog.js +2 -2
  39. package/dist/client/components/ui/alert-dialog.js.map +1 -1
  40. package/dist/client/components/unsaved-changes.d.ts.map +1 -1
  41. package/dist/client/components/unsaved-changes.js +17 -4
  42. package/dist/client/components/unsaved-changes.js.map +1 -1
  43. package/dist/client/components/use-route-overlay.d.ts +2 -9
  44. package/dist/client/components/use-route-overlay.d.ts.map +1 -1
  45. package/dist/client/components/use-route-overlay.js +5 -3
  46. package/dist/client/components/use-route-overlay.js.map +1 -1
  47. package/dist/client/lib/format.d.ts.map +1 -1
  48. package/dist/client/lib/format.js +1 -0
  49. package/dist/client/lib/format.js.map +1 -1
  50. package/dist/client/locales/de-DE.d.ts.map +1 -1
  51. package/dist/client/locales/de-DE.js +145 -109
  52. package/dist/client/locales/de-DE.js.map +1 -1
  53. package/dist/client/locales/en-US.d.ts +2 -0
  54. package/dist/client/locales/en-US.d.ts.map +1 -1
  55. package/dist/client/locales/en-US.js +4 -2
  56. package/dist/client/locales/en-US.js.map +1 -1
  57. package/dist/client/locales/es-ES.d.ts.map +1 -1
  58. package/dist/client/locales/es-ES.js +222 -186
  59. package/dist/client/locales/es-ES.js.map +1 -1
  60. package/dist/client/locales/fr-FR.d.ts.map +1 -1
  61. package/dist/client/locales/fr-FR.js +154 -118
  62. package/dist/client/locales/fr-FR.js.map +1 -1
  63. package/dist/client/locales/id-ID.d.ts.map +1 -1
  64. package/dist/client/locales/id-ID.js +143 -107
  65. package/dist/client/locales/id-ID.js.map +1 -1
  66. package/dist/client/locales/index.d.ts.map +1 -1
  67. package/dist/client/locales/index.js +2 -0
  68. package/dist/client/locales/index.js.map +1 -1
  69. package/dist/client/locales/ja-JP.d.ts.map +1 -1
  70. package/dist/client/locales/ja-JP.js +226 -190
  71. package/dist/client/locales/ja-JP.js.map +1 -1
  72. package/dist/client/locales/ko-KR.d.ts +5 -0
  73. package/dist/client/locales/ko-KR.d.ts.map +1 -0
  74. package/dist/client/locales/ko-KR.js +1319 -0
  75. package/dist/client/locales/ko-KR.js.map +1 -0
  76. package/dist/client/locales/pt-BR.d.ts.map +1 -1
  77. package/dist/client/locales/pt-BR.js +216 -180
  78. package/dist/client/locales/pt-BR.js.map +1 -1
  79. package/dist/client/locales/ru-RU.d.ts +5 -0
  80. package/dist/client/locales/ru-RU.d.ts.map +1 -0
  81. package/dist/client/locales/ru-RU.js +1349 -0
  82. package/dist/client/locales/ru-RU.js.map +1 -0
  83. package/dist/client/locales/runWait.en-US.d.ts +2 -0
  84. package/dist/client/locales/runWait.en-US.d.ts.map +1 -1
  85. package/dist/client/locales/runWait.en-US.js +2 -0
  86. package/dist/client/locales/runWait.en-US.js.map +1 -1
  87. package/dist/client/locales/runWait.zh-CN.d.ts.map +1 -1
  88. package/dist/client/locales/runWait.zh-CN.js +2 -0
  89. package/dist/client/locales/runWait.zh-CN.js.map +1 -1
  90. package/dist/client/locales/runtimes.en-US.d.ts +9 -0
  91. package/dist/client/locales/runtimes.en-US.d.ts.map +1 -1
  92. package/dist/client/locales/runtimes.en-US.js +11 -2
  93. package/dist/client/locales/runtimes.en-US.js.map +1 -1
  94. package/dist/client/locales/runtimes.zh-CN.d.ts.map +1 -1
  95. package/dist/client/locales/runtimes.zh-CN.js +11 -2
  96. package/dist/client/locales/runtimes.zh-CN.js.map +1 -1
  97. package/dist/client/locales/vi-VN.d.ts.map +1 -1
  98. package/dist/client/locales/vi-VN.js +182 -146
  99. package/dist/client/locales/vi-VN.js.map +1 -1
  100. package/dist/client/locales/zh-CN.d.ts.map +1 -1
  101. package/dist/client/locales/zh-CN.js +4 -2
  102. package/dist/client/locales/zh-CN.js.map +1 -1
  103. package/dist/client/locales/zh-TW.d.ts.map +1 -1
  104. package/dist/client/locales/zh-TW.js +159 -123
  105. package/dist/client/locales/zh-TW.js.map +1 -1
  106. package/dist/client/pages/runtimes/quota-limit-setting.d.ts +12 -0
  107. package/dist/client/pages/runtimes/quota-limit-setting.d.ts.map +1 -0
  108. package/dist/client/pages/runtimes/quota-limit-setting.js +57 -0
  109. package/dist/client/pages/runtimes/quota-limit-setting.js.map +1 -0
  110. package/dist/client/pages/runtimes/quota.d.ts +3 -2
  111. package/dist/client/pages/runtimes/quota.d.ts.map +1 -1
  112. package/dist/client/pages/runtimes/quota.js +10 -4
  113. package/dist/client/pages/runtimes/quota.js.map +1 -1
  114. package/dist/client/pages/runtimes/runner-runs.d.ts.map +1 -1
  115. package/dist/client/pages/runtimes/runner-runs.js +2 -8
  116. package/dist/client/pages/runtimes/runner-runs.js.map +1 -1
  117. package/dist/client/pages/runtimes/runner-tools.d.ts.map +1 -1
  118. package/dist/client/pages/runtimes/runner-tools.js +7 -16
  119. package/dist/client/pages/runtimes/runner-tools.js.map +1 -1
  120. package/dist/client/pages/runtimes/workspace-diagnostics.js +3 -3
  121. package/dist/client/pages/runtimes/workspace-diagnostics.js.map +1 -1
  122. package/dist/client/pages/usage/date-range-picker.d.ts.map +1 -1
  123. package/dist/client/pages/usage/date-range-picker.js +3 -1
  124. package/dist/client/pages/usage/date-range-picker.js.map +1 -1
  125. package/dist/client/routes.d.ts.map +1 -1
  126. package/dist/client/routes.js +7 -0
  127. package/dist/client/routes.js.map +1 -1
  128. package/dist/client/runs/format-wait.d.ts.map +1 -1
  129. package/dist/client/runs/format-wait.js +2 -0
  130. package/dist/client/runs/format-wait.js.map +1 -1
  131. package/dist/database/migrations/.manifest.json +20 -0
  132. package/dist/database/migrations/202611070001_ag_run_runner_pin.d.ts +4 -0
  133. package/dist/database/migrations/202611070001_ag_run_runner_pin.d.ts.map +1 -0
  134. package/dist/database/migrations/202611070001_ag_run_runner_pin.js +17 -0
  135. package/dist/database/migrations/202611070001_ag_run_runner_pin.js.map +1 -0
  136. package/dist/database/migrations/202611080001_ag_conversation_shares.d.ts +4 -0
  137. package/dist/database/migrations/202611080001_ag_conversation_shares.d.ts.map +1 -0
  138. package/dist/database/migrations/202611080001_ag_conversation_shares.js +25 -0
  139. package/dist/database/migrations/202611080001_ag_conversation_shares.js.map +1 -0
  140. package/dist/database/migrations/202611080002_ag_run_failure_params.d.ts +4 -0
  141. package/dist/database/migrations/202611080002_ag_run_failure_params.d.ts.map +1 -0
  142. package/dist/database/migrations/202611080002_ag_run_failure_params.js +17 -0
  143. package/dist/database/migrations/202611080002_ag_run_failure_params.js.map +1 -0
  144. package/dist/database/migrations/202611090001_ag_runner_preference.d.ts +9 -0
  145. package/dist/database/migrations/202611090001_ag_runner_preference.d.ts.map +1 -0
  146. package/dist/database/migrations/202611090001_ag_runner_preference.js +28 -0
  147. package/dist/database/migrations/202611090001_ag_runner_preference.js.map +1 -0
  148. package/dist/database/migrations/202611110001_ag_runner_quota_limits.d.ts +4 -0
  149. package/dist/database/migrations/202611110001_ag_runner_quota_limits.d.ts.map +1 -0
  150. package/dist/database/migrations/202611110001_ag_runner_quota_limits.js +17 -0
  151. package/dist/database/migrations/202611110001_ag_runner_quota_limits.js.map +1 -0
  152. package/dist/package.json +4 -2
  153. package/dist/server/composition.d.ts +9 -1
  154. package/dist/server/composition.d.ts.map +1 -1
  155. package/dist/server/composition.js +31 -2
  156. package/dist/server/composition.js.map +1 -1
  157. package/dist/server/core/agents/agent.service.d.ts +2 -1
  158. package/dist/server/core/agents/agent.service.d.ts.map +1 -1
  159. package/dist/server/core/agents/agent.service.js.map +1 -1
  160. package/dist/server/core/agents/agent.store.d.ts +2 -2
  161. package/dist/server/core/agents/agent.store.d.ts.map +1 -1
  162. package/dist/server/core/agents/agent.store.js +8 -2
  163. package/dist/server/core/agents/agent.store.js.map +1 -1
  164. package/dist/server/core/brief/brief.d.ts +10 -5
  165. package/dist/server/core/brief/brief.d.ts.map +1 -1
  166. package/dist/server/core/brief/brief.js +36 -13
  167. package/dist/server/core/brief/brief.js.map +1 -1
  168. package/dist/server/core/brief/index.d.ts +1 -1
  169. package/dist/server/core/brief/index.d.ts.map +1 -1
  170. package/dist/server/core/brief/index.js +1 -1
  171. package/dist/server/core/brief/index.js.map +1 -1
  172. package/dist/server/core/conversations/attachments.d.ts +6 -4
  173. package/dist/server/core/conversations/attachments.d.ts.map +1 -1
  174. package/dist/server/core/conversations/attachments.js +66 -22
  175. package/dist/server/core/conversations/attachments.js.map +1 -1
  176. package/dist/server/core/conversations/chat-settings.d.ts +1 -1
  177. package/dist/server/core/conversations/chat-settings.d.ts.map +1 -1
  178. package/dist/server/core/conversations/chat-settings.js +6 -0
  179. package/dist/server/core/conversations/chat-settings.js.map +1 -1
  180. package/dist/server/core/conversations/conversation.service.d.ts +3 -1
  181. package/dist/server/core/conversations/conversation.service.d.ts.map +1 -1
  182. package/dist/server/core/conversations/conversation.service.js +198 -18
  183. package/dist/server/core/conversations/conversation.service.js.map +1 -1
  184. package/dist/server/core/conversations/conversation.store.d.ts +2 -0
  185. package/dist/server/core/conversations/conversation.store.d.ts.map +1 -1
  186. package/dist/server/core/conversations/conversation.store.js.map +1 -1
  187. package/dist/server/core/conversations/index.d.ts +1 -0
  188. package/dist/server/core/conversations/index.d.ts.map +1 -1
  189. package/dist/server/core/conversations/links.d.ts.map +1 -1
  190. package/dist/server/core/conversations/links.js +10 -5
  191. package/dist/server/core/conversations/links.js.map +1 -1
  192. package/dist/server/core/conversations/ports.d.ts +8 -2
  193. package/dist/server/core/conversations/ports.d.ts.map +1 -1
  194. package/dist/server/core/conversations/shares.d.ts +38 -0
  195. package/dist/server/core/conversations/shares.d.ts.map +1 -0
  196. package/dist/server/core/conversations/shares.js +189 -0
  197. package/dist/server/core/conversations/shares.js.map +1 -0
  198. package/dist/server/core/reports/report.service.d.ts.map +1 -1
  199. package/dist/server/core/reports/report.service.js +24 -13
  200. package/dist/server/core/reports/report.service.js.map +1 -1
  201. package/dist/server/core/runs/access.d.ts +7 -1
  202. package/dist/server/core/runs/access.d.ts.map +1 -1
  203. package/dist/server/core/runs/access.js +51 -2
  204. package/dist/server/core/runs/access.js.map +1 -1
  205. package/dist/server/core/runs/claim.d.ts +22 -3
  206. package/dist/server/core/runs/claim.d.ts.map +1 -1
  207. package/dist/server/core/runs/claim.js +260 -42
  208. package/dist/server/core/runs/claim.js.map +1 -1
  209. package/dist/server/core/runs/eligibility.d.ts.map +1 -1
  210. package/dist/server/core/runs/eligibility.js +1 -0
  211. package/dist/server/core/runs/eligibility.js.map +1 -1
  212. package/dist/server/core/runs/extensions.d.ts +30 -2
  213. package/dist/server/core/runs/extensions.d.ts.map +1 -1
  214. package/dist/server/core/runs/extensions.js +18 -1
  215. package/dist/server/core/runs/extensions.js.map +1 -1
  216. package/dist/server/core/runs/git-credentials.d.ts.map +1 -1
  217. package/dist/server/core/runs/git-credentials.js +24 -2
  218. package/dist/server/core/runs/git-credentials.js.map +1 -1
  219. package/dist/server/core/runs/identity.d.ts.map +1 -1
  220. package/dist/server/core/runs/identity.js +9 -0
  221. package/dist/server/core/runs/identity.js.map +1 -1
  222. package/dist/server/core/runs/index.d.ts +3 -2
  223. package/dist/server/core/runs/index.d.ts.map +1 -1
  224. package/dist/server/core/runs/index.js +2 -1
  225. package/dist/server/core/runs/index.js.map +1 -1
  226. package/dist/server/core/runs/lifecycle.d.ts.map +1 -1
  227. package/dist/server/core/runs/lifecycle.js +14 -0
  228. package/dist/server/core/runs/lifecycle.js.map +1 -1
  229. package/dist/server/core/runs/npm-credentials.d.ts +35 -0
  230. package/dist/server/core/runs/npm-credentials.d.ts.map +1 -0
  231. package/dist/server/core/runs/npm-credentials.js +83 -0
  232. package/dist/server/core/runs/npm-credentials.js.map +1 -0
  233. package/dist/server/core/runs/ports.d.ts +24 -3
  234. package/dist/server/core/runs/ports.d.ts.map +1 -1
  235. package/dist/server/core/runs/ports.js.map +1 -1
  236. package/dist/server/core/runs/preview.d.ts +1 -4
  237. package/dist/server/core/runs/preview.d.ts.map +1 -1
  238. package/dist/server/core/runs/preview.js +10 -5
  239. package/dist/server/core/runs/preview.js.map +1 -1
  240. package/dist/server/core/runs/quota-wait.d.ts +7 -0
  241. package/dist/server/core/runs/quota-wait.d.ts.map +1 -0
  242. package/dist/server/core/runs/quota-wait.js +56 -0
  243. package/dist/server/core/runs/quota-wait.js.map +1 -0
  244. package/dist/server/core/runs/run-data-purge.d.ts.map +1 -1
  245. package/dist/server/core/runs/run-data-purge.js +1 -0
  246. package/dist/server/core/runs/run-data-purge.js.map +1 -1
  247. package/dist/server/core/runs/run.service.d.ts +31 -5
  248. package/dist/server/core/runs/run.service.d.ts.map +1 -1
  249. package/dist/server/core/runs/run.service.js +129 -35
  250. package/dist/server/core/runs/run.service.js.map +1 -1
  251. package/dist/server/core/runs/run.store.d.ts +24 -0
  252. package/dist/server/core/runs/run.store.d.ts.map +1 -1
  253. package/dist/server/core/runs/run.store.js +44 -0
  254. package/dist/server/core/runs/run.store.js.map +1 -1
  255. package/dist/server/core/runs/sweeper.d.ts.map +1 -1
  256. package/dist/server/core/runs/sweeper.js +2 -0
  257. package/dist/server/core/runs/sweeper.js.map +1 -1
  258. package/dist/server/core/runs/transitions.d.ts +1 -0
  259. package/dist/server/core/runs/transitions.d.ts.map +1 -1
  260. package/dist/server/core/runs/transitions.js +15 -1
  261. package/dist/server/core/runs/transitions.js.map +1 -1
  262. package/dist/server/core/runs/workload.d.ts +2 -2
  263. package/dist/server/core/runs/workload.d.ts.map +1 -1
  264. package/dist/server/core/runs/workload.js +62 -9
  265. package/dist/server/core/runs/workload.js.map +1 -1
  266. package/dist/server/kernel/clock.d.ts +2 -0
  267. package/dist/server/kernel/clock.d.ts.map +1 -1
  268. package/dist/server/kernel/clock.js +14 -0
  269. package/dist/server/kernel/clock.js.map +1 -1
  270. package/dist/server/kernel/events.d.ts +4 -1
  271. package/dist/server/kernel/events.d.ts.map +1 -1
  272. package/dist/server/kernel/events.js.map +1 -1
  273. package/dist/server/locales/de-DE.js +3 -3
  274. package/dist/server/locales/de-DE.js.map +1 -1
  275. package/dist/server/locales/es-ES.js +6 -6
  276. package/dist/server/locales/es-ES.js.map +1 -1
  277. package/dist/server/locales/fr-FR.js +4 -4
  278. package/dist/server/locales/fr-FR.js.map +1 -1
  279. package/dist/server/locales/id-ID.js +5 -5
  280. package/dist/server/locales/id-ID.js.map +1 -1
  281. package/dist/server/locales/index.d.ts.map +1 -1
  282. package/dist/server/locales/index.js +2 -0
  283. package/dist/server/locales/index.js.map +1 -1
  284. package/dist/server/locales/ja-JP.d.ts.map +1 -1
  285. package/dist/server/locales/ja-JP.js +6 -6
  286. package/dist/server/locales/ja-JP.js.map +1 -1
  287. package/dist/server/locales/ko-KR.d.ts +5 -0
  288. package/dist/server/locales/ko-KR.d.ts.map +1 -0
  289. package/dist/server/locales/ko-KR.js +59 -0
  290. package/dist/server/locales/ko-KR.js.map +1 -0
  291. package/dist/server/locales/pt-BR.js +6 -6
  292. package/dist/server/locales/pt-BR.js.map +1 -1
  293. package/dist/server/locales/ru-RU.d.ts +5 -0
  294. package/dist/server/locales/ru-RU.d.ts.map +1 -0
  295. package/dist/server/locales/ru-RU.js +59 -0
  296. package/dist/server/locales/ru-RU.js.map +1 -0
  297. package/dist/server/locales/vi-VN.js +6 -6
  298. package/dist/server/locales/vi-VN.js.map +1 -1
  299. package/dist/server/locales/zh-TW.d.ts.map +1 -1
  300. package/dist/server/locales/zh-TW.js +6 -6
  301. package/dist/server/locales/zh-TW.js.map +1 -1
  302. package/dist/server/online/agent/persistence/store.d.ts.map +1 -1
  303. package/dist/server/online/agent/persistence/store.js +3 -0
  304. package/dist/server/online/agent/persistence/store.js.map +1 -1
  305. package/dist/server/online/agent/runner/projection.d.ts +1 -1
  306. package/dist/server/online/agent/runner/projection.d.ts.map +1 -1
  307. package/dist/server/online/agent/runner/projection.js +8 -1
  308. package/dist/server/online/agent/runner/projection.js.map +1 -1
  309. package/dist/server/online/files/input.d.ts +2 -2
  310. package/dist/server/online/files/input.d.ts.map +1 -1
  311. package/dist/server/online/files/input.js +5 -6
  312. package/dist/server/online/files/input.js.map +1 -1
  313. package/dist/server/online/files/kimi.d.ts.map +1 -1
  314. package/dist/server/online/files/kimi.js +2 -2
  315. package/dist/server/online/files/kimi.js.map +1 -1
  316. package/dist/server/online/files/service.d.ts +2 -1
  317. package/dist/server/online/files/service.d.ts.map +1 -1
  318. package/dist/server/online/files/service.js +11 -10
  319. package/dist/server/online/files/service.js.map +1 -1
  320. package/dist/server/providers/agents.d.ts.map +1 -1
  321. package/dist/server/providers/agents.js +5 -2
  322. package/dist/server/providers/agents.js.map +1 -1
  323. package/dist/server/routes/admin.d.ts +1 -0
  324. package/dist/server/routes/admin.d.ts.map +1 -1
  325. package/dist/server/routes/admin.js +41 -14
  326. package/dist/server/routes/admin.js.map +1 -1
  327. package/dist/server/routes/chat.d.ts.map +1 -1
  328. package/dist/server/routes/chat.js +107 -24
  329. package/dist/server/routes/chat.js.map +1 -1
  330. package/dist/server/routes/index.d.ts.map +1 -1
  331. package/dist/server/routes/index.js +8 -2
  332. package/dist/server/routes/index.js.map +1 -1
  333. package/dist/server/routes/run.js +1 -1
  334. package/dist/server/routes/run.js.map +1 -1
  335. package/dist/server/routes/runners/admin.d.ts.map +1 -1
  336. package/dist/server/routes/runners/admin.js +3 -3
  337. package/dist/server/routes/runners/admin.js.map +1 -1
  338. package/dist/server/routes/runners/install.d.ts.map +1 -1
  339. package/dist/server/routes/runners/install.js +5 -0
  340. package/dist/server/routes/runners/install.js.map +1 -1
  341. package/dist/server/routes/runners/runner.d.ts.map +1 -1
  342. package/dist/server/routes/runners/runner.js +13 -22
  343. package/dist/server/routes/runners/runner.js.map +1 -1
  344. package/dist/server/routes/runners/runs.d.ts +1 -1
  345. package/dist/server/routes/runners/runs.d.ts.map +1 -1
  346. package/dist/server/routes/runners/runs.js +20 -1
  347. package/dist/server/routes/runners/runs.js.map +1 -1
  348. package/dist/server/routes/schemas.d.ts +4 -0
  349. package/dist/server/routes/schemas.d.ts.map +1 -1
  350. package/dist/server/routes/schemas.js +31 -6
  351. package/dist/server/routes/schemas.js.map +1 -1
  352. package/dist/server/runners/runner.service.d.ts.map +1 -1
  353. package/dist/server/runners/runner.service.js +33 -9
  354. package/dist/server/runners/runner.service.js.map +1 -1
  355. package/dist/server/runners/runner.store.d.ts +1 -0
  356. package/dist/server/runners/runner.store.d.ts.map +1 -1
  357. package/dist/server/runners/runner.store.js +1 -0
  358. package/dist/server/runners/runner.store.js.map +1 -1
  359. package/dist/server/tokens.d.ts +1 -1
  360. package/dist/server/tokens.d.ts.map +1 -1
  361. package/dist/server/tokens.js.map +1 -1
  362. package/dist/shared/briefs.d.ts +2 -6
  363. package/dist/shared/briefs.d.ts.map +1 -1
  364. package/dist/shared/conversations.d.ts +34 -3
  365. package/dist/shared/conversations.d.ts.map +1 -1
  366. package/dist/shared/conversations.js +10 -2
  367. package/dist/shared/conversations.js.map +1 -1
  368. package/dist/shared/runners.d.ts +7 -3
  369. package/dist/shared/runners.d.ts.map +1 -1
  370. package/dist/shared/runners.js +20 -4
  371. package/dist/shared/runners.js.map +1 -1
  372. package/dist/shared/runs.d.ts +11 -3
  373. package/dist/shared/runs.d.ts.map +1 -1
  374. package/dist/shared/runs.js +2 -0
  375. package/dist/shared/runs.js.map +1 -1
  376. package/docs/conversation-sharing.md +55 -0
  377. package/package.json +18 -16
  378. package/skills/nocobase-app-plugin-agents/SKILL.md +5 -1
  379. package/skills/nocobase-app-plugin-agents/references/extension-points.md +5 -1
  380. package/skills/nocobase-app-plugin-agents/references/online-agent.md +6 -6
  381. package/skills/nocobase-app-plugin-agents/references/runners.md +1 -1
  382. package/skills/nocobase-app-plugin-agents/references/verification-and-troubleshooting.md +2 -1
@@ -59,7 +59,7 @@ export declare const PRE_START_INTERRUPTION_LIMIT = 10;
59
59
  export declare function isPreStartInterruption(execution: RunExecutionSnapshot): boolean;
60
60
  /** Both pre-start causes share one streak; every other ended attempt breaks it. */
61
61
  export declare function consecutivePreStartInterruptions(executions: readonly RunExecutionSnapshot[]): number;
62
- export type ModelWaitReason = 'updatePending' | 'pruning' | 'ready' | 'busy' | 'incompatible' | 'offline' | 'restricted' | 'noSharedRunner' | 'toolNotInstalled' | 'toolUnavailable' | 'unknown' | 'concurrencyFull' | 'sameWorkActive' | 'delayed';
62
+ export type ModelWaitReason = 'updatePending' | 'pruning' | 'ready' | 'busy' | 'incompatible' | 'offline' | 'restricted' | 'noSharedRunner' | 'toolNotInstalled' | 'toolUnavailable' | 'toolQuota' | 'unknown' | 'concurrencyFull' | 'sameWorkActive' | 'delayed';
63
63
  export interface ModelSelectionWait {
64
64
  readonly queueEnteredAt: string;
65
65
  readonly fallbackAfterSeconds: number;
@@ -68,6 +68,8 @@ export interface ModelSelectionWait {
68
68
  readonly tool: string;
69
69
  readonly model: string | null;
70
70
  readonly reason: ModelWaitReason;
71
+ /** Earliest known quota reset among otherwise fitting runners; absent for other reasons. */
72
+ readonly until?: string | null;
71
73
  readonly compatibleCount: number;
72
74
  readonly blockers?: readonly ModelWaitReason[];
73
75
  readonly runners: readonly {
@@ -85,6 +87,8 @@ export interface ModelSelectionWait {
85
87
  }[];
86
88
  }
87
89
  export interface Run {
90
+ readonly sessionId?: string | null;
91
+ readonly runnerPinId?: string | null;
88
92
  readonly id: string;
89
93
  readonly agentId: string;
90
94
  /** The agent's type (`AgentType`): an `online` run is held by the application itself, a `runner` run by a runner. */
@@ -158,6 +162,8 @@ export interface Run {
158
162
  readonly cancelledById: string | null;
159
163
  readonly failureReason: FailureReason | null;
160
164
  readonly failureDetail: string | null;
165
+ /** Safe structured repository preparation diagnostics; absent on older servers. */
166
+ readonly failureParams?: Readonly<Record<string, unknown>> | null;
161
167
  readonly summary: string | null;
162
168
  readonly createdAt: string;
163
169
  readonly updatedAt: string;
@@ -241,6 +247,7 @@ export interface RunEventPage {
241
247
  * - `delayed`: it was given a moment (`fireAt`, or a retry's backoff) that has not come; `until` says when.
242
248
  * - `noRunnerOnline`: no runner is online at all.
243
249
  * - `runnersOffline`: the agent names its runners, and none of them is online.
250
+ * - `toolQuota`: otherwise fitting runners have exhausted their quota; `until` is the earliest known reset.
244
251
  * - `toolUnavailable`: runners are online, but none has any of the agent's coding tools enabled, installed and
245
252
  * signed in.
246
253
  * - `noSharedRunner`: only personal runners could take it, and none belongs to the person who woke the agent.
@@ -255,13 +262,14 @@ export interface RunEventPage {
255
262
  * - `setupRetrying`: preparing it failed and is tried again (`detail` says why).
256
263
  * - `next`: nothing holds it; the next free runner that asks takes it.
257
264
  */
258
- export declare const RUN_WAIT_REASONS: readonly ["updatePending", "pruning", "agentArchived", "incompatible", "toolNotInstalled", "restricted", "unknown", "delayed", "noRunnerOnline", "runnersOffline", "toolUnavailable", "noSharedRunner", "missingFeatures", "secretsNotAllowed", "sameWorkActive", "concurrencyFull", "runnersBusy", "toolSlotsFull", "setupRetrying", "next"];
265
+ export declare const RUN_WAIT_REASONS: readonly ["updatePending", "pruning", "agentArchived", "incompatible", "toolNotInstalled", "restricted", "unknown", "delayed", "noRunnerOnline", "runnersOffline", "toolQuota", "toolUnavailable", "noSharedRunner", "missingFeatures", "secretsNotAllowed", "sameWorkActive", "concurrencyFull", "runnersBusy", "toolSlotsFull", "setupRetrying", "next"];
259
266
  export type RunWaitReason = (typeof RUN_WAIT_REASONS)[number];
260
267
  /**
261
268
  * What a wait's words need, by reason: the server sends codes and these, never text, and the client words them
262
269
  * (`formatRunWait` in `client/runs.ts`, or the application's own). Absent for a reason that needs nothing.
263
270
  *
264
271
  * - `delayed`: `until` (RFC 3339).
272
+ * - `toolQuota`: `tool` and, when known, `until` (RFC 3339); an unknown reset has no `until` parameter.
265
273
  * - `toolUnavailable`: `tool`, the agent's default coding tool.
266
274
  * - `missingFeatures`: `features`, what no fitting runner has.
267
275
  * - `secretsNotAllowed`: `variables`, the names of the variables for shared runners only.
@@ -278,7 +286,7 @@ export interface RunWait {
278
286
  readonly position: number | null;
279
287
  /** Its place among its agent's queued runs, in claim order (1 first). */
280
288
  readonly agentPosition: number;
281
- /** When a delayed run may be claimed. */
289
+ /** When a delayed run may be claimed, or the earliest known quota reset for `toolQuota`. */
282
290
  readonly until: string | null;
283
291
  /**
284
292
  * For `toolUnavailable`: the agent's default coding tool (its first entry's); any of its tools would do. For
@@ -1 +1 @@
1
- {"version":3,"file":"runs.d.ts","sourceRoot":"","sources":["../../shared/runs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runs.d.ts","sourceRoot":"","sources":["../../shared/runs.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,7 @@ export function consecutivePreStartInterruptions(executions) {
32
32
  * - `delayed`: it was given a moment (`fireAt`, or a retry's backoff) that has not come; `until` says when.
33
33
  * - `noRunnerOnline`: no runner is online at all.
34
34
  * - `runnersOffline`: the agent names its runners, and none of them is online.
35
+ * - `toolQuota`: otherwise fitting runners have exhausted their quota; `until` is the earliest known reset.
35
36
  * - `toolUnavailable`: runners are online, but none has any of the agent's coding tools enabled, installed and
36
37
  * signed in.
37
38
  * - `noSharedRunner`: only personal runners could take it, and none belongs to the person who woke the agent.
@@ -57,6 +58,7 @@ export const RUN_WAIT_REASONS = [
57
58
  'delayed',
58
59
  'noRunnerOnline',
59
60
  'runnersOffline',
61
+ 'toolQuota',
60
62
  'toolUnavailable',
61
63
  'noSharedRunner',
62
64
  'missingFeatures',
@@ -1 +1 @@
1
- {"version":3,"file":"runs.js","sourceRoot":"","sources":["../../shared/runs.ts"],"names":[],"mappings":"AAkBA,uGAAuG;AACvG,MAAM,CAAC,MAAM,oBAAoB,GAAG,cAAc,CAAC;AAEnD,6FAA6F;AAC7F,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAiDnC,uGAAuG;AACvG,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,CAAC;AAE/C,wFAAwF;AACxF,MAAM,UAAU,sBAAsB,CACpC,SAA+B;IAE/B,OAAO,CACL,SAAS,CAAC,UAAU,KAAK,IAAI;QAC7B,SAAS,CAAC,aAAa,KAAK,SAAS;QACrC,CAAC,SAAS,CAAC,aAAa,KAAK,cAAc;YACzC,SAAS,CAAC,aAAa,KAAK,0BAA0B,CAAC,CAC1D,CAAC;AACJ,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,gCAAgC,CAC9C,UAA2C;IAE3C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,KAAK,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QAC5D,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,SAAS,CAAC,UAAU,KAAK,IAAI;YAAE,SAAS;QAC5C,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC;YAAE,MAAM;QAC9C,KAAK,EAAE,CAAC;IACV,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAmMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,eAAe;IACf,SAAS;IACT,eAAe;IACf,cAAc;IACd,kBAAkB;IAClB,YAAY;IACZ,SAAS;IACT,SAAS;IACT,gBAAgB;IAChB,gBAAgB;IAChB,iBAAiB;IACjB,gBAAgB;IAChB,iBAAiB;IACjB,mBAAmB;IACnB,gBAAgB;IAChB,iBAAiB;IACjB,aAAa;IACb,eAAe;IACf,eAAe;IACf,MAAM;CACE,CAAC;AAsDX,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAgDzC;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,SAAS;IACT,WAAW;IACX,UAAU;IACV,WAAW;IACX,SAAS;IACT,YAAY;CACJ,CAAC;AAIX,6EAA6E;AAC7E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,CAAU,CAAC"}
1
+ {"version":3,"file":"runs.js","sourceRoot":"","sources":["../../shared/runs.ts"],"names":[],"mappings":"AAkBA,uGAAuG;AACvG,MAAM,CAAC,MAAM,oBAAoB,GAAG,cAAc,CAAC;AAEnD,6FAA6F;AAC7F,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAiDnC,uGAAuG;AACvG,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,CAAC;AAE/C,wFAAwF;AACxF,MAAM,UAAU,sBAAsB,CACpC,SAA+B;IAE/B,OAAO,CACL,SAAS,CAAC,UAAU,KAAK,IAAI;QAC7B,SAAS,CAAC,aAAa,KAAK,SAAS;QACrC,CAAC,SAAS,CAAC,aAAa,KAAK,cAAc;YACzC,SAAS,CAAC,aAAa,KAAK,0BAA0B,CAAC,CAC1D,CAAC;AACJ,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,gCAAgC,CAC9C,UAA2C;IAE3C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,KAAK,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QAC5D,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,SAAS,CAAC,UAAU,KAAK,IAAI;YAAE,SAAS;QAC5C,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC;YAAE,MAAM;QAC9C,KAAK,EAAE,CAAC;IACV,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AA0MD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,eAAe;IACf,SAAS;IACT,eAAe;IACf,cAAc;IACd,kBAAkB;IAClB,YAAY;IACZ,SAAS;IACT,SAAS;IACT,gBAAgB;IAChB,gBAAgB;IAChB,WAAW;IACX,iBAAiB;IACjB,gBAAgB;IAChB,iBAAiB;IACjB,mBAAmB;IACnB,gBAAgB;IAChB,iBAAiB;IACjB,aAAa;IACb,eAAe;IACf,eAAe;IACf,MAAM;CACE,CAAC;AAuDX,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAgDzC;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,SAAS;IACT,WAAW;IACX,UAAU;IACV,WAAW;IACX,SAAS;IACT,YAAY;CACJ,CAAC;AAIX,6EAA6E;AAC7E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,CAAU,CAAC"}
@@ -0,0 +1,55 @@
1
+ # Conversation snapshots
2
+
3
+ An owner can share a conversation with named, authenticated application users. A recipient reads the saved history through the ordinary conversation URL. Sharing does not grant business-record permissions, add the conversation to the recipient's list, or deliver realtime updates. There are no anonymous or public links.
4
+
5
+ ## Storage and cutoff
6
+
7
+ The `agConversationShares` migration adds `id`, `conversationId`, `userId`, `cutoffSeq`, `snapshotAt`, `title`, `createdAt` and `updatedAt`. A unique `(conversationId, userId)` index supports each access check and repeat sharing. No messages or files are copied. The title is saved with the grant so a later rename cannot expose new text.
8
+
9
+ Granting reuses the conversation's existing write serialization with input admission and finalization. Open Runner runs, including a run closing its final projection, are excluded from their first input onward. A native execution in progress, waiting for approval or closing is excluded from its first input onward. The cutoff is the highest safe message sequence; `snapshotAt` is the last included message's time, or creation time for an empty history. Repeat sharing replaces the recipient's cutoff. Runner work with several queued inputs remains excluded until that run ends.
10
+
11
+ Native resend edits and deletes stored history. It is refused while any snapshot is shared; revoke those snapshots before rewriting history. Ordinary new messages remain available to the owner and leave snapshots unchanged. Deleting a conversation also deletes its grants.
12
+
13
+ ## HTTP boundaries
14
+
15
+ All paths below are relative to `/api/agents/conversations/:conversationId` and require native application authentication.
16
+
17
+ | Request | Authorization and result |
18
+ | ------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
19
+ | `GET /shareCandidates` | Owner only; candidates from the application's scope. |
20
+ | `GET /shares` | Owner only; recipients and their cutoffs. |
21
+ | `PUT /shares/:userId` | Owner only; validates the current scope and creates or advances the cutoff. |
22
+ | `DELETE /shares/:userId` | Owner only; revokes the recipient. |
23
+ | `GET /` | Owner receives ordinary detail; recipient receives a whitelist of snapshot fields, without execution, runtime, wait, project or attention data. |
24
+ | `GET /messages` | Owner retains ordinary backend history; recipient uses a read-only projection bounded by `cutoffSeq`. Older pages, `after`, direct message IDs and expanded logical Runner responses all preserve the bound. `lastSeq` reports only the cutoff. |
25
+ | `GET /links` | Owner or recipient; recipient links predate the cutoff and resolve using the viewer's own permissions. Unreadable records are omitted. |
26
+ | `GET /events`, `GET /usage`, `GET /config` | Owner only, including after a share is granted. |
27
+ | Every conversation write | Owner only, including send, queue, withdraw, stop, approval, finalize, config, rename, archive, delete and link management. |
28
+
29
+ `GET /api/agents/chatAttachments/:id/content` checks the conversation owner or an existing grant, then checks that the attachment's actual owning message belongs to that conversation and is at or before the cutoff. A run credential retains its original conversation-and-owner check; sharing gives runs no new access. Unsent uploads remain the uploader's alone. No file bytes are read before authorization.
30
+
31
+ An absent conversation, absent grant and revoked grant return the same 404. No grant cache delays revocation. The next HTTP read after revocation fails; content already downloaded cannot be recalled. Historical page references are resolved again as the viewer, without reusing the owner's cached titles, URLs or page filters. The transcript's text and public tool output are intentionally shared content, so the dialog warns that they may be sensitive.
32
+
33
+ ## Application extension
34
+
35
+ The default directory is the existing `agents.people` provider. Applications can instead call `agents.conversations.shares.provideScope((conn, ownerId, conversationId) => candidates)`. Candidate listing and granting call the same scope, with disabled users removed through `people.inactive`. The returned disposer removes the provider. No project dependency is introduced.
36
+
37
+ A successful `conversations.get()` now proves read access, not ownership. Host operations that previously used it as an ownership check must reject detail with `snapshot` before allowing a write or owner-session binding. All conversation write methods retain their independent owner checks.
38
+
39
+ Applications continue to register business link kinds and page-context resolvers; these receive the actual viewer's ID. A scope provider must return application users who may be selected by that owner. Without a directory or scope, the candidate list is empty and granting arbitrary IDs is refused. The Examples application's provider demonstrates a directory limited to enabled person accounts.
40
+
41
+ ## Browser integration
42
+
43
+ Update the UI Library `agent-chat` and `agent-chat-details` recipes together with the matching Agents package. They include `ShareConversation` and `SnapshotView`. Configure `ChatProvider.conversationPath` with an application-relative authenticated route for copied links. `resolveAppUrl` preserves the application's deployment base path; copying uses the shared HTTP-compatible copy utility.
44
+
45
+ The owner's conversation menu opens a recipient picker, the existing list, Update and Revoke, and Copy link. A recipient's `snapshot` detail selects the separate historical view in `ConversationView` and the linked workspace. It renders the cutoff label and saved messages with `readOnly` tool contexts, without a composer, usage query, run state, stream receiver or application timeline hooks. Custom tool renderers must honor their existing `context.readOnly` contract. The shared conversation is never inserted into My sessions. The Examples `/chat/:conversationId` page and panel use these contracts.
46
+
47
+ ## Cost and verification
48
+
49
+ A grant adds one existing conversation lock and one share insert/update in a transaction initiated by the owner. Revocation deletes the selected grant. No new claim, heartbeat, sweeper or output-batch operations are introduced. Each recipient read adds a conversation lookup and indexed grant lookup, and history/file reads constrain their existing message queries by sequence. Owner history requests add one ownership lookup before using their ordinary backend. Recipient views read detail, history and authorized links when opened, reread on focus and request older history on pagination, with no live poll, event stream or per-batch checks. Warm SQLite measurements on a one-turn snapshot are 2 SELECTs for detail, 7 for Runner history, 3 for native history and 4 for an attachment, with zero writes, locks and transactions. Business reference resolvers add their own viewer-specific reads.
50
+
51
+ `tests/conversation-shares.test.ts` exercises Runner and native history, active-turn exclusion, direct IDs, pagination, files, repeat sharing, revocation, viewer-only record resolution, owner-only notification audiences and the write/live-read permission matrix. Query-count bounds assert zero writes, locks and transactions on recipient reads. `tests/conversation-shares-migration.test.ts` applies, rolls back and reapplies the schema on the configured test dialect.
52
+
53
+ ## Left out
54
+
55
+ Public links, anonymous access, project-member grants, streaming recipients, extra output channels, long-term run-event retention and message duplication are excluded. Studio's application-specific scope, route and installed recipe update follow after the framework merges. Directory search/paging for very large installations and historical run-event retention remain separate work.
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@nocobase/app-plugin-agents",
3
3
  "displayName": "Agents",
4
4
  "description": "Agents for NocoBase applications: agents, the model services online agents call, their runs and conversations, and the runners people connect to run them (registration, the long-poll claim, slots, the sweeper, build jobs, and the runner and CLI tarballs the application serves).",
5
- "version": "2.0.0-beta.1",
5
+ "version": "2.0.0-beta.11",
6
6
  "type": "module",
7
7
  "prettier": "@nocobase/dev-config/prettier",
8
8
  "engines": {
@@ -162,11 +162,11 @@
162
162
  "resumable-stream": "2.2.13",
163
163
  "yaml": "^2.9.0",
164
164
  "zod": "^4.6.5",
165
- "@nocobase/document-extractor": "^0.1.0-beta.0",
166
- "@nocobase/agent-protocol": "^0.1.0-beta.16",
167
- "@nocobase/app-cli-client": "^0.1.0-beta.17",
165
+ "@nocobase/document-extractor": "^0.1.0-beta.1",
166
+ "@nocobase/agent-protocol": "^0.1.0-beta.18",
167
+ "@nocobase/app-cli-client": "^0.1.0-beta.20",
168
168
  "@nocobase/cli-envelope": "^0.1.0-beta.1",
169
- "@nocobase/acp-bridge": "^1.0.0-beta.4"
169
+ "@nocobase/acp-bridge": "^1.0.0-beta.6"
170
170
  },
171
171
  "peerDependencies": {
172
172
  "@ai-sdk/react": "4.0.131",
@@ -183,15 +183,15 @@
183
183
  "react-virtuoso": "^4.18.15",
184
184
  "recharts": "^3.8.0",
185
185
  "remark-gfm": "^4.0.1",
186
- "@nocobase/app-cli": "^1.0.0-beta.31",
187
- "@nocobase/app-client": "^4.0.0-beta.6",
188
- "@nocobase/app-plugin-authentication": "^2.0.0-beta.17",
189
- "@nocobase/app-plugin-authorization": "^1.0.0-beta.34",
190
- "@nocobase/app-plugin-file": "^1.0.0-beta.28",
191
- "@nocobase/app-server": "^4.0.0-beta.0",
186
+ "@nocobase/app-cli": "^1.0.0-beta.33",
187
+ "@nocobase/app-client": "^4.0.0-beta.10",
188
+ "@nocobase/app-plugin-authentication": "^2.0.0-beta.20",
189
+ "@nocobase/app-plugin-authorization": "^1.0.0-beta.37",
190
+ "@nocobase/app-plugin-file": "^1.0.0-beta.31",
191
+ "@nocobase/app-server": "^5.0.0-beta.4",
192
192
  "@nocobase/authorization": "^1.0.0-beta.16",
193
- "@nocobase/db": "^1.0.0-beta.24",
194
- "@nocobase/i18n": "^2.0.0-beta.1",
193
+ "@nocobase/db": "^1.0.0-beta.28",
194
+ "@nocobase/i18n": "^2.0.0-beta.2",
195
195
  "@nocobase/markdown-mermaid": "^0.1.0-beta.2",
196
196
  "@nocobase/service-provider": "^0.0.2-beta.2"
197
197
  },
@@ -210,12 +210,14 @@
210
210
  "vitest": "^4.1.10",
211
211
  "knex": "^3.1.0",
212
212
  "pg": "^8.23.0",
213
- "@nocobase/agent-runner": "0.1.0-beta.22",
214
- "@nocobase/app-testing": "0.1.0-beta.7",
213
+ "@nocobase/agent-runner": "0.1.0-beta.26",
214
+ "@nocobase/app-testing": "0.1.0-beta.9",
215
215
  "@nocobase/db-postgres": "0.1.0-beta.5",
216
216
  "@nocobase/db-sqlite": "0.1.0-beta.6",
217
217
  "@nocobase/dev-config": "0.1.0-beta.25",
218
- "@nocobase/jobs": "1.0.0-beta.5"
218
+ "@nocobase/jobs": "1.0.0-beta.6",
219
+ "@nocobase/realtime": "1.0.0-beta.2",
220
+ "@nocobase/drive": "^0.1.0-beta.8"
219
221
  },
220
222
  "scripts": {
221
223
  "build": "tsc -p tsconfig.json && node ./scripts/bundle-just-bash.mjs && nocobase-db-manifests",
@@ -23,7 +23,7 @@ The package README is the full reference: read it at `node_modules/@nocobase/app
23
23
  - File preparation failures expose only controlled reason codes in execution-status notice params, with fixed fallback titles and viewer-localized wording. Keep parser/Provider errors and credentials private; never infer a historical failure reason from current model configuration or turn Stop into a failure.
24
24
  - Local document cache hits still reauthorize and read current bytes; cache keys isolate users, sources and extractor instances. Historical/native/reference inputs count toward execution budgets; declare a verified lower native count through profile `maxNativeFiles` when the Provider requires it. Model changes and approvals rebuild replay copies from originals. Stop waits for file-stream cancellation and Worker termination; retryFinalization does not repeat extraction or tools.
25
25
  - Kimi Files extraction is automatic for Moonshot; OpenAI-compatible services require an exact remote profile. An exact local profile opts out for a Moonshot model. Use the selected service's saved API key and bound endpoint, never a model-name heuristic, environment-key fallback or second service. Native support skips upload; remote results are execution-only. Upload/content have one five-minute deadline, while DELETE has an independent five-second cleanup window awaited by Stop/shutdown. Lost upload IDs and failed DELETE can leave remote objects; log only sanitized diagnostics. Read the README's **Kimi extraction and exact overrides** section.
26
- - Native Skills and bash are opt-in server scope capabilities, not a Runner or default global tool set. Read [Native Skills and application CLI](../../docs/native-sandbox.md) before enabling them. Use `context.execution` only inside the current tool invocation, forward `context.signal`, and never retry unknown writes or restore approval-time `/tmp`.
26
+ - Native Skills and bash are opt-in server scope capabilities, not a Runner or default global tool set. Read Native Skills and application CLI (`docs/native-sandbox.md` in the `@nocobase/app-plugin-agents` package) before enabling them. Use `context.execution` only inside the current tool invocation, forward `context.signal`, and never retry unknown writes or restore approval-time `/tmp`.
27
27
  - Variables and model service keys are sealed with the App's secrets service: configure `secrets.keys` before storing any, or the API answers `SECRETS_KEY_MISSING` (503).
28
28
  - The plugin registers no pages. The App routes the exported pages and mounts the chat; the App also binds `agentsAccessToken`, or every business action level is `none`.
29
29
  - `subjects.register`'s `context.assemble`, brief sections and mounts run inside the claim's transaction: database reads only, never a network or a model call. Read anything else in the optional `prepare(run)`.
@@ -45,3 +45,7 @@ The package README is the full reference: read it at `node_modules/@nocobase/app
45
45
  | Build the CLI and runner tarballs, serve them, CI artifacts, install script, download tokens, updates, the npm runner | [Distribution](references/distribution.md) |
46
46
  | Variables and secrets, the skill library, chat attachments, usage, prices and reports | [Variables, skills, attachments and usage](references/variables-skills-usage.md) |
47
47
  | Check that everything works, and diagnose failures | [Verification and troubleshooting](references/verification-and-troubleshooting.md) |
48
+
49
+ ## Attachment upload limits
50
+
51
+ The destination Drive disk controls the single-file limit: `drive.disks.<name>.maxFileSizeMb`, default 20 MiB. The File Repository validates it and rejects oversized files with 413 `FILE_TOO_LARGE`, including the disk and limit in metadata. Configure and restart the host application, and increase reverse proxy request-body limits to allow the multipart envelope. The Client File plugin loads sanitized disk limits before the application renders; `useFileUploadLimit` from `@nocobase/app-plugin-file/client` reads the selected/default disk without further requests. There are no feature-level attachment size settings.
@@ -1,5 +1,7 @@
1
1
  # Extension points
2
2
 
3
+ A subject binding can require independent tool sessions with `sessionPolicy: (claim) => 'fresh'`; omit it to preserve ordinary reuse. Explicit `freshSession: true` on enqueue still isolates a new step from active work and survives retries. For handoffs, `runs.recentSummaries(conn, { agentId, subjectKind, subjectId }, exceptRunId)` reads the latest five terminal runs, each summary capped at 400 Unicode characters. Identical calls share one transaction read. Keep historical notes in `turn.fresh`, outside the fingerprint, and use only stored facts during assembly.
4
+
3
5
  A subject's optional `sink.onCancelRequested(tx, run)` runs once in the accepted stop transaction, before `onRunFinished` for a queued run. Its writes roll back with the stop if it throws. `run.cancelledById` identifies a human stop; `runs.cancel(id, null, tx?)` is an incidental system cancellation. An active stop request keeps its first actor and does not replay this callback on a repeated request. Personal runner request rejection uses the same callback. Terminal delivery alone must not infer a new human instruction.
4
6
 
5
7
  Everything the App contributes goes through `agentsToken` (`@nocobase/app-plugin-agents/server/tokens`), resolved in one of the App's service providers when it boots. Text people read is an `I18nText` (`{ key, ns }`) in the App's own namespace. The README's "Extension points" section describes each field; this is the map. Where the two disagree, the types exported from `server/tokens` (the `Agents` interface) are authoritative.
@@ -21,7 +23,7 @@ Everything the App contributes goes through `agentsToken` (`@nocobase/app-plugin
21
23
  | `briefs.sections.register(provider)` | Sections added to every brief's context layer | Project conventions every run should read |
22
24
  | `mounts.register(provider)` | Directories of files placed beside the agent | Reference material for a run |
23
25
  | `repoAccess.register(provider)` | Commit identity and short-lived push credentials per run, at the claim or, with `issue`, whenever the runner's git needs one (`gitCredentials` runners); code host CLI wrappers (`RunGit.tools`, `gitTools` runners) | Git hosting integration |
24
- | `models.gateway` | The model gateway for the App's own model calls | See [Online agents](online-agents.md) |
26
+ | `models.gateway` | The model gateway for the App's own model calls | See [Online agents](online-agent.md) |
25
27
 
26
28
  Rules that are easy to miss:
27
29
 
@@ -44,3 +46,5 @@ A working run is held to the same policy: before input joins a dispatched or run
44
46
  For issue/card work indicators, use `runs.workingOn(subjectKind, subjectIds)` after filtering visible subjects. It returns unique `{ subjectId, agentId, working: true }` pairs for dispatched/running runs in that exact scope, with no run details or global board cap. Match the current executor and apply the application's pending approval rules separately; queued/terminal runs do not appear. Pass a bounded batch from a view, rather than querying each card's full history.
45
47
 
46
48
  `agents.setDefaults` also accepts optional `modelDescriptions`, a map of coding tools to normalized model ids to `{ en, zh }` descriptions. These are enable-dialog suggestions only: unconfigured models use the catalog, existing descriptions are retained, and `applyDefaults()` never writes the suggestions.
49
+
50
+ A subject binding may supply `visibleSubjects(conn, userId)`. Return `null` when the user sees all subjects, or a `SubjectVisibility` callback building a database expression on the supplied subject-id column. Use a correlated subquery, never load subject ids or check each run. The callback is prepared once per read, then applied before pagination and reporting. Run actors and owners retain access; other readers need `agents.agents` read and a visible subject. `private` subjects remain participant-only. The same rule protects run details, briefs, events, cancellation/retry and realtime subscriptions (including delivery reauthorization). Omit the hook to preserve existing non-private subject behavior.
@@ -130,18 +130,18 @@ Use `abort()` for explicit Stop. Native execution waits for terminal persistence
130
130
 
131
131
  Native `POST /api/agents/conversations/:id/messages` accepts only the current SDK user message (`id`, `role: "user"`, text `parts`) plus authorized attachment IDs, page context and optional selected model. It returns a standard SDK UI message stream. Use a `DefaultChatTransport.prepareSendMessagesRequest` mapper; do not submit browser history or trusted metadata. Tool input/output, assistant/system messages and configuration cannot be supplied as history. Creation starts no model. Detail, list, history, config, attachment and Stop retain ownership checks.
132
132
 
133
- Native realtime sessions can resend or text-edit an existing user message with `chat.resend({ messageId, input: { text } })`; omitted options select the latest saved user. Admission updates that message, permanently deletes its suffix and preserves original files/context. Completed business effects are not undone. Runner refuses this capability and Background does not expose it. Browser UI uses `useResendMessage` and the official SDK regenerate/edit flow, never an automatic retry of unknown admission. See [resend and edit](../../../docs/message-resend.md) for transaction, stream, authorization and recovery contracts.
133
+ Native realtime sessions can resend or text-edit an existing user message with `chat.resend({ messageId, input: { text } })`; omitted options select the latest saved user. Admission updates that message, permanently deletes its suffix and preserves original files/context. Completed business effects are not undone. Runner refuses this capability and Background does not expose it. Browser UI uses `useResendMessage` and the official SDK regenerate/edit flow, never an automatic retry of unknown admission. See resend and edit (`docs/message-resend.md` in the `@nocobase/app-plugin-agents` package) for transaction, stream, authorization and recovery contracts.
134
134
  In both native realtime and background modes, `content.original` is the only complete internal UIMessage, with the same ID as its record and raw JSON tool inputs/results, reasoning and provider/approval evidence. Both modes share the same original-message storage and raw tool JSON, not a separate background ModelMessage codec. Public tools require explicit `public.input`/`public.output` projections. All public history reads, including background `history()`, and realtime streams use current projections; current `toModelOutput` rules separately derive internal model input from the original when it is read. Both conversions use detached copies and never execute tools. Missing or failed projections never expose the raw original. No duplicate full message, migration, compatibility fallback or format version is used. SDK `needsApproval` tools require these projections. The approval endpoint accepts only `{ messageId, executionId, approval: { id, approved, reason? } }` and resumes from trusted persisted history. Waiting approvals, denials and outcomes update the same message with increasing metadata revision; use message revision notifications and `GET messages?ids=...` to reread changes. Approval retains its owner/execution/message binding and does not bypass active execution occupancy. Background structured execution stays separate.
135
135
 
136
136
  Native public history and realtime streams include actual model-provided SDK reasoning, including previously saved parts. Expose only `type`/`text`/optional `state` in history and the SDK routing fields (`type`, `id`, and `delta` for reasoning deltas) in the stream; never expose provider metadata or signatures. Installed Registry/Examples render nonempty parts in order with sanitized Markdown, automatically open only the active streaming part and otherwise collapse by default. A user's manual choice wins for that mounted message/part across incremental updates, part end and history revisions. Reasoning counts as visible output, but does not become answer text, a search/copy value or an execution outcome. Models and Runner responses without genuine reasoning remain ordinary text-only chat.
137
137
 
138
- Native and Runner realtime receive use the standard SDK stream with optional shared Redis recovery. Background sessions have no browser receive transport and do not require Redis. Browser disconnect never cancels generation. Finish ends the HTTP response, possibly while waiting for approval; execution detail and saved history determine business state. Failed persistence keeps occupancy and supports explicit finalization without reexecution. Missing streams require history/status reconciliation, never automatic resend. A lost producer remains interrupted and is not automatically restarted. The public ChatProvider and installed Registry/Examples consumers use SDK Chat ownership and GET recovery. See [UI messages](../../../docs/ui-messages.md) and [client coordination](../../../docs/ui-message-clients.md) for configuration, costs and limits.
138
+ Native and Runner realtime receive use the standard SDK stream with optional shared Redis recovery. Background sessions have no browser receive transport and do not require Redis. Browser disconnect never cancels generation. Finish ends the HTTP response, possibly while waiting for approval; execution detail and saved history determine business state. Failed persistence keeps occupancy and supports explicit finalization without reexecution. Missing streams require history/status reconciliation, never automatic resend. A lost producer remains interrupted and is not automatically restarted. The public ChatProvider and installed Registry/Examples consumers use SDK Chat ownership and GET recovery. See UI messages (`docs/ui-messages.md` in the `@nocobase/app-plugin-agents` package) and client coordination (`docs/ui-message-clients.md` in the `@nocobase/app-plugin-agents` package) for configuration, costs and limits.
139
139
 
140
- Permission-restricted configuration and custom permission/approval protocols remain unsupported. New native sessions enable bash and skill by default; scopes may select Skills or explicitly replace the tool list; follow [Native Skills and application CLI](../../../docs/native-sandbox.md) for current support trees, VFS-only inputs, lazy `context.execution`, existing business authorization and approval/new-environment boundaries. SDK approval is native-only; Runner remote tool approval is refused. Verify with isolated model fixtures and authorized application services, never real business writes.
140
+ Permission-restricted configuration and custom permission/approval protocols remain unsupported. New native sessions enable bash and skill by default; scopes may select Skills or explicitly replace the tool list; follow Native Skills and application CLI (`docs/native-sandbox.md` in the `@nocobase/app-plugin-agents` package) for current support trees, VFS-only inputs, lazy `context.execution`, existing business authorization and approval/new-environment boundaries. SDK approval is native-only; Runner remote tool approval is refused. Verify with isolated model fixtures and authorized application services, never real business writes.
141
141
 
142
142
  ## Open UI context, custom tool cards and local form drafts
143
143
 
144
- Use the public `@nocobase/app-plugin-agents/client/chat` exports for these capabilities; the full contracts and integrated application wiring are in [UI context, tool cards and AI form adapters](../../../docs/ai-forms.md). The plugin supplies infrastructure only. Applications own tool names/schemas, fields, permissions, proposal cards and browser adapters. The Examples application's `examples_form_proposal`, `examples-form-fill` scope and `/ai-form-fill` page are application demonstrations, not plugin defaults or APIs to import into another application.
144
+ Use the public `@nocobase/app-plugin-agents/client/chat` exports for these capabilities; the full contracts and integrated application wiring are in UI context, tool cards and AI form adapters (`docs/ai-forms.md` in the `@nocobase/app-plugin-agents` package). The plugin supplies infrastructure only. Applications own tool names/schemas, fields, permissions, proposal cards and browser adapters. The Examples application's `examples_form_proposal`, `examples-form-fill` scope and `/ai-form-fill` page are application demonstrations, not plugin defaults or APIs to import into another application.
145
145
 
146
146
  `PageContext.ui = { version: 1, items: [...] }` is open JSON data: every `PageUIItem` has required `kind`/`id` and arbitrary accepted `AppUIJson` fields, including unknown kinds and nested values. This is separate from server-resolved/authorized `context.items`. UI items grant no server record access or tool permission and enter Native/Runner model context as explicitly untrusted data, never instructions. Accepted fields survive public user metadata, saved history and recovery. Budgets in `PAGE_UI_CONTEXT_LIMITS` reject non-JSON, dangerous keys, duplicate identities and oversized snapshots without truncation; applications must minimize data and exclude secrets.
147
147
 
@@ -211,13 +211,13 @@ Resolvers remain responsible for business authorization and their own database r
211
211
 
212
212
  Native and Runner realtime history is `AppUIMessage[]`, and HTTP input for both is the current `{ message: { id, role: "user", parts }, attachmentIds?, context?, selectedModel? }`. Responses use the SDK UI message stream, not the old block events. Runner assistant ID is `runner:<runId>`; `metadata.sourceRecords` retains real saved record IDs, source sequences and stable part IDs/indices. Display segments must interleave independent notifications by source sequence without duplicating the logical assistant message. Registry and application consumers use `chatMessageSegments` to retain that source ordering. Forward history readers must drain `meta.nextAfter` before advancing to the conversation watermark.
213
213
 
214
- For multiple instances configure `agents.uiRecovery: { namespace, redis: { host, port, ... } }` with an application-specific namespace and a shared Redis deployment. The plugin owns the connections. `DefaultChatTransport.prepareReconnectToStreamRequest` points to `/api/agents/conversations/:id/events`. Without configuration there is one live response and history only, reported as `x-online-agent-recovery: live`; configured failures never fall back. Replay requires the live producer: process death does not restart inference, tools or Runner work. Stop remains a separate authenticated action and can signal a live native producer on another instance; read execution and saved history until termination is confirmed. Approval waiting and a missing stream are not business success. See [UI messages and recovery](../../../docs/ui-messages.md) for identity, lifecycle, limits, costs and validation boundaries.
214
+ For multiple instances configure `agents.uiRecovery: { namespace, redis: { host, port, ... } }` with an application-specific namespace and a shared Redis deployment. The plugin owns the connections. `DefaultChatTransport.prepareReconnectToStreamRequest` points to `/api/agents/conversations/:id/events`. Without configuration there is one live response and history only, reported as `x-online-agent-recovery: live`; configured failures never fall back. Replay requires the live producer: process death does not restart inference, tools or Runner work. Stop remains a separate authenticated action and can signal a live native producer on another instance; read execution and saved history until termination is confirmed. Approval waiting and a missing stream are not business success. See UI messages and recovery (`docs/ui-messages.md` in the `@nocobase/app-plugin-agents` package) for identity, lifecycle, limits, costs and validation boundaries.
215
215
 
216
216
  Existing system notices are delivered through `ConversationService.deliver()` in the caller's business transaction. OnlineAgent bindings persist them without starting another execution, unless a Runner binding's news passes `wake: true`, and rollback removes them with the business changes. Native notices use standard public data parts and remain readable after a response closes. Independent application timeline content should use the authorized business subscription and rendering extensions; OnlineAgent has no separate notification-injection API.
217
217
 
218
218
  ## Public UI messages
219
219
 
220
- Browser consumers use the SDK-owned `AppUIMessage` and `ChatProvider` from `client/chat`. Render ordered parts and use `chatMessageSegments` to preserve Runner source ordering around independent notifications. The public extension hooks receive the complete SDK message, and approval uses only a bound server-validated control. Follow [the client contract](../../../docs/ui-message-clients.md) for identity lifetimes, unknown admission, revision rereads, durable notification polling and independent Stop. A standard response finish or a missing recovery stream never implies saved business completion.
220
+ Browser consumers use the SDK-owned `AppUIMessage` and `ChatProvider` from `client/chat`. Render ordered parts and use `chatMessageSegments` to preserve Runner source ordering around independent notifications. The public extension hooks receive the complete SDK message, and approval uses only a bound server-validated control. Follow the client contract (`docs/ui-message-clients.md` in the `@nocobase/app-plugin-agents` package) for identity lifetimes, unknown admission, revision rereads, durable notification polling and independent Stop. A standard response finish or a missing recovery stream never implies saved business completion.
221
221
 
222
222
  ## Single-instance startup and visibility
223
223
 
@@ -57,7 +57,7 @@ The runner finds each coding tool on its PATH and reports whether it is signed i
57
57
 
58
58
  ## Quota recovery
59
59
 
60
- Quota exhaustion is scoped to the runtime and a tool, provider prefix or model. Known resets restore claim eligibility automatically; unknown resets require the runtime owner or an administrator to clear the selected mark after restoring quota. This never restarts failed, withdrawn or expired work. Runtime Overview, Workspaces and Runs load separately; the list contains summaries. Use runtime workspaces for directories and runtime quota clear with structured tool/scope/target/window fields for unknown-reset marks (no client revision); known resets clear automatically. Upgrade runners for usage/reset reporting; old runners only report the failure. See the package README for fields, endpoint contracts and read/write costs.
60
+ Quota exhaustion is scoped to the runtime and a tool, provider prefix or model. Known resets restore claim eligibility automatically, and a later report of quota left in the same window lifts the mark and settles its notice; the runtime owner or an administrator may clear any selected mark, known reset or not, after the quota is restored, and the next exhausted report marks it again. This never restarts failed, withdrawn or expired work. Runtime Overview, Workspaces and Runs load separately; the list contains summaries. Use runtime workspaces for directories and runtime quota clear with structured tool/scope/target/window fields (no client revision). Upgrade runners for usage/reset reporting; old runners only report the failure. See the package README for fields, endpoint contracts and read/write costs.
61
61
 
62
62
  For application-owned system agents, `useAgentOption(id)` in the client kit reads the same viewer-scoped agent detail endpoint and includes quota; `useAgentOptions()` lists discovered runner agents only. A final failure reuses accepted event metadata for quota deduplication, while new event sequences remain new observations. The failure snapshot is retained even when its windows were already applied.
63
63
 
@@ -15,7 +15,7 @@ Test what the App builds on the plugin, not the plugin itself. `@nocobase/app-pl
15
15
  | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
16
16
  | Runners | `GET /api/agents/runners` (`runtime list`): `status` (`online`, `offline`, `revoked`, `upgrade_required`), `lastSeenAt`, `tools` (installed, version, signed in), `policy`, `updateVersion`, `requiredProtocol` |
17
17
  | Agents that can take work | `GET /api/agents` (`agent list-all`): every agent, its state and why it cannot take the caller's work (`unusable`); `GET /api/agents/available` (`agent list`): the enabled ones and whether each can take work now |
18
- | Why a run waits | The run's detail and `runs.workload()`: `RUN_WAIT_REASONS` (`noRunnerOnline`, `toolUnavailable`, `noSharedRunner`, `missingFeatures`, `secretsNotAllowed`, `concurrencyFull`, `runnersBusy`, …) |
18
+ | Why a run waits | The run's detail and `runs.workload()`: `RUN_WAIT_REASONS` (`noRunnerOnline`, `toolQuota`, `toolUnavailable`, `noSharedRunner`, `missingFeatures`, `secretsNotAllowed`, `concurrencyFull`, `runnersBusy`, …) |
19
19
  | A run's history | `GET /api/agents/runs/:runId` and its events (`run get`, `run events`); `failureReason` and `failureDetail` |
20
20
  | Model services | `GET /api/agents/models` (what the App's own model calls may use), `POST /api/agents/checkModel` (`model check`) |
21
21
  | Tarballs served | `GET /api/agents/dist/manifest` signed in; `GET /api/agents/dist/products/<product>/targets/linux-x64?format=env` |
@@ -31,6 +31,7 @@ Test what the App builds on the plugin, not the plugin itself. `@nocobase/app-pl
31
31
  | ----------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
32
32
  | Runner shows offline | No heartbeat for 150 s. Check `nocobase-runner status` and `logs`, that its service is installed (`nocobase-runner service install`) and that it reaches the App's URL. `RUNNER_KEY_INVALID` or `RUNNER_REVOKED`: register it again with a new token. `RUNNER_OWNER_DISABLED`: its owner can no longer act (`people.provide` `inactive`). |
33
33
  | Runner shows `upgrade_required` | It speaks a protocol outside the App's range. Rebuild and remount the runner tarball from the App's `@nocobase/agent-runner`, then `nocobase-runner update` (an npm-installed runner: `npm install -g @nocobase/agent-runner@<version>`); one that reports no product: reinstall with the one-line install. See [Runners](runners.md). |
34
+ | Runs queue with `toolQuota` | The tool account quota is exhausted on otherwise fitting runners. The wait and model diagnostic include the earliest known reset in `until`; null means unknown. Choose another agent or runner, or restore quota. Scheduling and retries are unchanged. |
34
35
  | Runs queue with `toolUnavailable` or fail `toolAuth` | The agent's coding tool is not installed, not enabled for that runner, or not signed in. Sign in on the runner's machine as the runner's user and check the Runtimes page's Tools tab. |
35
36
  | Runs queue with `noRunnerOnline`, `noSharedRunner` or `missingFeatures` | No online runner fits: only other people's personal runners have the agent, or the runner is too old for what the run needs (skills, secrets, mounts). Add or share a runner, or update it. |
36
37
  | Run fails `policyRefused` | The runner owner's `policy.json` excludes the agent, subject or repository. Retried on another runner; change the policy on the machine if this one should take it. |